@kenkaiiii/ggcoder 5.34.2 → 5.35.0

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 (52) hide show
  1. package/dist/app-sidecar.js +11 -0
  2. package/dist/app-sidecar.js.map +1 -1
  3. package/dist/core/compaction/compactor.d.ts +50 -0
  4. package/dist/core/compaction/compactor.d.ts.map +1 -1
  5. package/dist/core/compaction/compactor.js +136 -35
  6. package/dist/core/compaction/compactor.js.map +1 -1
  7. package/dist/core/compaction/compactor.test.js +131 -1
  8. package/dist/core/compaction/compactor.test.js.map +1 -1
  9. package/dist/core/lsp/manager.d.ts +44 -9
  10. package/dist/core/lsp/manager.d.ts.map +1 -1
  11. package/dist/core/lsp/manager.js +64 -69
  12. package/dist/core/lsp/manager.js.map +1 -1
  13. package/dist/core/lsp/pool.d.ts +113 -0
  14. package/dist/core/lsp/pool.d.ts.map +1 -0
  15. package/dist/core/lsp/pool.js +255 -0
  16. package/dist/core/lsp/pool.js.map +1 -0
  17. package/dist/core/lsp/pool.test.d.ts +2 -0
  18. package/dist/core/lsp/pool.test.d.ts.map +1 -0
  19. package/dist/core/lsp/pool.test.js +286 -0
  20. package/dist/core/lsp/pool.test.js.map +1 -0
  21. package/dist/core/lsp/servers.d.ts.map +1 -1
  22. package/dist/core/lsp/servers.js +44 -3
  23. package/dist/core/lsp/servers.js.map +1 -1
  24. package/dist/core/lsp/servers.test.d.ts +2 -0
  25. package/dist/core/lsp/servers.test.d.ts.map +1 -0
  26. package/dist/core/lsp/servers.test.js +67 -0
  27. package/dist/core/lsp/servers.test.js.map +1 -0
  28. package/dist/core/lsp/windows.test.js +2 -14
  29. package/dist/core/lsp/windows.test.js.map +1 -1
  30. package/dist/core/mcp/client.d.ts +40 -0
  31. package/dist/core/mcp/client.d.ts.map +1 -1
  32. package/dist/core/mcp/client.js +119 -1
  33. package/dist/core/mcp/client.js.map +1 -1
  34. package/dist/core/mcp/index.d.ts +2 -0
  35. package/dist/core/mcp/index.d.ts.map +1 -1
  36. package/dist/core/mcp/index.js +1 -0
  37. package/dist/core/mcp/index.js.map +1 -1
  38. package/dist/core/mcp/session-elicitation-wiring.test.d.ts +2 -0
  39. package/dist/core/mcp/session-elicitation-wiring.test.d.ts.map +1 -0
  40. package/dist/core/mcp/session-elicitation-wiring.test.js +138 -0
  41. package/dist/core/mcp/session-elicitation-wiring.test.js.map +1 -0
  42. package/dist/core/mcp/shared-pool.d.ts +158 -0
  43. package/dist/core/mcp/shared-pool.d.ts.map +1 -0
  44. package/dist/core/mcp/shared-pool.js +235 -0
  45. package/dist/core/mcp/shared-pool.js.map +1 -0
  46. package/dist/core/mcp/shared-pool.test.d.ts +2 -0
  47. package/dist/core/mcp/shared-pool.test.d.ts.map +1 -0
  48. package/dist/core/mcp/shared-pool.test.js +425 -0
  49. package/dist/core/mcp/shared-pool.test.js.map +1 -0
  50. package/dist/core/mcp/types.d.ts +12 -0
  51. package/dist/core/mcp/types.d.ts.map +1 -1
  52. package/package.json +4 -4
