@kevinrabun/judges 3.65.0 → 3.66.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 (38) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +56 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/finding-timeline.d.ts +5 -0
  6. package/dist/commands/finding-timeline.d.ts.map +1 -0
  7. package/dist/commands/finding-timeline.js +144 -0
  8. package/dist/commands/finding-timeline.js.map +1 -0
  9. package/dist/commands/fix-verify.d.ts +5 -0
  10. package/dist/commands/fix-verify.d.ts.map +1 -0
  11. package/dist/commands/fix-verify.js +124 -0
  12. package/dist/commands/fix-verify.js.map +1 -0
  13. package/dist/commands/review-comment.d.ts +5 -0
  14. package/dist/commands/review-comment.d.ts.map +1 -0
  15. package/dist/commands/review-comment.js +166 -0
  16. package/dist/commands/review-comment.js.map +1 -0
  17. package/dist/commands/review-export.d.ts +5 -0
  18. package/dist/commands/review-export.d.ts.map +1 -0
  19. package/dist/commands/review-export.js +180 -0
  20. package/dist/commands/review-export.js.map +1 -0
  21. package/dist/commands/review-schedule.d.ts +5 -0
  22. package/dist/commands/review-schedule.d.ts.map +1 -0
  23. package/dist/commands/review-schedule.js +170 -0
  24. package/dist/commands/review-schedule.js.map +1 -0
  25. package/dist/commands/review-scope.d.ts +5 -0
  26. package/dist/commands/review-scope.d.ts.map +1 -0
  27. package/dist/commands/review-scope.js +198 -0
  28. package/dist/commands/review-scope.js.map +1 -0
  29. package/dist/commands/rule-catalog.d.ts +5 -0
  30. package/dist/commands/rule-catalog.d.ts.map +1 -0
  31. package/dist/commands/rule-catalog.js +129 -0
  32. package/dist/commands/rule-catalog.js.map +1 -0
  33. package/dist/commands/setup-wizard.d.ts +5 -0
  34. package/dist/commands/setup-wizard.d.ts.map +1 -0
  35. package/dist/commands/setup-wizard.js +175 -0
  36. package/dist/commands/setup-wizard.js.map +1 -0
  37. package/package.json +1 -1
  38. package/server.json +2 -2
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Rule-catalog — Browse, search, and preview available rules with examples.
3
+ */
4
+ import { defaultRegistry } from "../judge-registry.js";
5
+ // ─── CLI ────────────────────────────────────────────────────────────────────
6
+ export function runRuleCatalog(argv) {
7
+ if (argv.includes("--help") || argv.includes("-h")) {
8
+ console.log(`
9
+ judges rule-catalog — Browse and search available rules
10
+
11
+ Usage:
12
+ judges rule-catalog List all rules
13
+ judges rule-catalog --search injection Search rules by keyword
14
+ judges rule-catalog --judge security Filter by judge
15
+ judges rule-catalog --severity critical Filter by severity
16
+ judges rule-catalog --count Show rule count only
17
+ judges rule-catalog --format json JSON output
18
+
19
+ Options:
20
+ --search <keyword> Search rules by keyword in name/description
21
+ --judge <id> Filter rules by judge ID
22
+ --severity <level> Filter by severity level
23
+ --count Show count only
24
+ --format json JSON output
25
+ --help, -h Show this help
26
+
27
+ Browse the full catalog of rules available across all judges.
28
+ `);
29
+ return;
30
+ }
31
+ const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
32
+ const search = argv.find((_a, i) => argv[i - 1] === "--search") || "";
33
+ const judgeFilter = argv.find((_a, i) => argv[i - 1] === "--judge") || "";
34
+ const sevFilter = argv.find((_a, i) => argv[i - 1] === "--severity") || "";
35
+ const countOnly = argv.includes("--count");
36
+ const judges = defaultRegistry.getJudges();
37
+ const catalog = [];
38
+ for (const judge of judges) {
39
+ // Create catalog entries from judge metadata
40
+ const entry = {
41
+ judgeId: judge.id,
42
+ ruleId: judge.id,
43
+ description: `Rules from ${judge.id} judge`,
44
+ severity: "medium",
45
+ category: categorizeJudge(judge.id),
46
+ };
47
+ // Filter by judge
48
+ if (judgeFilter && !judge.id.toLowerCase().includes(judgeFilter.toLowerCase()))
49
+ continue;
50
+ // Filter by severity
51
+ if (sevFilter && entry.severity !== sevFilter.toLowerCase())
52
+ continue;
53
+ // Search filter
54
+ if (search) {
55
+ const haystack = `${entry.judgeId} ${entry.ruleId} ${entry.description} ${entry.category}`.toLowerCase();
56
+ if (!haystack.includes(search.toLowerCase()))
57
+ continue;
58
+ }
59
+ catalog.push(entry);
60
+ }
61
+ if (countOnly) {
62
+ console.log(catalog.length);
63
+ return;
64
+ }
65
+ if (format === "json") {
66
+ console.log(JSON.stringify({ total: catalog.length, rules: catalog }, null, 2));
67
+ return;
68
+ }
69
+ console.log(`\n Rule Catalog (${catalog.length} rules)\n ═════════════════════════════`);
70
+ if (catalog.length === 0) {
71
+ console.log(" No rules match your filters.");
72
+ console.log();
73
+ return;
74
+ }
75
+ // Group by category
76
+ const byCategory = new Map();
77
+ for (const entry of catalog) {
78
+ const cat = entry.category;
79
+ const arr = byCategory.get(cat);
80
+ if (arr)
81
+ arr.push(entry);
82
+ else
83
+ byCategory.set(cat, [entry]);
84
+ }
85
+ for (const [category, entries] of byCategory) {
86
+ console.log(`\n ${category.toUpperCase()} (${entries.length})`);
87
+ console.log(" ─────────────────────────────");
88
+ for (const e of entries) {
89
+ console.log(` ${e.ruleId.padEnd(30)} ${e.description}`);
90
+ }
91
+ }
92
+ console.log();
93
+ }
94
+ function categorizeJudge(id) {
95
+ const lower = id.toLowerCase();
96
+ if (lower.includes("sql") ||
97
+ lower.includes("xss") ||
98
+ lower.includes("inject") ||
99
+ lower.includes("auth") ||
100
+ lower.includes("crypto") ||
101
+ lower.includes("secret") ||
102
+ lower.includes("security") ||
103
+ lower.includes("pii") ||
104
+ lower.includes("privilege")) {
105
+ return "security";
106
+ }
107
+ if (lower.includes("perf") ||
108
+ lower.includes("cache") ||
109
+ lower.includes("optim") ||
110
+ lower.includes("memory") ||
111
+ lower.includes("resource")) {
112
+ return "performance";
113
+ }
114
+ if (lower.includes("cost") ||
115
+ lower.includes("cloud") ||
116
+ lower.includes("infra") ||
117
+ lower.includes("deploy") ||
118
+ lower.includes("iac")) {
119
+ return "infrastructure";
120
+ }
121
+ if (lower.includes("test") || lower.includes("quality") || lower.includes("coverage")) {
122
+ return "quality";
123
+ }
124
+ if (lower.includes("api") || lower.includes("type") || lower.includes("contract")) {
125
+ return "api";
126
+ }
127
+ return "general";
128
+ }
129
+ //# sourceMappingURL=rule-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-catalog.js","sourceRoot":"","sources":["../../src/commands/rule-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Setup-wizard — Interactive guided setup for new users and teams.
3
+ */
4
+ export declare function runSetupWizard(argv: string[]): void;
5
+ //# sourceMappingURL=setup-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../../src/commands/setup-wizard.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2EH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA2HnD"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Setup-wizard — Interactive guided setup for new users and teams.
3
+ */
4
+ import { writeFileSync, existsSync, mkdirSync } from "fs";
5
+ import { join, dirname } from "path";
6
+ // ─── Presets ────────────────────────────────────────────────────────────────
7
+ const SETUP_PRESETS = {
8
+ "quick-start": {
9
+ description: "Minimal setup — evaluate files with sensible defaults",
10
+ config: { preset: "lenient", format: "text" },
11
+ },
12
+ "security-first": {
13
+ description: "Focus on security findings — strict severity thresholds",
14
+ config: { preset: "security-only", minSeverity: "medium", failOnFindings: true },
15
+ },
16
+ "ci-integration": {
17
+ description: "Optimized for CI/CD pipelines — JSON output, quality gates",
18
+ config: { preset: "strict", format: "sarif", failOnFindings: true, minScore: 70 },
19
+ },
20
+ "team-review": {
21
+ description: "Team-oriented — shared config, audit logging, PR summaries",
22
+ config: { preset: "strict", format: "markdown" },
23
+ },
24
+ compliance: {
25
+ description: "Compliance-focused — full audit trail, evidence collection",
26
+ config: { preset: "compliance", format: "sarif" },
27
+ },
28
+ };
29
+ // ─── CI Templates ───────────────────────────────────────────────────────────
30
+ function generateGitHubActions(profile) {
31
+ return `name: Judges Code Review
32
+ on:
33
+ pull_request:
34
+ branches: [main]
35
+ push:
36
+ branches: [main]
37
+
38
+ jobs:
39
+ review:
40
+ runs-on: ubuntu-latest
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+ - uses: actions/setup-node@v4
44
+ with:
45
+ node-version: '20'
46
+ - run: npx @kevinrabun/judges eval . --preset ${profile.preset} --format sarif --fail-on-findings
47
+ `;
48
+ }
49
+ function generateGitLabCI(profile) {
50
+ return `judges-review:
51
+ image: node:20
52
+ script:
53
+ - npx @kevinrabun/judges eval . --preset ${profile.preset} --format sarif --fail-on-findings
54
+ only:
55
+ - merge_requests
56
+ - main
57
+ `;
58
+ }
59
+ // ─── CLI ────────────────────────────────────────────────────────────────────
60
+ export function runSetupWizard(argv) {
61
+ if (argv.includes("--help") || argv.includes("-h")) {
62
+ console.log(`
63
+ judges setup-wizard — Guided setup for new users
64
+
65
+ Usage:
66
+ judges setup-wizard Interactive setup
67
+ judges setup-wizard --profile quick-start Use preset profile
68
+ judges setup-wizard --list-profiles List available profiles
69
+ judges setup-wizard --generate-ci github-actions Generate CI config
70
+ judges setup-wizard --init Create .judgesrc and CI config
71
+
72
+ Profiles:
73
+ quick-start Minimal setup with sensible defaults
74
+ security-first Security-focused with strict thresholds
75
+ ci-integration Optimized for CI/CD pipelines
76
+ team-review Team-oriented with shared config
77
+ compliance Full compliance with audit trails
78
+
79
+ Options:
80
+ --profile <name> Select a setup profile
81
+ --list-profiles List all available profiles
82
+ --generate-ci <type> Generate CI config (github-actions, gitlab-ci)
83
+ --init Write configuration files
84
+ --output <dir> Output directory (default: current)
85
+ --format json JSON output
86
+ --help, -h Show this help
87
+
88
+ Generates .judgesrc configuration and CI workflow files
89
+ based on your team's needs. All data stays local.
90
+ `);
91
+ return;
92
+ }
93
+ const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
94
+ if (argv.includes("--list-profiles")) {
95
+ if (format === "json") {
96
+ console.log(JSON.stringify(SETUP_PRESETS, null, 2));
97
+ return;
98
+ }
99
+ console.log("\n Setup Profiles\n ═════════════════════════════");
100
+ for (const [name, info] of Object.entries(SETUP_PRESETS)) {
101
+ console.log(` ${name.padEnd(20)} ${info.description}`);
102
+ }
103
+ console.log();
104
+ return;
105
+ }
106
+ const profileName = argv.find((_a, i) => argv[i - 1] === "--profile") || "quick-start";
107
+ const ciType = argv.find((_a, i) => argv[i - 1] === "--generate-ci");
108
+ const outputDir = argv.find((_a, i) => argv[i - 1] === "--output") || ".";
109
+ const doInit = argv.includes("--init");
110
+ const preset = SETUP_PRESETS[profileName];
111
+ if (!preset) {
112
+ console.error(`Error: Unknown profile '${profileName}'. Use --list-profiles to see options.`);
113
+ process.exitCode = 1;
114
+ return;
115
+ }
116
+ const profile = {
117
+ preset: profileName,
118
+ ciSystem: ciType || "github-actions",
119
+ languages: [],
120
+ strictness: profileName === "security-first" || profileName === "compliance" ? "strict" : "moderate",
121
+ features: [],
122
+ };
123
+ if (ciType) {
124
+ const ciConfig = ciType === "gitlab-ci" ? generateGitLabCI(profile) : generateGitHubActions(profile);
125
+ console.log(ciConfig);
126
+ return;
127
+ }
128
+ if (doInit) {
129
+ // Write .judgesrc
130
+ const rcPath = join(outputDir, ".judgesrc");
131
+ if (!existsSync(rcPath)) {
132
+ writeFileSync(rcPath, JSON.stringify(preset.config, null, 2), "utf-8");
133
+ console.log(`Created ${rcPath}`);
134
+ }
135
+ else {
136
+ console.log(`${rcPath} already exists, skipping.`);
137
+ }
138
+ // Write CI config
139
+ const ciDir = join(outputDir, ".github", "workflows");
140
+ const ciPath = join(ciDir, "judges-review.yml");
141
+ if (!existsSync(ciPath)) {
142
+ mkdirSync(dirname(ciPath), { recursive: true });
143
+ writeFileSync(ciPath, generateGitHubActions(profile), "utf-8");
144
+ console.log(`Created ${ciPath}`);
145
+ }
146
+ else {
147
+ console.log(`${ciPath} already exists, skipping.`);
148
+ }
149
+ console.log("\nSetup complete! Next steps:");
150
+ console.log(" 1. Run: npx @kevinrabun/judges eval <file>");
151
+ console.log(" 2. Customize .judgesrc for your needs");
152
+ console.log(" 3. Commit the CI workflow for automated reviews");
153
+ return;
154
+ }
155
+ // Show setup summary
156
+ if (format === "json") {
157
+ console.log(JSON.stringify({ profile: profileName, ...preset }, null, 2));
158
+ return;
159
+ }
160
+ console.log(`\n Setup Wizard — ${profileName}\n ═════════════════════════════`);
161
+ console.log(` Profile: ${profileName}`);
162
+ console.log(` Description: ${preset.description}`);
163
+ console.log(` Configuration:`);
164
+ for (const [key, value] of Object.entries(preset.config)) {
165
+ console.log(` ${key}: ${value}`);
166
+ }
167
+ console.log();
168
+ console.log(" To apply this configuration:");
169
+ console.log(` judges setup-wizard --profile ${profileName} --init`);
170
+ console.log();
171
+ console.log(" To generate CI config:");
172
+ console.log(` judges setup-wizard --profile ${profileName} --generate-ci github-actions`);
173
+ console.log();
174
+ }
175
+ //# sourceMappingURL=setup-wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../src/commands/setup-wizard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kevinrabun/judges",
3
- "version": "3.65.0",
3
+ "version": "3.66.0",
4
4
  "description": "45 specialized judges that evaluate AI-generated code for security, cost, and quality.",
5
5
  "mcpName": "io.github.KevinRabun/judges",
6
6
  "type": "module",
package/server.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "url": "https://github.com/kevinrabun/judges",
8
8
  "source": "github"
9
9
  },
10
- "version": "3.65.0",
10
+ "version": "3.66.0",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "@kevinrabun/judges",
15
- "version": "3.65.0",
15
+ "version": "3.66.0",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  }