codetree-claude 1.5.0 → 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.
- package/README.md +137 -121
- package/dist/cli.js +69 -83
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +126 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +22 -0
- package/dist/config.js.map +1 -1
- package/dist/diff.d.ts +37 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +181 -0
- package/dist/diff.js.map +1 -0
- package/dist/doctor.d.ts +5 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +139 -0
- package/dist/doctor.js.map +1 -0
- package/dist/hook/post-compact.js +1 -23
- package/dist/hook/post-compact.js.map +1 -1
- package/dist/hook/post-tool-use.js +11 -27
- package/dist/hook/post-tool-use.js.map +1 -1
- package/dist/hook/pre-compact.js +1 -22
- package/dist/hook/pre-compact.js.map +1 -1
- package/dist/hook/pre-tool-use.bundled.js +49 -77
- package/dist/hook/pre-tool-use.js +23 -90
- package/dist/hook/pre-tool-use.js.map +1 -1
- package/dist/hook/session-start.js +19 -23
- package/dist/hook/session-start.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/indexer/extractor-registry.d.ts.map +1 -1
- package/dist/indexer/extractor-registry.js +6 -0
- package/dist/indexer/extractor-registry.js.map +1 -1
- package/dist/indexer/extractors/csharp.d.ts +12 -0
- package/dist/indexer/extractors/csharp.d.ts.map +1 -0
- package/dist/indexer/extractors/csharp.js +165 -0
- package/dist/indexer/extractors/csharp.js.map +1 -0
- package/dist/indexer/extractors/go.js +44 -1
- package/dist/indexer/extractors/go.js.map +1 -1
- package/dist/indexer/extractors/java.d.ts.map +1 -1
- package/dist/indexer/extractors/java.js +41 -3
- package/dist/indexer/extractors/java.js.map +1 -1
- package/dist/indexer/extractors/javascript.d.ts.map +1 -1
- package/dist/indexer/extractors/javascript.js +67 -3
- package/dist/indexer/extractors/javascript.js.map +1 -1
- package/dist/indexer/extractors/python.d.ts.map +1 -1
- package/dist/indexer/extractors/python.js +31 -2
- package/dist/indexer/extractors/python.js.map +1 -1
- package/dist/indexer/extractors/ruby.d.ts +10 -0
- package/dist/indexer/extractors/ruby.d.ts.map +1 -0
- package/dist/indexer/extractors/ruby.js +145 -0
- package/dist/indexer/extractors/ruby.js.map +1 -0
- package/dist/indexer/extractors/rust.d.ts +10 -0
- package/dist/indexer/extractors/rust.d.ts.map +1 -0
- package/dist/indexer/extractors/rust.js +194 -0
- package/dist/indexer/extractors/rust.js.map +1 -0
- package/dist/indexer/indexer.d.ts +15 -0
- package/dist/indexer/indexer.d.ts.map +1 -1
- package/dist/indexer/indexer.js +168 -4
- package/dist/indexer/indexer.js.map +1 -1
- package/dist/server/ipc.d.ts +10 -4
- package/dist/server/ipc.d.ts.map +1 -1
- package/dist/server/ipc.js +190 -109
- package/dist/server/ipc.js.map +1 -1
- package/dist/server/mcp-server.js +36 -27
- package/dist/server/mcp-server.js.map +1 -1
- package/dist/server/tools/codetree-find-refs.d.ts.map +1 -1
- package/dist/server/tools/codetree-find-refs.js +23 -14
- package/dist/server/tools/codetree-find-refs.js.map +1 -1
- package/dist/server/tools/codetree-memory.d.ts +3 -6
- package/dist/server/tools/codetree-memory.d.ts.map +1 -1
- package/dist/server/tools/codetree-memory.js +9 -10
- package/dist/server/tools/codetree-memory.js.map +1 -1
- package/dist/server/tools/codetree-outline.d.ts +57 -0
- package/dist/server/tools/codetree-outline.d.ts.map +1 -0
- package/dist/server/tools/codetree-outline.js +76 -0
- package/dist/server/tools/codetree-outline.js.map +1 -0
- package/dist/server/tools/codetree-probe.d.ts +53 -0
- package/dist/server/tools/codetree-probe.d.ts.map +1 -0
- package/dist/server/tools/codetree-probe.js +81 -0
- package/dist/server/tools/codetree-probe.js.map +1 -0
- package/dist/server/tools/codetree-read.d.ts +52 -3
- package/dist/server/tools/codetree-read.d.ts.map +1 -1
- package/dist/server/tools/codetree-read.js +237 -55
- package/dist/server/tools/codetree-read.js.map +1 -1
- package/dist/server/tools/codetree-search.d.ts +13 -1
- package/dist/server/tools/codetree-search.d.ts.map +1 -1
- package/dist/server/tools/codetree-search.js +80 -52
- package/dist/server/tools/codetree-search.js.map +1 -1
- package/dist/server/tools/codetree-structure.d.ts +25 -1
- package/dist/server/tools/codetree-structure.d.ts.map +1 -1
- package/dist/server/tools/codetree-structure.js +92 -42
- package/dist/server/tools/codetree-structure.js.map +1 -1
- package/dist/server/tools/codetree-summary.d.ts +2 -0
- package/dist/server/tools/codetree-summary.d.ts.map +1 -1
- package/dist/server/tools/codetree-summary.js +5 -0
- package/dist/server/tools/codetree-summary.js.map +1 -1
- package/dist/setup/install.d.ts +45 -1
- package/dist/setup/install.d.ts.map +1 -1
- package/dist/setup/install.js +163 -58
- package/dist/setup/install.js.map +1 -1
- package/dist/setup/template-load.d.ts +9 -0
- package/dist/setup/template-load.d.ts.map +1 -0
- package/dist/setup/template-load.js +39 -0
- package/dist/setup/template-load.js.map +1 -0
- package/dist/storage/database.d.ts +49 -0
- package/dist/storage/database.d.ts.map +1 -1
- package/dist/storage/database.js +383 -43
- package/dist/storage/database.js.map +1 -1
- package/dist/storage/disk-manager.d.ts.map +1 -1
- package/dist/storage/disk-manager.js +1 -5
- package/dist/storage/disk-manager.js.map +1 -1
- package/dist/utils.d.ts +23 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +102 -0
- package/dist/utils.js.map +1 -0
- package/package.json +46 -10
- package/templates/README.md +15 -0
- package/templates/agents-codetree.snippet.md +24 -0
- package/templates/claude-md-codetree.snippet.md +22 -0
- package/templates/claude-rules-codetree.md +23 -0
- package/templates/cursor-codetree.mdc +31 -0
- package/templates/gemini-codetree.snippet.md +6 -0
package/README.md
CHANGED
|
@@ -1,49 +1,65 @@
|
|
|
1
|
-
# CodeTree
|
|
1
|
+
# CodeTree (`codetree-claude`)
|
|
2
2
|
|
|
3
|
-
**
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
9
|
+
## Supported AI coding tools (multi-IDE)
|
|
10
10
|
|
|
11
|
-
|
|
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
|
-
|
|
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.
|
|
14
21
|
|
|
15
|
-
|
|
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)
|
|
16
33
|
|
|
17
34
|
```
|
|
18
|
-
Developer asks
|
|
35
|
+
Developer asks the assistant to work on a feature
|
|
19
36
|
│
|
|
20
|
-
├──
|
|
21
|
-
│ └── Hook
|
|
22
|
-
│ └──
|
|
37
|
+
├── Read("src/api/auth.ts")
|
|
38
|
+
│ └── Hook (Claude Code) → cached? YES → codetree_read
|
|
39
|
+
│ └── Cached content + symbol metadata
|
|
23
40
|
│
|
|
24
|
-
├──
|
|
25
|
-
│ └── Hook
|
|
26
|
-
│ └── Returns indexed symbol locations instantly
|
|
41
|
+
├── Grep("handleAuth")
|
|
42
|
+
│ └── Hook → indexed? YES → codetree_search
|
|
27
43
|
│
|
|
28
|
-
└──
|
|
29
|
-
└── Hook
|
|
30
|
-
└── Returns file tree from index
|
|
44
|
+
└── Glob("src/**/*.ts")
|
|
45
|
+
└── Hook → tree indexed? YES → codetree_structure
|
|
31
46
|
```
|
|
32
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
|
+
|
|
33
50
|
## Install
|
|
34
51
|
|
|
35
|
-
### Option 1: npm package (any project)
|
|
52
|
+
### Option 1: npm package (global — any project)
|
|
36
53
|
|
|
37
54
|
```bash
|
|
38
55
|
npm install -g codetree-claude
|
|
39
56
|
|
|
40
|
-
# In your project root:
|
|
41
57
|
codetree init
|
|
42
58
|
```
|
|
43
59
|
|
|
44
|
-
### Option 2: VS Code
|
|
60
|
+
### Option 2: VS Code extension
|
|
45
61
|
|
|
46
|
-
Install
|
|
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.
|
|
47
63
|
|
|
48
64
|
### Option 3: Per-project dev dependency
|
|
49
65
|
|
|
@@ -52,29 +68,60 @@ npm install --save-dev codetree-claude
|
|
|
52
68
|
npx codetree init
|
|
53
69
|
```
|
|
54
70
|
|
|
55
|
-
## What
|
|
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.
|
|
56
74
|
|
|
57
75
|
```
|
|
58
76
|
your-project/
|
|
59
|
-
.codetreerc.json
|
|
60
|
-
.claude/settings.json
|
|
61
|
-
.mcp.json
|
|
62
|
-
.
|
|
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)
|
|
63
88
|
index.db
|
|
64
89
|
ipc.port
|
|
65
90
|
stats.json
|
|
66
91
|
```
|
|
67
92
|
|
|
68
|
-
|
|
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
|
|
69
109
|
|
|
70
110
|
```bash
|
|
71
|
-
codetree init # Set up CodeTree
|
|
111
|
+
codetree init # Set up CodeTree + Claude + Cursor + Antigravity + Codex configs
|
|
72
112
|
codetree status # Check if running + index health
|
|
73
|
-
codetree stats #
|
|
113
|
+
codetree stats # Cache hit rate + estimated token savings (see output for assumptions)
|
|
74
114
|
codetree reindex # Force full re-index
|
|
115
|
+
codetree doctor # Verify MCP paths, hook scripts, IPC (after Node/npm changes)
|
|
75
116
|
codetree help # Show help
|
|
76
117
|
```
|
|
77
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
|
+
|
|
78
125
|
## Configuration
|
|
79
126
|
|
|
80
127
|
Edit `.codetreerc.json` in your project root:
|
|
@@ -94,119 +141,88 @@ Edit `.codetreerc.json` in your project root:
|
|
|
94
141
|
}
|
|
95
142
|
```
|
|
96
143
|
|
|
97
|
-
## Built for
|
|
144
|
+
## Built for real-world reliability
|
|
98
145
|
|
|
99
|
-
|
|
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.
|
|
100
150
|
|
|
101
|
-
###
|
|
102
|
-
- **
|
|
103
|
-
- **
|
|
104
|
-
- **Works with any tool** — git merge, rebase, stash, sed, vim — any process that modifies files on disk is detected on the next read.
|
|
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.
|
|
105
154
|
|
|
106
|
-
###
|
|
107
|
-
- **
|
|
108
|
-
- **
|
|
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.
|
|
109
160
|
|
|
110
|
-
###
|
|
111
|
-
-
|
|
112
|
-
- **Large repos** — Project structure auto-collapses to top-level directories for repos with 500+ files.
|
|
113
|
-
- **Smart redirects** — The hook only blocks native Read/Edit/Write/Grep/Glob when CodeTree can actually serve the request. If the file isn't cached, native tools proceed normally.
|
|
114
|
-
- **Graceful degradation** — Session logging, cache validation, and all non-critical operations are wrapped in try/catch. A failure in telemetry never breaks your read or edit.
|
|
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.
|
|
115
163
|
|
|
116
|
-
|
|
117
|
-
Every CodeTree tool logs its activity — not just native Read/Grep/Glob. Hot files, search patterns, and modification history are complete across both native and CodeTree tools, giving you accurate session context and compaction restores.
|
|
164
|
+
## MCP tools (all MCP hosts)
|
|
118
165
|
|
|
119
|
-
|
|
166
|
+
These tools are registered for **Claude Code, Cursor, Codex, Antigravity**, and any compatible MCP client:
|
|
120
167
|
|
|
121
|
-
|
|
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. |
|
|
122
178
|
|
|
123
|
-
|
|
124
|
-
|------|----------|-------------|
|
|
125
|
-
| `codetree_read` | Read | Cached file read with symbol metadata. Mtime-validated, never stale. |
|
|
126
|
-
| `codetree_edit` | Edit | File edit without prior Read. Handles `\r\n` line endings on Windows. |
|
|
127
|
-
| `codetree_write` | Write | File write without prior Read. Auto-creates parent directories. |
|
|
128
|
-
| `codetree_search` | Grep | Symbol index search + optional content search with fast pre-filtering. |
|
|
129
|
-
| `codetree_structure` | Glob | Project tree browser. Auto-collapses large repos to top-level directories. |
|
|
130
|
-
| `codetree_find_refs` | — | Cross-file reference finder with fast file-skip for common symbols. |
|
|
131
|
-
| `codetree_summary` | — | Full project overview for session start. |
|
|
132
|
-
| `codetree_memory` | — | Persistent session memory — save and recall insights across conversations. |
|
|
179
|
+
## Supported languages (symbols)
|
|
133
180
|
|
|
134
|
-
|
|
181
|
+
Symbol extraction: JavaScript, TypeScript (JSX/TSX), Python, Java/Kotlin/C#, Go.
|
|
135
182
|
|
|
136
|
-
|
|
137
|
-
- JavaScript / TypeScript (JSX, TSX)
|
|
138
|
-
- Python
|
|
139
|
-
- Java / Kotlin / C#
|
|
140
|
-
- Go
|
|
183
|
+
Indexing and text caching: Prisma, GraphQL, Protobuf, SQL, YAML, TOML, JSON, Markdown, HTML, CSS/SCSS, shell, Docker, Terraform, `.env`, and more.
|
|
141
184
|
|
|
142
|
-
|
|
143
|
-
- Prisma, GraphQL, Protobuf
|
|
144
|
-
- SQL, YAML, TOML, JSON
|
|
145
|
-
- Markdown, HTML, CSS/SCSS
|
|
146
|
-
- Shell scripts, Dockerfiles, Terraform
|
|
147
|
-
- `.env` and config files
|
|
148
|
-
|
|
149
|
-
## Architecture
|
|
185
|
+
## Architecture (conceptual)
|
|
150
186
|
|
|
151
187
|
```
|
|
152
|
-
|
|
153
|
-
│ Claude Code
|
|
154
|
-
│
|
|
155
|
-
│ │
|
|
156
|
-
│ │
|
|
157
|
-
│
|
|
158
|
-
│
|
|
159
|
-
│
|
|
160
|
-
│ │
|
|
161
|
-
│
|
|
162
|
-
│
|
|
163
|
-
│
|
|
164
|
-
│
|
|
165
|
-
│
|
|
166
|
-
|
|
167
|
-
│ │ ├── codetree_edit (\r\n-safe) │ │
|
|
168
|
-
│ │ ├── codetree_write │ │
|
|
169
|
-
│ │ ├── codetree_search (pre-filtered) │ │
|
|
170
|
-
│ │ ├── codetree_structure (auto-collapse) │ │
|
|
171
|
-
│ │ ├── codetree_find_refs │ │
|
|
172
|
-
│ │ ├── codetree_summary │ │
|
|
173
|
-
│ │ └── codetree_memory (cross-session) │ │
|
|
174
|
-
│ └──────────────┬──────────────────────────────┘ │
|
|
175
|
-
│ │ │
|
|
176
|
-
│ ┌──────────────▼──────────────────────────────┐ │
|
|
177
|
-
│ │ Indexer + Cache Layer │ │
|
|
178
|
-
│ │ ├── SQLite database (persistent index) │ │
|
|
179
|
-
│ │ ├── LRU cache (hot files, mtime-checked) │ │
|
|
180
|
-
│ │ ├── Symbol extraction (JS/TS/Py/Java/Go) │ │
|
|
181
|
-
│ │ ├── File watcher (chokidar, live updates) │ │
|
|
182
|
-
│ │ ├── Git HEAD watcher (branch switch detect) │ │
|
|
183
|
-
│ │ ├── Session memory (reads/edits/insights) │ │
|
|
184
|
-
│ │ └── Disk manager (space monitoring) │ │
|
|
185
|
-
│ └─────────────────────────────────────────────┘ │
|
|
186
|
-
└───────────────────────────────────────────────────┘
|
|
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
|
+
└─────────────────────────────────────────────────────────────┘
|
|
187
203
|
```
|
|
188
204
|
|
|
189
|
-
## Org-wide
|
|
205
|
+
## Org-wide rollout
|
|
190
206
|
|
|
191
|
-
1. Add `codetree-claude` as a dev dependency
|
|
192
|
-
2. Commit `.codetreerc.json
|
|
193
|
-
3. Add `.codetree/` to `.gitignore` (
|
|
194
|
-
4. Each developer runs `npx codetree init` once (or
|
|
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).
|
|
195
211
|
|
|
196
|
-
The index
|
|
212
|
+
The index is **local per machine** and rebuilds on demand.
|
|
197
213
|
|
|
198
|
-
## Token
|
|
214
|
+
## Token savings (illustrative)
|
|
199
215
|
|
|
200
|
-
|
|
216
|
+
Typical session on a large TypeScript repo — **your** numbers may differ; run **`codetree stats`** for real metrics.
|
|
201
217
|
|
|
202
218
|
| Without CodeTree | With CodeTree |
|
|
203
|
-
|
|
204
|
-
|
|
|
205
|
-
|
|
|
206
|
-
|
|
207
|
-
|
|
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
|
|
208
224
|
|
|
209
|
-
|
|
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.
|
|
210
226
|
|
|
211
227
|
## License
|
|
212
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
|
|
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 =
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
|
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
|
-
|
|
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:
|
|
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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"}
|