codesift-mcp 0.1.0 → 0.2.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 (299) hide show
  1. package/LICENSE +66 -21
  2. package/README.md +346 -56
  3. package/dist/cli/args.d.ts +2 -0
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +11 -0
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/cli/commands.d.ts.map +1 -1
  8. package/dist/cli/commands.js +177 -67
  9. package/dist/cli/commands.js.map +1 -1
  10. package/dist/cli/help.d.ts +1 -1
  11. package/dist/cli/help.d.ts.map +1 -1
  12. package/dist/cli/help.js +157 -0
  13. package/dist/cli/help.js.map +1 -1
  14. package/dist/cli/hooks.d.ts +3 -0
  15. package/dist/cli/hooks.d.ts.map +1 -0
  16. package/dist/cli/hooks.js +163 -0
  17. package/dist/cli/hooks.js.map +1 -0
  18. package/dist/cli/setup.d.ts +25 -0
  19. package/dist/cli/setup.d.ts.map +1 -0
  20. package/dist/cli/setup.js +400 -0
  21. package/dist/cli/setup.js.map +1 -0
  22. package/dist/config.d.ts +2 -0
  23. package/dist/config.d.ts.map +1 -1
  24. package/dist/config.js +2 -0
  25. package/dist/config.js.map +1 -1
  26. package/dist/formatters-shortening.d.ts +7 -0
  27. package/dist/formatters-shortening.d.ts.map +1 -0
  28. package/dist/formatters-shortening.js +68 -0
  29. package/dist/formatters-shortening.js.map +1 -0
  30. package/dist/formatters.d.ts +314 -0
  31. package/dist/formatters.d.ts.map +1 -0
  32. package/dist/formatters.js +396 -0
  33. package/dist/formatters.js.map +1 -0
  34. package/dist/instructions.d.ts +6 -0
  35. package/dist/instructions.d.ts.map +1 -0
  36. package/dist/instructions.js +72 -0
  37. package/dist/instructions.js.map +1 -0
  38. package/dist/lsp/lsp-client.d.ts +21 -0
  39. package/dist/lsp/lsp-client.d.ts.map +1 -0
  40. package/dist/lsp/lsp-client.js +122 -0
  41. package/dist/lsp/lsp-client.js.map +1 -0
  42. package/dist/lsp/lsp-manager.d.ts +12 -0
  43. package/dist/lsp/lsp-manager.d.ts.map +1 -0
  44. package/dist/lsp/lsp-manager.js +82 -0
  45. package/dist/lsp/lsp-manager.js.map +1 -0
  46. package/dist/lsp/lsp-servers.d.ts +13 -0
  47. package/dist/lsp/lsp-servers.d.ts.map +1 -0
  48. package/dist/lsp/lsp-servers.js +57 -0
  49. package/dist/lsp/lsp-servers.js.map +1 -0
  50. package/dist/lsp/lsp-tools.d.ts +67 -0
  51. package/dist/lsp/lsp-tools.d.ts.map +1 -0
  52. package/dist/lsp/lsp-tools.js +359 -0
  53. package/dist/lsp/lsp-tools.js.map +1 -0
  54. package/dist/parser/extractors/_shared.d.ts +11 -0
  55. package/dist/parser/extractors/_shared.d.ts.map +1 -0
  56. package/dist/parser/extractors/_shared.js +38 -0
  57. package/dist/parser/extractors/_shared.js.map +1 -0
  58. package/dist/parser/extractors/astro.d.ts +15 -0
  59. package/dist/parser/extractors/astro.d.ts.map +1 -0
  60. package/dist/parser/extractors/astro.js +104 -0
  61. package/dist/parser/extractors/astro.js.map +1 -0
  62. package/dist/parser/extractors/conversation.d.ts +16 -0
  63. package/dist/parser/extractors/conversation.d.ts.map +1 -0
  64. package/dist/parser/extractors/conversation.js +196 -0
  65. package/dist/parser/extractors/conversation.js.map +1 -0
  66. package/dist/parser/extractors/go.d.ts.map +1 -1
  67. package/dist/parser/extractors/go.js +22 -45
  68. package/dist/parser/extractors/go.js.map +1 -1
  69. package/dist/parser/extractors/python.d.ts +1 -1
  70. package/dist/parser/extractors/python.d.ts.map +1 -1
  71. package/dist/parser/extractors/python.js +19 -50
  72. package/dist/parser/extractors/python.js.map +1 -1
  73. package/dist/parser/extractors/rust.d.ts +1 -1
  74. package/dist/parser/extractors/rust.d.ts.map +1 -1
  75. package/dist/parser/extractors/rust.js +7 -34
  76. package/dist/parser/extractors/rust.js.map +1 -1
  77. package/dist/parser/extractors/typescript.d.ts +1 -1
  78. package/dist/parser/extractors/typescript.d.ts.map +1 -1
  79. package/dist/parser/extractors/typescript.js +99 -68
  80. package/dist/parser/extractors/typescript.js.map +1 -1
  81. package/dist/parser/parser-manager.d.ts.map +1 -1
  82. package/dist/parser/parser-manager.js +12 -2
  83. package/dist/parser/parser-manager.js.map +1 -1
  84. package/dist/parser/symbol-extractor.d.ts +2 -0
  85. package/dist/parser/symbol-extractor.d.ts.map +1 -1
  86. package/dist/parser/symbol-extractor.js +2 -0
  87. package/dist/parser/symbol-extractor.js.map +1 -1
  88. package/dist/register-tools.d.ts +127 -0
  89. package/dist/register-tools.d.ts.map +1 -0
  90. package/dist/register-tools.js +1453 -0
  91. package/dist/register-tools.js.map +1 -0
  92. package/dist/retrieval/codebase-retrieval.d.ts +4 -26
  93. package/dist/retrieval/codebase-retrieval.d.ts.map +1 -1
  94. package/dist/retrieval/codebase-retrieval.js +105 -403
  95. package/dist/retrieval/codebase-retrieval.js.map +1 -1
  96. package/dist/retrieval/retrieval-constants.d.ts +27 -0
  97. package/dist/retrieval/retrieval-constants.d.ts.map +1 -0
  98. package/dist/retrieval/retrieval-constants.js +27 -0
  99. package/dist/retrieval/retrieval-constants.js.map +1 -0
  100. package/dist/retrieval/retrieval-schemas.d.ts +107 -0
  101. package/dist/retrieval/retrieval-schemas.d.ts.map +1 -0
  102. package/dist/retrieval/retrieval-schemas.js +102 -0
  103. package/dist/retrieval/retrieval-schemas.js.map +1 -0
  104. package/dist/retrieval/retrieval-utils.d.ts +40 -0
  105. package/dist/retrieval/retrieval-utils.d.ts.map +1 -0
  106. package/dist/retrieval/retrieval-utils.js +139 -0
  107. package/dist/retrieval/retrieval-utils.js.map +1 -0
  108. package/dist/retrieval/semantic-handlers.d.ts +8 -0
  109. package/dist/retrieval/semantic-handlers.d.ts.map +1 -0
  110. package/dist/retrieval/semantic-handlers.js +152 -0
  111. package/dist/retrieval/semantic-handlers.js.map +1 -0
  112. package/dist/search/bm25.d.ts +6 -1
  113. package/dist/search/bm25.d.ts.map +1 -1
  114. package/dist/search/bm25.js +95 -32
  115. package/dist/search/bm25.js.map +1 -1
  116. package/dist/search/chunker.d.ts +10 -0
  117. package/dist/search/chunker.d.ts.map +1 -1
  118. package/dist/search/chunker.js +63 -11
  119. package/dist/search/chunker.js.map +1 -1
  120. package/dist/search/reranker.d.ts +15 -0
  121. package/dist/search/reranker.d.ts.map +1 -0
  122. package/dist/search/reranker.js +126 -0
  123. package/dist/search/reranker.js.map +1 -0
  124. package/dist/search/semantic.d.ts +1 -1
  125. package/dist/search/semantic.d.ts.map +1 -1
  126. package/dist/search/semantic.js +40 -45
  127. package/dist/search/semantic.js.map +1 -1
  128. package/dist/server-helpers.d.ts +29 -0
  129. package/dist/server-helpers.d.ts.map +1 -0
  130. package/dist/server-helpers.js +312 -0
  131. package/dist/server-helpers.js.map +1 -0
  132. package/dist/server.d.ts +1 -1
  133. package/dist/server.d.ts.map +1 -1
  134. package/dist/server.js +11 -271
  135. package/dist/server.js.map +1 -1
  136. package/dist/storage/_shared.d.ts +9 -0
  137. package/dist/storage/_shared.d.ts.map +1 -0
  138. package/dist/storage/_shared.js +26 -0
  139. package/dist/storage/_shared.js.map +1 -0
  140. package/dist/storage/chunk-store.d.ts.map +1 -1
  141. package/dist/storage/chunk-store.js +23 -63
  142. package/dist/storage/chunk-store.js.map +1 -1
  143. package/dist/storage/embedding-store.d.ts +6 -3
  144. package/dist/storage/embedding-store.d.ts.map +1 -1
  145. package/dist/storage/embedding-store.js +54 -30
  146. package/dist/storage/embedding-store.js.map +1 -1
  147. package/dist/storage/graph-store.d.ts +48 -0
  148. package/dist/storage/graph-store.d.ts.map +1 -0
  149. package/dist/storage/graph-store.js +52 -0
  150. package/dist/storage/graph-store.js.map +1 -0
  151. package/dist/storage/index-store.d.ts +5 -0
  152. package/dist/storage/index-store.d.ts.map +1 -1
  153. package/dist/storage/index-store.js +28 -16
  154. package/dist/storage/index-store.js.map +1 -1
  155. package/dist/storage/registry.d.ts +4 -0
  156. package/dist/storage/registry.d.ts.map +1 -1
  157. package/dist/storage/registry.js +16 -16
  158. package/dist/storage/registry.js.map +1 -1
  159. package/dist/storage/usage-stats.d.ts +6 -0
  160. package/dist/storage/usage-stats.d.ts.map +1 -1
  161. package/dist/storage/usage-stats.js +59 -11
  162. package/dist/storage/usage-stats.js.map +1 -1
  163. package/dist/storage/usage-tracker.d.ts +3 -0
  164. package/dist/storage/usage-tracker.d.ts.map +1 -1
  165. package/dist/storage/usage-tracker.js +50 -132
  166. package/dist/storage/usage-tracker.js.map +1 -1
  167. package/dist/storage/watcher.d.ts +2 -1
  168. package/dist/storage/watcher.d.ts.map +1 -1
  169. package/dist/storage/watcher.js +16 -16
  170. package/dist/storage/watcher.js.map +1 -1
  171. package/dist/tools/ast-query-tools.d.ts +29 -0
  172. package/dist/tools/ast-query-tools.d.ts.map +1 -0
  173. package/dist/tools/ast-query-tools.js +110 -0
  174. package/dist/tools/ast-query-tools.js.map +1 -0
  175. package/dist/tools/boundary-tools.d.ts +31 -0
  176. package/dist/tools/boundary-tools.d.ts.map +1 -0
  177. package/dist/tools/boundary-tools.js +62 -0
  178. package/dist/tools/boundary-tools.js.map +1 -0
  179. package/dist/tools/clone-tools.d.ts +35 -0
  180. package/dist/tools/clone-tools.d.ts.map +1 -0
  181. package/dist/tools/clone-tools.js +181 -0
  182. package/dist/tools/clone-tools.js.map +1 -0
  183. package/dist/tools/community-tools.d.ts +23 -0
  184. package/dist/tools/community-tools.d.ts.map +1 -0
  185. package/dist/tools/community-tools.js +297 -0
  186. package/dist/tools/community-tools.js.map +1 -0
  187. package/dist/tools/complexity-tools.d.ts +34 -0
  188. package/dist/tools/complexity-tools.d.ts.map +1 -0
  189. package/dist/tools/complexity-tools.js +135 -0
  190. package/dist/tools/complexity-tools.js.map +1 -0
  191. package/dist/tools/context-tools.d.ts +44 -3
  192. package/dist/tools/context-tools.d.ts.map +1 -1
  193. package/dist/tools/context-tools.js +329 -99
  194. package/dist/tools/context-tools.js.map +1 -1
  195. package/dist/tools/conversation-tools.d.ts +107 -0
  196. package/dist/tools/conversation-tools.d.ts.map +1 -0
  197. package/dist/tools/conversation-tools.js +419 -0
  198. package/dist/tools/conversation-tools.js.map +1 -0
  199. package/dist/tools/coordinator-tools.d.ts +73 -0
  200. package/dist/tools/coordinator-tools.d.ts.map +1 -0
  201. package/dist/tools/coordinator-tools.js +153 -0
  202. package/dist/tools/coordinator-tools.js.map +1 -0
  203. package/dist/tools/cross-repo-tools.d.ts +43 -0
  204. package/dist/tools/cross-repo-tools.d.ts.map +1 -0
  205. package/dist/tools/cross-repo-tools.js +55 -0
  206. package/dist/tools/cross-repo-tools.js.map +1 -0
  207. package/dist/tools/diff-tools.d.ts +4 -1
  208. package/dist/tools/diff-tools.d.ts.map +1 -1
  209. package/dist/tools/diff-tools.js +23 -5
  210. package/dist/tools/diff-tools.js.map +1 -1
  211. package/dist/tools/frequency-tools.d.ts +46 -0
  212. package/dist/tools/frequency-tools.d.ts.map +1 -0
  213. package/dist/tools/frequency-tools.js +184 -0
  214. package/dist/tools/frequency-tools.js.map +1 -0
  215. package/dist/tools/generate-tools.d.ts.map +1 -1
  216. package/dist/tools/generate-tools.js +13 -2
  217. package/dist/tools/generate-tools.js.map +1 -1
  218. package/dist/tools/graph-tools.d.ts +44 -11
  219. package/dist/tools/graph-tools.d.ts.map +1 -1
  220. package/dist/tools/graph-tools.js +147 -104
  221. package/dist/tools/graph-tools.js.map +1 -1
  222. package/dist/tools/hotspot-tools.d.ts +24 -0
  223. package/dist/tools/hotspot-tools.d.ts.map +1 -0
  224. package/dist/tools/hotspot-tools.js +122 -0
  225. package/dist/tools/hotspot-tools.js.map +1 -0
  226. package/dist/tools/impact-tools.d.ts +13 -0
  227. package/dist/tools/impact-tools.d.ts.map +1 -0
  228. package/dist/tools/impact-tools.js +238 -0
  229. package/dist/tools/impact-tools.js.map +1 -0
  230. package/dist/tools/index-tools.d.ts +44 -3
  231. package/dist/tools/index-tools.d.ts.map +1 -1
  232. package/dist/tools/index-tools.js +530 -222
  233. package/dist/tools/index-tools.js.map +1 -1
  234. package/dist/tools/memory-tools.d.ts +35 -0
  235. package/dist/tools/memory-tools.d.ts.map +1 -0
  236. package/dist/tools/memory-tools.js +229 -0
  237. package/dist/tools/memory-tools.js.map +1 -0
  238. package/dist/tools/outline-tools.d.ts +24 -13
  239. package/dist/tools/outline-tools.d.ts.map +1 -1
  240. package/dist/tools/outline-tools.js +113 -87
  241. package/dist/tools/outline-tools.js.map +1 -1
  242. package/dist/tools/pattern-tools.d.ts +32 -0
  243. package/dist/tools/pattern-tools.d.ts.map +1 -0
  244. package/dist/tools/pattern-tools.js +116 -0
  245. package/dist/tools/pattern-tools.js.map +1 -0
  246. package/dist/tools/report-tools.d.ts +5 -0
  247. package/dist/tools/report-tools.d.ts.map +1 -0
  248. package/dist/tools/report-tools.js +167 -0
  249. package/dist/tools/report-tools.js.map +1 -0
  250. package/dist/tools/review-diff-tools.d.ts +148 -0
  251. package/dist/tools/review-diff-tools.d.ts.map +1 -0
  252. package/dist/tools/review-diff-tools.js +852 -0
  253. package/dist/tools/review-diff-tools.js.map +1 -0
  254. package/dist/tools/route-tools.d.ts +32 -0
  255. package/dist/tools/route-tools.d.ts.map +1 -0
  256. package/dist/tools/route-tools.js +276 -0
  257. package/dist/tools/route-tools.js.map +1 -0
  258. package/dist/tools/search-ranker.d.ts +5 -0
  259. package/dist/tools/search-ranker.d.ts.map +1 -0
  260. package/dist/tools/search-ranker.js +142 -0
  261. package/dist/tools/search-ranker.js.map +1 -0
  262. package/dist/tools/search-tools.d.ts +24 -1
  263. package/dist/tools/search-tools.d.ts.map +1 -1
  264. package/dist/tools/search-tools.js +459 -225
  265. package/dist/tools/search-tools.js.map +1 -1
  266. package/dist/tools/secret-tools.d.ts +104 -0
  267. package/dist/tools/secret-tools.d.ts.map +1 -0
  268. package/dist/tools/secret-tools.js +410 -0
  269. package/dist/tools/secret-tools.js.map +1 -0
  270. package/dist/tools/symbol-tools.d.ts +90 -2
  271. package/dist/tools/symbol-tools.d.ts.map +1 -1
  272. package/dist/tools/symbol-tools.js +576 -42
  273. package/dist/tools/symbol-tools.js.map +1 -1
  274. package/dist/types.d.ts +34 -1
  275. package/dist/types.d.ts.map +1 -1
  276. package/dist/utils/framework-detect.d.ts +5 -0
  277. package/dist/utils/framework-detect.d.ts.map +1 -0
  278. package/dist/utils/framework-detect.js +36 -0
  279. package/dist/utils/framework-detect.js.map +1 -0
  280. package/dist/utils/glob.d.ts +19 -0
  281. package/dist/utils/glob.d.ts.map +1 -0
  282. package/dist/utils/glob.js +74 -0
  283. package/dist/utils/glob.js.map +1 -0
  284. package/dist/utils/import-graph.d.ts +29 -0
  285. package/dist/utils/import-graph.d.ts.map +1 -0
  286. package/dist/utils/import-graph.js +125 -0
  287. package/dist/utils/import-graph.js.map +1 -0
  288. package/dist/utils/test-file.d.ts.map +1 -1
  289. package/dist/utils/test-file.js +1 -0
  290. package/dist/utils/test-file.js.map +1 -1
  291. package/dist/utils/walk.d.ts +45 -0
  292. package/dist/utils/walk.d.ts.map +1 -0
  293. package/dist/utils/walk.js +87 -0
  294. package/dist/utils/walk.js.map +1 -0
  295. package/package.json +10 -4
  296. package/rules/codesift.md +187 -0
  297. package/rules/codesift.mdc +192 -0
  298. package/rules/codex.md +187 -0
  299. package/rules/gemini.md +187 -0
