@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.
- package/CHANGELOG.md +38 -0
- package/README.md +1 -1
- package/dist/api.d.ts +6 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +6 -1
- package/dist/api.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +86 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/fix.d.ts +27 -1
- package/dist/commands/fix.d.ts.map +1 -1
- package/dist/commands/fix.js +137 -13
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/lsp.d.ts +24 -0
- package/dist/commands/lsp.d.ts.map +1 -0
- package/dist/commands/lsp.js +287 -0
- package/dist/commands/lsp.js.map +1 -0
- package/dist/commands/scaffold-plugin.d.ts +16 -0
- package/dist/commands/scaffold-plugin.d.ts.map +1 -0
- package/dist/commands/scaffold-plugin.js +271 -0
- package/dist/commands/scaffold-plugin.js.map +1 -0
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +128 -0
- package/dist/config.js.map +1 -1
- package/dist/disk-cache.d.ts +40 -0
- package/dist/disk-cache.d.ts.map +1 -0
- package/dist/disk-cache.js +196 -0
- package/dist/disk-cache.js.map +1 -0
- package/dist/evaluators/index.d.ts.map +1 -1
- package/dist/evaluators/index.js +51 -3
- package/dist/evaluators/index.js.map +1 -1
- package/dist/evaluators/v2.d.ts.map +1 -1
- package/dist/evaluators/v2.js +2 -2
- package/dist/evaluators/v2.js.map +1 -1
- package/dist/formatters/github-actions.d.ts +7 -0
- package/dist/formatters/github-actions.d.ts.map +1 -0
- package/dist/formatters/github-actions.js +69 -0
- package/dist/formatters/github-actions.js.map +1 -0
- package/dist/scoring.d.ts +8 -0
- package/dist/scoring.d.ts.map +1 -1
- package/dist/scoring.js +66 -26
- package/dist/scoring.js.map +1 -1
- package/dist/tools/register-evaluation.d.ts +1 -1
- package/dist/tools/register-evaluation.d.ts.map +1 -1
- package/dist/tools/register-evaluation.js +90 -1
- package/dist/tools/register-evaluation.js.map +1 -1
- package/dist/tools/register-workflow.d.ts.map +1 -1
- package/dist/tools/register-workflow.js +23 -20
- package/dist/tools/register-workflow.js.map +1 -1
- package/dist/types.d.ts +36 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
package/dist/commands/fix.js
CHANGED
|
@@ -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
|
-
|
|
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, ${
|
|
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 (
|
|
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
|
-
|
|
172
|
-
console.log(`
|
|
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
|
-
|
|
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
|
}
|
package/dist/commands/fix.js.map
CHANGED
|
@@ -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"}
|