codetree-claude 1.2.2 → 1.3.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/dist/cli.js CHANGED
@@ -1,11 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { resolve, join, dirname } from "node:path";
3
- import { existsSync, readFileSync } from "node:fs";
3
+ import { existsSync, readFileSync, readdirSync } from "node:fs";
4
4
  import { fileURLToPath } from "node:url";
5
- import { findProjectRoot, loadConfig } from "./config.js";
5
+ import { installHook, installMcpServer, createDefaultConfig, updateGitignore } from "./setup/install.js";
6
6
  const __filename = fileURLToPath(import.meta.url);
7
7
  const __dirname = dirname(__filename);
8
- import { installHook, installMcpServer, createDefaultConfig, updateGitignore } from "./setup/install.js";
9
8
  const args = process.argv.slice(2);
10
9
  const command = args[0];
11
10
  async function main() {
@@ -28,135 +27,240 @@ async function main() {
28
27
  break;
29
28
  }
30
29
  }
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
+ // ─── Init ────────────────────────────────────────────────────
31
67
  async function handleInit() {
32
- const projectRoot = findProjectRoot(process.cwd());
68
+ const cwd = resolve(process.cwd());
33
69
  console.log(`\n CodeTree — Codebase Cache for Claude Code\n`);
34
- console.log(` Project root: ${projectRoot}\n`);
35
- // 1. Create config
36
- const configResult = createDefaultConfig(projectRoot);
37
- console.log(` [1/4] Config: ${configResult.path}`);
38
- // 2. Update .gitignore
39
- updateGitignore(projectRoot);
40
- console.log(` [2/4] Added .codetree/ to .gitignore`);
41
- // 3. Register hook
42
- // Find the hook script path — it's relative to this package
70
+ console.log(` Scanning: ${cwd}\n`);
71
+ // Find all git repos under cwd
72
+ const repos = findGitRepos(cwd);
73
+ // Also check if cwd itself is a git repo
74
+ if (existsSync(join(cwd, ".git")) && !repos.includes(cwd)) {
75
+ repos.unshift(cwd);
76
+ }
77
+ // If no repos found, treat cwd as the project root
78
+ if (repos.length === 0) {
79
+ repos.push(cwd);
80
+ }
81
+ console.log(` Found ${repos.length} project${repos.length > 1 ? "s" : ""}:`);
82
+ for (const repo of repos) {
83
+ console.log(` - ${repo}`);
84
+ }
85
+ console.log();
43
86
  const packageRoot = findPackageRoot();
44
87
  const hookScript = join(packageRoot, "dist", "hook", "pre-tool-use.js");
45
- const hookResult = installHook(projectRoot, hookScript);
46
- console.log(` [3/4] Hook: ${hookResult.message}`);
47
- // 4. Register MCP server
48
88
  const serverScript = join(packageRoot, "dist", "server", "mcp-server.js");
49
- const mcpResult = installMcpServer(projectRoot, serverScript);
50
- console.log(` [4/4] MCP: ${mcpResult.message}`);
51
- console.log(`
52
- Setup complete. CodeTree will:
53
-
54
- 1. Start automatically when Claude Code opens this project (via MCP server)
55
- 2. Index your codebase into a persistent SQLite database
56
- 3. Intercept Read/Grep/Glob calls via the PreToolUse hook
57
- 4. Redirect Claude to cached results, saving ~60-70% tokens on exploration
58
-
59
- Files created:
60
- .codetreerc.json — Configuration (edit to customize ignores, cache size, etc.)
61
- .claude/settings.json Hook registration
62
- .mcp.json MCP server registration
63
-
64
- Commands:
65
- codetree status — Check if the index is running and healthy
66
- codetree stats — View cache hit rates and token savings
67
- codetree reindex — Force a full re-index
68
-
69
- The index database lives in .codetree/ (gitignored).
70
- `);
71
- }
72
- async function handleStatus() {
73
- const projectRoot = findProjectRoot(process.cwd());
74
- const portFile = join(projectRoot, ".codetree", "ipc.port");
75
- if (!existsSync(portFile)) {
76
- console.log(" CodeTree is not running. Start a Claude Code session to launch it.");
77
- return;
78
- }
79
- const port = parseInt(readFileSync(portFile, "utf-8").trim(), 10);
80
- try {
81
- const response = await fetch(`http://127.0.0.1:${port}/status`);
82
- const status = await response.json();
83
- console.log(`\n CodeTree Status`);
84
- console.log(` ───────────────`);
85
- console.log(` Running: yes (port ${port})`);
86
- console.log(` Ready: ${status.ready}`);
87
- console.log(` Indexing: ${status.indexing}`);
88
- console.log(` Files: ${status.fileCount}`);
89
+ let totalSetup = 0;
90
+ for (const repo of repos) {
91
+ const repoName = dirname(repo) === repo ? repo : repo.split(/[/\\]/).pop();
92
+ console.log(` ── Setting up: ${repoName} ──`);
93
+ // 1. Config
94
+ const configResult = createDefaultConfig(repo);
95
+ console.log(` [1/4] Config: ${existsSync(join(repo, ".codetreerc.json")) ? "exists" : "created"}`);
96
+ // 2. Gitignore
97
+ updateGitignore(repo);
98
+ console.log(` [2/4] .gitignore: updated`);
99
+ // 3. Hooks
100
+ const hookResult = installHook(repo, hookScript);
101
+ console.log(` [3/4] Hooks: ${hookResult.message}`);
102
+ // 4. MCP server
103
+ const mcpResult = installMcpServer(repo, serverScript);
104
+ console.log(` [4/4] MCP: ${mcpResult.message}`);
105
+ totalSetup++;
89
106
  console.log();
90
107
  }
91
- catch {
92
- console.log(" CodeTree server is not responding. It may have stopped.");
93
- console.log(" Start a new Claude Code session to relaunch.");
94
- }
108
+ console.log(` ✓ ${totalSetup} project${totalSetup > 1 ? "s" : ""} configured.`);
109
+ console.log();
110
+ console.log(` What happens now:`);
111
+ console.log(` 1. Reload VS Code (Ctrl+Shift+P → Developer: Reload Window)`);
112
+ console.log(` 2. Claude Code will auto-start the MCP server per project`);
113
+ console.log(` 3. Hooks intercept Read/Grep/Glob and serve from cache`);
114
+ console.log(` 4. Check the CodeTree sidebar for live stats`);
115
+ console.log();
116
+ console.log(` Commands:`);
117
+ console.log(` codetree status — Check all projects`);
118
+ console.log(` codetree stats — Aggregated token savings across all projects`);
119
+ console.log(` codetree reindex — Force re-index all projects`);
120
+ console.log();
95
121
  }
96
- async function handleStats() {
97
- const projectRoot = findProjectRoot(process.cwd());
98
- const portFile = join(projectRoot, ".codetree", "ipc.port");
99
- // Try live stats first
100
- if (existsSync(portFile)) {
122
+ // ─── Status (aggregated) ─────────────────────────────────────
123
+ async function handleStatus() {
124
+ const cwd = resolve(process.cwd());
125
+ const repos = findGitRepos(cwd);
126
+ if (existsSync(join(cwd, ".git")) && !repos.includes(cwd))
127
+ repos.unshift(cwd);
128
+ if (repos.length === 0)
129
+ repos.push(cwd);
130
+ console.log(`\n CodeTree Status\n`);
131
+ let anyRunning = false;
132
+ for (const repo of repos) {
133
+ const repoName = repo.split(/[/\\]/).pop();
134
+ const portFile = join(repo, ".codetree", "ipc.port");
135
+ if (!existsSync(portFile)) {
136
+ console.log(` ${repoName}: not running`);
137
+ continue;
138
+ }
101
139
  const port = parseInt(readFileSync(portFile, "utf-8").trim(), 10);
102
140
  try {
103
- const response = await fetch(`http://127.0.0.1:${port}/stats`);
104
- const stats = await response.json();
105
- printStats(stats);
106
- return;
141
+ const response = await fetch(`http://127.0.0.1:${port}/status`);
142
+ const status = await response.json();
143
+ console.log(` ${repoName}: active (port ${port}, ${status.fileCount} files, ${status.ready ? "ready" : "indexing..."})`);
144
+ anyRunning = true;
107
145
  }
108
146
  catch {
109
- // Fall through to file-based stats
147
+ console.log(` ${repoName}: port file exists but server not responding`);
110
148
  }
111
149
  }
112
- // Try stats file
113
- const config = loadConfig(projectRoot);
114
- if (existsSync(config.telemetry.statsFile)) {
150
+ if (!anyRunning) {
151
+ console.log(`\n No servers running. Start a Claude Code session to launch them.`);
152
+ }
153
+ console.log();
154
+ }
155
+ // ─── Stats (aggregated) ──────────────────────────────────────
156
+ async function handleStats() {
157
+ const cwd = resolve(process.cwd());
158
+ const repos = findGitRepos(cwd);
159
+ if (existsSync(join(cwd, ".git")) && !repos.includes(cwd))
160
+ repos.unshift(cwd);
161
+ if (repos.length === 0)
162
+ repos.push(cwd);
163
+ let totalHits = 0;
164
+ let totalMisses = 0;
165
+ let totalQueries = 0;
166
+ let totalTokensSaved = 0;
167
+ let totalFiles = 0;
168
+ let activeRepos = 0;
169
+ console.log(`\n CodeTree Stats — Aggregated\n`);
170
+ for (const repo of repos) {
171
+ const repoName = repo.split(/[/\\]/).pop();
172
+ const portFile = join(repo, ".codetree", "ipc.port");
173
+ if (!existsSync(portFile))
174
+ continue;
175
+ const port = parseInt(readFileSync(portFile, "utf-8").trim(), 10);
115
176
  try {
116
- const stats = JSON.parse(readFileSync(config.telemetry.statsFile, "utf-8"));
117
- printStats(stats);
118
- return;
177
+ const [statsRes, statusRes] = await Promise.all([
178
+ fetch(`http://127.0.0.1:${port}/stats`),
179
+ fetch(`http://127.0.0.1:${port}/status`),
180
+ ]);
181
+ const stats = await statsRes.json();
182
+ const status = await statusRes.json();
183
+ totalHits += stats.cacheHits || 0;
184
+ totalMisses += stats.cacheMisses || 0;
185
+ totalQueries += stats.hookQueries || 0;
186
+ totalTokensSaved += stats.estimatedTokensSaved || stats.tokensSaved || 0;
187
+ totalFiles += status.fileCount || 0;
188
+ activeRepos++;
189
+ const hitRate = stats.hookQueries > 0 ? ((stats.cacheHits / stats.hookQueries) * 100).toFixed(1) : "0.0";
190
+ console.log(` ${repoName}: ${hitRate}% hit rate | ${status.fileCount} files | ~${formatNumber(stats.estimatedTokensSaved || 0)} tokens saved`);
119
191
  }
120
192
  catch {
121
- // Fall through
193
+ // Server not responding
122
194
  }
123
195
  }
124
- console.log(" No stats available. Run a Claude Code session with CodeTree first.");
125
- }
126
- function printStats(stats) {
127
- const hitRate = stats.hitRate;
128
- const tokensSaved = stats.estimatedTokensSaved || stats.tokensSaved || 0;
129
- console.log(`\n CodeTree Statistics`);
130
- console.log(` ──────────────────`);
131
- console.log(` Hook queries: ${stats.hookQueries}`);
132
- console.log(` Cache hits: ${stats.cacheHits}`);
133
- console.log(` Cache misses: ${stats.cacheMisses}`);
134
- console.log(` Hit rate: ${(hitRate * 100).toFixed(1)}%`);
135
- console.log(` Tokens saved: ~${formatNumber(tokensSaved)}`);
136
- console.log(` Est. cost saved: ~$${((tokensSaved / 1_000_000) * 3).toFixed(2)} (at $3/MTok)`);
196
+ if (activeRepos === 0) {
197
+ // Try stats files
198
+ for (const repo of repos) {
199
+ const statsFile = join(repo, ".codetree", "stats.json");
200
+ if (existsSync(statsFile)) {
201
+ try {
202
+ const stats = JSON.parse(readFileSync(statsFile, "utf-8"));
203
+ totalHits += stats.cacheHits || 0;
204
+ totalMisses += stats.cacheMisses || 0;
205
+ totalQueries += stats.hookQueries || 0;
206
+ totalTokensSaved += stats.tokensSaved || 0;
207
+ }
208
+ catch { }
209
+ }
210
+ }
211
+ }
212
+ const totalHitRate = totalQueries > 0 ? ((totalHits / totalQueries) * 100).toFixed(1) : "0.0";
213
+ const costSaved = ((totalTokensSaved / 1_000_000) * 3).toFixed(2);
214
+ console.log(`\n ── Totals ──`);
215
+ console.log(` Active repos: ${activeRepos}`);
216
+ console.log(` Total files: ${formatNumber(totalFiles)}`);
217
+ console.log(` Hook queries: ${formatNumber(totalQueries)}`);
218
+ console.log(` Cache hits: ${formatNumber(totalHits)}`);
219
+ console.log(` Cache misses: ${formatNumber(totalMisses)}`);
220
+ console.log(` Hit rate: ${totalHitRate}%`);
221
+ console.log(` Tokens saved: ~${formatNumber(totalTokensSaved)}`);
222
+ console.log(` Cost saved: ~$${costSaved} (at $3/MTok)`);
137
223
  console.log();
138
224
  }
139
225
  async function handleReindex() {
140
- console.log(" Triggering full reindex...");
141
- console.log(" This is done automatically — just restart your Claude Code session.");
142
- console.log(" To force it: delete .codetree/index.db and restart Claude Code.");
226
+ const cwd = resolve(process.cwd());
227
+ const repos = findGitRepos(cwd);
228
+ if (existsSync(join(cwd, ".git")) && !repos.includes(cwd))
229
+ repos.unshift(cwd);
230
+ if (repos.length === 0)
231
+ repos.push(cwd);
232
+ for (const repo of repos) {
233
+ const repoName = repo.split(/[/\\]/).pop();
234
+ const dbPath = join(repo, ".codetree", "index.db");
235
+ if (existsSync(dbPath)) {
236
+ try {
237
+ const { unlinkSync } = await import("node:fs");
238
+ unlinkSync(dbPath);
239
+ console.log(` ${repoName}: index deleted, will rebuild on next session`);
240
+ }
241
+ catch {
242
+ console.log(` ${repoName}: could not delete index (file locked?)`);
243
+ }
244
+ }
245
+ else {
246
+ console.log(` ${repoName}: no index to delete`);
247
+ }
248
+ }
249
+ console.log(`\n Reload VS Code to trigger reindex.\n`);
143
250
  }
144
251
  function printHelp() {
145
252
  console.log(`
146
253
  CodeTree — Codebase Cache for Claude Code
147
254
 
148
255
  Usage:
149
- codetree init Set up CodeTree in the current project
150
- codetree status Check if CodeTree is running
151
- codetree stats View cache hit rates and estimated token savings
152
- codetree reindex Force a full re-index
256
+ codetree init Set up CodeTree for all git repos under current directory
257
+ codetree status Check all projects
258
+ codetree stats Aggregated cache hit rates and token savings
259
+ codetree reindex Force re-index all projects
153
260
  codetree help Show this help
154
261
 
155
- How it works:
156
- CodeTree indexes your codebase into a persistent SQLite database
157
- and intercepts Claude Code's Read/Grep/Glob calls. When a file is
158
- cached and unchanged, Claude uses the cached version instead of
159
- re-reading it, saving ~60-70% of tokens spent on codebase exploration.
262
+ Run 'codetree init' from your workspace root — it auto-discovers
263
+ all git repos underneath and sets up each one.
160
264
  `);
161
265
  }
162
266
  function findPackageRoot() {
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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"}
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * Register all CodeTree hooks in Claude Code settings.
3
+ * Writes to BOTH user-level (~/.claude/settings.json) and project-level.
4
+ * User-level is guaranteed to be loaded by Claude Code regardless of workspace.
3
5
  */
4
6
  export declare function installHook(projectRoot: string, hookScriptPath: string): {
5
7
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/setup/install.ts"],"names":[],"mappings":"AAiCA;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA2H9G;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmCrH;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiC3F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAYzD"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/setup/install.ts"],"names":[],"mappings":"AA0FA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAiB9G;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAgCrH;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiC3F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAYzD"}
@@ -3,17 +3,16 @@ import { join, dirname } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  const __filename = fileURLToPath(import.meta.url);
5
5
  const __dirname = dirname(__filename);
6
- /**
7
- * Register all CodeTree hooks in Claude Code settings.
8
- */
9
- export function installHook(projectRoot, hookScriptPath) {
10
- // hookScriptPath points to pre-tool-use.js
11
- // Derive other hook paths from the same directory
12
- const hookDir = dirname(hookScriptPath);
13
- const postToolUseScript = join(hookDir, "post-tool-use.js");
14
- const sessionStartScript = join(hookDir, "session-start.js");
15
- // Find or create .claude/settings.json
16
- const claudeDir = join(projectRoot, ".claude");
6
+ function addHookIfMissing(hooks, matcher, command) {
7
+ const exists = hooks.find((h) => h.hooks?.some((hook) => hook.command?.includes("codetree")));
8
+ if (!exists) {
9
+ hooks.push({
10
+ matcher,
11
+ hooks: [{ type: "command", command }],
12
+ });
13
+ }
14
+ }
15
+ function writeHooksToSettings(claudeDir, hookScriptPath, hookDir, postToolUseScript, sessionStartScript) {
17
16
  const settingsPath = join(claudeDir, "settings.json");
18
17
  if (!existsSync(claudeDir)) {
19
18
  mkdirSync(claudeDir, { recursive: true });
@@ -23,98 +22,50 @@ export function installHook(projectRoot, hookScriptPath) {
23
22
  try {
24
23
  settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
25
24
  }
26
- catch {
27
- // Invalid JSON, start fresh
28
- }
25
+ catch { }
29
26
  }
30
- // Add hook
31
27
  if (!settings.hooks)
32
28
  settings.hooks = {};
29
+ const norm = (p) => p.replace(/\\/g, "/");
30
+ const cmd = (p) => `node "${norm(p)}"`;
33
31
  if (!settings.hooks.PreToolUse)
34
32
  settings.hooks.PreToolUse = [];
35
- // Check if PreToolUse hook already exists
36
- const existingHook = settings.hooks.PreToolUse.find((h) => h.hooks?.some((hook) => hook.command?.includes("codetree")));
37
- // Normalize path for the hook command
38
- const normalizedPath = hookScriptPath.replace(/\\/g, "/");
39
- if (!existingHook) {
40
- settings.hooks.PreToolUse.push({
41
- matcher: "Read|Grep|Glob",
42
- hooks: [
43
- {
44
- type: "command",
45
- command: `node "${normalizedPath}"`,
46
- },
47
- ],
48
- });
49
- }
50
- // Add PostToolUse hook for session capture
33
+ addHookIfMissing(settings.hooks.PreToolUse, "Read|Grep|Glob", cmd(hookScriptPath));
51
34
  if (!settings.hooks.PostToolUse)
52
35
  settings.hooks.PostToolUse = [];
53
- const existingPostHook = settings.hooks.PostToolUse.find((h) => h.hooks?.some((hook) => hook.command?.includes("codetree")));
54
- if (!existingPostHook) {
55
- const normalizedPostPath = postToolUseScript.replace(/\\/g, "/");
56
- settings.hooks.PostToolUse.push({
57
- matcher: "Read|Grep|Glob|Edit|Write|codetree_read|codetree_search",
58
- hooks: [
59
- {
60
- type: "command",
61
- command: `node "${normalizedPostPath}"`,
62
- },
63
- ],
64
- });
65
- }
66
- // Add SessionStart hook for context injection
36
+ addHookIfMissing(settings.hooks.PostToolUse, "Read|Grep|Glob|Edit|Write|codetree_read|codetree_search", cmd(postToolUseScript));
67
37
  if (!settings.hooks.SessionStart)
68
38
  settings.hooks.SessionStart = [];
69
- const existingSessionHook = settings.hooks.SessionStart.find((h) => h.hooks?.some((hook) => hook.command?.includes("codetree")));
70
- if (!existingSessionHook) {
71
- const normalizedSessionPath = sessionStartScript.replace(/\\/g, "/");
72
- settings.hooks.SessionStart.push({
73
- matcher: "",
74
- hooks: [
75
- {
76
- type: "command",
77
- command: `node "${normalizedSessionPath}"`,
78
- },
79
- ],
80
- });
81
- }
82
- // Add PreCompact hook for saving context before compaction
39
+ addHookIfMissing(settings.hooks.SessionStart, "", cmd(sessionStartScript));
83
40
  const preCompactScript = join(hookDir, "pre-compact.js");
84
41
  if (!settings.hooks.PreCompact)
85
42
  settings.hooks.PreCompact = [];
86
- const existingPreCompact = settings.hooks.PreCompact.find((h) => h.hooks?.some((hook) => hook.command?.includes("codetree")));
87
- if (!existingPreCompact) {
88
- const normalizedPreCompact = preCompactScript.replace(/\\/g, "/");
89
- settings.hooks.PreCompact.push({
90
- matcher: "",
91
- hooks: [
92
- {
93
- type: "command",
94
- command: `node "${normalizedPreCompact}"`,
95
- },
96
- ],
97
- });
98
- }
99
- // Add PostCompact hook for restoring context after compaction
43
+ addHookIfMissing(settings.hooks.PreCompact, "", cmd(preCompactScript));
100
44
  const postCompactScript = join(hookDir, "post-compact.js");
101
45
  if (!settings.hooks.PostCompact)
102
46
  settings.hooks.PostCompact = [];
103
- const existingPostCompact = settings.hooks.PostCompact.find((h) => h.hooks?.some((hook) => hook.command?.includes("codetree")));
104
- if (!existingPostCompact) {
105
- const normalizedPostCompact = postCompactScript.replace(/\\/g, "/");
106
- settings.hooks.PostCompact.push({
107
- matcher: "",
108
- hooks: [
109
- {
110
- type: "command",
111
- command: `node "${normalizedPostCompact}"`,
112
- },
113
- ],
114
- });
115
- }
47
+ addHookIfMissing(settings.hooks.PostCompact, "", cmd(postCompactScript));
116
48
  writeFileSync(settingsPath, JSON.stringify(settings, null, 2), "utf-8");
117
- return { success: true, message: `Hook registered in ${settingsPath}` };
49
+ }
50
+ /**
51
+ * Register all CodeTree hooks in Claude Code settings.
52
+ * Writes to BOTH user-level (~/.claude/settings.json) and project-level.
53
+ * User-level is guaranteed to be loaded by Claude Code regardless of workspace.
54
+ */
55
+ export function installHook(projectRoot, hookScriptPath) {
56
+ const hookDir = dirname(hookScriptPath);
57
+ const postToolUseScript = join(hookDir, "post-tool-use.js");
58
+ const sessionStartScript = join(hookDir, "session-start.js");
59
+ // Write to user-level first (guaranteed to be loaded)
60
+ const homeDir = process.env.HOME || process.env.USERPROFILE || "";
61
+ if (homeDir) {
62
+ const userClaudeDir = join(homeDir, ".claude");
63
+ writeHooksToSettings(userClaudeDir, hookScriptPath, hookDir, postToolUseScript, sessionStartScript);
64
+ }
65
+ // Also write to project-level
66
+ const claudeDir = join(projectRoot, ".claude");
67
+ writeHooksToSettings(claudeDir, hookScriptPath, hookDir, postToolUseScript, sessionStartScript);
68
+ return { success: true, message: `Hooks registered (user-level + project-level)` };
118
69
  }
119
70
  /**
120
71
  * Register CodeTree MCP server.
@@ -133,10 +84,7 @@ export function installMcpServer(projectRoot, serverScriptPath) {
133
84
  }
134
85
  if (!config.mcpServers)
135
86
  config.mcpServers = {};
136
- // Check if already registered
137
- if (config.mcpServers.codetree) {
138
- return { success: true, message: "MCP server already registered" };
139
- }
87
+ // Always update don't skip, paths may have changed
140
88
  // Normalize all paths to forward slashes for cross-platform compatibility
141
89
  const normalizedPath = serverScriptPath.replace(/\\/g, "/");
142
90
  const normalizedRoot = projectRoot.replace(/\\/g, "/");
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/setup/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/setup/install.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codetree-claude",
3
- "version": "1.2.2",
3
+ "version": "1.3.1",
4
4
  "description": "Persistent codebase index and cache for Claude Code — reduces token usage by 60-70% by intercepting and caching file reads",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",