package/dist/cli/help.js CHANGED
@@ -10,6 +10,7 @@ Commands:
10
10
  index-repo <url> Clone and index a remote git repository
11
11
  repos List all indexed repositories
12
12
  invalidate <repo> Clear index cache for a repository
13
+ index-conversations [path] Index Claude Code conversations for the current project
13
14
 
14
15
  search <repo> <query> Full-text search across all files
15
16
  symbols <repo> <query> Search symbols by name/signature
@@ -35,6 +36,18 @@ Commands:
35
36
  stats Show usage statistics
36
37
  generate-claude-md <repo> Generate CLAUDE.md project summary
37
38
 
39
+ complexity <repo> Analyze cyclomatic complexity of functions
40
+ dead-code <repo> Find potentially dead (unreferenced) exports
41
+ hotspots <repo> Analyze git churn hotspots
42
+ communities <repo> Detect code clusters via community detection
43
+ patterns <repo> --pattern <name> Search for structural code patterns
44
+ find-clones <repo> Find copy-paste code clones
45
+
46
+ setup <platform> Configure codesift-mcp in an AI coding tool
47
+ Platforms: codex, claude, cursor, gemini, all
48
+ precheck-read PreToolUse hook: deny large file reads (hook handler)
49
+ postindex-file PostToolUse hook: re-index edited files (hook handler)
50
+
38
51
  Flags:
