@kevinrabun/judges 3.23.7 → 3.23.9

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 (54) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +1 -1
  3. package/dist/api.d.ts +6 -1
  4. package/dist/api.d.ts.map +1 -1
  5. package/dist/api.js +6 -1
  6. package/dist/api.js.map +1 -1
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +86 -3
  9. package/dist/cli.js.map +1 -1
  10. package/dist/commands/fix.d.ts +27 -1
  11. package/dist/commands/fix.d.ts.map +1 -1
  12. package/dist/commands/fix.js +137 -13
  13. package/dist/commands/fix.js.map +1 -1
  14. package/dist/commands/lsp.d.ts +24 -0
  15. package/dist/commands/lsp.d.ts.map +1 -0
  16. package/dist/commands/lsp.js +287 -0
  17. package/dist/commands/lsp.js.map +1 -0
  18. package/dist/commands/scaffold-plugin.d.ts +16 -0
  19. package/dist/commands/scaffold-plugin.d.ts.map +1 -0
  20. package/dist/commands/scaffold-plugin.js +271 -0
  21. package/dist/commands/scaffold-plugin.js.map +1 -0
  22. package/dist/config.d.ts +12 -0
  23. package/dist/config.d.ts.map +1 -1
  24. package/dist/config.js +128 -0
  25. package/dist/config.js.map +1 -1
  26. package/dist/disk-cache.d.ts +40 -0
  27. package/dist/disk-cache.d.ts.map +1 -0
  28. package/dist/disk-cache.js +196 -0
  29. package/dist/disk-cache.js.map +1 -0
  30. package/dist/evaluators/index.d.ts.map +1 -1
  31. package/dist/evaluators/index.js +51 -3
  32. package/dist/evaluators/index.js.map +1 -1
  33. package/dist/evaluators/v2.d.ts.map +1 -1
  34. package/dist/evaluators/v2.js +2 -2
  35. package/dist/evaluators/v2.js.map +1 -1
  36. package/dist/formatters/github-actions.d.ts +7 -0
  37. package/dist/formatters/github-actions.d.ts.map +1 -0
  38. package/dist/formatters/github-actions.js +69 -0
  39. package/dist/formatters/github-actions.js.map +1 -0
  40. package/dist/scoring.d.ts +8 -0
  41. package/dist/scoring.d.ts.map +1 -1
  42. package/dist/scoring.js +66 -26
  43. package/dist/scoring.js.map +1 -1
  44. package/dist/tools/register-evaluation.d.ts +1 -1
  45. package/dist/tools/register-evaluation.d.ts.map +1 -1
  46. package/dist/tools/register-evaluation.js +90 -1
  47. package/dist/tools/register-evaluation.js.map +1 -1
  48. package/dist/tools/register-workflow.d.ts.map +1 -1
  49. package/dist/tools/register-workflow.js +23 -20
  50. package/dist/tools/register-workflow.js.map +1 -1
  51. package/dist/types.d.ts +36 -2
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +1 -1
  54. package/server.json +2 -2
@@ -41,6 +41,55 @@ function detectLanguage(filePath) {
41
41
  const ext = extname(base);
42
42
  return EXT_TO_LANG[ext] || "typescript";
43
43
  }
