codesift-mcp 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 (177) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +241 -0
  3. package/dist/cli/args.d.ts +13 -0
  4. package/dist/cli/args.d.ts.map +1 -0
  5. package/dist/cli/args.js +79 -0
  6. package/dist/cli/args.js.map +1 -0
  7. package/dist/cli/commands.d.ts +4 -0
  8. package/dist/cli/commands.d.ts.map +1 -0
  9. package/dist/cli/commands.js +336 -0
  10. package/dist/cli/commands.js.map +1 -0
  11. package/dist/cli/help.d.ts +3 -0
  12. package/dist/cli/help.d.ts.map +1 -0
  13. package/dist/cli/help.js +271 -0
  14. package/dist/cli/help.js.map +1 -0
  15. package/dist/cli.d.ts +3 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +80 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/config.d.ts +23 -0
  20. package/dist/config.d.ts.map +1 -0
  21. package/dist/config.js +49 -0
  22. package/dist/config.js.map +1 -0
  23. package/dist/parser/extractors/go.d.ts +4 -0
  24. package/dist/parser/extractors/go.d.ts.map +1 -0
  25. package/dist/parser/extractors/go.js +185 -0
  26. package/dist/parser/extractors/go.js.map +1 -0
  27. package/dist/parser/extractors/javascript.d.ts +9 -0
  28. package/dist/parser/extractors/javascript.d.ts.map +1 -0
  29. package/dist/parser/extractors/javascript.js +10 -0
  30. package/dist/parser/extractors/javascript.js.map +1 -0
  31. package/dist/parser/extractors/markdown.d.ts +15 -0
  32. package/dist/parser/extractors/markdown.d.ts.map +1 -0
  33. package/dist/parser/extractors/markdown.js +217 -0
  34. package/dist/parser/extractors/markdown.js.map +1 -0
  35. package/dist/parser/extractors/prisma.d.ts +17 -0
  36. package/dist/parser/extractors/prisma.d.ts.map +1 -0
  37. package/dist/parser/extractors/prisma.js +121 -0
  38. package/dist/parser/extractors/prisma.js.map +1 -0
  39. package/dist/parser/extractors/python.d.ts +4 -0
  40. package/dist/parser/extractors/python.d.ts.map +1 -0
  41. package/dist/parser/extractors/python.js +203 -0
  42. package/dist/parser/extractors/python.js.map +1 -0
  43. package/dist/parser/extractors/rust.d.ts +4 -0
  44. package/dist/parser/extractors/rust.d.ts.map +1 -0
  45. package/dist/parser/extractors/rust.js +178 -0
  46. package/dist/parser/extractors/rust.js.map +1 -0
  47. package/dist/parser/extractors/typescript.d.ts +4 -0
  48. package/dist/parser/extractors/typescript.d.ts.map +1 -0
  49. package/dist/parser/extractors/typescript.js +296 -0
  50. package/dist/parser/extractors/typescript.js.map +1 -0
  51. package/dist/parser/languages/tree-sitter-css.wasm +0 -0
  52. package/dist/parser/languages/tree-sitter-go.wasm +0 -0
  53. package/dist/parser/languages/tree-sitter-java.wasm +0 -0
  54. package/dist/parser/languages/tree-sitter-javascript.wasm +0 -0
  55. package/dist/parser/languages/tree-sitter-json.wasm +0 -0
  56. package/dist/parser/languages/tree-sitter-php.wasm +0 -0
  57. package/dist/parser/languages/tree-sitter-python.wasm +0 -0
  58. package/dist/parser/languages/tree-sitter-ruby.wasm +0 -0
  59. package/dist/parser/languages/tree-sitter-rust.wasm +0 -0
  60. package/dist/parser/languages/tree-sitter-tsx.wasm +0 -0
  61. package/dist/parser/languages/tree-sitter-typescript.wasm +0 -0
  62. package/dist/parser/parser-manager.d.ts +6 -0
  63. package/dist/parser/parser-manager.d.ts.map +1 -0
  64. package/dist/parser/parser-manager.js +60 -0
  65. package/dist/parser/parser-manager.js.map +1 -0
  66. package/dist/parser/symbol-extractor.d.ts +22 -0
  67. package/dist/parser/symbol-extractor.d.ts.map +1 -0
  68. package/dist/parser/symbol-extractor.js +115 -0
  69. package/dist/parser/symbol-extractor.js.map +1 -0
  70. package/dist/retrieval/codebase-retrieval.d.ts +27 -0
  71. package/dist/retrieval/codebase-retrieval.d.ts.map +1 -0
  72. package/dist/retrieval/codebase-retrieval.js +472 -0
  73. package/dist/retrieval/codebase-retrieval.js.map +1 -0
  74. package/dist/search/bm25.d.ts +22 -0
  75. package/dist/search/bm25.d.ts.map +1 -0
  76. package/dist/search/bm25.js +179 -0
  77. package/dist/search/bm25.js.map +1 -0
  78. package/dist/search/chunker.d.ts +9 -0
  79. package/dist/search/chunker.d.ts.map +1 -0
  80. package/dist/search/chunker.js +91 -0
  81. package/dist/search/chunker.js.map +1 -0
  82. package/dist/search/hybrid.d.ts +16 -0
  83. package/dist/search/hybrid.d.ts.map +1 -0
  84. package/dist/search/hybrid.js +51 -0
  85. package/dist/search/hybrid.js.map +1 -0
  86. package/dist/search/semantic.d.ts +44 -0
  87. package/dist/search/semantic.d.ts.map +1 -0
  88. package/dist/search/semantic.js +194 -0
  89. package/dist/search/semantic.js.map +1 -0
  90. package/dist/server.d.ts +2 -0
  91. package/dist/server.d.ts.map +1 -0
  92. package/dist/server.js +285 -0
  93. package/dist/server.js.map +1 -0
  94. package/dist/storage/chunk-store.d.ts +32 -0
  95. package/dist/storage/chunk-store.d.ts.map +1 -0
  96. package/dist/storage/chunk-store.js +144 -0
  97. package/dist/storage/chunk-store.js.map +1 -0
  98. package/dist/storage/embedding-store.d.ts +41 -0
  99. package/dist/storage/embedding-store.d.ts.map +1 -0
  100. package/dist/storage/embedding-store.js +149 -0
  101. package/dist/storage/embedding-store.js.map +1 -0
  102. package/dist/storage/index-store.d.ts +23 -0
  103. package/dist/storage/index-store.d.ts.map +1 -0
  104. package/dist/storage/index-store.js +95 -0
  105. package/dist/storage/index-store.js.map +1 -0
  106. package/dist/storage/registry.d.ts +35 -0
  107. package/dist/storage/registry.d.ts.map +1 -0
  108. package/dist/storage/registry.js +99 -0
  109. package/dist/storage/registry.js.map +1 -0
  110. package/dist/storage/usage-stats.d.ts +32 -0
  111. package/dist/storage/usage-stats.d.ts.map +1 -0
  112. package/dist/storage/usage-stats.js +180 -0
  113. package/dist/storage/usage-stats.js.map +1 -0
  114. package/dist/storage/usage-tracker.d.ts +35 -0
  115. package/dist/storage/usage-tracker.d.ts.map +1 -0
  116. package/dist/storage/usage-tracker.js +245 -0
  117. package/dist/storage/usage-tracker.js.map +1 -0
  118. package/dist/storage/watcher.d.ts +12 -0
  119. package/dist/storage/watcher.d.ts.map +1 -0
  120. package/dist/storage/watcher.js +66 -0
  121. package/dist/storage/watcher.js.map +1 -0
  122. package/dist/tools/context-tools.d.ts +31 -0
  123. package/dist/tools/context-tools.d.ts.map +1 -0
  124. package/dist/tools/context-tools.js +219 -0
  125. package/dist/tools/context-tools.js.map +1 -0
  126. package/dist/tools/diff-tools.d.ts +22 -0
  127. package/dist/tools/diff-tools.d.ts.map +1 -0
  128. package/dist/tools/diff-tools.js +165 -0
  129. package/dist/tools/diff-tools.js.map +1 -0
  130. package/dist/tools/generate-tools.d.ts +11 -0
  131. package/dist/tools/generate-tools.d.ts.map +1 -0
  132. package/dist/tools/generate-tools.js +135 -0
  133. package/dist/tools/generate-tools.js.map +1 -0
  134. package/dist/tools/graph-tools.d.ts +60 -0
  135. package/dist/tools/graph-tools.d.ts.map +1 -0
  136. package/dist/tools/graph-tools.js +313 -0
  137. package/dist/tools/graph-tools.js.map +1 -0
  138. package/dist/tools/index-tools.d.ts +39 -0
  139. package/dist/tools/index-tools.d.ts.map +1 -0
  140. package/dist/tools/index-tools.js +451 -0
  141. package/dist/tools/index-tools.js.map +1 -0
  142. package/dist/tools/outline-tools.d.ts +59 -0
  143. package/dist/tools/outline-tools.d.ts.map +1 -0
  144. package/dist/tools/outline-tools.js +342 -0
  145. package/dist/tools/outline-tools.js.map +1 -0
  146. package/dist/tools/search-tools.d.ts +29 -0
  147. package/dist/tools/search-tools.d.ts.map +1 -0
  148. package/dist/tools/search-tools.js +309 -0
  149. package/dist/tools/search-tools.js.map +1 -0
  150. package/dist/tools/symbol-tools.d.ts +24 -0
  151. package/dist/tools/symbol-tools.d.ts.map +1 -0
  152. package/dist/tools/symbol-tools.js +172 -0
  153. package/dist/tools/symbol-tools.js.map +1 -0
  154. package/dist/types.d.ts +91 -0
  155. package/dist/types.d.ts.map +1 -0
  156. package/dist/types.js +3 -0
  157. package/dist/types.js.map +1 -0
  158. package/dist/utils/git-validation.d.ts +11 -0
  159. package/dist/utils/git-validation.d.ts.map +1 -0
  160. package/dist/utils/git-validation.js +19 -0
  161. package/dist/utils/git-validation.js.map +1 -0
  162. package/dist/utils/test-file.d.ts +11 -0
  163. package/dist/utils/test-file.d.ts.map +1 -0
  164. package/dist/utils/test-file.js +27 -0
  165. package/dist/utils/test-file.js.map +1 -0
  166. package/package.json +62 -0
  167. package/src/parser/languages/tree-sitter-css.wasm +0 -0
  168. package/src/parser/languages/tree-sitter-go.wasm +0 -0
  169. package/src/parser/languages/tree-sitter-java.wasm +0 -0
  170. package/src/parser/languages/tree-sitter-javascript.wasm +0 -0
  171. package/src/parser/languages/tree-sitter-json.wasm +0 -0
  172. package/src/parser/languages/tree-sitter-php.wasm +0 -0
  173. package/src/parser/languages/tree-sitter-python.wasm +0 -0
  174. package/src/parser/languages/tree-sitter-ruby.wasm +0 -0
  175. package/src/parser/languages/tree-sitter-rust.wasm +0 -0
  176. package/src/parser/languages/tree-sitter-tsx.wasm +0 -0
  177. package/src/parser/languages/tree-sitter-typescript.wasm +0 -0