39
52
  --help Show help for a command
40
53
  --version Show version
@@ -43,6 +56,10 @@ Flags:
43
56
  --include-source Include source code in output (trace, impact)
44
57
 
45
58
  Examples:
59
+ codesift setup codex Set up MCP in OpenAI Codex
60
+ codesift setup claude Set up MCP in Claude Code
61
+ codesift setup gemini Set up MCP in Gemini CLI
62
+ codesift setup all Set up MCP in all platforms
46
63
  codesift index /path/to/project
47
64
  codesift repos
48
65
  codesift search local/my-project "createUser"
@@ -72,6 +89,16 @@ Arguments:
72
89
  Options:
73
90
  --branch Branch to checkout
74
91
  --include-paths Comma-separated path prefixes to include`,
92
+ "index-conversations": `codesift index-conversations [project-path] [options]
93
+
94
+ Index Claude Code conversation JSONL files for the current project.
95
+
96
+ Arguments:
97
+ [project-path] Optional path to a Claude conversation directory. If omitted,
98
+ derives ~/.claude/projects/<encoded-cwd> from the current cwd.
99
+
100
+ Options:
101
+ --quiet Suppress JSON output (used by the Claude Stop hook)`,
75
102
  repos: `codesift repos
76
103
 
77
104
  List all indexed repositories with metadata.`,
@@ -267,5 +294,135 @@ Arguments:
267
294
 
268
295
  Options:
269
296
  --output Custom output file path`,
