codestrate 0.1.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 (120) hide show
  1. package/README.md +154 -0
  2. package/dist/constants.d.ts +40 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +145 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/index.d.ts +3 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +134 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/schemas/index.d.ts +260 -0
  11. package/dist/schemas/index.d.ts.map +1 -0
  12. package/dist/schemas/index.js +173 -0
  13. package/dist/schemas/index.js.map +1 -0
  14. package/dist/security/guard.d.ts +18 -0
  15. package/dist/security/guard.d.ts.map +1 -0
  16. package/dist/security/guard.js +39 -0
  17. package/dist/security/guard.js.map +1 -0
  18. package/dist/services/code-searcher.d.ts +22 -0
  19. package/dist/services/code-searcher.d.ts.map +1 -0
  20. package/dist/services/code-searcher.js +171 -0
  21. package/dist/services/code-searcher.js.map +1 -0
  22. package/dist/services/context-builder.d.ts +22 -0
  23. package/dist/services/context-builder.d.ts.map +1 -0
  24. package/dist/services/context-builder.js +232 -0
  25. package/dist/services/context-builder.js.map +1 -0
  26. package/dist/services/memory-store.d.ts +31 -0
  27. package/dist/services/memory-store.d.ts.map +1 -0
  28. package/dist/services/memory-store.js +27 -0
  29. package/dist/services/memory-store.js.map +1 -0
  30. package/dist/services/repository-parser.d.ts +8 -0
  31. package/dist/services/repository-parser.d.ts.map +1 -0
  32. package/dist/services/repository-parser.js +255 -0
  33. package/dist/services/repository-parser.js.map +1 -0
  34. package/dist/services/symbol-indexer.d.ts +16 -0
  35. package/dist/services/symbol-indexer.d.ts.map +1 -0
  36. package/dist/services/symbol-indexer.js +417 -0
  37. package/dist/services/symbol-indexer.js.map +1 -0
  38. package/dist/services/tree-sitter.d.ts +22 -0
  39. package/dist/services/tree-sitter.d.ts.map +1 -0
  40. package/dist/services/tree-sitter.js +269 -0
  41. package/dist/services/tree-sitter.js.map +1 -0
  42. package/dist/services/validation-runner.d.ts +30 -0
  43. package/dist/services/validation-runner.d.ts.map +1 -0
  44. package/dist/services/validation-runner.js +159 -0
  45. package/dist/services/validation-runner.js.map +1 -0
  46. package/dist/store/index.d.ts +23 -0
  47. package/dist/store/index.d.ts.map +1 -0
  48. package/dist/store/index.js +93 -0
  49. package/dist/store/index.js.map +1 -0
  50. package/dist/store/interface.d.ts +73 -0
  51. package/dist/store/interface.d.ts.map +1 -0
  52. package/dist/store/interface.js +9 -0
  53. package/dist/store/interface.js.map +1 -0
  54. package/dist/store/memory.d.ts +21 -0
  55. package/dist/store/memory.d.ts.map +1 -0
  56. package/dist/store/memory.js +157 -0
  57. package/dist/store/memory.js.map +1 -0
  58. package/dist/store/sqlite.d.ts +95 -0
  59. package/dist/store/sqlite.d.ts.map +1 -0
  60. package/dist/store/sqlite.js +1018 -0
  61. package/dist/store/sqlite.js.map +1 -0
  62. package/dist/tools/analyze-impact.d.ts +3 -0
  63. package/dist/tools/analyze-impact.d.ts.map +1 -0
  64. package/dist/tools/analyze-impact.js +110 -0
  65. package/dist/tools/analyze-impact.js.map +1 -0
  66. package/dist/tools/explore.d.ts +3 -0
  67. package/dist/tools/explore.d.ts.map +1 -0
  68. package/dist/tools/explore.js +96 -0
  69. package/dist/tools/explore.js.map +1 -0
  70. package/dist/tools/get-context.d.ts +3 -0
  71. package/dist/tools/get-context.d.ts.map +1 -0
  72. package/dist/tools/get-context.js +82 -0
  73. package/dist/tools/get-context.js.map +1 -0
  74. package/dist/tools/inspect-symbol.d.ts +3 -0
  75. package/dist/tools/inspect-symbol.d.ts.map +1 -0
  76. package/dist/tools/inspect-symbol.js +146 -0
  77. package/dist/tools/inspect-symbol.js.map +1 -0
  78. package/dist/tools/recall-experience.d.ts +3 -0
  79. package/dist/tools/recall-experience.d.ts.map +1 -0
  80. package/dist/tools/recall-experience.js +141 -0
  81. package/dist/tools/recall-experience.js.map +1 -0
  82. package/dist/tools/record-experience.d.ts +6 -0
  83. package/dist/tools/record-experience.d.ts.map +1 -0
  84. package/dist/tools/record-experience.js +68 -0
  85. package/dist/tools/record-experience.js.map +1 -0
  86. package/dist/tools/reindex.d.ts +8 -0
  87. package/dist/tools/reindex.d.ts.map +1 -0
  88. package/dist/tools/reindex.js +74 -0
  89. package/dist/tools/reindex.js.map +1 -0
  90. package/dist/tools/repo-overview.d.ts +7 -0
  91. package/dist/tools/repo-overview.d.ts.map +1 -0
  92. package/dist/tools/repo-overview.js +102 -0
  93. package/dist/tools/repo-overview.js.map +1 -0
  94. package/dist/tools/run-validation.d.ts +6 -0
  95. package/dist/tools/run-validation.d.ts.map +1 -0
  96. package/dist/tools/run-validation.js +115 -0
  97. package/dist/tools/run-validation.js.map +1 -0
  98. package/dist/tools/search-code.d.ts +3 -0
  99. package/dist/tools/search-code.d.ts.map +1 -0
  100. package/dist/tools/search-code.js +98 -0
  101. package/dist/tools/search-code.js.map +1 -0
  102. package/dist/tools/search-history.d.ts +6 -0
  103. package/dist/tools/search-history.d.ts.map +1 -0
  104. package/dist/tools/search-history.js +69 -0
  105. package/dist/tools/search-history.js.map +1 -0
  106. package/dist/tools/status.d.ts +7 -0
  107. package/dist/tools/status.d.ts.map +1 -0
  108. package/dist/tools/status.js +98 -0
  109. package/dist/tools/status.js.map +1 -0
  110. package/dist/tools/trace-flow.d.ts +3 -0
  111. package/dist/tools/trace-flow.d.ts.map +1 -0
  112. package/dist/tools/trace-flow.js +155 -0
  113. package/dist/tools/trace-flow.js.map +1 -0
  114. package/dist/types.d.ts +182 -0
  115. package/dist/types.d.ts.map +1 -0
  116. package/dist/types.js +17 -0
  117. package/dist/types.js.map +1 -0
  118. package/grammars/tree-sitter-python.wasm +0 -0
  119. package/grammars/tree-sitter-typescript.wasm +0 -0
  120. package/package.json +48 -0
