@kevinrabun/judges 3.110.0 → 3.112.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.
Files changed (78) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +126 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/finding-auto-priority.d.ts +2 -0
  6. package/dist/commands/finding-auto-priority.d.ts.map +1 -0
  7. package/dist/commands/finding-auto-priority.js +101 -0
  8. package/dist/commands/finding-auto-priority.js.map +1 -0
  9. package/dist/commands/finding-cluster-summary.d.ts +2 -0
  10. package/dist/commands/finding-cluster-summary.d.ts.map +1 -0
  11. package/dist/commands/finding-cluster-summary.js +86 -0
  12. package/dist/commands/finding-cluster-summary.js.map +1 -0
  13. package/dist/commands/finding-context-link.d.ts +2 -0
  14. package/dist/commands/finding-context-link.d.ts.map +1 -0
  15. package/dist/commands/finding-context-link.js +95 -0
  16. package/dist/commands/finding-context-link.js.map +1 -0
  17. package/dist/commands/finding-dependency-impact.d.ts +2 -0
  18. package/dist/commands/finding-dependency-impact.d.ts.map +1 -0
  19. package/dist/commands/finding-dependency-impact.js +98 -0
  20. package/dist/commands/finding-dependency-impact.js.map +1 -0
  21. package/dist/commands/finding-fix-estimate.d.ts +2 -0
  22. package/dist/commands/finding-fix-estimate.d.ts.map +1 -0
  23. package/dist/commands/finding-fix-estimate.js +96 -0
  24. package/dist/commands/finding-fix-estimate.js.map +1 -0
  25. package/dist/commands/finding-noise-score.d.ts +2 -0
  26. package/dist/commands/finding-noise-score.d.ts.map +1 -0
  27. package/dist/commands/finding-noise-score.js +94 -0
  28. package/dist/commands/finding-noise-score.js.map +1 -0
  29. package/dist/commands/finding-repeat-detect.d.ts +2 -0
  30. package/dist/commands/finding-repeat-detect.d.ts.map +1 -0
  31. package/dist/commands/finding-repeat-detect.js +93 -0
  32. package/dist/commands/finding-repeat-detect.js.map +1 -0
  33. package/dist/commands/finding-resolution-workflow.d.ts +2 -0
  34. package/dist/commands/finding-resolution-workflow.d.ts.map +1 -0
  35. package/dist/commands/finding-resolution-workflow.js +92 -0
  36. package/dist/commands/finding-resolution-workflow.js.map +1 -0
  37. package/dist/commands/finding-scope-impact.d.ts +2 -0
  38. package/dist/commands/finding-scope-impact.d.ts.map +1 -0
  39. package/dist/commands/finding-scope-impact.js +84 -0
  40. package/dist/commands/finding-scope-impact.js.map +1 -0
  41. package/dist/commands/finding-top-offender.d.ts +2 -0
  42. package/dist/commands/finding-top-offender.d.ts.map +1 -0
  43. package/dist/commands/finding-top-offender.js +76 -0
  44. package/dist/commands/finding-top-offender.js.map +1 -0
  45. package/dist/commands/review-health-trend.d.ts +2 -0
  46. package/dist/commands/review-health-trend.d.ts.map +1 -0
  47. package/dist/commands/review-health-trend.js +108 -0
  48. package/dist/commands/review-health-trend.js.map +1 -0
  49. package/dist/commands/review-mentor-suggest.d.ts +2 -0
  50. package/dist/commands/review-mentor-suggest.d.ts.map +1 -0
  51. package/dist/commands/review-mentor-suggest.js +113 -0
  52. package/dist/commands/review-mentor-suggest.js.map +1 -0
  53. package/dist/commands/review-quality-baseline.d.ts +2 -0
  54. package/dist/commands/review-quality-baseline.d.ts.map +1 -0
  55. package/dist/commands/review-quality-baseline.js +135 -0
  56. package/dist/commands/review-quality-baseline.js.map +1 -0
  57. package/dist/commands/review-readiness-check.d.ts +2 -0
  58. package/dist/commands/review-readiness-check.d.ts.map +1 -0
  59. package/dist/commands/review-readiness-check.js +99 -0
  60. package/dist/commands/review-readiness-check.js.map +1 -0
  61. package/dist/commands/review-retrospective.d.ts +2 -0
  62. package/dist/commands/review-retrospective.d.ts.map +1 -0
  63. package/dist/commands/review-retrospective.js +119 -0
  64. package/dist/commands/review-retrospective.js.map +1 -0
  65. package/dist/commands/review-team-skill-map.d.ts +2 -0
  66. package/dist/commands/review-team-skill-map.d.ts.map +1 -0
  67. package/dist/commands/review-team-skill-map.js +103 -0
  68. package/dist/commands/review-team-skill-map.js.map +1 -0
  69. package/dist/commands/review-team-velocity.d.ts +2 -0
  70. package/dist/commands/review-team-velocity.d.ts.map +1 -0
  71. package/dist/commands/review-team-velocity.js +104 -0
  72. package/dist/commands/review-team-velocity.js.map +1 -0
  73. package/dist/commands/review-workflow-suggest.d.ts +2 -0
  74. package/dist/commands/review-workflow-suggest.d.ts.map +1 -0
  75. package/dist/commands/review-workflow-suggest.js +130 -0
  76. package/dist/commands/review-workflow-suggest.js.map +1 -0
  77. package/package.json +1 -1
  78. package/server.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-team-skill-map.js","sourceRoot":"","sources":["../../src/commands/review-team-skill-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runReviewTeamVelocity(argv: string[]): void;
