@kenkaiiii/ggcoder 5.23.1 → 5.23.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/dist/app-sidecar.js +11 -0
  2. package/dist/app-sidecar.js.map +1 -1
  3. package/dist/chat-agents/general.test.js +6 -3
  4. package/dist/chat-agents/general.test.js.map +1 -1
  5. package/dist/chat-agents/specialists.test.js +3 -2
  6. package/dist/chat-agents/specialists.test.js.map +1 -1
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +12 -0
  9. package/dist/cli.js.map +1 -1
  10. package/dist/config.d.ts +14 -0
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +41 -40
  13. package/dist/config.js.map +1 -1
  14. package/dist/config.test.js +61 -1
  15. package/dist/config.test.js.map +1 -1
  16. package/dist/core/agent-mcp-passthrough.test.d.ts +2 -0
  17. package/dist/core/agent-mcp-passthrough.test.d.ts.map +1 -0
  18. package/dist/core/agent-mcp-passthrough.test.js +61 -0
  19. package/dist/core/agent-mcp-passthrough.test.js.map +1 -0
  20. package/dist/core/agent-session-compaction.test.js +4 -7
  21. package/dist/core/agent-session-compaction.test.js.map +1 -1
  22. package/dist/core/agent-session-marker-anchors.test.js +4 -7
  23. package/dist/core/agent-session-marker-anchors.test.js.map +1 -1
  24. package/dist/core/agent-session-memory-tail.test.js +4 -7
  25. package/dist/core/agent-session-memory-tail.test.js.map +1 -1
  26. package/dist/core/agent-session-queue.test.js +4 -7
  27. package/dist/core/agent-session-queue.test.js.map +1 -1
  28. package/dist/core/agent-tools-allowlist.test.js +5 -3
  29. package/dist/core/agent-tools-allowlist.test.js.map +1 -1
  30. package/dist/core/agents.d.ts +11 -0
  31. package/dist/core/agents.d.ts.map +1 -1
  32. package/dist/core/agents.js +21 -0
  33. package/dist/core/agents.js.map +1 -1
  34. package/dist/core/agents.test.d.ts +2 -0
  35. package/dist/core/agents.test.d.ts.map +1 -0
  36. package/dist/core/agents.test.js +67 -0
  37. package/dist/core/agents.test.js.map +1 -0
  38. package/dist/core/encode-cwd.d.ts +17 -0
  39. package/dist/core/encode-cwd.d.ts.map +1 -1
  40. package/dist/core/encode-cwd.js +20 -7
  41. package/dist/core/encode-cwd.js.map +1 -1
  42. package/dist/core/encode-cwd.test.js +20 -1
  43. package/dist/core/encode-cwd.test.js.map +1 -1
  44. package/dist/core/ideal-review.d.ts.map +1 -1
  45. package/dist/core/ideal-review.js +6 -1
  46. package/dist/core/ideal-review.js.map +1 -1
  47. package/dist/core/ideal-review.test.js +7 -2
  48. package/dist/core/ideal-review.test.js.map +1 -1
  49. package/dist/core/lsp/client.d.ts +50 -0
  50. package/dist/core/lsp/client.d.ts.map +1 -1
  51. package/dist/core/lsp/client.js +158 -13
  52. package/dist/core/lsp/client.js.map +1 -1
  53. package/dist/core/lsp/jsonrpc.d.ts +38 -1
  54. package/dist/core/lsp/jsonrpc.d.ts.map +1 -1
  55. package/dist/core/lsp/jsonrpc.js +13 -1
  56. package/dist/core/lsp/jsonrpc.js.map +1 -1
  57. package/dist/core/lsp/manager.d.ts.map +1 -1
  58. package/dist/core/lsp/manager.js +23 -2
  59. package/dist/core/lsp/manager.js.map +1 -1
  60. package/dist/core/lsp/manager.test.js +32 -1
  61. package/dist/core/lsp/manager.test.js.map +1 -1
  62. package/dist/core/lsp/test-support.d.ts +18 -0
  63. package/dist/core/lsp/test-support.d.ts.map +1 -0
  64. package/dist/core/lsp/test-support.js +27 -0
  65. package/dist/core/lsp/test-support.js.map +1 -0
  66. package/dist/core/lsp/uri.test.d.ts +2 -0
  67. package/dist/core/lsp/uri.test.d.ts.map +1 -0
  68. package/dist/core/lsp/uri.test.js +56 -0
  69. package/dist/core/lsp/uri.test.js.map +1 -0
  70. package/dist/core/lsp/windows.test.d.ts +2 -0
  71. package/dist/core/lsp/windows.test.d.ts.map +1 -0
  72. package/dist/core/lsp/windows.test.js +251 -0
  73. package/dist/core/lsp/windows.test.js.map +1 -0
  74. package/dist/core/mcp/resolve-stdio.d.ts +35 -0
  75. package/dist/core/mcp/resolve-stdio.d.ts.map +1 -1
  76. package/dist/core/mcp/resolve-stdio.js +80 -1
  77. package/dist/core/mcp/resolve-stdio.js.map +1 -1
  78. package/dist/core/mcp/resolve-stdio.test.js +99 -4
  79. package/dist/core/mcp/resolve-stdio.test.js.map +1 -1
  80. package/dist/core/persistent-shell.d.ts +3 -1
  81. package/dist/core/persistent-shell.d.ts.map +1 -1
  82. package/dist/core/persistent-shell.js +13 -3
  83. package/dist/core/persistent-shell.js.map +1 -1
  84. package/dist/core/process-manager-dev-server-repro.test.js +34 -12
  85. package/dist/core/process-manager-dev-server-repro.test.js.map +1 -1
  86. package/dist/core/process-manager.d.ts +1 -1
  87. package/dist/core/process-manager.d.ts.map +1 -1
  88. package/dist/core/process-manager.js +23 -13
  89. package/dist/core/process-manager.js.map +1 -1
  90. package/dist/core/project-discovery.d.ts +10 -0
  91. package/dist/core/project-discovery.d.ts.map +1 -1
  92. package/dist/core/project-discovery.js +42 -8
  93. package/dist/core/project-discovery.js.map +1 -1
  94. package/dist/core/project-discovery.test.js +102 -1
  95. package/dist/core/project-discovery.test.js.map +1 -1
  96. package/dist/core/prompt-commands.d.ts.map +1 -1
  97. package/dist/core/prompt-commands.js +12 -9
  98. package/dist/core/prompt-commands.js.map +1 -1
  99. package/dist/core/prompt-commands.test.js +10 -0
  100. package/dist/core/prompt-commands.test.js.map +1 -1
  101. package/dist/core/radio.test.js +4 -1
  102. package/dist/core/radio.test.js.map +1 -1
  103. package/dist/core/runtime-mode.d.ts +8 -0
  104. package/dist/core/runtime-mode.d.ts.map +1 -1
  105. package/dist/core/runtime-mode.js +10 -0
  106. package/dist/core/runtime-mode.js.map +1 -1
  107. package/dist/core/session-storage.d.ts.map +1 -1
  108. package/dist/core/session-storage.js +25 -1
  109. package/dist/core/session-storage.js.map +1 -1
  110. package/dist/core/session-storage.test.js +4 -1
  111. package/dist/core/session-storage.test.js.map +1 -1
  112. package/dist/core/skills-routing.test.js +3 -1
  113. package/dist/core/skills-routing.test.js.map +1 -1
  114. package/dist/core/slash-commands.d.ts.map +1 -1
  115. package/dist/core/slash-commands.js +7 -3
  116. package/dist/core/slash-commands.js.map +1 -1
  117. package/dist/core/speed-benchmark.test.js +9 -3
  118. package/dist/core/speed-benchmark.test.js.map +1 -1
  119. package/dist/core/subagent-manager.d.ts +1 -1
  120. package/dist/core/subagent-manager.d.ts.map +1 -1
  121. package/dist/core/subagent-manager.js +9 -0
  122. package/dist/core/subagent-manager.js.map +1 -1
  123. package/dist/core/subagent-store.test.js +14 -2
  124. package/dist/core/subagent-store.test.js.map +1 -1
  125. package/dist/modes/json-mode.d.ts +7 -0
  126. package/dist/modes/json-mode.d.ts.map +1 -1
  127. package/dist/modes/json-mode.js +1 -0
  128. package/dist/modes/json-mode.js.map +1 -1
  129. package/dist/modes/subagent-worker-mode.d.ts +2 -0
  130. package/dist/modes/subagent-worker-mode.d.ts.map +1 -1
  131. package/dist/modes/subagent-worker-mode.js.map +1 -1
  132. package/dist/system-prompt.js +1 -1
  133. package/dist/system-prompt.js.map +1 -1
  134. package/dist/system-prompt.test.js +3 -0
  135. package/dist/system-prompt.test.js.map +1 -1
  136. package/dist/test-support/fake-home.d.ts +20 -0
  137. package/dist/test-support/fake-home.d.ts.map +1 -0
  138. package/dist/test-support/fake-home.js +37 -0
  139. package/dist/test-support/fake-home.js.map +1 -0
  140. package/dist/tools/bash.d.ts.map +1 -1
  141. package/dist/tools/bash.js +7 -3
  142. package/dist/tools/bash.js.map +1 -1
  143. package/dist/tools/bash.test.js +103 -7
  144. package/dist/tools/bash.test.js.map +1 -1
  145. package/dist/tools/edit-robustness.test.js +3 -1
  146. package/dist/tools/edit-robustness.test.js.map +1 -1
  147. package/dist/tools/find.d.ts.map +1 -1
  148. package/dist/tools/find.js +4 -1
  149. package/dist/tools/find.js.map +1 -1
  150. package/dist/tools/grep.d.ts.map +1 -1
  151. package/dist/tools/grep.js +3 -1
  152. package/dist/tools/grep.js.map +1 -1
  153. package/dist/tools/overflow.test.js +4 -7
  154. package/dist/tools/overflow.test.js.map +1 -1
  155. package/dist/tools/path-utils.d.ts +15 -0
  156. package/dist/tools/path-utils.d.ts.map +1 -1
  157. package/dist/tools/path-utils.js +17 -0
  158. package/dist/tools/path-utils.js.map +1 -1
  159. package/dist/tools/path-utils.test.js +7 -2
  160. package/dist/tools/path-utils.test.js.map +1 -1
  161. package/dist/tools/search-code.d.ts.map +1 -1
  162. package/dist/tools/search-code.js +6 -4
  163. package/dist/tools/search-code.js.map +1 -1
  164. package/dist/tools/subagent.d.ts +1 -1
  165. package/dist/tools/subagent.d.ts.map +1 -1
  166. package/dist/tools/subagent.js +8 -0
  167. package/dist/tools/subagent.js.map +1 -1
  168. package/dist/utils/process.d.ts +26 -3
  169. package/dist/utils/process.d.ts.map +1 -1
  170. package/dist/utils/process.js +68 -10
  171. package/dist/utils/process.js.map +1 -1
  172. package/dist/utils/process.test.d.ts +2 -0
  173. package/dist/utils/process.test.d.ts.map +1 -0
  174. package/dist/utils/process.test.js +42 -0
  175. package/dist/utils/process.test.js.map +1 -0
  176. package/package.json +4 -4
