@kevinrabun/judges 3.22.1 → 3.23.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.
Files changed (64) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/api.d.ts +18 -5
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +15 -3
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +54 -36
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/auto-detect.d.ts +62 -0
  10. package/dist/commands/auto-detect.d.ts.map +1 -0
  11. package/dist/commands/auto-detect.js +329 -0
  12. package/dist/commands/auto-detect.js.map +1 -0
  13. package/dist/commands/baseline.d.ts +46 -0
  14. package/dist/commands/baseline.d.ts.map +1 -1
  15. package/dist/commands/baseline.js +290 -27
  16. package/dist/commands/baseline.js.map +1 -1
  17. package/dist/commands/benchmark.d.ts +21 -3
  18. package/dist/commands/benchmark.d.ts.map +1 -1
  19. package/dist/commands/benchmark.js +365 -6
  20. package/dist/commands/benchmark.js.map +1 -1
  21. package/dist/commands/coverage.d.ts +41 -0
  22. package/dist/commands/coverage.d.ts.map +1 -0
  23. package/dist/commands/coverage.js +184 -0
  24. package/dist/commands/coverage.js.map +1 -0
  25. package/dist/commands/doctor.d.ts +56 -0
  26. package/dist/commands/doctor.d.ts.map +1 -0
  27. package/dist/commands/doctor.js +363 -0
  28. package/dist/commands/doctor.js.map +1 -0
  29. package/dist/commands/feedback.d.ts +42 -0
  30. package/dist/commands/feedback.d.ts.map +1 -1
  31. package/dist/commands/feedback.js +129 -0
  32. package/dist/commands/feedback.js.map +1 -1
  33. package/dist/commands/rule-metrics.d.ts +44 -0
  34. package/dist/commands/rule-metrics.d.ts.map +1 -0
  35. package/dist/commands/rule-metrics.js +114 -0
  36. package/dist/commands/rule-metrics.js.map +1 -0
  37. package/dist/commands/rule.d.ts +65 -0
  38. package/dist/commands/rule.d.ts.map +1 -1
  39. package/dist/commands/rule.js +94 -0
  40. package/dist/commands/rule.js.map +1 -1
  41. package/dist/commands/snapshot.d.ts +81 -0
  42. package/dist/commands/snapshot.d.ts.map +1 -0
  43. package/dist/commands/snapshot.js +189 -0
  44. package/dist/commands/snapshot.js.map +1 -0
  45. package/dist/config.d.ts +35 -3
  46. package/dist/config.d.ts.map +1 -1
  47. package/dist/config.js +187 -2
  48. package/dist/config.js.map +1 -1
  49. package/dist/dedup.d.ts +35 -0
  50. package/dist/dedup.d.ts.map +1 -1
  51. package/dist/dedup.js +96 -0
  52. package/dist/dedup.js.map +1 -1
  53. package/dist/evaluators/index.d.ts +22 -2
  54. package/dist/evaluators/index.d.ts.map +1 -1
  55. package/dist/evaluators/index.js +144 -52
  56. package/dist/evaluators/index.js.map +1 -1
  57. package/dist/patches/index.d.ts.map +1 -1
  58. package/dist/patches/index.js +426 -0
  59. package/dist/patches/index.js.map +1 -1
  60. package/dist/types.d.ts +43 -0
  61. package/dist/types.d.ts.map +1 -1
  62. package/judgesrc.schema.json +5 -0
  63. package/package.json +1 -1
  64. package/server.json +2 -2
@@ -1,13 +1,17 @@
1
1
  // ─── Baseline Command ────────────────────────────────────────────────────────
2
- // Create a baseline file from current findings so future runs can suppress them.
2
+ // Create and update baseline files for suppressing known findings.
3
3
  //
4
4
  // Usage:
5
5
  // judges baseline create --file src/app.ts # baseline one file
6
+ // judges baseline create --dir . # baseline entire project
7
+ // judges baseline update --dir . # re-scan & merge
6
8
  // judges baseline create --file src/app.ts -o .judges-baseline.json
