@kevinrabun/judges 3.40.0 → 3.42.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 (94) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +133 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/auto-calibrate.d.ts +15 -0
  6. package/dist/commands/auto-calibrate.d.ts.map +1 -0
  7. package/dist/commands/auto-calibrate.js +107 -0
  8. package/dist/commands/auto-calibrate.js.map +1 -0
  9. package/dist/commands/auto-triage.d.ts +32 -0
  10. package/dist/commands/auto-triage.d.ts.map +1 -0
  11. package/dist/commands/auto-triage.js +126 -0
  12. package/dist/commands/auto-triage.js.map +1 -0
  13. package/dist/commands/config-migrate.d.ts +44 -0
  14. package/dist/commands/config-migrate.d.ts.map +1 -0
  15. package/dist/commands/config-migrate.js +241 -0
  16. package/dist/commands/config-migrate.js.map +1 -0
  17. package/dist/commands/coverage-map.d.ts +23 -0
  18. package/dist/commands/coverage-map.d.ts.map +1 -0
  19. package/dist/commands/coverage-map.js +223 -0
  20. package/dist/commands/coverage-map.js.map +1 -0
  21. package/dist/commands/dedup-report.d.ts +13 -0
  22. package/dist/commands/dedup-report.d.ts.map +1 -0
  23. package/dist/commands/dedup-report.js +138 -0
  24. package/dist/commands/dedup-report.js.map +1 -0
  25. package/dist/commands/dep-audit.d.ts +53 -0
  26. package/dist/commands/dep-audit.d.ts.map +1 -0
  27. package/dist/commands/dep-audit.js +278 -0
  28. package/dist/commands/dep-audit.js.map +1 -0
  29. package/dist/commands/deprecated.d.ts +48 -0
  30. package/dist/commands/deprecated.d.ts.map +1 -0
  31. package/dist/commands/deprecated.js +202 -0
  32. package/dist/commands/deprecated.js.map +1 -0
  33. package/dist/commands/diff-only.d.ts +34 -0
  34. package/dist/commands/diff-only.d.ts.map +1 -0
  35. package/dist/commands/diff-only.js +152 -0
  36. package/dist/commands/diff-only.js.map +1 -0
  37. package/dist/commands/fix-pr.d.ts +23 -0
  38. package/dist/commands/fix-pr.d.ts.map +1 -0
  39. package/dist/commands/fix-pr.js +323 -0
  40. package/dist/commands/fix-pr.js.map +1 -0
  41. package/dist/commands/group-findings.d.ts +23 -0
  42. package/dist/commands/group-findings.d.ts.map +1 -0
  43. package/dist/commands/group-findings.js +155 -0
  44. package/dist/commands/group-findings.js.map +1 -0
  45. package/dist/commands/interactive-fix.d.ts +23 -0
  46. package/dist/commands/interactive-fix.d.ts.map +1 -0
  47. package/dist/commands/interactive-fix.js +140 -0
  48. package/dist/commands/interactive-fix.js.map +1 -0
  49. package/dist/commands/monorepo.d.ts +38 -0
  50. package/dist/commands/monorepo.d.ts.map +1 -0
  51. package/dist/commands/monorepo.js +233 -0
  52. package/dist/commands/monorepo.js.map +1 -0
  53. package/dist/commands/notify.d.ts +79 -0
  54. package/dist/commands/notify.d.ts.map +1 -0
  55. package/dist/commands/notify.js +325 -0
  56. package/dist/commands/notify.js.map +1 -0
  57. package/dist/commands/pr-summary.d.ts +26 -0
  58. package/dist/commands/pr-summary.d.ts.map +1 -0
  59. package/dist/commands/pr-summary.js +188 -0
  60. package/dist/commands/pr-summary.js.map +1 -0
  61. package/dist/commands/profile.d.ts +38 -0
  62. package/dist/commands/profile.d.ts.map +1 -0
  63. package/dist/commands/profile.js +102 -0
  64. package/dist/commands/profile.js.map +1 -0
  65. package/dist/commands/quality-gate.d.ts +70 -0
  66. package/dist/commands/quality-gate.d.ts.map +1 -0
  67. package/dist/commands/quality-gate.js +264 -0
  68. package/dist/commands/quality-gate.js.map +1 -0
  69. package/dist/commands/smart-select.d.ts +27 -0
  70. package/dist/commands/smart-select.d.ts.map +1 -0
  71. package/dist/commands/smart-select.js +346 -0
  72. package/dist/commands/smart-select.js.map +1 -0
  73. package/dist/commands/upload.d.ts +14 -0
  74. package/dist/commands/upload.d.ts.map +1 -0
  75. package/dist/commands/upload.js +173 -0
  76. package/dist/commands/upload.js.map +1 -0
  77. package/dist/commands/validate-config.d.ts +17 -0
  78. package/dist/commands/validate-config.d.ts.map +1 -0
  79. package/dist/commands/validate-config.js +268 -0
  80. package/dist/commands/validate-config.js.map +1 -0
  81. package/dist/commands/warm-cache.d.ts +31 -0
  82. package/dist/commands/warm-cache.d.ts.map +1 -0
  83. package/dist/commands/warm-cache.js +166 -0
  84. package/dist/commands/warm-cache.js.map +1 -0
  85. package/dist/evaluators/framework-rules.d.ts +59 -0
  86. package/dist/evaluators/framework-rules.d.ts.map +1 -0
  87. package/dist/evaluators/framework-rules.js +292 -0
  88. package/dist/evaluators/framework-rules.js.map +1 -0
  89. package/dist/parallel.d.ts +53 -0
  90. package/dist/parallel.d.ts.map +1 -0
  91. package/dist/parallel.js +170 -0
  92. package/dist/parallel.js.map +1 -0
  93. package/package.json +1 -1
  94. package/server.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-summary.js","sourceRoot":"","sources":["../../src/commands/pr-summary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Performance profiling — track evaluation time per judge/evaluator.