44
+ const SEVERITY_RANK = {
45
+ critical: 5,
46
+ high: 4,
47
+ medium: 3,
48
+ low: 2,
49
+ info: 1,
50
+ };
51
+ /**
52
+ * Filter patches by rule, severity, or line range.
53
+ */
54
+ export function filterPatches(patches, filter) {
55
+ return patches.filter((p) => {
56
+ if (filter.rule && !p.ruleId.toLowerCase().includes(filter.rule.toLowerCase())) {
57
+ return false;
58
+ }
59
+ if (filter.severity) {
60
+ const minRank = SEVERITY_RANK[filter.severity.toLowerCase()] ?? 0;
61
+ const patchRank = SEVERITY_RANK[p.severity.toLowerCase()] ?? 0;
62
+ if (patchRank < minRank)
63
+ return false;
64
+ }
65
+ if (filter.lineRange) {
66
+ const patchStart = p.patch.startLine;
67
+ if (patchStart < filter.lineRange.start || patchStart > filter.lineRange.end) {
68
+ return false;
69
+ }
70
+ }
71
+ return true;
72
+ });
73
+ }
74
+ /**
75
+ * Detect overlapping patches (patches whose line ranges intersect).
76
+ * Returns indices of patches that overlap with at least one other patch.
77
+ */
78
+ export function detectOverlaps(patches) {
79
+ const overlapping = new Set();
80
+ for (let i = 0; i < patches.length; i++) {
81
+ for (let j = i + 1; j < patches.length; j++) {
82
+ const a = patches[i].patch;
83
+ const b = patches[j].patch;
84
+ // Ranges overlap if one starts before the other ends
85
+ if (a.startLine <= b.endLine && b.startLine <= a.endLine) {
86
+ overlapping.add(i);
87
+ overlapping.add(j);
88
+ }
89
+ }
90
+ }
91
+ return overlapping;
92
+ }
44
93
  /**
45
94
  * Sort patches bottom-to-top (by startLine descending) to avoid line offsets.
46
95
  */
@@ -49,14 +98,25 @@ export function sortPatchesBottomUp(patches) {
49
98
  }
50
99
  /**
51
100
  * Apply patches to source code. Patches are applied bottom-to-top so that
52
- * earlier line numbers remain stable.
101
+ * earlier line numbers remain stable. Overlapping patches are skipped to
102
+ * prevent corrupted output.
53
103
  */
54
104
  export function applyPatches(code, patches) {
55
105
  const lines = code.split("\n");
106
+ const overlaps = detectOverlaps(patches);
56
107
  const sorted = sortPatchesBottomUp(patches);
57
108
  let applied = 0;
58
109
  let skipped = 0;
110
+ let overlapped = 0;
111
+ // Build index lookup so we can detect overlap membership on sorted entries
112
+ const originalIndices = new Map();
113
+ patches.forEach((p, i) => originalIndices.set(p, i));
59
114
  for (const p of sorted) {
115
+ const origIdx = originalIndices.get(p) ?? -1;
116
+ if (overlaps.has(origIdx)) {
117
+ overlapped++;
118
+ continue;
119
+ }
60
120
  const { patch } = p;
61
121
  // Validate the old text matches what we expect
62
122
  const regionLines = lines.slice(patch.startLine - 1, patch.endLine);
@@ -72,13 +132,16 @@ export function applyPatches(code, patches) {
72
132
  skipped++;
73
133
  }
74
134
  }
75
- return { result: lines.join("\n"), applied, skipped };
135
+ return { result: lines.join("\n"), applied, skipped, overlapped };
76
136
  }
