lsp-intelligence 0.1.2 → 0.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 (126) hide show
  1. package/README.md +12 -7
  2. package/dist/analysis/pattern/collectSearchFiles.d.ts +5 -0
  3. package/dist/analysis/pattern/collectSearchFiles.js +38 -0
  4. package/dist/analysis/pattern/collectSearchFiles.js.map +1 -0
  5. package/dist/analysis/pattern/runPatternSearch.d.ts +17 -0
  6. package/dist/analysis/pattern/runPatternSearch.js +63 -0
  7. package/dist/analysis/pattern/runPatternSearch.js.map +1 -0
  8. package/dist/analysis/ts/extractDeclarations.d.ts +7 -0
  9. package/dist/analysis/ts/extractDeclarations.js +93 -0
  10. package/dist/analysis/ts/extractDeclarations.js.map +1 -0
  11. package/dist/analysis/ts/extractUsages.d.ts +7 -0
  12. package/dist/analysis/ts/extractUsages.js +120 -0
  13. package/dist/analysis/ts/extractUsages.js.map +1 -0
  14. package/dist/analysis/ts/parseSourceFile.d.ts +10 -0
  15. package/dist/analysis/ts/parseSourceFile.js +28 -0
  16. package/dist/analysis/ts/parseSourceFile.js.map +1 -0
  17. package/dist/analysis/ts/snippets.d.ts +14 -0
  18. package/dist/analysis/ts/snippets.js +29 -0
  19. package/dist/analysis/ts/snippets.js.map +1 -0
  20. package/dist/analysis/ts/structuralPredicates.d.ts +10 -0
  21. package/dist/analysis/ts/structuralPredicates.js +170 -0
  22. package/dist/analysis/ts/structuralPredicates.js.map +1 -0
  23. package/dist/ast/diffDeclarationShapes.d.ts +16 -0
  24. package/dist/ast/diffDeclarationShapes.js +179 -0
  25. package/dist/ast/diffDeclarationShapes.js.map +1 -0
  26. package/dist/ast/extractExportDeclarations.d.ts +21 -0
  27. package/dist/ast/extractExportDeclarations.js +218 -0
  28. package/dist/ast/extractExportDeclarations.js.map +1 -0
  29. package/dist/ast/findNodeAtPosition.d.ts +12 -0
  30. package/dist/ast/findNodeAtPosition.js +75 -0
  31. package/dist/ast/findNodeAtPosition.js.map +1 -0
  32. package/dist/ast/parseFile.d.ts +10 -0
  33. package/dist/ast/parseFile.js +29 -0
  34. package/dist/ast/parseFile.js.map +1 -0
  35. package/dist/engine/waitForDiagnostics.d.ts +7 -0
  36. package/dist/engine/waitForDiagnostics.js +16 -0
  37. package/dist/engine/waitForDiagnostics.js.map +1 -0
  38. package/dist/git/getBaseFileContent.d.ts +5 -0
  39. package/dist/git/getBaseFileContent.js +16 -0
  40. package/dist/git/getBaseFileContent.js.map +1 -0
  41. package/dist/git/getChangedFiles.d.ts +4 -0
  42. package/dist/git/getChangedFiles.js +21 -0
  43. package/dist/git/getChangedFiles.js.map +1 -0
  44. package/dist/git/getChangedHunks.d.ts +13 -0
  45. package/dist/git/getChangedHunks.js +51 -0
  46. package/dist/git/getChangedHunks.js.map +1 -0
  47. package/dist/git/getMergeBase.d.ts +5 -0
  48. package/dist/git/getMergeBase.js +23 -0
  49. package/dist/git/getMergeBase.js.map +1 -0
  50. package/dist/index.js +8 -0
  51. package/dist/index.js.map +1 -1
  52. package/dist/resolve/searchScope.d.ts +11 -0
  53. package/dist/resolve/searchScope.js +52 -0
  54. package/dist/resolve/searchScope.js.map +1 -0
  55. package/dist/resolve/targetResolver.d.ts +33 -0
  56. package/dist/resolve/targetResolver.js +84 -0
  57. package/dist/resolve/targetResolver.js.map +1 -0
  58. package/dist/search/families/behaviorFamilies.d.ts +22 -0
  59. package/dist/search/families/behaviorFamilies.js +90 -0
  60. package/dist/search/families/behaviorFamilies.js.map +1 -0
  61. package/dist/search/index/declarationIndex.d.ts +6 -0
  62. package/dist/search/index/declarationIndex.js +13 -0
  63. package/dist/search/index/declarationIndex.js.map +1 -0
  64. package/dist/search/index/types.d.ts +1 -0
  65. package/dist/search/index/types.js +2 -0
  66. package/dist/search/index/types.js.map +1 -0
  67. package/dist/search/index/usageIndex.d.ts +6 -0
  68. package/dist/search/index/usageIndex.js +13 -0
  69. package/dist/search/index/usageIndex.js.map +1 -0
  70. package/dist/search/index/workspaceIndex.d.ts +8 -0
  71. package/dist/search/index/workspaceIndex.js +91 -0
  72. package/dist/search/index/workspaceIndex.js.map +1 -0
  73. package/dist/search/query/parseQuery.d.ts +9 -0
  74. package/dist/search/query/parseQuery.js +244 -0
  75. package/dist/search/query/parseQuery.js.map +1 -0
  76. package/dist/search/query/planQuery.d.ts +9 -0
  77. package/dist/search/query/planQuery.js +58 -0
  78. package/dist/search/query/planQuery.js.map +1 -0
  79. package/dist/search/ranking/assessConfidence.d.ts +6 -0
  80. package/dist/search/ranking/assessConfidence.js +25 -0
  81. package/dist/search/ranking/assessConfidence.js.map +1 -0
  82. package/dist/search/ranking/mergeCandidates.d.ts +10 -0
  83. package/dist/search/ranking/mergeCandidates.js +46 -0
  84. package/dist/search/ranking/mergeCandidates.js.map +1 -0
  85. package/dist/search/ranking/rankCandidates.d.ts +12 -0
  86. package/dist/search/ranking/rankCandidates.js +58 -0
  87. package/dist/search/ranking/rankCandidates.js.map +1 -0
  88. package/dist/search/retrievers/behaviorRetriever.d.ts +7 -0
  89. package/dist/search/retrievers/behaviorRetriever.js +91 -0
  90. package/dist/search/retrievers/behaviorRetriever.js.map +1 -0
  91. package/dist/search/retrievers/identifierRetriever.d.ts +7 -0
  92. package/dist/search/retrievers/identifierRetriever.js +66 -0
  93. package/dist/search/retrievers/identifierRetriever.js.map +1 -0
  94. package/dist/search/retrievers/structuralRetriever.d.ts +11 -0
  95. package/dist/search/retrievers/structuralRetriever.js +141 -0
  96. package/dist/search/retrievers/structuralRetriever.js.map +1 -0
  97. package/dist/search/types.d.ts +121 -0
  98. package/dist/search/types.js +11 -0
  99. package/dist/search/types.js.map +1 -0
  100. package/dist/tools/composites/apiGuard.d.ts +1 -0
  101. package/dist/tools/composites/apiGuard.js +194 -0
  102. package/dist/tools/composites/apiGuard.js.map +1 -0
  103. package/dist/tools/composites/explainError.js +3 -2
  104. package/dist/tools/composites/explainError.js.map +1 -1
  105. package/dist/tools/composites/findCode.d.ts +1 -0
  106. package/dist/tools/composites/findCode.js +68 -0
  107. package/dist/tools/composites/findCode.js.map +1 -0
  108. package/dist/tools/composites/findPattern.d.ts +5 -0
  109. package/dist/tools/composites/findPattern.js +41 -0
  110. package/dist/tools/composites/findPattern.js.map +1 -0
  111. package/dist/tools/composites/rootCauseTrace.d.ts +1 -0
  112. package/dist/tools/composites/rootCauseTrace.js +213 -0
  113. package/dist/tools/composites/rootCauseTrace.js.map +1 -0
  114. package/dist/tools/composites/semanticDiff.js +24 -77
  115. package/dist/tools/composites/semanticDiff.js.map +1 -1
  116. package/dist/tools/live/liveDiagnostics.js +3 -2
  117. package/dist/tools/live/liveDiagnostics.js.map +1 -1
  118. package/dist/tools/primitives/diagnostics.js +2 -2
  119. package/dist/tools/primitives/diagnostics.js.map +1 -1
  120. package/dist/tools/registry.d.ts +10 -2
  121. package/dist/tools/registry.js +7 -2
  122. package/dist/tools/registry.js.map +1 -1
  123. package/package.json +8 -4
  124. package/dist/tools/primitives/typeHierarchy.d.ts +0 -1
  125. package/dist/tools/primitives/typeHierarchy.js +0 -55
  126. package/dist/tools/primitives/typeHierarchy.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rootCauseTrace.js","sourceRoot":"","sources":["../../../src/tools/composites/rootCauseTrace.ts"],"names":[],"mappings":"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"}
