codetree-claude 1.4.7 → 1.5.1

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 (138) hide show
  1. package/README.md +144 -86
  2. package/dist/cli.js +69 -83
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config.d.ts +126 -0
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +22 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/diff.d.ts +37 -0
  9. package/dist/diff.d.ts.map +1 -0
  10. package/dist/diff.js +181 -0
  11. package/dist/diff.js.map +1 -0
  12. package/dist/doctor.d.ts +5 -0
  13. package/dist/doctor.d.ts.map +1 -0
  14. package/dist/doctor.js +139 -0
  15. package/dist/doctor.js.map +1 -0
  16. package/dist/hook/post-compact.js +1 -23
  17. package/dist/hook/post-compact.js.map +1 -1
  18. package/dist/hook/post-tool-use.js +15 -27
  19. package/dist/hook/post-tool-use.js.map +1 -1
  20. package/dist/hook/pre-compact.js +1 -22
  21. package/dist/hook/pre-compact.js.map +1 -1
  22. package/dist/hook/pre-tool-use.bundled.js +49 -69
  23. package/dist/hook/pre-tool-use.js +23 -80
  24. package/dist/hook/pre-tool-use.js.map +1 -1
  25. package/dist/hook/session-start.js +19 -23
  26. package/dist/hook/session-start.js.map +1 -1
  27. package/dist/index.d.ts +7 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +8 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/indexer/extractor-registry.d.ts.map +1 -1
  32. package/dist/indexer/extractor-registry.js +6 -0
  33. package/dist/indexer/extractor-registry.js.map +1 -1
  34. package/dist/indexer/extractors/csharp.d.ts +12 -0
  35. package/dist/indexer/extractors/csharp.d.ts.map +1 -0
  36. package/dist/indexer/extractors/csharp.js +165 -0
  37. package/dist/indexer/extractors/csharp.js.map +1 -0
  38. package/dist/indexer/extractors/go.js +44 -1
  39. package/dist/indexer/extractors/go.js.map +1 -1
  40. package/dist/indexer/extractors/java.d.ts.map +1 -1
  41. package/dist/indexer/extractors/java.js +41 -3
  42. package/dist/indexer/extractors/java.js.map +1 -1
  43. package/dist/indexer/extractors/javascript.d.ts.map +1 -1
  44. package/dist/indexer/extractors/javascript.js +67 -3
  45. package/dist/indexer/extractors/javascript.js.map +1 -1
  46. package/dist/indexer/extractors/python.d.ts.map +1 -1
  47. package/dist/indexer/extractors/python.js +31 -2
  48. package/dist/indexer/extractors/python.js.map +1 -1
  49. package/dist/indexer/extractors/ruby.d.ts +10 -0
  50. package/dist/indexer/extractors/ruby.d.ts.map +1 -0
  51. package/dist/indexer/extractors/ruby.js +145 -0
  52. package/dist/indexer/extractors/ruby.js.map +1 -0
  53. package/dist/indexer/extractors/rust.d.ts +10 -0
  54. package/dist/indexer/extractors/rust.d.ts.map +1 -0
  55. package/dist/indexer/extractors/rust.js +194 -0
  56. package/dist/indexer/extractors/rust.js.map +1 -0
  57. package/dist/indexer/extractors/types.d.ts.map +1 -1
  58. package/dist/indexer/extractors/types.js +6 -0
  59. package/dist/indexer/extractors/types.js.map +1 -1
  60. package/dist/indexer/indexer.d.ts +23 -0
  61. package/dist/indexer/indexer.d.ts.map +1 -1
  62. package/dist/indexer/indexer.js +233 -14
  63. package/dist/indexer/indexer.js.map +1 -1
  64. package/dist/indexer/watcher.d.ts +3 -0
  65. package/dist/indexer/watcher.d.ts.map +1 -1
  66. package/dist/indexer/watcher.js +33 -1
  67. package/dist/indexer/watcher.js.map +1 -1
  68. package/dist/server/ipc.d.ts +10 -4
  69. package/dist/server/ipc.d.ts.map +1 -1
  70. package/dist/server/ipc.js +190 -109
  71. package/dist/server/ipc.js.map +1 -1
  72. package/dist/server/mcp-server.js +38 -29
  73. package/dist/server/mcp-server.js.map +1 -1
  74. package/dist/server/tools/codetree-edit.d.ts +2 -1
  75. package/dist/server/tools/codetree-edit.d.ts.map +1 -1
  76. package/dist/server/tools/codetree-edit.js +24 -6
  77. package/dist/server/tools/codetree-edit.js.map +1 -1
  78. package/dist/server/tools/codetree-find-refs.d.ts.map +1 -1
  79. package/dist/server/tools/codetree-find-refs.js +29 -15
  80. package/dist/server/tools/codetree-find-refs.js.map +1 -1
  81. package/dist/server/tools/codetree-memory.d.ts +3 -6
  82. package/dist/server/tools/codetree-memory.d.ts.map +1 -1
  83. package/dist/server/tools/codetree-memory.js +9 -10
  84. package/dist/server/tools/codetree-memory.js.map +1 -1
  85. package/dist/server/tools/codetree-outline.d.ts +57 -0
  86. package/dist/server/tools/codetree-outline.d.ts.map +1 -0
  87. package/dist/server/tools/codetree-outline.js +76 -0
  88. package/dist/server/tools/codetree-outline.js.map +1 -0
  89. package/dist/server/tools/codetree-probe.d.ts +53 -0
  90. package/dist/server/tools/codetree-probe.d.ts.map +1 -0
  91. package/dist/server/tools/codetree-probe.js +81 -0
  92. package/dist/server/tools/codetree-probe.js.map +1 -0
  93. package/dist/server/tools/codetree-read.d.ts +52 -3
  94. package/dist/server/tools/codetree-read.d.ts.map +1 -1
  95. package/dist/server/tools/codetree-read.js +249 -38
  96. package/dist/server/tools/codetree-read.js.map +1 -1
  97. package/dist/server/tools/codetree-search.d.ts +13 -1
  98. package/dist/server/tools/codetree-search.d.ts.map +1 -1
  99. package/dist/server/tools/codetree-search.js +89 -49
  100. package/dist/server/tools/codetree-search.js.map +1 -1
  101. package/dist/server/tools/codetree-structure.d.ts +25 -1
  102. package/dist/server/tools/codetree-structure.d.ts.map +1 -1
  103. package/dist/server/tools/codetree-structure.js +99 -31
  104. package/dist/server/tools/codetree-structure.js.map +1 -1
  105. package/dist/server/tools/codetree-summary.d.ts +2 -0
  106. package/dist/server/tools/codetree-summary.d.ts.map +1 -1
  107. package/dist/server/tools/codetree-summary.js +5 -0
  108. package/dist/server/tools/codetree-summary.js.map +1 -1
  109. package/dist/server/tools/codetree-write.d.ts +2 -1
  110. package/dist/server/tools/codetree-write.d.ts.map +1 -1
  111. package/dist/server/tools/codetree-write.js +9 -1
  112. package/dist/server/tools/codetree-write.js.map +1 -1
  113. package/dist/setup/install.d.ts +45 -1
  114. package/dist/setup/install.d.ts.map +1 -1
  115. package/dist/setup/install.js +163 -58
  116. package/dist/setup/install.js.map +1 -1
  117. package/dist/setup/template-load.d.ts +9 -0
  118. package/dist/setup/template-load.d.ts.map +1 -0
  119. package/dist/setup/template-load.js +39 -0
  120. package/dist/setup/template-load.js.map +1 -0
  121. package/dist/storage/database.d.ts +49 -0
  122. package/dist/storage/database.d.ts.map +1 -1
  123. package/dist/storage/database.js +398 -53
  124. package/dist/storage/database.js.map +1 -1
  125. package/dist/storage/disk-manager.d.ts.map +1 -1
  126. package/dist/storage/disk-manager.js +1 -5
  127. package/dist/storage/disk-manager.js.map +1 -1
  128. package/dist/utils.d.ts +23 -0
  129. package/dist/utils.d.ts.map +1 -0
  130. package/dist/utils.js +102 -0
  131. package/dist/utils.js.map +1 -0
  132. package/package.json +63 -5
  133. package/templates/README.md +15 -0
  134. package/templates/agents-codetree.snippet.md +24 -0
  135. package/templates/claude-md-codetree.snippet.md +22 -0
  136. package/templates/claude-rules-codetree.md +23 -0
  137. package/templates/cursor-codetree.mdc +31 -0
  138. package/templates/gemini-codetree.snippet.md +6 -0
