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.
- package/LICENSE +66 -21
- package/README.md +346 -56
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +11 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +177 -67
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +157 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/hooks.d.ts +3 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +163 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/setup.d.ts +25 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +400 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/formatters-shortening.d.ts +7 -0
- package/dist/formatters-shortening.d.ts.map +1 -0
- package/dist/formatters-shortening.js +68 -0
- package/dist/formatters-shortening.js.map +1 -0
- package/dist/formatters.d.ts +314 -0
- package/dist/formatters.d.ts.map +1 -0
- package/dist/formatters.js +396 -0
- package/dist/formatters.js.map +1 -0
- package/dist/instructions.d.ts +6 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +72 -0
- package/dist/instructions.js.map +1 -0
- package/dist/lsp/lsp-client.d.ts +21 -0
- package/dist/lsp/lsp-client.d.ts.map +1 -0
- package/dist/lsp/lsp-client.js +122 -0
- package/dist/lsp/lsp-client.js.map +1 -0
- package/dist/lsp/lsp-manager.d.ts +12 -0
- package/dist/lsp/lsp-manager.d.ts.map +1 -0
- package/dist/lsp/lsp-manager.js +82 -0
- package/dist/lsp/lsp-manager.js.map +1 -0
- package/dist/lsp/lsp-servers.d.ts +13 -0
- package/dist/lsp/lsp-servers.d.ts.map +1 -0
- package/dist/lsp/lsp-servers.js +57 -0
- package/dist/lsp/lsp-servers.js.map +1 -0
- package/dist/lsp/lsp-tools.d.ts +67 -0
- package/dist/lsp/lsp-tools.d.ts.map +1 -0
- package/dist/lsp/lsp-tools.js +359 -0
- package/dist/lsp/lsp-tools.js.map +1 -0
- package/dist/parser/extractors/_shared.d.ts +11 -0
- package/dist/parser/extractors/_shared.d.ts.map +1 -0
- package/dist/parser/extractors/_shared.js +38 -0
- package/dist/parser/extractors/_shared.js.map +1 -0
- package/dist/parser/extractors/astro.d.ts +15 -0
- package/dist/parser/extractors/astro.d.ts.map +1 -0
- package/dist/parser/extractors/astro.js +104 -0
- package/dist/parser/extractors/astro.js.map +1 -0
- package/dist/parser/extractors/conversation.d.ts +16 -0
- package/dist/parser/extractors/conversation.d.ts.map +1 -0
- package/dist/parser/extractors/conversation.js +196 -0
- package/dist/parser/extractors/conversation.js.map +1 -0
- package/dist/parser/extractors/go.d.ts.map +1 -1
- package/dist/parser/extractors/go.js +22 -45
- package/dist/parser/extractors/go.js.map +1 -1
- package/dist/parser/extractors/python.d.ts +1 -1
- package/dist/parser/extractors/python.d.ts.map +1 -1
- package/dist/parser/extractors/python.js +19 -50
- package/dist/parser/extractors/python.js.map +1 -1
- package/dist/parser/extractors/rust.d.ts +1 -1
- package/dist/parser/extractors/rust.d.ts.map +1 -1
- package/dist/parser/extractors/rust.js +7 -34
- package/dist/parser/extractors/rust.js.map +1 -1
- package/dist/parser/extractors/typescript.d.ts +1 -1
- package/dist/parser/extractors/typescript.d.ts.map +1 -1
- package/dist/parser/extractors/typescript.js +99 -68
- package/dist/parser/extractors/typescript.js.map +1 -1
- package/dist/parser/parser-manager.d.ts.map +1 -1
- package/dist/parser/parser-manager.js +12 -2
- package/dist/parser/parser-manager.js.map +1 -1
- package/dist/parser/symbol-extractor.d.ts +2 -0
- package/dist/parser/symbol-extractor.d.ts.map +1 -1
- package/dist/parser/symbol-extractor.js +2 -0
- package/dist/parser/symbol-extractor.js.map +1 -1
- package/dist/register-tools.d.ts +127 -0
- package/dist/register-tools.d.ts.map +1 -0
- package/dist/register-tools.js +1453 -0
- package/dist/register-tools.js.map +1 -0
- package/dist/retrieval/codebase-retrieval.d.ts +4 -26
- package/dist/retrieval/codebase-retrieval.d.ts.map +1 -1
- package/dist/retrieval/codebase-retrieval.js +105 -403
- package/dist/retrieval/codebase-retrieval.js.map +1 -1
- package/dist/retrieval/retrieval-constants.d.ts +27 -0
- package/dist/retrieval/retrieval-constants.d.ts.map +1 -0
- package/dist/retrieval/retrieval-constants.js +27 -0
- package/dist/retrieval/retrieval-constants.js.map +1 -0
- package/dist/retrieval/retrieval-schemas.d.ts +107 -0
- package/dist/retrieval/retrieval-schemas.d.ts.map +1 -0
- package/dist/retrieval/retrieval-schemas.js +102 -0
- package/dist/retrieval/retrieval-schemas.js.map +1 -0
- package/dist/retrieval/retrieval-utils.d.ts +40 -0
- package/dist/retrieval/retrieval-utils.d.ts.map +1 -0
- package/dist/retrieval/retrieval-utils.js +139 -0
- package/dist/retrieval/retrieval-utils.js.map +1 -0
- package/dist/retrieval/semantic-handlers.d.ts +8 -0
- package/dist/retrieval/semantic-handlers.d.ts.map +1 -0
- package/dist/retrieval/semantic-handlers.js +152 -0
- package/dist/retrieval/semantic-handlers.js.map +1 -0
- package/dist/search/bm25.d.ts +6 -1
- package/dist/search/bm25.d.ts.map +1 -1
- package/dist/search/bm25.js +95 -32
- package/dist/search/bm25.js.map +1 -1
- package/dist/search/chunker.d.ts +10 -0
- package/dist/search/chunker.d.ts.map +1 -1
- package/dist/search/chunker.js +63 -11
- package/dist/search/chunker.js.map +1 -1
- package/dist/search/reranker.d.ts +15 -0
- package/dist/search/reranker.d.ts.map +1 -0
- package/dist/search/reranker.js +126 -0
- package/dist/search/reranker.js.map +1 -0
- package/dist/search/semantic.d.ts +1 -1
- package/dist/search/semantic.d.ts.map +1 -1
- package/dist/search/semantic.js +40 -45
- package/dist/search/semantic.js.map +1 -1
- package/dist/server-helpers.d.ts +29 -0
- package/dist/server-helpers.d.ts.map +1 -0
- package/dist/server-helpers.js +312 -0
- package/dist/server-helpers.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +11 -271
- package/dist/server.js.map +1 -1
- package/dist/storage/_shared.d.ts +9 -0
- package/dist/storage/_shared.d.ts.map +1 -0
- package/dist/storage/_shared.js +26 -0
- package/dist/storage/_shared.js.map +1 -0
- package/dist/storage/chunk-store.d.ts.map +1 -1
- package/dist/storage/chunk-store.js +23 -63
- package/dist/storage/chunk-store.js.map +1 -1
- package/dist/storage/embedding-store.d.ts +6 -3
- package/dist/storage/embedding-store.d.ts.map +1 -1
- package/dist/storage/embedding-store.js +54 -30
- package/dist/storage/embedding-store.js.map +1 -1
- package/dist/storage/graph-store.d.ts +48 -0
- package/dist/storage/graph-store.d.ts.map +1 -0
- package/dist/storage/graph-store.js +52 -0
- package/dist/storage/graph-store.js.map +1 -0
- package/dist/storage/index-store.d.ts +5 -0
- package/dist/storage/index-store.d.ts.map +1 -1
- package/dist/storage/index-store.js +28 -16
- package/dist/storage/index-store.js.map +1 -1
- package/dist/storage/registry.d.ts +4 -0
- package/dist/storage/registry.d.ts.map +1 -1
- package/dist/storage/registry.js +16 -16
- package/dist/storage/registry.js.map +1 -1
- package/dist/storage/usage-stats.d.ts +6 -0
- package/dist/storage/usage-stats.d.ts.map +1 -1
- package/dist/storage/usage-stats.js +59 -11
- package/dist/storage/usage-stats.js.map +1 -1
- package/dist/storage/usage-tracker.d.ts +3 -0
- package/dist/storage/usage-tracker.d.ts.map +1 -1
- package/dist/storage/usage-tracker.js +50 -132
- package/dist/storage/usage-tracker.js.map +1 -1
- package/dist/storage/watcher.d.ts +2 -1
- package/dist/storage/watcher.d.ts.map +1 -1
- package/dist/storage/watcher.js +16 -16
- package/dist/storage/watcher.js.map +1 -1
- package/dist/tools/ast-query-tools.d.ts +29 -0
- package/dist/tools/ast-query-tools.d.ts.map +1 -0
- package/dist/tools/ast-query-tools.js +110 -0
- package/dist/tools/ast-query-tools.js.map +1 -0
- package/dist/tools/boundary-tools.d.ts +31 -0
- package/dist/tools/boundary-tools.d.ts.map +1 -0
- package/dist/tools/boundary-tools.js +62 -0
- package/dist/tools/boundary-tools.js.map +1 -0
- package/dist/tools/clone-tools.d.ts +35 -0
- package/dist/tools/clone-tools.d.ts.map +1 -0
- package/dist/tools/clone-tools.js +181 -0
- package/dist/tools/clone-tools.js.map +1 -0
- package/dist/tools/community-tools.d.ts +23 -0
- package/dist/tools/community-tools.d.ts.map +1 -0
- package/dist/tools/community-tools.js +297 -0
- package/dist/tools/community-tools.js.map +1 -0
- package/dist/tools/complexity-tools.d.ts +34 -0
- package/dist/tools/complexity-tools.d.ts.map +1 -0
- package/dist/tools/complexity-tools.js +135 -0
- package/dist/tools/complexity-tools.js.map +1 -0
- package/dist/tools/context-tools.d.ts +44 -3
- package/dist/tools/context-tools.d.ts.map +1 -1
- package/dist/tools/context-tools.js +329 -99
- package/dist/tools/context-tools.js.map +1 -1
- package/dist/tools/conversation-tools.d.ts +107 -0
- package/dist/tools/conversation-tools.d.ts.map +1 -0
- package/dist/tools/conversation-tools.js +419 -0
- package/dist/tools/conversation-tools.js.map +1 -0
- package/dist/tools/coordinator-tools.d.ts +73 -0
- package/dist/tools/coordinator-tools.d.ts.map +1 -0
- package/dist/tools/coordinator-tools.js +153 -0
- package/dist/tools/coordinator-tools.js.map +1 -0
- package/dist/tools/cross-repo-tools.d.ts +43 -0
- package/dist/tools/cross-repo-tools.d.ts.map +1 -0
- package/dist/tools/cross-repo-tools.js +55 -0
- package/dist/tools/cross-repo-tools.js.map +1 -0
- package/dist/tools/diff-tools.d.ts +4 -1
- package/dist/tools/diff-tools.d.ts.map +1 -1
- package/dist/tools/diff-tools.js +23 -5
- package/dist/tools/diff-tools.js.map +1 -1
- package/dist/tools/frequency-tools.d.ts +46 -0
- package/dist/tools/frequency-tools.d.ts.map +1 -0
- package/dist/tools/frequency-tools.js +184 -0
- package/dist/tools/frequency-tools.js.map +1 -0
- package/dist/tools/generate-tools.d.ts.map +1 -1
- package/dist/tools/generate-tools.js +13 -2
- package/dist/tools/generate-tools.js.map +1 -1
- package/dist/tools/graph-tools.d.ts +44 -11
- package/dist/tools/graph-tools.d.ts.map +1 -1
- package/dist/tools/graph-tools.js +147 -104
- package/dist/tools/graph-tools.js.map +1 -1
- package/dist/tools/hotspot-tools.d.ts +24 -0
- package/dist/tools/hotspot-tools.d.ts.map +1 -0
- package/dist/tools/hotspot-tools.js +122 -0
- package/dist/tools/hotspot-tools.js.map +1 -0
- package/dist/tools/impact-tools.d.ts +13 -0
- package/dist/tools/impact-tools.d.ts.map +1 -0
- package/dist/tools/impact-tools.js +238 -0
- package/dist/tools/impact-tools.js.map +1 -0
- package/dist/tools/index-tools.d.ts +44 -3
- package/dist/tools/index-tools.d.ts.map +1 -1
- package/dist/tools/index-tools.js +530 -222
- package/dist/tools/index-tools.js.map +1 -1
- package/dist/tools/memory-tools.d.ts +35 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +229 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/tools/outline-tools.d.ts +24 -13
- package/dist/tools/outline-tools.d.ts.map +1 -1
- package/dist/tools/outline-tools.js +113 -87
- package/dist/tools/outline-tools.js.map +1 -1
- package/dist/tools/pattern-tools.d.ts +32 -0
- package/dist/tools/pattern-tools.d.ts.map +1 -0
- package/dist/tools/pattern-tools.js +116 -0
- package/dist/tools/pattern-tools.js.map +1 -0
- package/dist/tools/report-tools.d.ts +5 -0
- package/dist/tools/report-tools.d.ts.map +1 -0
- package/dist/tools/report-tools.js +167 -0
- package/dist/tools/report-tools.js.map +1 -0
- package/dist/tools/review-diff-tools.d.ts +148 -0
- package/dist/tools/review-diff-tools.d.ts.map +1 -0
- package/dist/tools/review-diff-tools.js +852 -0
- package/dist/tools/review-diff-tools.js.map +1 -0
- package/dist/tools/route-tools.d.ts +32 -0
- package/dist/tools/route-tools.d.ts.map +1 -0
- package/dist/tools/route-tools.js +276 -0
- package/dist/tools/route-tools.js.map +1 -0
- package/dist/tools/search-ranker.d.ts +5 -0
- package/dist/tools/search-ranker.d.ts.map +1 -0
- package/dist/tools/search-ranker.js +142 -0
- package/dist/tools/search-ranker.js.map +1 -0
- package/dist/tools/search-tools.d.ts +24 -1
- package/dist/tools/search-tools.d.ts.map +1 -1
- package/dist/tools/search-tools.js +459 -225
- package/dist/tools/search-tools.js.map +1 -1
- package/dist/tools/secret-tools.d.ts +104 -0
- package/dist/tools/secret-tools.d.ts.map +1 -0
- package/dist/tools/secret-tools.js +410 -0
- package/dist/tools/secret-tools.js.map +1 -0
- package/dist/tools/symbol-tools.d.ts +90 -2
- package/dist/tools/symbol-tools.d.ts.map +1 -1
- package/dist/tools/symbol-tools.js +576 -42
- package/dist/tools/symbol-tools.js.map +1 -1
- package/dist/types.d.ts +34 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/framework-detect.d.ts +5 -0
- package/dist/utils/framework-detect.d.ts.map +1 -0
- package/dist/utils/framework-detect.js +36 -0
- package/dist/utils/framework-detect.js.map +1 -0
- package/dist/utils/glob.d.ts +19 -0
- package/dist/utils/glob.d.ts.map +1 -0
- package/dist/utils/glob.js +74 -0
- package/dist/utils/glob.js.map +1 -0
- package/dist/utils/import-graph.d.ts +29 -0
- package/dist/utils/import-graph.d.ts.map +1 -0
- package/dist/utils/import-graph.js +125 -0
- package/dist/utils/import-graph.js.map +1 -0
- package/dist/utils/test-file.d.ts.map +1 -1
- package/dist/utils/test-file.js +1 -0
- package/dist/utils/test-file.js.map +1 -1
- package/dist/utils/walk.d.ts +45 -0
- package/dist/utils/walk.d.ts.map +1 -0
- package/dist/utils/walk.js +87 -0
- package/dist/utils/walk.js.map +1 -0
- package/package.json +10 -4
- package/rules/codesift.md +187 -0
- package/rules/codesift.mdc +192 -0
- package/rules/codex.md +187 -0
- 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
|
package/dist/cli/help.js.map
CHANGED
|
@@ -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
|
|
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 @@
|
|
|
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"}
|