@@ -1,32 +1,16 @@
1
1
  import { z } from 'zod';
2
- import { execSync } from 'child_process';
3
2
  import { defineTool } from '../registry.js';
4
3
  import { relativePath } from '../../engine/positions.js';
4
+ import { getMergeBase } from '../../git/getMergeBase.js';
5
+ import { getChangedHunks } from '../../git/getChangedHunks.js';
5
6
  import { LspError, LspErrorCode, DEFAULT_TIMEOUTS } from '../../engine/types.js';
6
- function parseDiffHunks(diff, workspaceRoot) {
7
- const hunks = [];
8
- let currentFile = '';
9
- for (const line of diff.split('\n')) {
10
- // +++ b/path/to/file.ts
11
- const fileMatch = line.match(/^\+\+\+ b\/(.+)/);
12
- if (fileMatch) {
13
- currentFile = `${workspaceRoot}/${fileMatch[1]}`;
14
- continue;
15
- }
16
- // @@ -old,count +new,count @@
17
- const hunkMatch = line.match(/^@@ .+ \+(\d+)(?:,(\d+))? @@/);
18
- if (hunkMatch && currentFile.match(/\.tsx?$/)) {
19
- const start = parseInt(hunkMatch[1]);
20
- const count = parseInt(hunkMatch[2] ?? '1');
21
- hunks.push({ file: currentFile, startLine: start, endLine: start + count - 1 });
22
- }
23
- }
24
- return hunks;
25
- }
7
+ const SYMBOL_KINDS = {
8
+ 5: 'Class', 6: 'Method', 10: 'Enum', 11: 'Interface',
9
+ 12: 'Function', 13: 'Variable', 14: 'Constant',
10
+ };
26
11
  function findSymbolAtLine(symbols, line0) {
27
12
  for (const sym of symbols) {
28
13
  if (line0 >= sym.range.start.line && line0 <= sym.range.end.line) {
29
- // Check children for more specific match
30
14
  if (sym.children) {
31
15
  const child = findSymbolAtLine(sym.children, line0);
32
16
  if (child)
@@ -37,51 +21,22 @@ function findSymbolAtLine(symbols, line0) {
37
21
  }
38
22
  return null;
39
23
  }
40
- const SYMBOL_KINDS = {
41
- 5: 'Class', 6: 'Method', 10: 'Enum', 11: 'Interface',
42
- 12: 'Function', 13: 'Variable', 14: 'Constant',
43
- };
44
24
  export const semanticDiff = defineTool({
45
25
  name: 'semantic_diff',
46
- description: 'Analyze git diff semantically: identify changed symbols and their blast radius. Answers "what did I change and what might break?" Requires git.',
26
+ description: 'Analyze git diff semantically: identify changed symbols and their blast radius with risk classification. Requires git.',
47
27
  schema: z.object({
48
- base: z.string().optional().describe('Base ref to diff against. Defaults to merge-base with main branch.'),
49
- verbosity: z.enum(['summary', 'normal', 'detailed']).default('normal'),
28
+ base: z.string().optional().describe('Base ref to diff against. Defaults to merge-base with main.'),
50
29
  }),
51
30
  async handler(params, engine) {
52
31
  if (!engine.gitAvailable) {
53
32
  throw new LspError(LspErrorCode.GIT_UNAVAILABLE, 'Git is not available in this workspace.');
54
33
  }
55
34
  const timeout = DEFAULT_TIMEOUTS.composite;
56
- // Determine base ref
57
- let base = params.base;
58
- if (!base) {
59
- try {
60
- base = execSync('git merge-base HEAD main', { cwd: engine.workspaceRoot, encoding: 'utf-8' }).trim();
61
- }
62
- catch {
63
- try {
64
- base = execSync('git merge-base HEAD master', { cwd: engine.workspaceRoot, encoding: 'utf-8' }).trim();
65
- }
66
- catch {
67
- base = 'HEAD~1';
68
- }
69
- }
35
+ const base = getMergeBase(engine.workspaceRoot, params.base);
36
+ const hunks = getChangedHunks(engine.workspaceRoot, base);
37
+ if (hunks.length === 0) {
38
+ return { base, changedSymbols: [], totalReferences: 0, stats: { hunksAnalyzed: 0, filesProcessed: 0 }, warnings: ['No TypeScript changes found'] };
70
39
  }
71
- // Get diff
72
- let diff;
73
- try {
74
- diff = execSync(`git diff ${base} --unified=0`, { cwd: engine.workspaceRoot, encoding: 'utf-8' });
75
- }
76
- catch {
77
- return 'No changes found or invalid base ref.';
78
- }
79
- if (!diff.trim())
80
- return 'No changes found.';
81
- const hunks = parseDiffHunks(diff, engine.workspaceRoot);
82
- if (hunks.length === 0)
83
- return 'No TypeScript file changes found.';
84
- // For each changed hunk, identify the symbol
85
40
  const changedSymbols = [];
86
41
  const processedFiles = new Set();
87
42
  for (const hunk of hunks) {
@@ -91,21 +46,21 @@ export const semanticDiff = defineTool({
91
46
  const { uri } = await engine.prepareFile(hunk.file);
92
47
  const symbols = await engine.request('textDocument/documentSymbol', { textDocument: { uri } }, timeout);
93
48
  if (symbols) {
94
- // Find symbols affected by this hunk
95
49
  for (let line = hunk.startLine - 1; line <= hunk.endLine - 1; line++) {
96
50
  const sym = findSymbolAtLine(symbols, line);
97
- if (sym && !changedSymbols.some((s) => s.name === sym.name && s.file === hunk.file)) {
98
- // Get reference count for blast radius
51
+ if (sym && !changedSymbols.some((s) => s.name === sym.name && s.file === relativePath(hunk.file, engine.workspaceRoot))) {
99
52
  const refs = await engine.request('textDocument/references', {
100
53
  textDocument: { uri },
101
54
  position: sym.selectionRange.start,
102
55
  context: { includeDeclaration: false },
103
56
  }, timeout).catch(() => null);
57
+ const refCount = refs?.length ?? 0;
104
58
  changedSymbols.push({
105
59
  name: sym.name,
106
60
  kind: SYMBOL_KINDS[sym.kind] ?? 'Unknown',
107
61
  file: relativePath(hunk.file, engine.workspaceRoot),
108
- refCount: refs?.length ?? 0,
62
+ refCount,
63
+ risk: refCount > 10 ? 'high' : refCount > 3 ? 'medium' : 'low',
109
64
  });
110
65
  }
111
66
  }
@@ -114,22 +69,14 @@ export const semanticDiff = defineTool({
114
69
  catch { }
115
70
  processedFiles.add(hunk.file);
116
71
  }
117
- if (changedSymbols.length === 0)
118
- return 'No identifiable symbol changes found in diff.';
119
- const totalRefs = changedSymbols.reduce((s, c) => s + c.refCount, 0);
120
- const lines = [`# Semantic Diff\n`];
121
- lines.push(`${changedSymbols.length} symbols changed, ${totalRefs} total references affected\n`);
122
- for (const sym of changedSymbols.sort((a, b) => b.refCount - a.refCount)) {
123
- const risk = sym.refCount > 10 ? '🔴' : sym.refCount > 3 ? '🟡' : '🟢';
124
- lines.push(`${risk} **${sym.name}** (${sym.kind}) — ${sym.file}`);
125
- if (sym.refCount > 0) {
126
- lines.push(` → ${sym.refCount} references may need updating`);
127
- }
128
- else {
129
- lines.push(` → No external references (safe to change)`);
130
- }
131
- }
132
- return lines.join('\n');
72
+ const totalReferences = changedSymbols.reduce((s, c) => s + c.refCount, 0);
73
+ return {
74
+ base,
75
+ changedSymbols: changedSymbols.sort((a, b) => b.refCount - a.refCount),
76
+ totalReferences,
77
+ stats: { hunksAnalyzed: hunks.length, filesProcessed: processedFiles.size },
78
+ warnings: [],
79
+ };
133
80
  },
134
81
  });
135
82
  //# sourceMappingURL=semanticDiff.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"semanticDiff.js","sourceRoot":"","sources":["../../../src/tools/composites/semanticDiff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semanticDiff.js","sourceRoot":"","sources":["../../../src/tools/composites/semanticDiff.ts"],"names":[],"mappings":"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"}
@@ -15,9 +15,10 @@ export const liveDiagnostics = defineTool({
15
15
  if (!engine.connection)
16
16
  return 'Error: LSP connection not available.';
17
17
  await engine.docManager.refreshFromDisk(params.file_path, engine.connection);
18
- // Wait for TSServer to process changes
19
- await new Promise((r) => setTimeout(r, 1000));
18
+ // Wait for TSServer to process changes (poll instead of fixed sleep)
20
19
  const uri = `file://${params.file_path}`;
20
+ const { waitForDiagnostics } = await import('../../engine/waitForDiagnostics.js');
21
+ await waitForDiagnostics(engine.docManager, uri, 1500);
21
22
  const diags = engine.docManager.getCachedDiagnostics(uri);
22
23
  const rel = relativePath(params.file_path, engine.workspaceRoot);
23
24
  if (diags.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"liveDiagnostics.js","sourceRoot":"","sources":["../../../src/tools/live/liveDiagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"liveDiagnostics.js","sourceRoot":"","sources":["../../../src/tools/live/liveDiagnostics.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,8 @@ export const diagnostics = defineTool({
10
10
  }),
11
11
  async handler(params, engine) {
12
12
  const { uri } = await engine.prepareFile(params.file_path);
13
- // Wait briefly for diagnostics to be pushed
14
- await new Promise((r) => setTimeout(r, 500));
13
+ const { waitForDiagnostics } = await import('../../engine/waitForDiagnostics.js');
14
+ await waitForDiagnostics(engine.docManager, uri, 800);
15
15
  const diags = engine.docManager.getCachedDiagnostics(uri);
16
16
  if (diags.length === 0) {
17
17
  const rel = relativePath(params.file_path, engine.workspaceRoot);
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/tools/primitives/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAa,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAElF,MAAM,QAAQ,GAA2B,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAE5F,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,oGAAoG;IACjH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACrD,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;QAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3D,4CAA4C;QAC5C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YACjE,OAAO,sBAAsB,GAAG,kBAAkB,CAAC;QACrD,CAAC;QAED,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,CAAC,kBAAkB,GAAG,OAAO,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;QACpE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9E,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,CAAC,IAAI;gBAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC;QAC1D,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/tools/primitives/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAa,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAElF,MAAM,QAAQ,GAA2B,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAE5F,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,oGAAoG;IACjH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACrD,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;QAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;QAClF,MAAM,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YACjE,OAAO,sBAAsB,GAAG,kBAAkB,CAAC;QACrD,CAAC;QAED,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,CAAC,kBAAkB,GAAG,OAAO,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;QACpE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9E,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,CAAC,IAAI;gBAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC;QAC1D,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF,CAAC,CAAC"}
@@ -2,18 +2,26 @@ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { ZodRawShape } from 'zod';
3
3
  import { z } from 'zod';
4
4
  import type { LspEngine } from '../engine/LspEngine.js';
5
+ /**
6
+ * Tool result: either a formatted string or a structured object.
7
+ * Structured objects are JSON-serialized for the MCP response.
8
+ * Skills and formatting layers consume the structured data.
9
+ */
10
+ export type ToolResult = string | {
11
+ [key: string]: any;
12
+ };
5
13
  export interface ToolDef {
6
14
  name: string;
7
15
  description: string;
8
16
  schema: z.ZodObject<any>;
9
17
  annotations?: Record<string, boolean>;
10
- handler: (params: any, engine: LspEngine) => Promise<string>;
18
+ handler: (params: any, engine: LspEngine) => Promise<ToolResult>;
11
19
  }
12
20
  export declare function defineTool<S extends ZodRawShape>(def: {
13
21
  name: string;
14
22
  description: string;
15
23
  schema: z.ZodObject<S>;
16
24
  annotations?: Record<string, boolean>;
17
- handler: (params: z.infer<z.ZodObject<S>>, engine: LspEngine) => Promise<string>;
25
+ handler: (params: z.infer<z.ZodObject<S>>, engine: LspEngine) => Promise<ToolResult>;
18
26
  }): ToolDef;
19
27
  export declare function registerAll(server: McpServer, engine: LspEngine, tools: ToolDef[]): void;
@@ -6,8 +6,13 @@ export function registerAll(server, engine, tools) {
6
6
  server.tool(tool.name, tool.description, tool.schema.shape, async (params) => {
7
7
  try {
8
8
  const parsed = tool.schema.parse(params);
9
- const text = await tool.handler(parsed, engine);
10
- return { content: [{ type: 'text', text }] };
9
+ const result = await tool.handler(parsed, engine);
10
+ // Structured object JSON text
11
+ if (typeof result === 'object' && result !== null) {
12
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
13
+ }
14
+ // String → pass through (backward compat)
15
+ return { content: [{ type: 'text', text: result }] };
11
16
  }
12
17
  catch (err) {
13
18
  const msg = err instanceof Error ? err.message : String(err);
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,UAAU,CAAwB,GAMjD;IACC,OAAO,GAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAiB,EAAE,MAAiB,EAAE,KAAgB;IAChF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,KAAK,EAAE,MAA+B,EAAE,EAAE;YACxC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAChD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACxD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACxF,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,UAAU,CAAwB,GAMjD;IACC,OAAO,GAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAiB,EAAE,MAAiB,EAAE,KAAgB;IAChF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,KAAK,EAAE,MAA+B,EAAE,EAAE;YACxC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAElD,gCAAgC;gBAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBACzF,CAAC;gBAED,0CAA0C;gBAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAChE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACxF,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lsp-intelligence",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "LSP-powered code intelligence MCP server for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,22 +8,26 @@
8
8
  },
9
9
  "files": [
10
10
  "dist",
11
+ ".npmrc",
11
12
  "README.md",
12
13
  "LICENSE"
13
14
  ],
14
15
  "scripts": {
15
- "build": "tsc",
16
- "prepublishOnly": "tsc",
16
+ "clean": "rm -rf dist",
17
+ "build": "rm -rf dist && tsc",
18
+ "prepublishOnly": "rm -rf dist && tsc",
17
19
  "start": "tsx src/index.ts",
18
20
  "test": "vitest run",
19
21
  "test:watch": "vitest",
20
22
  "typecheck": "tsc --noEmit"
21
23
  },
22
24
  "dependencies": {
25
+ "@ast-grep/napi": "^0.42.0",
23
26
  "@modelcontextprotocol/sdk": "^1.0.0",
27
+ "typescript": "^5.4.0",
28
+ "typescript-language-server": "^4.0.0",
24
29
  "vscode-jsonrpc": "^8.2.0",
25
30
  "vscode-languageserver-protocol": "^3.17.5",
26
- "typescript-language-server": "^4.0.0",
27
31
  "zod": "^3.25.0"
28
32
  },
29
33
  "devDependencies": {
@@ -1 +0,0 @@
1
- export declare const typeHierarchy: import("../registry.js").ToolDef;
@@ -1,55 +0,0 @@
1
- import { z } from 'zod';
2
- import { defineTool } from '../registry.js';
3
- import { toPosition, fromPosition, relativePath, uriToPath } from '../../engine/positions.js';
4
- export const typeHierarchy = defineTool({
5
- name: 'type_hierarchy',
6
- description: 'Explore inheritance relationships — supertypes and subtypes. Use to understand class/interface hierarchies.',
7
- schema: z.object({
8
- symbol: z.string().optional().describe('Symbol name. Use this OR file_path+line+column.'),
9
- file_path: z.string().optional().describe('Absolute file path'),
10
- line: z.number().optional().describe('1-indexed line number'),
11
- column: z.number().optional().describe('1-indexed column number'),
12
- direction: z.enum(['supertypes', 'subtypes']).default('supertypes'),
13
- }),
14
- async handler(params, engine) {
15
- let uri, position;
16
- if (params.symbol) {
17
- const resolved = await engine.resolveSymbol(params.symbol, params.file_path);
18
- uri = resolved.uri;
19
- position = resolved.position;
20
- }
21
- else if (params.file_path && params.line && params.column) {
22
- const prepared = await engine.prepareFile(params.file_path);
23
- uri = prepared.uri;
24
- position = toPosition(params.line, params.column);
25
- }
26
- else {
27
- return 'Error: Provide either symbol name or file_path + line + column.';
28
- }
29
- let items;
30
- try {
31
- items = await engine.request('textDocument/prepareTypeHierarchy', { textDocument: { uri }, position });
32
- }
33
- catch {
34
- return 'Type hierarchy is not supported by the current language server.';
35
- }
36
- if (!items || items.length === 0)
37
- return 'No type hierarchy available for this symbol.';
38
- const item = items[0];
39
- const method = params.direction === 'supertypes'
40
- ? 'typeHierarchy/supertypes' : 'typeHierarchy/subtypes';
41
- const related = await engine.request(method, { item });
42
- if (!related || related.length === 0) {
43
- return `No ${params.direction} found for ${item.name}.`;
44
- }
45
- const label = params.direction === 'supertypes' ? 'Supertypes' : 'Subtypes';
46
- const lines = [`# ${label} of ${item.name}\n\n${related.length} types\n`];
47
- for (const t of related) {
48
- const rel = relativePath(uriToPath(t.uri), engine.workspaceRoot);
49
- const pos = fromPosition(t.selectionRange.start);
50
- lines.push(`- **${t.name}** — ${rel}:${pos.line}`);
51
- }
52
- return lines.join('\n');
53
- },
54
- });
55
- //# sourceMappingURL=typeHierarchy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typeHierarchy.js","sourceRoot":"","sources":["../../../src/tools/primitives/typeHierarchy.ts"],"names":[],"mappings":"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"}