package/README.md CHANGED
@@ -1,47 +1,65 @@
1
- # CodeTree
1
+ # CodeTree (`codetree-claude`)
2
2
 
3
- **Reduce Claude Code token usage by 60-70%** by caching codebase reads in a persistent index.
3
+ **Persistent codebase index + MCP tools for AI coding assistants** — cut redundant **Read / Grep / Glob** token use by routing work through a **cached SQLite index** and **symbol-aware** APIs.
4
4
 
5
- ## The Problem
5
+ Works with **Anthropic Claude Code**, **Cursor**, **OpenAI Codex**, **Google Antigravity / Gemini-oriented flows**, and any **MCP-compatible** editor or CLI — not only Claude. One **`codetree init`** wires the **same MCP server** into each tool’s config format your repo uses.
6
6
 
7
- When your team uses Claude Code, **~70% of tokens** go to re-reading the same files across conversations Glob, Grep, and Read calls that scan the same codebase over and over.
7
+ > **v1.5** Real-time cache integrity, Windows `\r\n` support, git branch awareness, session tracking, and **multi-editor setup** (Claude + Cursor + Codex + Antigravity) from a single CLI.
8
8
 
9
- ## The Solution
9
+ ## Supported AI coding tools (multi-IDE)
10
10
 
11
- CodeTree indexes your codebase into a persistent SQLite database and intercepts Claude Code's file operations. When a file hasn't changed since the last read, Claude uses the cached version.
11
+ | Product | What CodeTree configures | How you save tokens |
12
+ |--------|---------------------------|---------------------|
13
+ | **Claude Code** (Anthropic) | Root `.mcp.json`, `.claude/settings.json` **hooks**, `CLAUDE.md`, `.claude/rules` | **Hooks** can redirect native Read/Grep/Glob/Edit/Write to `codetree_*` when safe |
14
+ | **Cursor** | `.cursor/mcp.json`, `.cursor/rules/codetree.mdc` | MCP tools + rules steer the agent toward CodeTree |
15
+ | **OpenAI Codex** | `.codex/config.toml` `[mcp_servers.codetree]`, `AGENTS.md` | MCP tools + agent instructions (merge-safe TOML) |
16
+ | **Google Antigravity** | `.antigravity/mcp.json`, **`AGENTS.md`**, **`GEMINI.md`** | MCP + portable docs (Gemini / Antigravity steering) |
17
+ | **VS Code** | Marketplace extension **“CodeTree — Cache for Claude Code”** | Helps activate / discover setup in the editor |
18
+ | **Any MCP host** | Same `node …/mcp-server.js` entry as above | Register **Model Context Protocol** server manually if your stack reads custom paths |
12
19
 
