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,336 @@
1
+ // ---------------------------------------------------------------------------
2
+ // CLI command handlers
3
+ // ---------------------------------------------------------------------------
4
+ import { getFlag, getBoolFlag, getNumFlag, requireArg, output, die } from "./args.js";
5
+ // ---------------------------------------------------------------------------
6
+ // Index commands
7
+ // ---------------------------------------------------------------------------
8
+ async function handleIndex(args, flags) {
9
+ const path = requireArg(args, 0, "path");
10
+ const { indexFolder } = await import("../tools/index-tools.js");
11
+ const includePathsRaw = getFlag(flags, "include-paths");
12
+ const includePaths = includePathsRaw ? includePathsRaw.split(",").map(p => p.trim()) : undefined;
13
+ const result = await indexFolder(path, {
14
+ incremental: getBoolFlag(flags, "incremental"),
15
+ include_paths: includePaths,
16
+ watch: getBoolFlag(flags, "no-watch") === true ? false : undefined,
17
+ });
18
+ output(result, flags);
19
+ }
20
+ async function handleIndexRepo(args, flags) {
21
+ const url = requireArg(args, 0, "url");
22
+ const { indexRepo } = await import("../tools/index-tools.js");
23
+ const includePathsRaw = getFlag(flags, "include-paths");
24
+ const includePaths = includePathsRaw ? includePathsRaw.split(",").map(p => p.trim()) : undefined;
25
+ const result = await indexRepo(url, {
26
+ branch: getFlag(flags, "branch"),
27
+ include_paths: includePaths,
28
+ });
29
+ output(result, flags);
30
+ }
31
+ async function handleRepos(_args, flags) {
32
+ const { listAllRepos } = await import("../tools/index-tools.js");
33
+ const result = await listAllRepos();
34
+ output(result, flags);
35
+ }
36
+ async function handleInvalidate(args, flags) {
37
+ const repo = requireArg(args, 0, "repo");
38
+ const { invalidateCache } = await import("../tools/index-tools.js");
39
+ const result = await invalidateCache(repo);
40
+ output({ invalidated: result, repo }, flags);
41
+ }
42
+ // ---------------------------------------------------------------------------
43
+ // Search commands
44
+ // ---------------------------------------------------------------------------
45
+ async function handleSearch(args, flags) {
46
+ const repo = requireArg(args, 0, "repo");
47
+ const query = requireArg(args, 1, "query");
48
+ const { searchText } = await import("../tools/search-tools.js");
49
+ const result = await searchText(repo, query, {
50
+ file_pattern: getFlag(flags, "file-pattern"),
51
+ regex: getBoolFlag(flags, "regex"),
52
+ context_lines: getNumFlag(flags, "context-lines"),
53
+ max_results: getNumFlag(flags, "max-results"),
54
+ });
55
+ output(result, flags);
56
+ }
57
+ async function handleSymbols(args, flags) {
58
+ const repo = requireArg(args, 0, "repo");
59
+ const query = requireArg(args, 1, "query");
60
+ const { searchSymbols } = await import("../tools/search-tools.js");
61
+ const includeSource = getBoolFlag(flags, "include-source");
62
+ const explicitTopK = getNumFlag(flags, "top-k");
63
+ // When --include-source is set and no explicit --top-k, default to 5
64
+ // instead of 50 to avoid returning 50 full function bodies
65
+ const topK = explicitTopK ?? (includeSource ? 5 : undefined);
66
+ const result = await searchSymbols(repo, query, {
67
+ kind: getFlag(flags, "kind"),
68
+ file_pattern: getFlag(flags, "file-pattern"),
69
+ include_source: includeSource,
70
+ top_k: topK,
71
+ source_chars: getNumFlag(flags, "source-chars"),
72
+ });
73
+ output(result, flags);
74
+ }
75
+ // ---------------------------------------------------------------------------
76
+ // Outline commands
77
+ // ---------------------------------------------------------------------------
78
+ async function handleTree(args, flags) {
79
+ const repo = requireArg(args, 0, "repo");
80
+ const { getFileTree } = await import("../tools/outline-tools.js");
81
+ const result = await getFileTree(repo, {
82
+ path_prefix: getFlag(flags, "path") ?? args[1],
83
+ name_pattern: getFlag(flags, "name-pattern"),
84
+ depth: getNumFlag(flags, "depth"),
85
+ compact: getBoolFlag(flags, "compact"),
86
+ min_symbols: getNumFlag(flags, "min-symbols"),
87
+ });
88
+ output(result, flags);
89
+ }
90
+ async function handleOutline(args, flags) {
91
+ const repo = requireArg(args, 0, "repo");
92
+ const file = requireArg(args, 1, "file");
93
+ const { getFileOutline } = await import("../tools/outline-tools.js");
94
+ const result = await getFileOutline(repo, file);
95
+ output(result, flags);
96
+ }
97
+ async function handleRepoOutline(args, flags) {
98
+ const repo = requireArg(args, 0, "repo");
99
+ const { getRepoOutline } = await import("../tools/outline-tools.js");
100
+ const result = await getRepoOutline(repo);
101
+ output(result, flags);
102
+ }
103
+ // ---------------------------------------------------------------------------
104
+ // Symbol commands
105
+ // ---------------------------------------------------------------------------
106
+ async function handleSymbol(args, flags) {
107
+ const repo = requireArg(args, 0, "repo");
108
+ const id = requireArg(args, 1, "id");
109
+ const { getSymbol } = await import("../tools/symbol-tools.js");
110
+ const result = await getSymbol(repo, id);
111
+ if (result === null) {
112
+ die(`Symbol not found: ${id}`);
113
+ }
114
+ output(result, flags);
115
+ }
116
+ async function handleSymbolsBatch(args, flags) {
117
+ const repo = requireArg(args, 0, "repo");
118
+ const ids = args.slice(1);
119
+ if (ids.length === 0) {
120
+ die("Missing required argument: <ids...>");
121
+ }
122
+ const { getSymbols } = await import("../tools/symbol-tools.js");
123
+ const result = await getSymbols(repo, ids);
124
+ output(result, flags);
125
+ }
126
+ async function handleFind(args, flags) {
127
+ const repo = requireArg(args, 0, "repo");
128
+ const query = requireArg(args, 1, "query");
129
+ const { findAndShow } = await import("../tools/symbol-tools.js");
130
+ const result = await findAndShow(repo, query, getBoolFlag(flags, "include-refs"));
131
+ if (result === null) {
132
+ die(`No symbol found matching: ${query}`);
133
+ }
134
+ output(result, flags);
135
+ }
136
+ async function handleRefs(args, flags) {
137
+ const repo = requireArg(args, 0, "repo");
138
+ const name = requireArg(args, 1, "name");
139
+ const { findReferences } = await import("../tools/symbol-tools.js");
140
+ const result = await findReferences(repo, name, getFlag(flags, "file-pattern"));
141
+ if (getBoolFlag(flags, "json")) {
142
+ output(result, flags);
143
+ }
144
+ else {
145
+ // Compact tabular output: file:line:col | context
146
+ for (const ref of result) {
147
+ const loc = `${ref.file}:${ref.line}${ref.col ? `:${ref.col}` : ""}`;
148
+ process.stdout.write(`${loc} | ${ref.context}\n`);
149
+ }
150
+ process.stderr.write(`\n${result.length} references found\n`);
151
+ }
152
+ }
153
+ // ---------------------------------------------------------------------------
154
+ // Graph commands
155
+ // ---------------------------------------------------------------------------
156
+ async function handleTrace(args, flags) {
157
+ const repo = requireArg(args, 0, "repo");
158
+ const name = requireArg(args, 1, "name");
159
+ const { traceCallChain } = await import("../tools/graph-tools.js");
160
+ const direction = (getFlag(flags, "direction") ?? "callers");
161
+ if (direction !== "callers" && direction !== "callees") {
162
+ die(`Invalid --direction: ${direction}. Must be "callers" or "callees".`);
163
+ }
164
+ const includeSource = getBoolFlag(flags, "include-source") ?? false;
165
+ const includeTests = getBoolFlag(flags, "include-tests") ?? false;
166
+ const result = await traceCallChain(repo, name, direction, {
167
+ depth: getNumFlag(flags, "depth"),
168
+ include_source: includeSource,
169
+ include_tests: includeTests,
170
+ });
171
+ if (getBoolFlag(flags, "json")) {
172
+ output(result, flags);
173
+ }
174
+ else {
175
+ // Compact tree output
176
+ function printNode(node, indent) {
177
+ const prefix = indent === 0 ? "" : " ".repeat(indent) + "|- ";
178
+ const sym = node.symbol;
179
+ const sig = sym.signature ? ` ${sym.signature}` : "";
180
+ const loc = `${sym.file}:${sym.start_line}`;
181
+ process.stdout.write(`${prefix}${sym.kind} | ${sym.name}${sig} | ${loc}\n`);
182
+ for (const child of node.children) {
183
+ printNode(child, indent + 1);
184
+ }
185
+ }
186
+ printNode(result, 0);
187
+ // Count total nodes
188
+ function countNodes(node) {
189
+ return 1 + node.children.reduce((sum, c) => sum + countNodes(c), 0);
190
+ }
191
+ process.stderr.write(`\n${countNodes(result)} symbols in trace\n`);
192
+ }
193
+ }
194
+ async function handleImpact(args, flags) {
195
+ const repo = requireArg(args, 0, "repo");
196
+ const since = getFlag(flags, "since");
197
+ if (!since) {
198
+ die("Missing required flag: --since <ref>");
199
+ }
200
+ const { impactAnalysis } = await import("../tools/graph-tools.js");
201
+ const result = await impactAnalysis(repo, since, {
202
+ depth: getNumFlag(flags, "depth"),
203
+ until: getFlag(flags, "until"),
204
+ include_source: getBoolFlag(flags, "include-source"),
205
+ });
206
+ output(result, flags);
207
+ }
208
+ // ---------------------------------------------------------------------------
209
+ // Context commands
210
+ // ---------------------------------------------------------------------------
211
+ async function handleContext(args, flags) {
212
+ const repo = requireArg(args, 0, "repo");
213
+ const query = requireArg(args, 1, "query");
214
+ const { assembleContext } = await import("../tools/context-tools.js");
215
+ const result = await assembleContext(repo, query, getNumFlag(flags, "token-budget"));
216
+ output(result, flags);
217
+ }
218
+ async function handleKnowledgeMap(args, flags) {
219
+ const repo = requireArg(args, 0, "repo");
220
+ const { getKnowledgeMap } = await import("../tools/context-tools.js");
221
+ const result = await getKnowledgeMap(repo, getFlag(flags, "focus"), getNumFlag(flags, "depth"));
222
+ output(result, flags);
223
+ }
224
+ // ---------------------------------------------------------------------------
225
+ // Diff commands
226
+ // ---------------------------------------------------------------------------
227
+ async function handleDiff(args, flags) {
228
+ const repo = requireArg(args, 0, "repo");
229
+ const since = getFlag(flags, "since");
230
+ if (!since) {
231
+ die("Missing required flag: --since <ref>");
232
+ }
233
+ const { diffOutline } = await import("../tools/diff-tools.js");
234
+ const result = await diffOutline(repo, since, getFlag(flags, "until"));
235
+ output(result, flags);
236
+ }
237
+ async function handleChanged(args, flags) {
238
+ const repo = requireArg(args, 0, "repo");
239
+ const since = getFlag(flags, "since");
240
+ if (!since) {
241
+ die("Missing required flag: --since <ref>");
242
+ }
243
+ const { changedSymbols } = await import("../tools/diff-tools.js");
244
+ const result = await changedSymbols(repo, since, getFlag(flags, "until"));
245
+ output(result, flags);
246
+ }
247
+ // ---------------------------------------------------------------------------
248
+ // Retrieval & utility commands
249
+ // ---------------------------------------------------------------------------
250
+ async function handleRetrieve(args, flags) {
251
+ const repo = requireArg(args, 0, "repo");
252
+ const queriesRaw = getFlag(flags, "queries");
253
+ if (!queriesRaw) {
254
+ die("Missing required flag: --queries <json>");
255
+ }
256
+ let queries;
257
+ try {
258
+ const parsed = JSON.parse(queriesRaw);
259
+ if (!Array.isArray(parsed)) {
260
+ die("--queries must be a JSON array");
261
+ }
262
+ queries = parsed;
263
+ }
264
+ catch {
265
+ die("Invalid JSON for --queries flag");
266
+ }
267
+ // --exclude-tests (default: true) — pass to semantic/hybrid sub-queries
268
+ // Use --no-exclude-tests or --exclude-tests=false to include test files
269
+ const excludeTestsFlag = getBoolFlag(flags, "exclude-tests");
270
+ const excludeTests = excludeTestsFlag !== false; // default true
271
+ if (excludeTests) {
272
+ // Inject exclude_tests into semantic/hybrid sub-queries that don't already specify it
273
+ for (const q of queries) {
274
+ if ((q.type === "semantic" || q.type === "hybrid") && q["exclude_tests"] === undefined) {
275
+ q["exclude_tests"] = true;
276
+ }
277
+ }
278
+ }
279
+ else {
280
+ // Explicitly set false on semantic/hybrid sub-queries
281
+ for (const q of queries) {
282
+ if ((q.type === "semantic" || q.type === "hybrid") && q["exclude_tests"] === undefined) {
283
+ q["exclude_tests"] = false;
284
+ }
285
+ }
286
+ }
287
+ const { codebaseRetrieval } = await import("../retrieval/codebase-retrieval.js");
288
+ const result = await codebaseRetrieval(repo, queries, getNumFlag(flags, "token-budget"));
289
+ output(result, flags);
290
+ }
291
+ async function handleStats(_args, flags) {
292
+ const { getUsageStats, formatUsageReport } = await import("../storage/usage-stats.js");
293
+ const stats = await getUsageStats();
294
+ // If --json flag is set (or default), output raw stats; otherwise formatted report
295
+ if (getBoolFlag(flags, "json") === false) {
296
+ const report = formatUsageReport(stats);
297
+ process.stdout.write(report + "\n");
298
+ }
299
+ else {
300
+ output(stats, flags);
301
+ }
302
+ }
303
+ async function handleGenerateClaudeMd(args, flags) {
304
+ const repo = requireArg(args, 0, "repo");
305
+ const { generateClaudeMd } = await import("../tools/generate-tools.js");
306
+ const result = await generateClaudeMd(repo, getFlag(flags, "output"));
307
+ output(result, flags);
308
+ }
309
+ // ---------------------------------------------------------------------------
310
+ // Command dispatch map
311
+ // ---------------------------------------------------------------------------
312
+ export const COMMAND_MAP = {
313
+ "index": handleIndex,
314
+ "index-repo": handleIndexRepo,
315
+ "repos": handleRepos,
316
+ "invalidate": handleInvalidate,
317
+ "search": handleSearch,
318
+ "symbols": handleSymbols,
319
+ "tree": handleTree,
320
+ "outline": handleOutline,
321
+ "repo-outline": handleRepoOutline,
322
+ "symbol": handleSymbol,
323
+ "symbols-batch": handleSymbolsBatch,
324
+ "find": handleFind,
325
+ "refs": handleRefs,
326
+ "trace": handleTrace,
327
+ "impact": handleImpact,
328
+ "context": handleContext,
329
+ "knowledge-map": handleKnowledgeMap,
330
+ "diff": handleDiff,
331
+ "changed": handleChanged,
332
+ "retrieve": handleRetrieve,
333
+ "stats": handleStats,
334
+ "generate-claude-md": handleGenerateClaudeMd,
335
+ };
336
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const MAIN_HELP = "codesift \u2014 CLI for CodeSift code intelligence\n\nUsage: codesift <command> [options]\n\nCommands:\n index <path> Index a local folder\n index-repo <url> Clone and index a remote git repository\n repos List all indexed repositories\n invalidate <repo> Clear index cache for a repository\n\n search <repo> <query> Full-text search across all files\n symbols <repo> <query> Search symbols by name/signature\n tree <repo> Get file tree with symbol counts\n outline <repo> <file> Get symbol outline of a single file\n repo-outline <repo> High-level repository outline\n\n symbol <repo> <id> Get a single symbol by ID\n symbols-batch <repo> <ids...> Get multiple symbols by ID\n\n find <repo> <query> Find symbol and show source\n refs <repo> <name> Find all references to a symbol\n trace <repo> <name> Trace call chain (callers/callees)\n\n impact <repo> --since <ref> Analyze blast radius of git changes\n context <repo> <query> Assemble relevant code context\n knowledge-map <repo> Module dependency map\n\n diff <repo> --since <ref> Structural diff outline between git refs\n changed <repo> --since <ref> List changed symbols between git refs\n\n retrieve <repo> --queries <json> Batch multiple queries in one call\n stats Show usage statistics\n generate-claude-md <repo> Generate CLAUDE.md project summary\n\nFlags:\n --help Show help for a command\n --version Show version\n --compact Compact JSON output (no indentation)\n --json Full JSON output (for refs, trace commands)\n --include-source Include source code in output (trace, impact)\n\nExamples:\n codesift index /path/to/project\n codesift repos\n codesift search local/my-project \"createUser\"\n codesift symbols local/my-project \"handleRequest\" --kind function\n codesift tree local/my-project --path src/lib --depth 2\n codesift trace local/my-project \"createRisk\" --direction callers --depth 2\n";
2
+ export declare const COMMAND_HELP: Record<string, string>;
3
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,upEAgDrB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA8O/C,CAAC"}
@@ -0,0 +1,271 @@
1
+ // ---------------------------------------------------------------------------
2
+ // CLI help text
3
+ // ---------------------------------------------------------------------------
4
+ export const MAIN_HELP = `codesift — CLI for CodeSift code intelligence
5
+
6
+ Usage: codesift <command> [options]
7
+
8
+ Commands:
9
+ index <path> Index a local folder
10
+ index-repo <url> Clone and index a remote git repository
11
+ repos List all indexed repositories
12
+ invalidate <repo> Clear index cache for a repository
13
+
14
+ search <repo> <query> Full-text search across all files
15
+ symbols <repo> <query> Search symbols by name/signature
16
+ tree <repo> Get file tree with symbol counts
17
+ outline <repo> <file> Get symbol outline of a single file
18
+ repo-outline <repo> High-level repository outline
19
+
20
+ symbol <repo> <id> Get a single symbol by ID
21
+ symbols-batch <repo> <ids...> Get multiple symbols by ID
22
+
23
+ find <repo> <query> Find symbol and show source
24
+ refs <repo> <name> Find all references to a symbol
25
+ trace <repo> <name> Trace call chain (callers/callees)
26
+
27
+ impact <repo> --since <ref> Analyze blast radius of git changes
28
+ context <repo> <query> Assemble relevant code context
29
+ knowledge-map <repo> Module dependency map
30
+
31
+ diff <repo> --since <ref> Structural diff outline between git refs
32
+ changed <repo> --since <ref> List changed symbols between git refs
33
+
34
+ retrieve <repo> --queries <json> Batch multiple queries in one call
35
+ stats Show usage statistics
36
+ generate-claude-md <repo> Generate CLAUDE.md project summary
37
+
38
+ Flags:
39
+ --help Show help for a command
40
+ --version Show version
41
+ --compact Compact JSON output (no indentation)
42
+ --json Full JSON output (for refs, trace commands)
43
+ --include-source Include source code in output (trace, impact)
44
+
45
+ Examples:
46
+ codesift index /path/to/project
47
+ codesift repos
48
+ codesift search local/my-project "createUser"
49
+ codesift symbols local/my-project "handleRequest" --kind function
50
+ codesift tree local/my-project --path src/lib --depth 2
51
+ codesift trace local/my-project "createRisk" --direction callers --depth 2
52
+ `;
53
+ export const COMMAND_HELP = {
54
+ index: `codesift index <path> [options]
55
+
56
+ Index a local folder, extracting symbols and building the search index.
57
+
58
+ Arguments:
59
+ <path> Absolute path to the folder to index
60
+
61
+ Options:
62
+ --incremental Only re-index changed files
63
+ --include-paths Comma-separated path prefixes to include
64
+ --no-watch Disable file watcher for incremental updates`,
65
+ "index-repo": `codesift index-repo <url> [options]
66
+
67
+ Clone and index a remote git repository.
68
+
69
+ Arguments:
70
+ <url> Git clone URL
71
+
72
+ Options:
73
+ --branch Branch to checkout
74
+ --include-paths Comma-separated path prefixes to include`,
75
+ repos: `codesift repos
76
+
77
+ List all indexed repositories with metadata.`,
78
+ invalidate: `codesift invalidate <repo>
79
+
80
+ Clear the index cache for a repository, forcing full re-index on next use.
81
+
82
+ Arguments:
83
+ <repo> Repository identifier (e.g. local/my-project)`,
84
+ search: `codesift search <repo> <query> [options]
85
+
86
+ Full-text search across all files in a repository.
87
+
88
+ Arguments:
89
+ <repo> Repository identifier
90
+ <query> Search query or regex pattern
91
+
92
+ Options:
93
+ --file-pattern Glob pattern to filter files (e.g. "*.ts")
94
+ --regex Treat query as a regex pattern
95
+ --context-lines Number of context lines around each match (default: 2)
96
+ --max-results Maximum number of matching lines (default: 500)`,
97
+ symbols: `codesift symbols <repo> <query> [options]
98
+
99
+ Search for code symbols (functions, classes, types) by name or signature.
100
+
101
+ Arguments:
102
+ <repo> Repository identifier
103
+ <query> Search query string
104
+
105
+ Options:
106
+ --kind Filter by symbol kind (function, class, interface, type, etc.)
107
+ --file-pattern Glob pattern to filter files
108
+ --include-source Include full source code (default: true; sets top-k default to 5)
109
+ --top-k Maximum number of results (default: 50, or 5 with --include-source)
110
+ --source-chars Truncate each symbol's source to N characters`,
111
+ tree: `codesift tree <repo> [options]
112
+
113
+ Get the file tree of a repository with symbol counts per file.
114
+
115
+ Arguments:
116
+ <repo> Repository identifier
117
+
118
+ Options:
119
+ --path Filter to a subtree by path prefix
120
+ --name-pattern Glob pattern to filter file names
121
+ --depth Maximum directory depth
122
+ --compact Return flat list instead of nested tree
123
+ --min-symbols Only include files with at least N symbols`,
124
+ outline: `codesift outline <repo> <file>
125
+
126
+ Get the symbol outline of a single file.
127
+
128
+ Arguments:
129
+ <repo> Repository identifier
130
+ <file> Relative file path within the repository`,
131
+ "repo-outline": `codesift repo-outline <repo>
132
+
133
+ Get a high-level outline of the entire repository grouped by directory.
134
+
135
+ Arguments:
136
+ <repo> Repository identifier`,
137
+ symbol: `codesift symbol <repo> <id>
138
+
139
+ Retrieve a single symbol by its unique ID with full source code.
140
+
141
+ Arguments:
142
+ <repo> Repository identifier
143
+ <id> Unique symbol identifier`,
144
+ "symbols-batch": `codesift symbols-batch <repo> <ids...>
145
+
146
+ Retrieve multiple symbols by ID in a single batch call.
147
+
148
+ Arguments:
149
+ <repo> Repository identifier
150
+ <ids...> Space-separated symbol identifiers`,
151
+ find: `codesift find <repo> <query> [options]
152
+
153
+ Find a symbol by name and show its source.
154
+
155
+ Arguments:
156
+ <repo> Repository identifier
157
+ <query> Symbol name or query to search for
158
+
159
+ Options:
160
+ --include-refs Include locations that reference this symbol`,
161
+ refs: `codesift refs <repo> <name> [options]
162
+
163
+ Find all references to a symbol across the codebase.
164
+
165
+ Arguments:
166
+ <repo> Repository identifier
167
+ <name> Name of the symbol to find references for
168
+
169
+ Options:
170
+ --file-pattern Glob pattern to filter files
171
+ --json Output full JSON instead of compact table`,
172
+ trace: `codesift trace <repo> <name> [options]
173
+
174
+ Trace the call chain of a symbol.
175
+
176
+ Arguments:
177
+ <repo> Repository identifier
178
+ <name> Name of the symbol to trace
179
+
180
+ Options:
181
+ --direction Trace direction: callers or callees (default: callers)
182
+ --depth Maximum depth to traverse (default: 1)
183
+ --include-source Include full source code of each symbol
184
+ --include-tests Include test files in trace results
185
+ --json Output full JSON instead of compact tree`,
186
+ impact: `codesift impact <repo> --since <ref> [options]
187
+
188
+ Analyze the blast radius of recent git changes.
189
+
190
+ Arguments:
191
+ <repo> Repository identifier
192
+
193
+ Options:
194
+ --since Git ref to compare from (required, e.g. HEAD~3, commit SHA)
195
+ --depth Depth of dependency traversal
196
+ --until Git ref to compare to (default: HEAD)`,
197
+ context: `codesift context <repo> <query> [options]
198
+
199
+ Assemble a focused code context for a query within a token budget.
200
+
201
+ Arguments:
202
+ <repo> Repository identifier
203
+ <query> Natural language query describing what context is needed
204
+
205
+ Options:
206
+ --token-budget Maximum tokens for the assembled context`,
207
+ "knowledge-map": `codesift knowledge-map <repo> [options]
208
+
209
+ Get the module dependency map showing how files relate.
210
+
211
+ Arguments:
212
+ <repo> Repository identifier
213
+
214
+ Options:
215
+ --focus Focus on a specific module or directory
216
+ --depth Maximum depth of the dependency graph`,
217
+ diff: `codesift diff <repo> --since <ref> [options]
218
+
219
+ Get a structural outline of what changed between two git refs.
220
+
221
+ Arguments:
222
+ <repo> Repository identifier
223
+
224
+ Options:
225
+ --since Git ref to compare from (required)
226
+ --until Git ref to compare to (default: HEAD)`,
227
+ changed: `codesift changed <repo> --since <ref> [options]
228
+
229
+ List symbols in each changed file between two git refs.
230
+
231
+ Arguments:
232
+ <repo> Repository identifier
233
+
234
+ Options:
235
+ --since Git ref to compare from (required)
236
+ --until Git ref to compare to (default: HEAD)`,
237
+ retrieve: `codesift retrieve <repo> --queries <json> [options]
238
+
239
+ Execute multiple search/retrieval queries in a single batched call.
240
+
241
+ Arguments:
242
+ <repo> Repository identifier
243
+
244
+ Options:
245
+ --queries JSON array of sub-queries (required)
246
+ --token-budget Maximum total tokens across all results
247
+ --exclude-tests Exclude test files from semantic/hybrid results (default: true)
248
+ --exclude-tests=false Include test files in semantic/hybrid results
249
+
250
+ Sub-query types: symbols, text, file_tree, outline, references,
251
+ call_chain, impact, context, knowledge_map, semantic, hybrid
252
+
253
+ Semantic/hybrid sub-queries support an "exclude_tests" field (default: true).
254
+
255
+ Example:
256
+ codesift retrieve local/my-project --queries '[{"type":"symbols","query":"createUser"},{"type":"text","query":"TODO"}]'
257
+ codesift retrieve local/my-project --queries '[{"type":"semantic","query":"caching"}]' --exclude-tests=false`,
258
+ stats: `codesift stats
259
+
260
+ Show usage statistics for all CodeSift tool calls.`,
261
+ "generate-claude-md": `codesift generate-claude-md <repo> [options]
262
+
263
+ Generate a CLAUDE.md project summary from the repository index.
264
+
265
+ Arguments:
266
+ <repo> Repository identifier
267
+
268
+ Options:
269
+ --output Custom output file path`,
270
+ };
271
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDxB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,KAAK,EAAE;;;;;;;;;;iEAUwD;IAE/D,YAAY,EAAE;;;;;;;;;6DAS6C;IAE3D,KAAK,EAAE;;6CAEoC;IAE3C,UAAU,EAAE;;;;;0DAK4C;IAExD,MAAM,EAAE;;;;;;;;;;;;qEAY2D;IAEnE,OAAO,EAAE;;;;;;;;;;;;;mEAawD;IAEjE,IAAI,EAAE;;;;;;;;;;;;+DAYuD;IAE7D,OAAO,EAAE;;;;;;qDAM0C;IAEnD,cAAc,EAAE;;;;;kCAKgB;IAEhC,MAAM,EAAE;;;;;;qCAM2B;IAEnC,eAAe,EAAE;;;;;;iDAM8B;IAE/C,IAAI,EAAE;;;;;;;;;iEASyD;IAE/D,IAAI,EAAE;;;;;;;;;;8DAUsD;IAE5D,KAAK,EAAE;;;;;;;;;;;;;6DAaoD;IAE3D,MAAM,EAAE;;;;;;;;;;mDAUyC;IAEjD,OAAO,EAAE;;;;;;;;;6DASkD;IAE3D,eAAe,EAAE;;;;;;;;;mDASgC;IAEjD,IAAI,EAAE;;;;;;;;;mDAS2C;IAEjD,OAAO,EAAE;;;;;;;;;mDASwC;IAEjD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;+GAoBmG;IAE7G,KAAK,EAAE;;mDAE0C;IAEjD,oBAAoB,EAAE;;;;;;;;sCAQc;CACrC,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}