@@ -0,0 +1,417 @@
1
+ import { initTreeSitter, isReady, parseCode, } from "./tree-sitter.js";
2
+ /**
3
+ * Symbol Indexer — dual-mode symbol extraction.
4
+ *
5
+ * Uses tree-sitter WASM (accurate AST) for TypeScript and Python,
6
+ * falls back to regex patterns for all other languages.
7
+ */
8
+ import { readFileSync } from "fs";
9
+ import { join, resolve } from "path";
10
+ // ─── Language-specific parsers ───────────────────────────
11
+ const LANGUAGE_PARSERS = {
12
+ typescript: {
13
+ patterns: [
14
+ // Classes
15
+ /(?:export\s+)?(?:abstract\s+)?class\s+(\w+)(?:<[^>]*>)?(?:\s+extends\s+\w+)?(?:\s+implements\s+[\w,\s]+)?\s*\{/g,
16
+ // Interfaces
17
+ /(?:export\s+)?interface\s+(\w+)(?:<[^>]*>)?(?:\s+extends\s+[\w,\s]+)?\s*\{/g,
18
+ // Functions
19
+ /(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(/g,
20
+ // Arrow functions in variables
21
+ /(?:export\s+)?(?:const|let|var)\s+(\w+)\s*(?::\s*[\w<>[\],\s|&]+)?\s*=\s*(?:async\s+)?(?:\([^)]*\)|\w+)\s*=>/g,
22
+ // Methods
23
+ /(?:public|private|protected|static)?\s*(?:async\s+)?(\w+)\s*\([^)]*\)\s*:\s*[\w<>[\],\s|&]+/g,
24
+ // Enum
25
+ /(?:export\s+)?enum\s+(\w+)\s*\{/g,
26
+ // Type aliases
27
+ /(?:export\s+)?type\s+(\w+)\s*=/g,
28
+ // Module/namespace
29
+ /(?:export\s+)?(?:module|namespace)\s+(\w+)\s*\{/g,
30
+ // Constructor
31
+ /constructor\s*\(/g,
32
+ // Decorated class
33
+ /@\w+\s*\n\s*(?:export\s+)?class\s+(\w+)/g,
34
+ ],
35
+ kindFor: (name, pattern) => {
36
+ if (pattern.includes("class"))
37
+ return "class";
38
+ if (pattern.includes("interface"))
39
+ return "interface";
40
+ if (pattern.includes("function") || pattern.includes("=>"))
41
+ return "function";
42
+ if (pattern.includes("type"))
43
+ return "type";
44
+ if (pattern.includes("enum"))
45
+ return "enum";
46
+ if (pattern.includes("module") || pattern.includes("namespace"))
47
+ return "module";
48
+ if (pattern.includes("constructor"))
49
+ return "method";
50
+ return "method";
51
+ },
52
+ },
53
+ javascript: {
54
+ patterns: [
55
+ /(?:export\s+)?class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/g,
56
+ /(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(/g,
57
+ /(?:export\s+)?(?:const|let|var)\s+(\w+)\s*=\s*(?:async\s+)?(?:\([^)]*\)|\w+)\s*=>/g,
58
+ /(?:prototype\.)?(\w+)\s*=\s*function\s*\(/g,
59
+ ],
60
+ kindFor: (name, pattern) => {
61
+ if (pattern.includes("class"))
62
+ return "class";
63
+ if (pattern.includes("function") || pattern.includes("=>"))
64
+ return "function";
65
+ return "function";
66
+ },
67
+ },
68
+ python: {
69
+ patterns: [
70
+ /class\s+(\w+)(?:\([^)]*\))?\s*:/g,
71
+ /(?:async\s+)?def\s+(\w+)\s*\(/g,
72
+ /@(\w+)\s*\n\s*def\s+(\w+)\s*\(/g, // decorator + function
73
+ ],
74
+ kindFor: (_name, pattern) => {
75
+ if (pattern.includes("class"))
76
+ return "class";
77
+ return "function";
78
+ },
79
+ },
80
+ java: {
81
+ patterns: [
82
+ /(?:public|private|protected|static|abstract|final)\s+class\s+(\w+)/g,
83
+ /(?:public|private|protected|static|abstract|final)?\s*interface\s+(\w+)/g,
84
+ /(?:public|private|protected|static)?\s*(?:<\w+>)?\s*\w+\s+(\w+)\s*\([^)]*\)\s*(?:throws\s+\w+)?\s*\{/g,
85
+ /enum\s+(\w+)\s*\{/g,
86
+ /@interface\s+(\w+)/g,
87
+ ],
88
+ kindFor: (_name, pattern) => {
89
+ if (pattern.includes("class"))
90
+ return "class";
91
+ if (pattern.includes("interface"))
92
+ return "interface";
93
+ if (pattern.includes("enum"))
94
+ return "enum";
95
+ return "method";
96
+ },
97
+ },
98
+ rust: {
99
+ patterns: [
100
+ /(?:pub\s+)?(?:struct|enum)\s+(\w+)/g,
101
+ /(?:pub\s+)?(?:trait|impl)\s+(\w+)/g,
102
+ /(?:pub\s+)?(?:async\s+)?fn\s+(\w+)/g,
103
+ /(?:pub\s+)?type\s+(\w+)/g,
104
+ /(?:pub\s+)?const\s+(\w+)/g,
105
+ /(?:pub\s+)?macro_rules!\s+(\w+)/g,
106
+ ],
107
+ kindFor: (_name, pattern) => {
108
+ if (pattern.includes("struct"))
109
+ return "class";
110
+ if (pattern.includes("enum"))
111
+ return "enum";
112
+ if (pattern.includes("trait") || pattern.includes("impl"))
113
+ return "interface";
114
+ if (pattern.includes("fn"))
115
+ return "function";
116
+ if (pattern.includes("type"))
117
+ return "type";
118
+ if (pattern.includes("const"))
119
+ return "variable";
120
+ return "unknown";
121
+ },
122
+ },
123
+ go: {
124
+ patterns: [
125
+ /type\s+(\w+)\s+struct\s*\{/g,
126
+ /type\s+(\w+)\s+interface\s*\{/g,
127
+ /func\s+(?:\w+\.)?(\w+)\s*\(/g,
128
+ /type\s+(\w+)\s+[\w[\]]+/g,
129
+ ],
130
+ kindFor: (_name, pattern) => {
131
+ if (pattern.includes("struct"))
132
+ return "class";
133
+ if (pattern.includes("interface"))
134
+ return "interface";
135
+ if (pattern.includes("func"))
136
+ return "function";
137
+ return "type";
138
+ },
139
+ },
140
+ csharp: {
141
+ patterns: [
142
+ /(?:public|private|protected|internal|static|abstract|sealed)?\s*class\s+(\w+)/g,
143
+ /(?:public|private|protected|internal)?\s*interface\s+(\w+)/g,
144
+ /(?:public|private|protected|internal|static)?\s*(?:async\s+)?\w+[?]?\s+(\w+)\s*\([^)]*\)/g,
145
+ /(?:public|private|protected|internal)?\s*enum\s+(\w+)/g,
146
+ /record\s+(\w+)/g,
147
+ ],
148
+ kindFor: (_name, pattern) => {
149
+ if (pattern.includes("class"))
150
+ return "class";
151
+ if (pattern.includes("interface"))
152
+ return "interface";
153
+ if (pattern.includes("enum"))
154
+ return "enum";
155
+ if (pattern.includes("record"))
156
+ return "class";
157
+ return "method";
158
+ },
159
+ },
160
+ };
161
+ // Generic fallback parser for unlisted languages
162
+ const GENERIC_PATTERNS = [
163
+ { pattern: /class\s+(\w+)/g, kind: "class" },
164
+ { pattern: /function\s+(\w+)\s*\(/g, kind: "function" },
165
+ { pattern: /(\w+)\s*\([^)]*\)\s*\{/g, kind: "method" },
166
+ { pattern: /interface\s+(\w+)/g, kind: "interface" },
167
+ { pattern: /enum\s+(\w+)/g, kind: "enum" },
168
+ ];
169
+ // ─── Main indexer ────────────────────────────────────────
170
+ export async function indexSymbols(opts) {
171
+ // Warm up tree-sitter — await so first index uses AST when available
172
+ await initTreeSitter().catch(() => { });
173
+ const useTS = isReady();
174
+ const symbols = [];
175
+ const relations = [];
176
+ const importGraph = new Map();
177
+ for (const file of opts.files) {
178
+ const parser = LANGUAGE_PERS[file.language];
179
+ // Try tree-sitter for supported languages
180
+ if (useTS || file.language === "typescript" || file.language === "python") {
181
+ const tsResult = parseWithTreeSitter(file, opts);
182
+ if (tsResult) {
183
+ symbols.push(...tsResult.symbols);
184
+ if (tsResult.imports.size > 0) {
185
+ importGraph.set(file.path, tsResult.imports);
186
+ }
187
+ continue;
188
+ }
189
+ }
190
+ // Fallback: regex parser
191
+ if (!parser) {
192
+ const genericSymbols = parseGenerically(file, opts);
193
+ symbols.push(...genericSymbols);
194
+ continue;
195
+ }
196
+ const fileSymbols = parseLanguage(file, parser, opts);
197
+ symbols.push(...fileSymbols);
198
+ const imports = extractImports(file, file.language);
199
+ importGraph.set(file.path, imports);
200
+ }
201
+ // Build relation graph from imports
202
+ for (const [file, importedFiles] of importGraph) {
203
+ for (const imported of importedFiles) {
204
+ const importedSymbol = symbols.find(s => s.file.includes(imported) || imported.includes(s.file));
205
+ if (importedSymbol) {
206
+ relations.push({
207
+ source: findPrimarySymbol(symbols, file)?.name || file,
208
+ target: importedSymbol.name,
209
+ kind: "imports",
210
+ });
211
+ }
212
+ }
213
+ }
214
+ return { symbols, relations };
215
+ }
216
+ /** Parse one file with tree-sitter — returns null if not applicable. */
217
+ function parseWithTreeSitter(file, opts) {
218
+ // Map language to tree-sitter grammar name
219
+ const langMap = {
220
+ typescript: "typescript",
221
+ python: "python",
222
+ };
223
+ const grammarName = langMap[file.language];
224
+ if (!grammarName)
225
+ return null;
226
+ const fullPath = join(opts.repoPath, file.path);
227
+ let content;
228
+ try {
229
+ content = readFileSync(fullPath, "utf-8");
230
+ }
231
+ catch {
232
+ return null;
233
+ }
234
+ const result = parseCode(grammarName, content);
235
+ if (!result || result.symbols.length === 0)
236
+ return null;
237
+ const symbols = result.symbols.map(s => ({
238
+ name: s.name,
239
+ kind: s.kind,
240
+ file: file.path,
241
+ line: s.line,
242
+ column: s.column,
243
+ signature: s.signature,
244
+ summary: s.summary,
245
+ imports: [],
246
+ calls: [],
247
+ calledBy: [],
248
+ relatedTests: [],
249
+ commitSha: opts.commitSha,
250
+ repoFingerprint: opts.repoFingerprint,
251
+ }));
252
+ return {
253
+ symbols,
254
+ imports: new Set(result.imports),
255
+ };
256
+ }
257
+ const LANGUAGE_PERS = LANGUAGE_PARSERS;
258
+ function parseLanguage(file, parser, opts) {
259
+ const symbols = [];
260
+ const fullPath = join(opts.repoPath, file.path);
261
+ let content;
262
+ try {
263
+ content = readFileSync(fullPath, "utf-8");
264
+ }
265
+ catch {
266
+ return [];
267
+ }
268
+ const lines = content.split("\n");
269
+ for (const pattern of parser.patterns) {
270
+ // We need to reset lastIndex for each pattern
271
+ pattern.lastIndex = 0;
272
+ let match;
273
+ while ((match = pattern.exec(content)) !== null) {
274
+ // The name might be in group 1 or 2 depending on pattern
275
+ const name = match[match.length - 1]; // last capture group
276
+ if (!name)
277
+ continue;
278
+ const lineNum = getLineNumber(content, match.index) + 1;
279
+ const lineText = lines[lineNum - 1]?.trim() || "";
280
+ const kind = parser.kindFor(name, match[0]);
281
+ const sigEnd = findSignatureEnd(content, match.index);
282
+ const signature = content.substring(match.index, sigEnd).trim().split("\n")[0] || lineText;
283
+ symbols.push({
284
+ name,
285
+ kind,
286
+ file: file.path,
287
+ line: lineNum,
288
+ column: match.index - content.lastIndexOf("\n", match.index) - 1,
289
+ signature,
290
+ summary: lineText,
291
+ imports: extractImportsFromLine(lineText),
292
+ calls: [],
293
+ calledBy: [],
294
+ relatedTests: [],
295
+ commitSha: opts.commitSha,
296
+ repoFingerprint: opts.repoFingerprint,
297
+ });
298
+ }
299
+ }
300
+ return symbols;
301
+ }
302
+ function parseGenerically(file, opts) {
303
+ const symbols = [];
304
+ const fullPath = join(opts.repoPath, file.path);
305
+ let content;
306
+ try {
307
+ content = readFileSync(fullPath, "utf-8");
308
+ }
309
+ catch {
310
+ return [];
311
+ }
312
+ const lines = content.split("\n");
313
+ for (const { pattern, kind } of GENERIC_PATTERNS) {
314
+ pattern.lastIndex = 0;
315
+ let match;
316
+ while ((match = pattern.exec(content)) !== null) {
317
+ const name = match[1];
318
+ if (!name)
319
+ continue;
320
+ const lineNum = getLineNumber(content, match.index) + 1;
321
+ symbols.push({
322
+ name,
323
+ kind,
324
+ file: file.path,
325
+ line: lineNum,
326
+ column: 0,
327
+ signature: match[0],
328
+ summary: lines[lineNum - 1]?.trim() || "",
329
+ imports: [],
330
+ calls: [],
331
+ calledBy: [],
332
+ relatedTests: [],
333
+ commitSha: opts.commitSha,
334
+ repoFingerprint: opts.repoFingerprint,
335
+ });
336
+ }
337
+ }
338
+ return symbols;
339
+ }
340
+ function extractImports(file, _language) {
341
+ const imports = new Set();
342
+ const fullPath = resolve(file.path);
343
+ let content;
344
+ try {
345
+ content = readFileSync(fullPath, "utf-8");
346
+ }
347
+ catch {
348
+ return imports;
349
+ }
350
+ // Common import patterns
351
+ const importPatterns = [
352
+ // TS/JS
353
+ /from\s+['"](\.[^'"]+)['"]/g,
354
+ /import\s+['"](\.[^'"]+)['"]/g,
355
+ // Python
356
+ /(?:from|import)\s+(\S+)/g,
357
+ // Java
358
+ /import\s+(\S+)/g,
359
+ // Rust
360
+ /use\s+(\S+)/g,
361
+ // Go
362
+ /"([^"]+)"/g,
363
+ ];
364
+ for (const pat of importPatterns) {
365
+ pat.lastIndex = 0;
366
+ let m;
367
+ while ((m = pat.exec(content)) !== null) {
368
+ imports.add(m[1]);
369
+ }
370
+ }
371
+ return imports;
372
+ }
373
+ function extractImportsFromLine(line) {
374
+ const imports = [];
375
+ const match = line.match(/from\s+['"]([^'"]+)['"]/);
376
+ if (match)
377
+ imports.push(match[1]);
378
+ const importMatch = line.match(/import\s+(?:\{[^}]*\}\s+from\s+)?['"]([^'"]+)['"]/);
379
+ if (importMatch)
380
+ imports.push(importMatch[1]);
381
+ return imports;
382
+ }
383
+ function getLineNumber(content, index) {
384
+ return content.substring(0, index).split("\n").length - 1;
385
+ }
386
+ function findSignatureEnd(content, start) {
387
+ let depth = 0;
388
+ let inString = false;
389
+ let stringChar = "";
390
+ for (let i = start; i < content.length; i++) {
391
+ const ch = content[i];
392
+ if (inString) {
393
+ if (ch === stringChar && content[i - 1] !== "\\")
394
+ inString = false;
395
+ continue;
396
+ }
397
+ if (ch === '"' || ch === "'" || ch === "`") {
398
+ inString = true;
399
+ stringChar = ch;
400
+ continue;
401
+ }
402
+ if (ch === "(")
403
+ depth++;
404
+ if (ch === ")") {
405
+ depth--;
406
+ if (depth < 0)
407
+ return i + 1;
408
+ }
409
+ if (ch === "{" && depth === 0)
410
+ return i;
411
+ }
412
+ return content.length;
413
+ }
414
+ function findPrimarySymbol(symbols, file) {
415
+ return symbols.find(s => s.file === file && (s.kind === "class" || s.kind === "interface" || s.kind === "module"));
416
+ }
417
+ //# sourceMappingURL=symbol-indexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-indexer.js","sourceRoot":"","sources":["../../src/services/symbol-indexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { SymbolKind } from "../types.js";
2
+ /** Kết quả parse 1 symbol. */
3
+ export interface ParsedSymbol {
4
+ name: string;
5
+ kind: SymbolKind;
6
+ line: number;
7
+ column: number;
8
+ signature: string;
9
+ summary: string;
10
+ }
11
+ export interface ParseResult {
12
+ symbols: ParsedSymbol[];
13
+ imports: string[];
14
+ }
15
+ export declare function initTreeSitter(): Promise<void>;
16
+ /** True if at least one grammar loaded successfully. */
17
+ export declare function isReady(): boolean;
18
+ /** Languages available for tree-sitter parsing. */
19
+ export declare function availableLanguages(): string[];
20
+ /** Parse code with tree-sitter — returns null if language or init unavailable. */
21
+ export declare function parseCode(language: string, code: string): ParseResult | null;
22
+ //# sourceMappingURL=tree-sitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-sitter.d.ts","sourceRoot":"","sources":["../../src/services/tree-sitter.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,aAAa,CAAC;AAI1D,8BAA8B;AAC9B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAsCD,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CASpD;AAED,wDAAwD;AACxD,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED,mDAAmD;AACnD,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAyND,kFAAkF;AAClF,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,WAAW,GAAG,IAAI,CAcpB"}