13
- ### How it works
20
+ **Important:** **Token-saving hooks** (PreToolUse interception) are a **Claude Code** feature. **Cursor, Codex, and Antigravity** use **MCP + project rules/docs** — the model is steered to call `codetree_read`, `codetree_search`, etc., instead of only native tools. The **indexer, cache, and MCP tool surface** are shared for everyone.
21
+
22
+ **Search keywords (ecosystem):** MCP server, Model Context Protocol, AI coding agent, AI pair programmer, codebase RAG alternative, repo indexer, Claude Code cache, Cursor MCP, OpenAI Codex MCP, Google Antigravity MCP, Gemini coding, VS Code extension, developer productivity, LLM tools, context window optimization.
23
+
24
+ ## The problem
25
+
26
+ Teams using **AI coding assistants** spend a large share of **context / tokens** on **re-reading** the same files — repeated Glob, Grep, and Read calls across chats and tasks.
27
+
28
+ ## The solution
29
+
30
+ CodeTree **indexes** the repo into a **local SQLite** database and exposes **MCP tools** (`codetree_read`, `codetree_search`, `codetree_structure`, …). **Claude Code** can additionally **intercept** native tool calls via **hooks** and redirect when the index can answer. **Other IDEs** rely on **MCP + rules** so agents prefer CodeTree. Reads stay **mtime-validated** so content is not silently stale after edits, branch switches, or merges.
31
+
32
+ ### How it works (Claude Code with hooks)
14
33
 
15
34
  ```
16
- Developer asks Claude to work on a feature
35
+ Developer asks the assistant to work on a feature
17
36
 
18
- ├── Claude calls Read("src/api/auth.ts")
19
- │ └── Hook interceptsfile cached? YES → redirect to codetree_read
20
- │ └── Returns cached content + symbols metadata
37
+ ├── Read("src/api/auth.ts")
38
+ │ └── Hook (Claude Code) → cached? YES → codetree_read
39
+ │ └── Cached content + symbol metadata
21
40
 
22
- ├── Claude calls Grep("handleAuth")
23
- │ └── Hook intercepts symbol indexed? YES → redirect to codetree_search
24
- │ └── Returns indexed symbol locations instantly
41
+ ├── Grep("handleAuth")
42
+ │ └── Hook → indexed? YES → codetree_search
25
43
 
26
- └── Claude calls Glob("src/**/*.ts")
27
- └── Hook intercepts → tree indexed? YES → redirect to codetree_structure
28
- └── Returns file tree from index
44
+ └── Glob("src/**/*.ts")
45
+ └── Hook → tree indexed? YES → codetree_structure
29
46
  ```
30
47
 
48
+ For **Cursor / Codex / Antigravity**, the same tools are available over **MCP**; steering is via **rules** and **`AGENTS.md` / `GEMINI.md`** instead of hooks.
49
+
31
50
  ## Install
32
51
 
33
- ### Option 1: npm package (any project)
52
+ ### Option 1: npm package (global — any project)
34
53
 
35
54
  ```bash
36
55
  npm install -g codetree-claude
37
56
 
38
- # In your project root:
39
57
  codetree init
40
58
  ```
41
59
 
42
- ### Option 2: VS Code Extension
60
+ ### Option 2: VS Code extension
43
61
 
44
- Install "CodeTree — Cache for Claude Code" from the VS Code marketplace. It auto-activates when you open a project.
62
+ Install **“CodeTree — Cache for Claude Code”** from the VS Code Marketplace. It helps you use CodeTree when the project is open in VS Code.
45
63
 