297
+ complexity: `codesift complexity <repo> [options]
298
+
299
+ Analyze cyclomatic complexity of functions in a repository.
300
+
301
+ Arguments:
302
+ <repo> Repository identifier
303
+
304
+ Options:
305
+ --file-pattern Filter to files matching this path substring
306
+ --top-n Return top N most complex functions (default: 30)
307
+ --min-complexity Minimum cyclomatic complexity to include (default: 1)
308
+ --include-tests Include test files (default: false)`,
309
+ "dead-code": `codesift dead-code <repo> [options]
310
+
311
+ Find potentially dead code: exported symbols with zero references outside their defining file.
312
+
313
+ Arguments:
314
+ <repo> Repository identifier
315
+
316
+ Options:
317
+ --file-pattern Filter to files matching this path substring
318
+ --include-tests Include test files in scan (default: false)`,
319
+ hotspots: `codesift hotspots <repo> [options]
320
+
321
+ Analyze git churn hotspots: files with high change frequency x complexity.
322
+
323
+ Arguments:
324
+ <repo> Repository identifier
325
+
326
+ Options:
327
+ --since-days Look back N days (default: 90)
328
+ --top-n Return top N hotspots (default: 30)
329
+ --file-pattern Filter to files matching this path substring`,
330
+ communities: `codesift communities <repo> [options]
331
+
332
+ Detect code clusters/modules using Louvain community detection on the import graph.
333
+
334
+ Arguments:
335
+ <repo> Repository identifier
336
+
337
+ Options:
338
+ --focus Path substring to filter files (e.g. 'src/lib')
339
+ --resolution Louvain resolution: higher = more smaller communities (default: 1.0)
340
+ --output-format Output format: 'json' (default) or 'mermaid'`,
341
+ patterns: `codesift patterns <repo> --pattern <name> [options]
342
+
343
+ Search for structural code patterns (anti-patterns, CQ violations).
344
+
345
+ Arguments:
346
+ <repo> Repository identifier
347
+
348
+ Options:
349
+ --pattern Pattern name or custom regex (required)
350
+ --file-pattern Filter to files matching this path substring
351
+ --include-tests Include test files (default: false)
352
+ --max-results Max results (default: 50)
353
+
354
+ Built-in patterns: useEffect-no-cleanup, empty-catch, any-type, console-log,
355
+ await-in-loop, no-error-type, toctou, unbounded-findmany`,
356
+ "find-clones": `codesift find-clones <repo> [options]
357
+
358
+ Find code clones: pairs of functions with similar normalized source (copy-paste detection).
359
+
360
+ Arguments:
361
+ <repo> Repository identifier
362
+
363
+ Options:
364
+ --file-pattern Filter to files matching this path substring
365
+ --threshold Minimum similarity threshold 0-1 (default: 0.7)
366
+ --min-lines Minimum normalized lines to consider (default: 10)
367
+ --include-tests Include test files (default: false)`,
368
+ "precheck-read": `codesift precheck-read
369
+
370
+ PreToolUse hook handler for the Read tool.
371
+ Exits 2 (deny) when the agent attempts to read a large code file, redirecting
372
+ to CodeSift tools instead. Exits 0 (allow) otherwise.
373
+
374
+ This command is designed to be installed as a Claude Code PreToolUse hook via:
375
+ codesift setup claude --hooks
376
+
377
+ Env vars:
378
+ HOOK_TOOL_INPUT JSON with tool_input.file_path (set by Claude Code)
379
+ CODESIFT_READ_HOOK_MIN_LINES Override line threshold (default: 200)`,
380
+ "postindex-file": `codesift postindex-file
381
+
382
+ PostToolUse hook handler for Write/Edit tools.
383
+ Re-indexes the file that was just written or edited, keeping the CodeSift index
384
+ in sync with the agent's edits. Always exits 0 (fire-and-forget).
385
+
386
+ This command is designed to be installed as a Claude Code PostToolUse hook via:
387
+ codesift setup claude --hooks
388
+
389
+ Env vars:
390
+ HOOK_TOOL_INPUT JSON with tool_input.file_path (set by Claude Code)`,
391
+ setup: `codesift setup <platform>
392
+
393
+ Configure codesift-mcp as an MCP server in an AI coding tool.
394
+ By default, installs the MCP server config, rules file, and hooks (where supported).
395
+
396
+ Platforms:
397
+ codex Add to ~/.codex/config.toml + AGENTS.md rules (OpenAI Codex CLI & IDE)
398
+ claude Add to ~/.claude/settings.json + rules + hooks (Claude Code)
399
+ cursor Add to ~/.cursor/mcp.json + .cursor/rules/codesift.mdc (Cursor IDE)
400
+ gemini Add to ~/.gemini/settings.json + GEMINI.md rules (Gemini CLI)
401
+ all Configure all platforms at once
402
+
403
+ Options:
404
+ --json Output result as JSON instead of human-readable text
405
+ --hooks (claude only) Install PreToolUse + PostToolUse hooks (default: on for claude)
406
+ --no-hooks Skip hook installation
407
+ --rules Install platform rules file (default: on)
408
+ --no-rules Skip rules file installation
409
+ --force Overwrite rules file even if it has been modified by the user
410
+
411
+ What it does:
412
+ - Creates the config file if it doesn't exist
413
+ - Adds the codesift MCP server entry if not already present
414
+ - Installs the CodeSift rules file for the platform (use --no-rules to skip)
415
+ - Installs Claude Code hooks for claude platform (use --no-hooks to skip)
416
+ - Skips if already configured (safe to run multiple times)
417
+
418
+ Examples:
419
+ codesift setup codex
420
+ codesift setup claude
421
+ codesift setup claude --no-hooks
422
+ codesift setup claude --no-rules
423
+ codesift setup claude --force
424
+ codesift setup cursor
425
+ codesift setup gemini
426
+ codesift setup all`,
270
427
  };