2
+ //# sourceMappingURL=review-team-velocity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-team-velocity.d.ts","sourceRoot":"","sources":["../../src/commands/review-team-velocity.ts"],"names":[],"mappings":"AA2FA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAsD1D"}
@@ -0,0 +1,104 @@
1
+ import { readFileSync, existsSync, readdirSync } from "fs";
2
+ import { join } from "path";
3
+ function computeVelocity(historyDir) {
4
+ const empty = {
5
+ totalReviews: 0,
6
+ periods: [],
7
+ avgReviewsPerPeriod: 0,
8
+ acceleration: "unknown",
9
+ };
10
+ if (!existsSync(historyDir))
11
+ return empty;
12
+ const files = readdirSync(historyDir)
13
+ .filter((f) => typeof f === "string" && f.endsWith(".json"))
14
+ .sort();
15
+ if (files.length === 0)
16
+ return empty;
17
+ // Group by month from timestamps
18
+ const monthMap = new Map();
19
+ for (const file of files) {
20
+ try {
21
+ const data = JSON.parse(readFileSync(join(historyDir, file), "utf-8"));
22
+ const ts = data.timestamp ?? file.replace(".json", "");
23
+ const month = ts.slice(0, 7) || "unknown";
24
+ const entry = monthMap.get(month) ?? { reviews: 0, findings: 0, scores: [], passes: 0 };
25
+ entry.reviews++;
26
+ entry.findings += (data.findings ?? []).length;
27
+ entry.scores.push(data.overallScore ?? 0);
28
+ if (data.overallVerdict === "pass")
29
+ entry.passes++;
30
+ monthMap.set(month, entry);
31
+ }
32
+ catch {
33
+ // Skip
34
+ }
35
+ }
36
+ const periods = [];
37
+ for (const [month, data] of monthMap) {
38
+ const avgScore = data.scores.length > 0 ? Math.round(data.scores.reduce((a, b) => a + b, 0) / data.scores.length) : 0;
39
+ periods.push({
40
+ period: month,
41
+ reviews: data.reviews,
42
+ findings: data.findings,
43
+ avgScore,
44
+ passRate: data.reviews > 0 ? Math.round((data.passes / data.reviews) * 100) : 0,
45
+ });
46
+ }
47
+ periods.sort((a, b) => a.period.localeCompare(b.period));
48
+ const totalReviews = periods.reduce((s, p) => s + p.reviews, 0);
49
+ const avgPerPeriod = periods.length > 0 ? Math.round(totalReviews / periods.length) : 0;
50
+ let acceleration = "stable";
51
+ if (periods.length >= 2) {
52
+ const firstHalf = periods.slice(0, Math.floor(periods.length / 2));
53
+ const secondHalf = periods.slice(Math.floor(periods.length / 2));
54
+ const firstAvg = firstHalf.reduce((s, p) => s + p.reviews, 0) / firstHalf.length;
55
+ const secondAvg = secondHalf.reduce((s, p) => s + p.reviews, 0) / secondHalf.length;
56
+ if (secondAvg > firstAvg * 1.1)
57
+ acceleration = "accelerating";
58
+ else if (secondAvg < firstAvg * 0.9)
59
+ acceleration = "decelerating";
60
+ }
61
+ return { totalReviews, periods, avgReviewsPerPeriod: avgPerPeriod, acceleration };
62
+ }
63
+ export function runReviewTeamVelocity(argv) {
64
+ if (argv.includes("--help") || argv.includes("-h")) {
65
+ console.log(`Usage: judges review-team-velocity [options]
66
+
67
+ Track team review velocity metrics.
68
+
69
+ Options:
70
+ --history <path> Path to review history directory
71
+ --format <fmt> Output format: table (default) or json
72
+ -h, --help Show this help message`);
73
+ return;
74
+ }
75
+ const formatIdx = argv.indexOf("--format");
76
+ const format = formatIdx !== -1 && argv[formatIdx + 1] ? argv[formatIdx + 1] : "table";
77
+ const histIdx = argv.indexOf("--history");
78
+ const historyDir = histIdx !== -1 && argv[histIdx + 1]
79
+ ? join(process.cwd(), argv[histIdx + 1])
80
+ : join(process.cwd(), ".judges", "history");
81
+ const report = computeVelocity(historyDir);
82
+ if (format === "json") {
83
+ console.log(JSON.stringify(report, null, 2));
84
+ return;
85
+ }
86
+ console.log(`\n=== Team Velocity (${report.totalReviews} reviews, ${report.acceleration}) ===\n`);
87
+ if (report.periods.length === 0) {
88
+ console.log("No review history found.");
89
+ return;
90
+ }
91
+ console.log(" " + "Period".padEnd(12) + "Reviews".padEnd(10) + "Findings".padEnd(10) + "Avg Score".padEnd(12) + "Pass Rate");
92
+ console.log(" " + "-".repeat(55));
93
+ for (const p of report.periods) {
94
+ console.log(" " +
95
+ p.period.padEnd(12) +
96
+ String(p.reviews).padEnd(10) +
97
+ String(p.findings).padEnd(10) +
98
+ String(p.avgScore).padEnd(12) +
99
+ `${p.passRate}%`);
100
+ }
101
+ console.log(`\n Avg Reviews/Period: ${report.avgReviewsPerPeriod}`);
102
+ console.log(` Trend: ${report.acceleration}`);
103
+ }
104
+ //# sourceMappingURL=review-team-velocity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-team-velocity.js","sourceRoot":"","sources":["../../src/commands/review-team-velocity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runReviewWorkflowSuggest(argv: string[]): void;
2
+ //# sourceMappingURL=review-workflow-suggest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-workflow-suggest.d.ts","sourceRoot":"","sources":["../../src/commands/review-workflow-suggest.ts"],"names":[],"mappings":"AA8HA,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAkC7D"}
@@ -0,0 +1,130 @@
1
+ import { readFileSync, existsSync, readdirSync } from "fs";
2
+ import { join } from "path";
3
+ function buildSuggestions(baseDir) {
4
+ const suggestions = [];
5
+ const configPath = join(baseDir, ".judgesrc.json");
6
+ if (!existsSync(configPath)) {
7
+ suggestions.push({
8
+ area: "Configuration",
9
+ suggestion: "Create .judgesrc.json with judges init",
10
+ priority: "high",
11
+ reason: "No config file found — using defaults may produce noisy results",
12
+ });
13
+ }
14
+ const baselinePath = join(baseDir, ".judges", "baseline.json");
15
+ if (!existsSync(baselinePath)) {
16
+ suggestions.push({
17
+ area: "Baseline",
18
+ suggestion: "Generate a baseline to suppress known findings",
19
+ priority: "high",
20
+ reason: "Without a baseline, existing issues flood every review",
21
+ });
22
+ }
23
+ const historyDir = join(baseDir, ".judges", "history");
24
+ let historyCount = 0;
25
+ if (existsSync(historyDir)) {
26
+ const files = readdirSync(historyDir);
27
+ historyCount = files.filter((f) => String(f).endsWith(".json")).length;
28
+ }
29
+ if (historyCount === 0) {
30
+ suggestions.push({
31
+ area: "Review cadence",
32
+ suggestion: "Start with weekly reviews, then move to per-PR",
33
+ priority: "medium",
34
+ reason: "No review history — establish a rhythm before scaling up",
35
+ });
36
+ }
37
+ else if (historyCount < 5) {
38
+ suggestions.push({
39
+ area: "Review cadence",
40
+ suggestion: "Consider integrating into CI for automatic PR reviews",
41
+ priority: "medium",
42
+ reason: `Only ${historyCount} reviews on file — automate to increase coverage`,
43
+ });
44
+ }
45
+ const lastVerdictPath = join(baseDir, ".judges", "last-verdict.json");
46
+ if (existsSync(lastVerdictPath)) {
47
+ try {
48
+ const raw = readFileSync(lastVerdictPath, "utf-8");
49
+ const verdict = JSON.parse(raw);
50
+ const findings = verdict.findings ?? [];
51
+ const criticals = findings.filter((f) => f.severity === "critical").length;
52
+ const highs = findings.filter((f) => f.severity === "high").length;
53
+ if (criticals > 5) {
54
+ suggestions.push({
55
+ area: "Security focus",
56
+ suggestion: "Enable focused security judge preset",
57
+ priority: "high",
58
+ reason: `${criticals} critical findings — prioritise security review`,
59
+ });
60
+ }
61
+ if (highs > 10) {
62
+ suggestions.push({
63
+ area: "Severity tuning",
64
+ suggestion: "Review minSeverity setting to reduce noise",
65
+ priority: "medium",
66
+ reason: `${highs} high-severity findings may cause alert fatigue`,
67
+ });
68
+ }
69
+ if (findings.length > 50) {
70
+ suggestions.push({
71
+ area: "Scope",
72
+ suggestion: "Use diff-only mode to review only changed code",
73
+ priority: "medium",
74
+ reason: `${findings.length} findings — full-scan mode may overwhelm developers`,
75
+ });
76
+ }
77
+ const patchable = findings.filter((f) => f.patch !== undefined && f.patch !== null).length;
78
+ if (patchable > 0) {
79
+ suggestions.push({
80
+ area: "Autofix",
81
+ suggestion: "Enable auto-fix to apply available patches automatically",
82
+ priority: "low",
83
+ reason: `${patchable} findings have patches — auto-apply saves time`,
84
+ });
85
+ }
86
+ }
87
+ catch {
88
+ /* skip if parse fails */
89
+ }
90
+ }
91
+ if (suggestions.length === 0) {
92
+ suggestions.push({
93
+ area: "General",
94
+ suggestion: "Current workflow looks good — continue iterating",
95
+ priority: "low",
96
+ reason: "No obvious improvements detected",
97
+ });
98
+ }
99
+ return suggestions;
100
+ }
101
+ export function runReviewWorkflowSuggest(argv) {
102
+ if (argv.includes("--help") || argv.includes("-h")) {
103
+ console.log(`Usage: judges review-workflow-suggest [options]
104
+
105
+ Suggest optimal review workflows based on project characteristics.
106
+
107
+ Options:
108
+ --dir <path> Project directory (default: cwd)
109
+ --format <fmt> Output format: table (default) or json
110
+ -h, --help Show this help message`);
111
+ return;
112
+ }
113
+ const formatIdx = argv.indexOf("--format");
114
+ const format = formatIdx !== -1 && argv[formatIdx + 1] ? argv[formatIdx + 1] : "table";
115
+ const dirIdx = argv.indexOf("--dir");
116
+ const baseDir = dirIdx !== -1 && argv[dirIdx + 1] ? join(process.cwd(), argv[dirIdx + 1]) : process.cwd();
117
+ const suggestions = buildSuggestions(baseDir);
118
+ if (format === "json") {
119
+ console.log(JSON.stringify(suggestions, null, 2));
120
+ return;
121
+ }
122
+ console.log(`\n=== Workflow Suggestions (${suggestions.length}) ===\n`);
123
+ for (const s of suggestions) {
124
+ console.log(` [${s.priority.toUpperCase()}] ${s.area}`);
125
+ console.log(` ${s.suggestion}`);
126
+ console.log(` Reason: ${s.reason}`);
127
+ console.log();
128
+ }
129
+ }
130
+ //# sourceMappingURL=review-workflow-suggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-workflow-suggest.js","sourceRoot":"","sources":["../../src/commands/review-workflow-suggest.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kevinrabun/judges",
3
- "version": "3.110.0",
3
+ "version": "3.112.0",
4
4
  "description": "45 specialized judges that evaluate AI-generated code for security, cost, and quality.",
5
5
  "mcpName": "io.github.KevinRabun/judges",
6
6
  "type": "module",
package/server.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "url": "https://github.com/kevinrabun/judges",
8
8
  "source": "github"
9
9
  },
10
- "version": "3.110.0",
10
+ "version": "3.112.0",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "@kevinrabun/judges",
15
- "version": "3.110.0",
15
+ "version": "3.112.0",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  }