46
64
  ### Option 3: Per-project dev dependency
47
65
 
@@ -50,29 +68,60 @@ npm install --save-dev codetree-claude
50
68
  npx codetree init
51
69
  ```
52
70
 
53
- ## What gets created
71
+ ## What `codetree init` creates (multi-tool)
72
+
73
+ `codetree init` configures **Claude Code** (hooks + root `.mcp.json`) and, in the same run, adds **Cursor**, **Antigravity**, **OpenAI Codex**, and portable agent docs — **without changing** the established Claude behavior.
54
74
 
55
75
  ```
56
76
  your-project/
57
- .codetreerc.json # Config (ignore patterns, cache size, etc.)
58
- .claude/settings.json # PreToolUse hook registration
59
- .mcp.json # MCP server registration
60
- .codetree/ # Index database (gitignored)
77
+ .codetreerc.json # Config (ignore patterns, cache size, )
78
+ .claude/settings.json # Hooks (Claude Code): PreToolUse, PostToolUse, SessionStart, compaction, …
79
+ .mcp.json # MCP Claude Code convention
80
+ .cursor/mcp.json # MCP Cursor IDE
81
+ .cursor/rules/codetree.mdc # Cursor: prefer CodeTree MCP tools
82
+ .antigravity/mcp.json # MCP — Google Antigravity (project-level)
83
+ .codex/config.toml # MCP — OpenAI Codex (trusted projects; merged safely)
84
+ CLAUDE.md # Claude Code instructions
85
+ AGENTS.md # Portable (Cursor, Codex, Antigravity, …)
86
+ GEMINI.md # Short pointer for Antigravity / Gemini
87
+ .codetree/ # Index database (gitignored)
61
88
  index.db
62
89
  ipc.port
63
90
  stats.json
64
91
  ```
65
92
 
66
- ## CLI Commands
93
+ Commit `.codetreerc.json`, `.mcp.json`, `.cursor/`, `.antigravity/`, `.codex/`, `AGENTS.md`, and `GEMINI.md` as your team prefers; keep `.codetree/` gitignored.
94
+
95
+ ### Where rules & config live per tool
96
+
97
+ | Tool | MCP config | Instructions / rules |
98
+ |------|------------|----------------------|
99
+ | **Claude Code** | Root `.mcp.json` | Hooks in `.claude/settings.json` + `CLAUDE.md` + `.claude/rules/codetree.md` |
100
+ | **Cursor** | `.cursor/mcp.json` | `.cursor/rules/codetree.mdc` (alwaysApply) |
101
+ | **OpenAI Codex** | `.codex/config.toml` | `AGENTS.md` (and Codex trust settings) |
102
+ | **Google Antigravity** | `.antigravity/mcp.json` | **`AGENTS.md`** (full table) + **`GEMINI.md`** (short Gemini pointer). Antigravity loads these; there is no extra Antigravity-only rules file in this package. |
103
+
104
+ ### Bundled templates (npm package)
105
+
106
+ Instruction text ships under **`templates/`** in the published package (see `templates/README.md`). `codetree init` copies from those files into your repo. Customize locally; re-run `codetree init` to refresh from the bundled templates.
107
+
108
+ ## CLI commands
67
109
 
68
110
  ```bash
69
- codetree init # Set up CodeTree in current project
111
+ codetree init # Set up CodeTree + Claude + Cursor + Antigravity + Codex configs
70
112
  codetree status # Check if running + index health
71
- codetree stats # View cache hit rate + token savings
113
+ codetree stats # Cache hit rate + estimated token savings (see output for assumptions)
72
114
  codetree reindex # Force full re-index
115
+ codetree doctor # Verify MCP paths, hook scripts, IPC (after Node/npm changes)
73
116
  codetree help # Show help
74
117
  ```
75
118
 
119
+ ### Dev dependency vs global, and AI tools
120
+
121
+ - With **`npm install --save-dev codetree-claude`**, `.mcp.json` points at `node_modules/codetree-claude/dist/...`. The **MCP server runs** as usual; some assistants **skip `node_modules`** in search context — that is expected.
122
+ - The **indexer** skips **`node_modules`** for speed. To hack on **CodeTree source**, open a **git clone** of this repo as the project root.
123
+ - After **`nvm use`**, switching Node, or changing **npm prefix**, run **`codetree doctor`** and **`codetree init`** again if paths are wrong.
124
+
76
125
  ## Configuration
77
126
 
78
127
  Edit `.codetreerc.json` in your project root:
@@ -92,79 +141,88 @@ Edit `.codetreerc.json` in your project root:
92
141
  }
93
142
  ```
94
143
 
