@kevinrabun/judges 3.100.0 → 3.102.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-batch-suppress.d.ts +5 -0
  6. package/dist/commands/finding-batch-suppress.d.ts.map +1 -0
  7. package/dist/commands/finding-batch-suppress.js +86 -0
  8. package/dist/commands/finding-batch-suppress.js.map +1 -0
  9. package/dist/commands/finding-dependency-link.d.ts +5 -0
  10. package/dist/commands/finding-dependency-link.d.ts.map +1 -0
  11. package/dist/commands/finding-dependency-link.js +74 -0
  12. package/dist/commands/finding-dependency-link.js.map +1 -0
  13. package/dist/commands/finding-ownership-assign.d.ts +5 -0
  14. package/dist/commands/finding-ownership-assign.d.ts.map +1 -0
  15. package/dist/commands/finding-ownership-assign.js +102 -0
  16. package/dist/commands/finding-ownership-assign.js.map +1 -0
  17. package/dist/commands/finding-recurrence-detect.d.ts +5 -0
  18. package/dist/commands/finding-recurrence-detect.d.ts.map +1 -0
  19. package/dist/commands/finding-recurrence-detect.js +78 -0
  20. package/dist/commands/finding-recurrence-detect.js.map +1 -0
  21. package/dist/commands/finding-search-index.d.ts +5 -0
  22. package/dist/commands/finding-search-index.d.ts.map +1 -0
  23. package/dist/commands/finding-search-index.js +100 -0
  24. package/dist/commands/finding-search-index.js.map +1 -0
  25. package/dist/commands/finding-severity-drift.d.ts +5 -0
  26. package/dist/commands/finding-severity-drift.d.ts.map +1 -0
  27. package/dist/commands/finding-severity-drift.js +93 -0
  28. package/dist/commands/finding-severity-drift.js.map +1 -0
  29. package/dist/commands/review-access-log.d.ts +5 -0
  30. package/dist/commands/review-access-log.d.ts.map +1 -0
  31. package/dist/commands/review-access-log.js +66 -0
  32. package/dist/commands/review-access-log.js.map +1 -0
  33. package/dist/commands/review-archive-search.d.ts +5 -0
  34. package/dist/commands/review-archive-search.d.ts.map +1 -0
  35. package/dist/commands/review-archive-search.js +71 -0
  36. package/dist/commands/review-archive-search.js.map +1 -0
  37. package/dist/commands/review-branch-policy.d.ts +5 -0
  38. package/dist/commands/review-branch-policy.d.ts.map +1 -0
  39. package/dist/commands/review-branch-policy.js +103 -0
  40. package/dist/commands/review-branch-policy.js.map +1 -0
  41. package/dist/commands/review-custom-judge-config.d.ts +5 -0
  42. package/dist/commands/review-custom-judge-config.d.ts.map +1 -0
  43. package/dist/commands/review-custom-judge-config.js +104 -0
  44. package/dist/commands/review-custom-judge-config.js.map +1 -0
  45. package/dist/commands/review-incident-link.d.ts +5 -0
  46. package/dist/commands/review-incident-link.d.ts.map +1 -0
  47. package/dist/commands/review-incident-link.js +94 -0
  48. package/dist/commands/review-incident-link.js.map +1 -0
  49. package/dist/commands/review-integration-health.d.ts +5 -0
  50. package/dist/commands/review-integration-health.d.ts.map +1 -0
  51. package/dist/commands/review-integration-health.js +85 -0
  52. package/dist/commands/review-integration-health.js.map +1 -0
  53. package/dist/commands/review-metric-export.d.ts +5 -0
  54. package/dist/commands/review-metric-export.d.ts.map +1 -0
  55. package/dist/commands/review-metric-export.js +63 -0
  56. package/dist/commands/review-metric-export.js.map +1 -0
  57. package/dist/commands/review-notification-digest.d.ts +5 -0
  58. package/dist/commands/review-notification-digest.d.ts.map +1 -0
  59. package/dist/commands/review-notification-digest.js +65 -0
  60. package/dist/commands/review-notification-digest.js.map +1 -0
  61. package/dist/commands/review-pr-comment-gen.d.ts +5 -0
  62. package/dist/commands/review-pr-comment-gen.d.ts.map +1 -0
  63. package/dist/commands/review-pr-comment-gen.js +63 -0
  64. package/dist/commands/review-pr-comment-gen.js.map +1 -0
  65. package/dist/commands/review-quality-trend.d.ts +5 -0
  66. package/dist/commands/review-quality-trend.d.ts.map +1 -0
  67. package/dist/commands/review-quality-trend.js +58 -0
  68. package/dist/commands/review-quality-trend.js.map +1 -0
  69. package/dist/commands/review-role-assignment.d.ts +5 -0
  70. package/dist/commands/review-role-assignment.d.ts.map +1 -0
  71. package/dist/commands/review-role-assignment.js +99 -0
  72. package/dist/commands/review-role-assignment.js.map +1 -0
  73. package/dist/commands/review-tag-manager.d.ts +5 -0
  74. package/dist/commands/review-tag-manager.d.ts.map +1 -0
  75. package/dist/commands/review-tag-manager.js +129 -0
  76. package/dist/commands/review-tag-manager.js.map +1 -0
  77. package/package.json +1 -1
  78. package/server.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-incident-link.js","sourceRoot":"","sources":["../../src/commands/review-incident-link.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-integration-health — Check health of Judges integrations.
