@zachsents/ts-mcp 0.3.2 → 0.3.5
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/README.md +4 -60
- package/dist/index.js +43 -28
- package/dist/index.js.map +1 -1
- package/dist/lsp-client.js +270 -109
- package/dist/lsp-client.js.map +1 -1
- package/dist/pool.js +87 -22
- package/dist/pool.js.map +1 -1
- package/dist/resolve-binary.js +5 -3
- package/dist/resolve-binary.js.map +1 -1
- package/package.json +14 -9
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Give AI agents TypeScript type inference — no editor required.**
|
|
4
4
|
|
|
5
|
-
A standalone MCP server that provides TypeScript type information using [tsgo](https://github.com/nicolo-ribaudo/tc39-proposal-type-annotations) (the native Go-based TypeScript compiler). Works with any MCP client
|
|
5
|
+
A standalone MCP server that provides TypeScript type information using [tsgo](https://github.com/nicolo-ribaudo/tc39-proposal-type-annotations) (the native Go-based TypeScript compiler). Works with any MCP client that supports stdio MCP servers.
|
|
6
6
|
|
|
7
7
|
No running editor needed. It spawns and manages tsgo LSP instances directly, keeping them warm for fast subsequent queries.
|
|
8
8
|
|
|
@@ -22,71 +22,15 @@ yarn global add @typescript/native-preview
|
|
|
22
22
|
|
|
23
23
|
## Install
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
[](https://cursor.com/en/install-mcp?name=ts-hover&config=eyJjb21tYW5kIjoibnB4IC15IEB6YWNoc2VudHMvdHMtbWNwIn0%3D)
|
|
28
|
-
|
|
29
|
-
Or manually add to `.cursor/mcp.json`:
|
|
30
|
-
|
|
31
|
-
```json
|
|
32
|
-
{
|
|
33
|
-
"mcpServers": {
|
|
34
|
-
"ts-hover": {
|
|
35
|
-
"command": "npx",
|
|
36
|
-
"args": ["-y", "@zachsents/ts-mcp"]
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### VS Code
|
|
43
|
-
|
|
44
|
-
Add to your User Settings (JSON):
|
|
45
|
-
|
|
46
|
-
```json
|
|
47
|
-
{
|
|
48
|
-
"mcp": {
|
|
49
|
-
"servers": {
|
|
50
|
-
"ts-hover": {
|
|
51
|
-
"command": "npx",
|
|
52
|
-
"args": ["-y", "@zachsents/ts-mcp"]
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Claude Desktop
|
|
60
|
-
|
|
61
|
-
Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
|
|
62
|
-
|
|
63
|
-
```json
|
|
64
|
-
{
|
|
65
|
-
"mcpServers": {
|
|
66
|
-
"ts-hover": {
|
|
67
|
-
"command": "npx",
|
|
68
|
-
"args": ["-y", "@zachsents/ts-mcp"]
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### Claude Code
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
claude mcp add-json ts-hover '{"command":"npx","args":["-y","@zachsents/ts-mcp"]}'
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Windsurf
|
|
81
|
-
|
|
82
|
-
Add to your Windsurf MCP config:
|
|
25
|
+
Add an MCP server named `ts-hover`:
|
|
83
26
|
|
|
84
27
|
```json
|
|
85
28
|
{
|
|
86
29
|
"mcpServers": {
|
|
87
30
|
"ts-hover": {
|
|
88
31
|
"command": "npx",
|
|
89
|
-
"args": ["-y", "@zachsents/ts-mcp"]
|
|
32
|
+
"args": ["-y", "@zachsents/ts-mcp"],
|
|
33
|
+
"cwd": "/tmp"
|
|
90
34
|
}
|
|
91
35
|
}
|
|
92
36
|
}
|
package/dist/index.js
CHANGED
|
@@ -5,8 +5,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { TsgoPool } from "./pool.js";
|
|
7
7
|
import { resolveTsgoBinary } from "./resolve-binary.js";
|
|
8
|
-
const
|
|
9
|
-
const pool = new TsgoPool(binaryPath);
|
|
8
|
+
const pool = new TsgoPool(resolveTsgoBinary());
|
|
10
9
|
const server = new McpServer({
|
|
11
10
|
name: "ts-hover",
|
|
12
11
|
version: "0.3.0",
|
|
@@ -55,8 +54,7 @@ server.registerTool("diagnostics", {
|
|
|
55
54
|
}
|
|
56
55
|
const parts = [];
|
|
57
56
|
for (const d of diagnostics) {
|
|
58
|
-
|
|
59
|
-
parts.push(`${d.line}:${d.character} ${d.severity}${code}: ${d.message}`);
|
|
57
|
+
parts.push(`${d.line}:${d.character} ${d.severity}${d.code != null ? ` TS${d.code}` : ""}: ${d.message}`);
|
|
60
58
|
}
|
|
61
59
|
const fixes = actions.filter((a) => a.kind?.startsWith("quickfix"));
|
|
62
60
|
const sourceActions = actions.filter((a) => a.kind?.startsWith("source"));
|
|
@@ -101,11 +99,15 @@ server.registerTool("references", {
|
|
|
101
99
|
content: [{ type: "text", text: "No references found." }],
|
|
102
100
|
};
|
|
103
101
|
}
|
|
104
|
-
const text = locations
|
|
105
|
-
.map((loc) => `${loc.file}:${loc.line}:${loc.character}`)
|
|
106
|
-
.join("\n");
|
|
107
102
|
return {
|
|
108
|
-
content: [
|
|
103
|
+
content: [
|
|
104
|
+
{
|
|
105
|
+
type: "text",
|
|
106
|
+
text: locations
|
|
107
|
+
.map((loc) => `${loc.file}:${loc.line}:${loc.character}`)
|
|
108
|
+
.join("\n"),
|
|
109
|
+
},
|
|
110
|
+
],
|
|
109
111
|
};
|
|
110
112
|
});
|
|
111
113
|
server.registerTool("outline", {
|
|
@@ -184,23 +186,38 @@ server.registerTool("inlay_hints", {
|
|
|
184
186
|
content: [{ type: "text", text: "No inlay hints." }],
|
|
185
187
|
};
|
|
186
188
|
}
|
|
187
|
-
const text = hints
|
|
188
|
-
.map((h) => `${h.line}:${h.character} ${h.kind}: ${h.text}`)
|
|
189
|
-
.join("\n");
|
|
190
189
|
return {
|
|
191
|
-
content: [
|
|
190
|
+
content: [
|
|
191
|
+
{
|
|
192
|
+
type: "text",
|
|
193
|
+
text: hints
|
|
194
|
+
.map((h) => `${h.line}:${h.character} ${h.kind}: ${h.text}`)
|
|
195
|
+
.join("\n"),
|
|
196
|
+
},
|
|
197
|
+
],
|
|
192
198
|
};
|
|
193
199
|
});
|
|
194
|
-
/**
|
|
200
|
+
/**
|
|
201
|
+
* Recursively format a symbol tree with indentation
|
|
202
|
+
*
|
|
203
|
+
* @param symbols - Symbols at the current tree level.
|
|
204
|
+
* @param lines - Output lines accumulated during traversal.
|
|
205
|
+
* @param depth - Current indentation depth.
|
|
206
|
+
*/
|
|
195
207
|
function formatSymbolTree(symbols, lines, depth) {
|
|
196
|
-
const indent = " ".repeat(depth);
|
|
197
208
|
for (const sym of symbols) {
|
|
198
|
-
lines.push(`${
|
|
209
|
+
lines.push(`${" ".repeat(depth)}${sym.kind} ${sym.name} (line ${sym.line})`);
|
|
199
210
|
if (sym.children.length > 0) {
|
|
200
211
|
formatSymbolTree(sym.children, lines, depth + 1);
|
|
201
212
|
}
|
|
202
213
|
}
|
|
203
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* Format an LSP text edit for CLI output.
|
|
217
|
+
*
|
|
218
|
+
* @param edit - Text edit to render.
|
|
219
|
+
* @returns A human-readable summary of the edit.
|
|
220
|
+
*/
|
|
204
221
|
function formatTextEdit(edit) {
|
|
205
222
|
const loc = ` ${edit.file}:${edit.startLine}:${edit.startCharacter}`;
|
|
206
223
|
if (edit.newText === "") {
|
|
@@ -218,31 +235,29 @@ function formatTextEdit(edit) {
|
|
|
218
235
|
/**
|
|
219
236
|
* Apply LSP text edits to a file. Edits are sorted bottom-to-top so earlier
|
|
220
237
|
* positions aren't shifted by later replacements.
|
|
238
|
+
*
|
|
239
|
+
* @param filePath - Absolute path to the file being edited.
|
|
240
|
+
* @param edits - LSP edits to apply.
|
|
221
241
|
*/
|
|
222
242
|
async function applyEdits(filePath, edits) {
|
|
223
|
-
const
|
|
224
|
-
const
|
|
225
|
-
const sorted = [...edits].toSorted((a, b) => {
|
|
243
|
+
const lines = (await readFile(filePath, "utf-8")).split("\n");
|
|
244
|
+
for (const edit of [...edits].toSorted((a, b) => {
|
|
226
245
|
if (a.startLine !== b.startLine)
|
|
227
246
|
return b.startLine - a.startLine;
|
|
228
247
|
return b.startCharacter - a.startCharacter;
|
|
229
|
-
})
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
const before = startLine.slice(0, edit.startCharacter);
|
|
234
|
-
const after = endLine.slice(edit.endCharacter);
|
|
235
|
-
const replacement = (before + edit.newText + after).split("\n");
|
|
236
|
-
lines.splice(edit.startLine, edit.endLine - edit.startLine + 1, ...replacement);
|
|
248
|
+
})) {
|
|
249
|
+
lines.splice(edit.startLine, edit.endLine - edit.startLine + 1, ...((lines[edit.startLine] ?? "").slice(0, edit.startCharacter) +
|
|
250
|
+
edit.newText +
|
|
251
|
+
(lines[edit.endLine] ?? "").slice(edit.endCharacter)).split("\n"));
|
|
237
252
|
}
|
|
238
253
|
await writeFile(filePath, lines.join("\n"));
|
|
239
254
|
}
|
|
255
|
+
/** Shut down the client pool before exiting. */
|
|
240
256
|
async function cleanup() {
|
|
241
257
|
await pool.shutdown();
|
|
242
258
|
process.exit(0);
|
|
243
259
|
}
|
|
244
260
|
process.on("SIGINT", cleanup);
|
|
245
261
|
process.on("SIGTERM", cleanup);
|
|
246
|
-
|
|
247
|
-
await server.connect(transport);
|
|
262
|
+
await server.connect(new StdioServerTransport());
|
|
248
263
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lsp-client.js
CHANGED
|
@@ -3,6 +3,7 @@ import { readFile } from "node:fs/promises";
|
|
|
3
3
|
import { extname } from "node:path";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
const REQUEST_TIMEOUT_MS = 30_000;
|
|
6
|
+
/** JSON-RPC response and server-request envelope accepted from tsgo. */
|
|
6
7
|
const jsonRpcMessageSchema = z.object({
|
|
7
8
|
jsonrpc: z.literal("2.0"),
|
|
8
9
|
id: z.union([z.number(), z.string()]).optional(),
|
|
@@ -17,22 +18,12 @@ const jsonRpcMessageSchema = z.object({
|
|
|
17
18
|
})
|
|
18
19
|
.optional(),
|
|
19
20
|
});
|
|
20
|
-
|
|
21
|
-
contents: z.unknown(),
|
|
22
|
-
});
|
|
23
|
-
/** MarkupContent shape: `{ kind, value }` or just a raw `{ value }` string */
|
|
24
|
-
const markupContentSchema = z.object({ value: z.string() });
|
|
25
|
-
// Shared LSP building blocks
|
|
21
|
+
/** Shared LSP position shape. */
|
|
26
22
|
const positionSchema = z.object({ line: z.number(), character: z.number() });
|
|
27
23
|
const rangeSchema = z.object({ start: positionSchema, end: positionSchema });
|
|
28
|
-
|
|
24
|
+
/** Location shape returned by definition and reference requests. */
|
|
29
25
|
const locationSchema = z.object({ uri: z.string(), range: rangeSchema });
|
|
30
|
-
|
|
31
|
-
targetUri: z.string(),
|
|
32
|
-
targetRange: rangeSchema,
|
|
33
|
-
targetSelectionRange: rangeSchema.optional(),
|
|
34
|
-
});
|
|
35
|
-
// Diagnostics
|
|
26
|
+
/** Diagnostic item shape returned by tsgo. */
|
|
36
27
|
const diagnosticItemSchema = z.object({
|
|
37
28
|
range: rangeSchema,
|
|
38
29
|
severity: z.number().optional(),
|
|
@@ -40,30 +31,9 @@ const diagnosticItemSchema = z.object({
|
|
|
40
31
|
source: z.string().optional(),
|
|
41
32
|
message: z.string(),
|
|
42
33
|
});
|
|
43
|
-
|
|
44
|
-
kind: z.string(),
|
|
45
|
-
items: z.array(diagnosticItemSchema),
|
|
46
|
-
});
|
|
47
|
-
// Code actions
|
|
34
|
+
/** Text-edit shape shared by code actions and workspace edits. */
|
|
48
35
|
const textEditSchema = z.object({ range: rangeSchema, newText: z.string() });
|
|
49
|
-
const codeActionSchema = z.object({
|
|
50
|
-
title: z.string(),
|
|
51
|
-
kind: z.string().optional(),
|
|
52
|
-
diagnostics: z.array(diagnosticItemSchema).optional(),
|
|
53
|
-
edit: z
|
|
54
|
-
.object({
|
|
55
|
-
changes: z.record(z.string(), z.array(textEditSchema)).optional(),
|
|
56
|
-
})
|
|
57
|
-
.optional(),
|
|
58
|
-
});
|
|
59
36
|
const SEVERITY_LABELS = ["", "error", "warning", "info", "hint"];
|
|
60
|
-
// Document symbols — tsgo returns flat SymbolInformation[], not hierarchical
|
|
61
|
-
const symbolInformationSchema = z.object({
|
|
62
|
-
name: z.string(),
|
|
63
|
-
kind: z.number(),
|
|
64
|
-
containerName: z.string().optional(),
|
|
65
|
-
location: locationSchema,
|
|
66
|
-
});
|
|
67
37
|
const SYMBOL_KIND_LABELS = {
|
|
68
38
|
1: "file",
|
|
69
39
|
2: "module",
|
|
@@ -81,20 +51,6 @@ const SYMBOL_KIND_LABELS = {
|
|
|
81
51
|
22: "enum member",
|
|
82
52
|
26: "type parameter",
|
|
83
53
|
};
|
|
84
|
-
// Workspace edit (shared by rename and code actions)
|
|
85
|
-
const workspaceEditSchema = z.object({
|
|
86
|
-
changes: z.record(z.string(), z.array(textEditSchema)).optional(),
|
|
87
|
-
});
|
|
88
|
-
// Inlay hints
|
|
89
|
-
const inlayHintLabelSchema = z.union([
|
|
90
|
-
z.string(),
|
|
91
|
-
z.array(z.object({ value: z.string() })),
|
|
92
|
-
]);
|
|
93
|
-
const inlayHintSchema = z.object({
|
|
94
|
-
position: positionSchema,
|
|
95
|
-
label: inlayHintLabelSchema,
|
|
96
|
-
kind: z.number().optional(),
|
|
97
|
-
});
|
|
98
54
|
const INLAY_HINT_KIND_LABELS = {
|
|
99
55
|
1: "type",
|
|
100
56
|
2: "parameter",
|
|
@@ -114,6 +70,13 @@ export class LspClient {
|
|
|
114
70
|
buffer = Buffer.alloc(0);
|
|
115
71
|
documents = new Map();
|
|
116
72
|
alive = true;
|
|
73
|
+
/**
|
|
74
|
+
* Start a tsgo LSP child process.
|
|
75
|
+
*
|
|
76
|
+
* @param binaryPath - Absolute path to the tsgo native binary.
|
|
77
|
+
* @param rootUri - LSP root URI for the project.
|
|
78
|
+
* @throws When the child process does not expose piped stdio.
|
|
79
|
+
*/
|
|
117
80
|
constructor(binaryPath, rootUri) {
|
|
118
81
|
this.rootUri = rootUri;
|
|
119
82
|
this.proc = spawn(binaryPath, ["--lsp", "--stdio"], {
|
|
@@ -136,16 +99,30 @@ export class LspClient {
|
|
|
136
99
|
this.pending.clear();
|
|
137
100
|
});
|
|
138
101
|
}
|
|
139
|
-
/**
|
|
102
|
+
/**
|
|
103
|
+
* Create and initialize a new LSP client for a project root
|
|
104
|
+
*
|
|
105
|
+
* @param binaryPath - Absolute path to the tsgo native binary.
|
|
106
|
+
* @param rootUri - LSP root URI for the project.
|
|
107
|
+
* @returns An initialized LSP client.
|
|
108
|
+
*/
|
|
140
109
|
static async create(binaryPath, rootUri) {
|
|
141
110
|
const client = new LspClient(binaryPath, rootUri);
|
|
142
111
|
await client.initialize();
|
|
143
112
|
return client;
|
|
144
113
|
}
|
|
114
|
+
/** @returns Whether the child process is available for requests. */
|
|
145
115
|
get isAlive() {
|
|
146
116
|
return this.alive;
|
|
147
117
|
}
|
|
148
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* Get hover information at a position in a file
|
|
120
|
+
*
|
|
121
|
+
* @param filePath - Absolute path to the source file.
|
|
122
|
+
* @param line - Zero-based source line.
|
|
123
|
+
* @param character - Zero-based character offset.
|
|
124
|
+
* @returns Rendered hover content, or null when unavailable.
|
|
125
|
+
*/
|
|
149
126
|
async hover(filePath, line, character) {
|
|
150
127
|
if (!this.alive)
|
|
151
128
|
throw new Error("LSP client is not alive");
|
|
@@ -155,12 +132,19 @@ export class LspClient {
|
|
|
155
132
|
textDocument: { uri },
|
|
156
133
|
position: { line, character },
|
|
157
134
|
});
|
|
158
|
-
const parsed =
|
|
135
|
+
const parsed = z.object({ contents: z.unknown() }).safeParse(result);
|
|
159
136
|
if (!parsed.success)
|
|
160
137
|
return null;
|
|
161
138
|
return formatHoverContents(parsed.data.contents);
|
|
162
139
|
}
|
|
163
|
-
/**
|
|
140
|
+
/**
|
|
141
|
+
* Get definition location(s) for a symbol at a position
|
|
142
|
+
*
|
|
143
|
+
* @param filePath - Absolute path to the source file.
|
|
144
|
+
* @param line - Zero-based source line.
|
|
145
|
+
* @param character - Zero-based character offset.
|
|
146
|
+
* @returns Definition locations reported for the selected symbol.
|
|
147
|
+
*/
|
|
164
148
|
async definition(filePath, line, character) {
|
|
165
149
|
if (!this.alive)
|
|
166
150
|
throw new Error("LSP client is not alive");
|
|
@@ -172,7 +156,12 @@ export class LspClient {
|
|
|
172
156
|
});
|
|
173
157
|
return parseLocations(result);
|
|
174
158
|
}
|
|
175
|
-
/**
|
|
159
|
+
/**
|
|
160
|
+
* Pull diagnostics for a file
|
|
161
|
+
*
|
|
162
|
+
* @param filePath - Absolute path to the source file.
|
|
163
|
+
* @returns Diagnostics reported for the file.
|
|
164
|
+
*/
|
|
176
165
|
async diagnostics(filePath) {
|
|
177
166
|
if (!this.alive)
|
|
178
167
|
throw new Error("LSP client is not alive");
|
|
@@ -181,44 +170,74 @@ export class LspClient {
|
|
|
181
170
|
const result = await this.sendRequest("textDocument/diagnostic", {
|
|
182
171
|
textDocument: { uri },
|
|
183
172
|
});
|
|
184
|
-
const parsed =
|
|
173
|
+
const parsed = z
|
|
174
|
+
.object({
|
|
175
|
+
kind: z.string(),
|
|
176
|
+
items: z.array(diagnosticItemSchema),
|
|
177
|
+
})
|
|
178
|
+
.safeParse(result);
|
|
185
179
|
if (!parsed.success)
|
|
186
180
|
return [];
|
|
187
|
-
return parsed.data.items.map((
|
|
188
|
-
line:
|
|
189
|
-
character:
|
|
190
|
-
endLine:
|
|
191
|
-
endCharacter:
|
|
192
|
-
severity: SEVERITY_LABELS[
|
|
193
|
-
message
|
|
194
|
-
code
|
|
181
|
+
return parsed.data.items.map(({ code, message, range, severity }) => ({
|
|
182
|
+
line: range.start.line,
|
|
183
|
+
character: range.start.character,
|
|
184
|
+
endLine: range.end.line,
|
|
185
|
+
endCharacter: range.end.character,
|
|
186
|
+
severity: SEVERITY_LABELS[severity ?? 1] ?? "error",
|
|
187
|
+
message,
|
|
188
|
+
code,
|
|
195
189
|
}));
|
|
196
190
|
}
|
|
197
|
-
/**
|
|
191
|
+
/**
|
|
192
|
+
* Get code actions for a range, optionally scoped to specific diagnostics
|
|
193
|
+
*
|
|
194
|
+
* @param filePath - Absolute path to the source file.
|
|
195
|
+
* @param range - Source range to inspect.
|
|
196
|
+
* @param range.start - Inclusive start position.
|
|
197
|
+
* @param range.start.line - Zero-based start line.
|
|
198
|
+
* @param range.start.character - Zero-based start character.
|
|
199
|
+
* @param range.end - Exclusive end position.
|
|
200
|
+
* @param range.end.line - Zero-based end line.
|
|
201
|
+
* @param range.end.character - Zero-based end character.
|
|
202
|
+
* @param diagnostics - Diagnostics used to scope available actions.
|
|
203
|
+
* @returns Code actions returned for the range.
|
|
204
|
+
*/
|
|
198
205
|
async codeActions(filePath, range, diagnostics = []) {
|
|
199
206
|
if (!this.alive)
|
|
200
207
|
throw new Error("LSP client is not alive");
|
|
201
208
|
const uri = pathToUri(filePath);
|
|
202
209
|
await this.ensureDocumentOpen(filePath, uri);
|
|
203
|
-
const lspDiagnostics = diagnostics.map((d) => ({
|
|
204
|
-
range: {
|
|
205
|
-
start: { line: d.line, character: d.character },
|
|
206
|
-
end: { line: d.endLine, character: d.endCharacter },
|
|
207
|
-
},
|
|
208
|
-
severity: SEVERITY_LABELS.indexOf(d.severity) || 1,
|
|
209
|
-
message: d.message,
|
|
210
|
-
...(d.code != null ? { code: d.code } : {}),
|
|
211
|
-
}));
|
|
212
210
|
const result = await this.sendRequest("textDocument/codeAction", {
|
|
213
211
|
textDocument: { uri },
|
|
214
212
|
range,
|
|
215
|
-
context: {
|
|
213
|
+
context: {
|
|
214
|
+
diagnostics: diagnostics.map(({ character, code, endCharacter, endLine, line, message, severity, }) => ({
|
|
215
|
+
range: {
|
|
216
|
+
start: { line, character },
|
|
217
|
+
end: { line: endLine, character: endCharacter },
|
|
218
|
+
},
|
|
219
|
+
severity: SEVERITY_LABELS.indexOf(severity) || 1,
|
|
220
|
+
message,
|
|
221
|
+
...(code != null ? { code } : {}),
|
|
222
|
+
})),
|
|
223
|
+
},
|
|
216
224
|
});
|
|
217
225
|
if (!Array.isArray(result))
|
|
218
226
|
return [];
|
|
219
227
|
const actions = [];
|
|
220
228
|
for (const item of result) {
|
|
221
|
-
const parsed =
|
|
229
|
+
const parsed = z
|
|
230
|
+
.object({
|
|
231
|
+
title: z.string(),
|
|
232
|
+
kind: z.string().optional(),
|
|
233
|
+
diagnostics: z.array(diagnosticItemSchema).optional(),
|
|
234
|
+
edit: z
|
|
235
|
+
.object({
|
|
236
|
+
changes: z.record(z.string(), z.array(textEditSchema)).optional(),
|
|
237
|
+
})
|
|
238
|
+
.optional(),
|
|
239
|
+
})
|
|
240
|
+
.safeParse(item);
|
|
222
241
|
if (!parsed.success || !parsed.data.edit)
|
|
223
242
|
continue;
|
|
224
243
|
actions.push({
|
|
@@ -229,7 +248,12 @@ export class LspClient {
|
|
|
229
248
|
}
|
|
230
249
|
return actions;
|
|
231
250
|
}
|
|
232
|
-
/**
|
|
251
|
+
/**
|
|
252
|
+
* Get a structured outline of all symbols in a file
|
|
253
|
+
*
|
|
254
|
+
* @param filePath - Absolute path to the source file.
|
|
255
|
+
* @returns The file's hierarchical symbol outline.
|
|
256
|
+
*/
|
|
233
257
|
async documentSymbols(filePath) {
|
|
234
258
|
if (!this.alive)
|
|
235
259
|
throw new Error("LSP client is not alive");
|
|
@@ -240,7 +264,15 @@ export class LspClient {
|
|
|
240
264
|
return [];
|
|
241
265
|
return buildSymbolTree(result);
|
|
242
266
|
}
|
|
243
|
-
/**
|
|
267
|
+
/**
|
|
268
|
+
* Rename a symbol across the project
|
|
269
|
+
*
|
|
270
|
+
* @param filePath - Absolute path to the source file.
|
|
271
|
+
* @param line - Zero-based source line.
|
|
272
|
+
* @param character - Zero-based character offset.
|
|
273
|
+
* @param newName - Replacement symbol name.
|
|
274
|
+
* @returns Text edits required to perform the rename.
|
|
275
|
+
*/
|
|
244
276
|
async rename(filePath, line, character, newName) {
|
|
245
277
|
if (!this.alive)
|
|
246
278
|
throw new Error("LSP client is not alive");
|
|
@@ -253,7 +285,14 @@ export class LspClient {
|
|
|
253
285
|
});
|
|
254
286
|
return parseWorkspaceEdit(result);
|
|
255
287
|
}
|
|
256
|
-
/**
|
|
288
|
+
/**
|
|
289
|
+
* Get inferred type annotations for a line range
|
|
290
|
+
*
|
|
291
|
+
* @param filePath - Absolute path to the source file.
|
|
292
|
+
* @param startLine - Zero-based inclusive start line.
|
|
293
|
+
* @param endLine - Zero-based exclusive end line.
|
|
294
|
+
* @returns Inlay hints reported for the requested range.
|
|
295
|
+
*/
|
|
257
296
|
async inlayHints(filePath, startLine, endLine) {
|
|
258
297
|
if (!this.alive)
|
|
259
298
|
throw new Error("LSP client is not alive");
|
|
@@ -270,23 +309,38 @@ export class LspClient {
|
|
|
270
309
|
return [];
|
|
271
310
|
const hints = [];
|
|
272
311
|
for (const item of result) {
|
|
273
|
-
const parsed =
|
|
312
|
+
const parsed = z
|
|
313
|
+
.object({
|
|
314
|
+
position: positionSchema,
|
|
315
|
+
label: z.union([
|
|
316
|
+
z.string(),
|
|
317
|
+
z.array(z.object({ value: z.string() })),
|
|
318
|
+
]),
|
|
319
|
+
kind: z.number().optional(),
|
|
320
|
+
})
|
|
321
|
+
.safeParse(item);
|
|
274
322
|
if (!parsed.success)
|
|
275
323
|
continue;
|
|
276
324
|
const label = parsed.data.label;
|
|
277
|
-
const text = typeof label === "string"
|
|
278
|
-
? label
|
|
279
|
-
: label.map((part) => part.value).join("");
|
|
280
325
|
hints.push({
|
|
281
326
|
line: parsed.data.position.line,
|
|
282
327
|
character: parsed.data.position.character,
|
|
283
|
-
text
|
|
328
|
+
text: typeof label === "string"
|
|
329
|
+
? label
|
|
330
|
+
: label.map((part) => part.value).join(""),
|
|
284
331
|
kind: INLAY_HINT_KIND_LABELS[parsed.data.kind ?? 0] ?? "unknown",
|
|
285
332
|
});
|
|
286
333
|
}
|
|
287
334
|
return hints;
|
|
288
335
|
}
|
|
289
|
-
/**
|
|
336
|
+
/**
|
|
337
|
+
* Find all references to a symbol at a position
|
|
338
|
+
*
|
|
339
|
+
* @param filePath - Absolute path to the source file.
|
|
340
|
+
* @param line - Zero-based source line.
|
|
341
|
+
* @param character - Zero-based character offset.
|
|
342
|
+
* @returns Locations that reference the selected symbol.
|
|
343
|
+
*/
|
|
290
344
|
async references(filePath, line, character) {
|
|
291
345
|
if (!this.alive)
|
|
292
346
|
throw new Error("LSP client is not alive");
|
|
@@ -313,6 +367,7 @@ export class LspClient {
|
|
|
313
367
|
}
|
|
314
368
|
this.proc.kill();
|
|
315
369
|
}
|
|
370
|
+
/** Initialize the LSP session. */
|
|
316
371
|
async initialize() {
|
|
317
372
|
await this.sendRequest("initialize", {
|
|
318
373
|
processId: process.pid,
|
|
@@ -325,8 +380,38 @@ export class LspClient {
|
|
|
325
380
|
});
|
|
326
381
|
this.sendNotification("initialized", {});
|
|
327
382
|
}
|
|
328
|
-
/**
|
|
383
|
+
/**
|
|
384
|
+
* Re-read all previously opened documents from disk and push changes to tsgo.
|
|
385
|
+
* This ensures that edits to imported/dependency files are picked up before
|
|
386
|
+
* we query a file that depends on them.
|
|
387
|
+
*/
|
|
388
|
+
async refreshOpenDocuments() {
|
|
389
|
+
for (const [uri, state] of this.documents) {
|
|
390
|
+
let content;
|
|
391
|
+
try {
|
|
392
|
+
content = await readFile(uriToPath(uri), "utf-8");
|
|
393
|
+
}
|
|
394
|
+
catch {
|
|
395
|
+
continue;
|
|
396
|
+
}
|
|
397
|
+
if (content !== state.content) {
|
|
398
|
+
const version = state.version + 1;
|
|
399
|
+
this.sendNotification("textDocument/didChange", {
|
|
400
|
+
textDocument: { uri, version },
|
|
401
|
+
contentChanges: [{ text: content }],
|
|
402
|
+
});
|
|
403
|
+
this.documents.set(uri, { version, content });
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Open a document in the LSP if needed, or update it if contents changed
|
|
409
|
+
*
|
|
410
|
+
* @param filePath - Absolute path to the source file.
|
|
411
|
+
* @param uri - LSP document URI for the file.
|
|
412
|
+
*/
|
|
329
413
|
async ensureDocumentOpen(filePath, uri) {
|
|
414
|
+
await this.refreshOpenDocuments();
|
|
330
415
|
const content = await readFile(filePath, "utf-8");
|
|
331
416
|
const existing = this.documents.get(uri);
|
|
332
417
|
if (!existing) {
|
|
@@ -350,27 +435,52 @@ export class LspClient {
|
|
|
350
435
|
this.documents.set(uri, { version, content });
|
|
351
436
|
}
|
|
352
437
|
}
|
|
438
|
+
/**
|
|
439
|
+
* Send an LSP request and await its response.
|
|
440
|
+
*
|
|
441
|
+
* @param method - LSP method name.
|
|
442
|
+
* @param params - JSON-RPC request parameters.
|
|
443
|
+
*/
|
|
353
444
|
sendRequest(method, params) {
|
|
354
445
|
return new Promise((resolve, reject) => {
|
|
355
446
|
const id = this.nextId++;
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
reject
|
|
359
|
-
|
|
360
|
-
|
|
447
|
+
this.pending.set(id, {
|
|
448
|
+
resolve,
|
|
449
|
+
reject,
|
|
450
|
+
timer: setTimeout(() => {
|
|
451
|
+
this.pending.delete(id);
|
|
452
|
+
reject(new Error(`Request "${method}" timed out after ${REQUEST_TIMEOUT_MS}ms`));
|
|
453
|
+
}, REQUEST_TIMEOUT_MS),
|
|
454
|
+
});
|
|
361
455
|
this.send({ jsonrpc: "2.0", id, method, params });
|
|
362
456
|
});
|
|
363
457
|
}
|
|
458
|
+
/**
|
|
459
|
+
* Send an LSP notification.
|
|
460
|
+
*
|
|
461
|
+
* @param method - LSP method name.
|
|
462
|
+
* @param params - JSON-RPC notification parameters.
|
|
463
|
+
*/
|
|
364
464
|
sendNotification(method, params) {
|
|
365
465
|
this.send({ jsonrpc: "2.0", method, params });
|
|
366
466
|
}
|
|
467
|
+
/**
|
|
468
|
+
* Respond to a server-initiated LSP request.
|
|
469
|
+
*
|
|
470
|
+
* @param id - Identifier of the server request.
|
|
471
|
+
* @param result - JSON-RPC response result.
|
|
472
|
+
*/
|
|
367
473
|
sendResponse(id, result) {
|
|
368
474
|
this.send({ jsonrpc: "2.0", id, result });
|
|
369
475
|
}
|
|
476
|
+
/**
|
|
477
|
+
* Write a framed JSON-RPC message to the child process.
|
|
478
|
+
*
|
|
479
|
+
* @param message - JSON-RPC message to serialize and send.
|
|
480
|
+
*/
|
|
370
481
|
send(message) {
|
|
371
482
|
const body = JSON.stringify(message);
|
|
372
|
-
|
|
373
|
-
this.stdin.write(header + body);
|
|
483
|
+
this.stdin.write(`Content-Length: ${Buffer.byteLength(body)}\r\n\r\n${body}`);
|
|
374
484
|
}
|
|
375
485
|
/** Parse Content-Length framed messages from the buffer */
|
|
376
486
|
drainBuffer() {
|
|
@@ -378,24 +488,29 @@ export class LspClient {
|
|
|
378
488
|
const headerEnd = this.buffer.indexOf("\r\n\r\n");
|
|
379
489
|
if (headerEnd === -1)
|
|
380
490
|
return;
|
|
381
|
-
const
|
|
382
|
-
|
|
491
|
+
const match = this.buffer
|
|
492
|
+
.subarray(0, headerEnd)
|
|
493
|
+
.toString("ascii")
|
|
494
|
+
.match(/Content-Length:\s*(\d+)/);
|
|
383
495
|
if (!match) {
|
|
384
496
|
this.buffer = this.buffer.subarray(headerEnd + 4);
|
|
385
497
|
continue;
|
|
386
498
|
}
|
|
387
|
-
const contentLength = Number.parseInt(match[1] ?? "0", 10);
|
|
388
499
|
const bodyStart = headerEnd + 4;
|
|
389
|
-
const bodyEnd = bodyStart +
|
|
500
|
+
const bodyEnd = bodyStart + Number.parseInt(match[1] ?? "0", 10);
|
|
390
501
|
if (this.buffer.length < bodyEnd)
|
|
391
502
|
return;
|
|
392
|
-
const
|
|
503
|
+
const parsed = jsonRpcMessageSchema.safeParse(JSON.parse(this.buffer.subarray(bodyStart, bodyEnd).toString("utf-8")));
|
|
393
504
|
this.buffer = this.buffer.subarray(bodyEnd);
|
|
394
|
-
const parsed = jsonRpcMessageSchema.safeParse(JSON.parse(body));
|
|
395
505
|
if (parsed.success)
|
|
396
506
|
this.handleMessage(parsed.data);
|
|
397
507
|
}
|
|
398
508
|
}
|
|
509
|
+
/**
|
|
510
|
+
* Route a parsed JSON-RPC message.
|
|
511
|
+
*
|
|
512
|
+
* @param message - Validated JSON-RPC message from the server.
|
|
513
|
+
*/
|
|
399
514
|
handleMessage(message) {
|
|
400
515
|
// Response to one of our requests (numeric id, no method)
|
|
401
516
|
if (typeof message.id === "number" && !message.method) {
|
|
@@ -418,22 +533,36 @@ export class LspClient {
|
|
|
418
533
|
}
|
|
419
534
|
}
|
|
420
535
|
}
|
|
536
|
+
/**
|
|
537
|
+
* Convert a file path to an LSP file URI.
|
|
538
|
+
*
|
|
539
|
+
* @param filePath - Absolute path to convert.
|
|
540
|
+
* @returns The corresponding file URI.
|
|
541
|
+
*/
|
|
421
542
|
function pathToUri(filePath) {
|
|
422
543
|
return `file://${filePath}`;
|
|
423
544
|
}
|
|
545
|
+
/**
|
|
546
|
+
* Convert an LSP file URI to a file path.
|
|
547
|
+
*
|
|
548
|
+
* @param uri - File URI to convert.
|
|
549
|
+
* @returns The corresponding absolute file path.
|
|
550
|
+
*/
|
|
424
551
|
function uriToPath(uri) {
|
|
425
552
|
return uri.replace(/^file:\/\//, "");
|
|
426
553
|
}
|
|
427
554
|
/**
|
|
428
555
|
* Parse Location[] or LocationLink[] from an LSP response into LspLocation[].
|
|
429
556
|
* Handles single objects, arrays, and null.
|
|
557
|
+
*
|
|
558
|
+
* @param result - Raw LSP definition response.
|
|
559
|
+
* @returns Normalized definition locations.
|
|
430
560
|
*/
|
|
431
561
|
function parseLocations(result) {
|
|
432
562
|
if (result == null)
|
|
433
563
|
return [];
|
|
434
|
-
const items = Array.isArray(result) ? result : [result];
|
|
435
564
|
const locations = [];
|
|
436
|
-
for (const item of
|
|
565
|
+
for (const item of Array.isArray(result) ? result : [result]) {
|
|
437
566
|
const loc = locationSchema.safeParse(item);
|
|
438
567
|
if (loc.success) {
|
|
439
568
|
locations.push({
|
|
@@ -443,7 +572,13 @@ function parseLocations(result) {
|
|
|
443
572
|
});
|
|
444
573
|
continue;
|
|
445
574
|
}
|
|
446
|
-
const link =
|
|
575
|
+
const link = z
|
|
576
|
+
.object({
|
|
577
|
+
targetUri: z.string(),
|
|
578
|
+
targetRange: rangeSchema,
|
|
579
|
+
targetSelectionRange: rangeSchema.optional(),
|
|
580
|
+
})
|
|
581
|
+
.safeParse(item);
|
|
447
582
|
if (link.success) {
|
|
448
583
|
const range = link.data.targetSelectionRange ?? link.data.targetRange;
|
|
449
584
|
locations.push({
|
|
@@ -458,11 +593,21 @@ function parseLocations(result) {
|
|
|
458
593
|
/**
|
|
459
594
|
* Build a symbol tree from flat SymbolInformation[]. Uses containerName to
|
|
460
595
|
* reconstruct parent-child relationships.
|
|
596
|
+
*
|
|
597
|
+
* @param items - Raw LSP symbol information records.
|
|
598
|
+
* @returns A hierarchical symbol outline.
|
|
461
599
|
*/
|
|
462
600
|
function buildSymbolTree(items) {
|
|
463
601
|
const flat = [];
|
|
464
602
|
for (const item of items) {
|
|
465
|
-
const parsed =
|
|
603
|
+
const parsed = z
|
|
604
|
+
.object({
|
|
605
|
+
name: z.string(),
|
|
606
|
+
kind: z.number(),
|
|
607
|
+
containerName: z.string().optional(),
|
|
608
|
+
location: locationSchema,
|
|
609
|
+
})
|
|
610
|
+
.safeParse(item);
|
|
466
611
|
if (!parsed.success)
|
|
467
612
|
continue;
|
|
468
613
|
flat.push({
|
|
@@ -496,17 +641,25 @@ function buildSymbolTree(items) {
|
|
|
496
641
|
}
|
|
497
642
|
return roots;
|
|
498
643
|
}
|
|
499
|
-
/**
|
|
644
|
+
/**
|
|
645
|
+
* Parse a WorkspaceEdit into flat LspTextEdit[]
|
|
646
|
+
*
|
|
647
|
+
* @param result - Raw LSP workspace edit.
|
|
648
|
+
* @returns Flattened text edits.
|
|
649
|
+
*/
|
|
500
650
|
function parseWorkspaceEdit(result) {
|
|
501
|
-
const parsed =
|
|
651
|
+
const parsed = z
|
|
652
|
+
.object({
|
|
653
|
+
changes: z.record(z.string(), z.array(textEditSchema)).optional(),
|
|
654
|
+
})
|
|
655
|
+
.safeParse(result);
|
|
502
656
|
if (!parsed.success || !parsed.data.changes)
|
|
503
657
|
return [];
|
|
504
658
|
const edits = [];
|
|
505
659
|
for (const [editUri, textEdits] of Object.entries(parsed.data.changes)) {
|
|
506
|
-
const file = uriToPath(editUri);
|
|
507
660
|
for (const te of textEdits) {
|
|
508
661
|
edits.push({
|
|
509
|
-
file,
|
|
662
|
+
file: uriToPath(editUri),
|
|
510
663
|
startLine: te.range.start.line,
|
|
511
664
|
startCharacter: te.range.start.character,
|
|
512
665
|
endLine: te.range.end.line,
|
|
@@ -517,9 +670,14 @@ function parseWorkspaceEdit(result) {
|
|
|
517
670
|
}
|
|
518
671
|
return edits;
|
|
519
672
|
}
|
|
673
|
+
/**
|
|
674
|
+
* Return the LSP language identifier for a source file.
|
|
675
|
+
*
|
|
676
|
+
* @param filePath - Source file path.
|
|
677
|
+
* @returns The matching LSP language identifier.
|
|
678
|
+
*/
|
|
520
679
|
function getLanguageId(filePath) {
|
|
521
|
-
|
|
522
|
-
switch (ext) {
|
|
680
|
+
switch (extname(filePath)) {
|
|
523
681
|
case ".ts":
|
|
524
682
|
case ".mts":
|
|
525
683
|
case ".cts":
|
|
@@ -539,6 +697,9 @@ function getLanguageId(filePath) {
|
|
|
539
697
|
/**
|
|
540
698
|
* Extract text from LSP hover contents. Handles MarkupContent (`{ value }`),
|
|
541
699
|
* plain strings, and arrays of either.
|
|
700
|
+
*
|
|
701
|
+
* @param contents - Raw LSP hover content.
|
|
702
|
+
* @returns Rendered hover text, or null when the content is unsupported.
|
|
542
703
|
*/
|
|
543
704
|
function formatHoverContents(contents) {
|
|
544
705
|
const str = z.string().safeParse(contents);
|
|
@@ -548,7 +709,7 @@ function formatHoverContents(contents) {
|
|
|
548
709
|
const parts = contents.map(formatHoverContents).filter(Boolean);
|
|
549
710
|
return parts.length > 0 ? parts.join("\n\n") : null;
|
|
550
711
|
}
|
|
551
|
-
const markup =
|
|
712
|
+
const markup = z.object({ value: z.string() }).safeParse(contents);
|
|
552
713
|
if (markup.success)
|
|
553
714
|
return markup.data.value;
|
|
554
715
|
return null;
|
package/dist/lsp-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-client.js","sourceRoot":"","sources":["../src/lsp-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lsp-client.js","sourceRoot":"","sources":["../src/lsp-client.ts"],"names":[],"mappings":"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"}
|
package/dist/pool.js
CHANGED
|
@@ -12,11 +12,24 @@ export class TsgoPool {
|
|
|
12
12
|
binaryPath;
|
|
13
13
|
idleTimeoutMs;
|
|
14
14
|
entries = new Map();
|
|
15
|
+
/**
|
|
16
|
+
* Create an LSP client pool.
|
|
17
|
+
*
|
|
18
|
+
* @param binaryPath - Absolute path to the tsgo native binary.
|
|
19
|
+
* @param idleTimeoutMs - Time before an inactive client is shut down.
|
|
20
|
+
*/
|
|
15
21
|
constructor(binaryPath, idleTimeoutMs = DEFAULT_IDLE_TIMEOUT_MS) {
|
|
16
22
|
this.binaryPath = binaryPath;
|
|
17
23
|
this.idleTimeoutMs = idleTimeoutMs;
|
|
18
24
|
}
|
|
19
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Get hover info + definition location in one call
|
|
27
|
+
*
|
|
28
|
+
* @param filePath - Absolute path to the source file.
|
|
29
|
+
* @param line - Zero-based source line.
|
|
30
|
+
* @param character - Zero-based character offset.
|
|
31
|
+
* @returns Hover text and the first definition location, when available.
|
|
32
|
+
*/
|
|
20
33
|
async hoverWithDefinition(filePath, line, character) {
|
|
21
34
|
const client = await this.getClient(filePath);
|
|
22
35
|
const [hover, definitions] = await Promise.all([
|
|
@@ -25,35 +38,65 @@ export class TsgoPool {
|
|
|
25
38
|
]);
|
|
26
39
|
return { hover, definition: definitions[0] ?? null };
|
|
27
40
|
}
|
|
28
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Get diagnostics for a file with available fixes for each error
|
|
43
|
+
*
|
|
44
|
+
* @param filePath - Absolute path to the source file.
|
|
45
|
+
* @returns Diagnostics and the code actions available for them.
|
|
46
|
+
*/
|
|
29
47
|
async diagnosticsWithFixes(filePath) {
|
|
30
48
|
const client = await this.getClient(filePath);
|
|
31
49
|
const diagnostics = await client.diagnostics(filePath);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
50
|
+
return {
|
|
51
|
+
diagnostics,
|
|
52
|
+
actions: await client.codeActions(filePath, {
|
|
53
|
+
start: { line: 0, character: 0 },
|
|
54
|
+
end: { line: 1_000_000, character: 0 },
|
|
55
|
+
}, diagnostics),
|
|
56
|
+
};
|
|
37
57
|
}
|
|
38
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Find all references to a symbol
|
|
60
|
+
*
|
|
61
|
+
* @param filePath - Absolute path to the source file.
|
|
62
|
+
* @param line - Zero-based source line.
|
|
63
|
+
* @param character - Zero-based character offset.
|
|
64
|
+
* @returns Locations that reference the selected symbol.
|
|
65
|
+
*/
|
|
39
66
|
async references(filePath, line, character) {
|
|
40
|
-
|
|
41
|
-
return client.references(filePath, line, character);
|
|
67
|
+
return (await this.getClient(filePath)).references(filePath, line, character);
|
|
42
68
|
}
|
|
43
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Get a structured outline of all symbols in a file
|
|
71
|
+
*
|
|
72
|
+
* @param filePath - Absolute path to the source file.
|
|
73
|
+
* @returns The file's hierarchical symbol outline.
|
|
74
|
+
*/
|
|
44
75
|
async outline(filePath) {
|
|
45
|
-
|
|
46
|
-
return client.documentSymbols(filePath);
|
|
76
|
+
return (await this.getClient(filePath)).documentSymbols(filePath);
|
|
47
77
|
}
|
|
48
|
-
/**
|
|
78
|
+
/**
|
|
79
|
+
* Rename a symbol across the project
|
|
80
|
+
*
|
|
81
|
+
* @param filePath - Absolute path to the source file.
|
|
82
|
+
* @param line - Zero-based source line.
|
|
83
|
+
* @param character - Zero-based character offset.
|
|
84
|
+
* @param newName - Replacement symbol name.
|
|
85
|
+
* @returns Text edits required to perform the rename.
|
|
86
|
+
*/
|
|
49
87
|
async rename(filePath, line, character, newName) {
|
|
50
|
-
|
|
51
|
-
return client.rename(filePath, line, character, newName);
|
|
88
|
+
return (await this.getClient(filePath)).rename(filePath, line, character, newName);
|
|
52
89
|
}
|
|
53
|
-
/**
|
|
90
|
+
/**
|
|
91
|
+
* Get inferred type annotations for a line range
|
|
92
|
+
*
|
|
93
|
+
* @param filePath - Absolute path to the source file.
|
|
94
|
+
* @param startLine - Zero-based inclusive start line.
|
|
95
|
+
* @param endLine - Zero-based exclusive end line.
|
|
96
|
+
* @returns Inlay hints reported for the requested range.
|
|
97
|
+
*/
|
|
54
98
|
async inlayHints(filePath, startLine, endLine) {
|
|
55
|
-
|
|
56
|
-
return client.inlayHints(filePath, startLine, endLine);
|
|
99
|
+
return (await this.getClient(filePath)).inlayHints(filePath, startLine, endLine);
|
|
57
100
|
}
|
|
58
101
|
/** Shut down all active LSP instances */
|
|
59
102
|
async shutdown() {
|
|
@@ -63,6 +106,12 @@ export class TsgoPool {
|
|
|
63
106
|
}));
|
|
64
107
|
this.entries.clear();
|
|
65
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Get or create the client for a file's project.
|
|
111
|
+
*
|
|
112
|
+
* @param filePath - Absolute path used to locate the project.
|
|
113
|
+
* @returns A live client for the file's project.
|
|
114
|
+
*/
|
|
66
115
|
async getClient(filePath) {
|
|
67
116
|
const projectRoot = findProjectRoot(filePath);
|
|
68
117
|
const existing = this.entries.get(projectRoot);
|
|
@@ -74,8 +123,7 @@ export class TsgoPool {
|
|
|
74
123
|
clearTimeout(existing.idleTimer);
|
|
75
124
|
this.entries.delete(projectRoot);
|
|
76
125
|
}
|
|
77
|
-
const
|
|
78
|
-
const client = await LspClient.create(this.binaryPath, rootUri);
|
|
126
|
+
const client = await LspClient.create(this.binaryPath, `file://${projectRoot}`);
|
|
79
127
|
const entry = {
|
|
80
128
|
client,
|
|
81
129
|
idleTimer: this.startIdleTimer(projectRoot),
|
|
@@ -83,6 +131,12 @@ export class TsgoPool {
|
|
|
83
131
|
this.entries.set(projectRoot, entry);
|
|
84
132
|
return client;
|
|
85
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Schedule an idle client for shutdown.
|
|
136
|
+
*
|
|
137
|
+
* @param projectRoot - Absolute path to the client's project root.
|
|
138
|
+
* @returns The scheduled idle timer.
|
|
139
|
+
*/
|
|
86
140
|
startIdleTimer(projectRoot) {
|
|
87
141
|
return setTimeout(async () => {
|
|
88
142
|
const entry = this.entries.get(projectRoot);
|
|
@@ -92,12 +146,23 @@ export class TsgoPool {
|
|
|
92
146
|
}
|
|
93
147
|
}, this.idleTimeoutMs);
|
|
94
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Restart a client's idle shutdown timer.
|
|
151
|
+
*
|
|
152
|
+
* @param projectRoot - Absolute path to the client's project root.
|
|
153
|
+
* @param entry - Pool entry whose timer should be restarted.
|
|
154
|
+
*/
|
|
95
155
|
resetIdleTimer(projectRoot, entry) {
|
|
96
156
|
clearTimeout(entry.idleTimer);
|
|
97
157
|
entry.idleTimer = this.startIdleTimer(projectRoot);
|
|
98
158
|
}
|
|
99
159
|
}
|
|
100
|
-
/**
|
|
160
|
+
/**
|
|
161
|
+
* Walk up from a file path to find the nearest tsconfig.json
|
|
162
|
+
*
|
|
163
|
+
* @param filePath - Absolute path used to start the search.
|
|
164
|
+
* @returns The nearest project root, or the file's directory as a fallback.
|
|
165
|
+
*/
|
|
101
166
|
function findProjectRoot(filePath) {
|
|
102
167
|
let dir = dirname(filePath);
|
|
103
168
|
for (;;) {
|
package/dist/pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAOL,SAAS,GACV,MAAM,iBAAiB,CAAA;AAExB,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAO7C;;;;;GAKG;AACH,MAAM,OAAO,QAAQ;
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
|
package/dist/resolve-binary.js
CHANGED
|
@@ -6,6 +6,9 @@ const PLATFORM_PACKAGE = `@typescript/native-preview-${process.platform}-${proce
|
|
|
6
6
|
* Resolves the tsgo native binary path. Checks TSGO_PATH env var, then bun/npm
|
|
7
7
|
* global install locations. The native binary is required (not the Node
|
|
8
8
|
* wrapper) for stdio piping.
|
|
9
|
+
*
|
|
10
|
+
* @returns The absolute path to the tsgo native binary.
|
|
11
|
+
* @throws When the configured or installed native binary cannot be found.
|
|
9
12
|
*/
|
|
10
13
|
export function resolveTsgoBinary() {
|
|
11
14
|
const envPath = process.env.TSGO_PATH;
|
|
@@ -15,11 +18,10 @@ export function resolveTsgoBinary() {
|
|
|
15
18
|
return envPath;
|
|
16
19
|
}
|
|
17
20
|
const exe = process.platform === "win32" ? "tsgo.exe" : "tsgo";
|
|
18
|
-
const
|
|
21
|
+
for (const candidate of [
|
|
19
22
|
join(homedir(), ".bun", "install", "global", "node_modules", PLATFORM_PACKAGE, "lib", exe),
|
|
20
23
|
join("/usr", "local", "lib", "node_modules", PLATFORM_PACKAGE, "lib", exe),
|
|
21
|
-
]
|
|
22
|
-
for (const candidate of candidates) {
|
|
24
|
+
]) {
|
|
23
25
|
if (existsSync(candidate))
|
|
24
26
|
return candidate;
|
|
25
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-binary.js","sourceRoot":"","sources":["../src/resolve-binary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,gBAAgB,GAAG,8BAA8B,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAA;AAEzF
|
|
1
|
+
{"version":3,"file":"resolve-binary.js","sourceRoot":"","sources":["../src/resolve-binary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,gBAAgB,GAAG,8BAA8B,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAA;AAEzF;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAA;IACrC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,wBAAwB,OAAO,+BAA+B,CAC/D,CAAA;QACH,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9D,KAAK,MAAM,SAAS,IAAI;QACtB,IAAI,CACF,OAAO,EAAE,EACT,MAAM,EACN,SAAS,EACT,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,KAAK,EACL,GAAG,CACJ;QACD,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,CAAC;KAC3E,EAAE,CAAC;QACF,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;IAC7C,CAAC;IAED,MAAM,IAAI,KAAK,CACb;QACE,oCAAoC;QACpC,uBAAuB,gBAAgB,EAAE;QACzC,yDAAyD;QACzD,6CAA6C;KAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zachsents/ts-mcp",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"description": "Give AI agents TypeScript type awareness",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -21,27 +21,32 @@
|
|
|
21
21
|
],
|
|
22
22
|
"repository": {
|
|
23
23
|
"type": "git",
|
|
24
|
-
"url": "https://github.com/zachsents/
|
|
24
|
+
"url": "https://github.com/zachsents/zachs-tools.git",
|
|
25
|
+
"directory": "packages/ts-mcp"
|
|
25
26
|
},
|
|
26
27
|
"author": "Zach Sents",
|
|
27
28
|
"license": "MIT",
|
|
28
29
|
"scripts": {
|
|
29
30
|
"start": "bun run src/index.ts",
|
|
30
31
|
"build": "tsc -p tsconfig.build.json && shx chmod +x dist/index.js",
|
|
31
|
-
"lint": "oxlint --type-aware
|
|
32
|
+
"lint": "oxlint --type-aware",
|
|
33
|
+
"lint:fix": "oxlint --type-aware --fix --fix-suggestions",
|
|
32
34
|
"format": "prettier --write .",
|
|
33
|
-
"
|
|
35
|
+
"format:check": "prettier --check .",
|
|
36
|
+
"fix": "bun run lint:fix && bun run format",
|
|
37
|
+
"test": "bun test/smoke.ts",
|
|
34
38
|
"typecheck": "tsc --noEmit",
|
|
35
|
-
"check": "bun run typecheck && bun run
|
|
39
|
+
"check": "bun run --cwd ../.. build:lint-plugin && bun run format:check && bun run lint && bun run typecheck && bun run test",
|
|
40
|
+
"prepublishOnly": "bun run check && bun run build"
|
|
36
41
|
},
|
|
37
42
|
"devDependencies": {
|
|
38
43
|
"@types/bun": "latest",
|
|
39
|
-
"oxlint": "^1.
|
|
40
|
-
"oxlint-tsgolint": "^0.
|
|
41
|
-
"prettier": "
|
|
44
|
+
"oxlint": "^1.74.0",
|
|
45
|
+
"oxlint-tsgolint": "^0.24.0",
|
|
46
|
+
"prettier": "3.4.2",
|
|
42
47
|
"prettier-plugin-jsdoc": "^1.8.0",
|
|
43
48
|
"shx": "^0.4.0",
|
|
44
|
-
"typescript": "^5"
|
|
49
|
+
"typescript": "^5.9.3"
|
|
45
50
|
},
|
|
46
51
|
"dependencies": {
|
|
47
52
|
"@modelcontextprotocol/sdk": "^1.27.1",
|