3
+ *
4
+ * Wraps tribunal evaluation and reports timing data for each judge,
5
+ * helping identify bottlenecks and optimize CI pipeline duration.
6
+ */
7
+ export interface JudgeTiming {
8
+ judgeId: string;
9
+ durationMs: number;
10
+ findingCount: number;
11
+ }
12
+ export interface ProfilingReport {
13
+ totalMs: number;
14
+ judges: JudgeTiming[];
15
+ slowest: string;
16
+ fastest: string;
17
+ avgMs: number;
18
+ }
19
+ /**
20
+ * Create a profiling wrapper around a function.
21
+ */
22
+ export declare function profileFn<T>(fn: () => T): {
23
+ result: T;
24
+ durationMs: number;
25
+ };
26
+ /**
27
+ * Create a profiling wrapper around an async function.
28
+ */
29
+ export declare function profileAsync<T>(fn: () => Promise<T>): Promise<{
30
+ result: T;
31
+ durationMs: number;
32
+ }>;
33
+ /**
34
+ * Build a profiling report from timing data collected during evaluation.
35
+ */
36
+ export declare function buildProfilingReport(timings: JudgeTiming[]): ProfilingReport;
37
+ export declare function runProfile(argv: string[]): void;
38
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAI3E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAItG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,eAAe,CAe5E;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAgD/C"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Performance profiling — track evaluation time per judge/evaluator.
3
+ *
4
+ * Wraps tribunal evaluation and reports timing data for each judge,
5
+ * helping identify bottlenecks and optimize CI pipeline duration.
6
+ */
7
+ // ─── Profiling ──────────────────────────────────────────────────────────────
8
+ /**
9
+ * Create a profiling wrapper around a function.
10
+ */
11
+ export function profileFn(fn) {
12
+ const start = performance.now();
13
+ const result = fn();
14
+ return { result, durationMs: Math.round(performance.now() - start) };
15
+ }
16
+ /**
17
+ * Create a profiling wrapper around an async function.
18
+ */
19
+ export async function profileAsync(fn) {
20
+ const start = performance.now();
21
+ const result = await fn();
22
+ return { result, durationMs: Math.round(performance.now() - start) };
23
+ }
24
+ /**
25
+ * Build a profiling report from timing data collected during evaluation.
26
+ */
27
+ export function buildProfilingReport(timings) {
28
+ if (timings.length === 0) {
29
+ return { totalMs: 0, judges: [], slowest: "N/A", fastest: "N/A", avgMs: 0 };
30
+ }
31
+ const sorted = [...timings].sort((a, b) => b.durationMs - a.durationMs);
32
+ const totalMs = sorted.reduce((sum, t) => sum + t.durationMs, 0);
33
+ return {
34
+ totalMs,
35
+ judges: sorted,
36
+ slowest: sorted[0].judgeId,
37
+ fastest: sorted[sorted.length - 1].judgeId,
38
+ avgMs: Math.round(totalMs / sorted.length),
39
+ };
40
+ }
41
+ // ─── CLI ────────────────────────────────────────────────────────────────────
42
+ export function runProfile(argv) {
43
+ if (argv.includes("--help") || argv.includes("-h")) {
44
+ console.log(`
45
+ judges profile — Performance profiling for judge evaluations
46
+
47
+ Usage:
48
+ judges profile <file> Profile evaluation of a file
49
+ judges profile --report <path> Display a saved profiling report
50
+
51
+ Options:
52
+ --format json JSON output
53
+ --threshold <ms> Highlight judges slower than threshold (default: 500)
54
+ --help, -h Show this help
55
+
56
+ Note: This command wraps the normal evaluation pipeline with timing
57
+ instrumentation. Each judge's execution time is measured individually.
58
+ `);
59
+ return;
60
+ }
61
+ const { readFileSync, existsSync } = require("fs");
62
+ const reportPath = argv.find((_a, i) => argv[i - 1] === "--report");
63
+ const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
64
+ const thresholdStr = argv.find((_a, i) => argv[i - 1] === "--threshold");
65
+ const threshold = thresholdStr ? parseInt(thresholdStr, 10) : 500;
66
+ if (reportPath && existsSync(reportPath)) {
67
+ const report = JSON.parse(readFileSync(reportPath, "utf-8"));
68
+ printReport(report, format, threshold);
69
+ return;
70
+ }
71
+ // Without a saved report, show instructions
72
+ console.log(`
73
+ Profiling requires running an evaluation first.
74
+
75
+ Run with JUDGES_PROFILE=1 to enable profiling during eval:
76
+
77
+ JUDGES_PROFILE=1 judges eval --file src/app.ts --format json > results.json
78
+
79
+ Then view the profiling data:
80
+
81
+ judges profile --report .judges-profile.json
82
+
83
+ The profiling data is saved to .judges-profile.json automatically
84
+ when JUDGES_PROFILE=1 is set.
85
+ `);
86
+ }
87
+ function printReport(report, format, threshold) {
88
+ if (format === "json") {
89
+ console.log(JSON.stringify(report, null, 2));
90
+ return;
91
+ }
92
+ console.log(`\n ⏱️ Judges Evaluation Profile\n`);
93
+ console.log(` Total: ${report.totalMs}ms | Avg: ${report.avgMs}ms | Judges: ${report.judges.length}\n`);
94
+ const maxLen = Math.max(...report.judges.map((j) => j.judgeId.length));
95
+ for (const j of report.judges) {
96
+ const bar = "█".repeat(Math.max(1, Math.round((j.durationMs / report.totalMs) * 40)));
97
+ const warn = j.durationMs > threshold ? " ⚠️ SLOW" : "";
98
+ console.log(` ${j.judgeId.padEnd(maxLen)} ${String(j.durationMs).padStart(6)}ms ${bar} (${j.findingCount} findings)${warn}`);
99
+ }
100
+ console.log(`\n Slowest: ${report.slowest} | Fastest: ${report.fastest}\n`);
101
+ }
102
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * `judges quality-gate` — Configurable composite quality gates.
3
+ *
4
+ * Defines and evaluates multi-dimensional quality gates for CI pipelines.
5
+ * Goes beyond simple severity counts — supports score thresholds, specific
6
+ * rule requirements, trend-based gates, and custom composite conditions.
7
+ *
8
+ * Usage:
9
+ * judges quality-gate --file src/app.ts # Evaluate default gate
10
+ * judges quality-gate --file src/app.ts --gate strict # Named gate definition
11
+ * judges quality-gate --file src/app.ts --json # JSON output
12
+ *
13
+ * Configuration in .judgesrc:
14
+ * ```json
15
+ * {
16
+ * "qualityGates": {
17
+ * "default": {
18
+ * "maxFindings": { "critical": 0, "high": 2 },
19
+ * "minScore": 70,
20
+ * "requiredJudges": ["cybersecurity", "data-security"],
21
+ * "maxFpRate": 0.3
22
+ * },
23
+ * "strict": {
24
+ * "maxFindings": { "critical": 0, "high": 0, "medium": 5 },
25
+ * "minScore": 85,
26
+ * "requiredJudges": ["cybersecurity", "data-security", "authentication"]
27
+ * }
28
+ * }
29
+ * }
30
+ * ```
31
+ */
32
+ import type { Severity, TribunalVerdict } from "../types.js";
33
+ export interface QualityGateDefinition {
34
+ /** Maximum allowed findings by severity — exceeding any triggers failure */
35
+ maxFindings?: Partial<Record<Severity, number>>;
36
+ /** Minimum aggregated score (0-100) */
37
+ minScore?: number;
38
+ /** Judge IDs that must participate in evaluation */
39
+ requiredJudges?: string[];
40
+ /** Maximum false-positive rate allowed (0-1) — requires feedback data */
41
+ maxFpRate?: number;
42
+ /** Required rules that must not be violated — listing a rule ID means zero violations */
43
+ blockerRules?: string[];
44
+ /** Minimum percentage of findings that must have auto-fix patches */
45
+ minFixRate?: number;
46
+ /** Minimum average confidence score for findings (0-1) */
47
+ minConfidence?: number;
48
+ }
49
+ export interface QualityGateResult {
50
+ /** Overall pass/fail */
51
+ passed: boolean;
52
+ /** Named gate that was evaluated */
53
+ gateName: string;
54
+ /** Individual check results */
55
+ checks: QualityGateCheck[];
56
+ /** Verdict summary */
57
+ summary: string;
58
+ }
59
+ export interface QualityGateCheck {
60
+ /** Check name */
61
+ name: string;
62
+ /** Pass/fail */
63
+ passed: boolean;
64
+ /** Descriptive message */
65
+ message: string;
66
+ }
67
+ export declare function evaluateQualityGate(gate: QualityGateDefinition, gateName: string, verdict: TribunalVerdict, fpRateByRule?: Map<string, number>): QualityGateResult;
68
+ export declare function parseQualityGateConfig(obj: Record<string, unknown>): Record<string, QualityGateDefinition> | undefined;
69
+ export declare function runQualityGate(argv: string[]): void;
70
+ //# sourceMappingURL=quality-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-gate.d.ts","sourceRoot":"","sources":["../../src/commands/quality-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI7D,MAAM,WAAW,qBAAqB;IACpC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,EACxB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,iBAAiB,CAsGnB;AAID,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,SAAS,CA2BnD;AAiBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAgGnD"}
@@ -0,0 +1,264 @@
1
+ /**
2
+ * `judges quality-gate` — Configurable composite quality gates.
3
+ *
4
+ * Defines and evaluates multi-dimensional quality gates for CI pipelines.
5
+ * Goes beyond simple severity counts — supports score thresholds, specific
6
+ * rule requirements, trend-based gates, and custom composite conditions.
7
+ *
8
+ * Usage:
9
+ * judges quality-gate --file src/app.ts # Evaluate default gate
10
+ * judges quality-gate --file src/app.ts --gate strict # Named gate definition
11
+ * judges quality-gate --file src/app.ts --json # JSON output
12
+ *
13
+ * Configuration in .judgesrc:
14
+ * ```json
15
+ * {
16
+ * "qualityGates": {
17
+ * "default": {
18
+ * "maxFindings": { "critical": 0, "high": 2 },
19
+ * "minScore": 70,
20
+ * "requiredJudges": ["cybersecurity", "data-security"],
21
+ * "maxFpRate": 0.3
22
+ * },
23
+ * "strict": {
24
+ * "maxFindings": { "critical": 0, "high": 0, "medium": 5 },
25
+ * "minScore": 85,
26
+ * "requiredJudges": ["cybersecurity", "data-security", "authentication"]
27
+ * }
28
+ * }
29
+ * }
30
+ * ```
31
+ */
32
+ import { existsSync, readFileSync } from "fs";
33
+ import { extname } from "path";
34
+ import { evaluateWithTribunal } from "../evaluators/index.js";
35
+ // ─── Gate Evaluation ────────────────────────────────────────────────────────
36
+ const SEVERITY_LEVELS = ["critical", "high", "medium", "low", "info"];
37
+ export function evaluateQualityGate(gate, gateName, verdict, fpRateByRule) {
38
+ const checks = [];
39
+ // Check max findings by severity
40
+ if (gate.maxFindings) {
41
+ const counts = { critical: 0, high: 0, medium: 0, low: 0, info: 0 };
42
+ for (const f of verdict.findings) {
43
+ counts[f.severity] = (counts[f.severity] || 0) + 1;
44
+ }
45
+ for (const sev of SEVERITY_LEVELS) {
46
+ const max = gate.maxFindings[sev];
47
+ if (max !== undefined) {
48
+ const actual = counts[sev];
49
+ checks.push({
50
+ name: `max-${sev}`,
51
+ passed: actual <= max,
52
+ message: `${sev} findings: ${actual}/${max} allowed`,
53
+ });
54
+ }
55
+ }
56
+ }
57
+ // Check minimum score
58
+ if (gate.minScore !== undefined) {
59
+ checks.push({
60
+ name: "min-score",
61
+ passed: verdict.overallScore >= gate.minScore,
62
+ message: `Score: ${verdict.overallScore}/${gate.minScore} required`,
63
+ });
64
+ }
65
+ // Check required judges participated
66
+ if (gate.requiredJudges) {
67
+ const participatingJudges = new Set(verdict.evaluations.map((e) => e.judgeId));
68
+ for (const required of gate.requiredJudges) {
69
+ checks.push({
70
+ name: `required-judge-${required}`,
71
+ passed: participatingJudges.has(required),
72
+ message: `Judge "${required}": ${participatingJudges.has(required) ? "participated" : "MISSING"}`,
73
+ });
74
+ }
75
+ }
76
+ // Check blocker rules
77
+ if (gate.blockerRules) {
78
+ const violatedRules = new Set(verdict.findings.map((f) => f.ruleId));
79
+ for (const rule of gate.blockerRules) {
80
+ const violated = violatedRules.has(rule);
81
+ checks.push({
82
+ name: `blocker-${rule}`,
83
+ passed: !violated,
84
+ message: `Blocker rule ${rule}: ${violated ? "VIOLATED" : "clear"}`,
85
+ });
86
+ }
87
+ }
88
+ // Check max FP rate
89
+ if (gate.maxFpRate !== undefined && fpRateByRule) {
90
+ const avgFpRate = fpRateByRule.size > 0 ? Array.from(fpRateByRule.values()).reduce((sum, r) => sum + r, 0) / fpRateByRule.size : 0;
91
+ checks.push({
92
+ name: "max-fp-rate",
93
+ passed: avgFpRate <= gate.maxFpRate,
94
+ message: `FP rate: ${(avgFpRate * 100).toFixed(1)}%/${(gate.maxFpRate * 100).toFixed(1)}% allowed`,
95
+ });
96
+ }
97
+ // Check min fix rate
98
+ if (gate.minFixRate !== undefined) {
99
+ const fixable = verdict.findings.filter((f) => f.patch).length;
100
+ const total = verdict.findings.length;
101
+ const fixRate = total > 0 ? fixable / total : 1;
102
+ checks.push({
103
+ name: "min-fix-rate",
104
+ passed: fixRate >= gate.minFixRate,
105
+ message: `Fix rate: ${(fixRate * 100).toFixed(1)}%/${(gate.minFixRate * 100).toFixed(1)}% required`,
106
+ });
107
+ }
108
+ // Check min confidence
109
+ if (gate.minConfidence !== undefined) {
110
+ const confidences = verdict.findings.filter((f) => f.confidence !== undefined).map((f) => f.confidence);
111
+ const avgConf = confidences.length > 0 ? confidences.reduce((s, c) => s + c, 0) / confidences.length : 1;
112
+ checks.push({
113
+ name: "min-confidence",
114
+ passed: avgConf >= gate.minConfidence,
115
+ message: `Avg confidence: ${(avgConf * 100).toFixed(1)}%/${(gate.minConfidence * 100).toFixed(1)}% required`,
116
+ });
117
+ }
118
+ const passed = checks.every((c) => c.passed);
119
+ const failed = checks.filter((c) => !c.passed);
120
+ return {
121
+ passed,
122
+ gateName,
123
+ checks,
124
+ summary: passed
125
+ ? `Quality gate "${gateName}" PASSED — all ${checks.length} check(s) passed`
126
+ : `Quality gate "${gateName}" FAILED — ${failed.length}/${checks.length} check(s) failed`,
127
+ };
128
+ }
129
+ // ─── Config Parsing ─────────────────────────────────────────────────────────
130
+ export function parseQualityGateConfig(obj) {
131
+ if (!obj.qualityGates)
132
+ return undefined;
133
+ const raw = obj.qualityGates;
134
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw))
135
+ return undefined;
136
+ const gates = {};
137
+ for (const [name, def] of Object.entries(raw)) {
138
+ if (typeof def !== "object" || def === null)
139
+ continue;
140
+ const d = def;
141
+ const gate = {};
142
+ if (d.maxFindings && typeof d.maxFindings === "object") {
143
+ gate.maxFindings = d.maxFindings;
144
+ }
145
+ if (typeof d.minScore === "number")
146
+ gate.minScore = d.minScore;
147
+ if (Array.isArray(d.requiredJudges))
148
+ gate.requiredJudges = d.requiredJudges;
149
+ if (typeof d.maxFpRate === "number")
150
+ gate.maxFpRate = d.maxFpRate;
151
+ if (Array.isArray(d.blockerRules))
152
+ gate.blockerRules = d.blockerRules;
153
+ if (typeof d.minFixRate === "number")
154
+ gate.minFixRate = d.minFixRate;
155
+ if (typeof d.minConfidence === "number")
156
+ gate.minConfidence = d.minConfidence;
157
+ gates[name] = gate;
158
+ }
159
+ return Object.keys(gates).length > 0 ? gates : undefined;
160
+ }
161
+ // ─── CLI Runner ─────────────────────────────────────────────────────────────
162
+ const EXT_TO_LANG = {
163
+ ".ts": "typescript",
164
+ ".tsx": "typescript",
165
+ ".js": "javascript",
166
+ ".jsx": "javascript",
167
+ ".py": "python",
168
+ ".rs": "rust",
169
+ ".go": "go",
170
+ ".java": "java",
171
+ ".cs": "csharp",
172
+ ".cpp": "cpp",
173
+ };
174
+ export function runQualityGate(argv) {
175
+ if (argv.includes("--help") || argv.includes("-h")) {
176
+ console.log(`
177
+ judges quality-gate — Evaluate configurable quality gates
178
+
179
+ Usage:
180
+ judges quality-gate --file <path> Evaluate default gate
181
+ judges quality-gate --file <path> --gate <name> Use a named gate definition
182
+ judges quality-gate --json JSON output
183
+
184
+ Configuration (.judgesrc):
185
+ "qualityGates": {
186
+ "default": {
187
+ "maxFindings": { "critical": 0, "high": 2 },
188
+ "minScore": 70,
189
+ "requiredJudges": ["cybersecurity"],
190
+ "blockerRules": ["SEC-001", "AUTH-001"]
191
+ }
192
+ }
193
+
194
+ Options:
195
+ --file, -f <path> File to evaluate
196
+ --gate <name> Gate name (default: "default")
197
+ --json JSON output
198
+ --help, -h Show this help
199
+ `);
200
+ return;
201
+ }
202
+ const file = argv.find((_a, i) => argv[i - 1] === "--file" || argv[i - 1] === "-f");
203
+ const gateName = argv.find((_a, i) => argv[i - 1] === "--gate") || "default";
204
+ const jsonFormat = argv.includes("--json");
205
+ if (!file) {
206
+ console.error("Error: --file is required.");
207
+ process.exit(1);
208
+ }
209
+ if (!existsSync(file)) {
210
+ console.error(`Error: File not found: ${file}`);
211
+ process.exit(1);
212
+ }
213
+ // Load quality gate config from .judgesrc
214
+ let gates;
215
+ for (const name of [".judgesrc", ".judgesrc.json"]) {
216
+ if (existsSync(name)) {
217
+ try {
218
+ const raw = JSON.parse(readFileSync(name, "utf-8"));
219
+ gates = parseQualityGateConfig(raw);
220
+ }
221
+ catch {
222
+ // Skip invalid config
223
+ }
224
+ break;
225
+ }
226
+ }
227
+ // Use a sensible default gate if none configured
228
+ const gate = gates?.[gateName] ?? {
229
+ maxFindings: { critical: 0, high: 3 },
230
+ minScore: 60,
231
+ };
232
+ // Evaluate
233
+ const code = readFileSync(file, "utf-8");
234
+ const lang = EXT_TO_LANG[extname(file)] || "typescript";
235
+ const verdict = evaluateWithTribunal(code, lang);
236
+ // Load FP rates if available
237
+ let fpRateByRule;
238
+ try {
239
+ const { loadFeedbackStore, getFpRateByRule: getFpRate } = require("./feedback.js");
240
+ const store = loadFeedbackStore();
241
+ const rates = getFpRate(store);
242
+ fpRateByRule = rates instanceof Map ? rates : new Map(Object.entries(rates));
243
+ }
244
+ catch {
245
+ // Feedback data not available
246
+ }
247
+ const result = evaluateQualityGate(gate, gateName, verdict, fpRateByRule);
248
+ if (jsonFormat) {
249
+ console.log(JSON.stringify(result, null, 2));
250
+ }
251
+ else {
252
+ const icon = result.passed ? "✅" : "❌";
253
+ console.log(`\n ${icon} ${result.summary}\n`);
254
+ for (const check of result.checks) {
255
+ const checkIcon = check.passed ? " ✓" : " ✗";
256
+ console.log(` ${checkIcon} ${check.message}`);
257
+ }
258
+ console.log("");
259
+ }
260
+ if (!result.passed) {
261
+ process.exit(1);
262
+ }
263
+ }
264
+ //# sourceMappingURL=quality-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-gate.js","sourceRoot":"","sources":["../../src/commands/quality-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Smart judge selection — auto-select relevant judges based on file content.
3
+ *
4
+ * Avoids running irrelevant judges (e.g., SQL judge on .tsx files,
5
+ * IaC judge on .py files) to improve evaluation speed and reduce noise.
6
+ *
7
+ * Used internally by the evaluation pipeline when `smartSelect: true`.
8
+ */
9
+ export interface JudgeRelevance {
10
+ judgeId: string;
11
+ relevant: boolean;
12
+ reason: string;
13
+ }
14
+ /**
15
+ * Select relevant judges for a given file based on its language and content.
16
+ * Returns the list of judge IDs that should be run.
17
+ */
18
+ export declare function selectJudgesForFile(language: string, code: string, availableJudges?: string[]): JudgeRelevance[];
19
+ /**
20
+ * Get just the relevant judge IDs for a file.
21
+ */
22
+ export declare function getRelevantJudges(language: string, code: string, availableJudges?: string[]): string[];
23
+ /**
24
+ * CLI: Show judge selection for a file.
25
+ */
26
+ export declare function runSmartSelect(argv: string[]): void;
27
+ //# sourceMappingURL=smart-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-select.d.ts","sourceRoot":"","sources":["../../src/commands/smart-select.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AA8ND;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAiChH;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAItG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAkGnD"}