@@ -2,19 +2,95 @@ import { spawn } from "node:child_process";
2
2
  import { pathToFileURL } from "node:url";
3
3
  import { JsonRpcConnection, JsonRpcRequestError } from "./jsonrpc.js";
4
4
  import { getSafeToolEnv } from "../../tools/safe-env.js";
5
+ import { killProcessTree } from "../../utils/process.js";
6
+ import { log } from "../logger.js";
5
7
  function progressTokenKey(token) {
6
8
  return `${typeof token}:${String(token)}`;
7
9
  }
8
10
  const SERVER_CANCELLED = -32802;
9
11
  const METHOD_NOT_FOUND = -32601;
10
12
  const PULL_POLL_INTERVAL_MS = 300;
13
+ /** Bounded stderr retained per server for failure diagnostics. */
14
+ const STDERR_TAIL_BYTES = 4000;
11
15
  const SHUTDOWN_TIMEOUT_MS = 2000;
12
16
  const KILL_GRACE_MS = 1500;
17
+ /**
18
+ * JSON-RPC wire tracer, enabled only by `GG_LSP_TRACE=1`.
19
+ *
20
+ * When a server accepts a document and then never publishes diagnostics, the
21
+ * outcome (`timeout`) looks identical whether our `didOpen` never went out, the
22
+ * server rejected it, or it answered about a URI we weren't watching. Only the
23
+ * wire tells those apart. Opt-in because it is genuinely chatty, and params are
24
+ * SUMMARIZED rather than dumped so a trace can never spill file contents into a
25
+ * log.
26
+ */
27
+ function wireTracer(serverId) {
28
+ if (process.env.GG_LSP_TRACE !== "1")
29
+ return undefined;
30
+ return (direction, message) => {
31
+ const params = message.params;
32
+ // `window/logMessage` / `window/showMessage` are the server's own
33
+ // human-readable complaints ("cannot find tsserver", bad option, …) and are
34
+ // frequently the only statement of what actually went wrong. Everything
35
+ // else is summarized — never file contents.
36
+ const isServerMessage = message.method === "window/logMessage" || message.method === "window/showMessage";
37
+ log("DEBUG", "lsp", `${serverId} rpc ${direction}`, {
38
+ method: message.method ?? `(response id=${String(message.id)})`,
39
+ uri: params?.textDocument?.uri ?? params?.uri,
40
+ // Counts only, never the diagnostics themselves.
41
+ diagnostics: Array.isArray(params?.diagnostics) ? params.diagnostics.length : undefined,
42
+ text: isServerMessage ? params?.message?.slice(0, 300) : undefined,
43
+ error: message.error?.message,
44
+ });
45
+ };
46
+ }
13
47
  function sleep(ms) {
14
48
  return new Promise((resolve) => {
15
49
  setTimeout(resolve, ms).unref();
16
50
  });
17
51
  }
