@kevinrabun/judges 3.70.0 → 3.72.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 (70) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +112 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/finding-auto-fix.d.ts +5 -0
  6. package/dist/commands/finding-auto-fix.d.ts.map +1 -0
  7. package/dist/commands/finding-auto-fix.js +189 -0
  8. package/dist/commands/finding-auto-fix.js.map +1 -0
  9. package/dist/commands/finding-context.d.ts +5 -0
  10. package/dist/commands/finding-context.d.ts.map +1 -0
  11. package/dist/commands/finding-context.js +141 -0
  12. package/dist/commands/finding-context.js.map +1 -0
  13. package/dist/commands/finding-deduplicate.d.ts +5 -0
  14. package/dist/commands/finding-deduplicate.d.ts.map +1 -0
  15. package/dist/commands/finding-deduplicate.js +142 -0
  16. package/dist/commands/finding-deduplicate.js.map +1 -0
  17. package/dist/commands/finding-severity-override.d.ts +5 -0
  18. package/dist/commands/finding-severity-override.d.ts.map +1 -0
  19. package/dist/commands/finding-severity-override.js +132 -0
  20. package/dist/commands/finding-severity-override.js.map +1 -0
  21. package/dist/commands/review-approval.d.ts +5 -0
  22. package/dist/commands/review-approval.d.ts.map +1 -0
  23. package/dist/commands/review-approval.js +134 -0
  24. package/dist/commands/review-approval.js.map +1 -0
  25. package/dist/commands/review-config-export.d.ts +5 -0
  26. package/dist/commands/review-config-export.d.ts.map +1 -0
  27. package/dist/commands/review-config-export.js +125 -0
  28. package/dist/commands/review-config-export.js.map +1 -0
  29. package/dist/commands/review-coverage-map.d.ts +5 -0
  30. package/dist/commands/review-coverage-map.d.ts.map +1 -0
  31. package/dist/commands/review-coverage-map.js +195 -0
  32. package/dist/commands/review-coverage-map.js.map +1 -0
  33. package/dist/commands/review-feedback.d.ts +5 -0
  34. package/dist/commands/review-feedback.d.ts.map +1 -0
  35. package/dist/commands/review-feedback.js +146 -0
  36. package/dist/commands/review-feedback.js.map +1 -0
  37. package/dist/commands/review-history-search.d.ts +5 -0
  38. package/dist/commands/review-history-search.d.ts.map +1 -0
  39. package/dist/commands/review-history-search.js +215 -0
  40. package/dist/commands/review-history-search.js.map +1 -0
  41. package/dist/commands/review-ignore-path.d.ts +5 -0
  42. package/dist/commands/review-ignore-path.d.ts.map +1 -0
  43. package/dist/commands/review-ignore-path.js +148 -0
  44. package/dist/commands/review-ignore-path.js.map +1 -0
  45. package/dist/commands/review-language-stats.d.ts +5 -0
  46. package/dist/commands/review-language-stats.d.ts.map +1 -0
  47. package/dist/commands/review-language-stats.js +153 -0
  48. package/dist/commands/review-language-stats.js.map +1 -0
  49. package/dist/commands/review-onboard.d.ts +5 -0
  50. package/dist/commands/review-onboard.d.ts.map +1 -0
  51. package/dist/commands/review-onboard.js +155 -0
  52. package/dist/commands/review-onboard.js.map +1 -0
  53. package/dist/commands/review-parallel.d.ts +5 -0
  54. package/dist/commands/review-parallel.d.ts.map +1 -0
  55. package/dist/commands/review-parallel.js +183 -0
  56. package/dist/commands/review-parallel.js.map +1 -0
  57. package/dist/commands/review-pr-comment.d.ts +5 -0
  58. package/dist/commands/review-pr-comment.d.ts.map +1 -0
  59. package/dist/commands/review-pr-comment.js +107 -0
  60. package/dist/commands/review-pr-comment.js.map +1 -0
  61. package/dist/commands/review-rollback.d.ts +5 -0
  62. package/dist/commands/review-rollback.d.ts.map +1 -0
  63. package/dist/commands/review-rollback.js +172 -0
  64. package/dist/commands/review-rollback.js.map +1 -0
  65. package/dist/commands/review-score-history.d.ts +5 -0
  66. package/dist/commands/review-score-history.d.ts.map +1 -0
  67. package/dist/commands/review-score-history.js +138 -0
  68. package/dist/commands/review-score-history.js.map +1 -0
  69. package/package.json +1 -1
  70. package/server.json +2 -2
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Review-language-stats — Language-specific review statistics.
3
+ */
4
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync } from "fs";
5
+ import { join, dirname, extname } from "path";
6
+ // ─── Language Detection ─────────────────────────────────────────────────────
7
+ const EXT_TO_LANG = {
8
+ ".ts": "TypeScript",
9
+ ".tsx": "TypeScript",
10
+ ".js": "JavaScript",
11
+ ".jsx": "JavaScript",
12
+ ".py": "Python",
13
+ ".java": "Java",
14
+ ".cs": "C#",
15
+ ".go": "Go",
16
+ ".rs": "Rust",
17
+ ".rb": "Ruby",
18
+ ".php": "PHP",
19
+ ".cpp": "C++",
20
+ ".c": "C",
21
+ ".h": "C/C++ Header",
22
+ ".swift": "Swift",
23
+ ".kt": "Kotlin",
24
+ ".scala": "Scala",
25
+ ".vue": "Vue",
26
+ ".svelte": "Svelte",
27
+ ".html": "HTML",
28
+ ".css": "CSS",
29
+ ".scss": "SCSS",
30
+ ".sql": "SQL",
31
+ ".sh": "Shell",
32
+ ".yaml": "YAML",
33
+ ".yml": "YAML",
34
+ ".json": "JSON",
35
+ ".xml": "XML",
36
+ ".md": "Markdown",
37
+ ".tf": "Terraform",
38
+ ".bicep": "Bicep",
39
+ };
40
+ // ─── File Scanning ──────────────────────────────────────────────────────────
41
+ function scanDirectory(dir, langCounts) {
42
+ try {
43
+ const entries = readdirSync(dir);
44
+ for (const entry of entries) {
45
+ const name = entry;
46
+ if (name.startsWith(".") || name === "node_modules" || name === "dist" || name === "build")
47
+ continue;
48
+ const full = join(dir, name);
49
+ try {
50
+ const content = readFileSync(full, "utf-8");
51
+ const ext = extname(name);
52
+ const lang = EXT_TO_LANG[ext];
53
+ if (lang) {
54
+ const existing = langCounts.get(lang) || { files: [], lines: 0 };
55
+ existing.files.push(full);
56
+ existing.lines += content.split("\n").length;
57
+ langCounts.set(lang, existing);
58
+ }
59
+ }
60
+ catch {
61
+ // Might be a directory
62
+ try {
63
+ scanDirectory(full, langCounts);
64
+ }
65
+ catch {
66
+ // Skip unreadable entries
67
+ }
68
+ }
69
+ }
70
+ }
71
+ catch {
72
+ // Skip unreadable directories
73
+ }
74
+ }
75
+ // ─── CLI ────────────────────────────────────────────────────────────────────
76
+ export function runReviewLanguageStats(argv) {
77
+ if (argv.includes("--help") || argv.includes("-h")) {
78
+ console.log(`
79
+ judges review-language-stats — Language-specific review statistics
80
+
81
+ Usage:
82
+ judges review-language-stats
83
+ judges review-language-stats --dir src
84
+ judges review-language-stats --format json
85
+
86
+ Options:
87
+ --dir <path> Directory to scan (default: current directory)
88
+ --format json JSON output
89
+ --help, -h Show this help
90
+
91
+ Scans a project directory and provides language-specific statistics
92
+ including file counts, line counts, and supported language coverage.
93
+
94
+ Report saved to .judges/language-stats.json.
95
+ `);
96
+ return;
97
+ }
98
+ const dir = argv.find((_a, i) => argv[i - 1] === "--dir") || ".";
99
+ const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
100
+ if (!existsSync(dir)) {
101
+ console.error(`Error: Directory "${dir}" does not exist.`);
102
+ process.exitCode = 1;
103
+ return;
104
+ }
105
+ const langCounts = new Map();
106
+ scanDirectory(dir, langCounts);
107
+ if (langCounts.size === 0) {
108
+ console.log("No source files found.");
109
+ return;
110
+ }
111
+ const stats = [];
112
+ let totalFiles = 0;
113
+ for (const [lang, data] of langCounts) {
114
+ const extensions = [...new Set(data.files.map((f) => extname(f)))];
115
+ totalFiles += data.files.length;
116
+ stats.push({
117
+ language: lang,
118
+ extensions,
119
+ fileCount: data.files.length,
120
+ totalLines: data.lines,
121
+ reviewedCount: 0,
122
+ avgScore: 0,
123
+ findingDensity: 0,
124
+ });
125
+ }
126
+ stats.sort((a, b) => b.fileCount - a.fileCount);
127
+ const report = {
128
+ timestamp: new Date().toISOString(),
129
+ totalLanguages: stats.length,
130
+ totalFiles,
131
+ stats,
132
+ };
133
+ const outPath = join(".judges", "language-stats.json");
134
+ mkdirSync(dirname(outPath), { recursive: true });
135
+ writeFileSync(outPath, JSON.stringify(report, null, 2), "utf-8");
136
+ if (format === "json") {
137
+ console.log(JSON.stringify(report, null, 2));
138
+ return;
139
+ }
140
+ console.log("\nLanguage Statistics:");
141
+ console.log("═".repeat(65));
142
+ console.log(` Languages: ${stats.length} Total files: ${totalFiles}`);
143
+ console.log("═".repeat(65));
144
+ console.log(` ${"Language".padEnd(18)} ${"Files".padEnd(8)} ${"Lines".padEnd(10)} Extensions`);
145
+ console.log(" " + "─".repeat(63));
146
+ for (const s of stats) {
147
+ const pct = ((s.fileCount / totalFiles) * 100).toFixed(1);
148
+ console.log(` ${s.language.padEnd(18)} ${String(s.fileCount).padEnd(8)} ${String(s.totalLines).padEnd(10)} ${s.extensions.join(", ")} (${pct}%)`);
149
+ }
150
+ console.log(" " + "─".repeat(63));
151
+ console.log(` Report saved to ${outPath}`);
152
+ }
153
+ //# sourceMappingURL=review-language-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-language-stats.js","sourceRoot":"","sources":["../../src/commands/review-language-stats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-onboard — Guided onboarding for new team members adopting Judges.
3
+ */
4
+ export declare function runReviewOnboard(argv: string[]): void;
5
+ //# sourceMappingURL=review-onboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-onboard.d.ts","sourceRoot":"","sources":["../../src/commands/review-onboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkGH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAkFrD"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Review-onboard — Guided onboarding for new team members adopting Judges.
3
+ */
4
+ import { existsSync } from "fs";
5
+ import { defaultRegistry } from "../judge-registry.js";
6
+ // ─── Checks ─────────────────────────────────────────────────────────────────
7
+ function checkPackageInstalled() {
8
+ const hasPackageJson = existsSync("package.json");
9
+ if (!hasPackageJson) {
10
+ return {
11
+ step: 1,
12
+ title: "Project Setup",
13
+ status: "pending",
14
+ detail: "No package.json found. Run 'npm init' first.",
15
+ };
16
+ }
17
+ return { step: 1, title: "Project Setup", status: "done", detail: "package.json found." };
18
+ }
19
+ function checkJudgesConfig() {
20
+ const configs = [".judgesrc", ".judgesrc.json", "judgesrc.json"];
21
+ const found = configs.find(existsSync);
22
+ if (found) {
23
+ return { step: 2, title: "Judges Configuration", status: "done", detail: `Config found: ${found}` };
24
+ }
25
+ return {
26
+ step: 2,
27
+ title: "Judges Configuration",
28
+ status: "pending",
29
+ detail: "No .judgesrc found. Run 'judges setup-wizard' to create one.",
30
+ };
31
+ }
32
+ function checkGitSetup() {
33
+ if (existsSync(".git")) {
34
+ return { step: 3, title: "Git Repository", status: "done", detail: "Git repository initialized." };
35
+ }
36
+ return { step: 3, title: "Git Repository", status: "pending", detail: "No .git directory. Run 'git init' to start." };
37
+ }
38
+ function checkCISetup() {
39
+ const ciFiles = [".github/workflows", ".gitlab-ci.yml", "Jenkinsfile", "azure-pipelines.yml"];
40
+ const found = ciFiles.find(existsSync);
41
+ if (found) {
42
+ return { step: 4, title: "CI Integration", status: "done", detail: `CI found: ${found}` };
43
+ }
44
+ return {
45
+ step: 4,
46
+ title: "CI Integration",
47
+ status: "pending",
48
+ detail: "No CI config found. Consider adding Judges to your CI pipeline.",
49
+ };
50
+ }
51
+ function checkJudgesAvailable() {
52
+ const judges = defaultRegistry.getJudges();
53
+ if (judges.length > 0) {
54
+ return { step: 5, title: "Available Judges", status: "done", detail: `${judges.length} judge(s) registered.` };
55
+ }
56
+ return { step: 5, title: "Available Judges", status: "pending", detail: "No judges registered." };
57
+ }
58
+ function checkBaselineSetup() {
59
+ if (existsSync(".judges/baseline.json") || existsSync("baseline.json")) {
60
+ return { step: 6, title: "Baseline Configuration", status: "done", detail: "Baseline file found." };
61
+ }
62
+ return {
63
+ step: 6,
64
+ title: "Baseline Configuration",
65
+ status: "pending",
66
+ detail: "No baseline. Run 'judges baseline' to establish one.",
67
+ };
68
+ }
69
+ function checkHooksSetup() {
70
+ if (existsSync(".husky") || existsSync(".git/hooks/pre-commit")) {
71
+ return { step: 7, title: "Git Hooks", status: "done", detail: "Pre-commit hooks configured." };
72
+ }
73
+ return {
74
+ step: 7,
75
+ title: "Git Hooks",
76
+ status: "pending",
77
+ detail: "No pre-commit hooks. Consider adding Judges to pre-commit.",
78
+ };
79
+ }
80
+ // ─── CLI ────────────────────────────────────────────────────────────────────
81
+ export function runReviewOnboard(argv) {
82
+ if (argv.includes("--help") || argv.includes("-h")) {
83
+ console.log(`
84
+ judges review-onboard — Guided onboarding for new team members
85
+
86
+ Usage:
87
+ judges review-onboard
88
+ judges review-onboard --format json
89
+
90
+ Options:
91
+ --format json JSON output
92
+ --help, -h Show this help
93
+
94
+ Walks through onboarding steps and checks project readiness:
95
+ 1. Project setup (package.json)
96
+ 2. Judges configuration (.judgesrc)
97
+ 3. Git repository
98
+ 4. CI integration
99
+ 5. Available judges
100
+ 6. Baseline configuration
101
+ 7. Git hooks
102
+
103
+ Shows which steps are complete and what to do next.
104
+ `);
105
+ return;
106
+ }
107
+ const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
108
+ const steps = [
109
+ checkPackageInstalled(),
110
+ checkJudgesConfig(),
111
+ checkGitSetup(),
112
+ checkCISetup(),
113
+ checkJudgesAvailable(),
114
+ checkBaselineSetup(),
115
+ checkHooksSetup(),
116
+ ];
117
+ const doneCount = steps.filter((s) => s.status === "done").length;
118
+ const totalSteps = steps.length;
119
+ const completionPct = (doneCount / totalSteps) * 100;
120
+ if (format === "json") {
121
+ console.log(JSON.stringify({ steps, doneCount, totalSteps, completionPct }, null, 2));
122
+ return;
123
+ }
124
+ console.log("\nJudges Onboarding Checklist:");
125
+ console.log("═".repeat(60));
126
+ console.log(` Progress: ${doneCount}/${totalSteps} steps complete (${completionPct.toFixed(0)}%)`);
127
+ const bar = (pct) => {
128
+ const filled = Math.round(pct / 5);
129
+ return "█".repeat(filled) + "░".repeat(20 - filled);
130
+ };
131
+ console.log(` [${bar(completionPct)}]`);
132
+ console.log("═".repeat(60));
133
+ for (const step of steps) {
134
+ const icon = step.status === "done" ? "✓" : step.status === "skipped" ? "─" : "○";
135
+ console.log(`\n ${icon} Step ${step.step}: ${step.title}`);
136
+ console.log(` ${step.detail}`);
137
+ }
138
+ console.log("\n" + "═".repeat(60));
139
+ if (doneCount === totalSteps) {
140
+ console.log(" All steps complete! You're ready to use Judges.");
141
+ }
142
+ else {
143
+ const nextStep = steps.find((s) => s.status === "pending");
144
+ if (nextStep) {
145
+ console.log(` Next: Step ${nextStep.step} — ${nextStep.title}`);
146
+ console.log(` ${nextStep.detail}`);
147
+ }
148
+ }
149
+ console.log("\n Quick start commands:");
150
+ console.log(" judges eval --file <path> Run a review");
151
+ console.log(" judges setup-wizard Configure Judges");
152
+ console.log(" judges list See available judges");
153
+ console.log(" judges baseline Create a baseline");
154
+ }
155
+ //# sourceMappingURL=review-onboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-onboard.js","sourceRoot":"","sources":["../../src/commands/review-onboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-parallel — Run parallel reviews on multiple files.
3
+ */
4
+ export declare function runReviewParallel(argv: string[]): void;
5
+ //# sourceMappingURL=review-parallel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-parallel.d.ts","sourceRoot":"","sources":["../../src/commands/review-parallel.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+EH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAqItD"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Review-parallel — Run parallel reviews on multiple files.
3
+ */
4
+ import { readFileSync, existsSync, readdirSync } from "fs";
5
+ import { join, extname } from "path";
6
+ // ─── Language Detection ─────────────────────────────────────────────────────
7
+ const EXT_TO_LANG = {
8
+ ".ts": "typescript",
9
+ ".tsx": "typescript",
10
+ ".js": "javascript",
11
+ ".jsx": "javascript",
12
+ ".py": "python",
13
+ ".java": "java",
14
+ ".cs": "csharp",
15
+ ".go": "go",
16
+ ".rs": "rust",
17
+ ".rb": "ruby",
18
+ ".php": "php",
19
+ ".cpp": "cpp",
20
+ ".c": "c",
21
+ ".swift": "swift",
22
+ ".kt": "kotlin",
23
+ ".scala": "scala",
24
+ };
25
+ const SOURCE_EXTS = new Set(Object.keys(EXT_TO_LANG));
26
+ // ─── File Discovery ─────────────────────────────────────────────────────────
27
+ function discoverFiles(dir, maxFiles) {
28
+ const files = [];
29
+ function scan(d) {
30
+ if (files.length >= maxFiles)
31
+ return;
32
+ try {
33
+ const entries = readdirSync(d);
34
+ for (const entry of entries) {
35
+ if (files.length >= maxFiles)
36
+ return;
37
+ const name = entry;
38
+ if (name.startsWith(".") || name === "node_modules" || name === "dist" || name === "build")
39
+ continue;
40
+ const full = join(d, name);
41
+ const ext = extname(name);
42
+ if (SOURCE_EXTS.has(ext)) {
43
+ files.push(full);
44
+ }
45
+ else {
46
+ try {
47
+ scan(full);
48
+ }
49
+ catch {
50
+ // Skip
51
+ }
52
+ }
53
+ }
54
+ }
55
+ catch {
56
+ // Skip
57
+ }
58
+ }
59
+ scan(dir);
60
+ return files;
61
+ }
62
+ // ─── CLI ────────────────────────────────────────────────────────────────────
63
+ export function runReviewParallel(argv) {
64
+ if (argv.includes("--help") || argv.includes("-h")) {
65
+ console.log(`
66
+ judges review-parallel — Run parallel reviews on multiple files
67
+
68
+ Usage:
69
+ judges review-parallel --dir src
70
+ judges review-parallel --files "src/api.ts,src/cli.ts"
71
+ judges review-parallel --dir src --max 50
72
+
73
+ Options:
74
+ --dir <path> Directory to scan for source files
75
+ --files <paths> Comma-separated list of files
76
+ --max <n> Max files to process (default: 100)
77
+ --ext <exts> Filter by extensions (e.g., ".ts,.js")
78
+ --format json JSON output
79
+ --help, -h Show this help
80
+
81
+ Discovers source files and queues them for review. Shows review
82
+ readiness for each file including language detection and line counts.
83
+
84
+ Note: For actual review, run 'judges eval --file <path>' on each file.
85
+ This command provides the manifest for batch processing.
86
+ `);
87
+ return;
88
+ }
89
+ const dir = argv.find((_a, i) => argv[i - 1] === "--dir");
90
+ const filesArg = argv.find((_a, i) => argv[i - 1] === "--files");
91
+ const maxFiles = parseInt(argv.find((_a, i) => argv[i - 1] === "--max") || "100", 10);
92
+ const extFilter = argv.find((_a, i) => argv[i - 1] === "--ext");
93
+ const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
94
+ let files;
95
+ if (filesArg) {
96
+ files = filesArg
97
+ .split(",")
98
+ .map((f) => f.trim())
99
+ .filter(Boolean);
100
+ }
101
+ else if (dir) {
102
+ if (!existsSync(dir)) {
103
+ console.error(`Error: Directory "${dir}" does not exist.`);
104
+ process.exitCode = 1;
105
+ return;
106
+ }
107
+ files = discoverFiles(dir, maxFiles);
108
+ }
109
+ else {
110
+ files = discoverFiles(".", maxFiles);
111
+ }
112
+ if (extFilter) {
113
+ const allowedExts = new Set(extFilter.split(",").map((e) => e.trim()));
114
+ files = files.filter((f) => allowedExts.has(extname(f)));
115
+ }
116
+ if (files.length === 0) {
117
+ console.log("No source files found.");
118
+ return;
119
+ }
120
+ const results = [];
121
+ let reviewed = 0;
122
+ let skipped = 0;
123
+ let errors = 0;
124
+ for (const file of files) {
125
+ const ext = extname(file);
126
+ const language = EXT_TO_LANG[ext] || "unknown";
127
+ if (!existsSync(file)) {
128
+ results.push({ file, language, lineCount: 0, status: "error", detail: "File not found" });
129
+ errors++;
130
+ continue;
131
+ }
132
+ try {
133
+ const content = readFileSync(file, "utf-8");
134
+ const lineCount = content.split("\n").length;
135
+ if (lineCount < 2) {
136
+ results.push({ file, language, lineCount, status: "skipped", detail: "Too small" });
137
+ skipped++;
138
+ continue;
139
+ }
140
+ results.push({ file, language, lineCount, status: "queued", detail: "Ready for review" });
141
+ reviewed++;
142
+ }
143
+ catch {
144
+ results.push({ file, language, lineCount: 0, status: "error", detail: "Could not read file" });
145
+ errors++;
146
+ }
147
+ }
148
+ const report = {
149
+ timestamp: new Date().toISOString(),
150
+ totalFiles: files.length,
151
+ results,
152
+ summary: { reviewed, skipped, errors },
153
+ };
154
+ if (format === "json") {
155
+ console.log(JSON.stringify(report, null, 2));
156
+ return;
157
+ }
158
+ console.log("\nParallel Review Manifest:");
159
+ console.log("═".repeat(70));
160
+ console.log(` Total: ${files.length} Queued: ${reviewed} Skipped: ${skipped} Errors: ${errors}`);
161
+ console.log("═".repeat(70));
162
+ // Group by language
163
+ const byLang = new Map();
164
+ for (const r of results) {
165
+ const list = byLang.get(r.language) || [];
166
+ list.push(r);
167
+ byLang.set(r.language, list);
168
+ }
169
+ for (const [lang, langResults] of [...byLang.entries()].sort((a, b) => b[1].length - a[1].length)) {
170
+ const totalLines = langResults.reduce((s, r) => s + r.lineCount, 0);
171
+ console.log(`\n ${lang} (${langResults.length} files, ${totalLines} lines):`);
172
+ for (const r of langResults.slice(0, 20)) {
173
+ const icon = r.status === "queued" ? "○" : r.status === "skipped" ? "─" : "✗";
174
+ console.log(` ${icon} ${r.file} (${r.lineCount} lines)`);
175
+ }
176
+ if (langResults.length > 20) {
177
+ console.log(` ... and ${langResults.length - 20} more`);
178
+ }
179
+ }
180
+ console.log("\n" + "═".repeat(70));
181
+ console.log(" To review: judges eval --file <path>");
182
+ }
183
+ //# sourceMappingURL=review-parallel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-parallel.js","sourceRoot":"","sources":["../../src/commands/review-parallel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-pr-comment — Generate PR comment summaries from review results.
3
+ */
4
+ export declare function runReviewPrComment(argv: string[]): void;
5
+ //# sourceMappingURL=review-pr-comment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-pr-comment.d.ts","sourceRoot":"","sources":["../../src/commands/review-pr-comment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuEH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAwDvD"}