95
- ## MCP Tools
144
+ ## Built for real-world reliability
145
+
146
+ ### Never stale
147
+ - **External edits** — mtime validation; fresh content after VS Code saves, merges, etc.
148
+ - **Git branch aware** — branch switches invalidate relevant cache.
149
+ - **Any process** that changes files on disk is reflected on next read.
150
+
151
+ ### Cross-platform
152
+ - **Windows `\r\n`** — `codetree_edit` normalizes for matching; preserves style on write.
153
+ - **Paths** — forward slashes in MCP JSON strings for portability.
96
154
 
97
- CodeTree exposes 5 tools that Claude Code uses instead of native Read/Grep/Glob:
155
+ ### Safe at scale
156
+ - **Large files** — truncation with offset/limit guidance.
157
+ - **Large repos** — structure view can collapse top-level for 500+ files.
158
+ - **Hooks (Claude)** — redirect only when CodeTree can serve; otherwise native tools run.
159
+ - **Graceful degradation** — non-critical failures wrapped so core reads do not break.
98
160
 
99
- | Tool | Replaces | What it does |
100
- |------|----------|-------------|
101
- | `codetree_read` | Read | Cached file read with symbol metadata |
102
- | `codetree_search` | Grep | Symbol index search (functions, classes, types) |
103
- | `codetree_structure` | Glob | Project tree browser with language stats |
104
- | `codetree_find_refs` | — | Cross-file reference finder |
105
- | `codetree_summary` | — | Full project overview for session start |
161
+ ### Full session memory (Claude Code path)
162
+ Session logging and compaction-related behavior are strongest where **hooks** run; MCP-only clients still get the full **tool set** on the server.
106
163
 
107
- ## Supported Languages
164
+ ## MCP tools (all MCP hosts)
108
165
 
109
- Symbol extraction works for:
110
- - JavaScript / TypeScript (JSX, TSX)
111
- - Python
112
- - Java / Kotlin / C#
113
- - Go
114
- - All other files get indexed (content cached) but without symbol extraction
166
+ These tools are registered for **Claude Code, Cursor, Codex, Antigravity**, and any compatible MCP client:
115
167
 
116
- ## Architecture
168
+ | Tool | Replaces / complements | What it does |
169
+ |------|------------------------|--------------|
170
+ | `codetree_read` | Read | Cached read + symbols; mtime-validated. |
171
+ | `codetree_edit` | Edit | Edit without prior Read; `\r\n`-safe on Windows. |
172
+ | `codetree_write` | Write | Write without prior Read; creates parent dirs. |
173
+ | `codetree_search` | Grep | Symbol index + optional content search. |
174
+ | `codetree_structure` | Glob | Project tree; auto-collapse on huge repos. |
175
+ | `codetree_find_refs` | — | Cross-file references. |
176
+ | `codetree_summary` | — | Project overview for session start. |
177
+ | `codetree_memory` | — | Save / recall insights across sessions. |
178
+
179
+ ## Supported languages (symbols)
180
+
181
+ Symbol extraction: JavaScript, TypeScript (JSX/TSX), Python, Java/Kotlin/C#, Go.
182
+
183
+ Indexing and text caching: Prisma, GraphQL, Protobuf, SQL, YAML, TOML, JSON, Markdown, HTML, CSS/SCSS, shell, Docker, Terraform, `.env`, and more.
184
+
185
+ ## Architecture (conceptual)
117
186
 
118
187
  ```
119
- ┌─────────────────────────────────────────────┐
120
- │ Claude Code
121
- ┌───────────────────────────────────────┐
122
- │ │ PreToolUse Hook │ │
123
- │ │ Intercepts Read/Grep/Glob │ │
124
- │ Queries IPC server (<30ms) │
125
- Redirects to MCP tools if cached
126
- └─────────────┬─────────────────────────┘
127
-
128
- ┌─────────────▼─────────────────────────┐
129
- MCP Server (codetree)
130
- │ ├── codetree_read │
131
- │ │ ├── codetree_search │ │
132
- │ ├── codetree_structure │
133
- │ │ ├── codetree_find_refs │ │
134
- │ │ └── codetree_summary │ │
135
- │ └─────────────┬─────────────────────────┘ │
136
- │ │ │
137
- │ ┌─────────────▼─────────────────────────┐ │
138
- │ │ Indexer + File Watcher │ │
139
- │ │ ├── SQLite database (persistent) │ │
140
- │ │ ├── LRU in-memory cache (hot files) │ │
141
- │ │ ├── Symbol extraction (regex-based) │ │
142
- │ │ └── chokidar watcher (live updates) │ │
143
- │ └───────────────────────────────────────┘ │
144
- └─────────────────────────────────────────────┘
188
+ ┌─────────────────────────────────────────────────────────────┐
189
+ AI client (Claude Code / Cursor / Codex / Antigravity / …)
190
+ ┌───────────────────────────────────────────────────────┐
191
+ │ │ Claude Code: hooks (optional redirects) │ │
192
+ │ │ Others: MCP + rules / AGENTS.md / GEMINI.md │ │
193
+ └───────────────────────────┬───────────────────────────┘
194
+
195
+ ┌───────────────────────────▼───────────────────────────┐
196
+ MCP server — codetree_read, codetree_search, …
197
+ └───────────────────────────┬───────────────────────────┘
198
+
199
+ ┌───────────────────────────▼───────────────────────────┐
200
+ │ │ Indexer + cache (SQLite, LRU, watcher, git HEAD, …) │ │
201
+ └─────────────────────────────────────────────────────────┘
202
+ └─────────────────────────────────────────────────────────────┘
145
203
  ```
