@kevinrabun/judges 3.45.0 → 3.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +112 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/adoption-report.d.ts +8 -0
  6. package/dist/commands/adoption-report.d.ts.map +1 -0
  7. package/dist/commands/adoption-report.js +219 -0
  8. package/dist/commands/adoption-report.js.map +1 -0
  9. package/dist/commands/ai-model-trust.d.ts +17 -0
  10. package/dist/commands/ai-model-trust.d.ts.map +1 -0
  11. package/dist/commands/ai-model-trust.js +235 -0
  12. package/dist/commands/ai-model-trust.js.map +1 -0
  13. package/dist/commands/ai-prompt-audit.d.ts +23 -0
  14. package/dist/commands/ai-prompt-audit.d.ts.map +1 -0
  15. package/dist/commands/ai-prompt-audit.js +255 -0
  16. package/dist/commands/ai-prompt-audit.js.map +1 -0
  17. package/dist/commands/audit-bundle.d.ts +29 -0
  18. package/dist/commands/audit-bundle.d.ts.map +1 -0
  19. package/dist/commands/audit-bundle.js +235 -0
  20. package/dist/commands/audit-bundle.js.map +1 -0
  21. package/dist/commands/code-owner-suggest.d.ts +17 -0
  22. package/dist/commands/code-owner-suggest.d.ts.map +1 -0
  23. package/dist/commands/code-owner-suggest.js +215 -0
  24. package/dist/commands/code-owner-suggest.js.map +1 -0
  25. package/dist/commands/config-drift.d.ts +25 -0
  26. package/dist/commands/config-drift.d.ts.map +1 -0
  27. package/dist/commands/config-drift.js +214 -0
  28. package/dist/commands/config-drift.js.map +1 -0
  29. package/dist/commands/cost-forecast.d.ts +19 -0
  30. package/dist/commands/cost-forecast.d.ts.map +1 -0
  31. package/dist/commands/cost-forecast.js +194 -0
  32. package/dist/commands/cost-forecast.js.map +1 -0
  33. package/dist/commands/dev-score.d.ts +37 -0
  34. package/dist/commands/dev-score.d.ts.map +1 -0
  35. package/dist/commands/dev-score.js +204 -0
  36. package/dist/commands/dev-score.js.map +1 -0
  37. package/dist/commands/generate.d.ts +8 -0
  38. package/dist/commands/generate.d.ts.map +1 -0
  39. package/dist/commands/generate.js +404 -0
  40. package/dist/commands/generate.js.map +1 -0
  41. package/dist/commands/learn.d.ts +27 -0
  42. package/dist/commands/learn.d.ts.map +1 -0
  43. package/dist/commands/learn.js +289 -0
  44. package/dist/commands/learn.js.map +1 -0
  45. package/dist/commands/model-risk.d.ts +28 -0
  46. package/dist/commands/model-risk.d.ts.map +1 -0
  47. package/dist/commands/model-risk.js +221 -0
  48. package/dist/commands/model-risk.js.map +1 -0
  49. package/dist/commands/pr-quality-gate.d.ts +29 -0
  50. package/dist/commands/pr-quality-gate.d.ts.map +1 -0
  51. package/dist/commands/pr-quality-gate.js +208 -0
  52. package/dist/commands/pr-quality-gate.js.map +1 -0
  53. package/dist/commands/reg-watch.d.ts +21 -0
  54. package/dist/commands/reg-watch.d.ts.map +1 -0
  55. package/dist/commands/reg-watch.js +220 -0
  56. package/dist/commands/reg-watch.js.map +1 -0
  57. package/dist/commands/retro.d.ts +23 -0
  58. package/dist/commands/retro.d.ts.map +1 -0
  59. package/dist/commands/retro.js +217 -0
  60. package/dist/commands/retro.js.map +1 -0
  61. package/dist/commands/team-leaderboard.d.ts +25 -0
  62. package/dist/commands/team-leaderboard.d.ts.map +1 -0
  63. package/dist/commands/team-leaderboard.js +228 -0
  64. package/dist/commands/team-leaderboard.js.map +1 -0
  65. package/dist/commands/team-rules-sync.d.ts +8 -0
  66. package/dist/commands/team-rules-sync.d.ts.map +1 -0
  67. package/dist/commands/team-rules-sync.js +251 -0
  68. package/dist/commands/team-rules-sync.js.map +1 -0
  69. package/package.json +1 -1
  70. package/server.json +2 -2
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Team rules sync — fast onboarding by pulling org rules from a
3
+ * shared config file or Git repo's .judgesrc.
4
+ *
5
+ * All config is read-only; stored locally only.
6
+ */
7
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync } from "fs";
8
+ import { join, basename } from "path";
9
+ const SYNC_DIR = ".judges-team-sync";
10
+ // ─── Built-in team templates ────────────────────────────────────────────────
11
+ const TEAM_TEMPLATES = {
12
+ "security-team": {
13
+ name: "Security Team",
14
+ preset: "strict,security-only",
15
+ disabledJudges: [],
16
+ disabledRules: [],
17
+ minSeverity: "low",
18
+ customRules: ["SEC-*", "INJECT-*", "CRYPTO-*", "AUTH-*"],
19
+ },
20
+ "frontend-team": {
21
+ name: "Frontend Team",
22
+ preset: "react,nextjs",
23
+ disabledJudges: [],
24
+ disabledRules: ["PERF-004", "PERF-005"],
25
+ minSeverity: "medium",
26
+ customRules: ["XSS-*", "DOM-*", "CSP-*"],
27
+ },
28
+ "backend-team": {
29
+ name: "Backend Team",
30
+ preset: "express,strict",
31
+ disabledJudges: [],
32
+ disabledRules: [],
33
+ minSeverity: "medium",
34
+ customRules: ["SQL-*", "AUTH-*", "SSRF-*", "CMD-*"],
35
+ },
36
+ "data-team": {
37
+ name: "Data Engineering Team",
38
+ preset: "lenient",
39
+ disabledJudges: [],
40
+ disabledRules: ["PERF-001"],
41
+ minSeverity: "high",
42
+ customRules: ["SQL-*", "SEC-*"],
43
+ },
44
+ startup: {
45
+ name: "Startup / Small Team",
46
+ preset: "startup",
47
+ disabledJudges: [],
48
+ disabledRules: [],
49
+ minSeverity: "medium",
50
+ customRules: [],
51
+ },
52
+ };
53
+ // ─── Core ───────────────────────────────────────────────────────────────────
54
+ function ensureDir() {
55
+ if (!existsSync(SYNC_DIR))
56
+ mkdirSync(SYNC_DIR, { recursive: true });
57
+ }
58
+ function loadSyncHistory() {
59
+ const file = join(SYNC_DIR, "sync-history.json");
60
+ if (!existsSync(file))
61
+ return [];
62
+ try {
63
+ return JSON.parse(readFileSync(file, "utf-8"));
64
+ }
65
+ catch {
66
+ return [];
67
+ }
68
+ }
69
+ function saveSyncHistory(history) {
70
+ ensureDir();
71
+ writeFileSync(join(SYNC_DIR, "sync-history.json"), JSON.stringify(history, null, 2));
72
+ }
73
+ function applyTeamConfig(config) {
74
+ // Load existing .judgesrc or create new
75
+ let existing = {};
76
+ if (existsSync(".judgesrc")) {
77
+ try {
78
+ existing = JSON.parse(readFileSync(".judgesrc", "utf-8"));
79
+ }
80
+ catch {
81
+ /* start fresh */
82
+ }
83
+ }
84
+ // Merge
85
+ if (config.preset)
86
+ existing["preset"] = config.preset;
87
+ if (config.disabledJudges?.length)
88
+ existing["disabledJudges"] = config.disabledJudges;
89
+ if (config.disabledRules?.length)
90
+ existing["disabledRules"] = config.disabledRules;
91
+ if (config.ruleOverrides)
92
+ existing["ruleOverrides"] = {
93
+ ...(existing["ruleOverrides"] || {}),
94
+ ...config.ruleOverrides,
95
+ };
96
+ if (config.minSeverity)
97
+ existing["minSeverity"] = config.minSeverity;
98
+ writeFileSync(".judgesrc", JSON.stringify(existing, null, 2));
99
+ const result = {
100
+ team: config.name,
101
+ rulesApplied: (config.customRules?.length || 0) + (config.disabledRules?.length || 0),
102
+ presetsApplied: config.preset ? config.preset.split(",") : [],
103
+ overridesApplied: config.ruleOverrides ? Object.keys(config.ruleOverrides).length : 0,
104
+ timestamp: new Date().toISOString(),
105
+ };
106
+ // Save history
107
+ const history = loadSyncHistory();
108
+ history.push(result);
109
+ if (history.length > 50)
110
+ history.splice(0, history.length - 50);
111
+ saveSyncHistory(history);
112
+ return result;
113
+ }
114
+ function syncFromFile(path) {
115
+ if (!existsSync(path))
116
+ throw new Error(`Config file not found: ${path}`);
117
+ const config = JSON.parse(readFileSync(path, "utf-8"));
118
+ if (!config.name)
119
+ config.name = basename(path, ".json");
120
+ return applyTeamConfig(config);
121
+ }
122
+ // ─── CLI ────────────────────────────────────────────────────────────────────
123
+ export function runTeamRulesSync(argv) {
124
+ if (argv.includes("--help") || argv.includes("-h")) {
125
+ console.log(`
126
+ judges team-rules-sync — Fast team onboarding with shared rules
127
+
128
+ Usage:
129
+ judges team-rules-sync --team security-team
130
+ judges team-rules-sync --from ./team-config.json
131
+ judges team-rules-sync --list
132
+ judges team-rules-sync --history
133
+ judges team-rules-sync --scan ./configs/
134
+
135
+ Options:
136
+ --team <name> Apply built-in team template
137
+ --from <path> Sync from a custom team config JSON file
138
+ --list List available team templates
139
+ --scan <dir> Find and list .judgesrc files in directory
140
+ --history Show sync history
141
+ --dry-run Preview changes without applying
142
+ --format json JSON output
143
+ --help, -h Show this help
144
+ `);
145
+ return;
146
+ }
147
+ const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
148
+ // List templates
149
+ if (argv.includes("--list")) {
150
+ const templates = Object.entries(TEAM_TEMPLATES);
151
+ if (format === "json") {
152
+ console.log(JSON.stringify(TEAM_TEMPLATES, null, 2));
153
+ }
154
+ else {
155
+ console.log(`\n Team Templates (${templates.length})\n ──────────────────────────`);
156
+ for (const [id, t] of templates) {
157
+ console.log(` ${id.padEnd(20)} ${t.name.padEnd(25)} preset: ${t.preset || "none"}`);
158
+ }
159
+ console.log(`\n Use: judges team-rules-sync --team <name>\n`);
160
+ }
161
+ return;
162
+ }
163
+ // History
164
+ if (argv.includes("--history")) {
165
+ const history = loadSyncHistory();
166
+ if (format === "json") {
167
+ console.log(JSON.stringify(history, null, 2));
168
+ }
169
+ else {
170
+ console.log(`\n Sync History (${history.length} records)\n ──────────────────────────`);
171
+ for (const r of history.slice(-20)) {
172
+ console.log(` ${r.timestamp.slice(0, 10)} ${r.team.padEnd(25)} +${r.rulesApplied} rules, ${r.presetsApplied.join(",") || "none"}`);
173
+ }
174
+ console.log("");
175
+ }
176
+ return;
177
+ }
178
+ // Scan directory
179
+ const scanDir = argv.find((_a, i) => argv[i - 1] === "--scan");
180
+ if (scanDir) {
181
+ if (!existsSync(scanDir)) {
182
+ console.error(` Directory not found: ${scanDir}`);
183
+ return;
184
+ }
185
+ const files = readdirSync(scanDir, { recursive: true })
186
+ .map(String)
187
+ .filter((f) => f.endsWith(".judgesrc") || f.endsWith("judgesrc.json"));
188
+ if (format === "json") {
189
+ console.log(JSON.stringify(files, null, 2));
190
+ }
191
+ else {
192
+ console.log(`\n Config files found in ${scanDir}: ${files.length}\n ──────────────────────────`);
193
+ for (const f of files)
194
+ console.log(` ${f}`);
195
+ console.log("");
196
+ }
197
+ return;
198
+ }
199
+ // Apply team template
200
+ const teamId = argv.find((_a, i) => argv[i - 1] === "--team");
201
+ if (teamId) {
202
+ const template = TEAM_TEMPLATES[teamId];
203
+ if (!template) {
204
+ console.error(` Team template not found: ${teamId}`);
205
+ console.error(` Available: ${Object.keys(TEAM_TEMPLATES).join(", ")}`);
206
+ return;
207
+ }
208
+ if (argv.includes("--dry-run")) {
209
+ console.log(`\n Dry Run — ${template.name}\n ──────────────────────────`);
210
+ console.log(` Preset: ${template.preset || "none"}`);
211
+ console.log(` Rules: ${template.customRules?.join(", ") || "none"}`);
212
+ console.log(` Disabled: ${template.disabledRules?.join(", ") || "none"}`);
213
+ console.log(` Min sev: ${template.minSeverity || "default"}`);
214
+ console.log(`\n No changes applied (--dry-run)\n`);
215
+ return;
216
+ }
217
+ const result = applyTeamConfig(template);
218
+ if (format === "json") {
219
+ console.log(JSON.stringify(result, null, 2));
220
+ }
221
+ else {
222
+ console.log(`\n ✅ Team rules synced: ${result.team}`);
223
+ console.log(` Rules applied: ${result.rulesApplied}`);
224
+ console.log(` Presets: ${result.presetsApplied.join(", ")}`);
225
+ console.log(` .judgesrc updated\n`);
226
+ }
227
+ return;
228
+ }
229
+ // Sync from file
230
+ const fromPath = argv.find((_a, i) => argv[i - 1] === "--from");
231
+ if (fromPath) {
232
+ try {
233
+ const result = syncFromFile(fromPath);
234
+ if (format === "json") {
235
+ console.log(JSON.stringify(result, null, 2));
236
+ }
237
+ else {
238
+ console.log(`\n ✅ Synced from: ${fromPath}`);
239
+ console.log(` Team: ${result.team}`);
240
+ console.log(` Rules: ${result.rulesApplied}`);
241
+ console.log(` Presets: ${result.presetsApplied.join(", ")}\n`);
242
+ }
243
+ }
244
+ catch (err) {
245
+ console.error(` Error: ${err instanceof Error ? err.message : String(err)}`);
246
+ }
247
+ return;
248
+ }
249
+ console.error(" Use --team, --from, --list, or --history. --help for usage.");
250
+ }
251
+ //# sourceMappingURL=team-rules-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-rules-sync.js","sourceRoot":"","sources":["../../src/commands/team-rules-sync.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.45.0",
3
+ "version": "3.47.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.45.0",
10
+ "version": "3.47.0",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "@kevinrabun/judges",
15
- "version": "3.45.0",
15
+ "version": "3.47.0",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  }