@kevinrabun/judges 3.68.0 → 3.70.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 +19 -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-fix-rate.d.ts +5 -0
  6. package/dist/commands/finding-fix-rate.d.ts.map +1 -0
  7. package/dist/commands/finding-fix-rate.js +142 -0
  8. package/dist/commands/finding-fix-rate.js.map +1 -0
  9. package/dist/commands/finding-impact.d.ts +5 -0
  10. package/dist/commands/finding-impact.d.ts.map +1 -0
  11. package/dist/commands/finding-impact.js +136 -0
  12. package/dist/commands/finding-impact.js.map +1 -0
  13. package/dist/commands/finding-recurrence.d.ts +5 -0
  14. package/dist/commands/finding-recurrence.d.ts.map +1 -0
  15. package/dist/commands/finding-recurrence.js +136 -0
  16. package/dist/commands/finding-recurrence.js.map +1 -0
  17. package/dist/commands/review-archive.d.ts +5 -0
  18. package/dist/commands/review-archive.d.ts.map +1 -0
  19. package/dist/commands/review-archive.js +136 -0
  20. package/dist/commands/review-archive.js.map +1 -0
  21. package/dist/commands/review-benchmark-self.d.ts +5 -0
  22. package/dist/commands/review-benchmark-self.d.ts.map +1 -0
  23. package/dist/commands/review-benchmark-self.js +141 -0
  24. package/dist/commands/review-benchmark-self.js.map +1 -0
  25. package/dist/commands/review-changelog-gen.d.ts +5 -0
  26. package/dist/commands/review-changelog-gen.d.ts.map +1 -0
  27. package/dist/commands/review-changelog-gen.js +118 -0
  28. package/dist/commands/review-changelog-gen.js.map +1 -0
  29. package/dist/commands/review-ci-status.d.ts +5 -0
  30. package/dist/commands/review-ci-status.d.ts.map +1 -0
  31. package/dist/commands/review-ci-status.js +201 -0
  32. package/dist/commands/review-ci-status.js.map +1 -0
  33. package/dist/commands/review-custom-prompt.d.ts +5 -0
  34. package/dist/commands/review-custom-prompt.d.ts.map +1 -0
  35. package/dist/commands/review-custom-prompt.js +171 -0
  36. package/dist/commands/review-custom-prompt.js.map +1 -0
  37. package/dist/commands/review-diff-context.d.ts +5 -0
  38. package/dist/commands/review-diff-context.d.ts.map +1 -0
  39. package/dist/commands/review-diff-context.js +159 -0
  40. package/dist/commands/review-diff-context.js.map +1 -0
  41. package/dist/commands/review-milestone.d.ts +5 -0
  42. package/dist/commands/review-milestone.d.ts.map +1 -0
  43. package/dist/commands/review-milestone.js +137 -0
  44. package/dist/commands/review-milestone.js.map +1 -0
  45. package/dist/commands/review-report-pdf.d.ts +5 -0
  46. package/dist/commands/review-report-pdf.d.ts.map +1 -0
  47. package/dist/commands/review-report-pdf.js +164 -0
  48. package/dist/commands/review-report-pdf.js.map +1 -0
  49. package/dist/commands/review-risk-score.d.ts +5 -0
  50. package/dist/commands/review-risk-score.d.ts.map +1 -0
  51. package/dist/commands/review-risk-score.js +157 -0
  52. package/dist/commands/review-risk-score.js.map +1 -0
  53. package/dist/commands/review-standup.d.ts +5 -0
  54. package/dist/commands/review-standup.d.ts.map +1 -0
  55. package/dist/commands/review-standup.js +96 -0
  56. package/dist/commands/review-standup.js.map +1 -0
  57. package/dist/commands/review-tag.d.ts +5 -0
  58. package/dist/commands/review-tag.d.ts.map +1 -0
  59. package/dist/commands/review-tag.js +137 -0
  60. package/dist/commands/review-tag.js.map +1 -0
  61. package/dist/commands/review-team-summary.d.ts +5 -0
  62. package/dist/commands/review-team-summary.d.ts.map +1 -0
  63. package/dist/commands/review-team-summary.js +156 -0
  64. package/dist/commands/review-team-summary.js.map +1 -0
  65. package/dist/commands/review-whitelist.d.ts +5 -0
  66. package/dist/commands/review-whitelist.d.ts.map +1 -0
  67. package/dist/commands/review-whitelist.js +159 -0
  68. package/dist/commands/review-whitelist.js.map +1 -0
  69. package/package.json +1 -1
  70. package/server.json +2 -2
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Review-report-pdf — Generate printable markdown review reports.
3
+ */
4
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
5
+ import { dirname } from "path";
6
+ // ─── Report Generation ─────────────────────────────────────────────────────
7
+ function generateReport(verdict, title) {
8
+ const lines = [];
9
+ const date = new Date().toISOString().slice(0, 10);
10
+ lines.push(`# ${title}`);
11
+ lines.push(`**Date:** ${date}`);
12
+ lines.push(`**Score:** ${(verdict.overallScore || 0).toFixed(1)}/10`);
13
+ lines.push(`**Verdict:** ${verdict.overallVerdict || "N/A"}`);
14
+ lines.push("");
15
+ // Summary
16
+ lines.push("## Summary");
17
+ lines.push("");
18
+ lines.push(verdict.summary || "No summary available.");
19
+ lines.push("");
20
+ // Statistics
21
+ lines.push("## Statistics");
22
+ lines.push("");
23
+ lines.push(`| Metric | Value |`);
24
+ lines.push(`|--------|-------|`);
25
+ lines.push(`| Overall Score | ${(verdict.overallScore || 0).toFixed(1)} |`);
26
+ lines.push(`| Critical Findings | ${verdict.criticalCount || 0} |`);
27
+ lines.push(`| High Findings | ${verdict.highCount || 0} |`);
28
+ lines.push(`| Total Findings | ${(verdict.findings || []).length} |`);
29
+ lines.push(`| Judges Evaluated | ${(verdict.evaluations || []).length} |`);
30
+ lines.push("");
31
+ // Findings by severity
32
+ const findings = verdict.findings || [];
33
+ if (findings.length > 0) {
34
+ lines.push("## Findings");
35
+ lines.push("");
36
+ const criticals = findings.filter((f) => f.severity === "critical");
37
+ const highs = findings.filter((f) => f.severity === "high");
38
+ const mediums = findings.filter((f) => f.severity === "medium");
39
+ const lows = findings.filter((f) => f.severity === "low");
40
+ if (criticals.length > 0) {
41
+ lines.push("### Critical");
42
+ lines.push("");
43
+ for (const f of criticals) {
44
+ lines.push(`- **[${f.ruleId || "N/A"}]** ${f.title || "Untitled"}`);
45
+ if (f.description)
46
+ lines.push(` ${f.description}`);
47
+ if (f.recommendation)
48
+ lines.push(` *Recommendation:* ${f.recommendation}`);
49
+ lines.push("");
50
+ }
51
+ }
52
+ if (highs.length > 0) {
53
+ lines.push("### High");
54
+ lines.push("");
55
+ for (const f of highs) {
56
+ lines.push(`- **[${f.ruleId || "N/A"}]** ${f.title || "Untitled"}`);
57
+ if (f.description)
58
+ lines.push(` ${f.description}`);
59
+ if (f.recommendation)
60
+ lines.push(` *Recommendation:* ${f.recommendation}`);
61
+ lines.push("");
62
+ }
63
+ }
64
+ if (mediums.length > 0) {
65
+ lines.push("### Medium");
66
+ lines.push("");
67
+ for (const f of mediums) {
68
+ lines.push(`- **[${f.ruleId || "N/A"}]** ${f.title || "Untitled"}`);
69
+ if (f.recommendation)
70
+ lines.push(` *Recommendation:* ${f.recommendation}`);
71
+ lines.push("");
72
+ }
73
+ }
74
+ if (lows.length > 0) {
75
+ lines.push("### Low");
76
+ lines.push("");
77
+ for (const f of lows) {
78
+ lines.push(`- **[${f.ruleId || "N/A"}]** ${f.title || "Untitled"}`);
79
+ lines.push("");
80
+ }
81
+ }
82
+ }
83
+ else {
84
+ lines.push("## Findings");
85
+ lines.push("");
86
+ lines.push("No findings detected. Code passes all checks.");
87
+ lines.push("");
88
+ }
89
+ // Judge evaluations
90
+ if ((verdict.evaluations || []).length > 0) {
91
+ lines.push("## Judge Evaluations");
92
+ lines.push("");
93
+ lines.push(`| Judge | Verdict | Score | Findings |`);
94
+ lines.push(`|-------|---------|-------|----------|`);
95
+ for (const e of verdict.evaluations || []) {
96
+ lines.push(`| ${e.judgeId} | ${e.verdict} | ${(e.score || 0).toFixed(1)} | ${(e.findings || []).length} |`);
97
+ }
98
+ lines.push("");
99
+ }
100
+ lines.push("---");
101
+ lines.push(`*Generated by Judges Panel on ${date}*`);
102
+ return lines.join("\n");
103
+ }
104
+ // ─── CLI ────────────────────────────────────────────────────────────────────
105
+ export function runReviewReportPdf(argv) {
106
+ if (argv.includes("--help") || argv.includes("-h")) {
107
+ console.log(`
108
+ judges review-report-pdf — Generate printable markdown review reports
109
+
110
+ Usage:
111
+ judges review-report-pdf --file verdict.json Generate report
112
+ judges review-report-pdf --file v.json --output report.md Save to file
113
+ judges review-report-pdf --file v.json --title "Sprint Review"
114
+
115
+ Options:
116
+ --file <path> Verdict JSON file
117
+ --output <path> Output file path (default: stdout)
118
+ --title <text> Report title (default: "Code Review Report")
119
+ --format json JSON output (report metadata)
120
+ --help, -h Show this help
121
+
122
+ Generates detailed markdown reports suitable for printing or sharing.
123
+ `);
124
+ return;
125
+ }
126
+ const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
127
+ const file = argv.find((_a, i) => argv[i - 1] === "--file");
128
+ const output = argv.find((_a, i) => argv[i - 1] === "--output");
129
+ const title = argv.find((_a, i) => argv[i - 1] === "--title") || "Code Review Report";
130
+ if (!file || !existsSync(file)) {
131
+ console.error("Error: --file with valid verdict JSON is required.");
132
+ process.exitCode = 1;
133
+ return;
134
+ }
135
+ let verdict;
136
+ try {
137
+ verdict = JSON.parse(readFileSync(file, "utf-8"));
138
+ }
139
+ catch {
140
+ console.error("Error: Failed to parse verdict file.");
141
+ process.exitCode = 1;
142
+ return;
143
+ }
144
+ if (format === "json") {
145
+ console.log(JSON.stringify({
146
+ title,
147
+ date: new Date().toISOString().slice(0, 10),
148
+ score: verdict.overallScore || 0,
149
+ verdict: verdict.overallVerdict || "N/A",
150
+ findings: (verdict.findings || []).length,
151
+ criticals: verdict.criticalCount || 0,
152
+ }, null, 2));
153
+ return;
154
+ }
155
+ const report = generateReport(verdict, title);
156
+ if (output) {
157
+ mkdirSync(dirname(output), { recursive: true });
158
+ writeFileSync(output, report, "utf-8");
159
+ console.log(`Report saved to ${output}`);
160
+ return;
161
+ }
162
+ console.log(report);
163
+ }
164
+ //# sourceMappingURL=review-report-pdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-report-pdf.js","sourceRoot":"","sources":["../../src/commands/review-report-pdf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-risk-score — Calculate aggregate project risk score from recent reviews.
3
+ */
4
+ export declare function runReviewRiskScore(argv: string[]): void;
5
+ //# sourceMappingURL=review-risk-score.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-risk-score.d.ts","sourceRoot":"","sources":["../../src/commands/review-risk-score.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8GH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA+EvD"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Review-risk-score — Calculate aggregate project risk score from recent reviews.
3
+ */
4
+ import { readFileSync, existsSync } from "fs";
5
+ // ─── Risk Calculation ───────────────────────────────────────────────────────
6
+ const SEVERITY_WEIGHTS = {
7
+ critical: 10,
8
+ high: 7,
9
+ medium: 4,
10
+ low: 1,
11
+ };
12
+ function calculateRisk(verdicts) {
13
+ const breakdown = [];
14
+ const recommendations = [];
15
+ // Finding severity score (weight: 40%)
16
+ let severityScore = 0;
17
+ let totalFindings = 0;
18
+ for (const v of verdicts) {
19
+ for (const f of v.findings || []) {
20
+ totalFindings++;
21
+ severityScore += SEVERITY_WEIGHTS[String(f.severity)] || 4;
22
+ }
23
+ }
24
+ const normalizedSeverity = totalFindings > 0 ? Math.min(severityScore / totalFindings, 10) : 0;
25
+ breakdown.push({
26
+ category: "Finding Severity",
27
+ score: normalizedSeverity,
28
+ weight: 0.4,
29
+ contribution: normalizedSeverity * 0.4,
30
+ details: `${totalFindings} findings, avg severity weight: ${totalFindings > 0 ? (severityScore / totalFindings).toFixed(1) : "0"}`,
31
+ });
32
+ // Critical density (weight: 30%)
33
+ let totalCriticals = 0;
34
+ for (const v of verdicts) {
35
+ totalCriticals += v.criticalCount || 0;
36
+ }
37
+ const criticalDensity = Math.min(totalCriticals * 2, 10);
38
+ breakdown.push({
39
+ category: "Critical Density",
40
+ score: criticalDensity,
41
+ weight: 0.3,
42
+ contribution: criticalDensity * 0.3,
43
+ details: `${totalCriticals} critical findings across ${verdicts.length} review(s)`,
44
+ });
45
+ if (totalCriticals > 0) {
46
+ recommendations.push(`Address ${totalCriticals} critical finding(s) immediately`);
47
+ }
48
+ // Review score trend (weight: 20%)
49
+ const scores = verdicts.map((v) => v.overallScore || 0).filter((s) => s > 0);
50
+ const avgScore = scores.length > 0 ? scores.reduce((a, b) => a + b, 0) / scores.length : 5;
51
+ const scoreRisk = Math.max(0, 10 - avgScore);
52
+ breakdown.push({
53
+ category: "Score Deficit",
54
+ score: scoreRisk,
55
+ weight: 0.2,
56
+ contribution: scoreRisk * 0.2,
57
+ details: `Average score: ${avgScore.toFixed(1)}/10`,
58
+ });
59
+ if (avgScore < 7) {
60
+ recommendations.push("Improve review scores above 7.0 threshold");
61
+ }
62
+ // Finding volume (weight: 10%)
63
+ const volumeRisk = Math.min(totalFindings / 5, 10);
64
+ breakdown.push({
65
+ category: "Finding Volume",
66
+ score: volumeRisk,
67
+ weight: 0.1,
68
+ contribution: volumeRisk * 0.1,
69
+ details: `${totalFindings} total findings`,
70
+ });
71
+ const overallRisk = breakdown.reduce((s, b) => s + b.contribution, 0);
72
+ let riskLevel = "Low";
73
+ if (overallRisk >= 7)
74
+ riskLevel = "Critical";
75
+ else if (overallRisk >= 5)
76
+ riskLevel = "High";
77
+ else if (overallRisk >= 3)
78
+ riskLevel = "Medium";
79
+ if (recommendations.length === 0) {
80
+ recommendations.push("Risk levels are manageable — continue regular reviews");
81
+ }
82
+ return { overallRisk, riskLevel, breakdown, recommendations };
83
+ }
84
+ // ─── CLI ────────────────────────────────────────────────────────────────────
85
+ export function runReviewRiskScore(argv) {
86
+ if (argv.includes("--help") || argv.includes("-h")) {
87
+ console.log(`
88
+ judges review-risk-score — Calculate aggregate project risk score
89
+
90
+ Usage:
91
+ judges review-risk-score --file verdict.json Score from single verdict
92
+ judges review-risk-score --files v1.json,v2.json Score from multiple verdicts
93
+
94
+ Options:
95
+ --file <path> Single verdict JSON file
96
+ --files <paths> Comma-separated verdict files
97
+ --format json JSON output
98
+ --help, -h Show this help
99
+
100
+ Calculates a weighted risk score from review findings and scores.
101
+ `);
102
+ return;
103
+ }
104
+ const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
105
+ const singleFile = argv.find((_a, i) => argv[i - 1] === "--file");
106
+ const multiFiles = argv.find((_a, i) => argv[i - 1] === "--files");
107
+ const files = [];
108
+ if (singleFile)
109
+ files.push(singleFile);
110
+ if (multiFiles)
111
+ files.push(...multiFiles.split(",").map((f) => f.trim()));
112
+ if (files.length === 0) {
113
+ console.error("Error: --file or --files is required.");
114
+ process.exitCode = 1;
115
+ return;
116
+ }
117
+ const verdicts = [];
118
+ for (const file of files) {
119
+ if (!existsSync(file)) {
120
+ console.error(`Warning: File not found: ${file}`);
121
+ continue;
122
+ }
123
+ try {
124
+ verdicts.push(JSON.parse(readFileSync(file, "utf-8")));
125
+ }
126
+ catch {
127
+ console.error(`Warning: Failed to parse: ${file}`);
128
+ }
129
+ }
130
+ if (verdicts.length === 0) {
131
+ console.error("Error: No valid verdict files provided.");
132
+ process.exitCode = 1;
133
+ return;
134
+ }
135
+ const report = calculateRisk(verdicts);
136
+ if (format === "json") {
137
+ console.log(JSON.stringify(report, null, 2));
138
+ return;
139
+ }
140
+ console.log("\nProject Risk Assessment:");
141
+ console.log("─".repeat(60));
142
+ console.log(` Overall Risk: ${report.overallRisk.toFixed(1)}/10 [${report.riskLevel}]`);
143
+ console.log();
144
+ console.log(" Breakdown:");
145
+ for (const b of report.breakdown) {
146
+ const bar = "█".repeat(Math.round(b.score));
147
+ console.log(` ${b.category.padEnd(18)} ${b.score.toFixed(1).padEnd(6)} (w=${(b.weight * 100).toFixed(0)}%) ${bar}`);
148
+ console.log(` ${b.details}`);
149
+ }
150
+ console.log();
151
+ console.log(" Recommendations:");
152
+ for (const r of report.recommendations) {
153
+ console.log(` - ${r}`);
154
+ }
155
+ console.log("─".repeat(60));
156
+ }
157
+ //# sourceMappingURL=review-risk-score.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-risk-score.js","sourceRoot":"","sources":["../../src/commands/review-risk-score.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-standup — Generate daily standup-ready summaries of review activity.
3
+ */
4
+ export declare function runReviewStandup(argv: string[]): void;
5
+ //# sourceMappingURL=review-standup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-standup.d.ts","sourceRoot":"","sources":["../../src/commands/review-standup.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2EH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA6CrD"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Review-standup — Generate daily standup-ready summaries of review activity.
3
+ */
4
+ import { readFileSync, existsSync } from "fs";
5
+ import { join } from "path";
6
+ // ─── Helpers ────────────────────────────────────────────────────────────────
7
+ function todayStr() {
8
+ return new Date().toISOString().slice(0, 10);
9
+ }
10
+ function loadRecentActivity() {
11
+ const date = todayStr();
12
+ const summary = {
13
+ date,
14
+ reviewsRun: 0,
15
+ avgScore: 0,
16
+ totalFindings: 0,
17
+ criticalFindings: 0,
18
+ topIssues: [],
19
+ status: "No activity recorded today",
20
+ };
21
+ // Check streak data for recent activity
22
+ const streakFile = join(".judges", "review-streak.json");
23
+ if (existsSync(streakFile)) {
24
+ try {
25
+ const streakData = JSON.parse(readFileSync(streakFile, "utf-8"));
26
+ const todayEntries = streakData.entries.filter((e) => e.date === date);
27
+ if (todayEntries.length > 0) {
28
+ summary.reviewsRun = todayEntries.length;
29
+ summary.avgScore = todayEntries.reduce((s, e) => s + e.score, 0) / todayEntries.length;
30
+ summary.status = todayEntries.every((e) => e.passed) ? "All reviews passing" : "Some reviews failing";
31
+ }
32
+ }
33
+ catch {
34
+ /* ignore */
35
+ }
36
+ }
37
+ // Check quota data
38
+ const quotaFile = join(".judges", "review-quota.json");
39
+ if (existsSync(quotaFile)) {
40
+ try {
41
+ const quotaData = JSON.parse(readFileSync(quotaFile, "utf-8"));
42
+ if (quotaData.limit > 0) {
43
+ summary.status += ` | Quota: ${quotaData.used}/${quotaData.limit}`;
44
+ }
45
+ }
46
+ catch {
47
+ /* ignore */
48
+ }
49
+ }
50
+ return summary;
51
+ }
52
+ // ─── CLI ────────────────────────────────────────────────────────────────────
53
+ export function runReviewStandup(argv) {
54
+ if (argv.includes("--help") || argv.includes("-h")) {
55
+ console.log(`
56
+ judges review-standup — Daily standup-ready review summary
57
+
58
+ Usage:
59
+ judges review-standup Today's summary
60
+ judges review-standup --date 2025-01-15 Summary for specific date
61
+ judges review-standup --week Weekly summary
62
+
63
+ Options:
64
+ --date <YYYY-MM-DD> Summary for specific date
65
+ --week Show weekly summary
66
+ --format json JSON output
67
+ --help, -h Show this help
68
+
69
+ Generates concise daily/weekly review summaries for standups and reports.
70
+ Reads from local .judges/ data files.
71
+ `);
72
+ return;
73
+ }
74
+ const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
75
+ const summary = loadRecentActivity();
76
+ if (format === "json") {
77
+ console.log(JSON.stringify(summary, null, 2));
78
+ return;
79
+ }
80
+ console.log("\nReview Standup Summary");
81
+ console.log("─".repeat(50));
82
+ console.log(` Date: ${summary.date}`);
83
+ console.log(` Reviews run: ${summary.reviewsRun}`);
84
+ console.log(` Average score: ${summary.avgScore > 0 ? summary.avgScore.toFixed(1) : "N/A"}`);
85
+ console.log(` Total findings: ${summary.totalFindings}`);
86
+ console.log(` Critical findings: ${summary.criticalFindings}`);
87
+ console.log(` Status: ${summary.status}`);
88
+ if (summary.topIssues.length > 0) {
89
+ console.log(` Top issues:`);
90
+ for (const issue of summary.topIssues) {
91
+ console.log(` - ${issue}`);
92
+ }
93
+ }
94
+ console.log("─".repeat(50));
95
+ }
96
+ //# sourceMappingURL=review-standup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-standup.js","sourceRoot":"","sources":["../../src/commands/review-standup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-tag — Tag reviews with labels for organization and filtering.
3
+ */
4
+ export declare function runReviewTag(argv: string[]): void;
5
+ //# sourceMappingURL=review-tag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-tag.d.ts","sourceRoot":"","sources":["../../src/commands/review-tag.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6CH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAyHjD"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Review-tag — Tag reviews with labels for organization and filtering.
3
+ */
4
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
5
+ import { join, dirname } from "path";
6
+ // ─── Storage ────────────────────────────────────────────────────────────────
7
+ const TAG_FILE = join(".judges", "review-tags.json");
8
+ function loadStore() {
9
+ if (!existsSync(TAG_FILE))
10
+ return { version: "1.0.0", reviews: [] };
11
+ try {
12
+ return JSON.parse(readFileSync(TAG_FILE, "utf-8"));
13
+ }
14
+ catch {
15
+ return { version: "1.0.0", reviews: [] };
16
+ }
17
+ }
18
+ function saveStore(store) {
19
+ mkdirSync(dirname(TAG_FILE), { recursive: true });
20
+ writeFileSync(TAG_FILE, JSON.stringify(store, null, 2), "utf-8");
21
+ }
22
+ function generateId() {
23
+ return `rev-${Date.now().toString(36)}`;
24
+ }
25
+ // ─── CLI ────────────────────────────────────────────────────────────────────
26
+ export function runReviewTag(argv) {
27
+ if (argv.includes("--help") || argv.includes("-h")) {
28
+ console.log(`
29
+ judges review-tag — Tag reviews for organization and filtering
30
+
31
+ Usage:
32
+ judges review-tag add --tags sprint-42,hotfix --score 8.5
33
+ judges review-tag list List all tags
34
+ judges review-tag list --tag sprint-42 List reviews with tag
35
+ judges review-tag remove --id rev-abc123 --tag hotfix
36
+ judges review-tag clear Clear all tags
37
+
38
+ Subcommands:
39
+ add Tag a review
40
+ list List tags or tagged reviews
41
+ remove Remove a tag from a review
42
+ clear Clear all tag data
43
+
44
+ Options:
45
+ --tags <t1,t2> Comma-separated tags
46
+ --tag <tag> Filter by single tag
47
+ --id <id> Review ID
48
+ --score <n> Review score
49
+ --source <text> Source description
50
+ --format json JSON output
51
+ --help, -h Show this help
52
+
53
+ Tag reviews for easy organization. Data in .judges/review-tags.json.
54
+ `);
55
+ return;
56
+ }
57
+ const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
58
+ const subcommand = argv.find((a) => ["add", "list", "remove", "clear"].includes(a)) || "list";
59
+ const store = loadStore();
60
+ if (subcommand === "add") {
61
+ const tagsArg = argv.find((_a, i) => argv[i - 1] === "--tags") || "";
62
+ const tags = tagsArg
63
+ .split(",")
64
+ .map((t) => t.trim())
65
+ .filter(Boolean);
66
+ if (tags.length === 0) {
67
+ console.error("Error: --tags is required.");
68
+ process.exitCode = 1;
69
+ return;
70
+ }
71
+ const score = parseFloat(argv.find((_a, i) => argv[i - 1] === "--score") || "0");
72
+ const source = argv.find((_a, i) => argv[i - 1] === "--source") || "";
73
+ const id = generateId();
74
+ store.reviews.push({ id, tags, createdAt: new Date().toISOString(), score, findingCount: 0, source });
75
+ saveStore(store);
76
+ console.log(`Tagged review ${id} with: ${tags.join(", ")}`);
77
+ return;
78
+ }
79
+ if (subcommand === "remove") {
80
+ const id = argv.find((_a, i) => argv[i - 1] === "--id");
81
+ const tag = argv.find((_a, i) => argv[i - 1] === "--tag");
82
+ if (!id || !tag) {
83
+ console.error("Error: --id and --tag are required.");
84
+ process.exitCode = 1;
85
+ return;
86
+ }
87
+ const review = store.reviews.find((r) => r.id === id);
88
+ if (!review) {
89
+ console.error(`Error: Review "${id}" not found.`);
90
+ process.exitCode = 1;
91
+ return;
92
+ }
93
+ review.tags = review.tags.filter((t) => t !== tag);
94
+ saveStore(store);
95
+ console.log(`Removed tag "${tag}" from ${id}.`);
96
+ return;
97
+ }
98
+ if (subcommand === "clear") {
99
+ saveStore({ version: "1.0.0", reviews: [] });
100
+ console.log("Tag data cleared.");
101
+ return;
102
+ }
103
+ // list
104
+ const filterTag = argv.find((_a, i) => argv[i - 1] === "--tag");
105
+ const filtered = filterTag ? store.reviews.filter((r) => r.tags.includes(filterTag)) : store.reviews;
106
+ if (format === "json") {
107
+ console.log(JSON.stringify(filtered, null, 2));
108
+ return;
109
+ }
110
+ if (filtered.length === 0) {
111
+ console.log(filterTag ? `No reviews tagged "${filterTag}".` : "No tagged reviews. Use 'judges review-tag add' to start.");
112
+ return;
113
+ }
114
+ // Show unique tags summary
115
+ if (!filterTag) {
116
+ const tagCounts = new Map();
117
+ for (const r of store.reviews) {
118
+ for (const t of r.tags) {
119
+ tagCounts.set(t, (tagCounts.get(t) || 0) + 1);
120
+ }
121
+ }
122
+ console.log("\nReview Tags:");
123
+ console.log("─".repeat(40));
124
+ for (const [tag, count] of [...tagCounts.entries()].sort((a, b) => b[1] - a[1])) {
125
+ console.log(` ${tag.padEnd(25)} ${count} review(s)`);
126
+ }
127
+ console.log("─".repeat(40));
128
+ return;
129
+ }
130
+ console.log(`\nReviews tagged "${filterTag}":`);
131
+ console.log("─".repeat(60));
132
+ for (const r of filtered) {
133
+ console.log(` ${r.id} score=${r.score.toFixed(1)} ${r.createdAt.slice(0, 10)} [${r.tags.join(", ")}]`);
134
+ }
135
+ console.log("─".repeat(60));
136
+ }
137
+ //# sourceMappingURL=review-tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-tag.js","sourceRoot":"","sources":["../../src/commands/review-tag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-team-summary — Aggregate team review metrics.
3
+ */
4
+ export declare function runReviewTeamSummary(argv: string[]): void;
5
+ //# sourceMappingURL=review-team-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-team-summary.d.ts","sourceRoot":"","sources":["../../src/commands/review-team-summary.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0DH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA0JzD"}