memorydetective 1.0.1 → 1.2.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/CHANGELOG.md +48 -1
  2. package/LICENSE +201 -21
  3. package/NOTICE +19 -0
  4. package/README.md +22 -23
  5. package/dist/cli.js +49 -5
  6. package/dist/cli.js.map +1 -1
  7. package/dist/index.js +52 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/parsers/shortenClassName.d.ts +45 -0
  10. package/dist/parsers/shortenClassName.js +155 -0
  11. package/dist/parsers/shortenClassName.js.map +1 -0
  12. package/dist/runtime/sourcekit/client.d.ts +37 -0
  13. package/dist/runtime/sourcekit/client.js +132 -0
  14. package/dist/runtime/sourcekit/client.js.map +1 -0
  15. package/dist/runtime/sourcekit/pool.d.ts +25 -0
  16. package/dist/runtime/sourcekit/pool.js +101 -0
  17. package/dist/runtime/sourcekit/pool.js.map +1 -0
  18. package/dist/runtime/sourcekit/protocol.d.ts +37 -0
  19. package/dist/runtime/sourcekit/protocol.js +161 -0
  20. package/dist/runtime/sourcekit/protocol.js.map +1 -0
  21. package/dist/tools/analyzeMemgraph.d.ts +11 -2
  22. package/dist/tools/analyzeMemgraph.js +37 -9
  23. package/dist/tools/analyzeMemgraph.js.map +1 -1
  24. package/dist/tools/findCycles.d.ts +6 -2
  25. package/dist/tools/findCycles.js +11 -6
  26. package/dist/tools/findCycles.js.map +1 -1
  27. package/dist/tools/reachableFromCycle.d.ts +61 -0
  28. package/dist/tools/reachableFromCycle.js +116 -0
  29. package/dist/tools/reachableFromCycle.js.map +1 -0
  30. package/dist/tools/renderCycleGraph.d.ts +1 -1
  31. package/dist/tools/swift/_helpers.d.ts +29 -0
  32. package/dist/tools/swift/_helpers.js +64 -0
  33. package/dist/tools/swift/_helpers.js.map +1 -0
  34. package/dist/tools/swift/findSymbolReferences.d.ts +30 -0
  35. package/dist/tools/swift/findSymbolReferences.js +56 -0
  36. package/dist/tools/swift/findSymbolReferences.js.map +1 -0
  37. package/dist/tools/swift/getHoverInfo.d.ts +27 -0
  38. package/dist/tools/swift/getHoverInfo.js +40 -0
  39. package/dist/tools/swift/getHoverInfo.js.map +1 -0
  40. package/dist/tools/swift/getSymbolDefinition.d.ts +46 -0
  41. package/dist/tools/swift/getSymbolDefinition.js +68 -0
  42. package/dist/tools/swift/getSymbolDefinition.js.map +1 -0
  43. package/dist/tools/swift/getSymbolsOverview.d.ts +22 -0
  44. package/dist/tools/swift/getSymbolsOverview.js +33 -0
  45. package/dist/tools/swift/getSymbolsOverview.js.map +1 -0
  46. package/dist/tools/swift/index.d.ts +14 -0
  47. package/dist/tools/swift/index.js +15 -0
  48. package/dist/tools/swift/index.js.map +1 -0
  49. package/dist/tools/swift/searchPattern.d.ts +38 -0
  50. package/dist/tools/swift/searchPattern.js +71 -0
  51. package/dist/tools/swift/searchPattern.js.map +1 -0
  52. package/package.json +5 -2
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Shorten verbose Swift / SwiftUI class names so MCP tool responses fit in
3
+ * an LLM context budget.
4
+ *
5
+ * Real SwiftUI demangled types nest 8+ generic levels deep and run 1000+ chars.
6
+ * Example input (one node, one chain):
7
+ *
8
+ * SwiftUI.ModifiedContent<SwiftUI.ModifiedContent<SwiftUI.ModifiedContent<
9
+ * SwiftUI._ConditionalContent<SwiftUI.ModifiedContent<SwiftUI.ModifiedContent<
10
+ * SwiftUI.AsyncImage<SwiftUI._ConditionalContent<...>>>, ...>>, ...>>
11
+ *
12
+ * Three layers of shortening, in order:
13
+ * 1. Drop standard module prefixes (Swift., SwiftUI., Foundation., Combine.)
14
+ * 2. Collapse nested ModifiedContent chains into "BaseType +N modifiers"
15
+ * 3. Truncate any remaining generic depth past `maxDepth` with a hash
16
+ * placeholder, e.g. `…<#1a2b3c>` (so equal generics still hash equal).
17
+ *
18
+ * Output for the example above might be:
19
+ * `ModifiedContent<…<#a3f1>> +12 modifiers`
20
+ *
21
+ * The full original is preserved on the caller side; this function never
22
+ * mutates the underlying CycleNode — it only returns a shortened display string.
23
+ */
24
+ interface ShortenOptions {
25
+ /** Hard cap on the final string length (default 200). */
26
+ maxLength?: number;
27
+ /** Truncate generic angle-bracket depth past this (default 3). */
28
+ maxDepth?: number;
29
+ /** Drop module prefixes like `Swift.`, `SwiftUI.` (default true). */
30
+ dropModules?: boolean;
31
+ /** Collapse nested `ModifiedContent<…>` chains (default true). */
32
+ collapseModifiers?: boolean;
33
+ }
34
+ /** Public API: produce a shortened display string for a class name. */
35
+ export declare function shortenClassName(className: string, opts?: ShortenOptions): string;
36
+ /**
37
+ * Verbosity levels accepted by tools that surface class names.
38
+ *
39
+ * - `compact`: aggressive shortening (default for high-signal/low-token output).
40
+ * - `normal`: drop modules, collapse modifiers, but keep depth.
41
+ * - `full`: return the original Swift demangled name verbatim.
42
+ */
43
+ export type Verbosity = "compact" | "normal" | "full";
44
+ export declare function shortenForVerbosity(className: string, verbosity: Verbosity): string;
45
+ export {};
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Shorten verbose Swift / SwiftUI class names so MCP tool responses fit in
3
+ * an LLM context budget.
4
+ *
5
+ * Real SwiftUI demangled types nest 8+ generic levels deep and run 1000+ chars.
6
+ * Example input (one node, one chain):
7
+ *
8
+ * SwiftUI.ModifiedContent<SwiftUI.ModifiedContent<SwiftUI.ModifiedContent<
9
+ * SwiftUI._ConditionalContent<SwiftUI.ModifiedContent<SwiftUI.ModifiedContent<
10
+ * SwiftUI.AsyncImage<SwiftUI._ConditionalContent<...>>>, ...>>, ...>>
11
+ *
12
+ * Three layers of shortening, in order:
13
+ * 1. Drop standard module prefixes (Swift., SwiftUI., Foundation., Combine.)
14
+ * 2. Collapse nested ModifiedContent chains into "BaseType +N modifiers"
15
+ * 3. Truncate any remaining generic depth past `maxDepth` with a hash
16
+ * placeholder, e.g. `…<#1a2b3c>` (so equal generics still hash equal).
17
+ *
18
+ * Output for the example above might be:
19
+ * `ModifiedContent<…<#a3f1>> +12 modifiers`
20
+ *
21
+ * The full original is preserved on the caller side; this function never
22
+ * mutates the underlying CycleNode — it only returns a shortened display string.
23
+ */
24
+ const MODULE_PREFIXES = [
25
+ "Swift.",
26
+ "SwiftUI.",
27
+ "Foundation.",
28
+ "Combine.",
29
+ "_Concurrency.",
30
+ ];
31
+ const MODIFIED_CONTENT_RE = /SwiftUI\.ModifiedContent<|ModifiedContent</g;
32
+ /**
33
+ * Cheap deterministic hash of a string for hash-truncation placeholders.
34
+ * Identical inputs produce identical short codes — useful for diffing two
35
+ * memgraph dumps where a class name appears in both.
36
+ */
37
+ function shortHash(s) {
38
+ let h = 5381;
39
+ for (let i = 0; i < s.length; i++) {
40
+ h = ((h << 5) + h + s.charCodeAt(i)) | 0;
41
+ }
42
+ return (h >>> 0).toString(16).slice(0, 6);
43
+ }
44
+ function dropModules(s) {
45
+ let out = s;
46
+ for (const prefix of MODULE_PREFIXES) {
47
+ out = out.split(prefix).join("");
48
+ }
49
+ return out;
50
+ }
51
+ /**
52
+ * Count nested ModifiedContent occurrences and produce a `+N modifiers` summary.
53
+ * Heuristic but reliable for real SwiftUI dumps.
54
+ */
55
+ function collapseModifiedContent(s) {
56
+ const matches = s.match(MODIFIED_CONTENT_RE);
57
+ const count = matches ? matches.length : 0;
58
+ if (count === 0)
59
+ return s;
60
+ // Find the innermost non-ModifiedContent type. We walk past every
61
+ // `ModifiedContent<` pair, ignoring its arguments.
62
+ let i = 0;
63
+ while (i < s.length) {
64
+ const remainder = s.slice(i);
65
+ const m = remainder.match(/^(SwiftUI\.)?ModifiedContent</);
66
+ if (!m)
67
+ break;
68
+ i += m[0].length;
69
+ }
70
+ // From `i`, take the first nested type up to its first `,` or `>`.
71
+ const tail = s.slice(i);
72
+ const inner = tail.match(/^([\w._]+)(?:<[^,>]*>)?/);
73
+ const baseType = inner ? inner[1] : "ModifiedContent";
74
+ return `${baseType} +${count} modifiers`;
75
+ }
76
+ /**
77
+ * Truncate generic depth past `maxDepth`. Replaces deeper generics with a
78
+ * hash placeholder so semantically-distinct types stay distinguishable.
79
+ */
80
+ function truncateDepth(s, maxDepth) {
81
+ let depth = 0;
82
+ let out = "";
83
+ let i = 0;
84
+ let truncatedFragment = "";
85
+ let truncating = false;
86
+ let truncationDepth = 0;
87
+ while (i < s.length) {
88
+ const ch = s[i];
89
+ if (ch === "<") {
90
+ depth += 1;
91
+ if (!truncating && depth > maxDepth) {
92
+ truncating = true;
93
+ truncationDepth = depth - 1;
94
+ out += "<";
95
+ i += 1;
96
+ continue;
97
+ }
98
+ }
99
+ else if (ch === ">") {
100
+ depth -= 1;
101
+ if (truncating && depth === truncationDepth) {
102
+ out += `…<#${shortHash(truncatedFragment)}>>`;
103
+ truncatedFragment = "";
104
+ truncating = false;
105
+ i += 1;
106
+ continue;
107
+ }
108
+ }
109
+ if (truncating) {
110
+ truncatedFragment += ch;
111
+ }
112
+ else {
113
+ out += ch;
114
+ }
115
+ i += 1;
116
+ }
117
+ return out;
118
+ }
119
+ /** Public API: produce a shortened display string for a class name. */
120
+ export function shortenClassName(className, opts = {}) {
121
+ const { maxLength = 200, maxDepth = 3, dropModules: doDrop = true, collapseModifiers = true, } = opts;
122
+ if (!className)
123
+ return "";
124
+ if (className.length <= maxLength && !className.includes("<")) {
125
+ return className;
126
+ }
127
+ let s = className;
128
+ if (doDrop)
129
+ s = dropModules(s);
130
+ if (collapseModifiers)
131
+ s = collapseModifiedContent(s);
132
+ s = truncateDepth(s, maxDepth);
133
+ // Final hard cap: middle-truncate.
134
+ if (s.length > maxLength) {
135
+ const half = Math.floor((maxLength - 1) / 2);
136
+ s = s.slice(0, half) + "…" + s.slice(s.length - half);
137
+ }
138
+ return s;
139
+ }
140
+ export function shortenForVerbosity(className, verbosity) {
141
+ switch (verbosity) {
142
+ case "full":
143
+ return className;
144
+ case "normal":
145
+ return shortenClassName(className, {
146
+ maxLength: 400,
147
+ maxDepth: 6,
148
+ collapseModifiers: false,
149
+ });
150
+ case "compact":
151
+ default:
152
+ return shortenClassName(className, { maxLength: 200, maxDepth: 3 });
153
+ }
154
+ }
155
+ //# sourceMappingURL=shortenClassName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortenClassName.js","sourceRoot":"","sources":["../../src/parsers/shortenClassName.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Persistent `sourcekit-lsp` subprocess client.
3
+ *
4
+ * One client per project root. Talks LSP over JSON-RPC stdio using
5
+ * `vscode-jsonrpc` for framing. Lifecycle:
6
+ *
7
+ * spawn -> initialize -> initialized -> [lots of requests] -> shutdown -> exit
8
+ *
9
+ * Used by the Swift source-bridging tools (`getSymbolDefinition`,
10
+ * `findSymbolReferences`, etc.). The pool (`./pool.ts`) keeps one client
11
+ * alive per project root and shuts it down after an idle window so we
12
+ * don't hold onto resources or stall builds.
13
+ */
14
+ export interface SourceKitClientOptions {
15
+ projectRoot: string;
16
+ /** Override the binary path. Defaults to `xcrun sourcekit-lsp`. */
17
+ command?: string;
18
+ args?: string[];
19
+ /** Initialization timeout, ms. Default 30s. */
20
+ initTimeoutMs?: number;
21
+ }
22
+ export interface InitializedClient {
23
+ projectRoot: string;
24
+ /** Send an arbitrary LSP request by method name. */
25
+ sendRequest<R = unknown>(method: string, params?: unknown): Promise<R>;
26
+ /** Send a notification (no response). */
27
+ sendNotification(method: string, params?: unknown): void;
28
+ /** Track a document as open with the server. Idempotent per uri. */
29
+ didOpen(filePath: string, languageId?: string): void;
30
+ /** Stop the server gracefully. Once called, the client cannot be reused. */
31
+ dispose(): Promise<void>;
32
+ }
33
+ /**
34
+ * Spawn `sourcekit-lsp`, drive the LSP handshake, and return a client
35
+ * that exposes typed request/notification helpers.
36
+ */
37
+ export declare function createSourceKitClient(opts: SourceKitClientOptions): Promise<InitializedClient>;
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Persistent `sourcekit-lsp` subprocess client.
3
+ *
4
+ * One client per project root. Talks LSP over JSON-RPC stdio using
5
+ * `vscode-jsonrpc` for framing. Lifecycle:
6
+ *
7
+ * spawn -> initialize -> initialized -> [lots of requests] -> shutdown -> exit
8
+ *
9
+ * Used by the Swift source-bridging tools (`getSymbolDefinition`,
10
+ * `findSymbolReferences`, etc.). The pool (`./pool.ts`) keeps one client
11
+ * alive per project root and shuts it down after an idle window so we
12
+ * don't hold onto resources or stall builds.
13
+ */
14
+ import { spawn } from "node:child_process";
15
+ import { resolve as resolvePath } from "node:path";
16
+ import { pathToFileURL } from "node:url";
17
+ import { createMessageConnection, StreamMessageReader, StreamMessageWriter, } from "vscode-jsonrpc/node.js";
18
+ const DEFAULT_INIT_TIMEOUT = 30_000;
19
+ /**
20
+ * Spawn `sourcekit-lsp`, drive the LSP handshake, and return a client
21
+ * that exposes typed request/notification helpers.
22
+ */
23
+ export async function createSourceKitClient(opts) {
24
+ const command = opts.command ?? "xcrun";
25
+ const args = opts.args ?? ["sourcekit-lsp"];
26
+ const projectRoot = resolvePath(opts.projectRoot);
27
+ const child = spawn(command, args, {
28
+ cwd: projectRoot,
29
+ stdio: ["pipe", "pipe", "pipe"],
30
+ });
31
+ const connection = createMessageConnection(new StreamMessageReader(child.stdout), new StreamMessageWriter(child.stdin));
32
+ // Forward stderr to our stderr so SourceKit warnings/errors are visible.
33
+ child.stderr.on("data", (chunk) => {
34
+ process.stderr.write(`[sourcekit-lsp] ${chunk.toString("utf8")}`);
35
+ });
36
+ let exited = false;
37
+ child.on("exit", () => {
38
+ exited = true;
39
+ });
40
+ connection.listen();
41
+ const projectUri = pathToFileURL(projectRoot).href;
42
+ const initTimeoutMs = opts.initTimeoutMs ?? DEFAULT_INIT_TIMEOUT;
43
+ await withTimeout(connection.sendRequest("initialize", {
44
+ processId: process.pid,
45
+ rootUri: projectUri,
46
+ workspaceFolders: [{ uri: projectUri, name: projectRoot }],
47
+ capabilities: {
48
+ textDocument: {
49
+ definition: { linkSupport: true },
50
+ references: {},
51
+ hover: { contentFormat: ["plaintext", "markdown"] },
52
+ documentSymbol: { hierarchicalDocumentSymbolSupport: true },
53
+ },
54
+ workspace: { workspaceFolders: true },
55
+ },
56
+ initializationOptions: {
57
+ // sourcekit-lsp picks up .build/index/store automatically when present.
58
+ },
59
+ }), initTimeoutMs, "sourcekit-lsp initialize");
60
+ connection.sendNotification("initialized", {});
61
+ const openDocs = { set: new Set() };
62
+ const client = {
63
+ projectRoot,
64
+ async sendRequest(method, params) {
65
+ if (exited)
66
+ throw new Error("sourcekit-lsp client has exited");
67
+ return await connection.sendRequest(method, params);
68
+ },
69
+ sendNotification(method, params) {
70
+ if (exited)
71
+ throw new Error("sourcekit-lsp client has exited");
72
+ connection.sendNotification(method, params);
73
+ },
74
+ didOpen(filePath, languageId = "swift") {
75
+ const uri = pathToFileURL(resolvePath(filePath)).href;
76
+ if (openDocs.set.has(uri))
77
+ return;
78
+ openDocs.set.add(uri);
79
+ // We don't ship the file's text here — sourcekit-lsp reads from disk
80
+ // when version === 1. This works for read-only operations
81
+ // (definition, references, hover, documentSymbol).
82
+ connection.sendNotification("textDocument/didOpen", {
83
+ textDocument: {
84
+ uri,
85
+ languageId,
86
+ version: 1,
87
+ text: "",
88
+ },
89
+ });
90
+ },
91
+ async dispose() {
92
+ if (exited)
93
+ return;
94
+ try {
95
+ await withTimeout(connection.sendRequest("shutdown"), 5_000, "sourcekit-lsp shutdown");
96
+ connection.sendNotification("exit");
97
+ }
98
+ catch {
99
+ // best effort — kill the process if shutdown didn't complete
100
+ }
101
+ try {
102
+ connection.dispose();
103
+ }
104
+ catch { }
105
+ if (!exited) {
106
+ child.kill("SIGTERM");
107
+ // Give it a moment to die gracefully, then SIGKILL.
108
+ await new Promise((resolve) => {
109
+ const t = setTimeout(() => {
110
+ try {
111
+ child.kill("SIGKILL");
112
+ }
113
+ catch { }
114
+ resolve();
115
+ }, 2_000);
116
+ child.once("exit", () => {
117
+ clearTimeout(t);
118
+ resolve();
119
+ });
120
+ });
121
+ }
122
+ },
123
+ };
124
+ return client;
125
+ }
126
+ async function withTimeout(p, ms, label) {
127
+ return await Promise.race([
128
+ Promise.resolve(p),
129
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`${label} timed out after ${ms}ms`)), ms)),
130
+ ]);
131
+ }
132
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/runtime/sourcekit/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Pool of `sourcekit-lsp` clients, keyed by project root.
3
+ *
4
+ * Why a pool: starting `sourcekit-lsp` and waiting for it to be ready costs
5
+ * ~2 seconds. Doing that on every tool call would kill the agent loop.
6
+ * Instead we keep one client alive per project root and reuse it across
7
+ * tool invocations. After an idle window we shut it down so we're not
8
+ * blocking the user's build/test pipeline.
9
+ */
10
+ import { type InitializedClient } from "./client.js";
11
+ /** Resolve a file path to its enclosing project root by walking up to the
12
+ * nearest `Package.swift`, `*.xcodeproj`, or `*.xcworkspace`. Falls back
13
+ * to the file's directory if nothing is found. */
14
+ export declare function projectRootFor(filePath: string): string;
15
+ export interface AcquireOptions {
16
+ /** Override idle shutdown window, ms. Default 5min. */
17
+ idleMs?: number;
18
+ }
19
+ /** Acquire an LSP client for a project root. Reuses an existing one if
20
+ * warm, spawns + initializes one otherwise. */
21
+ export declare function acquireClient(projectRoot: string, opts?: AcquireOptions): Promise<InitializedClient>;
22
+ /** Manually shut down the client for a given project root. */
23
+ export declare function shutdownClient(projectRoot: string): Promise<void>;
24
+ /** Shut down all pooled clients. Useful in tests + on process exit. */
25
+ export declare function shutdownAll(): Promise<void>;
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Pool of `sourcekit-lsp` clients, keyed by project root.
3
+ *
4
+ * Why a pool: starting `sourcekit-lsp` and waiting for it to be ready costs
5
+ * ~2 seconds. Doing that on every tool call would kill the agent loop.
6
+ * Instead we keep one client alive per project root and reuse it across
7
+ * tool invocations. After an idle window we shut it down so we're not
8
+ * blocking the user's build/test pipeline.
9
+ */
10
+ import { existsSync, readdirSync, realpathSync } from "node:fs";
11
+ import { resolve as resolvePath } from "node:path";
12
+ import { createSourceKitClient, } from "./client.js";
13
+ const DEFAULT_IDLE_MS = 5 * 60_000; // 5 minutes
14
+ const pool = new Map();
15
+ /** Resolve a file path to its enclosing project root by walking up to the
16
+ * nearest `Package.swift`, `*.xcodeproj`, or `*.xcworkspace`. Falls back
17
+ * to the file's directory if nothing is found. */
18
+ export function projectRootFor(filePath) {
19
+ let dir = resolvePath(filePath);
20
+ try {
21
+ dir = realpathSync(dir);
22
+ }
23
+ catch { }
24
+ let prev = "";
25
+ while (dir !== prev) {
26
+ if (dirHas(dir, "Package.swift") ||
27
+ dirHasGlob(dir, ".xcodeproj") ||
28
+ dirHasGlob(dir, ".xcworkspace")) {
29
+ return dir;
30
+ }
31
+ prev = dir;
32
+ dir = resolvePath(dir, "..");
33
+ }
34
+ // No marker found — use the original directory.
35
+ return resolvePath(filePath, "..");
36
+ }
37
+ function dirHas(dir, name) {
38
+ try {
39
+ return existsSync(resolvePath(dir, name));
40
+ }
41
+ catch {
42
+ return false;
43
+ }
44
+ }
45
+ function dirHasGlob(dir, suffix) {
46
+ try {
47
+ return readdirSync(dir).some((entry) => entry.endsWith(suffix));
48
+ }
49
+ catch {
50
+ return false;
51
+ }
52
+ }
53
+ /** Acquire an LSP client for a project root. Reuses an existing one if
54
+ * warm, spawns + initializes one otherwise. */
55
+ export async function acquireClient(projectRoot, opts = {}) {
56
+ const key = resolvePath(projectRoot);
57
+ const idleMs = opts.idleMs ?? DEFAULT_IDLE_MS;
58
+ let entry = pool.get(key);
59
+ if (!entry) {
60
+ const client = await createSourceKitClient({ projectRoot: key });
61
+ entry = { client, lastUsed: Date.now() };
62
+ pool.set(key, entry);
63
+ }
64
+ entry.lastUsed = Date.now();
65
+ if (entry.idleTimer)
66
+ clearTimeout(entry.idleTimer);
67
+ entry.idleTimer = setTimeout(() => {
68
+ void shutdownClient(key);
69
+ }, idleMs);
70
+ return entry.client;
71
+ }
72
+ /** Manually shut down the client for a given project root. */
73
+ export async function shutdownClient(projectRoot) {
74
+ const key = resolvePath(projectRoot);
75
+ const entry = pool.get(key);
76
+ if (!entry)
77
+ return;
78
+ pool.delete(key);
79
+ if (entry.idleTimer)
80
+ clearTimeout(entry.idleTimer);
81
+ await entry.client.dispose();
82
+ }
83
+ /** Shut down all pooled clients. Useful in tests + on process exit. */
84
+ export async function shutdownAll() {
85
+ const keys = Array.from(pool.keys());
86
+ for (const key of keys) {
87
+ await shutdownClient(key);
88
+ }
89
+ }
90
+ // Best-effort cleanup on process exit.
91
+ process.once("exit", () => {
92
+ // Synchronous only — async cleanups won't run here, but the OS will
93
+ // reap the subprocess.
94
+ });
95
+ process.once("SIGINT", () => {
96
+ void shutdownAll().finally(() => process.exit(0));
97
+ });
98
+ process.once("SIGTERM", () => {
99
+ void shutdownAll().finally(() => process.exit(0));
100
+ });
101
+ //# sourceMappingURL=pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../src/runtime/sourcekit/pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Typed wrappers around the LSP methods we use.
3
+ *
4
+ * Imports types from `vscode-languageserver-protocol` and converts to/from
5
+ * the file:// URI format LSP servers expect. All paths in the public API
6
+ * are absolute filesystem paths; LSP URIs only show up internally.
7
+ */
8
+ import type { InitializedClient } from "./client.js";
9
+ export interface SourceLocation {
10
+ filePath: string;
11
+ line: number;
12
+ character: number;
13
+ /** Optional end position when the LSP server returns a range. */
14
+ endLine?: number;
15
+ endCharacter?: number;
16
+ }
17
+ export interface ResolvedSymbol {
18
+ name: string;
19
+ kind: string;
20
+ filePath: string;
21
+ startLine: number;
22
+ startCharacter: number;
23
+ endLine: number;
24
+ endCharacter: number;
25
+ /** Children symbols (methods inside a class, properties, etc.) when hierarchical. */
26
+ children?: ResolvedSymbol[];
27
+ }
28
+ /** LSP `textDocument/definition` — returns 0+ source locations. */
29
+ export declare function lspDefinition(client: InitializedClient, filePath: string, line: number, character: number): Promise<SourceLocation[]>;
30
+ /** LSP `textDocument/references` — returns all references in indexed projects. */
31
+ export declare function lspReferences(client: InitializedClient, filePath: string, line: number, character: number, includeDeclaration?: boolean): Promise<SourceLocation[]>;
32
+ /** LSP `textDocument/hover` — returns type info / docs at a position. */
33
+ export declare function lspHover(client: InitializedClient, filePath: string, line: number, character: number): Promise<{
34
+ contents: string;
35
+ } | null>;
36
+ /** LSP `textDocument/documentSymbol` — returns top-level + nested symbols. */
37
+ export declare function lspDocumentSymbol(client: InitializedClient, filePath: string): Promise<ResolvedSymbol[]>;