@zachsents/ts-mcp 0.3.3 → 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 +246 -111
- 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,
|
|
@@ -332,10 +387,9 @@ export class LspClient {
|
|
|
332
387
|
*/
|
|
333
388
|
async refreshOpenDocuments() {
|
|
334
389
|
for (const [uri, state] of this.documents) {
|
|
335
|
-
const filePath = uriToPath(uri);
|
|
336
390
|
let content;
|
|
337
391
|
try {
|
|
338
|
-
content = await readFile(
|
|
392
|
+
content = await readFile(uriToPath(uri), "utf-8");
|
|
339
393
|
}
|
|
340
394
|
catch {
|
|
341
395
|
continue;
|
|
@@ -350,7 +404,12 @@ export class LspClient {
|
|
|
350
404
|
}
|
|
351
405
|
}
|
|
352
406
|
}
|
|
353
|
-
/**
|
|
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
|
+
*/
|
|
354
413
|
async ensureDocumentOpen(filePath, uri) {
|
|
355
414
|
await this.refreshOpenDocuments();
|
|
356
415
|
const content = await readFile(filePath, "utf-8");
|
|
@@ -376,27 +435,52 @@ export class LspClient {
|
|
|
376
435
|
this.documents.set(uri, { version, content });
|
|
377
436
|
}
|
|
378
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
|
+
*/
|
|
379
444
|
sendRequest(method, params) {
|
|
380
445
|
return new Promise((resolve, reject) => {
|
|
381
446
|
const id = this.nextId++;
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
reject
|
|
385
|
-
|
|
386
|
-
|
|
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
|
+
});
|
|
387
455
|
this.send({ jsonrpc: "2.0", id, method, params });
|
|
388
456
|
});
|
|
389
457
|
}
|
|
458
|
+
/**
|
|
459
|
+
* Send an LSP notification.
|
|
460
|
+
*
|
|
461
|
+
* @param method - LSP method name.
|
|
462
|
+
* @param params - JSON-RPC notification parameters.
|
|
463
|
+
*/
|
|
390
464
|
sendNotification(method, params) {
|
|
391
465
|
this.send({ jsonrpc: "2.0", method, params });
|
|
392
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
|
+
*/
|
|
393
473
|
sendResponse(id, result) {
|
|
394
474
|
this.send({ jsonrpc: "2.0", id, result });
|
|
395
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
|
+
*/
|
|
396
481
|
send(message) {
|
|
397
482
|
const body = JSON.stringify(message);
|
|
398
|
-
|
|
399
|
-
this.stdin.write(header + body);
|
|
483
|
+
this.stdin.write(`Content-Length: ${Buffer.byteLength(body)}\r\n\r\n${body}`);
|
|
400
484
|
}
|
|
401
485
|
/** Parse Content-Length framed messages from the buffer */
|
|
402
486
|
drainBuffer() {
|
|
@@ -404,24 +488,29 @@ export class LspClient {
|
|
|
404
488
|
const headerEnd = this.buffer.indexOf("\r\n\r\n");
|
|
405
489
|
if (headerEnd === -1)
|
|
406
490
|
return;
|
|
407
|
-
const
|
|
408
|
-
|
|
491
|
+
const match = this.buffer
|
|
492
|
+
.subarray(0, headerEnd)
|
|
493
|
+
.toString("ascii")
|
|
494
|
+
.match(/Content-Length:\s*(\d+)/);
|
|
409
495
|
if (!match) {
|
|
410
496
|
this.buffer = this.buffer.subarray(headerEnd + 4);
|
|
411
497
|
continue;
|
|
412
498
|
}
|
|
413
|
-
const contentLength = Number.parseInt(match[1] ?? "0", 10);
|
|
414
499
|
const bodyStart = headerEnd + 4;
|
|
415
|
-
const bodyEnd = bodyStart +
|
|
500
|
+
const bodyEnd = bodyStart + Number.parseInt(match[1] ?? "0", 10);
|
|
416
501
|
if (this.buffer.length < bodyEnd)
|
|
417
502
|
return;
|
|
418
|
-
const
|
|
503
|
+
const parsed = jsonRpcMessageSchema.safeParse(JSON.parse(this.buffer.subarray(bodyStart, bodyEnd).toString("utf-8")));
|
|
419
504
|
this.buffer = this.buffer.subarray(bodyEnd);
|
|
420
|
-
const parsed = jsonRpcMessageSchema.safeParse(JSON.parse(body));
|
|
421
505
|
if (parsed.success)
|
|
422
506
|
this.handleMessage(parsed.data);
|
|
423
507
|
}
|
|
424
508
|
}
|
|
509
|
+
/**
|
|
510
|
+
* Route a parsed JSON-RPC message.
|
|
511
|
+
*
|
|
512
|
+
* @param message - Validated JSON-RPC message from the server.
|
|
513
|
+
*/
|
|
425
514
|
handleMessage(message) {
|
|
426
515
|
// Response to one of our requests (numeric id, no method)
|
|
427
516
|
if (typeof message.id === "number" && !message.method) {
|
|
@@ -444,22 +533,36 @@ export class LspClient {
|
|
|
444
533
|
}
|
|
445
534
|
}
|
|
446
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
|
+
*/
|
|
447
542
|
function pathToUri(filePath) {
|
|
448
543
|
return `file://${filePath}`;
|
|
449
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
|
+
*/
|
|
450
551
|
function uriToPath(uri) {
|
|
451
552
|
return uri.replace(/^file:\/\//, "");
|
|
452
553
|
}
|
|
453
554
|
/**
|
|
454
555
|
* Parse Location[] or LocationLink[] from an LSP response into LspLocation[].
|
|
455
556
|
* Handles single objects, arrays, and null.
|
|
557
|
+
*
|
|
558
|
+
* @param result - Raw LSP definition response.
|
|
559
|
+
* @returns Normalized definition locations.
|
|
456
560
|
*/
|
|
457
561
|
function parseLocations(result) {
|
|
458
562
|
if (result == null)
|
|
459
563
|
return [];
|
|
460
|
-
const items = Array.isArray(result) ? result : [result];
|
|
461
564
|
const locations = [];
|
|
462
|
-
for (const item of
|
|
565
|
+
for (const item of Array.isArray(result) ? result : [result]) {
|
|
463
566
|
const loc = locationSchema.safeParse(item);
|
|
464
567
|
if (loc.success) {
|
|
465
568
|
locations.push({
|
|
@@ -469,7 +572,13 @@ function parseLocations(result) {
|
|
|
469
572
|
});
|
|
470
573
|
continue;
|
|
471
574
|
}
|
|
472
|
-
const link =
|
|
575
|
+
const link = z
|
|
576
|
+
.object({
|
|
577
|
+
targetUri: z.string(),
|
|
578
|
+
targetRange: rangeSchema,
|
|
579
|
+
targetSelectionRange: rangeSchema.optional(),
|
|
580
|
+
})
|
|
581
|
+
.safeParse(item);
|
|
473
582
|
if (link.success) {
|
|
474
583
|
const range = link.data.targetSelectionRange ?? link.data.targetRange;
|
|
475
584
|
locations.push({
|
|
@@ -484,11 +593,21 @@ function parseLocations(result) {
|
|
|
484
593
|
/**
|
|
485
594
|
* Build a symbol tree from flat SymbolInformation[]. Uses containerName to
|
|
486
595
|
* reconstruct parent-child relationships.
|
|
596
|
+
*
|
|
597
|
+
* @param items - Raw LSP symbol information records.
|
|
598
|
+
* @returns A hierarchical symbol outline.
|
|
487
599
|
*/
|
|
488
600
|
function buildSymbolTree(items) {
|
|
489
601
|
const flat = [];
|
|
490
602
|
for (const item of items) {
|
|
491
|
-
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);
|
|
492
611
|
if (!parsed.success)
|
|
493
612
|
continue;
|
|
494
613
|
flat.push({
|
|
@@ -522,17 +641,25 @@ function buildSymbolTree(items) {
|
|
|
522
641
|
}
|
|
523
642
|
return roots;
|
|
524
643
|
}
|
|
525
|
-
/**
|
|
644
|
+
/**
|
|
645
|
+
* Parse a WorkspaceEdit into flat LspTextEdit[]
|
|
646
|
+
*
|
|
647
|
+
* @param result - Raw LSP workspace edit.
|
|
648
|
+
* @returns Flattened text edits.
|
|
649
|
+
*/
|
|
526
650
|
function parseWorkspaceEdit(result) {
|
|
527
|
-
const parsed =
|
|
651
|
+
const parsed = z
|
|
652
|
+
.object({
|
|
653
|
+
changes: z.record(z.string(), z.array(textEditSchema)).optional(),
|
|
654
|
+
})
|
|
655
|
+
.safeParse(result);
|
|
528
656
|
if (!parsed.success || !parsed.data.changes)
|
|
529
657
|
return [];
|
|
530
658
|
const edits = [];
|
|
531
659
|
for (const [editUri, textEdits] of Object.entries(parsed.data.changes)) {
|
|
532
|
-
const file = uriToPath(editUri);
|
|
533
660
|
for (const te of textEdits) {
|
|
534
661
|
edits.push({
|
|
535
|
-
file,
|
|
662
|
+
file: uriToPath(editUri),
|
|
536
663
|
startLine: te.range.start.line,
|
|
537
664
|
startCharacter: te.range.start.character,
|
|
538
665
|
endLine: te.range.end.line,
|
|
@@ -543,9 +670,14 @@ function parseWorkspaceEdit(result) {
|
|
|
543
670
|
}
|
|
544
671
|
return edits;
|
|
545
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
|
+
*/
|
|
546
679
|
function getLanguageId(filePath) {
|
|
547
|
-
|
|
548
|
-
switch (ext) {
|
|
680
|
+
switch (extname(filePath)) {
|
|
549
681
|
case ".ts":
|
|
550
682
|
case ".mts":
|
|
551
683
|
case ".cts":
|
|
@@ -565,6 +697,9 @@ function getLanguageId(filePath) {
|
|
|
565
697
|
/**
|
|
566
698
|
* Extract text from LSP hover contents. Handles MarkupContent (`{ value }`),
|
|
567
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.
|
|
568
703
|
*/
|
|
569
704
|
function formatHoverContents(contents) {
|
|
570
705
|
const str = z.string().safeParse(contents);
|
|
@@ -574,7 +709,7 @@ function formatHoverContents(contents) {
|
|
|
574
709
|
const parts = contents.map(formatHoverContents).filter(Boolean);
|
|
575
710
|
return parts.length > 0 ? parts.join("\n\n") : null;
|
|
576
711
|
}
|
|
577
|
-
const markup =
|
|
712
|
+
const markup = z.object({ value: z.string() }).safeParse(contents);
|
|
578
713
|
if (markup.success)
|
|
579
714
|
return markup.data.value;
|
|
580
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",
|