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,342 @@
1
+ import { getCodeIndex } from "./index-tools.js";
2
+ /**
3
+ * Match a filename against a glob pattern.
4
+ * Supports: "*.ts", "route.ts", "*risk*.test.*", "**\/*.ts"
5
+ *
6
+ * Pattern is matched against the filename portion only (not the full path),
7
+ * unless it contains "/" or starts with "**\/".
8
+ */
9
+ function matchNamePattern(filePath, pattern) {
10
+ // Handle **/ prefix: match anywhere in path
11
+ if (pattern.startsWith("**/")) {
12
+ const suffix = pattern.slice(3);
13
+ return matchNamePattern(filePath, suffix) ||
14
+ filePath.includes("/" + suffix);
15
+ }
16
+ // If pattern contains "/" it's a path pattern — match against full path
17
+ if (pattern.includes("/")) {
18
+ return globMatch(filePath, pattern);
19
+ }
20
+ // Otherwise match against filename only
21
+ const fileName = filePath.includes("/")
22
+ ? filePath.slice(filePath.lastIndexOf("/") + 1)
23
+ : filePath;
24
+ // No wildcard: exact filename match or substring of path
25
+ if (!pattern.includes("*")) {
26
+ return fileName === pattern || filePath.includes(pattern);
27
+ }
28
+ return globMatch(fileName, pattern);
29
+ }
30
+ /**
31
+ * Simple glob matching: splits pattern on "*" and checks that the segments
32
+ * appear in order within the text. Handles multiple wildcards correctly.
33
+ *
34
+ * Examples: "*.ts" matches "foo.ts", "*risk*.test.*" matches "risk-audit.service.test.ts"
35
+ */
36
+ function globMatch(text, pattern) {
37
+ const parts = pattern.split("*");
38
+ // All parts must appear in sequence within the text
39
+ // First part must be a prefix (or empty if pattern starts with *)
40
+ const first = parts[0];
41
+ if (first !== undefined && first !== "" && !text.startsWith(first))
42
+ return false;
43
+ // Last part must be a suffix (or empty if pattern ends with *)
44
+ const last = parts[parts.length - 1];
45
+ if (last !== undefined && last !== "" && !text.endsWith(last))
46
+ return false;
47
+ // All parts must appear in order
48
+ let pos = 0;
49
+ for (const part of parts) {
50
+ if (part === "")
51
+ continue;
52
+ const idx = text.indexOf(part, pos);
53
+ if (idx < 0)
54
+ return false;
55
+ pos = idx + part.length;
56
+ }
57
+ return true;
58
+ }
59
+ /**
60
+ * Count the depth of a path (number of "/" separators).
61
+ */
62
+ function pathDepth(filePath) {
63
+ if (!filePath)
64
+ return 0;
65
+ return filePath.split("/").length;
66
+ }
67
+ /**
68
+ * Build a nested file tree from a flat list of file paths.
69
+ *
70
+ * Depth semantics: depth=N shows N levels below the root.
71
+ * depth=1 → immediate children only (files + dirs, dirs shown without contents)
72
+ * depth=2 → children + grandchildren
73
+ *
74
+ * When path_prefix is set, the tree is rooted AT the prefix (not wrapped in
75
+ * ancestor directories). When name_pattern is set, empty branches are pruned.
76
+ */
77
+ function buildTree(index, options) {
78
+ const maxDepth = options?.depth ?? Infinity;
79
+ const pathPrefix = options?.path_prefix;
80
+ const namePattern = options?.name_pattern;
81
+ const minSymbols = options?.min_symbols;
82
+ // Build a symbol count lookup by file path
83
+ const symbolCountByFile = new Map();
84
+ for (const file of index.files) {
85
+ symbolCountByFile.set(file.path, file.symbol_count);
86
+ }
87
+ // --- Step 1: Filter files by path_prefix, name_pattern, and min_symbols ---
88
+ let files = index.files;
89
+ if (pathPrefix) {
90
+ const prefix = pathPrefix.endsWith("/") ? pathPrefix : pathPrefix + "/";
91
+ files = files.filter((f) => f.path.startsWith(prefix));
92
+ }
93
+ if (namePattern) {
94
+ files = files.filter((f) => matchNamePattern(f.path, namePattern));
95
+ }
96
+ if (minSymbols !== undefined && minSymbols > 0) {
97
+ files = files.filter((f) => f.symbol_count >= minSymbols);
98
+ }
99
+ // Base depth: number of path segments in the prefix (tree root level).
100
+ // Files/dirs are measured relative to this.
101
+ const baseDepth = pathPrefix ? pathDepth(pathPrefix) : 0;
102
+ // --- Step 2: Collect visible files and their ancestor directories ---
103
+ const dirSet = new Set();
104
+ const visibleFiles = new Set();
105
+ for (const file of files) {
106
+ const fileRelDepth = pathDepth(file.path) - baseDepth;
107
+ // depth filter: only include files within maxDepth levels of the root
108
+ if (fileRelDepth > maxDepth)
109
+ continue;
110
+ visibleFiles.add(file.path);
111
+ // Add ancestor directories between the prefix and this file (not above prefix)
112
+ const parts = file.path.split("/");
113
+ const startIdx = baseDepth; // skip segments that are part of the prefix
114
+ for (let i = startIdx + 1; i < parts.length; i++) {
115
+ const dirPath = parts.slice(0, i).join("/");
116
+ dirSet.add(dirPath);
117
+ }
118
+ }
119
+ // When depth is limited, also show directories at exactly maxDepth that
120
+ // WOULD have children (so the user knows there's more to explore).
121
+ // These appear as dirs without expanded children.
122
+ if (maxDepth < Infinity) {
123
+ for (const file of files) {
124
+ const fileRelDepth = pathDepth(file.path) - baseDepth;
125
+ if (fileRelDepth <= maxDepth)
126
+ continue; // already handled above
127
+ // This file is beyond maxDepth — add its ancestor dir at maxDepth level
128
+ const parts = file.path.split("/");
129
+ const truncLen = baseDepth + maxDepth;
130
+ if (truncLen < parts.length) {
131
+ const dirPath = parts.slice(0, truncLen).join("/");
132
+ dirSet.add(dirPath);
133
+ // Also add intermediate dirs between prefix and this truncated dir
134
+ for (let i = baseDepth + 1; i < truncLen; i++) {
135
+ dirSet.add(parts.slice(0, i).join("/"));
136
+ }
137
+ }
138
+ }
139
+ }
140
+ // --- Step 3: Build nested tree from nodeMap ---
141
+ const nodeMap = new Map();
142
+ // Create directory nodes
143
+ for (const dirPath of dirSet) {
144
+ const name = dirPath.includes("/")
145
+ ? dirPath.slice(dirPath.lastIndexOf("/") + 1)
146
+ : dirPath;
147
+ nodeMap.set(dirPath, {
148
+ name,
149
+ path: dirPath,
150
+ type: "dir",
151
+ children: [],
152
+ });
153
+ }
154
+ // Create file nodes
155
+ for (const filePath of visibleFiles) {
156
+ const name = filePath.includes("/")
157
+ ? filePath.slice(filePath.lastIndexOf("/") + 1)
158
+ : filePath;
159
+ nodeMap.set(filePath, {
160
+ name,
161
+ path: filePath,
162
+ type: "file",
163
+ symbol_count: symbolCountByFile.get(filePath) ?? 0,
164
+ });
165
+ }
166
+ // Wire up parent-child relationships
167
+ const roots = [];
168
+ // The root path is the path_prefix itself (if set), or empty (repo root)
169
+ const rootPath = pathPrefix ?? "";
170
+ for (const [nodePath, node] of nodeMap) {
171
+ const lastSlash = nodePath.lastIndexOf("/");
172
+ if (lastSlash < 0) {
173
+ // Top-level item (no parent directory)
174
+ roots.push(node);
175
+ }
176
+ else {
177
+ const parentPath = nodePath.slice(0, lastSlash);
178
+ // If parent is the root prefix (or above it), this node is a root
179
+ if (parentPath === rootPath || pathDepth(parentPath) < baseDepth) {
180
+ roots.push(node);
181
+ }
182
+ else {
183
+ const parent = nodeMap.get(parentPath);
184
+ if (parent?.children) {
185
+ parent.children.push(node);
186
+ }
187
+ else {
188
+ roots.push(node);
189
+ }
190
+ }
191
+ }
192
+ }
193
+ // --- Step 4: Prune empty directories (when filtering is active) ---
194
+ if (namePattern || (minSymbols !== undefined && minSymbols > 0)) {
195
+ function hasVisibleDescendant(node) {
196
+ if (node.type === "file")
197
+ return true;
198
+ if (!node.children)
199
+ return false;
200
+ node.children = node.children.filter(hasVisibleDescendant);
201
+ return node.children.length > 0;
202
+ }
203
+ const pruned = roots.filter(hasVisibleDescendant);
204
+ roots.length = 0;
205
+ roots.push(...pruned);
206
+ }
207
+ // Sort children: directories first, then alphabetically
208
+ function sortChildren(nodes) {
209
+ nodes.sort((a, b) => {
210
+ if (a.type !== b.type)
211
+ return a.type === "dir" ? -1 : 1;
212
+ return a.name.localeCompare(b.name);
213
+ });
214
+ for (const node of nodes) {
215
+ if (node.children && node.children.length > 0) {
216
+ sortChildren(node.children);
217
+ }
218
+ }
219
+ }
220
+ sortChildren(roots);
221
+ return roots;
222
+ }
223
+ /**
224
+ * Build a compact flat list of file paths with symbol counts.
225
+ * Much cheaper than the full nested tree — similar to `find` output.
226
+ */
227
+ function buildCompactList(index, options) {
228
+ const pathPrefix = options?.path_prefix;
229
+ const namePattern = options?.name_pattern;
230
+ const minSymbols = options?.min_symbols;
231
+ let files = index.files;
232
+ if (pathPrefix) {
233
+ const prefix = pathPrefix.endsWith("/") ? pathPrefix : pathPrefix + "/";
234
+ files = files.filter((f) => f.path.startsWith(prefix));
235
+ }
236
+ if (namePattern) {
237
+ files = files.filter((f) => matchNamePattern(f.path, namePattern));
238
+ }
239
+ if (minSymbols !== undefined && minSymbols > 0) {
240
+ files = files.filter((f) => f.symbol_count >= minSymbols);
241
+ }
242
+ // depth filter: count path segments relative to the prefix
243
+ const maxDepth = options?.depth ?? Infinity;
244
+ if (maxDepth < Infinity) {
245
+ const baseDepth = pathPrefix ? pathDepth(pathPrefix) : 0;
246
+ files = files.filter((f) => pathDepth(f.path) - baseDepth <= maxDepth);
247
+ }
248
+ return files
249
+ .map((f) => ({ path: f.path, symbols: f.symbol_count }))
250
+ .sort((a, b) => a.path.localeCompare(b.path));
251
+ }
252
+ /**
253
+ * Get a nested file tree for a repository.
254
+ * Supports filtering by path prefix, name pattern, and depth.
255
+ *
256
+ * When `compact=true`, returns a flat sorted list of `{ path, symbols }`
257
+ * entries instead of the full nested tree — 10-50x less output.
258
+ */
259
+ export async function getFileTree(repo, options) {
260
+ const index = await getCodeIndex(repo);
261
+ if (!index) {
262
+ throw new Error(`Repository "${repo}" not found. Run index_folder first.`);
263
+ }
264
+ if (options?.compact) {
265
+ return buildCompactList(index, options);
266
+ }
267
+ return buildTree(index, options);
268
+ }
269
+ /**
270
+ * Get an outline of symbols in a specific file.
271
+ * Returns symbols sorted by start line, with source stripped for brevity.
272
+ */
273
+ export async function getFileOutline(repo, filePath) {
274
+ const index = await getCodeIndex(repo);
275
+ if (!index) {
276
+ throw new Error(`Repository "${repo}" not found. Run index_folder first.`);
277
+ }
278
+ const symbols = index.symbols
279
+ .filter((s) => s.file === filePath)
280
+ .sort((a, b) => a.start_line - b.start_line);
281
+ return symbols.map((s) => {
282
+ const entry = {
283
+ id: s.id,
284
+ name: s.name,
285
+ kind: s.kind,
286
+ start_line: s.start_line,
287
+ end_line: s.end_line,
288
+ };
289
+ if (s.signature !== undefined) {
290
+ entry.signature = s.signature;
291
+ }
292
+ if (s.parent !== undefined) {
293
+ entry.parent = s.parent;
294
+ }
295
+ return entry;
296
+ });
297
+ }
298
+ /**
299
+ * Get a high-level outline of the entire repository.
300
+ * Groups files by directory with symbol counts and language breakdown.
301
+ */
302
+ export async function getRepoOutline(repo) {
303
+ const index = await getCodeIndex(repo);
304
+ if (!index) {
305
+ throw new Error(`Repository "${repo}" not found. Run index_folder first.`);
306
+ }
307
+ // Group files by directory
308
+ const dirMap = new Map();
309
+ for (const file of index.files) {
310
+ const lastSlash = file.path.lastIndexOf("/");
311
+ const dirPath = lastSlash >= 0 ? file.path.slice(0, lastSlash) : ".";
312
+ let entry = dirMap.get(dirPath);
313
+ if (!entry) {
314
+ entry = { files: 0, symbols: 0, languages: new Set() };
315
+ dirMap.set(dirPath, entry);
316
+ }
317
+ entry.files++;
318
+ entry.symbols += file.symbol_count;
319
+ entry.languages.add(file.language);
320
+ }
321
+ // Build directory outlines sorted by path
322
+ const directories = [...dirMap.entries()]
323
+ .sort(([a], [b]) => a.localeCompare(b))
324
+ .map(([path, data]) => ({
325
+ path,
326
+ file_count: data.files,
327
+ symbol_count: data.symbols,
328
+ languages: [...data.languages].sort(),
329
+ }));
330
+ // Compute global language counts
331
+ const languageCounts = {};
332
+ for (const file of index.files) {
333
+ languageCounts[file.language] = (languageCounts[file.language] ?? 0) + 1;
334
+ }
335
+ return {
336
+ directories,
337
+ total_symbols: index.symbol_count,
338
+ total_files: index.file_count,
339
+ languages: languageCounts,
340
+ };
341
+ }
342
+ //# sourceMappingURL=outline-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outline-tools.js","sourceRoot":"","sources":["../../src/tools/outline-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgDhD;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,QAAgB,EAAE,OAAe;IACzD,4CAA4C;IAC5C,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC;YACvC,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,wEAAwE;IACxE,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,wCAAwC;IACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QACrC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,QAAQ,CAAC;IAEb,yDAAyD;IACzD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,OAAe;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,oDAAoD;IAEpD,kEAAkE;IAClE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEjF,+DAA+D;IAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5E,iCAAiC;IACjC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1B,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,QAAgB;IACjC,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC;IACxB,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,SAAS,CAChB,KAAgB,EAChB,OAAyB;IAEzB,MAAM,QAAQ,GAAG,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC;IAC5C,MAAM,UAAU,GAAG,OAAO,EAAE,WAAW,CAAC;IACxC,MAAM,WAAW,GAAG,OAAO,EAAE,YAAY,CAAC;IAE1C,MAAM,UAAU,GAAG,OAAO,EAAE,WAAW,CAAC;IAExC,2CAA2C;IAC3C,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACtD,CAAC;IAED,6EAA6E;IAC7E,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAExB,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC;QACxE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QAC/C,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,uEAAuE;IACvE,4CAA4C;IAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,uEAAuE;IACvE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;QAEtD,sEAAsE;QACtE,IAAI,YAAY,GAAG,QAAQ;YAAE,SAAS;QAEtC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5B,+EAA+E;QAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,4CAA4C;QACxE,KAAK,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,mEAAmE;IACnE,kDAAkD;IAClD,IAAI,QAAQ,GAAG,QAAQ,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;YACtD,IAAI,YAAY,IAAI,QAAQ;gBAAE,SAAS,CAAC,wBAAwB;YAEhE,wEAAwE;YACxE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;YACtC,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACpB,mEAAmE;gBACnE,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEhD,yBAAyB;IACzB,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YAChC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7C,CAAC,CAAC,OAAO,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE;YACnB,IAAI;YACJ,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;IACpB,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;YACjC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/C,CAAC,CAAC,QAAQ,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;YACpB,IAAI;YACJ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;IAED,qCAAqC;IACrC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,yEAAyE;IACzE,MAAM,QAAQ,GAAG,UAAU,IAAI,EAAE,CAAC;IAElC,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,uCAAuC;YACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAChD,kEAAkE;YAClE,IAAI,UAAU,KAAK,QAAQ,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,SAAS,EAAE,CAAC;gBACjE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACvC,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;oBACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,IAAI,WAAW,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;QAChE,SAAS,oBAAoB,CAAC,IAAkB;YAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAClD,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,wDAAwD;IACxD,SAAS,YAAY,CAAC,KAAqB;QACzC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;gBAAE,OAAO,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAK,CAAC,CAAC;IAEpB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CACvB,KAAgB,EAChB,OAAyB;IAEzB,MAAM,UAAU,GAAG,OAAO,EAAE,WAAW,CAAC;IACxC,MAAM,WAAW,GAAG,OAAO,EAAE,YAAY,CAAC;IAC1C,MAAM,UAAU,GAAG,OAAO,EAAE,WAAW,CAAC;IAExC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAExB,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC;QACxE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QAC/C,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC;IAC5C,IAAI,QAAQ,GAAG,QAAQ,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,IAAI,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;SACvD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,OAAyB;IAEzB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,sCAAsC,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,QAAgB;IAEhB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,sCAAsC,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;SAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IAE/C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,MAAM,KAAK,GAAqB;YAC9B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC;QACF,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY;IAEZ,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,sCAAsC,CAAC,CAAC;IAC7E,CAAC;IAED,2BAA2B;IAC3B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsE,CAAC;IAE7F,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAErE,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;YACvD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC;QACnC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,0CAA0C;IAC1C,MAAM,WAAW,GAAuB,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SAC1D,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACtB,IAAI;QACJ,UAAU,EAAE,IAAI,CAAC,KAAK;QACtB,YAAY,EAAE,IAAI,CAAC,OAAO;QAC1B,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;KACtC,CAAC,CAAC,CAAC;IAEN,iCAAiC;IACjC,MAAM,cAAc,GAA2B,EAAE,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO;QACL,WAAW;QACX,aAAa,EAAE,KAAK,CAAC,YAAY;QACjC,WAAW,EAAE,KAAK,CAAC,UAAU;QAC7B,SAAS,EAAE,cAAc;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { SearchResult, TextMatch, SymbolKind } from "../types.js";
2
+ export interface SearchSymbolsOptions {
3
+ kind?: SymbolKind | undefined;
4
+ file_pattern?: string | undefined;
5
+ include_source?: boolean | undefined;
6
+ top_k?: number | undefined;
7
+ source_chars?: number | undefined;
8
+ }
9
+ export interface SearchTextOptions {
10
+ regex?: boolean | undefined;
11
+ file_pattern?: string | undefined;
12
+ context_lines?: number | undefined;
13
+ max_results?: number | undefined;
14
+ }
15
+ /**
16
+ * Search symbols by name/signature/docstring using BM25 ranking.
17
+ * Supports filtering by symbol kind and file pattern.
18
+ *
19
+ * When query is empty, returns all symbols matching the filters (up to top_k).
20
+ * When kind or file_pattern filters are active, BM25 searches a wider candidate
21
+ * set to avoid post-filter truncation.
22
+ */
23
+ export declare function searchSymbols(repo: string, query: string, options?: SearchSymbolsOptions): Promise<SearchResult[]>;
24
+ /**
25
+ * Full-text search across all files in a repository.
26
+ * Walks the filesystem to search ALL text files, not just indexed ones.
27
+ */
28
+ export declare function searchText(repo: string, query: string, options?: SearchTextOptions): Promise<TextMatch[]>;
29
+ //# sourceMappingURL=search-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-tools.d.ts","sourceRoot":"","sources":["../../src/tools/search-tools.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2BvE,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAwID;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,YAAY,EAAE,CAAC,CA+EzB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,SAAS,EAAE,CAAC,CAsFtB"}