purecontext-mcp 1.1.8 → 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 (167) hide show
  1. package/AGENT_INSTRUCTIONS.md +393 -0
  2. package/AGENT_INSTRUCTIONS_SHORT.md +53 -0
  3. package/AST-SEARCH.md +274 -0
  4. package/CHANGELOG.md +62 -0
  5. package/CODE-INTELLIGENCE.md +369 -0
  6. package/HEALTH-DASHBOARDS.md +241 -0
  7. package/README.md +7 -0
  8. package/REFACTORING-SAFELY.md +279 -0
  9. package/UNDERSTANDING-RELATIONSHIPS.md +240 -0
  10. package/USER-GUIDE.md +14 -0
  11. package/VISUALIZING-CODE.md +199 -0
  12. package/WORKFLOW-TECH-DEBT.md +286 -0
  13. package/dist/core/db/dep-store.d.ts +75 -0
  14. package/dist/core/db/dep-store.d.ts.map +1 -1
  15. package/dist/core/db/dep-store.js +277 -0
  16. package/dist/core/db/dep-store.js.map +1 -1
  17. package/dist/core/db/schema.d.ts.map +1 -1
  18. package/dist/core/db/schema.js +12 -0
  19. package/dist/core/db/schema.js.map +1 -1
  20. package/dist/core/index-manager.js +1 -1
  21. package/dist/core/index-manager.js.map +1 -1
  22. package/dist/core/types.d.ts +5 -0
  23. package/dist/core/types.d.ts.map +1 -1
  24. package/dist/graph/diagram-renderer.d.ts +83 -0
  25. package/dist/graph/diagram-renderer.d.ts.map +1 -0
  26. package/dist/graph/diagram-renderer.js +294 -0
  27. package/dist/graph/diagram-renderer.js.map +1 -0
  28. package/dist/graph/graph-traversal.d.ts +92 -0
  29. package/dist/graph/graph-traversal.d.ts.map +1 -1
  30. package/dist/graph/graph-traversal.js +440 -2
  31. package/dist/graph/graph-traversal.js.map +1 -1
  32. package/dist/server/mcp-server.d.ts.map +1 -1
  33. package/dist/server/mcp-server.js +145 -0
  34. package/dist/server/mcp-server.js.map +1 -1
  35. package/dist/server/tools/check-delete-safe.d.ts +50 -0
  36. package/dist/server/tools/check-delete-safe.d.ts.map +1 -0
  37. package/dist/server/tools/check-delete-safe.js +308 -0
  38. package/dist/server/tools/check-delete-safe.js.map +1 -0
  39. package/dist/server/tools/check-move-safe.d.ts +44 -0
  40. package/dist/server/tools/check-move-safe.d.ts.map +1 -0
  41. package/dist/server/tools/check-move-safe.js +266 -0
  42. package/dist/server/tools/check-move-safe.js.map +1 -0
  43. package/dist/server/tools/check-rename-safe.d.ts +48 -0
  44. package/dist/server/tools/check-rename-safe.d.ts.map +1 -0
  45. package/dist/server/tools/check-rename-safe.js +218 -0
  46. package/dist/server/tools/check-rename-safe.js.map +1 -0
  47. package/dist/server/tools/diff-health-radar.d.ts +44 -0
  48. package/dist/server/tools/diff-health-radar.d.ts.map +1 -0
  49. package/dist/server/tools/diff-health-radar.js +192 -0
  50. package/dist/server/tools/diff-health-radar.js.map +1 -0
  51. package/dist/server/tools/find-cycles.d.ts +31 -0
  52. package/dist/server/tools/find-cycles.d.ts.map +1 -0
  53. package/dist/server/tools/find-cycles.js +85 -0
  54. package/dist/server/tools/find-cycles.js.map +1 -0
  55. package/dist/server/tools/find-implementations.d.ts +47 -0
  56. package/dist/server/tools/find-implementations.d.ts.map +1 -0
  57. package/dist/server/tools/find-implementations.js +167 -0
  58. package/dist/server/tools/find-implementations.js.map +1 -0
  59. package/dist/server/tools/find-untested-symbols.d.ts +52 -0
  60. package/dist/server/tools/find-untested-symbols.d.ts.map +1 -0
  61. package/dist/server/tools/find-untested-symbols.js +308 -0
  62. package/dist/server/tools/find-untested-symbols.js.map +1 -0
  63. package/dist/server/tools/get-architecture-snapshot.d.ts +43 -0
  64. package/dist/server/tools/get-architecture-snapshot.d.ts.map +1 -0
  65. package/dist/server/tools/get-architecture-snapshot.js +292 -0
  66. package/dist/server/tools/get-architecture-snapshot.js.map +1 -0
  67. package/dist/server/tools/get-call-hierarchy.d.ts +43 -0
  68. package/dist/server/tools/get-call-hierarchy.d.ts.map +1 -0
  69. package/dist/server/tools/get-call-hierarchy.js +119 -0
  70. package/dist/server/tools/get-call-hierarchy.js.map +1 -0
  71. package/dist/server/tools/get-class-hierarchy.d.ts +36 -0
  72. package/dist/server/tools/get-class-hierarchy.d.ts.map +1 -0
  73. package/dist/server/tools/get-class-hierarchy.js +125 -0
  74. package/dist/server/tools/get-class-hierarchy.js.map +1 -0
  75. package/dist/server/tools/get-complexity-hotspots.d.ts +50 -0
  76. package/dist/server/tools/get-complexity-hotspots.d.ts.map +1 -0
  77. package/dist/server/tools/get-complexity-hotspots.js +282 -0
  78. package/dist/server/tools/get-complexity-hotspots.js.map +1 -0
  79. package/dist/server/tools/get-coupling-map.d.ts +39 -0
  80. package/dist/server/tools/get-coupling-map.d.ts.map +1 -0
  81. package/dist/server/tools/get-coupling-map.js +107 -0
  82. package/dist/server/tools/get-coupling-map.js.map +1 -0
  83. package/dist/server/tools/get-debt-report.d.ts +44 -0
  84. package/dist/server/tools/get-debt-report.d.ts.map +1 -0
  85. package/dist/server/tools/get-debt-report.js +606 -0
  86. package/dist/server/tools/get-debt-report.js.map +1 -0
  87. package/dist/server/tools/get-entry-points.d.ts +79 -0
  88. package/dist/server/tools/get-entry-points.d.ts.map +1 -0
  89. package/dist/server/tools/get-entry-points.js +362 -0
  90. package/dist/server/tools/get-entry-points.js.map +1 -0
  91. package/dist/server/tools/get-public-api.d.ts +53 -0
  92. package/dist/server/tools/get-public-api.d.ts.map +1 -0
  93. package/dist/server/tools/get-public-api.js +218 -0
  94. package/dist/server/tools/get-public-api.js.map +1 -0
  95. package/dist/server/tools/get-test-coverage-map.d.ts +66 -0
  96. package/dist/server/tools/get-test-coverage-map.d.ts.map +1 -0
  97. package/dist/server/tools/get-test-coverage-map.js +588 -0
  98. package/dist/server/tools/get-test-coverage-map.js.map +1 -0
  99. package/dist/server/tools/get-todos.d.ts +51 -0
  100. package/dist/server/tools/get-todos.d.ts.map +1 -0
  101. package/dist/server/tools/get-todos.js +180 -0
  102. package/dist/server/tools/get-todos.js.map +1 -0
  103. package/dist/server/tools/get-type-graph.d.ts +73 -0
  104. package/dist/server/tools/get-type-graph.d.ts.map +1 -0
  105. package/dist/server/tools/get-type-graph.js +437 -0
  106. package/dist/server/tools/get-type-graph.js.map +1 -0
  107. package/dist/server/tools/health-radar.d.ts +50 -0
  108. package/dist/server/tools/health-radar.d.ts.map +1 -0
  109. package/dist/server/tools/health-radar.js +426 -0
  110. package/dist/server/tools/health-radar.js.map +1 -0
  111. package/dist/server/tools/plan-refactoring.d.ts +74 -0
  112. package/dist/server/tools/plan-refactoring.d.ts.map +1 -0
  113. package/dist/server/tools/plan-refactoring.js +644 -0
  114. package/dist/server/tools/plan-refactoring.js.map +1 -0
  115. package/dist/server/tools/render-call-graph.d.ts +40 -0
  116. package/dist/server/tools/render-call-graph.d.ts.map +1 -0
  117. package/dist/server/tools/render-call-graph.js +215 -0
  118. package/dist/server/tools/render-call-graph.js.map +1 -0
  119. package/dist/server/tools/render-class-hierarchy.d.ts +42 -0
  120. package/dist/server/tools/render-class-hierarchy.d.ts.map +1 -0
  121. package/dist/server/tools/render-class-hierarchy.js +265 -0
  122. package/dist/server/tools/render-class-hierarchy.js.map +1 -0
  123. package/dist/server/tools/render-dep-matrix.d.ts +38 -0
  124. package/dist/server/tools/render-dep-matrix.d.ts.map +1 -0
  125. package/dist/server/tools/render-dep-matrix.js +186 -0
  126. package/dist/server/tools/render-dep-matrix.js.map +1 -0
  127. package/dist/server/tools/render-diagram.d.ts +47 -0
  128. package/dist/server/tools/render-diagram.d.ts.map +1 -0
  129. package/dist/server/tools/render-diagram.js +266 -0
  130. package/dist/server/tools/render-diagram.js.map +1 -0
  131. package/dist/server/tools/render-import-graph.d.ts +41 -0
  132. package/dist/server/tools/render-import-graph.d.ts.map +1 -0
  133. package/dist/server/tools/render-import-graph.js +158 -0
  134. package/dist/server/tools/render-import-graph.js.map +1 -0
  135. package/dist/server/tools/search-ast.d.ts +55 -0
  136. package/dist/server/tools/search-ast.d.ts.map +1 -0
  137. package/dist/server/tools/search-ast.js +279 -0
  138. package/dist/server/tools/search-ast.js.map +1 -0
  139. package/dist/server/tools/search-by-complexity.d.ts +92 -0
  140. package/dist/server/tools/search-by-complexity.d.ts.map +1 -0
  141. package/dist/server/tools/search-by-complexity.js +268 -0
  142. package/dist/server/tools/search-by-complexity.js.map +1 -0
  143. package/dist/server/tools/search-by-decorator.d.ts +48 -0
  144. package/dist/server/tools/search-by-decorator.d.ts.map +1 -0
  145. package/dist/server/tools/search-by-decorator.js +518 -0
  146. package/dist/server/tools/search-by-decorator.js.map +1 -0
  147. package/dist/server/tools/search-by-signature.d.ts +56 -0
  148. package/dist/server/tools/search-by-signature.d.ts.map +1 -0
  149. package/dist/server/tools/search-by-signature.js +200 -0
  150. package/dist/server/tools/search-by-signature.js.map +1 -0
  151. package/dist/ui/assets/BlastRadius-QdgESOL8.js +1 -0
  152. package/dist/ui/assets/{DependencyGraph-B60SMPbX.js → DependencyGraph-BSMhzwWV.js} +1 -1
  153. package/dist/ui/assets/{NotFound-Bsg8Wppk.js → NotFound-CipFP_s1.js} +1 -1
  154. package/dist/ui/assets/{RepoDetail-Cie0D4_s.js → RepoDetail-Dfp5z5Kq.js} +1 -1
  155. package/dist/ui/assets/{RepoList-CldNt89M.js → RepoList-BKtST3hB.js} +1 -1
  156. package/dist/ui/assets/{Search-CgvpHMOi.js → Search-DzhGDViy.js} +1 -1
  157. package/dist/ui/assets/{SymbolView-B9h0LZTz.js → SymbolView-ryVEwAHG.js} +1 -1
  158. package/dist/ui/assets/{index-DADf5y_L.css → index-Ny8gn9F0.css} +1 -1
  159. package/dist/ui/assets/{index-eK0wMkUR.js → index-nX2chMqi.js} +2 -2
  160. package/dist/ui/assets/{useSearch-KAl3Qyi2.js → useSearch-BnBCRKui.js} +1 -1
  161. package/dist/ui/index.html +2 -2
  162. package/dist/version.d.ts +1 -1
  163. package/dist/version.js +1 -1
  164. package/docs/dev/jcodemunch-gap-analysis.md +198 -0
  165. package/package.json +9 -1
  166. package/user-manual.md +2466 -0
  167. package/dist/ui/assets/BlastRadius-RP7vJEyQ.js +0 -1