@@ -0,0 +1,296 @@
1
+ import { tokenizeIdentifier, makeSymbolId } from "../symbol-extractor.js";
2
+ const MAX_SOURCE_LENGTH = 5000;
3
+ /** Matches top-level SCREAMING_CASE identifiers like MAX_RETRIES, API_URL */
4
+ const SCREAMING_CASE_RE = /^[A-Z][A-Z0-9_]+$/;
5
+ /** Test lifecycle hook names */
6
+ const TEST_HOOK_NAMES = new Set([
7
+ "beforeEach", "afterEach", "beforeAll", "afterAll",
8
+ ]);
9
+ /** Method suffixes on it/test that are still test_case (it.skip, it.each, etc.) */
10
+ const TEST_CASE_METHODS = new Set([
11
+ "skip", "todo", "each", "only", "failing", "concurrent",
12
+ ]);
13
+ /** Method suffixes on describe that are still test_suite */
14
+ const TEST_SUITE_METHODS = new Set([
15
+ "skip", "only", "each",
16
+ ]);
17
+ function parseTestCallee(callExpr) {
18
+ const fn = callExpr.childForFieldName("function");
19
+ if (!fn)
20
+ return null;
21
+ // Simple call: describe(...), it(...), test(...), beforeEach(...)
22
+ if (fn.type === "identifier") {
23
+ return { base: fn.text, method: null };
24
+ }
25
+ // Member call: it.skip(...), it.todo(...), describe.only(...)
26
+ if (fn.type === "member_expression") {
27
+ const obj = fn.childForFieldName("object");
28
+ const prop = fn.childForFieldName("property");
29
+ if (obj?.type === "identifier" && prop) {
30
+ return { base: obj.text, method: prop.text };
31
+ }
32
+ }
33
+ // Chained call: it.each([...])("name", fn)
34
+ // The outer call_expression has a call_expression child as callee
35
+ if (fn.type === "call_expression") {
36
+ const innerFn = fn.childForFieldName("function");
37
+ if (innerFn?.type === "member_expression") {
38
+ const obj = innerFn.childForFieldName("object");
39
+ const prop = innerFn.childForFieldName("property");
40
+ if (obj?.type === "identifier" && prop) {
41
+ return { base: obj.text, method: prop.text };
42
+ }
43
+ }
44
+ }
45
+ return null;
46
+ }
47
+ // --- Helpers ---
48
+ function getNodeName(node) {
49
+ const nameNode = node.childForFieldName("name");
50
+ return nameNode?.text ?? null;
51
+ }
52
+ function getDocstring(node, source) {
53
+ const prev = node.previousNamedSibling;
54
+ if (!prev)
55
+ return undefined;
56
+ if (prev.type === "comment") {
57
+ const text = source.slice(prev.startIndex, prev.endIndex);
58
+ // JSDoc: /** ... */ or line comment: // ...
59
+ if (text.startsWith("/**") || text.startsWith("//")) {
60
+ return text;
61
+ }
62
+ }
63
+ return undefined;
64
+ }
65
+ function getSignature(node, source) {
66
+ const params = node.childForFieldName("parameters");
67
+ if (!params)
68
+ return undefined;
69
+ let sig = source.slice(params.startIndex, params.endIndex);
70
+ const returnType = node.childForFieldName("return_type");
71
+ if (returnType) {
72
+ sig += ": " + source.slice(returnType.startIndex, returnType.endIndex);
73
+ }
74
+ return sig;
75
+ }
76
+ function extractNodeSource(node, source) {
77
+ const text = source.slice(node.startIndex, node.endIndex);
78
+ if (text.length > MAX_SOURCE_LENGTH) {
79
+ return text.slice(0, MAX_SOURCE_LENGTH) + "...";
80
+ }
81
+ return text;
82
+ }
83
+ function makeSymbol(node, name, kind, filePath, source, repo, parentId) {
84
+ const startLine = node.startPosition.row + 1;
85
+ const endLine = node.endPosition.row + 1;
86
+ const docstring = getDocstring(node, source);
87
+ const sym = {
88
+ id: makeSymbolId(repo, filePath, name, startLine),
89
+ repo,
90
+ name,
91
+ kind,
92
+ file: filePath,
93
+ start_line: startLine,
94
+ end_line: endLine,
95
+ source: extractNodeSource(node, source),
96
+ tokens: tokenizeIdentifier(name),
97
+ };
98
+ if (docstring)
99
+ sym.docstring = docstring;
100
+ if (parentId)
101
+ sym.parent = parentId;
102
+ return sym;
103
+ }
104
+ function getTestName(node) {
105
+ const args = node.childForFieldName("arguments");
106
+ if (!args)
107
+ return null;
108
+ const firstArg = args.namedChildren[0];
109
+ if (!firstArg)
110
+ return null;
111
+ if (firstArg.type === "string" || firstArg.type === "template_string") {
112
+ // Strip quotes
113
+ return firstArg.text.replace(/^['"`]|['"`]$/g, "");
114
+ }
115
+ return firstArg.text;
116
+ }
117
+ // --- Main extractor ---
118
+ export function extractTypeScriptSymbols(tree, filePath, source, repo) {
119
+ const symbols = [];
120
+ function walk(node, parentId) {
121
+ switch (node.type) {
122
+ case "function_declaration": {
123
+ const name = getNodeName(node);
124
+ if (name) {
125
+ const sym = makeSymbol(node, name, "function", filePath, source, repo, parentId);
126
+ const sig = getSignature(node, source);
127
+ if (sig)
128
+ sym.signature = sig;
129
+ symbols.push(sym);
130
+ }
131
+ break;
132
+ }
133
+ case "lexical_declaration": {
134
+ // Determine if this is a `const` declaration (vs let/var)
135
+ const isConst = node.children.some((c) => c.type === "const");
136
+ for (const declarator of node.namedChildren) {
137
+ if (declarator.type !== "variable_declarator")
138
+ continue;
139
+ const name = getNodeName(declarator);
140
+ if (!name)
141
+ continue;
142
+ const value = declarator.childForFieldName("value");
143
+ if (value && value.type === "arrow_function") {
144
+ const sym = makeSymbol(node, name, "function", filePath, source, repo, parentId);
145
+ const sig = getSignature(value, source);
146
+ if (sig)
147
+ sym.signature = sig;
148
+ const doc = getDocstring(node, source);
149
+ if (doc)
150
+ sym.docstring = doc;
151
+ symbols.push(sym);
152
+ }
153
+ else if (value) {
154
+ // SCREAMING_CASE const → "constant", otherwise → "variable"
155
+ const kind = isConst && SCREAMING_CASE_RE.test(name) ? "constant" : "variable";
156
+ const sym = makeSymbol(node, name, kind, filePath, source, repo, parentId);
157
+ const doc = getDocstring(node, source);
158
+ if (doc)
159
+ sym.docstring = doc;
160
+ symbols.push(sym);
161
+ }
162
+ }
163
+ // Don't walk children — we already processed declarators
164
+ return;
165
+ }
166
+ case "class_declaration":
167
+ case "abstract_class_declaration": {
168
+ const name = getNodeName(node) ?? "<anonymous>";
169
+ const sym = makeSymbol(node, name, "class", filePath, source, repo, parentId);
170
+ symbols.push(sym);
171
+ // Walk class body with this class as parent
172
+ for (const child of node.namedChildren) {
173
+ walk(child, sym.id);
174
+ }
175
+ return;
176
+ }
177
+ case "abstract_method_signature": {
178
+ // abstract doSomething(): void; inside abstract classes
179
+ const name = getNodeName(node);
180
+ if (name) {
181
+ const sym = makeSymbol(node, name, "method", filePath, source, repo, parentId);
182
+ const sig = getSignature(node, source);
183
+ if (sig)
184
+ sym.signature = sig;
185
+ symbols.push(sym);
186
+ }
187
+ break;
188
+ }
189
+ case "method_definition": {
190
+ const name = getNodeName(node);
191
+ if (name) {
192
+ const sym = makeSymbol(node, name, "method", filePath, source, repo, parentId);
193
+ const sig = getSignature(node, source);
194
+ if (sig)
195
+ sym.signature = sig;
196
+ symbols.push(sym);
197
+ }
198
+ break;
199
+ }
200
+ case "public_field_definition": {
201
+ const name = getNodeName(node);
202
+ if (name) {
203
+ const sym = makeSymbol(node, name, "field", filePath, source, repo, parentId);
204
+ symbols.push(sym);
205
+ }
206
+ break;
207
+ }
208
+ case "interface_declaration": {
209
+ const name = getNodeName(node);
210
+ if (name) {
211
+ const sym = makeSymbol(node, name, "interface", filePath, source, repo, parentId);
212
+ symbols.push(sym);
213
+ }
214
+ break;
215
+ }
216
+ case "type_alias_declaration": {
217
+ const name = getNodeName(node);
218
+ if (name) {
219
+ const sym = makeSymbol(node, name, "type", filePath, source, repo, parentId);
220
+ symbols.push(sym);
221
+ }
222
+ break;
223
+ }
224
+ case "enum_declaration": {
225
+ const name = getNodeName(node);
226
+ if (name) {
227
+ const sym = makeSymbol(node, name, "enum", filePath, source, repo, parentId);
228
+ symbols.push(sym);
229
+ }
230
+ break;
231
+ }
232
+ case "export_statement": {
233
+ // Unwrap: extract from the inner declaration
234
+ for (const child of node.namedChildren) {
235
+ walk(child, parentId);
236
+ }
237
+ return;
238
+ }
239
+ case "expression_statement": {
240
+ // Check for test calls: describe(...), it(...), test(...)
241
+ // Also handles member forms: it.skip(...), it.each(...)(...), describe.only(...)
242
+ const expr = node.namedChildren[0];
243
+ if (expr?.type === "call_expression") {
244
+ const callee = parseTestCallee(expr);
245
+ if (callee) {
246
+ const { base, method } = callee;
247
+ // describe() or describe.skip/only/each()
248
+ if (base === "describe" && (method === null || TEST_SUITE_METHODS.has(method))) {
249
+ const testName = getTestName(expr);
250
+ const name = testName ?? "describe";
251
+ const sym = makeSymbol(node, name, "test_suite", filePath, source, repo, parentId);
252
+ symbols.push(sym);
253
+ // Walk describe body for nested tests
254
+ const args = expr.childForFieldName("arguments");
255
+ if (args) {
256
+ for (const arg of args.namedChildren) {
257
+ if (arg.type === "arrow_function" || arg.type === "function") {
258
+ for (const bodyChild of arg.namedChildren) {
259
+ walk(bodyChild, sym.id);
260
+ }
261
+ }
262
+ }
263
+ }
264
+ return;
265
+ }
266
+ // it() / test() or it.skip/each/only/todo/failing/concurrent()
267
+ if ((base === "it" || base === "test") &&
268
+ (method === null || TEST_CASE_METHODS.has(method))) {
269
+ const testName = getTestName(expr);
270
+ const name = testName ?? base;
271
+ const sym = makeSymbol(node, name, "test_case", filePath, source, repo, parentId);
272
+ symbols.push(sym);
273
+ return;
274
+ }
275
+ // Lifecycle hooks: beforeEach(), afterEach(), beforeAll(), afterAll()
276
+ if (TEST_HOOK_NAMES.has(base) && method === null) {
277
+ const sym = makeSymbol(node, base, "test_hook", filePath, source, repo, parentId);
278
+ symbols.push(sym);
279
+ return;
280
+ }
281
+ }
282
+ }
283
+ break;
284
+ }
285
+ default:
286
+ break;
287
+ }
288
+ // Default: walk children
289
+ for (const child of node.namedChildren) {
290
+ walk(child, parentId);
291
+ }
292
+ }
293
+ walk(tree.rootNode);
294
+ return symbols;
295
+ }
296
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/parser/extractors/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import Parser from "web-tree-sitter";
2
+ export declare function initParser(): Promise<void>;
3
+ export declare function getParser(language: string): Promise<Parser | null>;
4
+ export declare function getLanguageForExtension(ext: string): string | null;
5
+ export declare function parseFile(filePath: string, source: string): Promise<Parser.Tree | null>;
6
+ //# sourceMappingURL=parser-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-manager.d.ts","sourceRoot":"","sources":["../../src/parser/parser-manager.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AA2BrC,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAIhD;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBxE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElE;AAED,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAS7B"}
@@ -0,0 +1,60 @@
1
+ import Parser from "web-tree-sitter";
2
+ import { fileURLToPath } from "node:url";
3
+ import path from "node:path";
4
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
5
+ let initialized = false;
6
+ const parserCache = new Map();
7
+ const EXTENSION_MAP = {
8
+ ".ts": "typescript",
9
+ ".tsx": "tsx",
10
+ ".js": "javascript",
11
+ ".jsx": "javascript",
12
+ ".py": "python",
13
+ ".go": "go",
14
+ ".rs": "rust",
15
+ ".java": "java",
16
+ ".rb": "ruby",
17
+ ".php": "php",
18
+ ".md": "markdown",
19
+ ".markdown": "markdown",
20
+ ".css": "css",
21
+ ".json": "json",
22
+ ".prisma": "prisma",
23
+ };
24
+ export async function initParser() {
25
+ if (initialized)
26
+ return;
27
+ await Parser.init();
28
+ initialized = true;
29
+ }
30
+ export async function getParser(language) {
31
+ const cached = parserCache.get(language);
32
+ if (cached)
33
+ return cached;
34
+ await initParser();
35
+ const wasmPath = path.join(__dirname, "languages", `tree-sitter-${language}.wasm`);
36
+ try {
37
+ const lang = await Parser.Language.load(wasmPath);
38
+ const parser = new Parser();
39
+ parser.setLanguage(lang);
40
+ parserCache.set(language, parser);
41
+ return parser;
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ }
47
+ export function getLanguageForExtension(ext) {
48
+ return EXTENSION_MAP[ext] ?? null;
49
+ }
50
+ export async function parseFile(filePath, source) {
51
+ const ext = path.extname(filePath);
52
+ const language = getLanguageForExtension(ext);
53
+ if (!language)
54
+ return null;
55
+ const parser = await getParser(language);
56
+ if (!parser)
57
+ return null;
58
+ return parser.parse(source);
59
+ }
60
+ //# sourceMappingURL=parser-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-manager.js","sourceRoot":"","sources":["../../src/parser/parser-manager.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE9C,MAAM,aAAa,GAA2B;IAC5C,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,QAAQ;CACpB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,WAAW;QAAE,OAAO;IACxB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB;IAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,UAAU,EAAE,CAAC;IAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CACxB,SAAS,EACT,WAAW,EACX,eAAe,QAAQ,OAAO,CAC/B,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAW;IACjD,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAgB,EAChB,MAAc;IAEd,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type Parser from "web-tree-sitter";
2
+ import type { CodeSymbol } from "../types.js";
3
+ /**
4
+ * Extract symbols from a tree-sitter parse tree.
5
+ * For markdown files, use `extractMarkdownSymbols` directly (no tree-sitter needed).
6
+ */
7
+ export declare function extractSymbols(tree: Parser.Tree, filePath: string, source: string, repo: string, language: string): CodeSymbol[];
8
+ export { extractMarkdownSymbols } from "./extractors/markdown.js";
9
+ export { extractPrismaSymbols } from "./extractors/prisma.js";
10
+ /**
11
+ * Splits camelCase, PascalCase, UPPER_SNAKE, and snake_case identifiers
12
+ * into lowercase tokens.
13
+ *
14
+ * Examples:
15
+ * getUserById → ["get", "user", "by", "id"]
16
+ * user_name → ["user", "name"]
17
+ * HTMLParser → ["html", "parser"]
18
+ * fetchAPIData → ["fetch", "api", "data"]
19
+ */
20
+ export declare function tokenizeIdentifier(name: string): string[];
21
+ export declare function makeSymbolId(repo: string, file: string, name: string, startLine: number): string;
22
+ //# sourceMappingURL=symbol-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-extractor.d.ts","sourceRoot":"","sources":["../../src/parser/symbol-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,aAAa,CAAC;AAS1D;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,UAAU,EAAE,CAgBd;AAGD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAwBzD;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,MAAM,CAER"}
@@ -0,0 +1,115 @@
1
+ import { extractTypeScriptSymbols } from "./extractors/typescript.js";
2
+ import { extractPythonSymbols } from "./extractors/python.js";
3
+ import { extractGoSymbols } from "./extractors/go.js";
4
+ import { extractRustSymbols } from "./extractors/rust.js";
5
+ import { extractJavaScriptSymbols } from "./extractors/javascript.js";
6
+ // --- Public API ---
7
+ /**
8
+ * Extract symbols from a tree-sitter parse tree.
9
+ * For markdown files, use `extractMarkdownSymbols` directly (no tree-sitter needed).
10
+ */
11
+ export function extractSymbols(tree, filePath, source, repo, language) {
12
+ switch (language) {
13
+ case "typescript":
14
+ case "tsx":
15
+ return extractTypeScriptSymbols(tree, filePath, source, repo);
16
+ case "python":
17
+ return extractPythonSymbols(tree, filePath, source, repo);
18
+ case "go":
19
+ return extractGoSymbols(tree, filePath, source, repo);
20
+ case "rust":
21
+ return extractRustSymbols(tree, filePath, source, repo);
22
+ case "javascript":
23
+ return extractJavaScriptSymbols(tree, filePath, source, repo);
24
+ default:
25
+ return extractGenericSymbols(tree, filePath, source, repo);
26
+ }
27
+ }
28
+ // Re-export custom extractors for use by the indexing pipeline (no tree-sitter grammar)
29
+ export { extractMarkdownSymbols } from "./extractors/markdown.js";
30
+ export { extractPrismaSymbols } from "./extractors/prisma.js";
31
+ /**
32
+ * Splits camelCase, PascalCase, UPPER_SNAKE, and snake_case identifiers
33
+ * into lowercase tokens.
34
+ *
35
+ * Examples:
36
+ * getUserById → ["get", "user", "by", "id"]
37
+ * user_name → ["user", "name"]
38
+ * HTMLParser → ["html", "parser"]
39
+ * fetchAPIData → ["fetch", "api", "data"]
40
+ */
41
+ export function tokenizeIdentifier(name) {
42
+ // Step 1: split on underscores
43
+ const parts = name.split("_").filter(Boolean);
44
+ const tokens = [];
45
+ for (const part of parts) {
46
+ // Step 2: split camelCase / PascalCase
47
+ // Insert boundary between:
48
+ // lowercase→uppercase (get|User)
49
+ // uppercase sequence→uppercase+lowercase (HTM|L→P|arser → HTML|Parser)
50
+ const subParts = part
51
+ .replace(/([a-z0-9])([A-Z])/g, "$1\0$2")
52
+ .replace(/([A-Z]+)([A-Z][a-z])/g, "$1\0$2")
53
+ .split("\0");
54
+ for (const sub of subParts) {
55
+ if (sub.length > 0) {
56
+ tokens.push(sub.toLowerCase());
57
+ }
58
+ }
59
+ }
60
+ return tokens;
61
+ }
62
+ export function makeSymbolId(repo, file, name, startLine) {
63
+ return `${repo}:${file}:${name}:${startLine}`;
64
+ }
65
+ // --- Generic extraction (fallback for unsupported languages) ---
66
+ const GENERIC_NODE_KIND_MAP = {
67
+ function_declaration: "function",
68
+ function_definition: "function",
69
+ class_declaration: "class",
70
+ class_definition: "class",
71
+ method_definition: "method",
72
+ method_declaration: "method",
73
+ };
74
+ function extractGenericSymbols(tree, filePath, source, repo) {
75
+ const symbols = [];
76
+ function walk(node, parentId) {
77
+ const kind = GENERIC_NODE_KIND_MAP[node.type];
78
+ if (kind) {
79
+ const nameNode = node.childForFieldName("name")
80
+ ?? node.namedChildren.find((c) => c.type === "identifier");
81
+ const name = nameNode?.text ?? "<anonymous>";
82
+ const startLine = node.startPosition.row + 1;
83
+ const endLine = node.endPosition.row + 1;
84
+ const id = makeSymbolId(repo, filePath, name, startLine);
85
+ const nodeSource = source.slice(node.startIndex, node.endIndex);
86
+ const sym = {
87
+ id,
88
+ repo,
89
+ name,
90
+ kind,
91
+ file: filePath,
92
+ start_line: startLine,
93
+ end_line: endLine,
94
+ source: nodeSource.length > 5000
95
+ ? nodeSource.slice(0, 5000) + "..."
96
+ : nodeSource,
97
+ tokens: tokenizeIdentifier(name),
98
+ };
99
+ if (parentId)
100
+ sym.parent = parentId;
101
+ symbols.push(sym);
102
+ for (const child of node.namedChildren) {
103
+ walk(child, id);
104
+ }
105
+ }
106
+ else {
107
+ for (const child of node.namedChildren) {
108
+ walk(child, parentId);
109
+ }
110
+ }
111
+ }
112
+ walk(tree.rootNode);
113
+ return symbols;
114
+ }
115
+ //# sourceMappingURL=symbol-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-extractor.js","sourceRoot":"","sources":["../../src/parser/symbol-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ type SubQueryResult = {
2
+ type: string;
3
+ data: unknown;
4
+ tokens: number;
5
+ };
6
+ interface SubQuery {
7
+ type: string;
8
+ [key: string]: unknown;
9
+ }
10
+ export interface CodebaseRetrievalResult {
11
+ results: SubQueryResult[];
12
+ total_tokens: number;
13
+ truncated: boolean;
14
+ query_count: number;
15
+ }
16
+ /**
17
+ * Execute multiple sub-queries in a single batched call with shared token budget.
18
+ *
19
+ * Features:
20
+ * - Cross-query deduplication (same symbol in multiple results → included once)
21
+ * - Token budget enforcement
22
+ * - Max 20 sub-queries per call
23
+ * - Parallel execution where queries are independent
24
+ */
25
+ export declare function codebaseRetrieval(repo: string, queries: SubQuery[], tokenBudget?: number): Promise<CodebaseRetrievalResult>;
26
+ export {};
27
+ //# sourceMappingURL=codebase-retrieval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codebase-retrieval.d.ts","sourceRoot":"","sources":["../../src/retrieval/codebase-retrieval.ts"],"names":[],"mappings":"AAMA,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAycD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,EAAE,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,uBAAuB,CAAC,CA0DlC"}