146
204
 
147
- ## Org-wide Rollout
205
+ ## Org-wide rollout
148
206
 
149
- 1. Add `codetree-claude` as a dev dependency in your repos
150
- 2. Commit `.codetreerc.json` and `.mcp.json` to version control
151
- 3. Add `.codetree/` to `.gitignore` (done automatically by `codetree init`)
152
- 4. Each developer runs `npx codetree init` once (or use the VS Code extension)
207
+ 1. Add `codetree-claude` as a dev dependency (or document global install).
208
+ 2. Commit `.codetreerc.json`, `.mcp.json`, `.cursor/`, `.antigravity/`, `.codex/`, `AGENTS.md`, `GEMINI.md` as policy allows.
209
+ 3. Add `.codetree/` to `.gitignore` (init does this).
210
+ 4. Each developer runs `npx codetree init` once (or uses the VS Code extension).
153
211
 
154
- The index database is local to each machine it rebuilds automatically on first run.
212
+ The index is **local per machine** and rebuilds on demand.
155
213
 
156
- ## Token Savings Estimate
214
+ ## Token savings (illustrative)
157
215
 
158
- For a typical session on a 10K-file TypeScript project:
216
+ Typical session on a large TypeScript repo — **your** numbers may differ; run **`codetree stats`** for real metrics.
159
217
 
160
218
  | Without CodeTree | With CodeTree |
161
- |-----------------|---------------|
162
- | ~50 Read calls per task | ~10 Read calls (rest cached) |
163
- | ~20 Grep calls per task | ~5 Grep calls (rest from index) |
164
- | ~15 Glob calls per task | ~3 Glob calls (rest from tree) |
165
- | **~800K tokens/task** | **~250K tokens/task** |
219
+ |------------------|---------------|
220
+ | Many Read / Grep / Glob calls | Fewer, more cache/index hits |
221
+ | Higher token use on repetition | Lower repetition via index + MCP |
222
+
223
+ ## npm discovery
166
224
 
167
- Run `codetree stats` to see actual savings for your project.
225
+ This package is published as **`codetree-claude`**. **Keywords** in `package.json` (e.g. `mcp`, `claude-code`, `cursor`, `codex`, `antigravity`, `gemini`, `codebase-index`) help **npmjs.com** search. They are not read from `.npmrc` — `.npmrc` is for **registry and install** settings.
168
226
 
169
227
  ## License
170
228
 
package/dist/cli.js CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { resolve, join, dirname } from "node:path";
3
- import { existsSync, readFileSync, readdirSync } from "node:fs";
3
+ import { existsSync, readFileSync } from "node:fs";
4
4
  import { fileURLToPath } from "node:url";
5
- import { installHook, installMcpServer, createDefaultConfig, updateGitignore, installClaudeMd, installClaudeRules } from "./setup/install.js";
5
+ import { installHook, installMcpServer, createDefaultConfig, updateGitignore, installClaudeMd, installClaudeRules, installCursorMcp, installCursorRules, installAntigravityMcp, installCodexMcp, installAgentsMd, installGeminiMd, } from "./setup/install.js";
6
+ import { runDoctor } from "./doctor.js";
7
+ import { findGitRepos, findPackageRoot, formatNumber } from "./utils.js";
6
8
  const __filename = fileURLToPath(import.meta.url);
7
9
  const __dirname = dirname(__filename);
8
10
  const args = process.argv.slice(2);
@@ -21,48 +23,15 @@ async function main() {
21
23
  case "reindex":
22
24
  await handleReindex();
23
25
  break;
26
+ case "doctor":
27
+ await runDoctor();
28
+ break;
24
29
  case "help":
25
30
  default:
26
31
  printHelp();
27
32
  break;
28
33
  }
29
34
  }