52
+ /**
53
+ * Canonical cache key for a `file://` URI.
54
+ *
55
+ * Diagnostics live in a Map keyed by URI: we `set` what the server sends and
56
+ * `get` what we built from the edited path, so the two must be the SAME STRING.
57
+ * There is no single canonical spelling of a file URI, and on Windows we and
58
+ * tsserver disagreed in two independent ways at once. Measured on CI:
59
+ *
60
+ * we sent: file:///c:/Users/RUNNER%7E1/…/main.ts
61
+ * server sent: file:///c%3A/Users/RUNNER~1/…/main.ts
62
+ *
63
+ * `~` is an RFC 3986 unreserved character that `pathToFileURL` percent-encodes
64
+ * and tsserver leaves literal; the drive colon is the reverse. Every lookup
65
+ * missed, so the diagnostics arrived (the wire trace shows `diagnostics=1`)
66
+ * and were then dropped on the floor — reported to the user as a clean file,
67
+ * because LSP degrades silently by design. 8.3 short names like `RUNNER~1` are
68
+ * not exotic: that IS the Windows temp path on GitHub runners, and `PROGRA~1`
69
+ * and friends show up in real user paths.
70
+ *
71
+ * Fix: decode percent-escapes and lower-case the drive letter, so both
72
+ * spellings collapse to one key. Used ONLY as a Map key — the URI actually put
73
+ * on the wire is still the properly encoded one from `pathToFileURL`.
74
+ *
75
+ * Windows paths are also case-insensitive, but case is deliberately NOT folded:
76
+ * both sides derive from the same path string, and folding would break the
77
+ * genuinely case-sensitive POSIX servers that share this code.
78
+ */
79
+ export function normalizeUri(uri) {
80
+ let decoded = uri;
81
+ try {
82
+ decoded = decodeURI(uri);
83
+ // decodeURI leaves %3A alone (`:` is reserved), so unescape it explicitly
84
+ // rather than reaching for decodeURIComponent, which would also mangle any
85
+ // literal `#`/`?` a filename is allowed to contain.
86
+ decoded = decoded.replace(/%3A/gi, ":");
87
+ }
88
+ catch {
89
+ // Malformed escape sequence — fall back to the raw URI rather than throwing
90
+ // inside a notification handler.
91
+ }
92
+ return decoded.replace(/^(file:\/\/\/)([A-Za-z])(:)/, (_m, prefix, drive) => `${prefix}${drive.toLowerCase()}:`);
93
+ }
18
94
  /**
19
95
  * One language-server process bound to one project root. Owns document sync
20
96
  * (didOpen / didChange / didSave with per-uri version counters), the
@@ -33,29 +109,49 @@ export class LspClient {
33
109
  activeProgressTokens = new Set();
34
110
  alive = true;
35
111
  initializationOptions;
112
+ stderrBuffer = "";
36
113
  constructor(spec, rootPath, command) {
37
114
  this.spec = spec;
38
115
  this.rootPath = rootPath;
39
116
  this.initializationOptions = command.initializationOptions ?? {};
40
117
  this.proc = spawn(command.command, command.args, {
41
118
  cwd: rootPath,
42
- stdio: ["pipe", "pipe", "ignore"],
119
+ // stderr was "ignore" — which made every server-side failure completely
120
+ // unattributable. LSP degrades silently by design, so a server that boots
121
+ // and then errors (a tsserver that can't start, a bad
122
+ // initializationOptions path, an unsupported flag) produced exactly the
123
+ // same empty output as a clean file, with nothing anywhere saying why.
124
+ // Diagnosing the Windows timeout was blind for precisely this reason.
125
+ // Pipe it and log it; the pipe MUST be drained either way, or a chatty
126
+ // server eventually blocks on a full stderr buffer.
127
+ stdio: ["pipe", "pipe", "pipe"],
43
128
  env: getSafeToolEnv(),
44
129
  });
130
+ this.captureStderr();
45
131
  this.proc.on("error", () => this.markDead());
46
- this.proc.on("exit", () => this.markDead());
132
+ this.proc.on("exit", (code, signal) => {
133
+ if (code !== 0 && code !== null) {
134
+ log("WARN", "lsp", `${spec.id} language server exited`, {
135
+ code,
136
+ signal,
137
+ stderr: this.stderrTail(),
138
+ });
139
+ }
140
+ this.markDead();
141
+ });
47
142
  const { stdout, stdin } = this.proc;
48
143
  if (!stdout || !stdin) {
49
144
  // Cannot happen with "pipe" stdio, but guard instead of asserting.
50
145
  this.proc.kill("SIGKILL");
51
146
  throw new Error(`failed to open stdio pipes for ${spec.id} language server`);
52
147
  }
53
- this.conn = new JsonRpcConnection(stdout, stdin);
148
+ this.conn = new JsonRpcConnection(stdout, stdin, wireTracer(spec.id));
54
149
  this.conn.onNotification("textDocument/publishDiagnostics", (params) => {
55
150
  const publish = params;
56
- this.published.set(publish.uri, publish.diagnostics);
151
+ const uri = normalizeUri(publish.uri);
152
+ this.published.set(uri, publish.diagnostics);
57
153
  this.waiters = this.waiters.filter((waiter) => {
58
- if (waiter.uri !== publish.uri)
154
+ if (waiter.uri !== uri)
59
155
  return true;
60
156
  waiter.resolve(publish.diagnostics);
61
157
  return false;
@@ -79,7 +175,30 @@ export class LspClient {
79
175
  get hasActiveProgress() {
80
176
  return this.activeProgressTokens.size > 0;
81
177
  }
178
+ /**
179
+ * Drain the server's stderr into a bounded ring, and mirror it to the debug
180
+ * log so a misbehaving server is diagnosable from `~/.gg/*.log` alone.
181
+ * Bounded because a looping server can emit stderr without limit.
182
+ */
183
+ captureStderr() {
184
+ this.proc.stderr?.on("data", (chunk) => {
185
+ const text = chunk.toString();
186
+ this.stderrBuffer = (this.stderrBuffer + text).slice(-STDERR_TAIL_BYTES);
187
+ const trimmed = text.trim();
188
+ if (trimmed)
189
+ log("DEBUG", "lsp", `${this.spec.id} stderr`, { text: trimmed.slice(0, 500) });
190
+ });
191
+ // A read error must not take the process down; the server is still usable.
192
+ this.proc.stderr?.on("error", () => { });
193
+ }
194
+ /** Most recent server stderr, for failure diagnostics. */
195
+ stderrTail() {
196
+ return this.stderrBuffer.trim().slice(-STDERR_TAIL_BYTES);
197
+ }
82
198
  async initialize(timeoutMs) {
199
+ // Wire value: keep it properly percent-encoded. `normalizeUri` is a cache
200
+ // key helper, and a decoded root (`C:\Program Files\…` → a literal space)
201
+ // is not a valid URI to hand a server at initialize.
83
202
  const rootUri = pathToFileURL(this.rootPath).href;
84
203
  const result = (await this.conn.request("initialize", {
85
204
  processId: process.pid,
@@ -106,11 +225,16 @@ export class LspClient {
106
225
  * report computed against THIS content rather than a stale one.
107
226
  */
108
227
  syncDocument(filePath, content) {
228
+ // Two different strings on purpose: `uri` is the properly percent-encoded
229
+ // form that goes ON THE WIRE (a literal space or `~` there would be an
230
+ // invalid URI), while `key` is the decoded form used for our own bookkeeping
231
+ // so it matches whatever spelling the server replies with.
109
232
  const uri = pathToFileURL(filePath).href;
110
- this.published.delete(uri);
111
- const previousVersion = this.versions.get(uri);
233
+ const key = normalizeUri(uri);
234
+ this.published.delete(key);
235
+ const previousVersion = this.versions.get(key);
112
236
  if (previousVersion === undefined) {
113
- this.versions.set(uri, 1);
237
+ this.versions.set(key, 1);
114
238
  this.conn.notify("textDocument/didOpen", {
115
239
  textDocument: {
116
240
  uri,
@@ -122,7 +246,7 @@ export class LspClient {
122
246
  }
123
247
  else {
124
248
  const version = previousVersion + 1;
125
- this.versions.set(uri, version);
249
+ this.versions.set(key, version);
126
250
  this.conn.notify("textDocument/didChange", {
127
251
  textDocument: { uri, version },
128
252
  contentChanges: [{ text: content }],
@@ -173,10 +297,28 @@ export class LspClient {
173
297
  this.conn.notify("exit");
174
298
  const killTimer = setTimeout(() => {
175
299
  if (this.alive)
176
- this.proc.kill("SIGKILL");
300
+ this.terminate();
177
301
  }, KILL_GRACE_MS);
178
302
  killTimer.unref();
179
303
  }
304
+ /**
305
+ * Force-kill the server and everything it spawned, immediately.
306
+ *
307
+ * For a server that never completed the handshake, the polite
308
+ * `shutdown`/`exit` sequence is pointless — it has already proven it isn't
309
+ * answering — so skip straight to the kill.
310
+ *
311
+ * Uses `killProcessTree`, not `proc.kill()`: language servers spawn children
312
+ * (typescript-language-server runs tsserver), Windows has no process groups,
313
+ * and killing only the parent leaves those children alive holding file
314
+ * handles in the project directory.
315
+ */
316
+ terminate() {
317
+ this.conn.dispose();
318
+ if (this.proc.pid !== undefined)
319
+ killProcessTree(this.proc.pid);
320
+ this.markDead();
321
+ }
180
322
  markDead() {
181
323
  this.alive = false;
182
324
  this.activeProgressTokens.clear();
@@ -187,14 +329,17 @@ export class LspClient {
187
329
  waiter.resolve([]);
188
330
  }
189
331
  waitForPublish(uri, timeoutMs) {
190
- const cached = this.published.get(uri);
332
+ // Both the cache and the waiter list are keyed by the normalized form, which
333
+ // is what the publishDiagnostics handler stores under.
334
+ const key = normalizeUri(uri);
335
+ const cached = this.published.get(key);
191
336
  if (cached !== undefined)
192
337
  return Promise.resolve(cached);
193
338
  if (!this.alive)
194
339
  return Promise.resolve(null);
195
340
  return new Promise((resolve) => {
196
341
  const waiter = {
197
- uri,
342
+ uri: key,
198
343
  resolve: (diagnostics) => {
199
344
  clearTimeout(timer);
200
345
  resolve(diagnostics);
@@ -214,7 +359,7 @@ export class LspClient {
214
359
  if (report?.kind === "full")
215
360
  return report.items ?? [];
216
361
  if (report?.kind === "unchanged")
217
- return this.published.get(uri) ?? [];
362
+ return this.published.get(normalizeUri(uri)) ?? [];
218
363
  return "unsupported";
219
364
  }
220
365
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/lsp/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/lsp/client.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,29 @@
1
1
  import type { Readable, Writable } from "node:stream";
2
+ /**
3
+ * Minimal JSON-RPC 2.0 connection over a byte stream pair with LSP-style
4
+ * Content-Length framing. Zero dependencies by design — this module must
5
+ * never pull in vscode-jsonrpc or any other package (hard distribution
6
+ * constraint: LSP diagnostics add no install weight).
7
+ */
8
+ interface JsonRpcMessage {
9
+ jsonrpc?: string;
10
+ id?: number | string;
11
+ method?: string;
12
+ params?: unknown;
13
+ result?: unknown;
14
+ error?: {
15
+ code: number;
16
+ message: string;
17
+ data?: unknown;
18
+ };
19
+ }
2
20
  export declare class JsonRpcRequestError extends Error {
3
21
  readonly code: number;
4
22
  constructor(method: string, code: number, message: string);
5
23
  }
6
24
  export type NotificationHandler = (params: unknown) => void;
25
+ /** Observer for every framed message crossing the wire, in both directions. */
26
+ export type WireTracer = (direction: "out" | "in", message: JsonRpcMessage) => void;
7
27
  /**
8
28
  * JSON-RPC connection speaking Content-Length framed messages.
9
29
  *
@@ -14,12 +34,28 @@ export type NotificationHandler = (params: unknown) => void;
14
34
  */
15
35
  export declare class JsonRpcConnection {
16
36
  private readonly output;
37
+ /**
38
+ * Optional wire tracer. Diagnosing a server that accepts a document and
39
+ * then never publishes requires seeing whether our notification actually
40
+ * went out and whether anything came back — indistinguishable from outside,
41
+ * because LSP failures are silent by design. Off unless a caller passes
42
+ * one, so the normal path is byte-identical.
43
+ */
44
+ private readonly trace?;
17
45
  private buffer;
18
46
  private nextId;
19
47
  private readonly pending;
20
48
  private readonly notificationHandlers;
21
49
  private disposed;
22
- constructor(input: Readable, output: Writable);
50
+ constructor(input: Readable, output: Writable,
51
+ /**
52
+ * Optional wire tracer. Diagnosing a server that accepts a document and
53
+ * then never publishes requires seeing whether our notification actually
54
+ * went out and whether anything came back — indistinguishable from outside,
55
+ * because LSP failures are silent by design. Off unless a caller passes
56
+ * one, so the normal path is byte-identical.
57
+ */
58
+ trace?: WireTracer | undefined);
23
59
  onNotification(method: string, handler: NotificationHandler): void;
24
60
  request(method: string, params: unknown, timeoutMs: number): Promise<unknown>;
25
61
  notify(method: string, params?: unknown): void;
@@ -29,4 +65,5 @@ export declare class JsonRpcConnection {
29
65
  private onData;
30
66
  private onMessage;
31
67
  }
68
+ export {};
32
69
  //# sourceMappingURL=jsonrpc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonrpc.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/jsonrpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAkBtD,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1D;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAI5D;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAS1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IARzB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoD;IAC5E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA4C;IACjF,OAAO,CAAC,QAAQ,CAAS;gBAGvB,KAAK,EAAE,QAAQ,EACE,MAAM,EAAE,QAAQ;IAOnC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAMlE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB7E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAI9C,iEAAiE;IACjE,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,MAAM;IA0Bd,OAAO,CAAC,SAAS;CA4BlB"}
1
+ {"version":3,"file":"jsonrpc.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/jsonrpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD;;;;;GAKG;AAEH,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3D;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1D;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAE5D,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;AAIpF;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAS1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAhBzB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoD;IAC5E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA4C;IACjF,OAAO,CAAC,QAAQ,CAAS;gBAGvB,KAAK,EAAE,QAAQ,EACE,MAAM,EAAE,QAAQ;IACjC;;;;;;OAMG;IACc,KAAK,CAAC,EAAE,UAAU,YAAA;IAOrC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAMlE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB7E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAI9C,iEAAiE;IACjE,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,MAAM;IA0Bd,OAAO,CAAC,SAAS;CA6BlB"}
@@ -17,13 +17,23 @@ const HEADER_SEPARATOR = "\r\n\r\n";
17
17
  */
18
18
  export class JsonRpcConnection {
19
19
  output;
20
+ trace;
20
21
  buffer = Buffer.alloc(0);
21
22
  nextId = 1;
22
23
  pending = new Map();
23
24
  notificationHandlers = new Map();
24
25
  disposed = false;
25
- constructor(input, output) {
26
+ constructor(input, output,
27
+ /**
28
+ * Optional wire tracer. Diagnosing a server that accepts a document and
29
+ * then never publishes requires seeing whether our notification actually
30
+ * went out and whether anything came back — indistinguishable from outside,
31
+ * because LSP failures are silent by design. Off unless a caller passes
32
+ * one, so the normal path is byte-identical.
33
+ */
34
+ trace) {
26
35
  this.output = output;
36
+ this.trace = trace;
27
37
  input.on("data", (chunk) => this.onData(chunk));
28
38
  // Writing to a dead server's stdin must never crash the host process.
29
39
  output.on("error", () => { });
@@ -72,6 +82,7 @@ export class JsonRpcConnection {
72
82
  send(msg) {
73
83
  if (this.disposed)
74
84
  return;
85
+ this.trace?.("out", msg);
75
86
  const body = JSON.stringify(msg);
76
87
  try {
77
88
  this.output.write(`Content-Length: ${Buffer.byteLength(body)}\r\n\r\n${body}`);
@@ -109,6 +120,7 @@ export class JsonRpcConnection {
109
120
  }
110
121
  }
111
122
  onMessage(msg) {
123
+ this.trace?.("in", msg);
112
124
  // Response to one of our requests.
113
125
  if (msg.id !== undefined && msg.method === undefined) {
114
126
  const settle = typeof msg.id === "number" ? this.pending.get(msg.id) : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"jsonrpc.js","sourceRoot":"","sources":["../../../src/core/lsp/jsonrpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonrpc.js","sourceRoot":"","sources":["../../../src/core/lsp/jsonrpc.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,IAAI,CAAS;IAEtB,YAAY,MAAc,EAAE,IAAY,EAAE,OAAe;QACvD,KAAK,CAAC,GAAG,MAAM,KAAK,OAAO,UAAU,IAAI,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAOD,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAiB;IAST;IAQA;IAhBX,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,GAAG,CAAC,CAAC;IACF,OAAO,GAAG,IAAI,GAAG,EAAyC,CAAC;IAC3D,oBAAoB,GAAG,IAAI,GAAG,EAAiC,CAAC;IACzE,QAAQ,GAAG,KAAK,CAAC;IAEzB,YACE,KAAe,EACE,MAAgB;IACjC;;;;;;OAMG;IACc,KAAkB;QARlB,WAAM,GAAN,MAAM,CAAU;QAQhB,UAAK,GAAL,KAAK,CAAa;QAEnC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,sEAAsE;QACtE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,OAA4B;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,MAAe,EAAE,SAAiB;QACxD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,CAAC,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,mBAAmB,SAAS,IAAI,CAAC,CAAC,CAAC;YACpF,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC3B,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBACd,MAAM,CAAC,IAAI,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7E,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,MAAgB;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,iEAAiE;IACjE,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxB,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,GAAmB;QAC9B,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;QACxE,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAa;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAClD,SAAS,CAAC;YACR,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACxD,IAAI,SAAS,KAAK,CAAC,CAAC;gBAAE,OAAO;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACxE,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC;YACtD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,MAAM;gBAAE,OAAO;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC5E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;YACvD,IAAI,GAAmB,CAAC;YACxB,IAAI,CAAC;gBACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,GAAmB;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxB,mCAAmC;QACnC,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACjF,IAAI,MAAM,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;YACD,OAAO;QACT,CAAC;QACD,wDAAwD;QACxD,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrD,IAAI,MAAM,GAAY,IAAI,CAAC;YAC3B,IAAI,GAAG,CAAC,MAAM,KAAK,yBAAyB,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAI,GAAG,CAAC,MAA4C,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC7E,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,gBAAgB;QAChB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,QAAQ,EAAE,CAAC;gBACb,KAAK,MAAM,OAAO,IAAI,QAAQ;oBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,OAAO,GACP,gBAAgB,GAChB,SAAS,GACT,aAAa,GACb,aAAa,GACb,eAAe,CAAC;AAEpB,UAAU,cAAc;IACtB,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,oBAAoB,GAC5B,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;CAC9C,CAAC,CAAC;AAWP;;;;GAIG;AACH,qBAAa,UAAU;IAanB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAZtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,iEAAiE;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgD;IACxE,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2C;IAC1E,OAAO,CAAC,QAAQ,CAAS;gBAGN,GAAG,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,iBAAiB;IAQ7B;;;OAGG;IACG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/E,qEAAqE;IAC/D,6BAA6B,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC;IA6BhC,8EAA8E;IAC9E,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAIpE,mDAAmD;IACnD,iBAAiB,IAAI,oBAAoB,EAAE;IAI3C,oEAAoE;IACpE,WAAW,IAAI,IAAI;IAanB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,MAAM;YAWA,OAAO;IAuCrB,OAAO,CAAC,YAAY;CAgCrB"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,OAAO,GACP,gBAAgB,GAChB,SAAS,GACT,aAAa,GACb,aAAa,GACb,eAAe,CAAC;AAEpB,UAAU,cAAc;IACtB,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,oBAAoB,GAC5B,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;CAC9C,CAAC,CAAC;AAWP;;;;GAIG;AACH,qBAAa,UAAU;IAanB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAZtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,iEAAiE;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgD;IACxE,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2C;IAC1E,OAAO,CAAC,QAAQ,CAAS;gBAGN,GAAG,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,iBAAiB;IAQ7B;;;OAGG;IACG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/E,qEAAqE;IAC/D,6BAA6B,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC;IA6BhC,8EAA8E;IAC9E,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAIpE,mDAAmD;IACnD,iBAAiB,IAAI,oBAAoB,EAAE;IAI3C,oEAAoE;IACpE,WAAW,IAAI,IAAI;IAanB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,MAAM;YAWA,OAAO;IAkDrB,OAAO,CAAC,YAAY;CA2CrB"}
@@ -120,8 +120,18 @@ export class LspManager {
120
120
  this.clients.set(key, Promise.resolve({ status: "server_failed" }));
121
121
  return this.outcome("server_failed", filePath);
122
122
  }
123
- if (diagnostics === null)
123
+ if (diagnostics === null) {
124
+ // A timeout carries no other evidence and is indistinguishable from
125
+ // "clean" in the tool output. Log the server's own stderr alongside it —
126
+ // usually the only thing that explains why a server accepted the document
127
+ // and then never reported on it.
128
+ log("WARN", "lsp", `${spec.id} diagnostics timed out`, {
129
+ file: filePath,
130
+ budgetMs,
131
+ stderr: client.stderrTail() || "(none)",
132
+ });
124
133
  return this.outcome("timeout", filePath);
134
+ }
125
135
  if (diagnostics.length > 0) {
126
136
  const relPath = path.relative(this.cwd, filePath);
127
137
  return {
@@ -144,9 +154,16 @@ export class LspManager {
144
154
  log("INFO", "lsp", `${spec.id} language server not available`, { root });
145
155
  return { status: "unavailable" };
146
156
  }
157
+ // `client` is declared outside the try so one that fails to initialize
158
+ // can still be killed. `new LspClient` SPAWNS the process, so discarding
159
+ // the reference on a throw leaked the server forever — one orphan per
160
+ // (server, root) every time initialize timed out, for the life of the
161
+ // session. Invisible on POSIX; on Windows the orphan keeps handles open
162
+ // in the project directory.
163
+ let client;
147
164
  try {
148
165
  const startedAt = Date.now();
149
- const client = new LspClient(spec, root, command);
166
+ client = new LspClient(spec, root, command);
150
167
  await client.initialize(INIT_TIMEOUT_MS);
151
168
  if (!client.isAlive)
152
169
  return { status: "server_failed" };
@@ -160,7 +177,11 @@ export class LspManager {
160
177
  log("WARN", "lsp", `${spec.id} server failed to start`, {
161
178
  root,
162
179
  error: error instanceof Error ? error.message : String(error),
180
+ // The server's own last words — usually the only explanation of why
181
+ // the handshake never completed.
182
+ stderr: client?.stderrTail() || "(none)",
163
183
  });
184
+ client?.terminate();
164
185
  return { status: "server_failed" };
165
186
  }
166
187
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/core/lsp/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/core/lsp/manager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
2
  import fs from "node:fs/promises";
3
+ import { removeWhenReleased } from "./test-support.js";
3
4
  import path from "node:path";
4
5
  import os from "node:os";
5
6
  import { fileURLToPath } from "node:url";
@@ -26,7 +27,7 @@ describe("LspManager", () => {
26
27
  afterEach(async () => {
27
28
  for (const manager of managers)
28
29
  manager.shutdownAll();
29
- await fs.rm(tmpDir, { recursive: true, force: true });
30
+ await removeWhenReleased(tmpDir);
30
31
  });
31
32
  function makeManager(spec, budgets) {
32
33
  const manager = new LspManager(tmpDir, {
@@ -131,6 +132,36 @@ describe("LspManager", () => {
131
132
  const outcome = await manager.diagnosticsAfterWriteDetailed(path.join(tmpDir, "init-failed.fake"), "ERROR\n");
132
133
  expect(outcome.kind).toBe("server_failed");
133
134
  });
135
+ it("kills a server that fails to initialize instead of leaking it", async () => {
136
+ // `new LspClient` SPAWNS the process, so an initialize that rejects used to
137
+ // drop the only reference to a LIVE server: one orphan per (server, root)
138
+ // for the whole session. Invisible on POSIX; on Windows the orphan holds
139
+ // handles in the project directory, which is how it surfaced — as an EBUSY
140
+ // rmdir in this suite's teardown, long after the assertions had passed.
141
+ const pidFile = path.join(tmpDir, "server.pid");
142
+ const manager = makeManager(fakeSpec(["--init-error", `--pid-file=${pidFile}`]));
143
+ const outcome = await manager.diagnosticsAfterWriteDetailed(path.join(tmpDir, "init-failed.fake"), "ERROR\n");
144
+ expect(outcome.kind).toBe("server_failed");
145
+ const pid = Number(await fs.readFile(pidFile, "utf-8"));
146
+ expect(Number.isInteger(pid)).toBe(true);
147
+ const alive = () => {
148
+ try {
149
+ process.kill(pid, 0);
150
+ return true;
151
+ }
152
+ catch {
153
+ return false;
154
+ }
155
+ };
156
+ // Termination is asynchronous (taskkill on Windows); give it a moment.
157
+ for (let attempt = 0; attempt < 50 && alive(); attempt++) {
158
+ await new Promise((resolve) => setTimeout(resolve, 100));
159
+ }
160
+ if (alive()) {
161
+ process.kill(pid, "SIGKILL"); // never leak a live process out of the suite
162
+ throw new Error(`language server ${pid} survived a failed initialize`);
163
+ }
164
+ }, 30_000);
134
165
  it("records a post-initialization server crash", async () => {
135
166
  const manager = makeManager(fakeSpec(["--crash-on-open"]));
136
167
  const outcome = await manager.diagnosticsAfterWriteDetailed(path.join(tmpDir, "crashed.fake"), "ERROR\n");