3
+ */
4
+ export declare function runReviewIntegrationHealth(argv: string[]): void;
5
+ //# sourceMappingURL=review-integration-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-integration-health.d.ts","sourceRoot":"","sources":["../../src/commands/review-integration-health.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4DH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAoD/D"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Review-integration-health — Check health of Judges integrations.
3
+ */
4
+ import { readFileSync, existsSync } from "fs";
5
+ // ─── Helpers ────────────────────────────────────────────────────────────────
6
+ function checkLocalIntegrations() {
7
+ const results = [];
8
+ const now = new Date().toISOString();
9
+ // Check .judgesrc
10
+ results.push({
11
+ name: "judgesrc",
12
+ type: "api",
13
+ status: existsSync(".judgesrc") ? "healthy" : "error",
14
+ lastCheck: now,
15
+ details: existsSync(".judgesrc") ? "Config found" : "No .judgesrc found",
16
+ });
17
+ // Check CI config
18
+ const ciFiles = [".github/workflows", ".gitlab-ci.yml", "Jenkinsfile", "azure-pipelines.yml"];
19
+ const ciFound = ciFiles.some((f) => existsSync(f));
20
+ results.push({
21
+ name: "ci-pipeline",
22
+ type: "ci",
23
+ status: ciFound ? "healthy" : "unknown",
24
+ lastCheck: now,
25
+ details: ciFound ? "CI config detected" : "No CI config found",
26
+ });
27
+ // Check webhooks config
28
+ const webhookFile = ".judges-webhooks.json";
29
+ results.push({
30
+ name: "webhooks",
31
+ type: "webhook",
32
+ status: existsSync(webhookFile) ? "healthy" : "unknown",
33
+ lastCheck: now,
34
+ details: existsSync(webhookFile) ? "Webhook config found" : "No webhooks configured",
35
+ });
36
+ return results;
37
+ }
38
+ // ─── CLI ────────────────────────────────────────────────────────────────────
39
+ export function runReviewIntegrationHealth(argv) {
40
+ const storeIdx = argv.indexOf("--store");
41
+ const storePath = storeIdx >= 0 ? argv[storeIdx + 1] : "";
42
+ const formatIdx = argv.indexOf("--format");
43
+ const format = formatIdx >= 0 ? argv[formatIdx + 1] : "table";
44
+ if (argv.includes("--help") || argv.includes("-h")) {
45
+ console.log(`
46
+ judges review-integration-health — Check integration health
47
+
48
+ Usage:
49
+ judges review-integration-health [--store <path>] [--format table|json]
50
+
51
+ Options:
52
+ --store <path> Integration store file (optional, auto-detects if omitted)
53
+ --format <fmt> Output format: table (default), json
54
+ --help, -h Show this help
55
+
56
+ Without --store, performs local auto-detection of integrations.
57
+ `);
58
+ return;
59
+ }
60
+ let integrations;
61
+ if (storePath && existsSync(storePath)) {
62
+ const store = JSON.parse(readFileSync(storePath, "utf-8"));
63
+ integrations = store.integrations;
64
+ }
65
+ else {
66
+ integrations = checkLocalIntegrations();
67
+ }
68
+ if (format === "json") {
69
+ console.log(JSON.stringify(integrations, null, 2));
70
+ return;
71
+ }
72
+ console.log("\nIntegration Health");
73
+ console.log("═".repeat(70));
74
+ console.log(` ${"Name".padEnd(18)} ${"Type".padEnd(10)} ${"Status".padEnd(12)} Details`);
75
+ console.log(" " + "─".repeat(65));
76
+ for (const i of integrations) {
77
+ const statusLabel = i.status === "healthy" ? "OK" : i.status === "degraded" ? "DEGRADED" : i.status === "error" ? "ERROR" : "UNKNOWN";
78
+ console.log(` ${i.name.padEnd(18)} ${i.type.padEnd(10)} ${statusLabel.padEnd(12)} ${i.details}`);
79
+ }
80
+ const healthy = integrations.filter((i) => i.status === "healthy").length;
81
+ const errors = integrations.filter((i) => i.status === "error").length;
82
+ console.log(`\n Healthy: ${healthy} | Errors: ${errors} | Total: ${integrations.length}`);
83
+ console.log("═".repeat(70));
84
+ }
85
+ //# sourceMappingURL=review-integration-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-integration-health.js","sourceRoot":"","sources":["../../src/commands/review-integration-health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-metric-export — Export review metrics for external dashboards.
3
+ */
4
+ export declare function runReviewMetricExport(argv: string[]): void;
5
+ //# sourceMappingURL=review-metric-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-metric-export.d.ts","sourceRoot":"","sources":["../../src/commands/review-metric-export.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA6D1D"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Review-metric-export — Export review metrics for external dashboards.
3
+ */
4
+ import { readFileSync, writeFileSync, existsSync } from "fs";
5
+ // ─── CLI ────────────────────────────────────────────────────────────────────
6
+ export function runReviewMetricExport(argv) {
7
+ const reportIdx = argv.indexOf("--report");
8
+ const reportPath = reportIdx >= 0 ? argv[reportIdx + 1] : "";
9
+ const outputIdx = argv.indexOf("--output");
10
+ const outputPath = outputIdx >= 0 ? argv[outputIdx + 1] : "";
11
+ const formatIdx = argv.indexOf("--format");
12
+ const format = formatIdx >= 0 ? argv[formatIdx + 1] : "json";
13
+ if (argv.includes("--help") || argv.includes("-h")) {
14
+ console.log(`
15
+ judges review-metric-export — Export review metrics
16
+
17
+ Usage:
18
+ judges review-metric-export --report <path> [--output <path>] [--format json|csv]
19
+
20
+ Options:
21
+ --report <path> Path to verdict JSON (or directory of verdicts)
22
+ --output <path> Output file (prints to stdout if omitted)
23
+ --format <fmt> Output format: json (default), csv
24
+ --help, -h Show this help
25
+ `);
26
+ return;
27
+ }
28
+ if (!reportPath || !existsSync(reportPath)) {
29
+ console.error("Provide --report <path> to a valid verdict JSON file.");
30
+ process.exitCode = 1;
31
+ return;
32
+ }
33
+ const verdict = JSON.parse(readFileSync(reportPath, "utf-8"));
34
+ const row = {
35
+ timestamp: verdict.timestamp,
36
+ file: reportPath,
37
+ verdict: verdict.overallVerdict,
38
+ score: verdict.overallScore,
39
+ criticalCount: verdict.criticalCount,
40
+ highCount: verdict.highCount,
41
+ totalFindings: verdict.findings.length,
42
+ judgeCount: verdict.evaluations.length,
43
+ };
44
+ let output;
45
+ if (format === "csv") {
46
+ const header = Object.keys(row).join(",");
47
+ const values = Object.values(row)
48
+ .map((v) => (typeof v === "string" ? `"${v}"` : String(v)))
49
+ .join(",");
50
+ output = `${header}\n${values}\n`;
51
+ }
52
+ else {
53
+ output = JSON.stringify(row, null, 2);
54
+ }
55
+ if (outputPath) {
56
+ writeFileSync(outputPath, output);
57
+ console.log(`Metrics exported to: ${outputPath}`);
58
+ }
59
+ else {
60
+ console.log(output);
61
+ }
62
+ }
63
+ //# sourceMappingURL=review-metric-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-metric-export.js","sourceRoot":"","sources":["../../src/commands/review-metric-export.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAgB7D,+EAA+E;AAE/E,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAE7D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;CAWf,CAAC,CAAC;QACC,OAAO;IACT,CAAC;IAED,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAoB,CAAC;IAEjF,MAAM,GAAG,GAAc;QACrB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,OAAO,CAAC,cAAc;QAC/B,KAAK,EAAE,OAAO,CAAC,YAAY;QAC3B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;QACtC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM;KACvC,CAAC;IAEF,IAAI,MAAc,CAAC;IAEnB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1D,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,GAAG,GAAG,MAAM,KAAK,MAAM,IAAI,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-notification-digest — Generate notification digests for review activity.
3
+ */
4
+ export declare function runReviewNotificationDigest(argv: string[]): void;
5
+ //# sourceMappingURL=review-notification-digest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-notification-digest.d.ts","sourceRoot":"","sources":["../../src/commands/review-notification-digest.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsBH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAuEhE"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Review-notification-digest — Generate notification digests for review activity.
3
+ */
4
+ import { readFileSync, existsSync } from "fs";
5
+ // ─── CLI ────────────────────────────────────────────────────────────────────
6
+ export function runReviewNotificationDigest(argv) {
7
+ const storeIdx = argv.indexOf("--store");
8
+ const storePath = storeIdx >= 0 ? argv[storeIdx + 1] : ".judges-notifications.json";
9
+ const formatIdx = argv.indexOf("--format");
10
+ const format = formatIdx >= 0 ? argv[formatIdx + 1] : "table";
11
+ const unreadOnly = argv.includes("--unread");
12
+ const lastN = argv.indexOf("--last");
13
+ const lastCount = lastN >= 0 ? parseInt(argv[lastN + 1], 10) : 0;
14
+ if (argv.includes("--help") || argv.includes("-h")) {
15
+ console.log(`
16
+ judges review-notification-digest — Generate notification digests
17
+
18
+ Usage:
19
+ judges review-notification-digest [--store <path>] [--unread] [--last <n>] [--format table|json]
20
+
21
+ Options:
22
+ --store <path> Notification store (default: .judges-notifications.json)
23
+ --unread Show only unread notifications
24
+ --last <n> Show only the last N notifications
25
+ --format <fmt> Output format: table (default), json
26
+ --help, -h Show this help
27
+ `);
28
+ return;
29
+ }
30
+ if (!existsSync(storePath)) {
31
+ console.log(`No notification store found at: ${storePath}`);
32
+ console.log("Notifications are generated automatically during reviews.");
33
+ return;
34
+ }
35
+ const store = JSON.parse(readFileSync(storePath, "utf-8"));
36
+ let notifications = store.notifications;
37
+ if (unreadOnly) {
38
+ notifications = notifications.filter((n) => !n.read);
39
+ }
40
+ if (lastCount > 0) {
41
+ notifications = notifications.slice(-lastCount);
42
+ }
43
+ if (format === "json") {
44
+ console.log(JSON.stringify(notifications, null, 2));
45
+ return;
46
+ }
47
+ console.log(`\nNotification Digest (${notifications.length})`);
48
+ console.log("═".repeat(80));
49
+ if (notifications.length === 0) {
50
+ console.log(" No notifications to display.");
51
+ }
52
+ else {
53
+ console.log(` ${"ID".padEnd(10)} ${"Type".padEnd(10)} ${"Severity".padEnd(10)} ${"Read".padEnd(6)} ${"Date".padEnd(14)} Message`);
54
+ console.log(" " + "─".repeat(75));
55
+ for (const n of notifications) {
56
+ const readIcon = n.read ? "Yes" : "No";
57
+ const msg = n.message.length > 25 ? n.message.slice(0, 22) + "..." : n.message;
58
+ console.log(` ${n.id.padEnd(10)} ${n.type.padEnd(10)} ${n.severity.padEnd(10)} ${readIcon.padEnd(6)} ${n.timestamp.slice(0, 10).padEnd(14)} ${msg}`);
59
+ }
60
+ }
61
+ const unread = store.notifications.filter((n) => !n.read).length;
62
+ console.log(`\n Total: ${store.notifications.length} | Unread: ${unread}`);
63
+ console.log("═".repeat(80));
64
+ }
65
+ //# sourceMappingURL=review-notification-digest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-notification-digest.js","sourceRoot":"","sources":["../../src/commands/review-notification-digest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-pr-comment-gen — Generate PR comments from review findings.
3
+ */
4
+ export declare function runReviewPrCommentGen(argv: string[]): void;
5
+ //# sourceMappingURL=review-pr-comment-gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-pr-comment-gen.d.ts","sourceRoot":"","sources":["../../src/commands/review-pr-comment-gen.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAmE1D"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Review-pr-comment-gen — Generate PR comments from review findings.
3
+ */
4
+ import { readFileSync, existsSync } from "fs";
5
+ // ─── CLI ────────────────────────────────────────────────────────────────────
6
+ export function runReviewPrCommentGen(argv) {
7
+ const reportIdx = argv.indexOf("--report");
8
+ const reportPath = reportIdx >= 0 ? argv[reportIdx + 1] : "";
9
+ const formatIdx = argv.indexOf("--format");
10
+ const format = formatIdx >= 0 ? argv[formatIdx + 1] : "markdown";
11
+ const maxFindings = argv.indexOf("--max");
12
+ const maxCount = maxFindings >= 0 ? parseInt(argv[maxFindings + 1], 10) : 10;
13
+ if (argv.includes("--help") || argv.includes("-h")) {
14
+ console.log(`
15
+ judges review-pr-comment-gen — Generate PR comments from findings
16
+
17
+ Usage:
18
+ judges review-pr-comment-gen --report <path> [--max <n>] [--format markdown|json]
19
+
20
+ Options:
21
+ --report <path> Path to verdict JSON
22
+ --max <n> Maximum findings to include (default: 10)
23
+ --format <fmt> Output format: markdown (default), json
24
+ --help, -h Show this help
25
+ `);
26
+ return;
27
+ }
28
+ if (!reportPath || !existsSync(reportPath)) {
29
+ console.error("Provide --report <path> to a valid verdict JSON file.");
30
+ process.exitCode = 1;
31
+ return;
32
+ }
33
+ const verdict = JSON.parse(readFileSync(reportPath, "utf-8"));
34
+ const findings = verdict.findings.slice(0, maxCount);
35
+ if (format === "json") {
36
+ console.log(JSON.stringify({ verdict: verdict.overallVerdict, score: verdict.overallScore, findings }, null, 2));
37
+ return;
38
+ }
39
+ const statusEmoji = verdict.overallVerdict === "pass" ? "✅" : verdict.overallVerdict === "fail" ? "❌" : "⚠️";
40
+ const lines = [];
41
+ lines.push(`## ${statusEmoji} Judges Review — ${verdict.overallVerdict.toUpperCase()}`);
42
+ lines.push("");
43
+ lines.push(`**Score:** ${verdict.overallScore}/100 | **Findings:** ${verdict.findings.length} | **Critical:** ${verdict.criticalCount} | **High:** ${verdict.highCount}`);
44
+ lines.push("");
45
+ if (findings.length > 0) {
46
+ lines.push("### Findings");
47
+ lines.push("");
48
+ lines.push("| Severity | Rule | Title | Recommendation |");
49
+ lines.push("|----------|------|-------|----------------|");
50
+ for (const f of findings) {
51
+ const rec = f.recommendation.length > 50 ? f.recommendation.slice(0, 47) + "..." : f.recommendation;
52
+ lines.push(`| ${f.severity} | ${f.ruleId} | ${f.title} | ${rec} |`);
53
+ }
54
+ }
55
+ if (verdict.findings.length > maxCount) {
56
+ lines.push("");
57
+ lines.push(`> Showing ${maxCount} of ${verdict.findings.length} findings. Run \`judges eval\` for full results.`);
58
+ }
59
+ lines.push("");
60
+ lines.push(`<sub>Generated by Judges Panel at ${verdict.timestamp}</sub>`);
61
+ console.log(lines.join("\n"));
62
+ }
63
+ //# sourceMappingURL=review-pr-comment-gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-pr-comment-gen.js","sourceRoot":"","sources":["../../src/commands/review-pr-comment-gen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-quality-trend — Track quality trends across review runs.
3
+ */
4
+ export declare function runReviewQualityTrend(argv: string[]): void;
5
+ //# sourceMappingURL=review-quality-trend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-quality-trend.d.ts","sourceRoot":"","sources":["../../src/commands/review-quality-trend.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA6D1D"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Review-quality-trend — Track quality trends across review runs.
3
+ */
4
+ import { readFileSync, existsSync } from "fs";
5
+ // ─── CLI ────────────────────────────────────────────────────────────────────
6
+ export function runReviewQualityTrend(argv) {
7
+ const storeIdx = argv.indexOf("--store");
8
+ const storePath = storeIdx >= 0 ? argv[storeIdx + 1] : ".judges-quality-trend.json";
9
+ const formatIdx = argv.indexOf("--format");
10
+ const format = formatIdx >= 0 ? argv[formatIdx + 1] : "table";
11
+ const lastN = argv.indexOf("--last");
12
+ const lastCount = lastN >= 0 ? parseInt(argv[lastN + 1], 10) : 0;
13
+ if (argv.includes("--help") || argv.includes("-h")) {
14
+ console.log(`
15
+ judges review-quality-trend — Track quality trends
16
+
17
+ Usage:
18
+ judges review-quality-trend [--store <path>] [--last <n>] [--format table|json]
19
+
20
+ Options:
21
+ --store <path> Quality store (default: .judges-quality-trend.json)
22
+ --last <n> Show only the last N snapshots
23
+ --format <fmt> Output format: table (default), json
24
+ --help, -h Show this help
25
+ `);
26
+ return;
27
+ }
28
+ if (!existsSync(storePath)) {
29
+ console.log(`No quality trend data found at: ${storePath}`);
30
+ console.log("Quality snapshots are recorded during reviews.");
31
+ return;
32
+ }
33
+ const store = JSON.parse(readFileSync(storePath, "utf-8"));
34
+ let snapshots = store.snapshots;
35
+ if (lastCount > 0) {
36
+ snapshots = snapshots.slice(-lastCount);
37
+ }
38
+ if (format === "json") {
39
+ console.log(JSON.stringify(snapshots, null, 2));
40
+ return;
41
+ }
42
+ console.log(`\nQuality Trend (${snapshots.length} snapshots)`);
43
+ console.log("═".repeat(70));
44
+ console.log(` ${"Date".padEnd(14)} ${"Score".padEnd(8)} ${"Findings".padEnd(10)} ${"Critical".padEnd(10)} High`);
45
+ console.log(" " + "─".repeat(55));
46
+ for (const s of snapshots) {
47
+ console.log(` ${s.timestamp.slice(0, 10).padEnd(14)} ${String(s.score).padEnd(8)} ${String(s.findingCount).padEnd(10)} ${String(s.criticalCount).padEnd(10)} ${s.highCount}`);
48
+ }
49
+ if (snapshots.length >= 2) {
50
+ const first = snapshots[0].score;
51
+ const last = snapshots[snapshots.length - 1].score;
52
+ const delta = last - first;
53
+ const trend = delta > 0 ? "improving" : delta < 0 ? "declining" : "stable";
54
+ console.log(`\n Trend: ${trend} (${delta >= 0 ? "+" : ""}${delta} points)`);
55
+ }
56
+ console.log("═".repeat(70));
57
+ }
58
+ //# sourceMappingURL=review-quality-trend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-quality-trend.js","sourceRoot":"","sources":["../../src/commands/review-quality-trend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-role-assignment — Manage reviewer role assignments for teams.
3
+ */
4
+ export declare function runReviewRoleAssignment(argv: string[]): void;
5
+ //# sourceMappingURL=review-role-assignment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-role-assignment.d.ts","sourceRoot":"","sources":["../../src/commands/review-role-assignment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAmG5D"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Review-role-assignment — Manage reviewer role assignments for teams.
3
+ */
4
+ import { readFileSync, writeFileSync, existsSync } from "fs";
5
+ // ─── CLI ────────────────────────────────────────────────────────────────────
6
+ export function runReviewRoleAssignment(argv) {
7
+ const storeIdx = argv.indexOf("--store");
8
+ const storePath = storeIdx >= 0 ? argv[storeIdx + 1] : ".judges-roles.json";
9
+ const formatIdx = argv.indexOf("--format");
10
+ const format = formatIdx >= 0 ? argv[formatIdx + 1] : "table";
11
+ const assignIdx = argv.indexOf("--assign");
12
+ const assignUser = assignIdx >= 0 ? argv[assignIdx + 1] : "";
13
+ const roleIdx = argv.indexOf("--role");
14
+ const roleName = roleIdx >= 0 ? argv[roleIdx + 1] : "";
15
+ const scopeIdx = argv.indexOf("--scope");
16
+ const scope = scopeIdx >= 0 ? argv[scopeIdx + 1] : "*";
17
+ const removeIdx = argv.indexOf("--remove");
18
+ const removeUser = removeIdx >= 0 ? argv[removeIdx + 1] : "";
19
+ if (argv.includes("--help") || argv.includes("-h")) {
20
+ console.log(`
21
+ judges review-role-assignment — Manage reviewer roles
22
+
23
+ Usage:
24
+ judges review-role-assignment [--store <path>] [--format table|json]
25
+ judges review-role-assignment --assign <user> --role <role> [--scope <scope>]
26
+ judges review-role-assignment --remove <user> [--store <path>]
27
+
28
+ Options:
29
+ --store <path> Role store (default: .judges-roles.json)
30
+ --assign <user> User to assign a role
31
+ --role <role> Role: viewer, reviewer, admin, owner
32
+ --scope <scope> Scope for the role (default: *)
33
+ --remove <user> Remove a user's role
34
+ --format <fmt> Output format: table (default), json
35
+ --help, -h Show this help
36
+ `);
37
+ return;
38
+ }
39
+ const store = existsSync(storePath)
40
+ ? JSON.parse(readFileSync(storePath, "utf-8"))
41
+ : { assignments: [], lastUpdated: new Date().toISOString() };
42
+ if (assignUser && roleName) {
43
+ const validRoles = ["viewer", "reviewer", "admin", "owner"];
44
+ if (!validRoles.includes(roleName)) {
45
+ console.error(`Invalid role: ${roleName}. Must be one of: ${validRoles.join(", ")}`);
46
+ process.exitCode = 1;
47
+ return;
48
+ }
49
+ const existing = store.assignments.find((a) => a.user === assignUser && a.scope === scope);
50
+ if (existing) {
51
+ existing.role = roleName;
52
+ existing.assignedAt = new Date().toISOString();
53
+ }
54
+ else {
55
+ store.assignments.push({
56
+ user: assignUser,
57
+ role: roleName,
58
+ scope,
59
+ assignedAt: new Date().toISOString(),
60
+ });
61
+ }
62
+ store.lastUpdated = new Date().toISOString();
63
+ writeFileSync(storePath, JSON.stringify(store, null, 2));
64
+ console.log(`Assigned ${roleName} role to ${assignUser} (scope: ${scope}).`);
65
+ return;
66
+ }
67
+ if (removeUser) {
68
+ const idx = store.assignments.findIndex((a) => a.user === removeUser);
69
+ if (idx < 0) {
70
+ console.error(`User not found: ${removeUser}`);
71
+ process.exitCode = 1;
72
+ return;
73
+ }
74
+ store.assignments.splice(idx, 1);
75
+ store.lastUpdated = new Date().toISOString();
76
+ writeFileSync(storePath, JSON.stringify(store, null, 2));
77
+ console.log(`Removed role for: ${removeUser}`);
78
+ return;
79
+ }
80
+ if (format === "json") {
81
+ console.log(JSON.stringify(store, null, 2));
82
+ return;
83
+ }
84
+ console.log("\nRole Assignments");
85
+ console.log("═".repeat(70));
86
+ if (store.assignments.length === 0) {
87
+ console.log(" No role assignments.");
88
+ }
89
+ else {
90
+ console.log(` ${"User".padEnd(20)} ${"Role".padEnd(12)} ${"Scope".padEnd(15)} Assigned`);
91
+ console.log(" " + "─".repeat(55));
92
+ for (const a of store.assignments) {
93
+ console.log(` ${a.user.padEnd(20)} ${a.role.padEnd(12)} ${a.scope.padEnd(15)} ${a.assignedAt.slice(0, 10)}`);
94
+ }
95
+ }
96
+ console.log(`\n Total: ${store.assignments.length}`);
97
+ console.log("═".repeat(70));
98
+ }
99
+ //# sourceMappingURL=review-role-assignment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-role-assignment.js","sourceRoot":"","sources":["../../src/commands/review-role-assignment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-tag-manager — Manage tags for reviews and findings.
3
+ */
4
+ export declare function runReviewTagManager(argv: string[]): void;
5
+ //# sourceMappingURL=review-tag-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-tag-manager.d.ts","sourceRoot":"","sources":["../../src/commands/review-tag-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAoIxD"}