30
- // ─── Find all git repos ──────────────────────────────────────
31
- function findGitRepos(startDir, maxDepth = 3) {
32
- const repos = [];
33
- const visited = new Set();
34
- function walk(dir, depth) {
35
- if (depth > maxDepth)
36
- return;
37
- const resolved = resolve(dir);
38
- if (visited.has(resolved))
39
- return;
40
- visited.add(resolved);
41
- // Is this a git repo?
42
- if (existsSync(join(resolved, ".git"))) {
43
- repos.push(resolved);
44
- return; // Don't recurse into git repos
45
- }
46
- // Scan subdirectories
47
- let entries;
48
- try {
49
- entries = readdirSync(resolved, { withFileTypes: true });
50
- }
51
- catch {
52
- return;
53
- }
54
- const skip = new Set(["node_modules", ".git", "dist", "build", ".next", "__pycache__", ".codetree", ".cache"]);
55
- for (const entry of entries) {
56
- if (!entry.isDirectory())
57
- continue;
58
- if (skip.has(entry.name) || entry.name.startsWith("."))
59
- continue;
60
- walk(join(resolved, entry.name), depth + 1);
61
- }
62
- }
63
- walk(startDir, 0);
64
- return repos;
65
- }
66
35
  // ─── Init ────────────────────────────────────────────────────