@@ -0,0 +1,286 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
2
+ import fs from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ import { LspManager } from "./manager.js";
7
+ import { LspClientPool } from "./pool.js";
8
+ import { removeWhenReleased } from "./test-support.js";
9
+ const FIXTURE = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../tools/__fixtures__/fake-lsp-server.mjs");
10
+ function fakeSpec(serverArgs = []) {
11
+ return {
12
+ id: "fake",
13
+ extensions: [".fake"],
14
+ rootMarkers: ["fake-root.json"],
15
+ languageIdFor: () => "fake",
16
+ resolveCommand: () => ({ command: process.execPath, args: [FIXTURE, ...serverArgs] }),
17
+ };
18
+ }
19
+ /** True while a pid is a live process. */
20
+ function alive(pid) {
21
+ try {
22
+ process.kill(pid, 0);
23
+ return true;
24
+ }
25
+ catch {
26
+ return false;
27
+ }
28
+ }
29
+ async function waitForFile(file, timeoutMs = 5000) {
30
+ const deadline = Date.now() + timeoutMs;
31
+ for (;;) {
32
+ const body = await fs.readFile(file, "utf8").catch(() => undefined);
33
+ if (body)
34
+ return body;
35
+ if (Date.now() > deadline)
36
+ throw new Error(`timed out waiting for ${file}`);
37
+ await new Promise((resolve) => setTimeout(resolve, 25));
38
+ }
39
+ }
40
+ async function waitUntilDead(pid, timeoutMs = 5000) {
41
+ const deadline = Date.now() + timeoutMs;
42
+ while (Date.now() < deadline) {
43
+ if (!alive(pid))
44
+ return true;
45
+ await new Promise((resolve) => setTimeout(resolve, 25));
46
+ }
47
+ return false;
48
+ }
49
+ describe("LspClientPool", () => {
50
+ let tmpDir;
51
+ let pool;
52
+ const managers = [];
53
+ beforeEach(async () => {
54
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "lsp-pool-test-"));
55
+ await fs.writeFile(path.join(tmpDir, "fake-root.json"), "{}");
56
+ // Long TTL by default so only the tests that mean to exercise expiry do.
57
+ pool = new LspClientPool({ idleTtlMs: 60_000 });
58
+ });
59
+ afterEach(async () => {
60
+ for (const manager of managers.splice(0))
61
+ manager.shutdownAll();
62
+ pool.shutdownAll();
63
+ await removeWhenReleased(tmpDir);
64
+ });
65
+ /**
66
+ * Two managers sharing one catalog spec is exactly the production shape: the
67
+ * server catalog is module-level, so every session sees the same spec object.
68
+ */
69
+ function twoSessions(spec) {
70
+ const build = () => {
71
+ const manager = new LspManager(tmpDir, {
72
+ catalog: [spec],
73
+ pool,
74
+ warmBudgetMs: 5000,
75
+ firstBudgetMs: 5000,
76
+ });
77
+ managers.push(manager);
78
+ return manager;
79
+ };
80
+ return [build(), build()];
81
+ }
82
+ it("spawns ONE server for two sessions on the same project root", async () => {
83
+ const pidFile = path.join(tmpDir, "server.pid");
84
+ const spec = fakeSpec([`--pid-file=${pidFile}`]);
85
+ const [a, b] = twoSessions(spec);
86
+ const first = await a.diagnosticsAfterWrite(path.join(tmpDir, "a.fake"), "has ERROR here\n");
87
+ const second = await b.diagnosticsAfterWrite(path.join(tmpDir, "b.fake"), "has ERROR here\n");
88
+ // Both sessions get real diagnostics from the one shared server.
89
+ expect(first).toContain("Diagnostics in a.fake");
90
+ expect(second).toContain("Diagnostics in b.fake");
91
+ expect(pool.size).toBe(1);
92
+ expect(pool.refCount(spec, tmpDir)).toBe(2);
93
+ });
94
+ it("keeps the server alive when one session disposes, and kills it when the last does", async () => {
95
+ const pidFile = path.join(tmpDir, "server.pid");
96
+ const spec = fakeSpec([`--pid-file=${pidFile}`]);
97
+ const [a, b] = twoSessions(spec);
98
+ await a.diagnosticsAfterWrite(path.join(tmpDir, "a.fake"), "ok\n");
99
+ await b.diagnosticsAfterWrite(path.join(tmpDir, "b.fake"), "ok\n");
100
+ const pid = Number(await waitForFile(pidFile));
101
+ expect(alive(pid)).toBe(true);
102
+ a.shutdownAll();
103
+ expect(pool.refCount(spec, tmpDir)).toBe(1);
104
+ // The surviving session's server must still be running and usable.
105
+ expect(alive(pid)).toBe(true);
106
+ const afterFirstDispose = await b.diagnosticsAfterWrite(path.join(tmpDir, "c.fake"), "has ERROR here\n");
107
+ expect(afterFirstDispose).toContain("Diagnostics in c.fake");
108
+ b.shutdownAll();
109
+ expect(pool.size).toBe(0);
110
+ expect(await waitUntilDead(pid)).toBe(true);
111
+ }, 20_000);
112
+ it("gives different project roots their own servers", async () => {
113
+ const otherRoot = path.join(tmpDir, "nested");
114
+ await fs.mkdir(otherRoot, { recursive: true });
115
+ await fs.writeFile(path.join(otherRoot, "fake-root.json"), "{}");
116
+ const spec = fakeSpec();
117
+ const [a] = twoSessions(spec);
118
+ await a.diagnosticsAfterWrite(path.join(tmpDir, "a.fake"), "ok\n");
119
+ await a.diagnosticsAfterWrite(path.join(otherRoot, "b.fake"), "ok\n");
120
+ expect(pool.size).toBe(2);
121
+ });
122
+ /** The pinning bug: a root touched once used to stay resident forever. */
123
+ it("reclaims a server that has gone idle even while a session still holds it", async () => {
124
+ const pidFile = path.join(tmpDir, "server.pid");
125
+ // Expiry is driven by passing a future `now` to sweepNow rather than by
126
+ // sleeping past a short TTL: a background sweep racing the assertions made
127
+ // this flaky under parallel test load.
128
+ const idleTtlMs = 60_000;
129
+ const idlePool = new LspClientPool({ idleTtlMs, sweepIntervalMs: 10_000 });
130
+ const spec = fakeSpec([`--pid-file=${pidFile}`]);
131
+ const manager = new LspManager(tmpDir, { catalog: [spec], pool: idlePool });
132
+ managers.push(manager);
133
+ await manager.diagnosticsAfterWrite(path.join(tmpDir, "a.fake"), "ok\n");
134
+ const pid = Number(await waitForFile(pidFile));
135
+ expect(idlePool.size).toBe(1);
136
+ idlePool.sweepNow(Date.now() + idleTtlMs + 1);
137
+ expect(idlePool.size).toBe(0);
138
+ expect(await waitUntilDead(pid)).toBe(true);
139
+ // ...and the session still works afterwards: the next edit rebuilds it.
140
+ const revived = await manager.diagnosticsAfterWrite(path.join(tmpDir, "b.fake"), "has ERROR here\n");
141
+ expect(revived).toContain("Diagnostics in b.fake");
142
+ idlePool.shutdownAll();
143
+ }, 20_000);
144
+ /**
145
+ * A cached failure must not outlive the daemon's patience. Not retrying on
146
+ * every write is deliberate, but pooling made the failure process-wide, so
147
+ * without expiry one broken spawn would disable that root for every present
148
+ * AND future session — where pre-pool a new session simply got a fresh
149
+ * manager and tried again.
150
+ */
151
+ it("lets the idle sweep clear a cached failure so a later session can retry", async () => {
152
+ let spawns = 0;
153
+ // Real elapsed time rather than a synthetic future `now`: the bug is that
154
+ // continued use refreshes a failed entry's timestamp, which only shows up
155
+ // when the writes are actually spread across the TTL.
156
+ const idleTtlMs = 600;
157
+ const failPool = new LspClientPool({ idleTtlMs, sweepIntervalMs: 10_000 });
158
+ const spec = {
159
+ ...fakeSpec(),
160
+ resolveCommand: () => {
161
+ spawns++;
162
+ return { command: process.execPath, args: [FIXTURE, "--init-error"] };
163
+ },
164
+ };
165
+ const manager = new LspManager(tmpDir, {
166
+ catalog: [spec],
167
+ pool: failPool,
168
+ firstBudgetMs: 3000,
169
+ warmBudgetMs: 3000,
170
+ });
171
+ managers.push(manager);
172
+ const file = path.join(tmpDir, "a.fake");
173
+ const start = Date.now();
174
+ expect((await manager.diagnosticsAfterWriteDetailed(file, "x\n")).kind).toBe("server_failed");
175
+ // A second write PAST the halfway mark. This is the discriminating step: if
176
+ // a failed retain refreshed `lastUsedAt`, continued writing would keep the
177
+ // entry looking fresh forever and the sweep below would spare it.
178
+ await new Promise((resolve) => setTimeout(resolve, idleTtlMs * 0.7));
179
+ expect((await manager.diagnosticsAfterWriteDetailed(file, "y\n")).kind).toBe("server_failed");
180
+ // Still cached: no respawn on the next write while the entry lives.
181
+ expect(spawns).toBe(1);
182
+ // Now past the TTL as measured from the FAILURE, not from the last write.
183
+ await new Promise((resolve) => setTimeout(resolve, idleTtlMs * 0.5));
184
+ failPool.sweepNow();
185
+ expect(Date.now() - start).toBeLessThan(idleTtlMs * 2);
186
+ expect(failPool.size).toBe(0);
187
+ await manager.diagnosticsAfterWriteDetailed(file, "z\n");
188
+ expect(spawns).toBe(2);
189
+ failPool.shutdownAll();
190
+ }, 20_000);
191
+ /**
192
+ * After reclamation the replacement server is genuinely cold. Treating it as
193
+ * warm would hand it the short budget and skip the cold-load settle guard,
194
+ * which turns tsserver's premature empty publish into a reported "clean" — a
195
+ * false all-clear, the worst failure mode for a diagnostics tool.
196
+ */
197
+ it("treats a rebuilt server as cold again rather than inheriting warm state", async () => {
198
+ const idleTtlMs = 60_000;
199
+ const idlePool = new LspClientPool({ idleTtlMs, sweepIntervalMs: 10_000 });
200
+ // The server needs longer than the WARM budget but less than the FIRST
201
+ // budget, so which budget the manager picks is directly observable: a cold
202
+ // pass returns diagnostics, a wrongly-warm one times out.
203
+ const spec = fakeSpec(["--delay-ms=700"]);
204
+ const manager = new LspManager(tmpDir, {
205
+ catalog: [spec],
206
+ pool: idlePool,
207
+ firstBudgetMs: 5000,
208
+ warmBudgetMs: 250,
209
+ settleMs: 0,
210
+ });
211
+ managers.push(manager);
212
+ const first = await manager.diagnosticsAfterWriteDetailed(path.join(tmpDir, "a.fake"), "has ERROR here\n");
213
+ expect(first.kind).toBe("diagnostics");
214
+ expect(idlePool.generationFor(spec, tmpDir)).toBe(1);
215
+ idlePool.sweepNow(Date.now() + idleTtlMs + 1);
216
+ expect(idlePool.size).toBe(0);
217
+ // The replacement is a new generation, so the warm mark is stale and this
218
+ // pass must get the first-file budget again.
219
+ const revived = await manager.diagnosticsAfterWriteDetailed(path.join(tmpDir, "b.fake"), "has ERROR here\n");
220
+ expect(idlePool.generationFor(spec, tmpDir)).toBe(2);
221
+ expect(revived.kind).toBe("diagnostics");
222
+ idlePool.shutdownAll();
223
+ }, 20_000);
224
+ it("does not reclaim a server while a diagnostics pass is still in flight", async () => {
225
+ const idlePool = new LspClientPool({ idleTtlMs: 0, sweepIntervalMs: 10_000 });
226
+ // Publishes only after 400ms, so the sweep below lands mid-pass.
227
+ const spec = fakeSpec(["--delay-ms=400"]);
228
+ const manager = new LspManager(tmpDir, {
229
+ catalog: [spec],
230
+ pool: idlePool,
231
+ firstBudgetMs: 5000,
232
+ warmBudgetMs: 5000,
233
+ });
234
+ managers.push(manager);
235
+ const pending = manager.diagnosticsAfterWrite(path.join(tmpDir, "slow.fake"), "has ERROR here\n");
236
+ // Let the client spawn and the pass register before sweeping.
237
+ await new Promise((resolve) => setTimeout(resolve, 200));
238
+ idlePool.sweepNow();
239
+ expect(idlePool.size).toBe(1);
240
+ // The in-flight pass still gets its answer rather than a dead server.
241
+ expect(await pending).toContain("Diagnostics in slow.fake");
242
+ idlePool.shutdownAll();
243
+ }, 20_000);
244
+ it("releasing a holder twice does not disturb another session's server", async () => {
245
+ const spec = fakeSpec();
246
+ const [a, b] = twoSessions(spec);
247
+ await a.diagnosticsAfterWrite(path.join(tmpDir, "a.fake"), "ok\n");
248
+ await b.diagnosticsAfterWrite(path.join(tmpDir, "b.fake"), "ok\n");
249
+ a.shutdownAll();
250
+ a.shutdownAll();
251
+ expect(pool.refCount(spec, tmpDir)).toBe(1);
252
+ expect(await b.diagnosticsAfterWrite(path.join(tmpDir, "c.fake"), "has ERROR here\n")).toContain("Diagnostics in c.fake");
253
+ }, 20_000);
254
+ /**
255
+ * Caching a start failure is the pre-existing contract (see manager.test.ts:
256
+ * "marks a server broken after spawn failure and never retries"). Pooling must
257
+ * not turn one broken toolchain into a fresh spawn on every write.
258
+ */
259
+ it("caches a start failure across BOTH sessions instead of respawning per write", async () => {
260
+ let spawns = 0;
261
+ const spec = {
262
+ ...fakeSpec(["--init-error"]),
263
+ resolveCommand: () => {
264
+ spawns++;
265
+ return { command: process.execPath, args: [FIXTURE, "--init-error"] };
266
+ },
267
+ };
268
+ const [a, b] = twoSessions(spec);
269
+ for (const manager of [a, b, a, b]) {
270
+ const outcome = await manager.diagnosticsAfterWriteDetailed(path.join(tmpDir, "a.fake"), "has ERROR here\n");
271
+ expect(outcome.kind).toBe("server_failed");
272
+ }
273
+ expect(spawns).toBe(1);
274
+ }, 20_000);
275
+ it("shuts every pooled server down on pool shutdown regardless of holders", async () => {
276
+ const pidFile = path.join(tmpDir, "server.pid");
277
+ const spec = fakeSpec([`--pid-file=${pidFile}`]);
278
+ const [a] = twoSessions(spec);
279
+ await a.diagnosticsAfterWrite(path.join(tmpDir, "a.fake"), "ok\n");
280
+ const pid = Number(await waitForFile(pidFile));
281
+ pool.shutdownAll();
282
+ expect(pool.size).toBe(0);
283
+ expect(await waitUntilDead(pid)).toBe(true);
284
+ }, 20_000);
285
+ });
286
+ //# sourceMappingURL=pool.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.test.js","sourceRoot":"","sources":["../../../src/core/lsp/pool.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/servers.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,2EAA2E;IAC3E,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,4CAA4C;IAC5C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,8EAA8E;IAC9E,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;CAC7D;AAiCD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB/E;AAqFD,eAAO,MAAM,kBAAkB,EAAE,SAAS,aAAa,EA2EtD,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,SAAS,aAAa,EAAuB,GACrD,aAAa,GAAG,IAAI,CAItB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,OAAO,EAAE,MAAM,GACd,MAAM,CAqBR"}
1
+ {"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/servers.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,2EAA2E;IAC3E,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,4CAA4C;IAC5C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,8EAA8E;IAC9E,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;CAC7D;AAiCD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB/E;AAsHD,eAAO,MAAM,kBAAkB,EAAE,SAAS,aAAa,EAqFtD,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,SAAS,aAAa,EAAuB,GACrD,aAAa,GAAG,IAAI,CAItB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,OAAO,EAAE,MAAM,GACd,MAAM,CAqBR"}
@@ -134,6 +134,38 @@ const TS_LANGUAGE_IDS = {
134
134
  ".cjs": "javascript",
135
135
  ".jsx": "javascriptreact",
136
136
  };
