@kernlang/cli 3.3.9 → 3.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/compile.js +30 -16
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/import.js +196 -44
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/migrate-class-body.d.ts +1 -1
- package/dist/commands/migrate-class-body.js +155 -8
- package/dist/commands/migrate-class-body.js.map +1 -1
- package/dist/commands/review.js +150 -10
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/test.d.ts +1 -0
- package/dist/commands/test.js +263 -5
- package/dist/commands/test.js.map +1 -1
- package/dist/git-env.d.ts +1 -0
- package/dist/git-env.js +25 -0
- package/dist/git-env.js.map +1 -0
- package/dist/lib/cross-module-registry.d.ts +21 -0
- package/dist/lib/cross-module-registry.js +95 -0
- package/dist/lib/cross-module-registry.js.map +1 -0
- package/dist/remote-repo.js +2 -0
- package/dist/remote-repo.js.map +1 -1
- package/dist/shared.d.ts +4 -4
- package/dist/shared.js +207 -19
- package/dist/shared.js.map +1 -1
- package/package.json +15 -14
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* and rewrites it to a proper:
|
|
18
18
|
*
|
|
19
19
|
* class name=AudioRecorder [export=true] [extends=X] [implements=Y]
|
|
20
|
-
* field name=fd type=T private=true
|
|
20
|
+
* field name=fd type=T private=true value={{ init }}
|
|
21
21
|
* constructor params="..."
|
|
22
22
|
* handler <<< ... >>>
|
|
23
23
|
* method name=foo params="..." returns=T
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
* throwaway `any`/`object`/`unknown` — i.e. no existing code relied on the
|
|
35
35
|
* type of the const, because the const had no useful type to begin with.
|
|
36
36
|
*/
|
|
37
|
+
import { escapeKernString } from '@kernlang/core';
|
|
37
38
|
import ts from 'typescript';
|
|
38
39
|
const PLACEHOLDER_TYPES = new Set(['any', 'object', 'unknown']);
|
|
39
40
|
/**
|
|
@@ -153,6 +154,116 @@ function formatParams(params, text) {
|
|
|
153
154
|
})
|
|
154
155
|
.join(',');
|
|
155
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Slice 3c — try to emit fn parameters as structured `param` child lines.
|
|
159
|
+
* Returns the lines on success, or `null` if the signature contains
|
|
160
|
+
* optional `?`, variadic `...`, or destructuring (all-or-nothing per
|
|
161
|
+
* signature; mirrors importer's tryFormatParamChildren).
|
|
162
|
+
*/
|
|
163
|
+
function tryFormatParamChildren(parameters, text) {
|
|
164
|
+
if (parameters.length === 0)
|
|
165
|
+
return [];
|
|
166
|
+
for (const p of parameters) {
|
|
167
|
+
// Slice 3c-extension: optional `?`, variadic `...`, and destructured
|
|
168
|
+
// `{a,b}` / `[x,y]` are structurable (gates dropped, mirrors importer.ts).
|
|
169
|
+
if (!ts.isIdentifier(p.name) && !ts.isObjectBindingPattern(p.name) && !ts.isArrayBindingPattern(p.name)) {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
// Multi-line types (inline object shapes spread across lines) cannot be
|
|
173
|
+
// round-tripped through a single-line `type="..."` quoted attribute —
|
|
174
|
+
// KERN's tokeniser treats newlines as record separators. Leave the
|
|
175
|
+
// whole signature legacy when any param has a multi-line type.
|
|
176
|
+
if (p.type && /\n/.test(text(p.type)))
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
const lines = [];
|
|
180
|
+
for (const p of parameters) {
|
|
181
|
+
const isObj = ts.isObjectBindingPattern(p.name);
|
|
182
|
+
const isArr = ts.isArrayBindingPattern(p.name);
|
|
183
|
+
const type = p.type ? text(p.type) : '';
|
|
184
|
+
if (isObj || isArr) {
|
|
185
|
+
// Codex review fix: rest+destructure (`...[first]: T[]`) is valid TS
|
|
186
|
+
// but the structured form has no slot for the outer `...`. Bail to
|
|
187
|
+
// legacy so the rest marker survives the round-trip. Mirrors importer.ts.
|
|
188
|
+
if (p.dotDotDotToken)
|
|
189
|
+
return null;
|
|
190
|
+
const childLines = tryFormatParamBindingPattern(p.name, text);
|
|
191
|
+
if (childLines === null)
|
|
192
|
+
return null;
|
|
193
|
+
const parts = ['param'];
|
|
194
|
+
if (type)
|
|
195
|
+
parts.push(`type="${escapeKernString(type)}"`);
|
|
196
|
+
if (p.questionToken)
|
|
197
|
+
parts.push('optional=true');
|
|
198
|
+
if (p.initializer)
|
|
199
|
+
parts.push(`value={{ ${text(p.initializer)} }}`);
|
|
200
|
+
lines.push(parts.join(' '));
|
|
201
|
+
for (const child of childLines)
|
|
202
|
+
lines.push(` ${child}`);
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
const name = text(p.name);
|
|
206
|
+
const parts = [`param name=${name}`];
|
|
207
|
+
if (type)
|
|
208
|
+
parts.push(`type="${escapeKernString(type)}"`);
|
|
209
|
+
if (p.questionToken)
|
|
210
|
+
parts.push('optional=true');
|
|
211
|
+
if (p.dotDotDotToken)
|
|
212
|
+
parts.push('variadic=true');
|
|
213
|
+
if (p.initializer) {
|
|
214
|
+
parts.push(`value={{ ${text(p.initializer)} }}`);
|
|
215
|
+
}
|
|
216
|
+
lines.push(parts.join(' '));
|
|
217
|
+
}
|
|
218
|
+
return lines;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Slice 3c-extension #3 — convert a TS `BindingPattern` (object or array) to
|
|
222
|
+
* structured `binding`/`element` lines. Returns null when the pattern uses
|
|
223
|
+
* rest, defaults, or nesting (caller falls back to legacy `params="..."`).
|
|
224
|
+
* Mirrors importer.ts `tryFormatParamBindingPattern`.
|
|
225
|
+
*/
|
|
226
|
+
function tryFormatParamBindingPattern(pattern, text) {
|
|
227
|
+
const childLines = [];
|
|
228
|
+
if (ts.isObjectBindingPattern(pattern)) {
|
|
229
|
+
for (const el of pattern.elements) {
|
|
230
|
+
if (el.dotDotDotToken)
|
|
231
|
+
return null;
|
|
232
|
+
if (el.initializer)
|
|
233
|
+
return null;
|
|
234
|
+
if (!ts.isIdentifier(el.name))
|
|
235
|
+
return null;
|
|
236
|
+
const localName = text(el.name);
|
|
237
|
+
let line = `binding name=${localName}`;
|
|
238
|
+
if (el.propertyName) {
|
|
239
|
+
if (!ts.isIdentifier(el.propertyName))
|
|
240
|
+
return null;
|
|
241
|
+
line += ` key=${text(el.propertyName)}`;
|
|
242
|
+
}
|
|
243
|
+
childLines.push(line);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
let idx = 0;
|
|
248
|
+
for (const el of pattern.elements) {
|
|
249
|
+
if (ts.isOmittedExpression(el)) {
|
|
250
|
+
idx++;
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
if (el.dotDotDotToken)
|
|
254
|
+
return null;
|
|
255
|
+
if (el.initializer)
|
|
256
|
+
return null;
|
|
257
|
+
if (!ts.isIdentifier(el.name))
|
|
258
|
+
return null;
|
|
259
|
+
childLines.push(`element name=${text(el.name)} index=${idx}`);
|
|
260
|
+
idx++;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (childLines.length === 0)
|
|
264
|
+
return null;
|
|
265
|
+
return childLines;
|
|
266
|
+
}
|
|
156
267
|
function hasModifier(node, kind) {
|
|
157
268
|
const mods = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;
|
|
158
269
|
return mods?.some((m) => m.kind === kind) ?? false;
|
|
@@ -225,7 +336,10 @@ function emitMember(member, text, indent) {
|
|
|
225
336
|
const priv = hasModifier(member, ts.SyntaxKind.PrivateKeyword) ? ' private=true' : '';
|
|
226
337
|
const readonly = hasModifier(member, ts.SyntaxKind.ReadonlyKeyword) ? ' readonly=true' : '';
|
|
227
338
|
const staticStr = hasModifier(member, ts.SyntaxKind.StaticKeyword) ? ' static=true' : '';
|
|
228
|
-
|
|
339
|
+
// Slice 3b: emit `value={{ <init> }}` (canonical) — see importer.ts for
|
|
340
|
+
// the same migration. The `{{...}}` wrap stays so arbitrary TS initializer
|
|
341
|
+
// expressions pass through ValueIR via emitConstValue's ExprObject branch.
|
|
342
|
+
const init = rawInit ? ` value={{ ${rawInit} }}` : '';
|
|
229
343
|
return [`${indent}field name=${name}${type ? ` type=${type}` : ''}${priv}${staticStr}${readonly}${init}`];
|
|
230
344
|
}
|
|
231
345
|
if (ts.isConstructorDeclaration(member)) {
|
|
@@ -264,10 +378,21 @@ function emitMember(member, text, indent) {
|
|
|
264
378
|
shortcutFields.push(`${indent}field name=${paramName}${typeStr}${privStr}${readStr}`);
|
|
265
379
|
assignLines.push(`this.${paramName} = ${paramName};`);
|
|
266
380
|
}
|
|
267
|
-
|
|
268
|
-
const
|
|
381
|
+
// Slice 3c — try structured `param` children first.
|
|
382
|
+
const ctorParamChildren = tryFormatParamChildren(member.parameters, text);
|
|
383
|
+
const paramsStr = ctorParamChildren !== null
|
|
384
|
+
? ''
|
|
385
|
+
: (() => {
|
|
386
|
+
const params = formatParams(member.parameters, text);
|
|
387
|
+
return params ? ` params="${params}"` : '';
|
|
388
|
+
})();
|
|
269
389
|
const lines = [...shortcutFields];
|
|
270
390
|
lines.push(`${indent}constructor${paramsStr}`);
|
|
391
|
+
if (ctorParamChildren) {
|
|
392
|
+
for (const childLine of ctorParamChildren) {
|
|
393
|
+
lines.push(`${indent} ${childLine}`);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
271
396
|
const body = member.body;
|
|
272
397
|
const bodyText = body ? text(body).slice(1, -1) : '';
|
|
273
398
|
const trimmed = body ? dedentInteriorLines(bodyText) : '';
|
|
@@ -291,10 +416,16 @@ function emitMember(member, text, indent) {
|
|
|
291
416
|
// silently — bail so the class stays in its handler form for now.
|
|
292
417
|
if (hasModifier(member, ts.SyntaxKind.AbstractKeyword) || !member.body)
|
|
293
418
|
return null;
|
|
294
|
-
|
|
419
|
+
// Slice 3c — try structured `param` children first.
|
|
420
|
+
const methodParamChildren = tryFormatParamChildren(member.parameters, text);
|
|
295
421
|
const rawReturn = member.type ? text(member.type) : '';
|
|
296
422
|
const name = text(member.name);
|
|
297
|
-
const paramsStr =
|
|
423
|
+
const paramsStr = methodParamChildren !== null
|
|
424
|
+
? ''
|
|
425
|
+
: (() => {
|
|
426
|
+
const params = formatParams(member.parameters, text);
|
|
427
|
+
return params ? ` params="${params}"` : '';
|
|
428
|
+
})();
|
|
298
429
|
const returns = rawReturn ? quoteTypeIfNeeded(rawReturn) : '';
|
|
299
430
|
const returnsStr = returns ? ` returns=${returns}` : '';
|
|
300
431
|
const isAsync = hasModifier(member, ts.SyntaxKind.AsyncKeyword);
|
|
@@ -304,6 +435,11 @@ function emitMember(member, text, indent) {
|
|
|
304
435
|
const staticStr = isStatic ? ' static=true' : '';
|
|
305
436
|
const privStr = isPriv ? ' private=true' : '';
|
|
306
437
|
const lines = [`${indent}method name=${name}${paramsStr}${returnsStr}${asyncStr}${staticStr}${privStr}`];
|
|
438
|
+
if (methodParamChildren) {
|
|
439
|
+
for (const childLine of methodParamChildren) {
|
|
440
|
+
lines.push(`${indent} ${childLine}`);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
307
443
|
const body = member.body;
|
|
308
444
|
if (body) {
|
|
309
445
|
const bodyText = text(body).slice(1, -1);
|
|
@@ -338,14 +474,25 @@ function emitMember(member, text, indent) {
|
|
|
338
474
|
if (ts.isSetAccessorDeclaration(member)) {
|
|
339
475
|
if (!member.body)
|
|
340
476
|
return null;
|
|
341
|
-
|
|
477
|
+
// Slice 3c — try structured `param` children first.
|
|
478
|
+
const setterParamChildren = tryFormatParamChildren(member.parameters, text);
|
|
342
479
|
const name = text(member.name);
|
|
343
|
-
const paramsStr =
|
|
480
|
+
const paramsStr = setterParamChildren !== null
|
|
481
|
+
? ''
|
|
482
|
+
: (() => {
|
|
483
|
+
const params = formatParams(member.parameters, text);
|
|
484
|
+
return params ? ` params="${params}"` : '';
|
|
485
|
+
})();
|
|
344
486
|
const isStatic = hasModifier(member, ts.SyntaxKind.StaticKeyword);
|
|
345
487
|
const isPriv = hasModifier(member, ts.SyntaxKind.PrivateKeyword);
|
|
346
488
|
const staticStr = isStatic ? ' static=true' : '';
|
|
347
489
|
const privStr = isPriv ? ' private=true' : '';
|
|
348
490
|
const lines = [`${indent}setter name=${name}${paramsStr}${privStr}${staticStr}`];
|
|
491
|
+
if (setterParamChildren) {
|
|
492
|
+
for (const childLine of setterParamChildren) {
|
|
493
|
+
lines.push(`${indent} ${childLine}`);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
349
496
|
const bodyText = text(member.body).slice(1, -1);
|
|
350
497
|
const trimmed = dedentInteriorLines(bodyText);
|
|
351
498
|
lines.push(`${indent} handler <<<`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-class-body.js","sourceRoot":"","sources":["../../src/commands/migrate-class-body.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migrate-class-body.js","sourceRoot":"","sources":["../../src/commands/migrate-class-body.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/review.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { clearTemplates, registerTemplate, VALID_TARGETS } from '@kernlang/core';
|
|
2
|
-
import { analyzeTaint, buildLLMPrompt, buildReviewInstructions, checkEnforcement, checkSpecFiles, clearReviewCache, dedup, exportKernIR, formatEnforcement, formatReport, formatSARIF, formatSARIFWithMetadata, formatSummary, getRuleRegistry, isLLMAvailable, linkToNodes, ReviewHealthBuilder, resolveImportGraph, reviewFile, reviewGraph, runESLint, runLLMReview, runTSCDiagnosticsFromPaths, specViolationsToFindings, } from '@kernlang/review';
|
|
2
|
+
import { analyzeTaint, applyReviewPolicyDefaults, buildLLMPrompt, buildReviewInstructions, checkEnforcement, checkSpecFiles, clearReviewCache, dedup, evaluateReviewReports, exportKernIR, formatEnforcement, formatReport, formatReviewEvalSummary, formatReviewTelemetrySummary, formatSARIF, formatSARIFWithMetadata, formatSummary, getRuleQualityProfile, getRuleRegistry, isLLMAvailable, linkToNodes, normalizeReviewEvalManifest, ReviewHealthBuilder, readReviewTelemetrySnapshots, resolveImportGraph, reviewFile, reviewGraph, runESLint, runLLMReview, runTSCDiagnosticsFromPaths, specViolationsToFindings, summarizeReviewEvalResults, summarizeReviewTelemetry, writeReviewTelemetrySnapshot, } from '@kernlang/review';
|
|
3
3
|
import { execFileSync } from 'child_process';
|
|
4
4
|
import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'fs';
|
|
5
5
|
import { basename, dirname, relative, resolve } from 'path';
|
|
6
|
+
import { withoutLocalGitEnv } from '../git-env.js';
|
|
6
7
|
import { withOptionalRemoteRepo } from '../remote-repo.js';
|
|
7
8
|
import { compareReportsToBaseline, createReviewBaseline, filterReportsToNewFindings, getReviewBaselineKeyForFinding, parseReviewBaseline, } from '../review-baseline.js';
|
|
8
9
|
import { collectTsFilesFlat, hasFlag, loadConfig, parseAndSurface, parseFlag, parseFlagOrNext } from '../shared.js';
|
|
@@ -19,6 +20,7 @@ export function detectAutoDiffBase(cwd = process.cwd()) {
|
|
|
19
20
|
try {
|
|
20
21
|
execFileSync('git', ['rev-parse', '--verify', '--quiet', ref], {
|
|
21
22
|
cwd,
|
|
23
|
+
env: withoutLocalGitEnv(),
|
|
22
24
|
stdio: ['ignore', 'ignore', 'ignore'],
|
|
23
25
|
});
|
|
24
26
|
return true;
|
|
@@ -31,6 +33,7 @@ export function detectAutoDiffBase(cwd = process.cwd()) {
|
|
|
31
33
|
try {
|
|
32
34
|
execFileSync('git', ['rev-parse', '--is-inside-work-tree'], {
|
|
33
35
|
cwd,
|
|
36
|
+
env: withoutLocalGitEnv(),
|
|
34
37
|
stdio: ['ignore', 'ignore', 'ignore'],
|
|
35
38
|
});
|
|
36
39
|
}
|
|
@@ -43,15 +46,25 @@ export function detectAutoDiffBase(cwd = process.cwd()) {
|
|
|
43
46
|
}
|
|
44
47
|
return undefined;
|
|
45
48
|
}
|
|
49
|
+
function parseOptionalFlagOrNext(args, flag, fallback) {
|
|
50
|
+
const eqArg = args.find((a) => a.startsWith(`${flag}=`));
|
|
51
|
+
if (eqArg)
|
|
52
|
+
return eqArg.slice(flag.length + 1);
|
|
53
|
+
const idx = args.indexOf(flag);
|
|
54
|
+
if (idx !== -1 && args[idx + 1] && !args[idx + 1].startsWith('--'))
|
|
55
|
+
return args[idx + 1];
|
|
56
|
+
return fallback;
|
|
57
|
+
}
|
|
46
58
|
// ── Review pipeline ──────────────────────────────────────────────────────
|
|
47
59
|
async function runReviewPipeline(reviewConfig, entryFilePaths, modes) {
|
|
60
|
+
const startedAt = Date.now();
|
|
48
61
|
const { graphMode, batchMode, llmMode, cloudMode, securityMode, mcpMode, specMode, fixMode, autofixMode, lintMode, skipGenerated, exportKern, enforce, jsonOutput, sarifOutput, maxDepth, batchSize, tsconfigPath, specFile, minCoverageArg, maxComplexityArg, maxErrorsArg, maxWarningsArg, baseline, writeBaselinePath, newOnly, } = modes;
|
|
49
62
|
let reports = [];
|
|
50
63
|
if (graphMode && entryFilePaths.length > 0) {
|
|
51
64
|
const graphOpts = { maxDepth, tsConfigFilePath: tsconfigPath };
|
|
52
65
|
const graph = resolveImportGraph(entryFilePaths, graphOpts);
|
|
53
66
|
console.log(` Graph: ${graph.totalFiles} files resolved (${graph.skipped} skipped, depth ${maxDepth})`);
|
|
54
|
-
reports = reviewGraph(entryFilePaths, reviewConfig, graphOpts);
|
|
67
|
+
reports = reviewGraph(entryFilePaths, reviewConfig, { ...graphOpts, precomputedGraph: graph });
|
|
55
68
|
}
|
|
56
69
|
else if (batchMode && entryFilePaths.length > batchSize) {
|
|
57
70
|
const totalBatches = Math.ceil(entryFilePaths.length / batchSize);
|
|
@@ -633,6 +646,18 @@ async function runReviewPipeline(reviewConfig, entryFilePaths, modes) {
|
|
|
633
646
|
console.log(` Baseline written: ${writeBaselinePath}`);
|
|
634
647
|
}
|
|
635
648
|
}
|
|
649
|
+
if (reviewConfig.telemetry?.enabled) {
|
|
650
|
+
const written = writeReviewTelemetrySnapshot(reports, {
|
|
651
|
+
policy: reviewConfig.policy,
|
|
652
|
+
outputPath: reviewConfig.telemetry.outputPath,
|
|
653
|
+
append: reviewConfig.telemetry.append,
|
|
654
|
+
includeFindings: reviewConfig.telemetry.includeFindings,
|
|
655
|
+
durationMs: Date.now() - startedAt,
|
|
656
|
+
});
|
|
657
|
+
if (!jsonOutput && !sarifOutput) {
|
|
658
|
+
console.log(` Telemetry written: ${relative(process.cwd(), written.outputPath)}`);
|
|
659
|
+
}
|
|
660
|
+
}
|
|
636
661
|
// Output
|
|
637
662
|
if (jsonOutput) {
|
|
638
663
|
const enriched = reportsForOutput.map((report) => {
|
|
@@ -705,11 +730,74 @@ async function runReviewPipeline(reviewConfig, entryFilePaths, modes) {
|
|
|
705
730
|
}
|
|
706
731
|
return { reports, exitCode: 0 };
|
|
707
732
|
}
|
|
733
|
+
function runReviewEvalManifest(manifestPath, baseConfig) {
|
|
734
|
+
const resolvedManifestPath = resolve(manifestPath);
|
|
735
|
+
const raw = JSON.parse(readFileSync(resolvedManifestPath, 'utf-8'));
|
|
736
|
+
const manifest = normalizeReviewEvalManifest(raw);
|
|
737
|
+
const manifestDir = dirname(resolvedManifestPath);
|
|
738
|
+
const results = [];
|
|
739
|
+
for (const testCase of manifest.cases) {
|
|
740
|
+
const files = testCase.files.map((file) => resolve(manifestDir, file));
|
|
741
|
+
const caseConfig = {
|
|
742
|
+
...baseConfig,
|
|
743
|
+
...(testCase.config ?? {}),
|
|
744
|
+
target: testCase.config?.target ?? baseConfig.target,
|
|
745
|
+
};
|
|
746
|
+
const startedAt = Date.now();
|
|
747
|
+
try {
|
|
748
|
+
const reports = testCase.graph
|
|
749
|
+
? reviewGraph(files, caseConfig, {
|
|
750
|
+
maxDepth: testCase.maxDepth,
|
|
751
|
+
tsConfigFilePath: caseConfig.tsConfigFilePath,
|
|
752
|
+
})
|
|
753
|
+
: files.map((file) => reviewFile(file, caseConfig));
|
|
754
|
+
results.push(evaluateReviewReports({ ...testCase, files }, reports, { durationMs: Date.now() - startedAt }));
|
|
755
|
+
}
|
|
756
|
+
catch (err) {
|
|
757
|
+
results.push({
|
|
758
|
+
name: testCase.name,
|
|
759
|
+
passed: false,
|
|
760
|
+
files,
|
|
761
|
+
findings: 0,
|
|
762
|
+
errors: 0,
|
|
763
|
+
warnings: 0,
|
|
764
|
+
notes: 0,
|
|
765
|
+
durationMs: Date.now() - startedAt,
|
|
766
|
+
failures: [`review failed: ${err.message}`],
|
|
767
|
+
});
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
return summarizeReviewEvalResults(results);
|
|
771
|
+
}
|
|
708
772
|
// ── Review command entry point ───────────────────────────────────────────
|
|
709
773
|
async function runReviewLocal(args) {
|
|
710
774
|
const jsonOutput = hasFlag(args, '--json');
|
|
711
775
|
const sarifOutput = hasFlag(args, '--sarif', '--format=sarif');
|
|
712
|
-
const
|
|
776
|
+
const telemetryReportMode = args.some((arg) => arg === '--telemetry-report' || arg.startsWith('--telemetry-report='));
|
|
777
|
+
const telemetryReportPath = parseOptionalFlagOrNext(args, '--telemetry-report', '.kern/cache/review-telemetry.jsonl');
|
|
778
|
+
if (telemetryReportMode) {
|
|
779
|
+
let summary;
|
|
780
|
+
try {
|
|
781
|
+
const snapshots = readReviewTelemetrySnapshots(resolve(telemetryReportPath));
|
|
782
|
+
summary = summarizeReviewTelemetry(snapshots);
|
|
783
|
+
}
|
|
784
|
+
catch (err) {
|
|
785
|
+
console.error(`Failed to read telemetry report: ${err.message}`);
|
|
786
|
+
process.exit(1);
|
|
787
|
+
}
|
|
788
|
+
console.log(jsonOutput ? JSON.stringify(summary, null, 2) : formatReviewTelemetrySummary(summary));
|
|
789
|
+
process.exit(0);
|
|
790
|
+
}
|
|
791
|
+
// `--full` is the user-facing "thorough" mode (opt out of diff-default,
|
|
792
|
+
// scan the whole project). It MUST imply `--recursive`: otherwise
|
|
793
|
+
// `kern review --full` from a repo root only scans top-level files,
|
|
794
|
+
// which is the opposite of what "full" suggests. This was a documented
|
|
795
|
+
// UX surprise (handoff item #4). The implication transitively activates
|
|
796
|
+
// `--graph` below (line: `graphMode = ... || recursive`), which is the
|
|
797
|
+
// thorough mode for cross-file dead-export / async rules — also what
|
|
798
|
+
// "full" should mean.
|
|
799
|
+
const fullMode = hasFlag(args, '--full');
|
|
800
|
+
const recursive = hasFlag(args, '--recursive', '-r') || fullMode;
|
|
713
801
|
const enforce = hasFlag(args, '--enforce');
|
|
714
802
|
const exportKern = hasFlag(args, '--export-kern');
|
|
715
803
|
const llmMode = hasFlag(args, '--llm');
|
|
@@ -774,9 +862,23 @@ async function runReviewLocal(args) {
|
|
|
774
862
|
}
|
|
775
863
|
const minConfidenceArg = parseFlag(args, '--min-confidence');
|
|
776
864
|
const minConfidence = minConfidenceArg ? Number(minConfidenceArg) : undefined;
|
|
865
|
+
const policyArg = parseFlagOrNext(args, '--policy');
|
|
866
|
+
if (policyArg && policyArg !== 'guard' && policyArg !== 'ci' && policyArg !== 'audit') {
|
|
867
|
+
console.error("--policy must be 'guard', 'ci', or 'audit'");
|
|
868
|
+
process.exit(1);
|
|
869
|
+
}
|
|
870
|
+
if (auditMode && policyArg && policyArg !== 'audit') {
|
|
871
|
+
console.error('--audit cannot be combined with --policy other than audit');
|
|
872
|
+
process.exit(1);
|
|
873
|
+
}
|
|
874
|
+
const telemetryOutputPath = parseFlagOrNext(args, '--telemetry-out');
|
|
875
|
+
const telemetryEnabled = hasFlag(args, '--telemetry') || telemetryOutputPath !== undefined;
|
|
876
|
+
const telemetryIncludeFindings = hasFlag(args, '--telemetry-findings');
|
|
877
|
+
const telemetryReplace = hasFlag(args, '--telemetry-replace');
|
|
777
878
|
const disableRuleArgs = args.filter((a) => a.startsWith('--disable-rule=')).map((a) => a.split('=')[1]);
|
|
778
879
|
const baselinePath = parseFlagOrNext(args, '--baseline');
|
|
779
880
|
const writeBaselinePath = parseFlagOrNext(args, '--write-baseline');
|
|
881
|
+
const evalManifestPath = parseFlagOrNext(args, '--eval-manifest');
|
|
780
882
|
const newOnly = hasFlag(args, '--new-only');
|
|
781
883
|
if (newOnly && !baselinePath) {
|
|
782
884
|
console.error('--new-only requires --baseline=<file.json>');
|
|
@@ -801,7 +903,6 @@ async function runReviewLocal(args) {
|
|
|
801
903
|
let diffBase = args.some((a) => a === '--diff' || a.startsWith('--diff'))
|
|
802
904
|
? parseFlagOrNext(args, '--diff') || 'origin/main'
|
|
803
905
|
: undefined;
|
|
804
|
-
const fullMode = hasFlag(args, '--full');
|
|
805
906
|
if (fullMode && diffBase) {
|
|
806
907
|
console.error(' --full and --diff are mutually exclusive.');
|
|
807
908
|
process.exit(1);
|
|
@@ -841,11 +942,17 @@ async function runReviewLocal(args) {
|
|
|
841
942
|
layers.get(r.layer).push(r);
|
|
842
943
|
}
|
|
843
944
|
console.log(`\n KERN Review Rules (target: ${target}) — ${rules.length} rules active\n`);
|
|
945
|
+
console.log(' Columns: SEV PRECISION LIFECYCLE CI RULE');
|
|
946
|
+
console.log('');
|
|
844
947
|
for (const [layer, layerRules] of layers) {
|
|
845
948
|
console.log(` [${layer}] (${layerRules.length} rules)`);
|
|
846
949
|
for (const r of layerRules) {
|
|
847
950
|
const sev = r.severity === 'error' ? 'ERR' : r.severity === 'warning' ? 'WRN' : 'INF';
|
|
848
|
-
|
|
951
|
+
const profile = getRuleQualityProfile(r.id);
|
|
952
|
+
const precision = (profile?.precision ?? 'medium').toUpperCase().padEnd(12);
|
|
953
|
+
const lifecycle = (profile?.lifecycle ?? 'stable').toUpperCase().padEnd(11);
|
|
954
|
+
const ciDefault = (profile?.ciDefault ?? 'guarded').toUpperCase().padEnd(7);
|
|
955
|
+
console.log(` ${sev} ${precision}${lifecycle}${ciDefault}${r.id.padEnd(30)} ${r.description}`);
|
|
849
956
|
}
|
|
850
957
|
console.log();
|
|
851
958
|
}
|
|
@@ -868,6 +975,9 @@ async function runReviewLocal(args) {
|
|
|
868
975
|
'--max-warnings',
|
|
869
976
|
'--min-confidence',
|
|
870
977
|
'--cross-stack-mode',
|
|
978
|
+
'--policy',
|
|
979
|
+
'--telemetry-out',
|
|
980
|
+
'--eval-manifest',
|
|
871
981
|
'--baseline',
|
|
872
982
|
'--write-baseline',
|
|
873
983
|
]);
|
|
@@ -885,6 +995,9 @@ async function runReviewLocal(args) {
|
|
|
885
995
|
reviewInputs.push(arg);
|
|
886
996
|
}
|
|
887
997
|
let reviewInput = reviewInputs[0];
|
|
998
|
+
if (!reviewInput && evalManifestPath) {
|
|
999
|
+
reviewInput = '__eval__';
|
|
1000
|
+
}
|
|
888
1001
|
const remoteUrl = parseFlagOrNext(args, '--git');
|
|
889
1002
|
if (remoteUrl && !reviewInput && !diffBase) {
|
|
890
1003
|
reviewInput = '.';
|
|
@@ -913,6 +1026,7 @@ async function runReviewLocal(args) {
|
|
|
913
1026
|
const sanitizedBase = diffBase.replace(/[^a-zA-Z0-9_./\-~]/g, '');
|
|
914
1027
|
const diffFiles = execFileSync('git', ['diff', '--name-only', '--diff-filter=ACMR', sanitizedBase], {
|
|
915
1028
|
encoding: 'utf-8',
|
|
1029
|
+
env: withoutLocalGitEnv(),
|
|
916
1030
|
})
|
|
917
1031
|
.trim()
|
|
918
1032
|
.split('\n')
|
|
@@ -935,7 +1049,7 @@ async function runReviewLocal(args) {
|
|
|
935
1049
|
try {
|
|
936
1050
|
const unifiedDiff = execFileSync('git', ['diff', '--unified=0', '--diff-filter=ACMR', sanitizedBase], {
|
|
937
1051
|
encoding: 'utf-8',
|
|
938
|
-
env: { ...
|
|
1052
|
+
env: { ...withoutLocalGitEnv(), LC_ALL: 'C' },
|
|
939
1053
|
});
|
|
940
1054
|
let currentFile = '';
|
|
941
1055
|
for (const line of unifiedDiff.split('\n')) {
|
|
@@ -971,13 +1085,14 @@ async function runReviewLocal(args) {
|
|
|
971
1085
|
if (!reviewInput) {
|
|
972
1086
|
console.error('Usage: kern review [file|dir] [--full] [--diff base] [--git=<url>] [--security] [--mcp] [--llm] [--spec file.kern] [--cloud] [--baseline=file.json] [--new-only]');
|
|
973
1087
|
console.error(' [--write-baseline=file.json] [--json] [--sarif] [--recursive] [--enforce] [--strict-parse] [--audit] [--cross-stack-mode guard|audit]');
|
|
1088
|
+
console.error(' [--policy guard|ci|audit] [--telemetry] [--telemetry-out file] [--telemetry-report file] [--eval-manifest file]');
|
|
974
1089
|
console.error(' [--fix] [--autofix] [--require-confidence] [--rules-dir <dir>] [--include-generated]');
|
|
975
1090
|
console.error('');
|
|
976
1091
|
console.error(' Default (inside git): reviews changes vs origin/main. Use --full to scan the whole tree.');
|
|
977
1092
|
console.error(' Default skips generated files (src/generated/, files with @generated stamps). Use --include-generated to audit them.');
|
|
978
1093
|
process.exit(1);
|
|
979
1094
|
}
|
|
980
|
-
if (reviewInput !== '__diff__') {
|
|
1095
|
+
if (reviewInput !== '__diff__' && reviewInput !== '__eval__') {
|
|
981
1096
|
const reviewPath = resolve(reviewInput);
|
|
982
1097
|
const stat = existsSync(reviewPath) ? statSync(reviewPath) : null;
|
|
983
1098
|
if (!stat) {
|
|
@@ -1002,7 +1117,7 @@ async function runReviewLocal(args) {
|
|
|
1002
1117
|
}
|
|
1003
1118
|
const cfgDisabledRules = reviewCfg.review.disabledRules ?? [];
|
|
1004
1119
|
const mergedDisabledRules = [...new Set([...cfgDisabledRules, ...disableRuleArgs])];
|
|
1005
|
-
|
|
1120
|
+
let reviewConfig = {
|
|
1006
1121
|
registeredTemplates: [],
|
|
1007
1122
|
minCoverage: minCoverage ?? 0,
|
|
1008
1123
|
enforceTemplates: enforce,
|
|
@@ -1014,12 +1129,21 @@ async function runReviewLocal(args) {
|
|
|
1014
1129
|
crossStackMode: auditMode
|
|
1015
1130
|
? 'audit'
|
|
1016
1131
|
: (crossStackModeArg ?? reviewCfg.review.crossStackMode),
|
|
1132
|
+
policy: policyArg ?? reviewCfg.review.policy ?? (auditMode ? 'audit' : undefined),
|
|
1017
1133
|
showConfidence: showConfidence || reviewCfg.review.showConfidence,
|
|
1018
1134
|
minConfidence: minConfidence ?? reviewCfg.review.minConfidence,
|
|
1019
1135
|
disabledRules: mergedDisabledRules.length > 0 ? mergedDisabledRules : undefined,
|
|
1020
1136
|
rulesDirs: rulesDirs.length > 0 ? rulesDirs : undefined,
|
|
1021
1137
|
strict,
|
|
1022
1138
|
strictParse,
|
|
1139
|
+
telemetry: telemetryEnabled || reviewCfg.review.telemetry.enabled
|
|
1140
|
+
? {
|
|
1141
|
+
enabled: true,
|
|
1142
|
+
outputPath: telemetryOutputPath ? resolve(telemetryOutputPath) : reviewCfg.review.telemetry.outputPath,
|
|
1143
|
+
append: telemetryReplace ? false : reviewCfg.review.telemetry.append,
|
|
1144
|
+
includeFindings: telemetryIncludeFindings || reviewCfg.review.telemetry.includeFindings,
|
|
1145
|
+
}
|
|
1146
|
+
: undefined,
|
|
1023
1147
|
requireConfidenceAnnotations: requireConfidenceAnnotations || reviewCfg.review.requireConfidenceAnnotations,
|
|
1024
1148
|
tsConfigFilePath: tsconfigPath,
|
|
1025
1149
|
publicApi: reviewCfg.review.publicApi.files.length > 0 || reviewCfg.review.publicApi.symbols.length > 0
|
|
@@ -1030,6 +1154,17 @@ async function runReviewLocal(args) {
|
|
|
1030
1154
|
}
|
|
1031
1155
|
: undefined,
|
|
1032
1156
|
};
|
|
1157
|
+
const explicitPolicy = Boolean(policyArg || reviewCfg.review.policy || auditMode);
|
|
1158
|
+
if (explicitPolicy) {
|
|
1159
|
+
reviewConfig = applyReviewPolicyDefaults(reviewConfig, {
|
|
1160
|
+
crossStackMode: Boolean(crossStackModeArg || auditMode),
|
|
1161
|
+
minConfidence: minConfidenceArg !== undefined || reviewCfg.review.minConfidence !== 0,
|
|
1162
|
+
maxErrors: maxErrorsArg !== undefined,
|
|
1163
|
+
maxWarnings: maxWarningsArg !== undefined,
|
|
1164
|
+
strict: strictArg !== undefined,
|
|
1165
|
+
strictParse,
|
|
1166
|
+
});
|
|
1167
|
+
}
|
|
1033
1168
|
// Load templates for review
|
|
1034
1169
|
if (reviewCfg.templates && reviewCfg.templates.length > 0) {
|
|
1035
1170
|
clearTemplates();
|
|
@@ -1069,6 +1204,11 @@ async function runReviewLocal(args) {
|
|
|
1069
1204
|
console.log(` Templates loaded: ${reviewConfig.registeredTemplates.join(', ')}`);
|
|
1070
1205
|
}
|
|
1071
1206
|
}
|
|
1207
|
+
if (evalManifestPath) {
|
|
1208
|
+
const summary = runReviewEvalManifest(evalManifestPath, reviewConfig);
|
|
1209
|
+
console.log(jsonOutput ? JSON.stringify(summary, null, 2) : formatReviewEvalSummary(summary));
|
|
1210
|
+
process.exit(summary.passed ? 0 : 1);
|
|
1211
|
+
}
|
|
1072
1212
|
// Collect entry file paths
|
|
1073
1213
|
let entryFilePaths = [];
|
|
1074
1214
|
if (reviewInput === '__diff__') {
|
|
@@ -1103,10 +1243,10 @@ async function runReviewLocal(args) {
|
|
|
1103
1243
|
lintMode,
|
|
1104
1244
|
skipGenerated,
|
|
1105
1245
|
exportKern,
|
|
1106
|
-
enforce,
|
|
1246
|
+
enforce: enforce || reviewConfig.policy === 'ci',
|
|
1107
1247
|
jsonOutput,
|
|
1108
1248
|
sarifOutput,
|
|
1109
|
-
strictParse,
|
|
1249
|
+
strictParse: Boolean(reviewConfig.strictParse),
|
|
1110
1250
|
maxDepth,
|
|
1111
1251
|
batchSize,
|
|
1112
1252
|
tsconfigPath,
|