67
36
  async function handleInit() {
68
37
  const cwd = resolve(process.cwd());
@@ -83,45 +52,76 @@ async function handleInit() {
83
52
  console.log(` - ${repo}`);
84
53
  }
85
54
  console.log();
86
- const packageRoot = findPackageRoot();
55
+ const packageRoot = findPackageRootFromDir();
87
56
  const hookScript = join(packageRoot, "dist", "hook", "pre-tool-use.js");
88
57
  const serverScript = join(packageRoot, "dist", "server", "mcp-server.js");
89
58
  let totalSetup = 0;
90
59
  for (const repo of repos) {
91
60
  const repoName = dirname(repo) === repo ? repo : repo.split(/[/\\]/).pop();
92
61
  console.log(` ── Setting up: ${repoName} ──`);
93
- // 1. Config
94
- const configResult = createDefaultConfig(repo);
95
- console.log(` [1/5] Config: ${existsSync(join(repo, ".codetreerc.json")) ? "exists" : "created"}`);
96
- // 2. Gitignore
97
- updateGitignore(repo);
98
- console.log(` [2/5] .gitignore: updated`);
99
- // 3. Hooks
100
- const hookResult = installHook(repo, hookScript);
101
- console.log(` [3/5] Hooks: ${hookResult.message}`);
102
- // 4. MCP server
103
- const mcpResult = installMcpServer(repo, serverScript);
104
- console.log(` [4/5] MCP: ${mcpResult.message}`);
105
- // 5. CLAUDE.md — instructs Claude to use CodeTree MCP tools
106
- installClaudeMd(repo);
107
- console.log(` [5/6] CLAUDE.md: updated`);
108
- // 6. .claude/rules/ — mandatory rules Claude MUST follow
109
- installClaudeRules(repo);
110
- console.log(` [6/6] Rules: .claude/rules/codetree.md`);
111
- totalSetup++;
62
+ try {
63
+ // 1. Config
64
+ createDefaultConfig(repo);
65
+ console.log(` [1/12] Config: ${existsSync(join(repo, ".codetreerc.json")) ? "exists" : "created"}`);
66
+ // 2. Gitignore
67
+ updateGitignore(repo);
68
+ console.log(` [2/12] .gitignore: updated`);
69
+ // 3. Hooks
70
+ const hookResult = installHook(repo, hookScript);
71
+ console.log(` [3/12] Hooks: ${hookResult.message}`);
72
+ // 4. MCP server (Claude Code — root .mcp.json)
73
+ const mcpResult = installMcpServer(repo, serverScript);
74
+ console.log(` [4/12] MCP: ${mcpResult.message}`);
75
+ // 5. CLAUDE.md — instructs Claude to use CodeTree MCP tools
76
+ installClaudeMd(repo);
77
+ console.log(` [5/12] CLAUDE.md: updated`);
78
+ // 6. .claude/rules/ — mandatory rules Claude MUST follow
79
+ installClaudeRules(repo);
80
+ console.log(` [6/12] Rules: .claude/rules/codetree.md`);
81
+ // 7–12. Cursor, Antigravity, Codex, AGENTS.md, GEMINI.md (do not change Claude paths above)
82
+ const cursorMcp = installCursorMcp(repo, serverScript);
83
+ console.log(` [7/12] ${cursorMcp.message}`);
84
+ installCursorRules(repo);
85
+ console.log(` [8/12] Cursor rules: .cursor/rules/codetree.mdc`);
86
+ const agMcp = installAntigravityMcp(repo, serverScript);
87
+ console.log(` [9/12] ${agMcp.message}`);
88
+ const codexMcp = installCodexMcp(repo, serverScript);
89
+ console.log(` [10/12] ${codexMcp.message}`);
90
+ installAgentsMd(repo);
91
+ console.log(` [11/12] AGENTS.md: CodeTree block`);
92
+ installGeminiMd(repo);
93
+ console.log(` [12/12] GEMINI.md: CodeTree pointer`);
94
+ totalSetup++;
95
+ }
96
+ catch (err) {
97
+ const msg = err instanceof Error ? err.message : String(err);
98
+ console.error(` ✗ Failed for ${repoName}: ${msg}`);
99
+ }
112
100
  console.log();
113
101
  }
114
102
  // Also install at workspace root (cwd) if it's different from repos
115
103
  if (!repos.includes(cwd)) {
116
- installClaudeMd(cwd);
117
- installClaudeRules(cwd);
118
- console.log(` Workspace root: CLAUDE.md + rules added`);
104
+ try {
105
+ installClaudeMd(cwd);
106
+ installClaudeRules(cwd);
107
+ installCursorMcp(cwd, serverScript);
108
+ installCursorRules(cwd);
109
+ installAntigravityMcp(cwd, serverScript);
110
+ installCodexMcp(cwd, serverScript);
111
+ installAgentsMd(cwd);
112
+ installGeminiMd(cwd);
113
+ console.log(` Workspace root: CLAUDE.md, rules, Cursor, Antigravity, Codex, AGENTS.md, GEMINI.md`);
114
+ }
115
+ catch (err) {
116
+ const msg = err instanceof Error ? err.message : String(err);
117
+ console.error(` ✗ Workspace root setup failed: ${msg}`);
118
+ }
119
119
  console.log();
120
120
  }
121
121
  console.log(` ✓ ${totalSetup} project${totalSetup > 1 ? "s" : ""} configured.`);
122
122
  console.log();
123
123
  console.log(` What happens now:`);
124
- console.log(` 1. Reload VS Code (Ctrl+Shift+P → Developer: Reload Window)`);
124
+ console.log(` 1. Reload the editor (VS Code / Cursor: Cmd/Ctrl+Shift+P → Developer: Reload Window)`);
125
125
  console.log(` 2. Claude Code will auto-start the MCP server per project`);
126
126
  console.log(` 3. Hooks intercept Read/Grep/Glob and serve from cache`);
127
127
  console.log(` 4. Check the CodeTree sidebar for live stats`);
@@ -132,6 +132,9 @@ async function handleInit() {
132
132
  console.log(` codetree reindex — Force re-index all projects`);
133
133
  console.log();
134
134
  }
135
+ function findPackageRootFromDir() {
136
+ return findPackageRoot(__dirname);
137
+ }
135
138
  // ─── Status (aggregated) ─────────────────────────────────────
136
139
  async function handleStatus() {
137
140
  const cwd = resolve(process.cwd());
@@ -223,7 +226,8 @@ async function handleStats() {
223
226
  }
224
227
  }
225
228
  const totalHitRate = totalQueries > 0 ? ((totalHits / totalQueries) * 100).toFixed(1) : "0.0";
226
- const costSaved = ((totalTokensSaved / 1_000_000) * 3).toFixed(2);
229
+ // Blended avg: Opus $15/M input, Sonnet $3/M input, weighted ~$10/M
230
+ const costSaved = ((totalTokensSaved / 1_000_000) * 10).toFixed(2);
227
231
  console.log(`\n ── Totals ──`);
228
232
  console.log(` Active repos: ${activeRepos}`);
229
233
  console.log(` Total files: ${formatNumber(totalFiles)}`);
@@ -232,7 +236,7 @@ async function handleStats() {
232
236
  console.log(` Cache misses: ${formatNumber(totalMisses)}`);
233
237
  console.log(` Hit rate: ${totalHitRate}%`);
234
238
  console.log(` Tokens saved: ~${formatNumber(totalTokensSaved)}`);
235
- console.log(` Cost saved: ~$${costSaved} (at $3/MTok)`);
239
+ console.log(` Cost saved (est.): ~${costSaved} USD (blended avg ~$10/M input tokens: Opus $15, Sonnet $3)`);
236
240
  console.log();
237
241
  }
238
242
  async function handleReindex() {
@@ -270,31 +274,13 @@ function printHelp() {
270
274
  codetree status Check all projects
271
275
  codetree stats Aggregated cache hit rates and token savings
272
276
  codetree reindex Force re-index all projects
277
+ codetree doctor Verify MCP paths, hooks, and IPC (after Node/npm changes)
273
278
  codetree help Show this help
274
279
 
275
280
  Run 'codetree init' from your workspace root — it auto-discovers
276
281
  all git repos underneath and sets up each one.
277
282
  `);
278
283
  }
279
- function findPackageRoot() {
280
- let dir = resolve(__dirname);
281
- for (let i = 0; i < 10; i++) {
282
- if (existsSync(join(dir, "package.json")))
283
- return dir;
284
- const parent = resolve(dir, "..");
285
- if (parent === dir)
286
- break;
287
- dir = parent;
288
- }
289
- return resolve(__dirname, "..");
290
- }
291
- function formatNumber(n) {
292
- if (n < 1_000)
293
- return String(n);
294
- if (n < 1_000_000)
295
- return `${(n / 1_000).toFixed(1)}K`;
296
- return `${(n / 1_000_000).toFixed(1)}M`;
297
- }
298
284
  main().catch((err) => {
299
285
  console.error(`Error: ${err.message}`);
300
286
  process.exit(1);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}