77
137
  export function parseFixArgs(argv) {
78
138
  const args = {
79
139
  file: undefined,
80
140
  language: undefined,
81
141
  judge: undefined,
142
+ rule: undefined,
143
+ severity: undefined,
144
+ lines: undefined,
82
145
  apply: false,
83
146
  };
84
147
  for (let i = 3; i < argv.length; i++) {
@@ -101,6 +164,17 @@ export function parseFixArgs(argv) {
101
164
  case "-f":
102
165
  args.file = argv[++i];
103
166
  break;
167
+ case "--rule":
168
+ case "-r":
169
+ args.rule = argv[++i];
170
+ break;
171
+ case "--severity":
172
+ case "-s":
173
+ args.severity = argv[++i];
174
+ break;
175
+ case "--lines":
176
+ args.lines = argv[++i];
177
+ break;
104
178
  default:
105
179
  if (!arg.startsWith("-") && !args.file) {
106
180
  args.file = arg;
@@ -115,7 +189,7 @@ export function runFix(argv) {
115
189
  const args = parseFixArgs(argv);
116
190
  if (!args.file) {
117
191
  console.error("Error: No file specified.");
118
- console.error("Usage: judges fix <file> [--apply]");
192
+ console.error("Usage: judges fix <file> [--apply] [--rule <id>] [--severity <level>] [--lines <start>-<end>]");
119
193
  process.exit(1);
120
194
  }
121
195
  const filePath = resolve(args.file);
@@ -141,7 +215,7 @@ export function runFix(argv) {
141
215
  findings = verdict.evaluations.flatMap((e) => e.findings);
142
216
  }
143
217
  // Collect fixable findings (those with patches)
144
- const fixable = findings
218
+ let fixable = findings
145
219
  .filter((f) => f.patch)
146
220
  .map((f) => ({
147
221
  ruleId: f.ruleId,
@@ -150,6 +224,29 @@ export function runFix(argv) {
150
224
  patch: f.patch,
151
225
  lineNumbers: f.lineNumbers,
152
226
  }));
227
+ const totalFixable = fixable.length;
228
+ // Apply selective filters
229
+ const filter = {};
230
+ if (args.rule)
231
+ filter.rule = args.rule;
232
+ if (args.severity)
233
+ filter.severity = args.severity;
234
+ if (args.lines) {
235
+ const m = args.lines.match(/^(\d+)-(\d+)$/);
236
+ if (m) {
237
+ filter.lineRange = { start: parseInt(m[1], 10), end: parseInt(m[2], 10) };
238
+ }
239
+ else {
240
+ console.error(`Error: Invalid --lines format. Expected start-end (e.g. 10-50).`);
241
+ process.exit(1);
242
+ }
243
+ }
244
+ if (filter.rule || filter.severity || filter.lineRange) {
245
+ fixable = filterPatches(fixable, filter);
246
+ }
247
+ // Detect overlaps
248
+ const overlaps = detectOverlaps(fixable);
249
+ const hasOverlaps = overlaps.size > 0;
153
250
  console.log("");
154
251
  console.log("╔══════════════════════════════════════════════════════════════╗");
155
252
  console.log("║ Judges Panel — Auto-Fix ║");
@@ -157,34 +254,61 @@ export function runFix(argv) {
157
254
  console.log("");
158
255
  console.log(` File : ${args.file}`);
159
256
  console.log(` Language : ${language}`);
160
- console.log(` Findings : ${findings.length} total, ${fixable.length} auto-fixable`);
257
+ console.log(` Findings : ${findings.length} total, ${totalFixable} auto-fixable`);
258
+ if (fixable.length !== totalFixable) {
259
+ console.log(` Selected : ${fixable.length} (after filters)`);
260
+ }
261
+ if (hasOverlaps) {
262
+ console.log(` Overlaps : ${overlaps.size} patch(es) in overlapping regions (will be skipped)`);
263
+ }
161
264
  console.log("");
162
265
  if (fixable.length === 0) {
163
- console.log(" No auto-fixable findings. Nothing to do.\n");
266
+ console.log(" No auto-fixable findings match the criteria. Nothing to do.\n");
164
267
  process.exit(0);
165
268
  }
166
- // Show preview
269
+ // Show preview with block context
270
+ const codeLines = code.split("\n");
167
271
  console.log(" Fixes available:");
168
272
  console.log(" " + "─".repeat(60));
169
- for (const p of fixable) {
273
+ for (let idx = 0; idx < fixable.length; idx++) {
274
+ const p = fixable[idx];
170
275
  const line = p.lineNumbers?.[0] ?? p.patch.startLine;
171
- console.log(` [${p.severity.toUpperCase().padEnd(8)}] ${p.ruleId}: ${p.title}`);
172
- console.log(` Line ${line}: "${p.patch.oldText.slice(0, 50)}" "${p.patch.newText.slice(0, 50)}"`);
276
+ const overlapTag = overlaps.has(idx) ? " [OVERLAP — will skip]" : "";
277
+ console.log(` [${p.severity.toUpperCase().padEnd(8)}] ${p.ruleId}: ${p.title}${overlapTag}`);
278
+ // Show block context: 1 line before, affected lines, 1 line after
279
+ const ctxStart = Math.max(0, p.patch.startLine - 2);
280
+ const ctxEnd = Math.min(codeLines.length - 1, p.patch.endLine);
281
+ for (let ln = ctxStart; ln <= ctxEnd; ln++) {
282
+ const marker = ln >= p.patch.startLine - 1 && ln < p.patch.endLine ? ">" : " ";
283
+ const lineNum = String(ln + 1).padStart(4);
284
+ console.log(` ${marker} ${lineNum} │ ${codeLines[ln]}`);
285
+ }
286
+ console.log(` Fix: "${p.patch.oldText.slice(0, 60)}" → "${p.patch.newText.slice(0, 60)}"`);
287
+ console.log("");
173
288
  }
174
- console.log("");
175
289
  if (!args.apply) {
176
290
  console.log(" Dry run — no changes made.");
177
291
  console.log(" Run with --apply to write fixes:\n");
178
- console.log(` judges fix ${args.file} --apply\n`);
292
+ let cmd = ` judges fix ${args.file} --apply`;
293
+ if (args.rule)
294
+ cmd += ` --rule ${args.rule}`;
295
+ if (args.severity)
296
+ cmd += ` --severity ${args.severity}`;
297
+ if (args.lines)
298
+ cmd += ` --lines ${args.lines}`;
299
+ console.log(cmd + "\n");
179
300
  process.exit(0);
180
301
  }
181
302
  // Apply patches
182
- const { result, applied, skipped } = applyPatches(code, fixable);
303
+ const { result, applied, skipped, overlapped } = applyPatches(code, fixable);
183
304
  writeFileSync(filePath, result, "utf-8");
184
305
  console.log(` ✅ Applied ${applied} fix(es) to ${args.file}`);
185
306
  if (skipped > 0) {
186
307
  console.log(` ⏭ Skipped ${skipped} fix(es) (source text changed)`);
187
308
  }
309
+ if (overlapped > 0) {
310
+ console.log(` ⚠ Skipped ${overlapped} fix(es) (overlapping regions — re-run to apply individually)`);
311
+ }
188
312
  console.log("");
189
313
  console.log(" Run 'judges eval' to verify the remaining findings.\n");
190
314
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * LSP Server — Language Server Protocol implementation for Judges
3
+ *
4
+ * Provides real-time code analysis diagnostics over stdio using the
5
+ * JSON-RPC / LSP protocol. Compatible with any LSP-capable editor:
6
+ * VS Code, Neovim, Emacs, Helix, etc.
7
+ *
8
+ * Usage: judges lsp [--stdio]
9
+ *
10
+ * The server supports:
11
+ * - textDocument/didOpen → full evaluation
12
+ * - textDocument/didChange → debounced re-evaluation
13
+ * - textDocument/didSave → full re-evaluation
14
+ * - textDocument/didClose → clear diagnostics
15
+ * - textDocument/codeAction → quick-fix patches
16
+ */
17
+ /**
18
+ * Start the LSP server on stdio.
19
+ *
20
+ * Reads Content-Length-framed JSON-RPC messages from stdin
21
+ * and writes responses to stdout.
22
+ */
23
+ export declare function runLsp(_argv: string[]): void;
24
+ //# sourceMappingURL=lsp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../../src/commands/lsp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA2RH;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CA0C5C"}
@@ -0,0 +1,287 @@
1
+ /**
2
+ * LSP Server — Language Server Protocol implementation for Judges
3
+ *
4
+ * Provides real-time code analysis diagnostics over stdio using the
5
+ * JSON-RPC / LSP protocol. Compatible with any LSP-capable editor:
6
+ * VS Code, Neovim, Emacs, Helix, etc.
7
+ *
8
+ * Usage: judges lsp [--stdio]
9
+ *
10
+ * The server supports:
11
+ * - textDocument/didOpen → full evaluation
12
+ * - textDocument/didChange → debounced re-evaluation
13
+ * - textDocument/didSave → full re-evaluation
14
+ * - textDocument/didClose → clear diagnostics
15
+ * - textDocument/codeAction → quick-fix patches
16
+ */
17
+ import { evaluateWithTribunal } from "../evaluators/index.js";
18
+ import { findingToDiagnostic, findingsToCodeActions, } from "../formatters/diagnostics.js";
19
+ import { loadCascadingConfig } from "../config.js";
20
+ function sendMessage(msg) {
21
+ const body = JSON.stringify(msg);
22
+ const header = `Content-Length: ${Buffer.byteLength(body)}\r\n\r\n`;
23
+ process.stdout.write(header + body);
24
+ }
25
+ function sendResponse(id, result) {
26
+ sendMessage({ jsonrpc: "2.0", id, result });
27
+ }
28
+ function sendNotification(method, params) {
29
+ sendMessage({ jsonrpc: "2.0", method, params });
30
+ }
31
+ function publishDiagnostics(uri, diagnostics) {
32
+ sendNotification("textDocument/publishDiagnostics", { uri, diagnostics });
33
+ }
34
+ // ─── Document Store ─────────────────────────────────────────────────────────
35
+ const documents = new Map();
36
+ const pendingTimers = new Map();
37
+ function uriToFilePath(uri) {
38
+ if (uri.startsWith("file:///")) {
39
+ // Windows: file:///c%3A/... → c:/...
40
+ const decoded = decodeURIComponent(uri.slice(8));
41
+ return decoded.replace(/\//g, "/");
42
+ }
43
+ return uri;
44
+ }
45
+ function detectLanguageFromUri(uri) {
46
+ const ext = uri.split(".").pop()?.toLowerCase() ?? "";
47
+ const extMap = {
48
+ ts: "typescript",
49
+ tsx: "typescript",
50
+ js: "javascript",
51
+ jsx: "javascript",
52
+ py: "python",
53
+ rs: "rust",
54
+ go: "go",
55
+ java: "java",
56
+ cs: "csharp",
57
+ cpp: "cpp",
58
+ cc: "cpp",
59
+ cxx: "cpp",
60
+ c: "cpp",
61
+ h: "cpp",
62
+ hpp: "cpp",
63
+ php: "php",
64
+ rb: "ruby",
65
+ kt: "kotlin",
66
+ kts: "kotlin",
67
+ swift: "swift",
68
+ ps1: "powershell",
69
+ psm1: "powershell",
70
+ tf: "terraform",
71
+ bicep: "bicep",
72
+ };
73
+ return extMap[ext] ?? "unknown";
74
+ }
75
+ // ─── Evaluation Pipeline ────────────────────────────────────────────────────
76
+ const DEBOUNCE_MS = 500;
77
+ async function evaluateDocument(uri) {
78
+ const doc = documents.get(uri);
79
+ if (!doc)
80
+ return;
81
+ try {
82
+ const filePath = uriToFilePath(uri);
83
+ const config = loadCascadingConfig(filePath);
84
+ const options = {
85
+ filePath,
86
+ config,
87
+ minConfidence: 0.4,
88
+ };
89
+ const verdict = evaluateWithTribunal(doc.content, doc.language, "", options);
90
+ const diagnostics = verdict.findings.map((f) => findingToDiagnostic(f, uri));
91
+ publishDiagnostics(uri, diagnostics);
92
+ }
93
+ catch {
94
+ // Evaluation failure — clear diagnostics silently
95
+ publishDiagnostics(uri, []);
96
+ }
97
+ }
98
+ function scheduleEvaluation(uri) {
99
+ const existing = pendingTimers.get(uri);
100
+ if (existing)
101
+ clearTimeout(existing);
102
+ pendingTimers.set(uri, setTimeout(() => {
103
+ pendingTimers.delete(uri);
104
+ evaluateDocument(uri).catch(() => { });
105
+ }, DEBOUNCE_MS));
106
+ }
107
+ // ─── LSP Request Handlers ───────────────────────────────────────────────────
108
+ let initialized = false;
109
+ // Cache of latest findings per URI for code-action requests
110
+ const findingsCache = new Map();
111
+ function handleInitialize(id) {
112
+ sendResponse(id, {
113
+ capabilities: {
114
+ textDocumentSync: {
115
+ openClose: true,
116
+ change: 2, // Incremental (we take full content anyway)
117
+ save: { includeText: true },
118
+ },
119
+ codeActionProvider: true,
120
+ diagnosticProvider: {
121
+ interFileDependencies: false,
122
+ workspaceDiagnostics: false,
123
+ },
124
+ },
125
+ serverInfo: {
126
+ name: "judges-lsp",
127
+ version: "1.0.0",
128
+ },
129
+ });
130
+ }
131
+ function handleInitialized() {
132
+ initialized = true;
133
+ }
134
+ function handleShutdown(id) {
135
+ sendResponse(id, null);
136
+ }
137
+ function handleDidOpen(params) {
138
+ const { uri, languageId, version, text } = params.textDocument;
139
+ const language = languageId || detectLanguageFromUri(uri);
140
+ documents.set(uri, { content: text, version, language });
141
+ // Immediate evaluation on open
142
+ evaluateDocument(uri)
143
+ .then(() => {
144
+ // Cache findings for code actions
145
+ const doc = documents.get(uri);
146
+ if (doc) {
147
+ const filePath = uriToFilePath(uri);
148
+ const config = loadCascadingConfig(filePath);
149
+ const verdict = evaluateWithTribunal(doc.content, doc.language, "", { filePath, config });
150
+ findingsCache.set(uri, verdict.findings);
151
+ }
152
+ })
153
+ .catch(() => { });
154
+ }
155
+ function handleDidChange(params) {
156
+ const { uri, version } = params.textDocument;
157
+ const doc = documents.get(uri);
158
+ if (!doc)
159
+ return;
160
+ // Take the full content from the last change event
161
+ const lastChange = params.contentChanges[params.contentChanges.length - 1];
162
+ if (lastChange) {
163
+ doc.content = lastChange.text;
164
+ doc.version = version;
165
+ }
166
+ scheduleEvaluation(uri);
167
+ }
168
+ function handleDidSave(params) {
169
+ const uri = params.textDocument.uri;
170
+ const doc = documents.get(uri);
171
+ if (doc && params.text) {
172
+ doc.content = params.text;
173
+ }
174
+ // Re-evaluate immediately on save
175
+ evaluateDocument(uri).catch(() => { });
176
+ }
177
+ function handleDidClose(params) {
178
+ const uri = params.textDocument.uri;
179
+ documents.delete(uri);
180
+ findingsCache.delete(uri);
181
+ const timer = pendingTimers.get(uri);
182
+ if (timer) {
183
+ clearTimeout(timer);
184
+ pendingTimers.delete(uri);
185
+ }
186
+ // Clear diagnostics for the closed file
187
+ publishDiagnostics(uri, []);
188
+ }
189
+ function handleCodeAction(id, params) {
190
+ const uri = params.textDocument.uri;
191
+ const findings = findingsCache.get(uri) ?? [];
192
+ const actions = findingsToCodeActions(findings, uri);
193
+ sendResponse(id, actions);
194
+ }
195
+ // ─── Message Dispatch ────────────────────────────────────────────────────────
196
+ function dispatch(msg) {
197
+ const method = msg.method;
198
+ const id = msg.id;
199
+ switch (method) {
200
+ case "initialize":
201
+ if (id !== undefined)
202
+ handleInitialize(id);
203
+ break;
204
+ case "initialized":
205
+ handleInitialized();
206
+ break;
207
+ case "shutdown":
208
+ if (id !== undefined)
209
+ handleShutdown(id);
210
+ break;
211
+ case "exit":
212
+ process.exit(initialized ? 0 : 1);
213
+ break;
214
+ case "textDocument/didOpen":
215
+ handleDidOpen(msg.params);
216
+ break;
217
+ case "textDocument/didChange":
218
+ handleDidChange(msg.params);
219
+ break;
220
+ case "textDocument/didSave":
221
+ handleDidSave(msg.params);
222
+ break;
223
+ case "textDocument/didClose":
224
+ handleDidClose(msg.params);
225
+ break;
226
+ case "textDocument/codeAction":
227
+ if (id !== undefined)
228
+ handleCodeAction(id, msg.params);
229
+ break;
230
+ default:
231
+ // Unknown method — respond with MethodNotFound for requests
232
+ if (id !== undefined) {
233
+ sendMessage({
234
+ jsonrpc: "2.0",
235
+ id,
236
+ error: { code: -32601, message: `Method not found: ${method}` },
237
+ });
238
+ }
239
+ }
240
+ }
241
+ // ─── Stdio Transport ─────────────────────────────────────────────────────────
242
+ /**
243
+ * Start the LSP server on stdio.
244
+ *
245
+ * Reads Content-Length-framed JSON-RPC messages from stdin
246
+ * and writes responses to stdout.
247
+ */
248
+ export function runLsp(_argv) {
249
+ let buffer = "";
250
+ let contentLength = -1;
251
+ process.stdin.setEncoding("utf-8");
252
+ process.stdin.on("data", (chunk) => {
253
+ buffer += chunk;
254
+ while (true) {
255
+ if (contentLength === -1) {
256
+ // Parse headers
257
+ const headerEnd = buffer.indexOf("\r\n\r\n");
258
+ if (headerEnd === -1)
259
+ break;
260
+ const headers = buffer.slice(0, headerEnd);
261
+ const match = headers.match(/Content-Length:\s*(\d+)/i);
262
+ if (!match) {
263
+ buffer = buffer.slice(headerEnd + 4);
264
+ continue;
265
+ }
266
+ contentLength = parseInt(match[1], 10);
267
+ buffer = buffer.slice(headerEnd + 4);
268
+ }
269
+ if (buffer.length < contentLength)
270
+ break;
271
+ const body = buffer.slice(0, contentLength);
272
+ buffer = buffer.slice(contentLength);
273
+ contentLength = -1;
274
+ try {
275
+ const msg = JSON.parse(body);
276
+ dispatch(msg);
277
+ }
278
+ catch {
279
+ // Malformed JSON — skip
280
+ }
281
+ }
282
+ });
283
+ process.stdin.on("end", () => {
284
+ process.exit(0);
285
+ });
286
+ }
287
+ //# sourceMappingURL=lsp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp.js","sourceRoot":"","sources":["../../src/commands/lsp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * `judges scaffold-plugin` — Generate a starter custom plugin project.
3
+ *
4
+ * Creates a directory structure with:
5
+ * - package.json (with @kevinrabun/judges as peer dependency)
6
+ * - tsconfig.json
7
+ * - src/index.ts (plugin entry-point with example rule & judge)
8
+ * - src/rules/example-rule.ts
9
+ * - README.md
10
+ *
11
+ * Usage:
12
+ * judges scaffold-plugin my-org-rules
13
+ * judges scaffold-plugin my-org-rules --dir ./plugins
14
+ */
15
+ export declare function runScaffoldPlugin(argv: string[]): void;
16
+ //# sourceMappingURL=scaffold-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-plugin.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAwOH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAsDtD"}