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.
- package/README.md +232 -23
- package/dist/__tests__/ast-chunker.test.d.ts +2 -0
- package/dist/__tests__/ast-chunker.test.d.ts.map +1 -0
- package/dist/__tests__/ast-chunker.test.js +307 -0
- package/dist/__tests__/ast-chunker.test.js.map +1 -0
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +242 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/dashboard/beads.test.d.ts +2 -0
- package/dist/__tests__/dashboard/beads.test.d.ts.map +1 -0
- package/dist/__tests__/dashboard/beads.test.js +151 -0
- package/dist/__tests__/dashboard/beads.test.js.map +1 -0
- package/dist/__tests__/dashboard/index.test.d.ts +2 -0
- package/dist/__tests__/dashboard/index.test.d.ts.map +1 -0
- package/dist/__tests__/dashboard/index.test.js +116 -0
- package/dist/__tests__/dashboard/index.test.js.map +1 -0
- package/dist/__tests__/dashboard/routes.test.d.ts +2 -0
- package/dist/__tests__/dashboard/routes.test.d.ts.map +1 -0
- package/dist/__tests__/dashboard/routes.test.js +125 -0
- package/dist/__tests__/dashboard/routes.test.js.map +1 -0
- package/dist/__tests__/dashboard/server.test.d.ts +2 -0
- package/dist/__tests__/dashboard/server.test.d.ts.map +1 -0
- package/dist/__tests__/dashboard/server.test.js +75 -0
- package/dist/__tests__/dashboard/server.test.js.map +1 -0
- package/dist/__tests__/dashboard/state.test.d.ts +2 -0
- package/dist/__tests__/dashboard/state.test.d.ts.map +1 -0
- package/dist/__tests__/dashboard/state.test.js +124 -0
- package/dist/__tests__/dashboard/state.test.js.map +1 -0
- package/dist/__tests__/embeddings/factory.test.d.ts +2 -0
- package/dist/__tests__/embeddings/factory.test.d.ts.map +1 -0
- package/dist/__tests__/embeddings/factory.test.js +100 -0
- package/dist/__tests__/embeddings/factory.test.js.map +1 -0
- package/dist/__tests__/embeddings/jina.test.d.ts +2 -0
- package/dist/__tests__/embeddings/jina.test.d.ts.map +1 -0
- package/dist/__tests__/embeddings/jina.test.js +156 -0
- package/dist/__tests__/embeddings/jina.test.js.map +1 -0
- package/dist/__tests__/embeddings/ollama.test.d.ts +2 -0
- package/dist/__tests__/embeddings/ollama.test.d.ts.map +1 -0
- package/dist/__tests__/embeddings/ollama.test.js +172 -0
- package/dist/__tests__/embeddings/ollama.test.js.map +1 -0
- package/dist/__tests__/embeddings/rate-limiter.test.d.ts +2 -0
- package/dist/__tests__/embeddings/rate-limiter.test.d.ts.map +1 -0
- package/dist/__tests__/embeddings/rate-limiter.test.js +163 -0
- package/dist/__tests__/embeddings/rate-limiter.test.js.map +1 -0
- package/dist/__tests__/embeddings/retry.test.d.ts +2 -0
- package/dist/__tests__/embeddings/retry.test.d.ts.map +1 -0
- package/dist/__tests__/embeddings/retry.test.js +260 -0
- package/dist/__tests__/embeddings/retry.test.js.map +1 -0
- package/dist/__tests__/embeddings/types.test.d.ts +2 -0
- package/dist/__tests__/embeddings/types.test.d.ts.map +1 -0
- package/dist/__tests__/embeddings/types.test.js +31 -0
- package/dist/__tests__/embeddings/types.test.js.map +1 -0
- package/dist/__tests__/mocks/embedding-backend.mock.d.ts +10 -0
- package/dist/__tests__/mocks/embedding-backend.mock.d.ts.map +1 -0
- package/dist/__tests__/mocks/embedding-backend.mock.js +39 -0
- package/dist/__tests__/mocks/embedding-backend.mock.js.map +1 -0
- package/dist/__tests__/mocks/fetch.mock.d.ts +38 -0
- package/dist/__tests__/mocks/fetch.mock.d.ts.map +1 -0
- package/dist/__tests__/mocks/fetch.mock.js +74 -0
- package/dist/__tests__/mocks/fetch.mock.js.map +1 -0
- package/dist/__tests__/mocks/lancedb.mock.d.ts +38 -0
- package/dist/__tests__/mocks/lancedb.mock.d.ts.map +1 -0
- package/dist/__tests__/mocks/lancedb.mock.js +63 -0
- package/dist/__tests__/mocks/lancedb.mock.js.map +1 -0
- package/dist/__tests__/search/clustering.test.d.ts +2 -0
- package/dist/__tests__/search/clustering.test.d.ts.map +1 -0
- package/dist/__tests__/search/clustering.test.js +230 -0
- package/dist/__tests__/search/clustering.test.js.map +1 -0
- package/dist/__tests__/search/hybrid-search.test.d.ts +2 -0
- package/dist/__tests__/search/hybrid-search.test.d.ts.map +1 -0
- package/dist/__tests__/search/hybrid-search.test.js +186 -0
- package/dist/__tests__/search/hybrid-search.test.js.map +1 -0
- package/dist/__tests__/search/indexer.test.d.ts +2 -0
- package/dist/__tests__/search/indexer.test.d.ts.map +1 -0
- package/dist/__tests__/search/indexer.test.js +878 -0
- package/dist/__tests__/search/indexer.test.js.map +1 -0
- package/dist/__tests__/search/tree-sitter-chunker.test.d.ts +2 -0
- package/dist/__tests__/search/tree-sitter-chunker.test.d.ts.map +1 -0
- package/dist/__tests__/search/tree-sitter-chunker.test.js +228 -0
- package/dist/__tests__/search/tree-sitter-chunker.test.js.map +1 -0
- package/dist/__tests__/setup.d.ts +2 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +11 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/__tests__/utils/concurrency.test.d.ts +2 -0
- package/dist/__tests__/utils/concurrency.test.d.ts.map +1 -0
- package/dist/__tests__/utils/concurrency.test.js +83 -0
- package/dist/__tests__/utils/concurrency.test.js.map +1 -0
- package/dist/__tests__/utils/errors.test.d.ts +2 -0
- package/dist/__tests__/utils/errors.test.d.ts.map +1 -0
- package/dist/__tests__/utils/errors.test.js +136 -0
- package/dist/__tests__/utils/errors.test.js.map +1 -0
- package/dist/__tests__/utils/type-guards.test.d.ts +2 -0
- package/dist/__tests__/utils/type-guards.test.d.ts.map +1 -0
- package/dist/__tests__/utils/type-guards.test.js +80 -0
- package/dist/__tests__/utils/type-guards.test.js.map +1 -0
- package/dist/__tests__/worktree/worktree-manager.test.d.ts +2 -0
- package/dist/__tests__/worktree/worktree-manager.test.d.ts.map +1 -0
- package/dist/__tests__/worktree/worktree-manager.test.js +403 -0
- package/dist/__tests__/worktree/worktree-manager.test.js.map +1 -0
- package/dist/config.d.ts +122 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +508 -0
- package/dist/config.js.map +1 -0
- package/dist/dashboard/beads.d.ts +35 -0
- package/dist/dashboard/beads.d.ts.map +1 -0
- package/dist/dashboard/beads.js +102 -0
- package/dist/dashboard/beads.js.map +1 -0
- package/dist/dashboard/events.d.ts +46 -0
- package/dist/dashboard/events.d.ts.map +1 -0
- package/dist/dashboard/events.js +141 -0
- package/dist/dashboard/events.js.map +1 -0
- package/dist/dashboard/index.d.ts +67 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +90 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/routes.d.ts +6 -0
- package/dist/dashboard/routes.d.ts.map +1 -0
- package/dist/dashboard/routes.js +244 -0
- package/dist/dashboard/routes.js.map +1 -0
- package/dist/dashboard/server.d.ts +27 -0
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/dashboard/server.js +72 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/dashboard/state.d.ts +116 -0
- package/dist/dashboard/state.d.ts.map +1 -0
- package/dist/dashboard/state.js +251 -0
- package/dist/dashboard/state.js.map +1 -0
- package/dist/dashboard/ui.d.ts +6 -0
- package/dist/dashboard/ui.d.ts.map +1 -0
- package/dist/dashboard/ui.js +1407 -0
- package/dist/dashboard/ui.js.map +1 -0
- package/dist/embeddings/index.d.ts +20 -2
- package/dist/embeddings/index.d.ts.map +1 -1
- package/dist/embeddings/index.js +49 -6
- package/dist/embeddings/index.js.map +1 -1
- package/dist/embeddings/jina.d.ts +9 -0
- package/dist/embeddings/jina.d.ts.map +1 -1
- package/dist/embeddings/jina.js +42 -2
- package/dist/embeddings/jina.js.map +1 -1
- package/dist/embeddings/ollama.d.ts +2 -0
- package/dist/embeddings/ollama.d.ts.map +1 -1
- package/dist/embeddings/ollama.js +21 -5
- package/dist/embeddings/ollama.js.map +1 -1
- package/dist/embeddings/rate-limiter.d.ts +75 -0
- package/dist/embeddings/rate-limiter.d.ts.map +1 -0
- package/dist/embeddings/rate-limiter.js +145 -0
- package/dist/embeddings/rate-limiter.js.map +1 -0
- package/dist/embeddings/retry.d.ts +14 -0
- package/dist/embeddings/retry.d.ts.map +1 -0
- package/dist/embeddings/retry.js +89 -0
- package/dist/embeddings/retry.js.map +1 -0
- package/dist/embeddings/types.d.ts +56 -2
- package/dist/embeddings/types.d.ts.map +1 -1
- package/dist/embeddings/types.js +16 -0
- package/dist/embeddings/types.js.map +1 -1
- package/dist/index.js +1870 -44
- package/dist/index.js.map +1 -1
- package/dist/memory/index.d.ts +63 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +168 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/search/ast-chunker.d.ts +34 -0
- package/dist/search/ast-chunker.d.ts.map +1 -0
- package/dist/search/ast-chunker.js +261 -0
- package/dist/search/ast-chunker.js.map +1 -0
- package/dist/search/clustering.d.ts +77 -0
- package/dist/search/clustering.d.ts.map +1 -0
- package/dist/search/clustering.js +455 -0
- package/dist/search/clustering.js.map +1 -0
- package/dist/search/indexer.d.ts +239 -3
- package/dist/search/indexer.d.ts.map +1 -1
- package/dist/search/indexer.js +941 -45
- package/dist/search/indexer.js.map +1 -1
- package/dist/search/tree-sitter-chunker.d.ts +69 -0
- package/dist/search/tree-sitter-chunker.d.ts.map +1 -0
- package/dist/search/tree-sitter-chunker.js +436 -0
- package/dist/search/tree-sitter-chunker.js.map +1 -0
- package/dist/symbols/index.d.ts +14 -0
- package/dist/symbols/index.d.ts.map +1 -0
- package/dist/symbols/index.js +19 -0
- package/dist/symbols/index.js.map +1 -0
- package/dist/symbols/name-path.d.ts +113 -0
- package/dist/symbols/name-path.d.ts.map +1 -0
- package/dist/symbols/name-path.js +194 -0
- package/dist/symbols/name-path.js.map +1 -0
- package/dist/symbols/pattern-search.d.ts +14 -0
- package/dist/symbols/pattern-search.d.ts.map +1 -0
- package/dist/symbols/pattern-search.js +224 -0
- package/dist/symbols/pattern-search.js.map +1 -0
- package/dist/symbols/reference-finder.d.ts +38 -0
- package/dist/symbols/reference-finder.d.ts.map +1 -0
- package/dist/symbols/reference-finder.js +376 -0
- package/dist/symbols/reference-finder.js.map +1 -0
- package/dist/symbols/symbol-editor.d.ts +81 -0
- package/dist/symbols/symbol-editor.d.ts.map +1 -0
- package/dist/symbols/symbol-editor.js +257 -0
- package/dist/symbols/symbol-editor.js.map +1 -0
- package/dist/symbols/symbol-extractor.d.ts +49 -0
- package/dist/symbols/symbol-extractor.d.ts.map +1 -0
- package/dist/symbols/symbol-extractor.js +593 -0
- package/dist/symbols/symbol-extractor.js.map +1 -0
- package/dist/symbols/symbol-renamer.d.ts +81 -0
- package/dist/symbols/symbol-renamer.d.ts.map +1 -0
- package/dist/symbols/symbol-renamer.js +204 -0
- package/dist/symbols/symbol-renamer.js.map +1 -0
- package/dist/symbols/types.d.ts +234 -0
- package/dist/symbols/types.d.ts.map +1 -0
- package/dist/symbols/types.js +106 -0
- package/dist/symbols/types.js.map +1 -0
- package/dist/utils/concurrency.d.ts +32 -0
- package/dist/utils/concurrency.d.ts.map +1 -0
- package/dist/utils/concurrency.js +57 -0
- package/dist/utils/concurrency.js.map +1 -0
- package/dist/utils/errors.d.ts +36 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +91 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/type-guards.d.ts +17 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +25 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/dist/worktree/index.d.ts +6 -0
- package/dist/worktree/index.d.ts.map +1 -0
- package/dist/worktree/index.js +6 -0
- package/dist/worktree/index.js.map +1 -0
- package/dist/worktree/types.d.ts +101 -0
- package/dist/worktree/types.d.ts.map +1 -0
- package/dist/worktree/types.js +6 -0
- package/dist/worktree/types.js.map +1 -0
- package/dist/worktree/worktree-manager.d.ts +80 -0
- package/dist/worktree/worktree-manager.d.ts.map +1 -0
- package/dist/worktree/worktree-manager.js +407 -0
- package/dist/worktree/worktree-manager.js.map +1 -0
- package/package.json +39 -5
- package/scripts/postinstall.js +48 -0
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Symbol editor for modifying symbol definitions in source files.
|
|
3
|
+
* Provides atomic operations to replace, insert before, or insert after symbols.
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs/promises';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import { SymbolExtractor } from './symbol-extractor.js';
|
|
8
|
+
import { parseNamePath, matchNamePath, getSymbolName } from './name-path.js';
|
|
9
|
+
/**
|
|
10
|
+
* Symbol editor for modifying source files.
|
|
11
|
+
*/
|
|
12
|
+
export class SymbolEditor {
|
|
13
|
+
projectPath;
|
|
14
|
+
symbolExtractor;
|
|
15
|
+
constructor(projectPath) {
|
|
16
|
+
this.projectPath = projectPath;
|
|
17
|
+
this.symbolExtractor = new SymbolExtractor(projectPath);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Replace a symbol's body with new content.
|
|
21
|
+
*/
|
|
22
|
+
async replaceSymbolBody(options) {
|
|
23
|
+
const { namePath, relativePath, body } = options;
|
|
24
|
+
const fullPath = path.join(this.projectPath, relativePath);
|
|
25
|
+
try {
|
|
26
|
+
// Find the target symbol
|
|
27
|
+
const symbols = await this.symbolExtractor.extractSymbols(relativePath, true);
|
|
28
|
+
const pattern = parseNamePath(namePath);
|
|
29
|
+
const targetSymbol = this.findSymbolByPattern(symbols, pattern);
|
|
30
|
+
if (!targetSymbol) {
|
|
31
|
+
return {
|
|
32
|
+
success: false,
|
|
33
|
+
filepath: relativePath,
|
|
34
|
+
symbolName: getSymbolName(namePath),
|
|
35
|
+
error: `Symbol not found: ${namePath}`,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// Read the file
|
|
39
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
40
|
+
const lines = content.split('\n');
|
|
41
|
+
// Get the indentation of the original symbol
|
|
42
|
+
const originalFirstLine = lines[targetSymbol.location.startLine - 1];
|
|
43
|
+
const indentation = this.detectIndentation(originalFirstLine);
|
|
44
|
+
// Apply indentation to the new body
|
|
45
|
+
const indentedBody = this.applyIndentation(body, indentation);
|
|
46
|
+
// Replace the lines
|
|
47
|
+
const beforeLines = lines.slice(0, targetSymbol.location.startLine - 1);
|
|
48
|
+
const afterLines = lines.slice(targetSymbol.location.endLine);
|
|
49
|
+
const newBodyLines = indentedBody.split('\n');
|
|
50
|
+
const newContent = [...beforeLines, ...newBodyLines, ...afterLines].join('\n');
|
|
51
|
+
// Write the file atomically
|
|
52
|
+
await this.atomicWrite(fullPath, newContent);
|
|
53
|
+
return {
|
|
54
|
+
success: true,
|
|
55
|
+
filepath: relativePath,
|
|
56
|
+
symbolName: targetSymbol.name,
|
|
57
|
+
newRange: {
|
|
58
|
+
startLine: targetSymbol.location.startLine,
|
|
59
|
+
endLine: targetSymbol.location.startLine + newBodyLines.length - 1,
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
return {
|
|
65
|
+
success: false,
|
|
66
|
+
filepath: relativePath,
|
|
67
|
+
symbolName: getSymbolName(namePath),
|
|
68
|
+
error: error instanceof Error ? error.message : String(error),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Insert content before a symbol.
|
|
74
|
+
*/
|
|
75
|
+
async insertBeforeSymbol(options) {
|
|
76
|
+
const { namePath, relativePath, body } = options;
|
|
77
|
+
const fullPath = path.join(this.projectPath, relativePath);
|
|
78
|
+
try {
|
|
79
|
+
// Find the target symbol
|
|
80
|
+
const symbols = await this.symbolExtractor.extractSymbols(relativePath, false);
|
|
81
|
+
const pattern = parseNamePath(namePath);
|
|
82
|
+
const targetSymbol = this.findSymbolByPattern(symbols, pattern);
|
|
83
|
+
if (!targetSymbol) {
|
|
84
|
+
return {
|
|
85
|
+
success: false,
|
|
86
|
+
filepath: relativePath,
|
|
87
|
+
symbolName: getSymbolName(namePath),
|
|
88
|
+
error: `Symbol not found: ${namePath}`,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// Read the file
|
|
92
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
93
|
+
const lines = content.split('\n');
|
|
94
|
+
// Get the indentation of the target symbol
|
|
95
|
+
const originalFirstLine = lines[targetSymbol.location.startLine - 1];
|
|
96
|
+
const indentation = this.detectIndentation(originalFirstLine);
|
|
97
|
+
// Apply indentation to the new body
|
|
98
|
+
const indentedBody = this.applyIndentation(body, indentation);
|
|
99
|
+
const newBodyLines = indentedBody.split('\n');
|
|
100
|
+
// Insert before the symbol (add blank line after if not present)
|
|
101
|
+
const insertPoint = targetSymbol.location.startLine - 1;
|
|
102
|
+
const beforeLines = lines.slice(0, insertPoint);
|
|
103
|
+
const afterLines = lines.slice(insertPoint);
|
|
104
|
+
// Add a blank line between new content and existing symbol if needed
|
|
105
|
+
const needsBlankLine = newBodyLines.length > 0 && afterLines.length > 0 && afterLines[0].trim() !== '';
|
|
106
|
+
const separator = needsBlankLine ? [''] : [];
|
|
107
|
+
const newContent = [...beforeLines, ...newBodyLines, ...separator, ...afterLines].join('\n');
|
|
108
|
+
// Write the file atomically
|
|
109
|
+
await this.atomicWrite(fullPath, newContent);
|
|
110
|
+
return {
|
|
111
|
+
success: true,
|
|
112
|
+
filepath: relativePath,
|
|
113
|
+
symbolName: targetSymbol.name,
|
|
114
|
+
newRange: {
|
|
115
|
+
startLine: insertPoint + 1,
|
|
116
|
+
endLine: insertPoint + newBodyLines.length,
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
return {
|
|
122
|
+
success: false,
|
|
123
|
+
filepath: relativePath,
|
|
124
|
+
symbolName: getSymbolName(namePath),
|
|
125
|
+
error: error instanceof Error ? error.message : String(error),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Insert content after a symbol.
|
|
131
|
+
*/
|
|
132
|
+
async insertAfterSymbol(options) {
|
|
133
|
+
const { namePath, relativePath, body } = options;
|
|
134
|
+
const fullPath = path.join(this.projectPath, relativePath);
|
|
135
|
+
try {
|
|
136
|
+
// Find the target symbol
|
|
137
|
+
const symbols = await this.symbolExtractor.extractSymbols(relativePath, false);
|
|
138
|
+
const pattern = parseNamePath(namePath);
|
|
139
|
+
const targetSymbol = this.findSymbolByPattern(symbols, pattern);
|
|
140
|
+
if (!targetSymbol) {
|
|
141
|
+
return {
|
|
142
|
+
success: false,
|
|
143
|
+
filepath: relativePath,
|
|
144
|
+
symbolName: getSymbolName(namePath),
|
|
145
|
+
error: `Symbol not found: ${namePath}`,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
// Read the file
|
|
149
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
150
|
+
const lines = content.split('\n');
|
|
151
|
+
// Get the indentation of the target symbol
|
|
152
|
+
const originalFirstLine = lines[targetSymbol.location.startLine - 1];
|
|
153
|
+
const indentation = this.detectIndentation(originalFirstLine);
|
|
154
|
+
// Apply indentation to the new body
|
|
155
|
+
const indentedBody = this.applyIndentation(body, indentation);
|
|
156
|
+
const newBodyLines = indentedBody.split('\n');
|
|
157
|
+
// Insert after the symbol
|
|
158
|
+
const insertPoint = targetSymbol.location.endLine;
|
|
159
|
+
const beforeLines = lines.slice(0, insertPoint);
|
|
160
|
+
const afterLines = lines.slice(insertPoint);
|
|
161
|
+
// Add a blank line before new content if needed
|
|
162
|
+
const needsBlankLine = beforeLines.length > 0 && beforeLines[beforeLines.length - 1].trim() !== '';
|
|
163
|
+
const separator = needsBlankLine ? [''] : [];
|
|
164
|
+
const newContent = [...beforeLines, ...separator, ...newBodyLines, ...afterLines].join('\n');
|
|
165
|
+
// Write the file atomically
|
|
166
|
+
await this.atomicWrite(fullPath, newContent);
|
|
167
|
+
return {
|
|
168
|
+
success: true,
|
|
169
|
+
filepath: relativePath,
|
|
170
|
+
symbolName: targetSymbol.name,
|
|
171
|
+
newRange: {
|
|
172
|
+
startLine: insertPoint + separator.length + 1,
|
|
173
|
+
endLine: insertPoint + separator.length + newBodyLines.length,
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
return {
|
|
179
|
+
success: false,
|
|
180
|
+
filepath: relativePath,
|
|
181
|
+
symbolName: getSymbolName(namePath),
|
|
182
|
+
error: error instanceof Error ? error.message : String(error),
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Find a symbol by name path pattern.
|
|
188
|
+
*/
|
|
189
|
+
findSymbolByPattern(symbols, pattern) {
|
|
190
|
+
for (const symbol of symbols) {
|
|
191
|
+
if (matchNamePath(symbol.namePath, pattern)) {
|
|
192
|
+
return symbol;
|
|
193
|
+
}
|
|
194
|
+
if (symbol.children) {
|
|
195
|
+
const found = this.findSymbolByPattern(symbol.children, pattern);
|
|
196
|
+
if (found) {
|
|
197
|
+
return found;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Detect the indentation used on a line.
|
|
205
|
+
*/
|
|
206
|
+
detectIndentation(line) {
|
|
207
|
+
const match = line.match(/^(\s*)/);
|
|
208
|
+
return match ? match[1] : '';
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Apply indentation to a block of code.
|
|
212
|
+
*/
|
|
213
|
+
applyIndentation(code, baseIndentation) {
|
|
214
|
+
const lines = code.split('\n');
|
|
215
|
+
// Find the minimum indentation in the provided code (excluding empty lines)
|
|
216
|
+
let minIndent = Infinity;
|
|
217
|
+
for (const line of lines) {
|
|
218
|
+
if (line.trim().length > 0) {
|
|
219
|
+
const indent = line.match(/^(\s*)/)?.[1].length ?? 0;
|
|
220
|
+
minIndent = Math.min(minIndent, indent);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (minIndent === Infinity)
|
|
224
|
+
minIndent = 0;
|
|
225
|
+
// Re-indent the code with the base indentation
|
|
226
|
+
return lines
|
|
227
|
+
.map((line) => {
|
|
228
|
+
if (line.trim().length === 0) {
|
|
229
|
+
return '';
|
|
230
|
+
}
|
|
231
|
+
const relativeIndent = line.substring(minIndent);
|
|
232
|
+
return baseIndentation + relativeIndent;
|
|
233
|
+
})
|
|
234
|
+
.join('\n');
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Write a file atomically (write to temp file, then rename).
|
|
238
|
+
*/
|
|
239
|
+
async atomicWrite(filepath, content) {
|
|
240
|
+
const tempPath = `${filepath}.tmp.${Date.now()}`;
|
|
241
|
+
try {
|
|
242
|
+
await fs.writeFile(tempPath, content, 'utf-8');
|
|
243
|
+
await fs.rename(tempPath, filepath);
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
// Try to clean up temp file
|
|
247
|
+
try {
|
|
248
|
+
await fs.unlink(tempPath);
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// Ignore cleanup errors
|
|
252
|
+
}
|
|
253
|
+
throw error;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=symbol-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-editor.js","sourceRoot":"","sources":["../../src/symbols/symbol-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Symbol extractor using Tree-sitter and TypeScript AST for multiple languages.
|
|
3
|
+
* Extracts hierarchical symbol information from source files.
|
|
4
|
+
*/
|
|
5
|
+
import { Symbol, SymbolsOverview } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Symbol extractor for extracting hierarchical symbol information.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SymbolExtractor {
|
|
10
|
+
private static parser;
|
|
11
|
+
private static loadedLanguages;
|
|
12
|
+
private static initPromise;
|
|
13
|
+
private static wasmBasePath;
|
|
14
|
+
private projectPath;
|
|
15
|
+
constructor(projectPath: string);
|
|
16
|
+
/**
|
|
17
|
+
* Initialize the tree-sitter parser.
|
|
18
|
+
*/
|
|
19
|
+
private static initialize;
|
|
20
|
+
private static findWasmBasePath;
|
|
21
|
+
private static getLanguageConfig;
|
|
22
|
+
private static loadLanguage;
|
|
23
|
+
/**
|
|
24
|
+
* Check if a file can be analyzed for symbols.
|
|
25
|
+
*/
|
|
26
|
+
static canAnalyze(filepath: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Extract all symbols from a file.
|
|
29
|
+
*/
|
|
30
|
+
extractSymbols(filepath: string, includeBody?: boolean): Promise<Symbol[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Get symbols overview for a file.
|
|
33
|
+
*/
|
|
34
|
+
getSymbolsOverview(filepath: string, depth?: number): Promise<SymbolsOverview>;
|
|
35
|
+
private countSymbols;
|
|
36
|
+
/**
|
|
37
|
+
* Extract symbols using TypeScript compiler.
|
|
38
|
+
*/
|
|
39
|
+
private extractSymbolsWithTypeScript;
|
|
40
|
+
private nodeToSymbol;
|
|
41
|
+
private memberToSymbol;
|
|
42
|
+
/**
|
|
43
|
+
* Extract symbols using tree-sitter.
|
|
44
|
+
*/
|
|
45
|
+
private extractSymbolsWithTreeSitter;
|
|
46
|
+
private processTreeSitterNode;
|
|
47
|
+
private getTreeSitterNodeName;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=symbol-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-extractor.d.ts","sourceRoot":"","sources":["../../src/symbols/symbol-extractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EACL,MAAM,EAGN,eAAe,EAGhB,MAAM,YAAY,CAAC;AAwGpB;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,CAA2B;IAChD,OAAO,CAAC,MAAM,CAAC,eAAe,CAAoC;IAClE,OAAO,CAAC,MAAM,CAAC,WAAW,CAA8B;IACxD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAuB;IAElD,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAI/B;;OAEG;mBACkB,UAAU;mBAwBV,gBAAgB;IA8BrC,OAAO,CAAC,MAAM,CAAC,iBAAiB;mBAUX,YAAY;IAkBjC;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAU5C;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsBvF;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,eAAe,CAAC;IAyCvF,OAAO,CAAC,YAAY;IAYpB;;OAEG;YACW,4BAA4B;IAgF1C,OAAO,CAAC,YAAY;IA6EpB,OAAO,CAAC,cAAc;IAgEtB;;OAEG;YACW,4BAA4B;IAsC1C,OAAO,CAAC,qBAAqB;IAgN7B,OAAO,CAAC,qBAAqB;CAyB9B"}
|