@wolfx/oh-my-openagent 4.2.0-patch.1 → 4.2.0-patch.3
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/package.json +4 -3
- package/packages/lsp-tools-mcp/dist/cli.d.ts +3 -0
- package/packages/lsp-tools-mcp/dist/cli.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/cli.js +24 -0
- package/packages/lsp-tools-mcp/dist/cli.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +2 -0
- package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.js +7 -0
- package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.d.ts +14 -0
- package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.js +110 -0
- package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/client.d.ts +21 -0
- package/packages/lsp-tools-mcp/dist/lsp/client.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/client.js +130 -0
- package/packages/lsp-tools-mcp/dist/lsp/client.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/config-loader.d.ts +25 -0
- package/packages/lsp-tools-mcp/dist/lsp/config-loader.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/config-loader.js +110 -0
- package/packages/lsp-tools-mcp/dist/lsp/config-loader.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/connection.d.ts +5 -0
- package/packages/lsp-tools-mcp/dist/lsp/connection.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/connection.js +67 -0
- package/packages/lsp-tools-mcp/dist/lsp/connection.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +11 -0
- package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/constants.js +11 -0
- package/packages/lsp-tools-mcp/dist/lsp/constants.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.d.ts +4 -0
- package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.js +124 -0
- package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/errors.d.ts +36 -0
- package/packages/lsp-tools-mcp/dist/lsp/errors.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/errors.js +57 -0
- package/packages/lsp-tools-mcp/dist/lsp/errors.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/formatters.d.ts +13 -0
- package/packages/lsp-tools-mcp/dist/lsp/formatters.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/formatters.js +109 -0
- package/packages/lsp-tools-mcp/dist/lsp/formatters.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/infer-extension.d.ts +2 -0
- package/packages/lsp-tools-mcp/dist/lsp/infer-extension.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/infer-extension.js +59 -0
- package/packages/lsp-tools-mcp/dist/lsp/infer-extension.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.d.ts +37 -0
- package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.js +248 -0
- package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts +5 -0
- package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/language-mappings.js +170 -0
- package/packages/lsp-tools-mcp/dist/lsp/language-mappings.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/manager.d.ts +48 -0
- package/packages/lsp-tools-mcp/dist/lsp/manager.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/manager.js +308 -0
- package/packages/lsp-tools-mcp/dist/lsp/manager.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/process.d.ts +26 -0
- package/packages/lsp-tools-mcp/dist/lsp/process.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/process.js +124 -0
- package/packages/lsp-tools-mcp/dist/lsp/process.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-definitions.d.ts +5 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-definitions.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-definitions.js +159 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-definitions.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-installation.d.ts +3 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-installation.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-installation.js +51 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-installation.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-resolution.d.ts +12 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-resolution.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-resolution.js +75 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-resolution.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/transport.d.ts +26 -0
- package/packages/lsp-tools-mcp/dist/lsp/transport.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/transport.js +234 -0
- package/packages/lsp-tools-mcp/dist/lsp/transport.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/types.d.ts +125 -0
- package/packages/lsp-tools-mcp/dist/lsp/types.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/types.js +2 -0
- package/packages/lsp-tools-mcp/dist/lsp/types.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/utils.d.ts +5 -0
- package/packages/lsp-tools-mcp/dist/lsp/utils.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/utils.js +43 -0
- package/packages/lsp-tools-mcp/dist/lsp/utils.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.d.ts +9 -0
- package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.js +114 -0
- package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/mcp.d.ts +31 -0
- package/packages/lsp-tools-mcp/dist/mcp.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/mcp.js +95 -0
- package/packages/lsp-tools-mcp/dist/mcp.js.map +1 -0
- package/packages/lsp-tools-mcp/dist/tools.d.ts +91 -0
- package/packages/lsp-tools-mcp/dist/tools.d.ts.map +1 -0
- package/packages/lsp-tools-mcp/dist/tools.js +453 -0
- package/packages/lsp-tools-mcp/dist/tools.js.map +1 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const DEFAULT_MAX_REFERENCES = 200;
|
|
2
|
+
export const DEFAULT_MAX_SYMBOLS = 200;
|
|
3
|
+
export const DEFAULT_MAX_DIAGNOSTICS = 200;
|
|
4
|
+
export const DEFAULT_MAX_DIRECTORY_FILES = 50;
|
|
5
|
+
export const REQUEST_TIMEOUT_MS = 15_000;
|
|
6
|
+
export const INIT_TIMEOUT_MS = 60_000;
|
|
7
|
+
export const IDLE_TIMEOUT_MS = 5 * 60_000;
|
|
8
|
+
export const REAPER_INTERVAL_MS = 60_000;
|
|
9
|
+
export const STOP_HARD_KILL_TIMEOUT_MS = 5_000;
|
|
10
|
+
export const STOP_SIGKILL_GRACE_MS = 1_000;
|
|
11
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lsp/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAC1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC;AAC1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAC/C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SeverityFilter } from "./types.js";
|
|
2
|
+
export declare function collectFilesWithExtension(dir: string, extension: string, maxFiles: number): string[];
|
|
3
|
+
export declare function aggregateDiagnosticsForDirectory(directory: string, extension: string, severity?: SeverityFilter, maxFiles?: number): Promise<string>;
|
|
4
|
+
//# sourceMappingURL=directory-diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-diagnostics.d.ts","sourceRoot":"","sources":["../../src/lsp/directory-diagnostics.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,YAAY,CAAC;AAS7D,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAuCpG;AAED,wBAAsB,gCAAgC,CACrD,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,cAAc,EACzB,QAAQ,GAAE,MAAoC,GAC5C,OAAO,CAAC,MAAM,CAAC,CAwFjB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { existsSync, lstatSync, readdirSync } from "node:fs";
|
|
2
|
+
import { extname, join, resolve } from "node:path";
|
|
3
|
+
import { findWorkspaceRoot, formatServerLookupError } from "./client-wrapper.js";
|
|
4
|
+
import { DEFAULT_MAX_DIAGNOSTICS, DEFAULT_MAX_DIRECTORY_FILES } from "./constants.js";
|
|
5
|
+
import { LspInvalidPathError, LspServerLookupError } from "./errors.js";
|
|
6
|
+
import { filterDiagnosticsBySeverity, formatDiagnostic } from "./formatters.js";
|
|
7
|
+
import { getLspManager } from "./manager.js";
|
|
8
|
+
import { findServerForExtension } from "./server-resolution.js";
|
|
9
|
+
const SKIP_DIRECTORIES = new Set(["node_modules", ".git", "dist", "build", ".next", "out"]);
|
|
10
|
+
export function collectFilesWithExtension(dir, extension, maxFiles) {
|
|
11
|
+
const files = [];
|
|
12
|
+
function walk(currentDir) {
|
|
13
|
+
if (files.length >= maxFiles)
|
|
14
|
+
return;
|
|
15
|
+
let entries = [];
|
|
16
|
+
try {
|
|
17
|
+
entries = readdirSync(currentDir);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
for (const entry of entries) {
|
|
23
|
+
if (files.length >= maxFiles)
|
|
24
|
+
return;
|
|
25
|
+
const fullPath = join(currentDir, entry);
|
|
26
|
+
let stat;
|
|
27
|
+
try {
|
|
28
|
+
stat = lstatSync(fullPath);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (!stat || stat.isSymbolicLink())
|
|
34
|
+
continue;
|
|
35
|
+
if (stat.isDirectory()) {
|
|
36
|
+
if (!SKIP_DIRECTORIES.has(entry)) {
|
|
37
|
+
walk(fullPath);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else if (stat.isFile() && extname(fullPath) === extension) {
|
|
41
|
+
files.push(fullPath);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
walk(dir);
|
|
46
|
+
return files;
|
|
47
|
+
}
|
|
48
|
+
export async function aggregateDiagnosticsForDirectory(directory, extension, severity, maxFiles = DEFAULT_MAX_DIRECTORY_FILES) {
|
|
49
|
+
if (!extension.startsWith(".")) {
|
|
50
|
+
throw new LspInvalidPathError(`Extension must start with a dot (e.g., ".ts", not "${extension}"). Use ".${extension}" instead.`);
|
|
51
|
+
}
|
|
52
|
+
const absDir = resolve(directory);
|
|
53
|
+
if (!existsSync(absDir)) {
|
|
54
|
+
throw new LspInvalidPathError(`Directory does not exist: ${absDir}`);
|
|
55
|
+
}
|
|
56
|
+
const serverResult = findServerForExtension(extension);
|
|
57
|
+
if (serverResult.status !== "found") {
|
|
58
|
+
throw new LspServerLookupError(formatServerLookupError(serverResult));
|
|
59
|
+
}
|
|
60
|
+
const server = serverResult.server;
|
|
61
|
+
const allFiles = collectFilesWithExtension(absDir, extension, maxFiles + 1);
|
|
62
|
+
const wasCapped = allFiles.length > maxFiles;
|
|
63
|
+
const filesToProcess = allFiles.slice(0, maxFiles);
|
|
64
|
+
if (filesToProcess.length === 0) {
|
|
65
|
+
return [
|
|
66
|
+
`Directory: ${absDir}`,
|
|
67
|
+
`Extension: ${extension}`,
|
|
68
|
+
"Files scanned: 0",
|
|
69
|
+
`No files found with extension "${extension}".`,
|
|
70
|
+
].join("\n");
|
|
71
|
+
}
|
|
72
|
+
const root = findWorkspaceRoot(absDir);
|
|
73
|
+
const manager = getLspManager();
|
|
74
|
+
const allDiagnostics = [];
|
|
75
|
+
const fileErrors = [];
|
|
76
|
+
const client = await manager.getClient(root, server);
|
|
77
|
+
try {
|
|
78
|
+
for (const file of filesToProcess) {
|
|
79
|
+
try {
|
|
80
|
+
const result = await client.diagnostics(file);
|
|
81
|
+
const filtered = filterDiagnosticsBySeverity(result.items, severity);
|
|
82
|
+
allDiagnostics.push(...filtered.map((diagnostic) => ({
|
|
83
|
+
filePath: file,
|
|
84
|
+
diagnostic,
|
|
85
|
+
})));
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
fileErrors.push({
|
|
89
|
+
file,
|
|
90
|
+
error: e instanceof Error ? e.message : String(e),
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
finally {
|
|
96
|
+
manager.releaseClient(root, server.id);
|
|
97
|
+
}
|
|
98
|
+
const displayDiagnostics = allDiagnostics.slice(0, DEFAULT_MAX_DIAGNOSTICS);
|
|
99
|
+
const wasDiagCapped = allDiagnostics.length > DEFAULT_MAX_DIAGNOSTICS;
|
|
100
|
+
const lines = [
|
|
101
|
+
`Directory: ${absDir}`,
|
|
102
|
+
`Extension: ${extension}`,
|
|
103
|
+
`Files scanned: ${filesToProcess.length}${wasCapped ? ` (capped at ${maxFiles})` : ""}`,
|
|
104
|
+
`Files with errors: ${fileErrors.length}`,
|
|
105
|
+
`Total diagnostics: ${allDiagnostics.length}`,
|
|
106
|
+
];
|
|
107
|
+
if (fileErrors.length > 0) {
|
|
108
|
+
lines.push("", "File processing errors:");
|
|
109
|
+
for (const { file, error } of fileErrors) {
|
|
110
|
+
lines.push(` ${file}: ${error}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (displayDiagnostics.length > 0) {
|
|
114
|
+
lines.push("");
|
|
115
|
+
for (const { filePath, diagnostic } of displayDiagnostics) {
|
|
116
|
+
lines.push(`${filePath}: ${formatDiagnostic(diagnostic)}`);
|
|
117
|
+
}
|
|
118
|
+
if (wasDiagCapped) {
|
|
119
|
+
lines.push("", `... (${allDiagnostics.length - DEFAULT_MAX_DIAGNOSTICS} more diagnostics not shown)`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return lines.join("\n");
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=directory-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-diagnostics.js","sourceRoot":"","sources":["../../src/lsp/directory-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAc,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAO5F,MAAM,UAAU,yBAAyB,CAAC,GAAW,EAAE,SAAiB,EAAE,QAAgB;IACzF,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS,IAAI,CAAC,UAAkB;QAC/B,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ;YAAE,OAAO;QAErC,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,IAAI,CAAC;YACJ,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACR,OAAO;QACR,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ;gBAAE,OAAO;YAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAEzC,IAAI,IAAuB,CAAC;YAC5B,IAAI,CAAC;gBACJ,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACR,SAAS;YACV,CAAC;YAED,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;gBAAE,SAAS;YAE7C,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChB,CAAC;YACF,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC7D,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACrD,SAAiB,EACjB,SAAiB,EACjB,QAAyB,EACzB,WAAmB,2BAA2B;IAE9C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,mBAAmB,CAC5B,sDAAsD,SAAS,aAAa,SAAS,YAAY,CACjG,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,mBAAmB,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,YAAY,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACrC,MAAM,IAAI,oBAAoB,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IACnC,MAAM,QAAQ,GAAG,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;IAC7C,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEnD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;YACN,cAAc,MAAM,EAAE;YACtB,cAAc,SAAS,EAAE;YACzB,kBAAkB;YAClB,kCAAkC,SAAS,IAAI;SAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,cAAc,GAAqB,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAsC,EAAE,CAAC;IAEzD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC;QACJ,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,2BAA2B,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACrE,cAAc,CAAC,IAAI,CAClB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBAChC,QAAQ,EAAE,IAAI;oBACd,UAAU;iBACV,CAAC,CAAC,CACH,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,UAAU,CAAC,IAAI,CAAC;oBACf,IAAI;oBACJ,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;iBACjD,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;IACF,CAAC;YAAS,CAAC;QACV,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,kBAAkB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,GAAG,uBAAuB,CAAC;IAEtE,MAAM,KAAK,GAAa;QACvB,cAAc,MAAM,EAAE;QACtB,cAAc,SAAS,EAAE;QACzB,kBAAkB,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvF,sBAAsB,UAAU,CAAC,MAAM,EAAE;QACzC,sBAAsB,cAAc,CAAC,MAAM,EAAE;KAC7C,CAAC;IAEF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;QAC1C,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,UAAU,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,kBAAkB,EAAE,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,cAAc,CAAC,MAAM,GAAG,uBAAuB,8BAA8B,CAAC,CAAC;QACvG,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export declare class LspConnectionClosedError extends Error {
|
|
2
|
+
readonly serverId: string;
|
|
3
|
+
readonly root: string;
|
|
4
|
+
readonly name = "LspConnectionClosedError";
|
|
5
|
+
constructor(serverId: string, root: string, message?: string);
|
|
6
|
+
}
|
|
7
|
+
export declare class LspProcessExitedError extends Error {
|
|
8
|
+
readonly serverId: string;
|
|
9
|
+
readonly root: string;
|
|
10
|
+
readonly exitCode: number | null;
|
|
11
|
+
readonly stderrTail?: string | undefined;
|
|
12
|
+
readonly name = "LspProcessExitedError";
|
|
13
|
+
constructor(serverId: string, root: string, exitCode: number | null, stderrTail?: string | undefined);
|
|
14
|
+
}
|
|
15
|
+
export declare class LspRequestTimeoutError extends Error {
|
|
16
|
+
readonly method: string;
|
|
17
|
+
readonly stderrTail?: string | undefined;
|
|
18
|
+
readonly name = "LspRequestTimeoutError";
|
|
19
|
+
constructor(method: string, stderrTail?: string | undefined);
|
|
20
|
+
}
|
|
21
|
+
export declare class LspInvalidPathError extends Error {
|
|
22
|
+
readonly name = "LspInvalidPathError";
|
|
23
|
+
}
|
|
24
|
+
export declare class LspServerLookupError extends Error {
|
|
25
|
+
readonly name = "LspServerLookupError";
|
|
26
|
+
}
|
|
27
|
+
export declare class LspServerInitializingError extends Error {
|
|
28
|
+
readonly originalError: LspRequestTimeoutError;
|
|
29
|
+
readonly name = "LspServerInitializingError";
|
|
30
|
+
constructor(originalError: LspRequestTimeoutError);
|
|
31
|
+
}
|
|
32
|
+
export declare class LspProcessSpawnError extends Error {
|
|
33
|
+
readonly name = "LspProcessSpawnError";
|
|
34
|
+
}
|
|
35
|
+
export declare function isLspDeadConnectionError(err: unknown): err is LspConnectionClosedError | LspProcessExitedError;
|
|
36
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lsp/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,wBAAyB,SAAQ,KAAK;IAIjD,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAJtB,SAAkB,IAAI,8BAA8B;gBAG1C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,MAAM;CAIjB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAI9C,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM;IAN7B,SAAkB,IAAI,2BAA2B;gBAGvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,CAAC,EAAE,MAAM,YAAA;CAK7B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAI/C,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM;IAJ7B,SAAkB,IAAI,4BAA4B;gBAGxC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,YAAA;CAK7B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,SAAkB,IAAI,yBAAyB;CAC/C;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC9C,SAAkB,IAAI,0BAA0B;CAChD;AAED,qBAAa,0BAA2B,SAAQ,KAAK;IAGxC,QAAQ,CAAC,aAAa,EAAE,sBAAsB;IAF1D,SAAkB,IAAI,gCAAgC;gBAEjC,aAAa,EAAE,sBAAsB;CAK1D;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC9C,SAAkB,IAAI,0BAA0B;CAChD;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,wBAAwB,GAAG,qBAAqB,CAE9G"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export class LspConnectionClosedError extends Error {
|
|
2
|
+
constructor(serverId, root, message) {
|
|
3
|
+
super(message ?? `LSP connection closed for ${serverId} at ${root}`);
|
|
4
|
+
this.serverId = serverId;
|
|
5
|
+
this.root = root;
|
|
6
|
+
this.name = "LspConnectionClosedError";
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class LspProcessExitedError extends Error {
|
|
10
|
+
constructor(serverId, root, exitCode, stderrTail) {
|
|
11
|
+
const stderrSuffix = stderrTail ? `\nstderr tail: ${stderrTail}` : "";
|
|
12
|
+
super(`LSP server ${serverId} at ${root} exited with code ${exitCode ?? "null"}${stderrSuffix}`);
|
|
13
|
+
this.serverId = serverId;
|
|
14
|
+
this.root = root;
|
|
15
|
+
this.exitCode = exitCode;
|
|
16
|
+
this.stderrTail = stderrTail;
|
|
17
|
+
this.name = "LspProcessExitedError";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class LspRequestTimeoutError extends Error {
|
|
21
|
+
constructor(method, stderrTail) {
|
|
22
|
+
const stderrSuffix = stderrTail ? `\nrecent stderr: ${stderrTail}` : "";
|
|
23
|
+
super(`LSP request timeout (method: ${method})${stderrSuffix}`);
|
|
24
|
+
this.method = method;
|
|
25
|
+
this.stderrTail = stderrTail;
|
|
26
|
+
this.name = "LspRequestTimeoutError";
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export class LspInvalidPathError extends Error {
|
|
30
|
+
constructor() {
|
|
31
|
+
super(...arguments);
|
|
32
|
+
this.name = "LspInvalidPathError";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class LspServerLookupError extends Error {
|
|
36
|
+
constructor() {
|
|
37
|
+
super(...arguments);
|
|
38
|
+
this.name = "LspServerLookupError";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export class LspServerInitializingError extends Error {
|
|
42
|
+
constructor(originalError) {
|
|
43
|
+
super(`LSP server is still initializing. Please retry in a few seconds. Original error: ${originalError.message}`);
|
|
44
|
+
this.originalError = originalError;
|
|
45
|
+
this.name = "LspServerInitializingError";
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export class LspProcessSpawnError extends Error {
|
|
49
|
+
constructor() {
|
|
50
|
+
super(...arguments);
|
|
51
|
+
this.name = "LspProcessSpawnError";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function isLspDeadConnectionError(err) {
|
|
55
|
+
return err instanceof LspConnectionClosedError || err instanceof LspProcessExitedError;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lsp/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAGlD,YACU,QAAgB,EAChB,IAAY,EACrB,OAAgB;QAEhB,KAAK,CAAC,OAAO,IAAI,6BAA6B,QAAQ,OAAO,IAAI,EAAE,CAAC,CAAC;QAJ5D,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAAQ;QAJJ,SAAI,GAAG,0BAA0B,CAAC;IAQpD,CAAC;CACD;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAG/C,YACU,QAAgB,EAChB,IAAY,EACZ,QAAuB,EACvB,UAAmB;QAE5B,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,KAAK,CAAC,cAAc,QAAQ,OAAO,IAAI,qBAAqB,QAAQ,IAAI,MAAM,GAAG,YAAY,EAAE,CAAC,CAAC;QANxF,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAe;QACvB,eAAU,GAAV,UAAU,CAAS;QANX,SAAI,GAAG,uBAAuB,CAAC;IAUjD,CAAC;CACD;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAGhD,YACU,MAAc,EACd,UAAmB;QAE5B,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,KAAK,CAAC,gCAAgC,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC;QAJvD,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAS;QAJX,SAAI,GAAG,wBAAwB,CAAC;IAQlD,CAAC;CACD;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAA9C;;QACmB,SAAI,GAAG,qBAAqB,CAAC;IAChD,CAAC;CAAA;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAA/C;;QACmB,SAAI,GAAG,sBAAsB,CAAC;IACjD,CAAC;CAAA;AAED,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAGpD,YAAqB,aAAqC;QACzD,KAAK,CACJ,oFAAoF,aAAa,CAAC,OAAO,EAAE,CAC3G,CAAC;QAHkB,kBAAa,GAAb,aAAa,CAAwB;QAFxC,SAAI,GAAG,4BAA4B,CAAC;IAMtD,CAAC;CACD;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAA/C;;QACmB,SAAI,GAAG,sBAAsB,CAAC;IACjD,CAAC;CAAA;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAY;IACpD,OAAO,GAAG,YAAY,wBAAwB,IAAI,GAAG,YAAY,qBAAqB,CAAC;AACxF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Diagnostic, DocumentSymbol, Location, LocationLink, PrepareRenameDefaultBehavior, PrepareRenameResult, Range, SeverityFilter, SymbolInfo } from "./types.js";
|
|
2
|
+
import type { ApplyResult } from "./workspace-edit.js";
|
|
3
|
+
export declare function uriToPath(uri: string): string;
|
|
4
|
+
export declare function formatLocation(loc: Location | LocationLink): string;
|
|
5
|
+
export declare function formatSymbolKind(kind: number): string;
|
|
6
|
+
export declare function formatSeverity(severity: number | undefined): string;
|
|
7
|
+
export declare function formatDocumentSymbol(symbol: DocumentSymbol, indent?: number): string;
|
|
8
|
+
export declare function formatSymbolInfo(symbol: SymbolInfo): string;
|
|
9
|
+
export declare function formatDiagnostic(diag: Diagnostic): string;
|
|
10
|
+
export declare function filterDiagnosticsBySeverity(diagnostics: Diagnostic[], severityFilter?: SeverityFilter): Diagnostic[];
|
|
11
|
+
export declare function formatPrepareRenameResult(result: PrepareRenameResult | PrepareRenameDefaultBehavior | Range | null): string;
|
|
12
|
+
export declare function formatApplyResult(result: ApplyResult): string;
|
|
13
|
+
//# sourceMappingURL=formatters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/lsp/formatters.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,UAAU,EACV,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,4BAA4B,EAC5B,mBAAmB,EACnB,KAAK,EACL,cAAc,EACd,UAAU,EACV,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,CAYnE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGnE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,SAAI,GAAG,MAAM,CAa/E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAK3D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAOzD;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,UAAU,EAAE,CAepH;AAED,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,mBAAmB,GAAG,4BAA4B,GAAG,KAAK,GAAG,IAAI,GACvE,MAAM,CAyBR;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAmB7D"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { fileURLToPath } from "node:url";
|
|
2
|
+
import { SEVERITY_MAP, SYMBOL_KIND_MAP } from "./language-mappings.js";
|
|
3
|
+
export function uriToPath(uri) {
|
|
4
|
+
return fileURLToPath(uri);
|
|
5
|
+
}
|
|
6
|
+
export function formatLocation(loc) {
|
|
7
|
+
if ("targetUri" in loc) {
|
|
8
|
+
const uri = uriToPath(loc.targetUri);
|
|
9
|
+
const line = loc.targetRange.start.line + 1;
|
|
10
|
+
const char = loc.targetRange.start.character;
|
|
11
|
+
return `${uri}:${line}:${char}`;
|
|
12
|
+
}
|
|
13
|
+
const uri = uriToPath(loc.uri);
|
|
14
|
+
const line = loc.range.start.line + 1;
|
|
15
|
+
const char = loc.range.start.character;
|
|
16
|
+
return `${uri}:${line}:${char}`;
|
|
17
|
+
}
|
|
18
|
+
export function formatSymbolKind(kind) {
|
|
19
|
+
return SYMBOL_KIND_MAP[kind] ?? `Unknown(${kind})`;
|
|
20
|
+
}
|
|
21
|
+
export function formatSeverity(severity) {
|
|
22
|
+
if (!severity)
|
|
23
|
+
return "unknown";
|
|
24
|
+
return SEVERITY_MAP[severity] ?? `unknown(${severity})`;
|
|
25
|
+
}
|
|
26
|
+
export function formatDocumentSymbol(symbol, indent = 0) {
|
|
27
|
+
const prefix = " ".repeat(indent);
|
|
28
|
+
const kind = formatSymbolKind(symbol.kind);
|
|
29
|
+
const line = symbol.range.start.line + 1;
|
|
30
|
+
let result = `${prefix}${symbol.name} (${kind}) - line ${line}`;
|
|
31
|
+
if (symbol.children && symbol.children.length > 0) {
|
|
32
|
+
for (const child of symbol.children) {
|
|
33
|
+
result += `\n${formatDocumentSymbol(child, indent + 1)}`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
export function formatSymbolInfo(symbol) {
|
|
39
|
+
const kind = formatSymbolKind(symbol.kind);
|
|
40
|
+
const loc = formatLocation(symbol.location);
|
|
41
|
+
const container = symbol.containerName ? ` (in ${symbol.containerName})` : "";
|
|
42
|
+
return `${symbol.name} (${kind})${container} - ${loc}`;
|
|
43
|
+
}
|
|
44
|
+
export function formatDiagnostic(diag) {
|
|
45
|
+
const severity = formatSeverity(diag.severity);
|
|
46
|
+
const line = diag.range.start.line + 1;
|
|
47
|
+
const char = diag.range.start.character;
|
|
48
|
+
const source = diag.source ? `[${diag.source}]` : "";
|
|
49
|
+
const code = diag.code ? ` (${diag.code})` : "";
|
|
50
|
+
return `${severity}${source}${code} at ${line}:${char}: ${diag.message}`;
|
|
51
|
+
}
|
|
52
|
+
export function filterDiagnosticsBySeverity(diagnostics, severityFilter) {
|
|
53
|
+
if (!severityFilter || severityFilter === "all") {
|
|
54
|
+
return diagnostics;
|
|
55
|
+
}
|
|
56
|
+
const severityMap = {
|
|
57
|
+
error: 1,
|
|
58
|
+
warning: 2,
|
|
59
|
+
information: 3,
|
|
60
|
+
hint: 4,
|
|
61
|
+
};
|
|
62
|
+
const targetSeverity = severityMap[severityFilter];
|
|
63
|
+
if (targetSeverity === undefined)
|
|
64
|
+
return diagnostics;
|
|
65
|
+
return diagnostics.filter((d) => d.severity === targetSeverity);
|
|
66
|
+
}
|
|
67
|
+
export function formatPrepareRenameResult(result) {
|
|
68
|
+
if (!result)
|
|
69
|
+
return "Cannot rename at this position";
|
|
70
|
+
if ("defaultBehavior" in result) {
|
|
71
|
+
return result.defaultBehavior ? "Rename supported (using default behavior)" : "Cannot rename at this position";
|
|
72
|
+
}
|
|
73
|
+
if ("range" in result && result.range) {
|
|
74
|
+
const startLine = result.range.start.line + 1;
|
|
75
|
+
const startChar = result.range.start.character;
|
|
76
|
+
const endLine = result.range.end.line + 1;
|
|
77
|
+
const endChar = result.range.end.character;
|
|
78
|
+
const placeholder = result.placeholder ? ` (current: "${result.placeholder}")` : "";
|
|
79
|
+
return `Rename available at ${startLine}:${startChar}-${endLine}:${endChar}${placeholder}`;
|
|
80
|
+
}
|
|
81
|
+
if ("start" in result && "end" in result) {
|
|
82
|
+
const startLine = result.start.line + 1;
|
|
83
|
+
const startChar = result.start.character;
|
|
84
|
+
const endLine = result.end.line + 1;
|
|
85
|
+
const endChar = result.end.character;
|
|
86
|
+
return `Rename available at ${startLine}:${startChar}-${endLine}:${endChar}`;
|
|
87
|
+
}
|
|
88
|
+
return "Cannot rename at this position";
|
|
89
|
+
}
|
|
90
|
+
export function formatApplyResult(result) {
|
|
91
|
+
const lines = [];
|
|
92
|
+
if (result.success) {
|
|
93
|
+
lines.push(`Applied ${result.totalEdits} edit(s) to ${result.filesModified.length} file(s):`);
|
|
94
|
+
for (const file of result.filesModified) {
|
|
95
|
+
lines.push(` - ${file}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
lines.push("Failed to apply some changes:");
|
|
100
|
+
for (const err of result.errors) {
|
|
101
|
+
lines.push(` Error: ${err}`);
|
|
102
|
+
}
|
|
103
|
+
if (result.filesModified.length > 0) {
|
|
104
|
+
lines.push(`Successfully modified: ${result.filesModified.join(", ")}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return lines.join("\n");
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/lsp/formatters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer-extension.d.ts","sourceRoot":"","sources":["../../src/lsp/infer-extension.ts"],"names":[],"mappings":"AAQA,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwD5E"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { lstatSync, readdirSync } from "node:fs";
|
|
2
|
+
import { extname, join } from "node:path";
|
|
3
|
+
import { EXT_TO_LANG } from "./language-mappings.js";
|
|
4
|
+
const SKIP_DIRECTORIES = new Set(["node_modules", ".git", "dist", "build", ".next", "out"]);
|
|
5
|
+
const MAX_SCAN_ENTRIES = 500;
|
|
6
|
+
export function inferExtensionFromDirectory(directory) {
|
|
7
|
+
const extensionCounts = new Map();
|
|
8
|
+
let scanned = 0;
|
|
9
|
+
function walk(dir) {
|
|
10
|
+
if (scanned >= MAX_SCAN_ENTRIES)
|
|
11
|
+
return;
|
|
12
|
+
let entries;
|
|
13
|
+
try {
|
|
14
|
+
entries = readdirSync(dir);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
for (const entry of entries) {
|
|
20
|
+
if (scanned >= MAX_SCAN_ENTRIES)
|
|
21
|
+
return;
|
|
22
|
+
const fullPath = join(dir, entry);
|
|
23
|
+
let stat;
|
|
24
|
+
try {
|
|
25
|
+
stat = lstatSync(fullPath);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (stat.isSymbolicLink())
|
|
31
|
+
continue;
|
|
32
|
+
scanned++;
|
|
33
|
+
if (stat.isDirectory()) {
|
|
34
|
+
if (!SKIP_DIRECTORIES.has(entry)) {
|
|
35
|
+
walk(fullPath);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else if (stat.isFile()) {
|
|
39
|
+
const ext = extname(fullPath);
|
|
40
|
+
if (ext && ext in EXT_TO_LANG) {
|
|
41
|
+
extensionCounts.set(ext, (extensionCounts.get(ext) ?? 0) + 1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
walk(directory);
|
|
47
|
+
if (extensionCounts.size === 0)
|
|
48
|
+
return null;
|
|
49
|
+
let maxExt = "";
|
|
50
|
+
let maxCount = 0;
|
|
51
|
+
for (const [ext, count] of extensionCounts) {
|
|
52
|
+
if (count > maxCount) {
|
|
53
|
+
maxCount = count;
|
|
54
|
+
maxExt = ext;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return maxExt || null;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=infer-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer-extension.js","sourceRoot":"","sources":["../../src/lsp/infer-extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5F,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,MAAM,UAAU,2BAA2B,CAAC,SAAiB;IAC5D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,SAAS,IAAI,CAAC,GAAW;QACxB,IAAI,OAAO,IAAI,gBAAgB;YAAE,OAAO;QAExC,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACJ,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACR,OAAO;QACR,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,OAAO,IAAI,gBAAgB;gBAAE,OAAO;YAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAElC,IAAI,IAA8C,CAAC;YACnD,IAAI,CAAC;gBACJ,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACR,SAAS;YACV,CAAC;YAED,IAAI,IAAI,CAAC,cAAc,EAAE;gBAAE,SAAS;YACpC,OAAO,EAAE,CAAC;YAEV,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChB,CAAC;YACF,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC9B,IAAI,GAAG,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;oBAC/B,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/D,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,CAAC;IAEhB,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;QAC5C,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;YACtB,QAAQ,GAAG,KAAK,CAAC;YACjB,MAAM,GAAG,GAAG,CAAC;QACd,CAAC;IACF,CAAC;IAED,OAAO,MAAM,IAAI,IAAI,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
type NotificationHandler = (params: unknown) => void;
|
|
2
|
+
type RequestHandler = (params: unknown) => Promise<unknown> | unknown;
|
|
3
|
+
export declare class JsonRpcConnection {
|
|
4
|
+
private readonly reader;
|
|
5
|
+
private readonly writer;
|
|
6
|
+
private readonly pendingRequests;
|
|
7
|
+
private readonly notificationHandlers;
|
|
8
|
+
private readonly requestHandlers;
|
|
9
|
+
private readonly closeHandlers;
|
|
10
|
+
private readonly errorHandlers;
|
|
11
|
+
private inputBuffer;
|
|
12
|
+
private nextRequestId;
|
|
13
|
+
private listening;
|
|
14
|
+
private disposed;
|
|
15
|
+
constructor(reader: NodeJS.ReadableStream, writer: NodeJS.WritableStream);
|
|
16
|
+
listen(): void;
|
|
17
|
+
onNotification(method: string, handler: NotificationHandler): void;
|
|
18
|
+
onRequest(method: string, handler: RequestHandler): void;
|
|
19
|
+
onClose(handler: () => void): void;
|
|
20
|
+
onError(handler: (error: Error) => void): void;
|
|
21
|
+
sendRequest<T>(method: string, params?: unknown): Promise<T>;
|
|
22
|
+
sendNotification(method: string, params?: unknown): Promise<void>;
|
|
23
|
+
dispose(): void;
|
|
24
|
+
private readonly handleData;
|
|
25
|
+
private readonly handleClose;
|
|
26
|
+
private readonly handleStreamError;
|
|
27
|
+
private drainInputBuffer;
|
|
28
|
+
private dispatchBody;
|
|
29
|
+
private handleResponse;
|
|
30
|
+
private handleNotification;
|
|
31
|
+
private handleRequest;
|
|
32
|
+
private writeError;
|
|
33
|
+
private writeMessage;
|
|
34
|
+
private emitError;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=json-rpc-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-rpc-connection.d.ts","sourceRoot":"","sources":["../../src/lsp/json-rpc-connection.ts"],"names":[],"mappings":"AAOA,KAAK,mBAAmB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AACrD,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAQtE,qBAAa,iBAAiB;IAY5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IACrE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0C;IAC/E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IACrE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqC;IACnE,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;gBAGP,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,MAAM,EAAE,MAAM,CAAC,cAAc;IAG/C,MAAM,IAAI,IAAI;IAUd,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAIlE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAIxD,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAIlC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAIxC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IA0B5D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvE,OAAO,IAAI,IAAI;IAgBf,OAAO,CAAC,QAAQ,CAAC,UAAU,CAIzB;IAEF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAI1B;IAEF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAEhC;IAEF,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,YAAY;IAuCpB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,aAAa;YA2BP,UAAU;IAIxB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,SAAS;CAKjB"}
|