@descent-vtt/spec-guard 0.7.0 → 0.9.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/CHANGELOG.md +147 -0
- package/README.md +224 -27
- package/dist/cli.d.ts +37 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +275 -59
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +66 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +165 -0
- package/dist/config.js.map +1 -0
- package/dist/engine.d.ts +22 -8
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +118 -67
- package/dist/engine.js.map +1 -1
- package/dist/facts.d.ts +106 -0
- package/dist/facts.d.ts.map +1 -0
- package/dist/facts.js +188 -0
- package/dist/facts.js.map +1 -0
- package/dist/glob.d.ts +17 -21
- package/dist/glob.d.ts.map +1 -1
- package/dist/glob.js +13 -24
- package/dist/glob.js.map +1 -1
- package/dist/imports.d.ts +6 -1
- package/dist/imports.d.ts.map +1 -1
- package/dist/imports.js +9 -5
- package/dist/imports.js.map +1 -1
- package/dist/index.d.ts +20 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -5
- package/dist/index.js.map +1 -1
- package/dist/io.d.ts +51 -0
- package/dist/io.d.ts.map +1 -0
- package/dist/io.js +44 -0
- package/dist/io.js.map +1 -0
- package/dist/mcp.d.ts +11 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +23 -18
- package/dist/mcp.js.map +1 -1
- package/dist/memo.d.ts +53 -0
- package/dist/memo.d.ts.map +1 -0
- package/dist/memo.js +67 -0
- package/dist/memo.js.map +1 -0
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +17 -0
- package/dist/parser.js.map +1 -1
- package/dist/query.d.ts +5 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +12 -3
- package/dist/query.js.map +1 -1
- package/dist/reporter.d.ts +10 -0
- package/dist/reporter.d.ts.map +1 -1
- package/dist/reporter.js +33 -4
- package/dist/reporter.js.map +1 -1
- package/dist/rules.d.ts +12 -1
- package/dist/rules.d.ts.map +1 -1
- package/dist/rules.js +45 -1
- package/dist/rules.js.map +1 -1
- package/dist/runner.d.ts +42 -2
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +261 -76
- package/dist/runner.js.map +1 -1
- package/dist/specs.d.ts +3 -1
- package/dist/specs.d.ts.map +1 -1
- package/dist/specs.js +6 -5
- package/dist/specs.js.map +1 -1
- package/dist/structure.d.ts +104 -0
- package/dist/structure.d.ts.map +1 -0
- package/dist/structure.js +254 -0
- package/dist/structure.js.map +1 -0
- package/dist/types.d.ts +50 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/watch.d.ts +125 -0
- package/dist/watch.d.ts.map +1 -0
- package/dist/watch.js +321 -0
- package/dist/watch.js.map +1 -0
- package/package.json +8 -2
package/dist/cli.js
CHANGED
|
@@ -8,10 +8,13 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { createRequire } from 'node:module';
|
|
10
10
|
import path from 'node:path';
|
|
11
|
+
import { CONFIG_KEYS, ConfigError, engineNamed, loadConfig } from './config.js';
|
|
12
|
+
import { nodeIo, readText, watchTree } from './io.js';
|
|
11
13
|
import { createMcpHandler, serveStdio } from './mcp.js';
|
|
12
14
|
import { formatQuery, formatQueryJson, queryRules } from './query.js';
|
|
13
15
|
import { formatBaselines, formatJson, formatReport, formatSarif, shouldUseAscii, shouldUseColor } from './reporter.js';
|
|
14
16
|
import { DEFAULT_CONCURRENCY, DEFAULT_MAX_SNIPPETS, runSpecGuard } from './runner.js';
|
|
17
|
+
import { createSession, runWatch } from './watch.js';
|
|
15
18
|
export const EXIT_OK = 0;
|
|
16
19
|
export const EXIT_FAILED = 1;
|
|
17
20
|
export const EXIT_ERROR = 2;
|
|
@@ -50,6 +53,7 @@ Options
|
|
|
50
53
|
-r, --root <path> Codebase root that assertions are resolved against (default: cwd)
|
|
51
54
|
--spec <pattern> A spec glob or path; repeatable (default: "docs/**/*.md")
|
|
52
55
|
-v, --verbose Print passing assertions too
|
|
56
|
+
--watch Run again as the tree changes, until Ctrl+C (human output only)
|
|
53
57
|
--fail-fast Stop at the first failing assertion
|
|
54
58
|
--json Emit a machine-readable JSON report (same as --format json)
|
|
55
59
|
--format <name> human | json | sarif (sarif uploads to GitHub code scanning)
|
|
@@ -69,12 +73,19 @@ Options
|
|
|
69
73
|
-h, --help Show this help
|
|
70
74
|
--version Print the version
|
|
71
75
|
|
|
76
|
+
Configuration
|
|
77
|
+
package.json in the root can hold specs, engine, strict, allowMissingTargets,
|
|
78
|
+
allowEmptyScope, ignoreStatus, includeSpecs, defaultSkips, maxSnippets and
|
|
79
|
+
concurrency under "specGuard". A flag wins over the file, and every on/off
|
|
80
|
+
option there also takes its opposite (--no-strict, --default-skips, ...).
|
|
81
|
+
|
|
72
82
|
Directives
|
|
73
83
|
<!-- @assert-absence target="src/" symbol="LegacyGateway" exclude="src/legacy/**" -->
|
|
74
84
|
<!-- @assert-count target="src/" symbol="SessionManager" expected="1" -->
|
|
75
85
|
<!-- @assert-present file="SECURITY.md" -->
|
|
76
86
|
<!-- @assert-import-cycle target="src/" types="ignore" -->
|
|
77
87
|
<!-- @assert-layers target="src/" order="domain, application, infrastructure" -->
|
|
88
|
+
<!-- @assert-structure target="src/" exclude="*.test.ts" partner="[name].test.ts" -->
|
|
78
89
|
|
|
79
90
|
Matches inside comments do not count; add comments="include" to count them.
|
|
80
91
|
An assertion whose scope holds no files fails; add allow-empty="true" to allow it.
|
|
@@ -86,15 +97,8 @@ for a file that does not exist yet. mcp offers the same answer, and a check,
|
|
|
86
97
|
as the tools get_architectural_rules and check_architecture.
|
|
87
98
|
|
|
88
99
|
Exit codes
|
|
89
|
-
0 all assertions passed 1 an assertion failed 2 spec-guard could not run
|
|
90
|
-
|
|
91
|
-
auto: 'auto',
|
|
92
|
-
rg: 'ripgrep',
|
|
93
|
-
ripgrep: 'ripgrep',
|
|
94
|
-
js: 'javascript',
|
|
95
|
-
javascript: 'javascript',
|
|
96
|
-
node: 'javascript',
|
|
97
|
-
};
|
|
100
|
+
0 all assertions passed 1 an assertion failed 2 spec-guard could not run
|
|
101
|
+
130 a --watch session was stopped`;
|
|
98
102
|
/**
|
|
99
103
|
* Takes the next argv element as a value.
|
|
100
104
|
*
|
|
@@ -124,11 +128,15 @@ function positiveInteger(name, value) {
|
|
|
124
128
|
const NOT_FOR = {
|
|
125
129
|
query: new Set([
|
|
126
130
|
'--verbose',
|
|
131
|
+
'--watch',
|
|
127
132
|
'--fail-fast',
|
|
128
133
|
'--engine',
|
|
129
134
|
'--strict',
|
|
135
|
+
'--no-strict',
|
|
130
136
|
'--allow-missing-targets',
|
|
137
|
+
'--no-allow-missing-targets',
|
|
131
138
|
'--allow-empty-scope',
|
|
139
|
+
'--no-allow-empty-scope',
|
|
132
140
|
'--print-baseline',
|
|
133
141
|
'--allow-empty',
|
|
134
142
|
'--max-snippets',
|
|
@@ -136,8 +144,23 @@ const NOT_FOR = {
|
|
|
136
144
|
'--color',
|
|
137
145
|
'--no-color',
|
|
138
146
|
]),
|
|
139
|
-
mcp: new Set(['--verbose', '--fail-fast', '--json', '--format', '--print-baseline', '--allow-empty', '--color', '--no-color']),
|
|
147
|
+
mcp: new Set(['--verbose', '--watch', '--fail-fast', '--json', '--format', '--print-baseline', '--allow-empty', '--color', '--no-color']),
|
|
140
148
|
};
|
|
149
|
+
/**
|
|
150
|
+
* Options a watch session refuses, and why.
|
|
151
|
+
*
|
|
152
|
+
* Each makes sense only for one run whose output or exit code something reads:
|
|
153
|
+
* a session prints for a person, never exits on its own, and scans in-process
|
|
154
|
+
* so it can see what each rule read (ADR-0014).
|
|
155
|
+
*/
|
|
156
|
+
const NOT_WITH_WATCH = [
|
|
157
|
+
['--json', 'a session prints reports for a person, not one document'],
|
|
158
|
+
['--format', 'a session prints reports for a person, not one document'],
|
|
159
|
+
['--print-baseline', 'it prints once and exits'],
|
|
160
|
+
['--fail-fast', 'a session runs every rule, so each report can be compared with the last'],
|
|
161
|
+
['--allow-empty', 'a session has no exit code to relax'],
|
|
162
|
+
['--engine', 'a session always scans in-process, where it can see what each rule reads'],
|
|
163
|
+
];
|
|
141
164
|
/** The long name of an option, whichever way it was spelled. */
|
|
142
165
|
const LONG_NAMES = { '-v': '--verbose' };
|
|
143
166
|
/** Minimal, dependency-free argv parser. Supports `--flag value` and `--flag=value`. */
|
|
@@ -164,9 +187,14 @@ export function parseArgs(argv, cwd) {
|
|
|
164
187
|
allowEmpty: false,
|
|
165
188
|
maxSnippets: DEFAULT_MAX_SNIPPETS,
|
|
166
189
|
concurrency: DEFAULT_CONCURRENCY,
|
|
190
|
+
watch: false,
|
|
167
191
|
help: false,
|
|
168
192
|
version: false,
|
|
193
|
+
fromCommandLine: new Set(),
|
|
169
194
|
};
|
|
195
|
+
const set = options.fromCommandLine;
|
|
196
|
+
/** Every option given, by its long name, for the refusals that depend on another option. */
|
|
197
|
+
const given = new Set();
|
|
170
198
|
let onlyPositional = false;
|
|
171
199
|
for (let index = command === 'check' ? 0 : 1; index < argv.length; index++) {
|
|
172
200
|
const argument = argv[index];
|
|
@@ -192,6 +220,7 @@ export function parseArgs(argv, cwd) {
|
|
|
192
220
|
if (command !== 'check' && NOT_FOR[command].has(LONG_NAMES[name] ?? name)) {
|
|
193
221
|
throw new UsageError(`Option ${name} does not apply to spec-guard ${command}.`);
|
|
194
222
|
}
|
|
223
|
+
given.add(LONG_NAMES[name] ?? name);
|
|
195
224
|
switch (name) {
|
|
196
225
|
case '-h':
|
|
197
226
|
case '--help':
|
|
@@ -204,6 +233,9 @@ export function parseArgs(argv, cwd) {
|
|
|
204
233
|
case '--verbose':
|
|
205
234
|
options.verbose = true;
|
|
206
235
|
break;
|
|
236
|
+
case '--watch':
|
|
237
|
+
options.watch = true;
|
|
238
|
+
break;
|
|
207
239
|
case '--fail-fast':
|
|
208
240
|
options.failFast = true;
|
|
209
241
|
break;
|
|
@@ -224,25 +256,37 @@ export function parseArgs(argv, cwd) {
|
|
|
224
256
|
break;
|
|
225
257
|
}
|
|
226
258
|
case '--strict':
|
|
227
|
-
|
|
259
|
+
case '--no-strict':
|
|
260
|
+
options.strictTargets = name === '--strict';
|
|
261
|
+
set.add('strict');
|
|
228
262
|
break;
|
|
229
263
|
case '--allow-missing-targets':
|
|
230
|
-
|
|
264
|
+
case '--no-allow-missing-targets':
|
|
265
|
+
options.allowMissingTargets = name === '--allow-missing-targets';
|
|
266
|
+
set.add('allowMissingTargets');
|
|
231
267
|
break;
|
|
232
268
|
case '--allow-empty-scope':
|
|
233
|
-
|
|
269
|
+
case '--no-allow-empty-scope':
|
|
270
|
+
options.allowEmptyScope = name === '--allow-empty-scope';
|
|
271
|
+
set.add('allowEmptyScope');
|
|
234
272
|
break;
|
|
235
273
|
case '--print-baseline':
|
|
236
274
|
options.printBaseline = true;
|
|
237
275
|
break;
|
|
276
|
+
case '--default-skips':
|
|
238
277
|
case '--no-default-skips':
|
|
239
|
-
options.defaultSkips =
|
|
278
|
+
options.defaultSkips = name === '--default-skips';
|
|
279
|
+
set.add('defaultSkips');
|
|
240
280
|
break;
|
|
241
281
|
case '--ignore-status':
|
|
242
|
-
|
|
282
|
+
case '--no-ignore-status':
|
|
283
|
+
options.ignoreStatus = name === '--ignore-status';
|
|
284
|
+
set.add('ignoreStatus');
|
|
243
285
|
break;
|
|
244
286
|
case '--include-specs':
|
|
245
|
-
|
|
287
|
+
case '--no-include-specs':
|
|
288
|
+
options.includeSpecs = name === '--include-specs';
|
|
289
|
+
set.add('includeSpecs');
|
|
246
290
|
break;
|
|
247
291
|
case '--allow-empty':
|
|
248
292
|
options.allowEmpty = true;
|
|
@@ -262,24 +306,37 @@ export function parseArgs(argv, cwd) {
|
|
|
262
306
|
break;
|
|
263
307
|
case '--engine': {
|
|
264
308
|
const value = nextValue().toLowerCase();
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
throw new UsageError(`Unknown engine "${value}". Expected auto, rg or js.`);
|
|
309
|
+
try {
|
|
310
|
+
options.engine = engineNamed(value);
|
|
268
311
|
}
|
|
269
|
-
|
|
312
|
+
catch (error) {
|
|
313
|
+
throw new UsageError(error.message);
|
|
314
|
+
}
|
|
315
|
+
set.add('engine');
|
|
270
316
|
break;
|
|
271
317
|
}
|
|
272
318
|
case '--max-snippets':
|
|
273
319
|
options.maxSnippets = positiveInteger(name, nextValue());
|
|
320
|
+
set.add('maxSnippets');
|
|
274
321
|
break;
|
|
275
322
|
case '--concurrency':
|
|
276
323
|
options.concurrency = Math.max(1, positiveInteger(name, nextValue()));
|
|
324
|
+
set.add('concurrency');
|
|
277
325
|
break;
|
|
278
326
|
default:
|
|
279
327
|
throw new UsageError(`Unknown option "${name}". Run spec-guard --help.`);
|
|
280
328
|
}
|
|
281
329
|
}
|
|
330
|
+
if (options.watch) {
|
|
331
|
+
for (const [option, reason] of NOT_WITH_WATCH) {
|
|
332
|
+
if (given.has(option) && !(option === '--format' && options.format === 'human')) {
|
|
333
|
+
throw new UsageError(`Option ${option} does not apply to spec-guard --watch: ${reason}.`);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
282
337
|
options.patterns.push(...specs);
|
|
338
|
+
if (options.patterns.length > 0)
|
|
339
|
+
set.add('specs');
|
|
283
340
|
if (options.patterns.length === 0)
|
|
284
341
|
options.patterns = ['docs/**/*.md'];
|
|
285
342
|
if (command === 'query' && options.paths.length === 0 && !options.help && !options.version) {
|
|
@@ -287,7 +344,99 @@ export function parseArgs(argv, cwd) {
|
|
|
287
344
|
}
|
|
288
345
|
return options;
|
|
289
346
|
}
|
|
290
|
-
|
|
347
|
+
/** The configurable options a query reads; the rest are about running rules. */
|
|
348
|
+
const QUERY_KEYS = new Set(['specs', 'ignoreStatus', 'includeSpecs', 'defaultSkips']);
|
|
349
|
+
/** Where each key of a configuration lands on the command line's options. */
|
|
350
|
+
const SETTERS = {
|
|
351
|
+
specs: (options, value) => {
|
|
352
|
+
options.patterns = [...value];
|
|
353
|
+
},
|
|
354
|
+
engine: (options, value) => {
|
|
355
|
+
options.engine = value;
|
|
356
|
+
},
|
|
357
|
+
strict: (options, value) => {
|
|
358
|
+
options.strictTargets = value;
|
|
359
|
+
},
|
|
360
|
+
allowMissingTargets: (options, value) => {
|
|
361
|
+
options.allowMissingTargets = value;
|
|
362
|
+
},
|
|
363
|
+
allowEmptyScope: (options, value) => {
|
|
364
|
+
options.allowEmptyScope = value;
|
|
365
|
+
},
|
|
366
|
+
ignoreStatus: (options, value) => {
|
|
367
|
+
options.ignoreStatus = value;
|
|
368
|
+
},
|
|
369
|
+
includeSpecs: (options, value) => {
|
|
370
|
+
options.includeSpecs = value;
|
|
371
|
+
},
|
|
372
|
+
defaultSkips: (options, value) => {
|
|
373
|
+
options.defaultSkips = value;
|
|
374
|
+
},
|
|
375
|
+
maxSnippets: (options, value) => {
|
|
376
|
+
options.maxSnippets = value;
|
|
377
|
+
},
|
|
378
|
+
concurrency: (options, value) => {
|
|
379
|
+
options.concurrency = value;
|
|
380
|
+
},
|
|
381
|
+
};
|
|
382
|
+
/**
|
|
383
|
+
* Fills in what the command line left unset from a configuration, and says what
|
|
384
|
+
* it took.
|
|
385
|
+
*
|
|
386
|
+
* A key the command does not read is neither applied nor overridden: `strict`
|
|
387
|
+
* is written for the runs, and a query that ignores it has not been told
|
|
388
|
+
* anything about strictness. A watch session scans in-process, so `engine` is
|
|
389
|
+
* not one of its keys either. Returns nothing when the configuration had
|
|
390
|
+
* nothing to say to this command, so a report says nothing about it.
|
|
391
|
+
*/
|
|
392
|
+
export function applyConfig(options, config, file = 'package.json') {
|
|
393
|
+
const applied = [];
|
|
394
|
+
const overridden = [];
|
|
395
|
+
for (const key of CONFIG_KEYS) {
|
|
396
|
+
const value = config[key];
|
|
397
|
+
if (value === undefined)
|
|
398
|
+
continue;
|
|
399
|
+
if (options.command === 'query' ? !QUERY_KEYS.has(key) : options.watch && key === 'engine')
|
|
400
|
+
continue;
|
|
401
|
+
if (options.fromCommandLine.has(key)) {
|
|
402
|
+
overridden.push(key);
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
SETTERS[key](options, value);
|
|
406
|
+
applied.push(key);
|
|
407
|
+
}
|
|
408
|
+
return applied.length + overridden.length === 0 ? undefined : { file, applied, overridden };
|
|
409
|
+
}
|
|
410
|
+
/** Reads the root's configuration from disk and applies it, or says why it cannot. */
|
|
411
|
+
async function configure(options, io) {
|
|
412
|
+
try {
|
|
413
|
+
return { use: applyConfig(options, await loadConfig(options.root, (file) => readText(nodeIo, file))) };
|
|
414
|
+
}
|
|
415
|
+
catch (error) {
|
|
416
|
+
// Everything loadConfig throws is a ConfigError: a read that fails is turned
|
|
417
|
+
// into one, and parsing throws nothing else. A test for any other kind of
|
|
418
|
+
// error would be a test of a branch no input can reach.
|
|
419
|
+
io.stderr(`spec-guard: ${error.message}`);
|
|
420
|
+
return null;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
/** The run a set of command-line options asks for. */
|
|
424
|
+
function runOptionsOf(options) {
|
|
425
|
+
return {
|
|
426
|
+
engine: options.engine,
|
|
427
|
+
failFast: options.failFast,
|
|
428
|
+
allowMissingTargets: options.allowMissingTargets,
|
|
429
|
+
allowEmptyScope: options.allowEmptyScope,
|
|
430
|
+
defaultSkips: options.defaultSkips,
|
|
431
|
+
ignoreStatus: options.ignoreStatus,
|
|
432
|
+
strictTargets: options.strictTargets,
|
|
433
|
+
includeSpecs: options.includeSpecs,
|
|
434
|
+
concurrency: options.concurrency,
|
|
435
|
+
maxSnippets: options.maxSnippets,
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
/** The process's own streams, signals and filesystem watcher. */
|
|
439
|
+
export function defaultIO() {
|
|
291
440
|
return {
|
|
292
441
|
stdout: (text) => process.stdout.write(`${text}\n`),
|
|
293
442
|
stderr: (text) => process.stderr.write(`${text}\n`),
|
|
@@ -295,20 +444,83 @@ function defaultIO() {
|
|
|
295
444
|
cwd: process.cwd(),
|
|
296
445
|
isTTY: Boolean(process.stdout.isTTY),
|
|
297
446
|
stdin: process.stdin,
|
|
447
|
+
write: (text) => process.stdout.write(text),
|
|
448
|
+
watch: watchTree,
|
|
449
|
+
// Unregistered as soon as a session starts to stop, so a second Ctrl+C
|
|
450
|
+
// meets Node's own handler and ends the process at once.
|
|
451
|
+
onInterrupt: (handler) => {
|
|
452
|
+
process.on('SIGINT', handler);
|
|
453
|
+
process.on('SIGTERM', handler);
|
|
454
|
+
return () => {
|
|
455
|
+
process.off('SIGINT', handler);
|
|
456
|
+
process.off('SIGTERM', handler);
|
|
457
|
+
};
|
|
458
|
+
},
|
|
298
459
|
};
|
|
299
460
|
}
|
|
461
|
+
/**
|
|
462
|
+
* `spec-guard --watch`: a session over the root until Ctrl+C. ADR-0014.
|
|
463
|
+
*
|
|
464
|
+
* Each run reads the configuration again, through the session's door, from the
|
|
465
|
+
* options as the command line left them - so an edit to package.json is a
|
|
466
|
+
* changed fact like any other, and the command line still wins.
|
|
467
|
+
*/
|
|
468
|
+
async function runWatchSession(commandLine, io) {
|
|
469
|
+
const session = createSession({
|
|
470
|
+
root: commandLine.root,
|
|
471
|
+
settings: async (door) => {
|
|
472
|
+
const options = { ...commandLine, patterns: [...commandLine.patterns] };
|
|
473
|
+
const config = applyConfig(options, await loadConfig(commandLine.root, (file) => readText(door, file)));
|
|
474
|
+
return { patterns: options.patterns, run: runOptionsOf(options), config };
|
|
475
|
+
},
|
|
476
|
+
});
|
|
477
|
+
const stdin = io.stdin;
|
|
478
|
+
return runWatch({
|
|
479
|
+
root: commandLine.root,
|
|
480
|
+
session,
|
|
481
|
+
watch: (listener, onError) => (io.watch ?? watchTree)(commandLine.root, (type, filename) => listener({ type, filename }), onError),
|
|
482
|
+
write: io.write ?? ((text) => io.stdout(text.replace(/\n$/, ''))),
|
|
483
|
+
isTTY: io.isTTY,
|
|
484
|
+
reporter: {
|
|
485
|
+
color: shouldUseColor({ isTTY: io.isTTY }, commandLine.color, io.env),
|
|
486
|
+
verbose: commandLine.verbose,
|
|
487
|
+
ascii: shouldUseAscii(io.env),
|
|
488
|
+
},
|
|
489
|
+
onInterrupt: io.onInterrupt ?? (() => () => { }),
|
|
490
|
+
...(stdin === undefined
|
|
491
|
+
? {}
|
|
492
|
+
: {
|
|
493
|
+
onLine: (handler) => {
|
|
494
|
+
const listener = (chunk) => {
|
|
495
|
+
if (String(chunk).includes('\n'))
|
|
496
|
+
handler();
|
|
497
|
+
};
|
|
498
|
+
stdin.on('data', listener);
|
|
499
|
+
return () => {
|
|
500
|
+
stdin.off('data', listener);
|
|
501
|
+
// Paused, so a stdin that is a terminal stops holding the process
|
|
502
|
+
// open once the session is over.
|
|
503
|
+
stdin.pause();
|
|
504
|
+
};
|
|
505
|
+
},
|
|
506
|
+
}),
|
|
507
|
+
});
|
|
508
|
+
}
|
|
300
509
|
/** `spec-guard query`: prints the rules governing each path. */
|
|
301
|
-
async function runQuery(options, io) {
|
|
510
|
+
async function runQuery(options, io, use) {
|
|
302
511
|
let report;
|
|
303
512
|
try {
|
|
304
|
-
report =
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
513
|
+
report = {
|
|
514
|
+
...(await queryRules({
|
|
515
|
+
patterns: options.patterns,
|
|
516
|
+
root: options.root,
|
|
517
|
+
paths: options.paths,
|
|
518
|
+
includeInactive: options.ignoreStatus,
|
|
519
|
+
includeSpecs: options.includeSpecs,
|
|
520
|
+
defaultSkips: options.defaultSkips,
|
|
521
|
+
})),
|
|
522
|
+
config: use,
|
|
523
|
+
};
|
|
312
524
|
}
|
|
313
525
|
catch (error) {
|
|
314
526
|
io.stderr(`spec-guard: ${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -324,8 +536,15 @@ async function runQuery(options, io) {
|
|
|
324
536
|
io.stdout(options.format === 'json' ? formatQueryJson(report) : formatQuery(report));
|
|
325
537
|
return EXIT_OK;
|
|
326
538
|
}
|
|
327
|
-
/**
|
|
328
|
-
|
|
539
|
+
/**
|
|
540
|
+
* `spec-guard mcp`: serves until the client closes stdin.
|
|
541
|
+
*
|
|
542
|
+
* The configuration is read again for every request, from the options as the
|
|
543
|
+
* command line left them. ADR-0012 refused to cache the rules in the server,
|
|
544
|
+
* and a cached configuration is a cached rule: `"ignoreStatus": true` added
|
|
545
|
+
* while an agent's session is open has to reach the next answer it gets.
|
|
546
|
+
*/
|
|
547
|
+
async function runMcp(options, commandLine, io, use) {
|
|
329
548
|
if (!io.stdin) {
|
|
330
549
|
io.stderr('spec-guard: mcp needs a readable stdin.');
|
|
331
550
|
return EXIT_ERROR;
|
|
@@ -334,20 +553,16 @@ async function runMcp(options, io) {
|
|
|
334
553
|
root: options.root,
|
|
335
554
|
patterns: options.patterns,
|
|
336
555
|
version: version(),
|
|
337
|
-
run:
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
ignoreStatus: options.ignoreStatus,
|
|
343
|
-
strictTargets: options.strictTargets,
|
|
344
|
-
includeSpecs: options.includeSpecs,
|
|
345
|
-
concurrency: options.concurrency,
|
|
346
|
-
maxSnippets: options.maxSnippets,
|
|
556
|
+
run: runOptionsOf(options),
|
|
557
|
+
settings: async () => {
|
|
558
|
+
const fresh = { ...commandLine, patterns: [...commandLine.patterns] };
|
|
559
|
+
applyConfig(fresh, await loadConfig(options.root, (file) => readText(nodeIo, file)));
|
|
560
|
+
return { patterns: fresh.patterns, run: runOptionsOf(fresh) };
|
|
347
561
|
},
|
|
348
562
|
});
|
|
349
563
|
// stderr is the one channel the stdio binding leaves free for people.
|
|
350
|
-
|
|
564
|
+
const from = use === undefined || use.applied.length === 0 ? '' : `, options from ${use.file}: ${use.applied.join(', ')}`;
|
|
565
|
+
io.stderr(`spec-guard ${version()}: MCP server on stdio, rules from ${options.patterns.join(', ')} under ${options.root}${from}`);
|
|
351
566
|
await serveStdio(io.stdin, io.stdout, handler);
|
|
352
567
|
return EXIT_OK;
|
|
353
568
|
}
|
|
@@ -371,26 +586,27 @@ export async function main(argv = process.argv.slice(2), io = defaultIO()) {
|
|
|
371
586
|
io.stdout(version());
|
|
372
587
|
return EXIT_OK;
|
|
373
588
|
}
|
|
589
|
+
// Read after --help and --version, which must work in a project whose
|
|
590
|
+
// package.json is broken, and before anything that runs a rule.
|
|
591
|
+
const commandLine = { ...options, patterns: [...options.patterns] };
|
|
592
|
+
const configured = await configure(options, io);
|
|
593
|
+
if (configured === null)
|
|
594
|
+
return EXIT_ERROR;
|
|
595
|
+
const { use } = configured;
|
|
374
596
|
if (options.command === 'query')
|
|
375
|
-
return runQuery(options, io);
|
|
597
|
+
return runQuery(options, io, use);
|
|
376
598
|
if (options.command === 'mcp')
|
|
377
|
-
return runMcp(options, io);
|
|
599
|
+
return runMcp(options, commandLine, io, use);
|
|
600
|
+
if (options.watch)
|
|
601
|
+
return runWatchSession(commandLine, io);
|
|
378
602
|
let report;
|
|
379
603
|
try {
|
|
380
|
-
report =
|
|
381
|
-
patterns: options.patterns,
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
allowEmptyScope: options.allowEmptyScope,
|
|
387
|
-
defaultSkips: options.defaultSkips,
|
|
388
|
-
ignoreStatus: options.ignoreStatus,
|
|
389
|
-
strictTargets: options.strictTargets,
|
|
390
|
-
includeSpecs: options.includeSpecs,
|
|
391
|
-
concurrency: options.concurrency,
|
|
392
|
-
maxSnippets: options.maxSnippets,
|
|
393
|
-
});
|
|
604
|
+
report = {
|
|
605
|
+
...(await runSpecGuard({ ...runOptionsOf(options), patterns: options.patterns, root: options.root })),
|
|
606
|
+
// Undefined when nothing came from a configuration, which every report
|
|
607
|
+
// reads as "say nothing" and JSON leaves out.
|
|
608
|
+
config: use,
|
|
609
|
+
};
|
|
394
610
|
}
|
|
395
611
|
catch (error) {
|
|
396
612
|
io.stderr(`spec-guard: ${error instanceof Error ? error.message : String(error)}`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The options a project keeps in its `package.json`, under `"specGuard"`.
|
|
3
|
+
*
|
|
4
|
+
* Validated from a value, never read from a file: the command line reads the
|
|
5
|
+
* file, and every malformed option can then be tested on a plain object. The
|
|
6
|
+
* keys are the options that are a project's policy - which specs, and how
|
|
7
|
+
* strictly to hold them - and nothing that describes one invocation. See
|
|
8
|
+
* ADR-0014.
|
|
9
|
+
*/
|
|
10
|
+
import type { EnginePreference } from './engine.js';
|
|
11
|
+
/** The name the options sit under in `package.json`. */
|
|
12
|
+
export declare const CONFIG_KEY = "specGuard";
|
|
13
|
+
/** What a project's configuration can set, each under its own name. */
|
|
14
|
+
export interface ProjectConfig {
|
|
15
|
+
specs?: string[];
|
|
16
|
+
engine?: EnginePreference;
|
|
17
|
+
strict?: boolean;
|
|
18
|
+
allowMissingTargets?: boolean;
|
|
19
|
+
allowEmptyScope?: boolean;
|
|
20
|
+
ignoreStatus?: boolean;
|
|
21
|
+
includeSpecs?: boolean;
|
|
22
|
+
defaultSkips?: boolean;
|
|
23
|
+
maxSnippets?: number;
|
|
24
|
+
concurrency?: number;
|
|
25
|
+
}
|
|
26
|
+
export type ConfigKey = keyof ProjectConfig;
|
|
27
|
+
/** Every key, in the order the documentation lists them. */
|
|
28
|
+
export declare const CONFIG_KEYS: readonly ConfigKey[];
|
|
29
|
+
/**
|
|
30
|
+
* Options that exist on the command line and are refused here by name.
|
|
31
|
+
*
|
|
32
|
+
* Each describes one invocation rather than a project. `"format": "sarif"`
|
|
33
|
+
* would make every developer's local run print SARIF, and `root` is where the
|
|
34
|
+
* configuration was found in the first place.
|
|
35
|
+
*/
|
|
36
|
+
export declare const INVOCATION_OPTIONS: ReadonlySet<string>;
|
|
37
|
+
/** A configuration that cannot be used, with the words to say why. */
|
|
38
|
+
export declare class ConfigError extends Error {
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The engine a name asks for, whether the name came from a flag or a file.
|
|
42
|
+
*
|
|
43
|
+
* One function, so `--engine rgg` and `"engine": "rgg"` fail with the same
|
|
44
|
+
* words. Case is ignored, as the flag always has.
|
|
45
|
+
*/
|
|
46
|
+
export declare function engineNamed(name: string): EnginePreference;
|
|
47
|
+
/**
|
|
48
|
+
* The configuration in a root's `package.json`, read by whoever is asking.
|
|
49
|
+
*
|
|
50
|
+
* The reader is a parameter because this module reads nothing itself: the
|
|
51
|
+
* command line passes the filesystem, and a watch session passes the door that
|
|
52
|
+
* records what it read, so an edit to `package.json` reaches the session like
|
|
53
|
+
* an edit to any other file. A file that is not there - or a root that is not a
|
|
54
|
+
* directory - is no configuration. A file that is there and cannot be read is
|
|
55
|
+
* an error, because nobody can tell what it would have said.
|
|
56
|
+
*/
|
|
57
|
+
export declare function loadConfig(root: string, read: (file: string) => Promise<string>): Promise<ProjectConfig>;
|
|
58
|
+
/**
|
|
59
|
+
* The configuration in a `package.json`'s text, or none.
|
|
60
|
+
*
|
|
61
|
+
* A `package.json` with no `"specGuard"` is no configuration rather than a
|
|
62
|
+
* mistake. Anything else that cannot be used throws a `ConfigError` naming the
|
|
63
|
+
* file and the key, so a run never starts under options nobody meant.
|
|
64
|
+
*/
|
|
65
|
+
export declare function parseConfig(text: string, file?: string): ProjectConfig;
|
|
66
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wDAAwD;AACxD,eAAO,MAAM,UAAU,cAAc,CAAC;AAEtC,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC;AAE5C,4DAA4D;AAC5D,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAW3C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAUjD,CAAC;AAEH,sEAAsE;AACtE,qBAAa,WAAY,SAAQ,KAAK;CAAG;AAWzC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAI1D;AAoCD;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAa9G;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAiB,GAAG,aAAa,CA6B9E"}
|