@@ -1,5 +1,6 @@
1
- import { getSymbolsByFile, getSymbolById } from '../core/db/symbol-store.js';
2
- import { getForwardDeps, getReverseDeps, getImportersOf, findDeadExports } from '../core/db/dep-store.js';
1
+ import { getSymbolsByFile, getSymbolById, getSymbolsByRepo } from '../core/db/symbol-store.js';
2
+ import { getForwardDeps, getReverseDeps, getImportersOf, findDeadExports, getAllDepEdges, findClassesExtending, findClassOrInterfaceByName } from '../core/db/dep-store.js';
3
+ import { getFileContent } from '../core/db/file-store.js';
3
4
  // ─── Public API ───────────────────────────────────────────────────────────────
4
5
  /**
5
6
  * Reverse-walk the dependency graph from a symbol outward.
@@ -87,6 +88,234 @@ function estimateTokens(symbols) {
87
88
  function empty() {
88
89
  return { symbols: [], files: [], tokenEstimate: 0 };
89
90
  }
91
+ /**
92
+ * Detect all import cycles in the repo's dependency graph.
93
+ *
94
+ * Algorithm: DFS with path stack. Deduplication trick: only explore paths
95
+ * where all intermediate nodes are lexicographically greater than the starting
96
+ * node. This ensures each cycle is found exactly once, rooted at its
97
+ * lexicographically smallest file path, without needing a post-dedup step.
98
+ *
99
+ * When `filePath` is provided, only cycles involving that file are returned.
100
+ * The `maxCycles` cap is applied after any filePath filter.
101
+ */
102
+ export function findImportCycles(repoId, db, filePath, maxCycles = 20, minLength = 2) {
103
+ // Build adjacency list from all dep_edges (all stored edges are internal imports).
104
+ const allEdges = getAllDepEdges(db, repoId);
105
+ const adj = new Map();
106
+ for (const edge of allEdges) {
107
+ if (edge.sourceFile === edge.targetFile)
108
+ continue; // skip self-loops
109
+ let targets = adj.get(edge.sourceFile);
110
+ if (!targets) {
111
+ targets = [];
112
+ adj.set(edge.sourceFile, targets);
113
+ }
114
+ if (!targets.includes(edge.targetFile)) {
115
+ targets.push(edge.targetFile);
116
+ }
117
+ // Ensure every target also has an entry (even if it has no outgoing edges).
118
+ if (!adj.has(edge.targetFile)) {
119
+ adj.set(edge.targetFile, []);
120
+ }
121
+ }
122
+ // Sort each adjacency list for deterministic output.
123
+ for (const targets of adj.values()) {
124
+ targets.sort();
125
+ }
126
+ // When a filePath filter is in play we need to find enough total cycles before
127
+ // filtering. Use a generous internal cap (at least 500) to avoid missing matches
128
+ // on modest repos. Without a filter we can stop as soon as we have maxCycles + 1
129
+ // (the +1 lets us detect truncation).
130
+ const internalCap = filePath !== undefined ? Math.max(maxCycles * 20, 500) : maxCycles + 1;
131
+ const found = [];
132
+ const nodes = [...adj.keys()].sort();
133
+ function dfs(start, path, pathSet) {
134
+ if (found.length >= internalCap)
135
+ return;
136
+ const current = path[path.length - 1];
137
+ for (const next of adj.get(current) ?? []) {
138
+ if (found.length >= internalCap)
139
+ return;
140
+ if (next === start && path.length >= minLength) {
141
+ // Cycle closes back to start — record it.
142
+ found.push({
143
+ files: [...path],
144
+ length: path.length,
145
+ severity: path.length <= 3 ? 'error' : 'warning',
146
+ });
147
+ }
148
+ else if (!pathSet.has(next) && next > start) {
149
+ // Only extend through nodes that come after start lexicographically.
150
+ // This guarantees each cycle is discovered exactly once (rooted at the
151
+ // lexicographically smallest node in the cycle).
152
+ pathSet.add(next);
153
+ path.push(next);
154
+ dfs(start, path, pathSet);
155
+ path.pop();
156
+ pathSet.delete(next);
157
+ }
158
+ }
159
+ }
160
+ for (const node of nodes) {
161
+ if (found.length >= internalCap)
162
+ break;
163
+ dfs(node, [node], new Set([node]));
164
+ }
165
+ // Apply filePath filter.
166
+ const filtered = filePath !== undefined ? found.filter((c) => c.files.includes(filePath)) : found;
167
+ // Apply maxCycles cap and compute truncated flag.
168
+ const truncated = filtered.length > maxCycles;
169
+ const cycles = filtered.slice(0, maxCycles);
170
+ return { cycles, totalFound: cycles.length, truncated };
171
+ }
172
+ /** Extract the first parent name from `extends ClassName` in a signature. */
173
+ function parseExtendsName(signature) {
174
+ const m = signature.match(/\bextends\s+([A-Za-z_$][\w$]*)/);
175
+ return m ? (m[1] ?? null) : null;
176
+ }
177
+ /** Extract interface names from `implements A, B<T>, C` in a signature. */
178
+ function parseImplementsNames(signature) {
179
+ const m = signature.match(/\bimplements\s+([\w$<>, ]+?)(?:\s*\{|$)/);
180
+ if (!m?.[1])
181
+ return [];
182
+ return m[1]
183
+ .split(',')
184
+ .map((s) => s.trim().replace(/<[^>]*>/g, '').trim())
185
+ .filter(Boolean);
186
+ }
187
+ /** Escape special regex characters in a symbol name for use in RegExp. */
188
+ function escapeRegex(s) {
189
+ return s.replace(/[$()*+.?[\\\]^{|}]/g, '\\$&');
190
+ }
191
+ function bytesToLine(content, offset) {
192
+ const slice = content.slice(0, Math.min(offset, content.length));
193
+ let line = 1;
194
+ for (let i = 0; i < slice.length; i++) {
195
+ if (slice[i] === 0x0a)
196
+ line++;
197
+ }
198
+ return line;
199
+ }
200
+ function makeHierarchyNode(sym, externalName, depth, repoId, db, counter) {
201
+ counter.count++;
202
+ if (!sym) {
203
+ return {
204
+ symbolId: null,
205
+ name: externalName ?? 'unknown',
206
+ filePath: null,
207
+ startLine: 0,
208
+ signature: '',
209
+ isAbstract: false,
210
+ isInterface: false,
211
+ implementedInterfaces: [],
212
+ depth,
213
+ children: [],
214
+ };
215
+ }
216
+ let startLine = 1;
217
+ const content = getFileContent(db, repoId, sym.filePath);
218
+ if (content) {
219
+ startLine = bytesToLine(content, sym.startByte);
220
+ }
221
+ return {
222
+ symbolId: sym.id,
223
+ name: sym.name,
224
+ filePath: sym.filePath,
225
+ startLine,
226
+ signature: sym.signature,
227
+ isAbstract: sym.signature.includes('abstract '),
228
+ isInterface: sym.kind === 'interface',
229
+ implementedInterfaces: parseImplementsNames(sym.signature),
230
+ depth,
231
+ children: [],
232
+ };
233
+ }
234
+ /**
235
+ * Build the full inheritance chain for a class or interface.
236
+ *
237
+ * - Ancestors: follows `extends` clauses upward; external base classes become
238
+ * leaf nodes with `symbolId: null`.
239
+ * - Descendants: finds all classes/interfaces whose signature contains
240
+ * `extends TargetName` (word-boundary-checked) using a LIKE query.
241
+ * - When `includeInterfaces` is true (default), the `implements` clause is also
242
+ * traversed for ancestor nodes, and interface subclasses are included as
243
+ * descendants.
244
+ */
245
+ export function buildClassHierarchy(symbolId, repoId, db, direction, maxDepth, includeInterfaces) {
246
+ const rootSymbol = getSymbolById(db, repoId, symbolId);
247
+ if (!rootSymbol)
248
+ return null;
249
+ const counter = { count: 0 };
250
+ const root = makeHierarchyNode(rootSymbol, null, 0, repoId, db, counter);
251
+ if (direction === 'ancestors' || direction === 'both') {
252
+ const ancestorVisited = new Set([rootSymbol.id]);
253
+ addAncestors(root, rootSymbol, 0, ancestorVisited);
254
+ }
255
+ if (direction === 'descendants' || direction === 'both') {
256
+ const descVisited = new Set([rootSymbol.id]);
257
+ addDescendants(root, rootSymbol.name, 0, descVisited);
258
+ }
259
+ return { root, totalNodes: counter.count };
260
+ // ── inner helpers (closures capture db, repoId, maxDepth, includeInterfaces, counter) ──
261
+ function addAncestors(node, sym, currentDepth, visited) {
262
+ if (Math.abs(currentDepth) >= maxDepth)
263
+ return;
264
+ const parentName = parseExtendsName(sym.signature);
265
+ if (parentName) {
266
+ const parentSym = findClassOrInterfaceByName(db, repoId, parentName);
267
+ const parentDepth = currentDepth - 1;
268
+ if (parentSym) {
269
+ if (!visited.has(parentSym.id)) {
270
+ visited.add(parentSym.id);
271
+ const parentNode = makeHierarchyNode(parentSym, null, parentDepth, repoId, db, counter);
272
+ node.children.push(parentNode);
273
+ addAncestors(parentNode, parentSym, parentDepth, visited);
274
+ }
275
+ }
276
+ else {
277
+ // External base class — leaf node
278
+ node.children.push(makeHierarchyNode(null, parentName, parentDepth, repoId, db, counter));
279
+ }
280
+ }
281
+ if (includeInterfaces) {
282
+ for (const ifaceName of parseImplementsNames(sym.signature)) {
283
+ const ifaceSym = findClassOrInterfaceByName(db, repoId, ifaceName);
284
+ const ifaceDepth = currentDepth - 1;
285
+ if (ifaceSym) {
286
+ if (!visited.has(ifaceSym.id)) {
287
+ visited.add(ifaceSym.id);
288
+ const ifaceNode = makeHierarchyNode(ifaceSym, null, ifaceDepth, repoId, db, counter);
289
+ node.children.push(ifaceNode);
290
+ // Recurse into interface ancestors too
291
+ addAncestors(ifaceNode, ifaceSym, ifaceDepth, visited);
292
+ }
293
+ }
294
+ else {
295
+ node.children.push(makeHierarchyNode(null, ifaceName, ifaceDepth, repoId, db, counter));
296
+ }
297
+ }
298
+ }
299
+ }
300
+ function addDescendants(node, name, currentDepth, visited) {
301
+ if (currentDepth >= maxDepth)
302
+ return;
303
+ // Word-boundary regex to avoid false positives (e.g. Animal vs AnimalBase)
304
+ const nameRe = new RegExp(`\\bextends\\s+${escapeRegex(name)}\\b`);
305
+ const candidates = findClassesExtending(db, repoId, name);
306
+ const subclasses = candidates.filter((c) => nameRe.test(c.signature));
307
+ for (const sub of subclasses) {
308
+ if (visited.has(sub.id))
309
+ continue;
310
+ if (!includeInterfaces && sub.kind === 'interface')
311
+ continue;
312
+ visited.add(sub.id);
313
+ const subNode = makeHierarchyNode(sub, null, currentDepth + 1, repoId, db, counter);
314
+ node.children.push(subNode);
315
+ addDescendants(subNode, sub.name, currentDepth + 1, visited);
316
+ }
317
+ }
318
+ }
90
319
  /**
91
320
  * Reverse-walk the dependency graph from a symbol, returning each affected file
92
321
  * annotated with its hop distance from the source. Used by the web UI radial
@@ -141,4 +370,213 @@ export function getBlastRadiusWithDepths(symbolId, repoId, db, maxDepth = 3) {
141
370
  entries: entries.sort((a, b) => a.depth - b.depth || a.filePath.localeCompare(b.filePath)),
142
371
  };
143
372
  }
373
+ // Symbol kinds that can contain function calls (skip type-only declarations).
374
+ const CALLABLE_KINDS = new Set([
375
+ 'function', 'method', 'hook', 'component', 'composable',
376
+ 'middleware', 'const', 'route', 'decorator',
377
+ ]);
378
+ // Identifiers that look like calls but are language keywords / control flow.
379
+ const CALL_SKIP = new Set([
380
+ 'if', 'else', 'for', 'while', 'do', 'switch', 'case', 'catch',
381
+ 'finally', 'try', 'new', 'return', 'throw', 'typeof', 'instanceof',
382
+ 'function', 'class', 'import', 'export', 'const', 'let', 'var',
383
+ 'async', 'await', 'yield', 'delete', 'void', 'in', 'of', 'super',
384
+ 'this', 'true', 'false', 'null', 'undefined',
385
+ ]);
386
+ /** Escape special regex characters for safe embedding in RegExp. */
387
+ function escapeRe(s) {
388
+ return s.replace(/[$()*+.?[\\\]^{|}]/g, '\\$&');
389
+ }
390
+ /**
391
+ * Extract call-target names from a block of source text.
392
+ * Returns a Map<calleeName, occurrenceCount>.
393
+ */
394
+ function extractCallNames(text) {
395
+ const counts = new Map();
396
+ // Match any `identifier(` pattern — this over-approximates intentionally;
397
+ // callers filter out keywords and non-symbol names afterwards.
398
+ const re = /\b([A-Za-z_$][\w$]*)\s*\(/g;
399
+ let m;
400
+ while ((m = re.exec(text)) !== null) {
401
+ const name = m[1];
402
+ if (!CALL_SKIP.has(name)) {
403
+ counts.set(name, (counts.get(name) ?? 0) + 1);
404
+ }
405
+ }
406
+ return counts;
407
+ }
408
+ /**
409
+ * Build the full call hierarchy for a function or method symbol.
410
+ *
411
+ * Strategy (query-time text scan):
412
+ * - Callees: scan the root symbol's source text for `name(` patterns, match
413
+ * them against all indexed symbols in the repo.
414
+ * - Callers: scan every callable symbol's source for references to the root
415
+ * symbol's name, file-content cache prevents repeated disk reads.
416
+ *
417
+ * The implementation does NOT require call edges in `dep_edges`; it derives
418
+ * relationships at query time, making it safe to call on any indexed repo
419
+ * without a re-index.
420
+ */
421
+ export function buildCallHierarchy(symbolId, repoId, db, direction, maxDepth, maxNodes) {
422
+ const rootSymbol = getSymbolById(db, repoId, symbolId);
423
+ if (!rootSymbol)
424
+ return null;
425
+ // Load all symbols in the repo once (no artificial limit — we need the full set
426
+ // to resolve callee/caller names across the codebase).
427
+ const allSymbols = getSymbolsByRepo(db, repoId, 1_000_000);
428
+ // Build name → SymbolRecord[] lookup. Methods are indexed as "Class.method";
429
+ // we also key them by the short name "method" so simple `method(` calls match.
430
+ const byName = new Map();
431
+ for (const sym of allSymbols) {
432
+ const names = [sym.name];
433
+ if (sym.name.includes('.')) {
434
+ names.push(sym.name.split('.').pop());
435
+ }
436
+ for (const n of names) {
437
+ const list = byName.get(n) ?? [];
438
+ list.push(sym);
439
+ byName.set(n, list);
440
+ }
441
+ }
442
+ // File-content cache (lazy, per filePath).
443
+ const fileCache = new Map();
444
+ function getContent(filePath) {
445
+ if (!fileCache.has(filePath)) {
446
+ fileCache.set(filePath, getFileContent(db, repoId, filePath));
447
+ }
448
+ return fileCache.get(filePath) ?? null;
449
+ }
450
+ /** Extract the source text belonging to a symbol's byte range. */
451
+ function symbolText(sym) {
452
+ const buf = getContent(sym.filePath);
453
+ if (!buf)
454
+ return '';
455
+ return buf.slice(sym.startByte, Math.min(sym.endByte, buf.length)).toString('utf8');
456
+ }
457
+ /**
458
+ * Find all distinct indexed symbols that `sym` calls.
459
+ * Returns pairs of (callee SymbolRecord, call count).
460
+ */
461
+ function calleesOf(sym) {
462
+ const text = symbolText(sym);
463
+ const callMap = extractCallNames(text);
464
+ const result = new Map();
465
+ for (const [calleeName, count] of callMap) {
466
+ const candidates = byName.get(calleeName) ?? [];
467
+ for (const cand of candidates) {
468
+ // Do NOT skip self — self-calls are valid; cycle detection in expandCallees
469
+ // handles them by marking the node cyclic: true with no children.
470
+ if (!result.has(cand.id)) {
471
+ result.set(cand.id, { sym: cand, count });
472
+ }
473
+ }
474
+ }
475
+ return Array.from(result.values());
476
+ }
477
+ /**
478
+ * Find all distinct indexed symbols that call `sym`.
479
+ * Returns pairs of (caller SymbolRecord, call count).
480
+ */
481
+ function callersOf(sym) {
482
+ // Short name handles both `funcName(` and `ClassName.methodName(` callee lookups.
483
+ const targetName = sym.name.includes('.') ? sym.name.split('.').pop() : sym.name;
484
+ const re = new RegExp(`\\b${escapeRe(targetName)}\\s*\\(`, 'g');
485
+ const result = [];
486
+ for (const cand of allSymbols) {
487
+ if (cand.id === sym.id)
488
+ continue;
489
+ if (!CALLABLE_KINDS.has(cand.kind))
490
+ continue;
491
+ const text = symbolText(cand);
492
+ const matches = text.match(re);
493
+ if (matches && matches.length > 0) {
494
+ result.push({ sym: cand, count: matches.length });
495
+ }
496
+ }
497
+ return result;
498
+ }
499
+ // Shared counter across the entire tree build.
500
+ const state = { totalNodes: 0, truncated: false };
501
+ function makeNode(sym, count, cyclic) {
502
+ state.totalNodes++;
503
+ const buf = getContent(sym.filePath);
504
+ let startLine = 1;
505
+ if (buf) {
506
+ startLine = bytesToLine(buf, sym.startByte);
507
+ }
508
+ return {
509
+ symbolId: sym.id,
510
+ name: sym.name,
511
+ kind: sym.kind,
512
+ filePath: sym.filePath,
513
+ startLine,
514
+ signature: sym.signature,
515
+ callCount: count,
516
+ cyclic,
517
+ children: [],
518
+ };
519
+ }
520
+ function expandCallees(node, sym, depth, ancestors) {
521
+ if (depth >= maxDepth)
522
+ return;
523
+ const callees = calleesOf(sym);
524
+ if (callees.length === 0)
525
+ return;
526
+ if (state.totalNodes >= maxNodes) {
527
+ state.truncated = true;
528
+ return;
529
+ }
530
+ for (const { sym: callee, count } of callees) {
531
+ if (state.totalNodes >= maxNodes) {
532
+ state.truncated = true;
533
+ break;
534
+ }
535
+ if (ancestors.has(callee.id)) {
536
+ node.children.push(makeNode(callee, count, true));
537
+ continue;
538
+ }
539
+ const child = makeNode(callee, count, false);
540
+ node.children.push(child);
541
+ const nextAncestors = new Set(ancestors);
542
+ nextAncestors.add(callee.id);
543
+ expandCallees(child, callee, depth + 1, nextAncestors);
544
+ }
545
+ }
546
+ function expandCallers(node, sym, depth, ancestors) {
547
+ if (depth >= maxDepth)
548
+ return;
549
+ const callers = callersOf(sym);
550
+ if (callers.length === 0)
551
+ return;
552
+ if (state.totalNodes >= maxNodes) {
553
+ state.truncated = true;
554
+ return;
555
+ }
556
+ for (const { sym: caller, count } of callers) {
557
+ if (state.totalNodes >= maxNodes) {
558
+ state.truncated = true;
559
+ break;
560
+ }
561
+ if (ancestors.has(caller.id)) {
562
+ node.children.push(makeNode(caller, count, true));
563
+ continue;
564
+ }
565
+ const child = makeNode(caller, count, false);
566
+ node.children.push(child);
567
+ const nextAncestors = new Set(ancestors);
568
+ nextAncestors.add(caller.id);
569
+ expandCallers(child, caller, depth + 1, nextAncestors);
570
+ }
571
+ }
572
+ const root = makeNode(rootSymbol, 0, false);
573
+ const rootAncestors = new Set([rootSymbol.id]);
574
+ if (direction === 'callees' || direction === 'both') {
575
+ expandCallees(root, rootSymbol, 0, rootAncestors);
576
+ }
577
+ if (direction === 'callers' || direction === 'both') {
578
+ expandCallers(root, rootSymbol, 0, rootAncestors);
579
+ }
580
+ return { root, direction, totalNodes: state.totalNodes, truncated: state.truncated };
581
+ }
144
582
  //# sourceMappingURL=graph-traversal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph-traversal.js","sourceRoot":"","sources":["../../src/graph/graph-traversal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph-traversal.js","sourceRoot":"","sources":["../../src/graph/graph-traversal.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAOtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAuFpD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,GAChB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,IAAI,CAkB1E;AAID,wBAAgB,eAAe,IAAI,SAAS,CA6O3C;AAID,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6EjF"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAOtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAoHpD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,GAChB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,IAAI,CAkB1E;AAID,wBAAgB,eAAe,IAAI,SAAS,CA8X3C;AAID,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6EjF"}