lance-context 0.1.0 → 1.0.1

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 (237) hide show
  1. package/README.md +232 -23
  2. package/dist/__tests__/ast-chunker.test.d.ts +2 -0
  3. package/dist/__tests__/ast-chunker.test.d.ts.map +1 -0
  4. package/dist/__tests__/ast-chunker.test.js +307 -0
  5. package/dist/__tests__/ast-chunker.test.js.map +1 -0
  6. package/dist/__tests__/config.test.d.ts +2 -0
  7. package/dist/__tests__/config.test.d.ts.map +1 -0
  8. package/dist/__tests__/config.test.js +242 -0
  9. package/dist/__tests__/config.test.js.map +1 -0
  10. package/dist/__tests__/dashboard/beads.test.d.ts +2 -0
  11. package/dist/__tests__/dashboard/beads.test.d.ts.map +1 -0
  12. package/dist/__tests__/dashboard/beads.test.js +151 -0
  13. package/dist/__tests__/dashboard/beads.test.js.map +1 -0
  14. package/dist/__tests__/dashboard/index.test.d.ts +2 -0
  15. package/dist/__tests__/dashboard/index.test.d.ts.map +1 -0
  16. package/dist/__tests__/dashboard/index.test.js +116 -0
  17. package/dist/__tests__/dashboard/index.test.js.map +1 -0
  18. package/dist/__tests__/dashboard/routes.test.d.ts +2 -0
  19. package/dist/__tests__/dashboard/routes.test.d.ts.map +1 -0
  20. package/dist/__tests__/dashboard/routes.test.js +125 -0
  21. package/dist/__tests__/dashboard/routes.test.js.map +1 -0
  22. package/dist/__tests__/dashboard/server.test.d.ts +2 -0
  23. package/dist/__tests__/dashboard/server.test.d.ts.map +1 -0
  24. package/dist/__tests__/dashboard/server.test.js +75 -0
  25. package/dist/__tests__/dashboard/server.test.js.map +1 -0
  26. package/dist/__tests__/dashboard/state.test.d.ts +2 -0
  27. package/dist/__tests__/dashboard/state.test.d.ts.map +1 -0
  28. package/dist/__tests__/dashboard/state.test.js +124 -0
  29. package/dist/__tests__/dashboard/state.test.js.map +1 -0
  30. package/dist/__tests__/embeddings/factory.test.d.ts +2 -0
  31. package/dist/__tests__/embeddings/factory.test.d.ts.map +1 -0
  32. package/dist/__tests__/embeddings/factory.test.js +100 -0
  33. package/dist/__tests__/embeddings/factory.test.js.map +1 -0
  34. package/dist/__tests__/embeddings/jina.test.d.ts +2 -0
  35. package/dist/__tests__/embeddings/jina.test.d.ts.map +1 -0
  36. package/dist/__tests__/embeddings/jina.test.js +156 -0
  37. package/dist/__tests__/embeddings/jina.test.js.map +1 -0
  38. package/dist/__tests__/embeddings/ollama.test.d.ts +2 -0
  39. package/dist/__tests__/embeddings/ollama.test.d.ts.map +1 -0
  40. package/dist/__tests__/embeddings/ollama.test.js +172 -0
  41. package/dist/__tests__/embeddings/ollama.test.js.map +1 -0
  42. package/dist/__tests__/embeddings/rate-limiter.test.d.ts +2 -0
  43. package/dist/__tests__/embeddings/rate-limiter.test.d.ts.map +1 -0
  44. package/dist/__tests__/embeddings/rate-limiter.test.js +163 -0
  45. package/dist/__tests__/embeddings/rate-limiter.test.js.map +1 -0
  46. package/dist/__tests__/embeddings/retry.test.d.ts +2 -0
  47. package/dist/__tests__/embeddings/retry.test.d.ts.map +1 -0
  48. package/dist/__tests__/embeddings/retry.test.js +260 -0
  49. package/dist/__tests__/embeddings/retry.test.js.map +1 -0
  50. package/dist/__tests__/embeddings/types.test.d.ts +2 -0
  51. package/dist/__tests__/embeddings/types.test.d.ts.map +1 -0
  52. package/dist/__tests__/embeddings/types.test.js +31 -0
  53. package/dist/__tests__/embeddings/types.test.js.map +1 -0
  54. package/dist/__tests__/mocks/embedding-backend.mock.d.ts +10 -0
  55. package/dist/__tests__/mocks/embedding-backend.mock.d.ts.map +1 -0
  56. package/dist/__tests__/mocks/embedding-backend.mock.js +39 -0
  57. package/dist/__tests__/mocks/embedding-backend.mock.js.map +1 -0
  58. package/dist/__tests__/mocks/fetch.mock.d.ts +38 -0
  59. package/dist/__tests__/mocks/fetch.mock.d.ts.map +1 -0
  60. package/dist/__tests__/mocks/fetch.mock.js +74 -0
  61. package/dist/__tests__/mocks/fetch.mock.js.map +1 -0
  62. package/dist/__tests__/mocks/lancedb.mock.d.ts +38 -0
  63. package/dist/__tests__/mocks/lancedb.mock.d.ts.map +1 -0
  64. package/dist/__tests__/mocks/lancedb.mock.js +63 -0
  65. package/dist/__tests__/mocks/lancedb.mock.js.map +1 -0
  66. package/dist/__tests__/search/clustering.test.d.ts +2 -0
  67. package/dist/__tests__/search/clustering.test.d.ts.map +1 -0
  68. package/dist/__tests__/search/clustering.test.js +230 -0
  69. package/dist/__tests__/search/clustering.test.js.map +1 -0
  70. package/dist/__tests__/search/hybrid-search.test.d.ts +2 -0
  71. package/dist/__tests__/search/hybrid-search.test.d.ts.map +1 -0
  72. package/dist/__tests__/search/hybrid-search.test.js +186 -0
  73. package/dist/__tests__/search/hybrid-search.test.js.map +1 -0
  74. package/dist/__tests__/search/indexer.test.d.ts +2 -0
  75. package/dist/__tests__/search/indexer.test.d.ts.map +1 -0
  76. package/dist/__tests__/search/indexer.test.js +878 -0
  77. package/dist/__tests__/search/indexer.test.js.map +1 -0
  78. package/dist/__tests__/search/tree-sitter-chunker.test.d.ts +2 -0
  79. package/dist/__tests__/search/tree-sitter-chunker.test.d.ts.map +1 -0
  80. package/dist/__tests__/search/tree-sitter-chunker.test.js +228 -0
  81. package/dist/__tests__/search/tree-sitter-chunker.test.js.map +1 -0
  82. package/dist/__tests__/setup.d.ts +2 -0
  83. package/dist/__tests__/setup.d.ts.map +1 -0
  84. package/dist/__tests__/setup.js +11 -0
  85. package/dist/__tests__/setup.js.map +1 -0
  86. package/dist/__tests__/utils/concurrency.test.d.ts +2 -0
  87. package/dist/__tests__/utils/concurrency.test.d.ts.map +1 -0
  88. package/dist/__tests__/utils/concurrency.test.js +83 -0
  89. package/dist/__tests__/utils/concurrency.test.js.map +1 -0
  90. package/dist/__tests__/utils/errors.test.d.ts +2 -0
  91. package/dist/__tests__/utils/errors.test.d.ts.map +1 -0
  92. package/dist/__tests__/utils/errors.test.js +136 -0
  93. package/dist/__tests__/utils/errors.test.js.map +1 -0
  94. package/dist/__tests__/utils/type-guards.test.d.ts +2 -0
  95. package/dist/__tests__/utils/type-guards.test.d.ts.map +1 -0
  96. package/dist/__tests__/utils/type-guards.test.js +80 -0
  97. package/dist/__tests__/utils/type-guards.test.js.map +1 -0
  98. package/dist/__tests__/worktree/worktree-manager.test.d.ts +2 -0
  99. package/dist/__tests__/worktree/worktree-manager.test.d.ts.map +1 -0
  100. package/dist/__tests__/worktree/worktree-manager.test.js +403 -0
  101. package/dist/__tests__/worktree/worktree-manager.test.js.map +1 -0
  102. package/dist/config.d.ts +122 -0
  103. package/dist/config.d.ts.map +1 -0
  104. package/dist/config.js +508 -0
  105. package/dist/config.js.map +1 -0
  106. package/dist/dashboard/beads.d.ts +35 -0
  107. package/dist/dashboard/beads.d.ts.map +1 -0
  108. package/dist/dashboard/beads.js +102 -0
  109. package/dist/dashboard/beads.js.map +1 -0
  110. package/dist/dashboard/events.d.ts +46 -0
  111. package/dist/dashboard/events.d.ts.map +1 -0
  112. package/dist/dashboard/events.js +141 -0
  113. package/dist/dashboard/events.js.map +1 -0
  114. package/dist/dashboard/index.d.ts +67 -0
  115. package/dist/dashboard/index.d.ts.map +1 -0
  116. package/dist/dashboard/index.js +90 -0
  117. package/dist/dashboard/index.js.map +1 -0
  118. package/dist/dashboard/routes.d.ts +6 -0
  119. package/dist/dashboard/routes.d.ts.map +1 -0
  120. package/dist/dashboard/routes.js +244 -0
  121. package/dist/dashboard/routes.js.map +1 -0
  122. package/dist/dashboard/server.d.ts +27 -0
  123. package/dist/dashboard/server.d.ts.map +1 -0
  124. package/dist/dashboard/server.js +72 -0
  125. package/dist/dashboard/server.js.map +1 -0
  126. package/dist/dashboard/state.d.ts +116 -0
  127. package/dist/dashboard/state.d.ts.map +1 -0
  128. package/dist/dashboard/state.js +251 -0
  129. package/dist/dashboard/state.js.map +1 -0
  130. package/dist/dashboard/ui.d.ts +6 -0
  131. package/dist/dashboard/ui.d.ts.map +1 -0
  132. package/dist/dashboard/ui.js +1407 -0
  133. package/dist/dashboard/ui.js.map +1 -0
  134. package/dist/embeddings/index.d.ts +20 -2
  135. package/dist/embeddings/index.d.ts.map +1 -1
  136. package/dist/embeddings/index.js +49 -6
  137. package/dist/embeddings/index.js.map +1 -1
  138. package/dist/embeddings/jina.d.ts +9 -0
  139. package/dist/embeddings/jina.d.ts.map +1 -1
  140. package/dist/embeddings/jina.js +42 -2
  141. package/dist/embeddings/jina.js.map +1 -1
  142. package/dist/embeddings/ollama.d.ts +2 -0
  143. package/dist/embeddings/ollama.d.ts.map +1 -1
  144. package/dist/embeddings/ollama.js +21 -5
  145. package/dist/embeddings/ollama.js.map +1 -1
  146. package/dist/embeddings/rate-limiter.d.ts +75 -0
  147. package/dist/embeddings/rate-limiter.d.ts.map +1 -0
  148. package/dist/embeddings/rate-limiter.js +145 -0
  149. package/dist/embeddings/rate-limiter.js.map +1 -0
  150. package/dist/embeddings/retry.d.ts +14 -0
  151. package/dist/embeddings/retry.d.ts.map +1 -0
  152. package/dist/embeddings/retry.js +89 -0
  153. package/dist/embeddings/retry.js.map +1 -0
  154. package/dist/embeddings/types.d.ts +56 -2
  155. package/dist/embeddings/types.d.ts.map +1 -1
  156. package/dist/embeddings/types.js +16 -0
  157. package/dist/embeddings/types.js.map +1 -1
  158. package/dist/index.js +1870 -44
  159. package/dist/index.js.map +1 -1
  160. package/dist/memory/index.d.ts +63 -0
  161. package/dist/memory/index.d.ts.map +1 -0
  162. package/dist/memory/index.js +168 -0
  163. package/dist/memory/index.js.map +1 -0
  164. package/dist/search/ast-chunker.d.ts +34 -0
  165. package/dist/search/ast-chunker.d.ts.map +1 -0
  166. package/dist/search/ast-chunker.js +261 -0
  167. package/dist/search/ast-chunker.js.map +1 -0
  168. package/dist/search/clustering.d.ts +77 -0
  169. package/dist/search/clustering.d.ts.map +1 -0
  170. package/dist/search/clustering.js +455 -0
  171. package/dist/search/clustering.js.map +1 -0
  172. package/dist/search/indexer.d.ts +239 -3
  173. package/dist/search/indexer.d.ts.map +1 -1
  174. package/dist/search/indexer.js +941 -45
  175. package/dist/search/indexer.js.map +1 -1
  176. package/dist/search/tree-sitter-chunker.d.ts +69 -0
  177. package/dist/search/tree-sitter-chunker.d.ts.map +1 -0
  178. package/dist/search/tree-sitter-chunker.js +436 -0
  179. package/dist/search/tree-sitter-chunker.js.map +1 -0
  180. package/dist/symbols/index.d.ts +14 -0
  181. package/dist/symbols/index.d.ts.map +1 -0
  182. package/dist/symbols/index.js +19 -0
  183. package/dist/symbols/index.js.map +1 -0
  184. package/dist/symbols/name-path.d.ts +113 -0
  185. package/dist/symbols/name-path.d.ts.map +1 -0
  186. package/dist/symbols/name-path.js +194 -0
  187. package/dist/symbols/name-path.js.map +1 -0
  188. package/dist/symbols/pattern-search.d.ts +14 -0
  189. package/dist/symbols/pattern-search.d.ts.map +1 -0
  190. package/dist/symbols/pattern-search.js +224 -0
  191. package/dist/symbols/pattern-search.js.map +1 -0
  192. package/dist/symbols/reference-finder.d.ts +38 -0
  193. package/dist/symbols/reference-finder.d.ts.map +1 -0
  194. package/dist/symbols/reference-finder.js +376 -0
  195. package/dist/symbols/reference-finder.js.map +1 -0
  196. package/dist/symbols/symbol-editor.d.ts +81 -0
  197. package/dist/symbols/symbol-editor.d.ts.map +1 -0
  198. package/dist/symbols/symbol-editor.js +257 -0
  199. package/dist/symbols/symbol-editor.js.map +1 -0
  200. package/dist/symbols/symbol-extractor.d.ts +49 -0
  201. package/dist/symbols/symbol-extractor.d.ts.map +1 -0
  202. package/dist/symbols/symbol-extractor.js +593 -0
  203. package/dist/symbols/symbol-extractor.js.map +1 -0
  204. package/dist/symbols/symbol-renamer.d.ts +81 -0
  205. package/dist/symbols/symbol-renamer.d.ts.map +1 -0
  206. package/dist/symbols/symbol-renamer.js +204 -0
  207. package/dist/symbols/symbol-renamer.js.map +1 -0
  208. package/dist/symbols/types.d.ts +234 -0
  209. package/dist/symbols/types.d.ts.map +1 -0
  210. package/dist/symbols/types.js +106 -0
  211. package/dist/symbols/types.js.map +1 -0
  212. package/dist/utils/concurrency.d.ts +32 -0
  213. package/dist/utils/concurrency.d.ts.map +1 -0
  214. package/dist/utils/concurrency.js +57 -0
  215. package/dist/utils/concurrency.js.map +1 -0
  216. package/dist/utils/errors.d.ts +36 -0
  217. package/dist/utils/errors.d.ts.map +1 -0
  218. package/dist/utils/errors.js +91 -0
  219. package/dist/utils/errors.js.map +1 -0
  220. package/dist/utils/type-guards.d.ts +17 -0
  221. package/dist/utils/type-guards.d.ts.map +1 -0
  222. package/dist/utils/type-guards.js +25 -0
  223. package/dist/utils/type-guards.js.map +1 -0
  224. package/dist/worktree/index.d.ts +6 -0
  225. package/dist/worktree/index.d.ts.map +1 -0
  226. package/dist/worktree/index.js +6 -0
  227. package/dist/worktree/index.js.map +1 -0
  228. package/dist/worktree/types.d.ts +101 -0
  229. package/dist/worktree/types.d.ts.map +1 -0
  230. package/dist/worktree/types.js +6 -0
  231. package/dist/worktree/types.js.map +1 -0
  232. package/dist/worktree/worktree-manager.d.ts +80 -0
  233. package/dist/worktree/worktree-manager.d.ts.map +1 -0
  234. package/dist/worktree/worktree-manager.js +407 -0
  235. package/dist/worktree/worktree-manager.js.map +1 -0
  236. package/package.json +39 -5
  237. package/scripts/postinstall.js +48 -0
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Symbol renamer for renaming symbols across the codebase.
3
+ * Uses text-based replacement with reference finding for cross-file renames.
4
+ */
5
+ /**
6
+ * Result from a rename operation.
7
+ */
8
+ export interface RenameResult {
9
+ /** Whether the rename was successful */
10
+ success: boolean;
11
+ /** Original symbol name */
12
+ originalName: string;
13
+ /** New symbol name */
14
+ newName: string;
15
+ /** Files that were modified */
16
+ modifiedFiles: RenameFileResult[];
17
+ /** Total number of replacements made */
18
+ totalReplacements: number;
19
+ /** Error message if failed */
20
+ error?: string;
21
+ }
22
+ /**
23
+ * Result for a single file in a rename operation.
24
+ */
25
+ export interface RenameFileResult {
26
+ /** Relative path to the file */
27
+ filepath: string;
28
+ /** Number of replacements made in this file */
29
+ replacements: number;
30
+ }
31
+ /**
32
+ * Options for rename_symbol.
33
+ */
34
+ export interface RenameSymbolOptions {
35
+ /** Name path of the symbol to rename */
36
+ namePath: string;
37
+ /** Relative path to the file containing the symbol definition */
38
+ relativePath: string;
39
+ /** The new name for the symbol */
40
+ newName: string;
41
+ /** Whether to perform a dry run (preview without making changes) */
42
+ dryRun?: boolean;
43
+ }
44
+ /**
45
+ * Symbol renamer for cross-file symbol renaming.
46
+ */
47
+ export declare class SymbolRenamer {
48
+ private projectPath;
49
+ private symbolExtractor;
50
+ private referenceFinder;
51
+ constructor(projectPath: string);
52
+ /**
53
+ * Rename a symbol across the codebase.
54
+ */
55
+ renameSymbol(options: RenameSymbolOptions): Promise<RenameResult>;
56
+ /**
57
+ * Check if a string is a valid identifier.
58
+ */
59
+ private isValidIdentifier;
60
+ /**
61
+ * Find a symbol by name path pattern.
62
+ */
63
+ private findSymbolByPattern;
64
+ /**
65
+ * Replace occurrences in a file on specific lines.
66
+ */
67
+ private replaceInFile;
68
+ /**
69
+ * Escape special regex characters in a string.
70
+ */
71
+ private escapeRegex;
72
+ /**
73
+ * Write a file atomically.
74
+ */
75
+ private atomicWrite;
76
+ }
77
+ /**
78
+ * Format rename result for display.
79
+ */
80
+ export declare function formatRenameResult(result: RenameResult): string;
81
+ //# sourceMappingURL=symbol-renamer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-renamer.d.ts","sourceRoot":"","sources":["../../src/symbols/symbol-renamer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,wCAAwC;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,eAAe,CAAkB;gBAE7B,WAAW,EAAE,MAAM;IAM/B;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAiGvE;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;YACW,aAAa;IAsC3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;YACW,WAAW;CAc1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAiB/D"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Symbol renamer for renaming symbols across the codebase.
3
+ * Uses text-based replacement with reference finding for cross-file renames.
4
+ */
5
+ import * as fs from 'fs/promises';
6
+ import * as path from 'path';
7
+ import { SymbolExtractor } from './symbol-extractor.js';
8
+ import { ReferenceFinder } from './reference-finder.js';
9
+ import { parseNamePath, matchNamePath, getSymbolName } from './name-path.js';
10
+ /**
11
+ * Symbol renamer for cross-file symbol renaming.
12
+ */
13
+ export class SymbolRenamer {
14
+ projectPath;
15
+ symbolExtractor;
16
+ referenceFinder;
17
+ constructor(projectPath) {
18
+ this.projectPath = projectPath;
19
+ this.symbolExtractor = new SymbolExtractor(projectPath);
20
+ this.referenceFinder = new ReferenceFinder(projectPath);
21
+ }
22
+ /**
23
+ * Rename a symbol across the codebase.
24
+ */
25
+ async renameSymbol(options) {
26
+ const { namePath, relativePath, newName, dryRun = false } = options;
27
+ try {
28
+ // Validate new name
29
+ if (!this.isValidIdentifier(newName)) {
30
+ return {
31
+ success: false,
32
+ originalName: getSymbolName(namePath),
33
+ newName,
34
+ modifiedFiles: [],
35
+ totalReplacements: 0,
36
+ error: `Invalid identifier: ${newName}`,
37
+ };
38
+ }
39
+ // Find the target symbol
40
+ const symbols = await this.symbolExtractor.extractSymbols(relativePath, false);
41
+ const pattern = parseNamePath(namePath);
42
+ const targetSymbol = this.findSymbolByPattern(symbols, pattern);
43
+ if (!targetSymbol) {
44
+ return {
45
+ success: false,
46
+ originalName: getSymbolName(namePath),
47
+ newName,
48
+ modifiedFiles: [],
49
+ totalReplacements: 0,
50
+ error: `Symbol not found: ${namePath} in ${relativePath}`,
51
+ };
52
+ }
53
+ const originalName = targetSymbol.name;
54
+ // Find all references to this symbol
55
+ const references = await this.referenceFinder.findReferences({
56
+ namePath,
57
+ relativePath,
58
+ includeInfo: false,
59
+ });
60
+ // Group replacements by file
61
+ const replacementsByFile = new Map();
62
+ // Helper to get or create set for a file
63
+ const getFileSet = (file) => {
64
+ let set = replacementsByFile.get(file);
65
+ if (!set) {
66
+ set = new Set();
67
+ replacementsByFile.set(file, set);
68
+ }
69
+ return set;
70
+ };
71
+ // Add the definition location
72
+ getFileSet(relativePath).add(targetSymbol.location.startLine);
73
+ // Add all reference locations
74
+ for (const ref of references) {
75
+ const file = ref.referencingSymbol.location.filepath;
76
+ getFileSet(file).add(ref.line);
77
+ }
78
+ const modifiedFiles = [];
79
+ let totalReplacements = 0;
80
+ // Perform replacements
81
+ for (const [file, lines] of replacementsByFile) {
82
+ const result = await this.replaceInFile(file, originalName, newName, lines, dryRun);
83
+ if (result.replacements > 0) {
84
+ modifiedFiles.push({
85
+ filepath: file,
86
+ replacements: result.replacements,
87
+ });
88
+ totalReplacements += result.replacements;
89
+ }
90
+ }
91
+ return {
92
+ success: true,
93
+ originalName,
94
+ newName,
95
+ modifiedFiles,
96
+ totalReplacements,
97
+ };
98
+ }
99
+ catch (error) {
100
+ return {
101
+ success: false,
102
+ originalName: getSymbolName(namePath),
103
+ newName,
104
+ modifiedFiles: [],
105
+ totalReplacements: 0,
106
+ error: error instanceof Error ? error.message : String(error),
107
+ };
108
+ }
109
+ }
110
+ /**
111
+ * Check if a string is a valid identifier.
112
+ */
113
+ isValidIdentifier(name) {
114
+ // Basic identifier validation - starts with letter/underscore, followed by alphanumeric/underscore
115
+ return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name);
116
+ }
117
+ /**
118
+ * Find a symbol by name path pattern.
119
+ */
120
+ findSymbolByPattern(symbols, pattern) {
121
+ for (const symbol of symbols) {
122
+ if (matchNamePath(symbol.namePath, pattern)) {
123
+ return symbol;
124
+ }
125
+ if (symbol.children) {
126
+ const found = this.findSymbolByPattern(symbol.children, pattern);
127
+ if (found) {
128
+ return found;
129
+ }
130
+ }
131
+ }
132
+ return null;
133
+ }
134
+ /**
135
+ * Replace occurrences in a file on specific lines.
136
+ */
137
+ async replaceInFile(relativePath, originalName, newName, targetLines, dryRun) {
138
+ const fullPath = path.join(this.projectPath, relativePath);
139
+ const content = await fs.readFile(fullPath, 'utf-8');
140
+ const lines = content.split('\n');
141
+ let replacements = 0;
142
+ const newLines = lines.map((line, index) => {
143
+ const lineNumber = index + 1;
144
+ // Only replace on target lines (where we found references)
145
+ if (!targetLines.has(lineNumber)) {
146
+ return line;
147
+ }
148
+ // Use word boundary matching to avoid partial replacements
149
+ const regex = new RegExp(`\\b${this.escapeRegex(originalName)}\\b`, 'g');
150
+ const newLine = line.replace(regex, () => {
151
+ replacements++;
152
+ return newName;
153
+ });
154
+ return newLine;
155
+ });
156
+ if (replacements > 0 && !dryRun) {
157
+ const newContent = newLines.join('\n');
158
+ await this.atomicWrite(fullPath, newContent);
159
+ }
160
+ return { replacements };
161
+ }
162
+ /**
163
+ * Escape special regex characters in a string.
164
+ */
165
+ escapeRegex(str) {
166
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
167
+ }
168
+ /**
169
+ * Write a file atomically.
170
+ */
171
+ async atomicWrite(filepath, content) {
172
+ const tempPath = `${filepath}.tmp.${Date.now()}`;
173
+ try {
174
+ await fs.writeFile(tempPath, content, 'utf-8');
175
+ await fs.rename(tempPath, filepath);
176
+ }
177
+ catch (error) {
178
+ try {
179
+ await fs.unlink(tempPath);
180
+ }
181
+ catch {
182
+ // Ignore cleanup errors
183
+ }
184
+ throw error;
185
+ }
186
+ }
187
+ }
188
+ /**
189
+ * Format rename result for display.
190
+ */
191
+ export function formatRenameResult(result) {
192
+ if (!result.success) {
193
+ return `Rename failed: ${result.error}`;
194
+ }
195
+ const parts = [];
196
+ parts.push(`Renamed "${result.originalName}" to "${result.newName}"`);
197
+ parts.push(`Total replacements: ${result.totalReplacements}`);
198
+ parts.push('\nModified files:');
199
+ for (const file of result.modifiedFiles) {
200
+ parts.push(`- ${file.filepath} (${file.replacements} replacement${file.replacements === 1 ? '' : 's'})`);
201
+ }
202
+ return parts.join('\n');
203
+ }
204
+ //# sourceMappingURL=symbol-renamer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-renamer.js","sourceRoot":"","sources":["../../src/symbols/symbol-renamer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Symbol types and interfaces for Serena-like symbolic code analysis.
3
+ * Uses LSP-compatible symbol kinds for interoperability.
4
+ */
5
+ /**
6
+ * LSP-compatible symbol kinds.
7
+ * Based on the Language Server Protocol specification.
8
+ * @see https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#symbolKind
9
+ */
10
+ export declare enum SymbolKind {
11
+ File = 1,
12
+ Module = 2,
13
+ Namespace = 3,
14
+ Package = 4,
15
+ Class = 5,
16
+ Method = 6,
17
+ Property = 7,
18
+ Field = 8,
19
+ Constructor = 9,
20
+ Enum = 10,
21
+ Interface = 11,
22
+ Function = 12,
23
+ Variable = 13,
24
+ Constant = 14,
25
+ String = 15,
26
+ Number = 16,
27
+ Boolean = 17,
28
+ Array = 18,
29
+ Object = 19,
30
+ Key = 20,
31
+ Null = 21,
32
+ EnumMember = 22,
33
+ Struct = 23,
34
+ Event = 24,
35
+ Operator = 25,
36
+ TypeParameter = 26
37
+ }
38
+ /**
39
+ * Human-readable names for symbol kinds
40
+ */
41
+ export declare const SymbolKindNames: Record<SymbolKind, string>;
42
+ /**
43
+ * Location information for a symbol in a source file.
44
+ */
45
+ export interface SymbolLocation {
46
+ /** Relative path to the source file from the project root */
47
+ filepath: string;
48
+ /** Starting line number (1-indexed) */
49
+ startLine: number;
50
+ /** Ending line number (1-indexed) */
51
+ endLine: number;
52
+ /** Starting column (0-indexed) */
53
+ startColumn: number;
54
+ /** Ending column (0-indexed) */
55
+ endColumn: number;
56
+ }
57
+ /**
58
+ * A code symbol extracted from source code.
59
+ * Represents functions, classes, methods, variables, etc.
60
+ */
61
+ export interface Symbol {
62
+ /** The symbol's name (e.g., 'MyClass', 'myMethod') */
63
+ name: string;
64
+ /**
65
+ * Hierarchical name path within the file.
66
+ * Format: "ClassName/methodName" or "/topLevelFunction"
67
+ * Uses "/" as separator to match Serena's convention.
68
+ */
69
+ namePath: string;
70
+ /** LSP-compatible symbol kind */
71
+ kind: SymbolKind;
72
+ /** Location in the source file */
73
+ location: SymbolLocation;
74
+ /** Parent symbol's name path, if this symbol is nested */
75
+ parentNamePath?: string;
76
+ /** Depth in the symbol hierarchy (0 = top-level) */
77
+ depth: number;
78
+ /** Child symbols (e.g., methods of a class) */
79
+ children?: Symbol[];
80
+ /** The symbol's source code body (only included when requested) */
81
+ body?: string;
82
+ /** Documentation/hover information (docstring, type signature) */
83
+ info?: string;
84
+ }
85
+ /**
86
+ * Result from find_symbol operations.
87
+ * Includes the matched symbols and their location info.
88
+ */
89
+ export interface FindSymbolResult {
90
+ /** Matched symbols */
91
+ symbols: Symbol[];
92
+ /** Total number of matches found */
93
+ totalMatches: number;
94
+ }
95
+ /**
96
+ * Overview of symbols in a file, grouped by kind.
97
+ */
98
+ export interface SymbolsOverview {
99
+ /** Relative path to the file */
100
+ filepath: string;
101
+ /** Symbols grouped by kind */
102
+ byKind: Record<string, SymbolOverviewEntry[]>;
103
+ /** Total number of symbols */
104
+ totalSymbols: number;
105
+ }
106
+ /**
107
+ * Compact symbol entry for overview (without body)
108
+ */
109
+ export interface SymbolOverviewEntry {
110
+ /** Symbol name */
111
+ name: string;
112
+ /** Name path (hierarchical) */
113
+ namePath: string;
114
+ /** Line range */
115
+ lines: string;
116
+ /** Child count (if any) */
117
+ children?: number;
118
+ }
119
+ /**
120
+ * Options for the find_symbol tool.
121
+ */
122
+ export interface FindSymbolOptions {
123
+ /** Name path pattern to search for */
124
+ namePathPattern: string;
125
+ /** Restrict search to this file or directory */
126
+ relativePath?: string;
127
+ /** Depth of descendants to retrieve (0 = symbol only) */
128
+ depth?: number;
129
+ /** Whether to include the symbol's source code body */
130
+ includeBody?: boolean;
131
+ /** Whether to include additional info (docstring, signature) */
132
+ includeInfo?: boolean;
133
+ /** Use substring matching for the last element of the pattern */
134
+ substringMatching?: boolean;
135
+ /** Symbol kinds to include (LSP kind integers) */
136
+ includeKinds?: SymbolKind[];
137
+ /** Symbol kinds to exclude (takes precedence over includeKinds) */
138
+ excludeKinds?: SymbolKind[];
139
+ /** Maximum response size in characters */
140
+ maxAnswerChars?: number;
141
+ }
142
+ /**
143
+ * Options for the get_symbols_overview tool.
144
+ */
145
+ export interface SymbolsOverviewOptions {
146
+ /** Relative path to the file */
147
+ relativePath: string;
148
+ /** Depth of descendants to retrieve (0 = top-level only) */
149
+ depth?: number;
150
+ /** Maximum response size in characters */
151
+ maxAnswerChars?: number;
152
+ }
153
+ /**
154
+ * Reference to a symbol from another location in code.
155
+ */
156
+ export interface SymbolReference {
157
+ /** The symbol containing the reference */
158
+ referencingSymbol: Symbol;
159
+ /** Code snippet around the reference */
160
+ codeSnippet: string;
161
+ /** Line number where the reference occurs */
162
+ line: number;
163
+ /** Column where the reference starts */
164
+ column: number;
165
+ }
166
+ /**
167
+ * Options for find_referencing_symbols tool.
168
+ */
169
+ export interface FindReferencesOptions {
170
+ /** Name path of the symbol to find references for */
171
+ namePath: string;
172
+ /** Relative path to the file containing the symbol */
173
+ relativePath: string;
174
+ /** Whether to include additional info about referencing symbols */
175
+ includeInfo?: boolean;
176
+ /** Symbol kinds to include */
177
+ includeKinds?: SymbolKind[];
178
+ /** Symbol kinds to exclude */
179
+ excludeKinds?: SymbolKind[];
180
+ /** Maximum response size in characters */
181
+ maxAnswerChars?: number;
182
+ }
183
+ /**
184
+ * Options for search_for_pattern tool.
185
+ */
186
+ export interface SearchPatternOptions {
187
+ /** Regular expression pattern to search for */
188
+ substringPattern: string;
189
+ /** Restrict search to this path (file or directory) */
190
+ relativePath?: string;
191
+ /** Only search in code files (not config, docs, etc.) */
192
+ restrictSearchToCodeFiles?: boolean;
193
+ /** Glob pattern for files to include */
194
+ pathsIncludeGlob?: string;
195
+ /** Glob pattern for files to exclude */
196
+ pathsExcludeGlob?: string;
197
+ /** Number of context lines before each match */
198
+ contextLinesBefore?: number;
199
+ /** Number of context lines after each match */
200
+ contextLinesAfter?: number;
201
+ /** Maximum response size in characters */
202
+ maxAnswerChars?: number;
203
+ }
204
+ /**
205
+ * Result from pattern search.
206
+ */
207
+ export interface PatternSearchResult {
208
+ /** Map of filepath to matched lines with context */
209
+ matches: Record<string, PatternMatch[]>;
210
+ /** Total number of matches */
211
+ totalMatches: number;
212
+ }
213
+ /**
214
+ * A single pattern match with context.
215
+ */
216
+ export interface PatternMatch {
217
+ /** Line number of the match (1-indexed) */
218
+ line: number;
219
+ /** The matched line and context */
220
+ content: string;
221
+ /** Column where match starts (0-indexed) */
222
+ matchStart?: number;
223
+ /** Length of the match */
224
+ matchLength?: number;
225
+ }
226
+ /**
227
+ * Map from AST chunk types to LSP symbol kinds.
228
+ */
229
+ export declare function chunkTypeToSymbolKind(chunkType: 'function' | 'class' | 'method' | 'interface' | 'type' | 'variable' | 'import' | 'other'): SymbolKind;
230
+ /**
231
+ * Get symbol kind from a name (for parsing user input).
232
+ */
233
+ export declare function parseSymbolKind(name: string): SymbolKind | undefined;
234
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/symbols/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Symbol types and interfaces for Serena-like symbolic code analysis.
3
+ * Uses LSP-compatible symbol kinds for interoperability.
4
+ */
5
+ /**
6
+ * LSP-compatible symbol kinds.
7
+ * Based on the Language Server Protocol specification.
8
+ * @see https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#symbolKind
9
+ */
10
+ export var SymbolKind;
11
+ (function (SymbolKind) {
12
+ SymbolKind[SymbolKind["File"] = 1] = "File";
13
+ SymbolKind[SymbolKind["Module"] = 2] = "Module";
14
+ SymbolKind[SymbolKind["Namespace"] = 3] = "Namespace";
15
+ SymbolKind[SymbolKind["Package"] = 4] = "Package";
16
+ SymbolKind[SymbolKind["Class"] = 5] = "Class";
17
+ SymbolKind[SymbolKind["Method"] = 6] = "Method";
18
+ SymbolKind[SymbolKind["Property"] = 7] = "Property";
19
+ SymbolKind[SymbolKind["Field"] = 8] = "Field";
20
+ SymbolKind[SymbolKind["Constructor"] = 9] = "Constructor";
21
+ SymbolKind[SymbolKind["Enum"] = 10] = "Enum";
22
+ SymbolKind[SymbolKind["Interface"] = 11] = "Interface";
23
+ SymbolKind[SymbolKind["Function"] = 12] = "Function";
24
+ SymbolKind[SymbolKind["Variable"] = 13] = "Variable";
25
+ SymbolKind[SymbolKind["Constant"] = 14] = "Constant";
26
+ SymbolKind[SymbolKind["String"] = 15] = "String";
27
+ SymbolKind[SymbolKind["Number"] = 16] = "Number";
28
+ SymbolKind[SymbolKind["Boolean"] = 17] = "Boolean";
29
+ SymbolKind[SymbolKind["Array"] = 18] = "Array";
30
+ SymbolKind[SymbolKind["Object"] = 19] = "Object";
31
+ SymbolKind[SymbolKind["Key"] = 20] = "Key";
32
+ SymbolKind[SymbolKind["Null"] = 21] = "Null";
33
+ SymbolKind[SymbolKind["EnumMember"] = 22] = "EnumMember";
34
+ SymbolKind[SymbolKind["Struct"] = 23] = "Struct";
35
+ SymbolKind[SymbolKind["Event"] = 24] = "Event";
36
+ SymbolKind[SymbolKind["Operator"] = 25] = "Operator";
37
+ SymbolKind[SymbolKind["TypeParameter"] = 26] = "TypeParameter";
38
+ })(SymbolKind || (SymbolKind = {}));
39
+ /**
40
+ * Human-readable names for symbol kinds
41
+ */
42
+ export const SymbolKindNames = {
43
+ [SymbolKind.File]: 'File',
44
+ [SymbolKind.Module]: 'Module',
45
+ [SymbolKind.Namespace]: 'Namespace',
46
+ [SymbolKind.Package]: 'Package',
47
+ [SymbolKind.Class]: 'Class',
48
+ [SymbolKind.Method]: 'Method',
49
+ [SymbolKind.Property]: 'Property',
50
+ [SymbolKind.Field]: 'Field',
51
+ [SymbolKind.Constructor]: 'Constructor',
52
+ [SymbolKind.Enum]: 'Enum',
53
+ [SymbolKind.Interface]: 'Interface',
54
+ [SymbolKind.Function]: 'Function',
55
+ [SymbolKind.Variable]: 'Variable',
56
+ [SymbolKind.Constant]: 'Constant',
57
+ [SymbolKind.String]: 'String',
58
+ [SymbolKind.Number]: 'Number',
59
+ [SymbolKind.Boolean]: 'Boolean',
60
+ [SymbolKind.Array]: 'Array',
61
+ [SymbolKind.Object]: 'Object',
62
+ [SymbolKind.Key]: 'Key',
63
+ [SymbolKind.Null]: 'Null',
64
+ [SymbolKind.EnumMember]: 'EnumMember',
65
+ [SymbolKind.Struct]: 'Struct',
66
+ [SymbolKind.Event]: 'Event',
67
+ [SymbolKind.Operator]: 'Operator',
68
+ [SymbolKind.TypeParameter]: 'TypeParameter',
69
+ };
70
+ /**
71
+ * Map from AST chunk types to LSP symbol kinds.
72
+ */
73
+ export function chunkTypeToSymbolKind(chunkType) {
74
+ switch (chunkType) {
75
+ case 'function':
76
+ return SymbolKind.Function;
77
+ case 'class':
78
+ return SymbolKind.Class;
79
+ case 'method':
80
+ return SymbolKind.Method;
81
+ case 'interface':
82
+ return SymbolKind.Interface;
83
+ case 'type':
84
+ return SymbolKind.TypeParameter;
85
+ case 'variable':
86
+ return SymbolKind.Variable;
87
+ case 'import':
88
+ return SymbolKind.Module;
89
+ case 'other':
90
+ default:
91
+ return SymbolKind.Variable;
92
+ }
93
+ }
94
+ /**
95
+ * Get symbol kind from a name (for parsing user input).
96
+ */
97
+ export function parseSymbolKind(name) {
98
+ const normalized = name.toLowerCase();
99
+ for (const [kind, kindName] of Object.entries(SymbolKindNames)) {
100
+ if (kindName.toLowerCase() === normalized) {
101
+ return Number(kind);
102
+ }
103
+ }
104
+ return undefined;
105
+ }
106
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/symbols/types.ts"],"names":[],"mappings":"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"}