7
9
  // ──────────────────────────────────────────────────────────────────────────────
10
+ import { createHash } from "crypto";
8
11
  import { readFileSync, writeFileSync, existsSync } from "fs";
9
- import { resolve, extname } from "path";
12
+ import { resolve, extname, relative } from "path";
10
13
  import { evaluateWithTribunal } from "../evaluators/index.js";
14
+ import { collectFiles } from "../cli.js";
11
15
  // ─── Language Detection ─────────────────────────────────────────────────────
12
16
  const EXT_TO_LANG = {
13
17
  ".ts": "typescript",
@@ -46,33 +50,271 @@ function detectLanguage(filePath) {
46
50
  const ext = extname(filePath.toLowerCase());
47
51
  return EXT_TO_LANG[ext];
48
52
  }
53
+ // ─── Fingerprinting ────────────────────────────────────────────────────────
54
+ // Hash ruleId + title + normalized surrounding source context so that findings
55
+ // survive line-number shifts caused by unrelated edits.
56
+ const DEFAULT_CONTEXT_RADIUS = 3;
57
+ export function computeFindingFingerprint(ruleId, title, sourceCode, lineNumber, contextRadius = DEFAULT_CONTEXT_RADIUS) {
58
+ const lines = sourceCode.split("\n");
59
+ const startIdx = Math.max(0, lineNumber - 1 - contextRadius);
60
+ const endIdx = Math.min(lines.length, lineNumber + contextRadius);
61
+ const contextSlice = lines
62
+ .slice(startIdx, endIdx)
63
+ .map((l) => l.trim())
64
+ .filter((l) => l.length > 0)
65
+ .join("\n");
66
+ const raw = `${ruleId}::${title}::${contextSlice}`;
67
+ return createHash("sha256").update(raw).digest("hex").slice(0, 16);
68
+ }
69
+ // ─── Load / Match Baseline ──────────────────────────────────────────────────
70
+ /** Build a legacy v1 key (ruleId::firstLine::title) */
71
+ function v1Key(f) {
72
+ const line = f.lineNumbers?.[0] ?? 0;
73
+ return `${f.ruleId}::${line}::${f.title}`;
74
+ }
75
+ /**
76
+ * Load a baseline file (v1 or v2) into a unified lookup structure.
77
+ */
78
+ export function loadBaselineData(baselinePath) {
79
+ const abs = resolve(baselinePath);
80
+ if (!existsSync(abs)) {
81
+ return { version: 0, keys: new Set(), fingerprints: new Set(), fileFingerprints: new Map() };
82
+ }
83
+ try {
84
+ const raw = readFileSync(abs, "utf-8");
85
+ const data = JSON.parse(raw);
86
+ if (data.version === 2) {
87
+ const fingerprints = new Set();
88
+ const fileFingerprints = new Map();
89
+ for (const [filePath, findings] of Object.entries(data.files || {})) {
90
+ const set = new Set();
91
+ for (const f of findings) {
92
+ if (f.status === "active") {
93
+ fingerprints.add(f.fingerprint);
94
+ set.add(f.fingerprint);
95
+ }
96
+ }
97
+ fileFingerprints.set(filePath, set);
98
+ }
99
+ return { version: 2, keys: new Set(), fingerprints, fileFingerprints };
100
+ }
101
+ // V1 fallback
102
+ const keys = new Set();
103
+ if (Array.isArray(data.findings)) {
104
+ for (const f of data.findings) {
105
+ keys.add(v1Key(f));
106
+ }
107
+ }
108
+ return { version: 1, keys, fingerprints: new Set(), fileFingerprints: new Map() };
109
+ }
110
+ catch {
111
+ console.error(`Warning: Could not parse baseline file: ${baselinePath}`);
112
+ return { version: 0, keys: new Set(), fingerprints: new Set(), fileFingerprints: new Map() };
113
+ }
114
+ }
115
+ /**
116
+ * Check whether a finding is suppressed by the loaded baseline.
117
+ *
118
+ * For v1 baselines, uses exact ruleId::line::title matching.
119
+ * For v2 baselines, uses fingerprint matching against source code context.
120
+ *
121
+ * @param filePath - Relative path of the file being evaluated (for v2 per-file lookup)
122
+ */
123
+ export function isBaselined(finding, baseline, sourceCode, filePath) {
124
+ // V1 matching — exact key lookup
125
+ if (baseline.keys.size > 0) {
126
+ if (baseline.keys.has(v1Key(finding)))
127
+ return true;
128
+ }
129
+ // V2 matching — fingerprint-based
130
+ if (baseline.fingerprints.size > 0) {
131
+ const targetSet = filePath && baseline.fileFingerprints.has(filePath)
132
+ ? baseline.fileFingerprints.get(filePath)
133
+ : baseline.fingerprints;
134
+ for (const line of finding.lineNumbers ?? [0]) {
135
+ const fp = computeFindingFingerprint(finding.ruleId, finding.title, sourceCode, line);
136
+ if (targetSet.has(fp))
137
+ return true;
138
+ }
139
+ }
140
+ return false;
141
+ }
142
+ // ─── Baseline Creation Helpers ──────────────────────────────────────────────
143
+ function buildV2Findings(findings, sourceCode) {
144
+ return findings.map((f) => ({
145
+ ruleId: f.ruleId,
146
+ title: f.title,
147
+ fingerprint: computeFindingFingerprint(f.ruleId, f.title, sourceCode, f.lineNumbers?.[0] ?? 1),
148
+ severity: f.severity,
149
+ lineNumbers: f.lineNumbers ?? [],
150
+ status: "active",
151
+ }));
152
+ }
153
+ function createSingleFileBaseline(filePath, code, language) {
154
+ const verdict = evaluateWithTribunal(code, language);
155
+ const relPath = relative(resolve("."), resolve(filePath));
156
+ const now = new Date().toISOString();
157
+ return {
158
+ version: 2,
159
+ createdAt: now,
160
+ updatedAt: now,
161
+ files: {
162
+ [relPath]: buildV2Findings(verdict.findings, code),
163
+ },
164
+ totalFindings: verdict.findings.length,
165
+ resolvedFindings: 0,
166
+ };
167
+ }
168
+ function createProjectBaseline(dir, excludePatterns, includePatterns, maxFiles, language) {
169
+ const files = collectFiles(dir, {
170
+ exclude: excludePatterns,
171
+ include: includePatterns,
172
+ maxFiles,
173
+ });
174
+ if (files.length === 0) {
175
+ console.error(`No supported source files found in: ${dir}`);
176
+ process.exit(1);
177
+ }
178
+ const now = new Date().toISOString();
179
+ const baseline = {
180
+ version: 2,
181
+ createdAt: now,
182
+ updatedAt: now,
183
+ files: {},
184
+ totalFindings: 0,
185
+ resolvedFindings: 0,
186
+ };
187
+ console.log(`Scanning ${files.length} file(s) for baseline…`);
188
+ for (let i = 0; i < files.length; i++) {
189
+ const filePath = files[i];
190
+ const relPath = relative(resolve("."), filePath);
191
+ process.stderr.write(` [${i + 1}/${files.length}] ${relPath}…`);
192
+ try {
193
+ const code = readFileSync(filePath, "utf-8");
194
+ const lang = language || detectLanguage(filePath) || "typescript";
195
+ const verdict = evaluateWithTribunal(code, lang);
196
+ if (verdict.findings.length > 0) {
197
+ baseline.files[relPath] = buildV2Findings(verdict.findings, code);
198
+ baseline.totalFindings += verdict.findings.length;
199
+ }
200
+ process.stderr.write(` ${verdict.findings.length} finding(s)\n`);
201
+ }
202
+ catch (err) {
203
+ process.stderr.write(` error: ${err.message}\n`);
204
+ }
205
+ }
206
+ return baseline;
207
+ }
208
+ // ─── Baseline Update (Merge) ────────────────────────────────────────────────
209
+ function updateBaseline(existingPath, dir, excludePatterns, includePatterns, maxFiles, language) {
210
+ // Load existing baseline
211
+ const abs = resolve(existingPath);
212
+ let existing;
213
+ if (existsSync(abs)) {
214
+ try {
215
+ const data = JSON.parse(readFileSync(abs, "utf-8"));
216
+ if (data.version === 2)
217
+ existing = data;
218
+ }
219
+ catch {
220
+ console.error(`Warning: Could not parse existing baseline, creating fresh.`);
221
+ }
222
+ }
223
+ // Scan project
224
+ const fresh = createProjectBaseline(dir, excludePatterns, includePatterns, maxFiles, language);
225
+ if (!existing)
226
+ return fresh;
227
+ // Merge: keep resolved status for fingerprints that no longer appear
228
+ let resolvedCount = 0;
229
+ const merged = {
230
+ version: 2,
231
+ createdAt: existing.createdAt,
232
+ updatedAt: new Date().toISOString(),
233
+ files: {},
234
+ totalFindings: 0,
235
+ resolvedFindings: 0,
236
+ };
237
+ // Build set of all fresh fingerprints
238
+ const freshFingerprints = new Set();
239
+ for (const findings of Object.values(fresh.files)) {
240
+ for (const f of findings)
241
+ freshFingerprints.add(f.fingerprint);
242
+ }
243
+ // Process existing files — mark resolved findings
244
+ for (const [_filePath, existingFindings] of Object.entries(existing.files)) {
245
+ for (const ef of existingFindings) {
246
+ if (ef.status === "active" && !freshFingerprints.has(ef.fingerprint)) {
247
+ ef.status = "resolved";
248
+ resolvedCount++;
249
+ }
250
+ }
251
+ }
252
+ // Merge: start with fresh findings, inherit resolved from existing
253
+ const existingFingerprints = new Set();
254
+ for (const findings of Object.values(existing.files)) {
255
+ for (const f of findings)
256
+ existingFingerprints.add(f.fingerprint);
257
+ }
258
+ // Add all fresh file findings
259
+ for (const [filePath, freshFindings] of Object.entries(fresh.files)) {
260
+ merged.files[filePath] = freshFindings;
261
+ merged.totalFindings += freshFindings.length;
262
+ }
263
+ // Carry over resolved findings from files that still exist
264
+ for (const [filePath, existingFindings] of Object.entries(existing.files)) {
265
+ const resolved = existingFindings.filter((f) => f.status === "resolved");
266
+ if (resolved.length > 0) {
267
+ if (!merged.files[filePath])
268
+ merged.files[filePath] = [];
269
+ merged.files[filePath].push(...resolved);
270
+ }
271
+ }
272
+ merged.resolvedFindings =
273
+ resolvedCount +
274
+ Object.values(merged.files).reduce((sum, findings) => sum + findings.filter((f) => f.status === "resolved").length, 0);
275
+ // Deduplicate resolved count (we added resolvedCount + counted resolved again)
276
+ merged.resolvedFindings = Object.values(merged.files).reduce((sum, findings) => sum + findings.filter((f) => f.status === "resolved").length, 0);
277
+ const newFindings = merged.totalFindings - [...freshFingerprints].filter((fp) => existingFingerprints.has(fp)).length;
278
+ console.log(`\n Merge summary: ${merged.totalFindings} active, ${merged.resolvedFindings} resolved` +
279
+ (newFindings > 0 ? `, ${newFindings} new` : ""));
280
+ return merged;
281
+ }
49
282
  // ─── CLI Entry Point ────────────────────────────────────────────────────────
50
283
  export function runBaseline(argv) {
51
- // judges baseline create [--file <path>] [-o <output>] [--language <lang>]
52
- const subcommand = argv[3]; // "create"
284
+ const subcommand = argv[3]; // "create" | "update"
53
285
  if (!subcommand || subcommand === "--help" || subcommand === "-h") {
54
286
  console.log(`
55
287
  Judges Panel — Baseline Management
56
288
 
57
289
  USAGE:
58
- judges baseline create --file <path> Create baseline from file
59
- judges baseline create --file <path> -o baseline.json Custom output path
290
+ judges baseline create --file <path> Baseline one file (v2)
291
+ judges baseline create --dir . Baseline entire project (v2)
292
+ judges baseline update --dir . Re-scan & merge (mark resolved)
293
+ judges baseline create --file <path> -o baseline.json Custom output path
60
294
 
61
295
  OPTIONS:
62
296
  --file, -f <path> File to evaluate for baseline
297
+ --dir, -d <path> Directory to scan for project-wide baseline
63
298
  --output, -o <path> Output baseline file (default: .judges-baseline.json)
64
- --language, -l <lang> Language override
299
+ --language, -l <lang> Language override (auto-detected if omitted)
300
+ --exclude <pattern> Glob patterns to exclude (repeatable)
301
+ --include <pattern> Glob patterns to include (repeatable)
302
+ --max-files <n> Maximum files to scan
65
303
  `);
66
304
  process.exit(0);
67
305
  }
68
- if (subcommand !== "create") {
306
+ if (subcommand !== "create" && subcommand !== "update") {
69
307
  console.error(`Unknown baseline subcommand: ${subcommand}`);
70
- console.error('Use "judges baseline create --file <path>"');
308
+ console.error('Use "judges baseline create" or "judges baseline update"');
71
309
  process.exit(1);
72
310
  }
73
311
  let file;
312
+ let dir;
74
313
  let output = ".judges-baseline.json";
75
314
  let language;
315
+ const exclude = [];
316
+ const include = [];
317
+ let maxFiles;
76
318
  for (let i = 4; i < argv.length; i++) {
77
319
  const arg = argv[i];
78
320
  switch (arg) {
@@ -80,6 +322,10 @@ OPTIONS:
80
322
  case "-f":
81
323
  file = argv[++i];
82
324
  break;
325
+ case "--dir":
326
+ case "-d":
327
+ dir = argv[++i];
328
+ break;
83
329
  case "--output":
84
330
  case "-o":
85
331
  output = argv[++i];
@@ -88,14 +334,44 @@ OPTIONS:
88
334
  case "-l":
89
335
  language = argv[++i];
90
336
  break;
337
+ case "--exclude":
338
+ exclude.push(argv[++i]);
339
+ break;
340
+ case "--include":
341
+ include.push(argv[++i]);
342
+ break;
343
+ case "--max-files":
344
+ maxFiles = parseInt(argv[++i], 10);
345
+ break;
91
346
  default:
92
- if (!arg.startsWith("-") && !file)
347
+ if (!arg.startsWith("-") && !file && !dir)
93
348
  file = arg;
94
349
  break;
95
350
  }
96
351
  }
352
+ // ── Update subcommand ──────────────────────────────────────────────────
353
+ if (subcommand === "update") {
354
+ const targetDir = dir || ".";
355
+ console.log(`Updating baseline from ${targetDir}…`);
356
+ const baseline = updateBaseline(output, targetDir, exclude, include, maxFiles, language);
357
+ const outPath = resolve(output);
358
+ writeFileSync(outPath, JSON.stringify(baseline, null, 2), "utf-8");
359
+ console.log(`✅ Baseline updated: ${outPath} (${baseline.totalFindings} active, ${baseline.resolvedFindings} resolved)`);
360
+ process.exit(0);
361
+ }
362
+ // ── Create subcommand ──────────────────────────────────────────────────
363
+ // Project-wide mode
364
+ if (dir) {
365
+ console.log(`Creating project-wide baseline from ${dir}…`);
366
+ const baseline = createProjectBaseline(dir, exclude, include, maxFiles, language);
367
+ const outPath = resolve(output);
368
+ writeFileSync(outPath, JSON.stringify(baseline, null, 2), "utf-8");
369
+ console.log(`✅ Baseline created: ${outPath} (${baseline.totalFindings} findings across ${Object.keys(baseline.files).length} file(s))`);
370
+ process.exit(0);
371
+ }
372
+ // Single-file mode
97
373
  if (!file) {
98
- console.error("Error: --file is required for baseline create");
374
+ console.error("Error: --file or --dir is required for baseline create");
99
375
  process.exit(1);
100
376
  }
101
377
  const abs = resolve(file);
@@ -106,23 +382,10 @@ OPTIONS:
106
382
  const code = readFileSync(abs, "utf-8");
107
383
  const lang = language || detectLanguage(file) || "typescript";
108
384
  console.log(`Evaluating ${file} to create baseline...`);
109
- const verdict = evaluateWithTribunal(code, lang);
110
- const baselineData = {
111
- version: 1,
112
- createdAt: new Date().toISOString(),
113
- sourceFile: file,
114
- findings: verdict.findings.map((f) => ({
115
- ruleId: f.ruleId,
116
- title: f.title,
117
- lineNumbers: f.lineNumbers,
118
- severity: f.severity,
119
- })),
120
- totalFindings: verdict.findings.length,
121
- score: verdict.overallScore,
122
- };
385
+ const baseline = createSingleFileBaseline(file, code, lang);
123
386
  const outPath = resolve(output);
124
- writeFileSync(outPath, JSON.stringify(baselineData, null, 2), "utf-8");
125
- console.log(`✅ Baseline created: ${outPath} (${baselineData.totalFindings} findings captured)`);
387
+ writeFileSync(outPath, JSON.stringify(baseline, null, 2), "utf-8");
388
+ console.log(`✅ Baseline created: ${outPath} (${baseline.totalFindings} finding(s) captured)`);
126
389
  process.exit(0);
127
390
  }
128
391
  //# sourceMappingURL=baseline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../src/commands/baseline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../src/commands/baseline.ts"],"names":[],"mappings":"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"}
@@ -47,21 +47,39 @@ export interface BenchmarkResult {
47
47
  falseNegatives: number;
48
48
  /** False positives: unexpected findings that were detected */
49
49
  falsePositives: number;
50
- /** Precision: TP / (TP + FP) */
50
+ /** Precision: TP / (TP + FP) — prefix-based matching */
51
51
  precision: number;
52
- /** Recall: TP / (TP + FN) */
52
+ /** Recall: TP / (TP + FN) — prefix-based matching */
53
53
  recall: number;
54
- /** F1 score: harmonic mean of precision and recall */
54
+ /** F1 score: harmonic mean of precision and recall — prefix-based */
55
55
  f1Score: number;
56
56
  /** Detection rate: cases detected / total cases */
57
57
  detectionRate: number;
58
+ /** Strict true positives: exact rule-ID match */
59
+ strictTruePositives: number;
60
+ /** Strict false negatives: exact rule-ID not matched */
61
+ strictFalseNegatives: number;
62
+ /** Strict precision: TP / (TP + FP) using exact rule-ID matching */
63
+ strictPrecision: number;
64
+ /** Strict recall: TP / (TP + FN) using exact rule-ID matching */
65
+ strictRecall: number;
66
+ /** Strict F1 score: exact rule-ID matching */
67
+ strictF1Score: number;
58
68
  /** Per-category results */
59
69
  perCategory: Record<string, CategoryResult>;
60
70
  /** Per-judge results */
61
71
  perJudge: Record<string, JudgeBenchmarkResult>;
72
+ /** Per-difficulty breakdown */
73
+ perDifficulty: Record<string, DifficultyResult>;
62
74
  /** Individual case results */
63
75
  cases: CaseResult[];
64
76
  }
77
+ export interface DifficultyResult {
78
+ difficulty: string;
79
+ total: number;
80
+ detected: number;
81
+ detectionRate: number;
82
+ }
65
83
  export interface CategoryResult {
66
84
  category: string;
67
85
  total: number;
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/commands/benchmark.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/commands/benchmark.ts"],"names":[],"mappings":"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"}