137
+ /**
138
+ * tsserver tuning applied to every TypeScript/JavaScript project root.
139
+ *
140
+ * Shape verified against typescript-language-server 5.3.0's `initialize`
141
+ * handler: `disableAutomaticTypingAcquisition` and `maxTsServerMemory` are
142
+ * read from the TOP level of initializationOptions, while `useSyntaxServer`
143
+ * is read from the nested `tsserver` object.
144
+ *
145
+ * Untuned, one root costs FOUR processes: the language-server bridge, the
146
+ * semantic tsserver, a second `--serverMode partialSemantic` tsserver, and
147
+ * `typingsInstaller`. Both extras exist for an interactive editor, not for us:
148
+ *
149
+ * - The syntax server keeps completions and highlighting responsive while the
150
+ * semantic server loads a project. We only ever call
151
+ * `diagnosticsAfterWrite`, so it is a whole second tsserver holding a second
152
+ * copy of the program for features we never request. `"never"` collapses the
153
+ * pair into a single server (CompositeServerType.Single).
154
+ * - Automatic typing acquisition downloads `@types` packages over the network
155
+ * for untyped JS. This catalog never installs anything at runtime (see the
156
+ * module header), so it only costs the `typingsInstaller` process.
157
+ *
158
+ * Net effect: four processes per root become two.
159
+ */
160
+ const TS_INITIALIZATION_OPTIONS = {
161
+ disableAutomaticTypingAcquisition: true,
162
+ /**
163
+ * Emitted as `--max-old-space-size`. A blast-radius guard rather than a
164
+ * saving — measured roots sit well under this — matching the VS Code default.
165
+ */
166
+ maxTsServerMemory: 3072,
167
+ tsserver: { useSyntaxServer: "never" },
168
+ };
137
169
  export const LSP_SERVER_CATALOG = [
138
170
  {
139
171
  id: "typescript",
@@ -153,12 +185,21 @@ export const LSP_SERVER_CATALOG = [
153
185
  return null;
154
186
  // Prefer the project's own typescript (correct version semantics); fall
155
187
  // back to ggcoder's bundled copy so bare projects still get diagnostics.
156
- if (projectTsserverPath(projectRoot))
157
- return command;
188
+ // Tuning applies to BOTH paths: a project with its own TypeScript is the
189
+ // common case, so skipping it there would leave the flags nearly dead.
190
+ if (projectTsserverPath(projectRoot)) {
191
+ return { ...command, initializationOptions: TS_INITIALIZATION_OPTIONS };
192
+ }
158
193
  const tsserver = bundledTsserverPath();
159
194
  if (!tsserver)
160
195
  return null;
161
- return { ...command, initializationOptions: { tsserver: { path: tsserver } } };
196
+ return {
197
+ ...command,
198
+ initializationOptions: {
199
+ ...TS_INITIALIZATION_OPTIONS,
200
+ tsserver: { ...TS_INITIALIZATION_OPTIONS.tsserver, path: tsserver },
201
+ },
202
+ };
162
203
  },
163
204
  },
164
205
  {
@@ -1 +1 @@
1
- {"version":3,"file":"servers.js","sourceRoot":"","sources":["../../../src/core/lsp/servers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"servers.js","sourceRoot":"","sources":["../../../src/core/lsp/servers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=servers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servers.test.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/servers.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,67 @@
1
+ import fs from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { afterAll, describe, expect, it } from "vitest";
5
+ import { LSP_SERVER_CATALOG } from "./servers.js";
6
+ /**
7
+ * A root that genuinely has its own `typescript` installed. pnpm does not hoist
8
+ * `typescript` to the workspace root, so the repo root would silently exercise
9
+ * the bundled fallback instead of the branch this file means to cover.
10
+ */
11
+ const OWN_TS_ROOT = path.resolve(import.meta.dirname, "../../..");
12
+ const tsSpec = LSP_SERVER_CATALOG.find((spec) => spec.id === "typescript");
13
+ const tempDirs = [];
14
+ afterAll(async () => {
15
+ await Promise.all(tempDirs.map((dir) => fs.rm(dir, { recursive: true, force: true })));
16
+ });
17
+ /** A project root with no `typescript` of its own — exercises the bundled path. */
18
+ async function bareProjectRoot() {
19
+ const dir = await fs.mkdtemp(path.join(os.tmpdir(), "gg-lsp-servers-"));
20
+ tempDirs.push(dir);
21
+ await fs.writeFile(path.join(dir, "tsconfig.json"), "{}");
22
+ return dir;
23
+ }
24
+ describe("typescript server tuning", () => {
25
+ it("is present in the catalog", () => {
26
+ expect(tsSpec).toBeDefined();
27
+ });
28
+ /**
29
+ * Both flags are what collapse four processes per root down to two, so they
30
+ * are asserted on every branch of `resolveCommand`. `useSyntaxServer` is
31
+ * nested under `tsserver`; the other two are top level — that split is the
32
+ * contract typescript-language-server 5.3.0 reads in `initialize`.
33
+ */
34
+ it("disables the syntax server and typing acquisition for a project with its own typescript", () => {
35
+ const resolved = tsSpec?.resolveCommand(OWN_TS_ROOT);
36
+ expect(resolved).not.toBeNull();
37
+ const options = resolved?.initializationOptions;
38
+ expect(options.tsserver?.useSyntaxServer).toBe("never");
39
+ expect(options.disableAutomaticTypingAcquisition).toBe(true);
40
+ expect(options.maxTsServerMemory).toBe(3072);
41
+ });
42
+ it("keeps the same tuning on the bundled-tsserver fallback path", async () => {
43
+ const resolved = tsSpec?.resolveCommand(await bareProjectRoot());
44
+ expect(resolved).not.toBeNull();
45
+ const options = resolved?.initializationOptions;
46
+ expect(options.tsserver?.useSyntaxServer).toBe("never");
47
+ expect(options.disableAutomaticTypingAcquisition).toBe(true);
48
+ expect(options.maxTsServerMemory).toBe(3072);
49
+ });
50
+ /**
51
+ * The fallback branch merges into `tsserver`, so an explicit tsserver path
52
+ * must survive alongside `useSyntaxServer` — dropping it breaks diagnostics
53
+ * for every project that has no TypeScript installed.
54
+ */
55
+ it("still pins the bundled tsserver path when the project has no typescript", async () => {
56
+ const resolved = tsSpec?.resolveCommand(await bareProjectRoot());
57
+ const options = resolved?.initializationOptions;
58
+ expect(options.tsserver?.path).toMatch(/typescript[/\\]lib[/\\]tsserver\.js$/);
59
+ });
60
+ /** The project's own TypeScript must keep winning: no path override there. */
61
+ it("does not override the tsserver path for a project with its own typescript", () => {
62
+ const resolved = tsSpec?.resolveCommand(OWN_TS_ROOT);
63
+ const options = resolved?.initializationOptions;
64
+ expect(options.tsserver?.path).toBeUndefined();
65
+ });
66
+ });
67
+ //# sourceMappingURL=servers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servers.test.js","sourceRoot":"","sources":["../../../src/core/lsp/servers.test.ts"],"names":[],"mappings":"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"}
@@ -217,21 +217,9 @@ function readTrace(traceLog, traceOpen) {
217
217
  const tail = lines.length > 60 ? lines.slice(-20) : [];
218
218
  return [...head, ...(tail.length ? [` … ${lines.length - 60} more …`] : []), ...tail].join("\n");
219
219
  }
220
- /**
221
- * The pooled client's retained stderr, for the log line above. Reaches into the
222
- * private pool deliberately: this is a diagnostic probe, and widening the public
223
- * API just to print stderr in one test isn't worth the surface area.
224
- */
220
+ /** The pooled client's retained stderr, for the log line above. */
225
221
  async function serverStderr(manager) {
226
- // The pool stores PROMISES of resolutions, so these must be awaited — reading
227
- // `.client` off the promise itself silently yields nothing.
228
- const clients = manager.clients;
229
- for (const [, pending] of clients) {
230
- const resolution = (await pending);
231
- if (resolution?.client)
232
- return resolution.client.stderrTail();
233
- }
234
- return "";
222
+ return manager.serverStderrTail();
235
223
  }
236
224
  /** Nearest `node_modules/<name>` walking up from this test file. */
237
225
  function findUpNodeModulesDir(name) {
@@ -1 +1 @@
1
- {"version":3,"file":"windows.test.js","sourceRoot":"","sources":["../../../src/core/lsp/windows.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"windows.test.js","sourceRoot":"","sources":["../../../src/core/lsp/windows.test.ts"],"names":[],"mappings":"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"}