@easbot/codebase 0.1.11
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/LICENSE +21 -0
- package/README.en.md +187 -0
- package/README.md +187 -0
- package/dist/index.cjs +111 -0
- package/dist/index.d.cts +542 -0
- package/dist/index.d.ts +542 -0
- package/dist/index.mjs +111 -0
- package/package.json +109 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
import { KnowledgeSearchOptions, BaseSearchResult, CodebaseKnowledgeConfigWithModels, CodebaseKnowledgeConfig } from '@easbot/types';
|
|
2
|
+
export { CodebaseKnowledgeConfig, CodebaseKnowledgeConfigWithModels } from '@easbot/types';
|
|
3
|
+
import { EmbeddingModelV3 } from '@ai-sdk/provider';
|
|
4
|
+
export { EmbeddingModelV3 as EmbeddingModel } from '@ai-sdk/provider';
|
|
5
|
+
|
|
6
|
+
interface FtsSearchResult {
|
|
7
|
+
id: string;
|
|
8
|
+
file_path: string;
|
|
9
|
+
name: string;
|
|
10
|
+
ast_type: string;
|
|
11
|
+
language: Language;
|
|
12
|
+
score: number;
|
|
13
|
+
text: string;
|
|
14
|
+
start_line: number;
|
|
15
|
+
start_col: number;
|
|
16
|
+
end_line: number;
|
|
17
|
+
end_col: number;
|
|
18
|
+
}
|
|
19
|
+
declare class DatabaseManager {
|
|
20
|
+
private db;
|
|
21
|
+
private dbPath;
|
|
22
|
+
private closed;
|
|
23
|
+
private ftsAvailable;
|
|
24
|
+
constructor(dbPath: string);
|
|
25
|
+
private openDatabase;
|
|
26
|
+
private ensureSchema;
|
|
27
|
+
private checkFtsAvailability;
|
|
28
|
+
isFtsAvailable(): boolean;
|
|
29
|
+
insertNode(node: Node): void;
|
|
30
|
+
insertNodes(nodes: Node[]): void;
|
|
31
|
+
private updateFtsNode;
|
|
32
|
+
private updateFtsNodes;
|
|
33
|
+
insertEdge(edge: Edge): void;
|
|
34
|
+
insertEdges(edges: Edge[]): void;
|
|
35
|
+
queryNodes(filter: NodeQueryFilter): Node[];
|
|
36
|
+
queryEdges(filter: EdgeQueryFilter): Edge[];
|
|
37
|
+
queryAll<T = any>(sql: string, params?: (string | number)[]): T[];
|
|
38
|
+
searchNodesFts(query: string, limit?: number): FtsSearchResult[];
|
|
39
|
+
deleteNodesByFile(filePath: string): number;
|
|
40
|
+
deleteEdgesByFile(filePath: string): number;
|
|
41
|
+
getFileHash(filePath: string): string | null;
|
|
42
|
+
setFileHash(filePath: string, hash: string): void;
|
|
43
|
+
deleteFileHash(filePath: string): void;
|
|
44
|
+
getAllFileHashes(): FileHashRecord[];
|
|
45
|
+
getStatus(): GraphStatus;
|
|
46
|
+
setLastSync(): void;
|
|
47
|
+
getNodeCount(): number;
|
|
48
|
+
getEdgeCount(): number;
|
|
49
|
+
getFileCount(): number;
|
|
50
|
+
getNodeById(id: string): Node | null;
|
|
51
|
+
getEdgeById(id: string): Edge | null;
|
|
52
|
+
clearAll(): void;
|
|
53
|
+
getCachedEmbedding(contentHash: string): Float32Array | null;
|
|
54
|
+
cacheEmbedding(contentHash: string, embedding: Float32Array): void;
|
|
55
|
+
getAllNodeEmbeddings(): Array<{
|
|
56
|
+
node_id: string;
|
|
57
|
+
embedding: Buffer;
|
|
58
|
+
}>;
|
|
59
|
+
storeNodeEmbeddings(embeddings: Array<{
|
|
60
|
+
nodeId: string;
|
|
61
|
+
embeddingText: string;
|
|
62
|
+
embedding: Float32Array;
|
|
63
|
+
}>): void;
|
|
64
|
+
initialize(): void;
|
|
65
|
+
close(): void;
|
|
66
|
+
isClosed(): boolean;
|
|
67
|
+
getDbPath(): string;
|
|
68
|
+
transaction<T>(fn: () => T): T;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
type CodeSearchSource = 'fts' | 'structural' | 'vector' | 'basic';
|
|
72
|
+
interface SearchResult extends BaseSearchResult {
|
|
73
|
+
id: string;
|
|
74
|
+
name: string;
|
|
75
|
+
astType: string;
|
|
76
|
+
language: Language;
|
|
77
|
+
filePath: string;
|
|
78
|
+
text: string;
|
|
79
|
+
startLine: number;
|
|
80
|
+
startCol: number;
|
|
81
|
+
endLine: number;
|
|
82
|
+
endCol: number;
|
|
83
|
+
source: CodeSearchSource;
|
|
84
|
+
}
|
|
85
|
+
interface HybridSearchResult extends SearchResult {
|
|
86
|
+
vectorScore?: number;
|
|
87
|
+
ftsScore?: number;
|
|
88
|
+
hybridScore: number;
|
|
89
|
+
}
|
|
90
|
+
interface SearchOptions extends KnowledgeSearchOptions {
|
|
91
|
+
language?: Language;
|
|
92
|
+
filePath?: string;
|
|
93
|
+
astType?: string;
|
|
94
|
+
enableFts?: boolean;
|
|
95
|
+
includeEdges?: boolean;
|
|
96
|
+
edgesLimit?: number;
|
|
97
|
+
embedding?: EmbeddingModelV3;
|
|
98
|
+
}
|
|
99
|
+
interface RelationQueryOptions {
|
|
100
|
+
maxDepth?: number;
|
|
101
|
+
relationTypes?: RelationType[];
|
|
102
|
+
direction?: 'incoming' | 'outgoing' | 'both';
|
|
103
|
+
limit?: number;
|
|
104
|
+
}
|
|
105
|
+
declare class QueryInterface {
|
|
106
|
+
private db;
|
|
107
|
+
private embedding?;
|
|
108
|
+
constructor(db: DatabaseManager, embedding?: EmbeddingModelV3);
|
|
109
|
+
search(query: string, options?: SearchOptions): Promise<NodeWithEdges[]>;
|
|
110
|
+
private vectorSearchNodes;
|
|
111
|
+
private getEdgesForNode;
|
|
112
|
+
private embedText;
|
|
113
|
+
private cosineSimilarity;
|
|
114
|
+
private structuralSearch;
|
|
115
|
+
private calculateNameSimilarity;
|
|
116
|
+
private normalizeScore;
|
|
117
|
+
queryNodes(filter: NodeQueryFilter): Node[];
|
|
118
|
+
queryEdges(filter: EdgeQueryFilter): Edge[];
|
|
119
|
+
queryEdgesWithNodes(filter: EdgeQueryFilter): EdgeWithNodes[];
|
|
120
|
+
queryNeighbors(nodeId: string, options?: RelationQueryOptions): {
|
|
121
|
+
nodes: Node[];
|
|
122
|
+
edges: Edge[];
|
|
123
|
+
};
|
|
124
|
+
queryCallGraph(nodeId: string, depth?: number): Map<string, {
|
|
125
|
+
callers: string[];
|
|
126
|
+
callees: string[];
|
|
127
|
+
}>;
|
|
128
|
+
queryInheritance(nodeId: string): {
|
|
129
|
+
ancestors: Node[];
|
|
130
|
+
descendants: Node[];
|
|
131
|
+
};
|
|
132
|
+
getNode(nodeId: string): Node | null;
|
|
133
|
+
getEdge(edgeId: string): Edge | null;
|
|
134
|
+
}
|
|
135
|
+
declare function createQueryInterface(db: DatabaseManager): QueryInterface;
|
|
136
|
+
|
|
137
|
+
type CodebaseConfig = CodebaseKnowledgeConfigWithModels;
|
|
138
|
+
type Language = 'ts' | 'tsx' | 'js' | 'py' | 'rs' | 'go' | 'c' | 'cpp' | 'csharp' | 'java' | 'scala' | 'ruby' | 'php' | 'zig';
|
|
139
|
+
declare const FILE_EXTENSION_MAP: Record<string, Language>;
|
|
140
|
+
type RelationType = 'CONTAINS' | 'CALLS' | 'INHERITS_FROM' | 'IMPLEMENTS' | 'REFERENCES' | 'IMPORTS';
|
|
141
|
+
type ASTNodeType = 'class_declaration' | 'function_declaration' | 'method_declaration' | 'method_definition' | 'variable_declaration' | 'import_declaration' | 'import_statement' | 'interface_declaration' | 'type_alias_declaration' | 'enum_declaration' | 'struct_item' | 'impl_item' | 'trait_item' | 'function_definition' | 'function_item' | 'class_definition' | 'module' | 'identifier' | 'type_identifier' | 'property_identifier' | 'field_identifier' | 'call_expression' | 'new_expression' | 'member_expression' | 'assignment_expression' | 'binary_expression' | 'unary_expression' | 'arrow_function' | 'function_expression' | 'lexical_declaration' | 'variable_declarator' | 'formal_parameters' | 'parameter' | 'required_parameter' | 'optional_parameter' | 'rest_parameter' | 'object_type' | 'array_type' | 'union_type' | 'intersection_type' | 'literal_type' | 'generic_type' | 'named_imports' | 'import_clause' | 'export_statement' | 'export_clause' | 'decorator' | 'attribute_item' | 'macro_definition' | 'macro_invocation' | 'namespace_definition' | 'using_directive' | 'class_heredoc' | 'trait_adaptations' | 'namespace_declaration' | 'define_directive' | 'preproc_if' | 'preproc_function_def';
|
|
142
|
+
interface Node {
|
|
143
|
+
id: string;
|
|
144
|
+
name: string;
|
|
145
|
+
ast_type: string;
|
|
146
|
+
language: Language;
|
|
147
|
+
file_path: string;
|
|
148
|
+
start_line: number;
|
|
149
|
+
start_col: number;
|
|
150
|
+
end_line: number;
|
|
151
|
+
end_col: number;
|
|
152
|
+
text: string;
|
|
153
|
+
created_at: string;
|
|
154
|
+
}
|
|
155
|
+
interface Edge {
|
|
156
|
+
id: string;
|
|
157
|
+
source: string;
|
|
158
|
+
target: string;
|
|
159
|
+
relation: RelationType;
|
|
160
|
+
created_at: string;
|
|
161
|
+
}
|
|
162
|
+
interface NodeWithEdges extends Node {
|
|
163
|
+
edges: Edge[];
|
|
164
|
+
}
|
|
165
|
+
interface ExtractedNode {
|
|
166
|
+
name: string;
|
|
167
|
+
ast_type: string;
|
|
168
|
+
language: Language;
|
|
169
|
+
file_path: string;
|
|
170
|
+
start_line: number;
|
|
171
|
+
start_col: number;
|
|
172
|
+
end_line: number;
|
|
173
|
+
end_col: number;
|
|
174
|
+
text: string;
|
|
175
|
+
parent_id?: string;
|
|
176
|
+
metadata?: Record<string, unknown>;
|
|
177
|
+
}
|
|
178
|
+
interface ExtractedEdge {
|
|
179
|
+
source: string;
|
|
180
|
+
target: string;
|
|
181
|
+
relation: RelationType;
|
|
182
|
+
}
|
|
183
|
+
type CodeKnowledgeGraphConfig = CodebaseKnowledgeConfig;
|
|
184
|
+
interface NodeQueryFilter {
|
|
185
|
+
filePath?: string;
|
|
186
|
+
astType?: string;
|
|
187
|
+
name?: string;
|
|
188
|
+
language?: Language;
|
|
189
|
+
ids?: string[];
|
|
190
|
+
limit?: number;
|
|
191
|
+
offset?: number;
|
|
192
|
+
}
|
|
193
|
+
interface EdgeQueryFilter {
|
|
194
|
+
source?: string;
|
|
195
|
+
target?: string;
|
|
196
|
+
sourceOrTarget?: string[];
|
|
197
|
+
relation?: RelationType;
|
|
198
|
+
limit?: number;
|
|
199
|
+
offset?: number;
|
|
200
|
+
}
|
|
201
|
+
interface EdgeWithNodes {
|
|
202
|
+
edge: Edge;
|
|
203
|
+
sourceNode: Node | null;
|
|
204
|
+
targetNode: Node | null;
|
|
205
|
+
}
|
|
206
|
+
interface IndexResult {
|
|
207
|
+
success: boolean;
|
|
208
|
+
filesProcessed: number;
|
|
209
|
+
nodesCreated: number;
|
|
210
|
+
edgesCreated: number;
|
|
211
|
+
errors: Array<{
|
|
212
|
+
filePath: string;
|
|
213
|
+
error: string;
|
|
214
|
+
}>;
|
|
215
|
+
duration: number;
|
|
216
|
+
}
|
|
217
|
+
interface SyncResult {
|
|
218
|
+
success: boolean;
|
|
219
|
+
filesAdded: number;
|
|
220
|
+
filesUpdated: number;
|
|
221
|
+
filesDeleted: number;
|
|
222
|
+
filesSkipped: number;
|
|
223
|
+
nodesCreated: number;
|
|
224
|
+
edgesCreated: number;
|
|
225
|
+
errors: Array<{
|
|
226
|
+
filePath: string;
|
|
227
|
+
error: string;
|
|
228
|
+
}>;
|
|
229
|
+
duration: number;
|
|
230
|
+
}
|
|
231
|
+
interface GraphStatus {
|
|
232
|
+
nodeCount: number;
|
|
233
|
+
edgeCount: number;
|
|
234
|
+
indexedFiles: number;
|
|
235
|
+
dbPath: string;
|
|
236
|
+
workspaceDir: string;
|
|
237
|
+
lastSync: string | null;
|
|
238
|
+
}
|
|
239
|
+
interface HealthCheckResult {
|
|
240
|
+
healthy: boolean;
|
|
241
|
+
issues: string[];
|
|
242
|
+
nodeCount: number;
|
|
243
|
+
edgeCount: number;
|
|
244
|
+
fileCount: number;
|
|
245
|
+
ftsAvailable: boolean;
|
|
246
|
+
parserStatus: Record<Language, boolean>;
|
|
247
|
+
database?: boolean;
|
|
248
|
+
parsers?: Record<Language, boolean>;
|
|
249
|
+
errors?: string[];
|
|
250
|
+
}
|
|
251
|
+
interface FileHashRecord {
|
|
252
|
+
file_path: string;
|
|
253
|
+
content_hash: string;
|
|
254
|
+
last_modified: string;
|
|
255
|
+
}
|
|
256
|
+
type ProgressCallback = (progress: {
|
|
257
|
+
currentFile: string;
|
|
258
|
+
processed: number;
|
|
259
|
+
total: number;
|
|
260
|
+
stage: 'parsing' | 'extracting' | 'storing' | 'embedding';
|
|
261
|
+
}) => void;
|
|
262
|
+
interface IParser {
|
|
263
|
+
parse(sourceCode: string): unknown;
|
|
264
|
+
getLanguage(): Language;
|
|
265
|
+
}
|
|
266
|
+
interface INodeExtractor {
|
|
267
|
+
extractNodes(tree: unknown, source: string, language: Language, filePath: string): ExtractedNode[];
|
|
268
|
+
}
|
|
269
|
+
interface IEdgeExtractor {
|
|
270
|
+
extractEdges(tree: unknown, nodes: ExtractedNode[], language: Language, filePath: string): ExtractedEdge[];
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
interface ICodebase {
|
|
274
|
+
initialize(): Promise<void>;
|
|
275
|
+
indexFile(filePath: string, progress?: ProgressCallback): Promise<IndexResult>;
|
|
276
|
+
indexDirectory(dir?: string, progress?: ProgressCallback): Promise<IndexResult>;
|
|
277
|
+
sync(progress?: ProgressCallback): Promise<SyncResult>;
|
|
278
|
+
search(query: string, options?: SearchOptions): Promise<NodeWithEdges[]>;
|
|
279
|
+
queryNodes(filter: NodeQueryFilter): Promise<Node[]>;
|
|
280
|
+
queryEdges(filter: EdgeQueryFilter): Promise<Edge[]>;
|
|
281
|
+
queryNeighbors(nodeId: string, options?: RelationQueryOptions): Promise<{
|
|
282
|
+
nodes: Node[];
|
|
283
|
+
edges: Edge[];
|
|
284
|
+
}>;
|
|
285
|
+
queryCallGraph(nodeId: string, depth?: number): Promise<Map<string, {
|
|
286
|
+
callers: string[];
|
|
287
|
+
callees: string[];
|
|
288
|
+
}>>;
|
|
289
|
+
queryInheritance(nodeId: string): Promise<{
|
|
290
|
+
ancestors: Node[];
|
|
291
|
+
descendants: Node[];
|
|
292
|
+
}>;
|
|
293
|
+
getNode(nodeId: string): Promise<Node | null>;
|
|
294
|
+
getEdge(edgeId: string): Promise<Edge | null>;
|
|
295
|
+
getStatus(): Promise<GraphStatus>;
|
|
296
|
+
healthCheck(): Promise<HealthCheckResult>;
|
|
297
|
+
clear(): Promise<void>;
|
|
298
|
+
close(): Promise<void>;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
type ParserInstance = any;
|
|
302
|
+
type LanguageInstance = any;
|
|
303
|
+
interface ParseTree {
|
|
304
|
+
rootNode: SyntaxNode;
|
|
305
|
+
walk(): TreeCursor;
|
|
306
|
+
delete(): void;
|
|
307
|
+
}
|
|
308
|
+
interface SyntaxNode {
|
|
309
|
+
type: string;
|
|
310
|
+
text: string;
|
|
311
|
+
startPosition: {
|
|
312
|
+
row: number;
|
|
313
|
+
column: number;
|
|
314
|
+
};
|
|
315
|
+
endPosition: {
|
|
316
|
+
row: number;
|
|
317
|
+
column: number;
|
|
318
|
+
};
|
|
319
|
+
childCount: number;
|
|
320
|
+
children: SyntaxNode[];
|
|
321
|
+
namedChildCount: number;
|
|
322
|
+
namedChildren: SyntaxNode[];
|
|
323
|
+
parent: SyntaxNode | null;
|
|
324
|
+
childForFieldName(name: string): SyntaxNode | null;
|
|
325
|
+
childForFieldId(id: number): SyntaxNode | null;
|
|
326
|
+
firstChild: SyntaxNode | null;
|
|
327
|
+
lastChild: SyntaxNode | null;
|
|
328
|
+
nextSibling: SyntaxNode | null;
|
|
329
|
+
prevSibling: SyntaxNode | null;
|
|
330
|
+
nextNamedSibling: SyntaxNode | null;
|
|
331
|
+
prevNamedSibling: SyntaxNode | null;
|
|
332
|
+
descendantForPosition(position: {
|
|
333
|
+
row: number;
|
|
334
|
+
column: number;
|
|
335
|
+
}): SyntaxNode;
|
|
336
|
+
descendantsOfType(type: string | string[]): SyntaxNode[];
|
|
337
|
+
}
|
|
338
|
+
interface TreeCursor {
|
|
339
|
+
nodeType: string;
|
|
340
|
+
nodeText: string;
|
|
341
|
+
startPosition: {
|
|
342
|
+
row: number;
|
|
343
|
+
column: number;
|
|
344
|
+
};
|
|
345
|
+
endPosition: {
|
|
346
|
+
row: number;
|
|
347
|
+
column: number;
|
|
348
|
+
};
|
|
349
|
+
gotoFirstChild(): boolean;
|
|
350
|
+
gotoNextSibling(): boolean;
|
|
351
|
+
gotoParent(): boolean;
|
|
352
|
+
currentNode: SyntaxNode;
|
|
353
|
+
}
|
|
354
|
+
declare class ParserManager {
|
|
355
|
+
private parsers;
|
|
356
|
+
private initialized;
|
|
357
|
+
private initPromise;
|
|
358
|
+
initialize(): Promise<void>;
|
|
359
|
+
private doInitialize;
|
|
360
|
+
getParser(language: Language): ParserInstance | null;
|
|
361
|
+
getLanguage(language: Language): LanguageInstance | null;
|
|
362
|
+
detectLanguage(filePath: string): Language | null;
|
|
363
|
+
parse(sourceCode: string, language: Language): ParseTree;
|
|
364
|
+
parseFile(filePath: string, sourceCode: string): ParseTree;
|
|
365
|
+
isLanguageSupported(language: Language): boolean;
|
|
366
|
+
getSupportedLanguages(): Language[];
|
|
367
|
+
isInitialized(): boolean;
|
|
368
|
+
getStatus(): Record<Language, boolean>;
|
|
369
|
+
dispose(): void;
|
|
370
|
+
}
|
|
371
|
+
declare function getParserManager(): Promise<ParserManager>;
|
|
372
|
+
declare function resetParserManager(): void;
|
|
373
|
+
|
|
374
|
+
declare class ParserError extends Error {
|
|
375
|
+
readonly name = "ParserError";
|
|
376
|
+
readonly filePath: string;
|
|
377
|
+
readonly cause?: Error;
|
|
378
|
+
constructor(message: string, filePath: string, cause?: Error);
|
|
379
|
+
toString(): string;
|
|
380
|
+
toJSON(): Record<string, unknown>;
|
|
381
|
+
}
|
|
382
|
+
declare class DatabaseError extends Error {
|
|
383
|
+
readonly name = "DatabaseError";
|
|
384
|
+
readonly operation: string;
|
|
385
|
+
readonly cause?: Error;
|
|
386
|
+
constructor(message: string, operation: string, cause?: Error);
|
|
387
|
+
toString(): string;
|
|
388
|
+
toJSON(): Record<string, unknown>;
|
|
389
|
+
}
|
|
390
|
+
declare class FileSystemError extends Error {
|
|
391
|
+
readonly name = "FileSystemError";
|
|
392
|
+
readonly filePath: string;
|
|
393
|
+
readonly cause?: Error;
|
|
394
|
+
constructor(message: string, filePath: string, cause?: Error);
|
|
395
|
+
toString(): string;
|
|
396
|
+
toJSON(): Record<string, unknown>;
|
|
397
|
+
}
|
|
398
|
+
declare class SchemaError extends Error {
|
|
399
|
+
readonly name = "SchemaError";
|
|
400
|
+
readonly missing?: string[];
|
|
401
|
+
constructor(message: string, missing?: string[]);
|
|
402
|
+
toString(): string;
|
|
403
|
+
toJSON(): Record<string, unknown>;
|
|
404
|
+
}
|
|
405
|
+
declare class ConfigError extends Error {
|
|
406
|
+
readonly name = "ConfigError";
|
|
407
|
+
readonly field?: string;
|
|
408
|
+
constructor(message: string, field?: string);
|
|
409
|
+
toString(): string;
|
|
410
|
+
toJSON(): Record<string, unknown>;
|
|
411
|
+
}
|
|
412
|
+
declare class IndexError extends Error {
|
|
413
|
+
readonly name = "IndexError";
|
|
414
|
+
readonly filePath?: string;
|
|
415
|
+
readonly cause?: Error;
|
|
416
|
+
constructor(message: string, filePath?: string, cause?: Error);
|
|
417
|
+
toString(): string;
|
|
418
|
+
toJSON(): Record<string, unknown>;
|
|
419
|
+
}
|
|
420
|
+
declare class QueryError extends Error {
|
|
421
|
+
readonly name = "QueryError";
|
|
422
|
+
readonly params?: Record<string, unknown>;
|
|
423
|
+
readonly cause?: Error;
|
|
424
|
+
constructor(message: string, params?: Record<string, unknown>, cause?: Error);
|
|
425
|
+
toString(): string;
|
|
426
|
+
toJSON(): Record<string, unknown>;
|
|
427
|
+
}
|
|
428
|
+
declare class UnsupportedLanguageError extends Error {
|
|
429
|
+
readonly name = "UnsupportedLanguageError";
|
|
430
|
+
readonly extension: string;
|
|
431
|
+
readonly filePath: string;
|
|
432
|
+
constructor(extension: string, filePath: string);
|
|
433
|
+
toString(): string;
|
|
434
|
+
toJSON(): Record<string, unknown>;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
declare class NodeExtractor {
|
|
438
|
+
extractNodes(tree: ParseTree, source: string, language: Language, filePath: string): ExtractedNode[];
|
|
439
|
+
private walkTree;
|
|
440
|
+
private extractNode;
|
|
441
|
+
private getNodeName;
|
|
442
|
+
private findNameInChildren;
|
|
443
|
+
private findNameInGrandchildren;
|
|
444
|
+
private extractImportName;
|
|
445
|
+
private normalizeAstType;
|
|
446
|
+
private getNodeText;
|
|
447
|
+
generateNodeId(node: ExtractedNode): string;
|
|
448
|
+
}
|
|
449
|
+
declare function createNodeExtractor(): NodeExtractor;
|
|
450
|
+
|
|
451
|
+
declare class EdgeExtractor {
|
|
452
|
+
extractEdges(tree: ParseTree, nodes: ExtractedNode[], language: Language, filePath: string): ExtractedEdge[];
|
|
453
|
+
private extractContainsEdges;
|
|
454
|
+
private extractCallEdges;
|
|
455
|
+
private extractInheritanceEdges;
|
|
456
|
+
private extractImportEdges;
|
|
457
|
+
private walkTree;
|
|
458
|
+
private findEnclosingFunction;
|
|
459
|
+
private extractCalleeName;
|
|
460
|
+
private findNameInChildren;
|
|
461
|
+
private findChildByType;
|
|
462
|
+
private findDescendantByType;
|
|
463
|
+
private extractIdentifier;
|
|
464
|
+
private extractIdentifiers;
|
|
465
|
+
private extractImportPath;
|
|
466
|
+
generateNodeId(node: ExtractedNode): string;
|
|
467
|
+
}
|
|
468
|
+
declare function createEdgeExtractor(): EdgeExtractor;
|
|
469
|
+
|
|
470
|
+
interface IndexerConfig {
|
|
471
|
+
workspaceDir: string;
|
|
472
|
+
batchSize: number;
|
|
473
|
+
ignorePatterns: string[];
|
|
474
|
+
incremental: boolean;
|
|
475
|
+
embedding: EmbeddingModelV3;
|
|
476
|
+
}
|
|
477
|
+
declare class Indexer {
|
|
478
|
+
private db;
|
|
479
|
+
private parserManager;
|
|
480
|
+
private nodeExtractor;
|
|
481
|
+
private edgeExtractor;
|
|
482
|
+
private config;
|
|
483
|
+
constructor(db: DatabaseManager, parserManager: ParserManager, config: IndexerConfig);
|
|
484
|
+
private generateNodeEmbeddingText;
|
|
485
|
+
private embedText;
|
|
486
|
+
indexFile(filePath: string, progress?: ProgressCallback): Promise<IndexResult>;
|
|
487
|
+
indexDirectory(dir?: string, progress?: ProgressCallback): Promise<IndexResult>;
|
|
488
|
+
sync(progress?: ProgressCallback): Promise<SyncResult>;
|
|
489
|
+
private scanFiles;
|
|
490
|
+
private readFile;
|
|
491
|
+
private computeHash;
|
|
492
|
+
private storeNodes;
|
|
493
|
+
private storeEdges;
|
|
494
|
+
private getValidEdgeCount;
|
|
495
|
+
private embedNodes;
|
|
496
|
+
private chunkArray;
|
|
497
|
+
}
|
|
498
|
+
declare function createIndexer(db: DatabaseManager, parserManager: ParserManager, config: IndexerConfig): Indexer;
|
|
499
|
+
|
|
500
|
+
declare class CodeBase implements ICodebase {
|
|
501
|
+
private config;
|
|
502
|
+
private db;
|
|
503
|
+
private parserManager;
|
|
504
|
+
private indexer;
|
|
505
|
+
private queryInterface;
|
|
506
|
+
private initialized;
|
|
507
|
+
constructor(config?: Partial<CodebaseConfig>);
|
|
508
|
+
initialize(): Promise<void>;
|
|
509
|
+
private validateConfig;
|
|
510
|
+
private resolveDbPath;
|
|
511
|
+
indexFile(filePath: string, progress?: ProgressCallback): Promise<IndexResult>;
|
|
512
|
+
indexDirectory(dir?: string, progress?: ProgressCallback): Promise<IndexResult>;
|
|
513
|
+
sync(progress?: ProgressCallback): Promise<SyncResult>;
|
|
514
|
+
search(query: string, options?: SearchOptions): Promise<NodeWithEdges[]>;
|
|
515
|
+
queryNodes(filter: NodeQueryFilter): Promise<Node[]>;
|
|
516
|
+
queryEdges(filter: EdgeQueryFilter): Promise<Edge[]>;
|
|
517
|
+
queryNeighbors(nodeId: string, options?: RelationQueryOptions): Promise<{
|
|
518
|
+
nodes: Node[];
|
|
519
|
+
edges: Edge[];
|
|
520
|
+
}>;
|
|
521
|
+
queryCallGraph(nodeId: string, depth?: number): Promise<Map<string, {
|
|
522
|
+
callers: string[];
|
|
523
|
+
callees: string[];
|
|
524
|
+
}>>;
|
|
525
|
+
queryInheritance(nodeId: string): Promise<{
|
|
526
|
+
ancestors: Node[];
|
|
527
|
+
descendants: Node[];
|
|
528
|
+
}>;
|
|
529
|
+
getNode(nodeId: string): Promise<Node | null>;
|
|
530
|
+
getEdge(edgeId: string): Promise<Edge | null>;
|
|
531
|
+
getStatus(): Promise<GraphStatus>;
|
|
532
|
+
healthCheck(): Promise<HealthCheckResult>;
|
|
533
|
+
clear(): Promise<void>;
|
|
534
|
+
close(): Promise<void>;
|
|
535
|
+
private ensureInitialized;
|
|
536
|
+
getDatabase(): DatabaseManager;
|
|
537
|
+
getParser(): ParserManager;
|
|
538
|
+
getQuery(): QueryInterface;
|
|
539
|
+
}
|
|
540
|
+
declare function createCodebase(config?: Partial<CodebaseConfig>): Promise<ICodebase>;
|
|
541
|
+
|
|
542
|
+
export { type ASTNodeType, CodeBase, type CodeKnowledgeGraphConfig, type CodebaseConfig, ConfigError, DatabaseError, DatabaseManager, type Edge, EdgeExtractor, type EdgeQueryFilter, type EdgeWithNodes, type ExtractedEdge, type ExtractedNode, FILE_EXTENSION_MAP, type FileHashRecord, FileSystemError, type GraphStatus, type HealthCheckResult, type HybridSearchResult, type ICodebase, type IEdgeExtractor, type INodeExtractor, type IParser, IndexError, type IndexResult, Indexer, type IndexerConfig, type Language, type Node, NodeExtractor, type NodeQueryFilter, type NodeWithEdges, ParserError, ParserManager, type ProgressCallback, QueryError, QueryInterface, type RelationQueryOptions, type RelationType, SchemaError, type SearchOptions, type SearchResult, type SyncResult, UnsupportedLanguageError, createCodebase, createEdgeExtractor, createIndexer, createNodeExtractor, createQueryInterface, getParserManager, resetParserManager };
|