271
428
  //# sourceMappingURL=help.js.map
@@ -1 +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"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiExB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,KAAK,EAAE;;;;;;;;;;iEAUwD;IAE/D,YAAY,EAAE;;;;;;;;;6DAS6C;IAE3D,qBAAqB,EAAE;;;;;;;;;wEAS+C;IAEtE,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;IAEpC,UAAU,EAAE;;;;;;;;;;;0DAW4C;IAExD,WAAW,EAAE;;;;;;;;;iEASkD;IAE/D,QAAQ,EAAE;;;;;;;;;;kEAUsD;IAEhE,WAAW,EAAE;;;;;;;;;;kEAUmD;IAEhE,QAAQ,EAAE;;;;;;;;;;;;;;2DAc+C;IAEzD,aAAa,EAAE;;;;;;;;;;;yDAWwC;IAEvD,eAAe,EAAE;;;;;;;;;;;yEAWsD;IAEvE,gBAAgB,EAAE;;;;;;;;;;yEAUqD;IAEvE,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAmCY;CACpB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function handlePrecheckRead(): Promise<void>;
2
+ export declare function handlePostindexFile(): Promise<void>;
3
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"AAgDA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsExD;AAcD,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiDzD"}
@@ -0,0 +1,163 @@
1
+ // ---------------------------------------------------------------------------
2
+ // CLI hooks — Claude Code PreToolUse / PostToolUse hook handlers
3
+ // ---------------------------------------------------------------------------
4
+ // Exit codes: 0 = allow, 2 = deny (with redirect message on stdout)
5
+ // The hook command receives tool input via HOOK_TOOL_INPUT env var as JSON.
6
+ // ---------------------------------------------------------------------------
7
+ import { readFileSync } from "node:fs";
8
+ import { extname } from "node:path";
9
+ // ---------------------------------------------------------------------------
10
+ // Constants
11
+ // ---------------------------------------------------------------------------
12
+ const CODE_EXTENSIONS = new Set([
13
+ ".ts",
14
+ ".tsx",
15
+ ".js",
16
+ ".jsx",
17
+ ".py",
18
+ ".go",
19
+ ".rs",
20
+ ".java",
21
+ ".c",
22
+ ".cpp",
23
+ ".cs",
24
+ ".rb",
25
+ ".php",
26
+ ".swift",
27
+ ".kt",
28
+ ".scala",
29
+ ".vue",
30
+ ".svelte",
31
+ ]);
32
+ const DEFAULT_MIN_LINES = 200;
33
+ // ---------------------------------------------------------------------------
34
+ // handlePrecheckRead
35
+ //
36
+ // PreToolUse hook for the Read tool. When the agent attempts to read a large
37
+ // code file, deny the read and redirect to CodeSift tools instead.
38
+ //
39
+ // Env vars:
40
+ // HOOK_TOOL_INPUT — JSON string with tool_input.file_path
41
+ // CODESIFT_READ_HOOK_MIN_LINES — override the line threshold (default: 200)
42
+ // ---------------------------------------------------------------------------
43
+ export async function handlePrecheckRead() {
44
+ try {
45
+ const input = process.env["HOOK_TOOL_INPUT"];
46
+ if (!input) {
47
+ process.exit(0);
48
+ return;
49
+ }
50
+ let parsed;
51
+ try {
52
+ parsed = JSON.parse(input);
53
+ }
54
+ catch {
55
+ // Malformed JSON — allow (never block the agent on hook errors)
56
+ process.exit(0);
57
+ return;
58
+ }
59
+ const filePath = parsed !== null &&
60
+ typeof parsed === "object" &&
61
+ "tool_input" in parsed &&
62
+ parsed.tool_input !== null &&
63
+ typeof parsed.tool_input === "object" &&
64
+ "file_path" in parsed.tool_input &&
65
+ typeof parsed.tool_input.file_path === "string"
66
+ ? parsed.tool_input.file_path
67
+ : null;
68
+ if (!filePath) {
69
+ process.exit(0);
70
+ return;
71
+ }
72
+ const ext = extname(filePath).toLowerCase();
73
+ if (!CODE_EXTENSIONS.has(ext)) {
74
+ process.exit(0);
75
+ return;
76
+ }
77
+ const minLinesEnv = process.env["CODESIFT_READ_HOOK_MIN_LINES"];
78
+ const parsed_min = minLinesEnv ? parseInt(minLinesEnv, 10) : NaN;
79
+ const minLines = Number.isNaN(parsed_min) ? DEFAULT_MIN_LINES : parsed_min;
80
+ let content;
81
+ try {
82
+ content = readFileSync(filePath, "utf-8");
83
+ }
84
+ catch {
85
+ // File not found or unreadable — allow
86
+ process.exit(0);
87
+ return;
88
+ }
89
+ const lineCount = content.split("\n").length;
90
+ if (lineCount >= minLines) {
91
+ const relPath = filePath.split("/").slice(-3).join("/");
92
+ process.stdout.write(`File ${relPath} has ${lineCount} lines. Use CodeSift tools instead:\n` +
93
+ ` get_file_outline(repo, "${relPath}") for structure\n` +
94
+ ` search_text(repo, "query", file_pattern="${relPath}") for specific content\n` +
95
+ ` get_symbol(repo, "symbol_id") for a specific function\n`);
96
+ process.exit(2);
97
+ return;
98
+ }
99
+ process.exit(0);
100
+ }
101
+ catch {
102
+ // CQ8: never crash — always fall back to allow so the agent is not blocked
103
+ process.exit(0);
104
+ }
105
+ }
106
+ // ---------------------------------------------------------------------------
107
+ // handlePostindexFile
108
+ //
109
+ // PostToolUse hook for Write/Edit tools. When the agent writes or edits a
110
+ // code file, re-index that file so the CodeSift index stays up to date.
111
+ //
112
+ // Env vars:
113
+ // HOOK_TOOL_INPUT — JSON string with tool_input.file_path
114
+ //
115
+ // Always exits 0 (fire-and-forget — never block the agent on hook errors).
116
+ // ---------------------------------------------------------------------------
117
+ export async function handlePostindexFile() {
118
+ try {
119
+ const input = process.env["HOOK_TOOL_INPUT"];
120
+ if (!input) {
121
+ process.exit(0);
122
+ return;
123
+ }
124
+ let parsed;
125
+ try {
126
+ parsed = JSON.parse(input);
127
+ }
128
+ catch {
129
+ process.exit(0);
130
+ return;
131
+ }
132
+ const filePath = parsed !== null &&
133
+ typeof parsed === "object" &&
134
+ "tool_input" in parsed &&
135
+ parsed.tool_input !== null &&
136
+ typeof parsed.tool_input === "object" &&
137
+ "file_path" in parsed.tool_input &&
138
+ typeof parsed.tool_input.file_path === "string"
139
+ ? parsed.tool_input.file_path
140
+ : null;
141
+ if (!filePath) {
142
+ process.exit(0);
143
+ return;
144
+ }
145
+ const ext = extname(filePath).toLowerCase();
146
+ if (!CODE_EXTENSIONS.has(ext)) {
147
+ process.exit(0);
148
+ return;
149
+ }
150
+ try {
151
+ const { indexFile } = await import("../tools/index-tools.js");
152
+ await indexFile(filePath);
153
+ }
154
+ catch {
155
+ // CQ8: fire-and-forget — never crash, never block the agent
156
+ }
157
+ process.exit(0);
158
+ }
159
+ catch {
160
+ process.exit(0);
161
+ }
162
+ }
163
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export declare const SUPPORTED_PLATFORMS: readonly ["codex", "claude", "cursor", "gemini"];
2
+ export type Platform = (typeof SUPPORTED_PLATFORMS)[number];
3
+ export interface SetupResult {
4
+ platform: string;
5
+ config_path: string;
6
+ status: "created" | "updated" | "already_configured";
7
+ }
8
+ export interface InstallRulesResult {
9
+ path: string;
10
+ action: "created" | "updated" | "skipped" | "force-updated" | "error";
11
+ warning?: string;
12
+ error?: string;
13
+ }
14
+ export declare function installRules(platform: string, homeDir: string, options?: SetupOptions): Promise<InstallRulesResult>;
15
+ export declare function setupClaudeHooks(): Promise<void>;
16
+ export interface SetupOptions {
17
+ hooks?: boolean;
18
+ rules?: boolean;
19
+ force?: boolean;
20
+ }
21
+ export declare function setup(platform: string, options?: SetupOptions): Promise<SetupResult>;
22
+ export declare function setupAll(options?: SetupOptions): Promise<SetupResult[]>;
23
+ export declare function formatSetupResult(result: SetupResult, rulesResult?: InstallRulesResult): string;
24
+ export declare function formatSetupLines(platform: string, options?: SetupOptions): Promise<string[]>;
25
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,mBAAmB,kDAAmD,CAAC;AACpF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,oBAAoB,CAAC;CACtD;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,OAAO,CAAC;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsID,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,kBAAkB,CAAC,CA+F7B;AAkID,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiCtD;AAMD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AASD,wBAAsB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAe1F;AAED,wBAAsB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAO7E;AAkBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAM/F;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CAyBnB"}