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
@@ -6,6 +6,48 @@ import { hashContent, ensureHasherReady, quickHash } from "./hasher.js";
6
6
  import { IgnoreFilter } from "./ignore.js";
7
7
  import { ExtractorRegistry } from "./extractor-registry.js";
8
8
  import { detectLanguage } from "./extractors/types.js";
9
+ // Heuristic: a "near-binary" text file has a high ratio of unprintable bytes.
10
+ // Such files (minified bundles, logs full of escape codes, encoded blobs) blow up
11
+ // AI context if served. We refuse to cache them.
12
+ function looksBinary(content) {
13
+ if (content.length === 0)
14
+ return false;
15
+ // Sample first 4KB
16
+ const sample = content.length > 4096 ? content.slice(0, 4096) : content;
17
+ let unprintable = 0;
18
+ for (let i = 0; i < sample.length; i++) {
19
+ const c = sample.charCodeAt(i);
20
+ // Allow tab(9), LF(10), CR(13) and printable ASCII 32-126 + UTF-8 continuation/lead bytes
21
+ if (c === 9 || c === 10 || c === 13 ||
22
+ (c >= 32 && c <= 126) ||
23
+ c >= 128)
24
+ continue;
25
+ unprintable++;
26
+ }
27
+ return unprintable / sample.length > 0.05;
28
+ }
29
+ // Tokenize source for the in-memory postings index.
30
+ // Identifiers / camelCase / snake_case parts; lowercase; min length 3; cap per-file.
31
+ function tokenize(content, maxTokens = 4000) {
32
+ const tokens = new Set();
33
+ if (!content)
34
+ return tokens;
35
+ const re = /[A-Za-z_][A-Za-z0-9_]{2,}/g;
36
+ let m;
37
+ let count = 0;
38
+ while ((m = re.exec(content)) !== null) {
39
+ const raw = m[0].toLowerCase();
40
+ if (raw.length >= 3 && raw.length <= 64) {
41
+ if (!tokens.has(raw)) {
42
+ tokens.add(raw);
43
+ count++;
44
+ if (count >= maxTokens)
45
+ break;
46
+ }
47
+ }
48
+ }
49
+ return tokens;
50
+ }
9
51
  export class Indexer {
10
52
  db;
11
53
  cache;
@@ -14,6 +56,11 @@ export class Indexer {
14
56
  config;
15
57
  indexing = false;
16
58
  ready = false;
59
+ // In-memory token postings: lowercased token -> set of relPaths containing it.
60
+ // Used by codetree_search/find_refs/probe to avoid scanning every cached file.
61
+ tokenPostings = new Map();
62
+ // File -> tokens (so we can clean up postings on file change/delete)
63
+ fileTokens = new Map();
17
64
  constructor(config, db, cache) {
18
65
  this.config = config;
19
66
  this.db = db;
@@ -23,6 +70,12 @@ export class Indexer {
23
70
  }
24
71
  async init() {
25
72
  await ensureHasherReady();
73
+ // Load persisted token postings from SQLite (instant cold start)
74
+ try {
75
+ this.tokenPostings = this.db.loadAllTokenPostings();
76
+ this.fileTokens = this.db.getTokenPostingsFileMap();
77
+ }
78
+ catch { /* first run — tables may not exist yet */ }
26
79
  this.ready = true;
27
80
  }
28
81
  isReady() {
@@ -93,7 +146,7 @@ export class Indexer {
93
146
  return null;
94
147
  // Quick check: has the file changed since last index?
95
148
  const existing = this.db.getFile(relPath);
96
- if (existing) {
149
+ if (existing && existing.hash !== "force-reindex") {
97
150
  const quick = quickHash(stat.size, Math.floor(stat.mtimeMs));
98
151
  const existingQuick = quickHash(existing.size, existing.mtime_ms);
99
152
  if (quick === existingQuick) {
@@ -109,6 +162,13 @@ export class Indexer {
109
162
  catch {
110
163
  return null;
111
164
  }
165
+ // Skip near-binary "text" files — they would balloon AI context if served.
166
+ if (looksBinary(content)) {
167
+ this.db.deleteFile(relPath);
168
+ this.cache.delete(relPath);
169
+ this.removeTokenPostings(relPath);
170
+ return null;
171
+ }
112
172
  const hash = hashContent(content);
113
173
  // Double check: if hash matches, file content is truly the same
114
174
  if (existing && existing.hash === hash) {
@@ -155,6 +215,21 @@ export class Indexer {
155
215
  }));
156
216
  this.db.upsertDependencies(relPath, depRecords);
157
217
  }
218
+ // Save trigrams for content search
219
+ try {
220
+ this.db.saveTrigrams(relPath, content);
221
+ }
222
+ catch { /* non-critical */ }
223
+ // Save previous content for diff-based reads before overwriting
224
+ if (existing && existing.hash !== hash) {
225
+ const oldCompressed = this.db.getCachedContent(relPath);
226
+ if (oldCompressed) {
227
+ try {
228
+ this.db.savePreviousContent(existing.hash, oldCompressed);
229
+ }
230
+ catch { /* non-critical */ }
231
+ }
232
+ }
158
233
  // Cache content (compressed in SQLite, raw in LRU)
159
234
  try {
160
235
  const compressed = deflateSync(Buffer.from(content, "utf-8"));
@@ -169,6 +244,8 @@ export class Indexer {
169
244
  mtimeMs: stat.mtimeMs,
170
245
  size: stat.size,
171
246
  });
247
+ // Update in-memory token postings for this file
248
+ this.updateTokenPostings(relPath, content);
172
249
  return { symbolCount };
173
250
  }
174
251
  /**
@@ -178,35 +255,176 @@ export class Indexer {
178
255
  const relPath = normalizePath(relative(this.config.projectRoot, absPath));
179
256
  this.db.deleteFile(relPath);
180
257
  this.cache.delete(relPath);
258
+ this.removeTokenPostings(relPath);
259
+ try {
260
+ this.db.deleteTrigrams(relPath);
261
+ }
262
+ catch { /* non-critical */ }
263
+ }
264
+ // ─── Token Postings (in-memory) ─────────────────────────────────
265
+ updateTokenPostings(relPath, content) {
266
+ this.removeTokenPostings(relPath);
267
+ const tokens = tokenize(content);
268
+ this.fileTokens.set(relPath, tokens);
269
+ for (const t of tokens) {
270
+ let set = this.tokenPostings.get(t);
271
+ if (!set) {
272
+ set = new Set();
273
+ this.tokenPostings.set(t, set);
274
+ }
275
+ set.add(relPath);
276
+ }
277
+ // Persist to SQLite for instant cold start
278
+ try {
279
+ this.db.saveTokenPostings(relPath, tokens);
280
+ }
281
+ catch { /* non-critical */ }
181
282
  }
283
+ removeTokenPostings(relPath) {
284
+ const prev = this.fileTokens.get(relPath);
285
+ if (!prev)
286
+ return;
287
+ for (const t of prev) {
288
+ const set = this.tokenPostings.get(t);
289
+ if (set) {
290
+ set.delete(relPath);
291
+ if (set.size === 0)
292
+ this.tokenPostings.delete(t);
293
+ }
294
+ }
295
+ this.fileTokens.delete(relPath);
296
+ try {
297
+ this.db.deleteTokenPostings(relPath);
298
+ }
299
+ catch { /* non-critical */ }
300
+ }
301
+ /**
302
+ * Files that contain ANY of the given tokens (lowercased).
303
+ * If no postings exist for any token, returns empty (caller can fall back).
304
+ */
305
+ filesContainingAny(rawTokens) {
306
+ const out = new Set();
307
+ for (const raw of rawTokens) {
308
+ const t = raw.toLowerCase();
309
+ const set = this.tokenPostings.get(t);
310
+ if (set)
311
+ for (const f of set)
312
+ out.add(f);
313
+ }
314
+ return out;
315
+ }
316
+ /**
317
+ * Files that contain ALL of the given tokens (intersection).
318
+ */
319
+ filesContainingAll(rawTokens) {
320
+ const tokens = rawTokens.map((t) => t.toLowerCase()).filter((t) => t.length >= 3);
321
+ if (tokens.length === 0)
322
+ return new Set();
323
+ const sets = tokens.map((t) => this.tokenPostings.get(t) ?? new Set());
324
+ sets.sort((a, b) => a.size - b.size);
325
+ const out = new Set();
326
+ if (sets[0].size === 0)
327
+ return out;
328
+ outer: for (const f of sets[0]) {
329
+ for (let i = 1; i < sets.length; i++) {
330
+ if (!sets[i].has(f))
331
+ continue outer;
332
+ }
333
+ out.add(f);
334
+ }
335
+ return out;
336
+ }
337
+ /** Whether the postings index has data for any of these tokens (heuristic for "warm"). */
338
+ postingsAvailableFor(rawTokens) {
339
+ for (const raw of rawTokens) {
340
+ if (this.tokenPostings.has(raw.toLowerCase()))
341
+ return true;
342
+ }
343
+ return false;
344
+ }
345
+ /**
346
+ * Invalidate all in-memory caches without deleting indexed data.
347
+ * Used after branch switches — forces mtime revalidation on next file access.
348
+ */
349
+ invalidateCaches() {
350
+ this.cache.clear();
351
+ this.lastValidated.clear();
352
+ }
353
+ // Track last mtime validation time per file — avoid statSync on every read
354
+ lastValidated = new Map();
355
+ static REVALIDATE_INTERVAL_MS = 5000; // check disk mtime at most every 5s per file
182
356
  /**
183
357
  * Read a file from cache. Returns null on cache miss.
358
+ * Validates mtime periodically to catch external edits and branch switches.
184
359
  */
185
360
  readCached(relPath) {
186
361
  const normalized = normalizePath(relPath);
187
362
  // Try in-memory LRU first
188
363
  const cached = this.cache.get(normalized);
189
- if (cached)
364
+ if (cached) {
365
+ // Periodic mtime revalidation — catches external edits (VS Code, git, etc.)
366
+ const now = Date.now();
367
+ const lastCheck = this.lastValidated.get(normalized) || 0;
368
+ if (now - lastCheck > Indexer.REVALIDATE_INTERVAL_MS) {
369
+ this.lastValidated.set(normalized, now);
370
+ try {
371
+ const absPath = join(this.config.projectRoot, normalized);
372
+ const stat = statSync(absPath);
373
+ if (Math.floor(stat.mtimeMs) !== Math.floor(cached.mtimeMs)) {
374
+ // File changed externally — re-index and serve fresh
375
+ this.cache.delete(normalized);
376
+ this.indexFile(absPath);
377
+ const fresh = this.cache.get(normalized);
378
+ return fresh ? fresh.content : null;
379
+ }
380
+ }
381
+ catch {
382
+ // File deleted externally
383
+ this.cache.delete(normalized);
384
+ return null;
385
+ }
386
+ }
190
387
  return cached.content;
388
+ }
191
389
  // Try SQLite content cache
390
+ const fileRecord = this.db.getFile(normalized);
192
391
  const dbContent = this.db.getCachedContent(normalized);
193
- if (dbContent) {
392
+ if (dbContent && fileRecord) {
393
+ // Validate mtime against disk before serving stale data
394
+ const absPath = join(this.config.projectRoot, normalized);
395
+ let mtimeValid = true;
194
396
  try {
195
- const content = inflateSync(dbContent).toString("utf-8");
196
- // Promote to LRU
197
- const fileRecord = this.db.getFile(normalized);
198
- if (fileRecord) {
397
+ const stat = statSync(absPath);
398
+ if (fileRecord.mtime_ms !== Math.floor(stat.mtimeMs)) {
399
+ mtimeValid = false;
400
+ // File changed — re-index it now
401
+ this.indexFile(absPath);
402
+ // Re-read from updated cache
403
+ const freshCached = this.cache.get(normalized);
404
+ if (freshCached)
405
+ return freshCached.content;
406
+ return null;
407
+ }
408
+ }
409
+ catch {
410
+ // File doesn't exist anymore
411
+ return null;
412
+ }
413
+ if (mtimeValid) {
414
+ try {
415
+ const content = inflateSync(dbContent).toString("utf-8");
416
+ // Promote to LRU
199
417
  this.cache.set(normalized, {
200
418
  content,
201
419
  hash: fileRecord.hash,
202
420
  mtimeMs: fileRecord.mtime_ms,
203
421
  size: fileRecord.size,
204
422
  });
423
+ return content;
424
+ }
425
+ catch {
426
+ return null;
205
427
  }
206
- return content;
207
- }
208
- catch {
209
- return null;
210
428
  }
211
429
  }
212
430
  return null;
@@ -232,14 +450,15 @@ export class Indexer {
232
450
  */
233
451
  getProjectTree() {
234
452
  const files = this.db.getAllFiles();
453
+ // Single query for all symbol counts instead of N+1
454
+ const symbolCounts = this.db.getSymbolCountsByFile();
235
455
  const tree = {};
236
456
  for (const file of files) {
237
- const symbols = this.db.getSymbolsForFile(file.path);
238
457
  tree[file.path] = {
239
458
  language: file.language,
240
459
  size: file.size,
241
460
  lineCount: file.line_count,
242
- symbolCount: symbols.length,
461
+ symbolCount: symbolCounts.get(file.path) || 0,
243
462
  };
244
463
  }
245
464
  return tree;
@@ -249,7 +468,7 @@ export class Indexer {
249
468
  return {
250
469
  totalFiles: this.db.getFileCount(),
251
470
  indexedFiles: this.db.getFileCount(),
252
- symbolCount: 0, // Would need a separate query
471
+ symbolCount: this.db.getSymbolCount(),
253
472
  indexTimeMs: 0,
254
473
  cacheHitRate: cacheStats.hitRate,
255
474
  };
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/indexer/indexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/indexer/indexer.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,15 @@ import { type CodeTreeConfig } from "../config.js";
2
2
  import type { Indexer } from "./indexer.js";
3
3
  export declare class FileWatcher {
4
4
  private watcher;
5
+ private gitWatcher;
5
6
  private config;
6
7
  private indexer;
7
8
  private debounceTimers;
9
+ private branchRescanTimer;
8
10
  private running;
9
11
  constructor(config: CodeTreeConfig, indexer: Indexer);
10
12
  start(): void;
13
+ private startGitWatcher;
11
14
  stop(): void;
12
15
  isRunning(): boolean;
13
16
  private handleChange;
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/indexer/watcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAyD;IAC/E,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAKpD,KAAK,IAAI,IAAI;IA4Bb,IAAI,IAAI,IAAI;IAYZ,SAAS,IAAI,OAAO;IAIpB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,YAAY;CAQrB"}
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/indexer/watcher.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAyD;IAC/E,OAAO,CAAC,iBAAiB,CAA8C;IACvE,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAKpD,KAAK,IAAI,IAAI;IA+Bb,OAAO,CAAC,eAAe;IAoBvB,IAAI,IAAI,IAAI;IAoBZ,SAAS,IAAI,OAAO;IAIpB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,YAAY;CAQrB"}
@@ -1,11 +1,14 @@
1
1
  import chokidar from "chokidar";
2
- import { resolve } from "node:path";
2
+ import { resolve, join } from "node:path";
3
+ import { existsSync } from "node:fs";
3
4
  import { normalizePath } from "../config.js";
4
5
  export class FileWatcher {
5
6
  watcher = null;
7
+ gitWatcher = null;
6
8
  config;
7
9
  indexer;
8
10
  debounceTimers = new Map();
11
+ branchRescanTimer = null;
9
12
  running = false;
10
13
  constructor(config, indexer) {
11
14
  this.config = config;
@@ -33,13 +36,42 @@ export class FileWatcher {
33
36
  this.watcher.on("change", (path) => this.handleChange(path));
34
37
  this.watcher.on("add", (path) => this.handleChange(path));
35
38
  this.watcher.on("unlink", (path) => this.handleDelete(path));
39
+ // Watch .git/HEAD for branch switches (git checkout, git switch)
40
+ this.startGitWatcher();
36
41
  this.running = true;
37
42
  }
43
+ startGitWatcher() {
44
+ const gitHead = join(this.config.projectRoot, ".git", "HEAD");
45
+ if (!existsSync(gitHead))
46
+ return;
47
+ this.gitWatcher = chokidar.watch(gitHead, {
48
+ persistent: true,
49
+ ignoreInitial: true,
50
+ });
51
+ this.gitWatcher.on("change", () => {
52
+ // Debounce: git operations may touch HEAD multiple times
53
+ if (this.branchRescanTimer)
54
+ clearTimeout(this.branchRescanTimer);
55
+ this.branchRescanTimer = setTimeout(() => {
56
+ this.branchRescanTimer = null;
57
+ console.error("[codetree] Branch switch detected — invalidating caches");
58
+ this.indexer.invalidateCaches();
59
+ }, 500);
60
+ });
61
+ }
38
62
  stop() {
39
63
  if (this.watcher) {
40
64
  this.watcher.close();
41
65
  this.watcher = null;
42
66
  }
67
+ if (this.gitWatcher) {
68
+ this.gitWatcher.close();
69
+ this.gitWatcher = null;
70
+ }
71
+ if (this.branchRescanTimer) {
72
+ clearTimeout(this.branchRescanTimer);
73
+ this.branchRescanTimer = null;
74
+ }
43
75
  for (const timer of this.debounceTimers.values()) {
44
76
  clearTimeout(timer);
45
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/indexer/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,QAA4B,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAuB,MAAM,cAAc,CAAC;AAGlE,MAAM,OAAO,WAAW;IACd,OAAO,GAAqB,IAAI,CAAC;IACjC,MAAM,CAAiB;IACvB,OAAO,CAAU;IACjB,cAAc,GAA+C,IAAI,GAAG,EAAE,CAAC;IACvE,OAAO,GAAG,KAAK,CAAC;IAExB,YAAY,MAAsB,EAAE,OAAgB;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAEzB,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YAC9C,iBAAiB;YACjB,oBAAoB;YACpB,YAAY;SACb,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACrD,OAAO;YACP,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU;YACxC,gBAAgB,EAAE;gBAChB,kBAAkB,EAAE,GAAG;gBACvB,YAAY,EAAE,GAAG;aAClB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAE7D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAEnC,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,QAAQ;YAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QAErC,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,GAAG,EACH,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CACjC,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/indexer/watcher.ts"],"names":[],"mappings":"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"}
@@ -16,13 +16,14 @@ export declare class IpcServer {
16
16
  constructor(config: CodeTreeConfig, indexer: Indexer, db: Database);
17
17
  start(): Promise<number>;
18
18
  /**
19
- * Probe a port to see if a codetree IPC server is running on it.
20
- * Returns true if the server responds with a valid /status payload.
19
+ * Probe a port to see if a codetree IPC server for THIS project is running on it.
20
+ * Returns true only if the server responds with a valid /status payload AND the
21
+ * projectRoot matches ours (prevents cross-project port collisions).
21
22
  */
22
23
  private probeCodetreeServer;
23
24
  /**
24
- * If a non-codetree process is holding our target port, kill it.
25
- * Self-healing: zombie servers from prior crashes get cleaned up on startup.
25
+ * If a stale codetree process is holding our target port, kill it.
26
+ * Only kills processes that are confirmed stale codetree servers (not arbitrary processes).
26
27
  */
27
28
  private freeZombiePort;
28
29
  getPort(): number;
@@ -33,6 +34,10 @@ export declare class IpcServer {
33
34
  isOwner(): boolean;
34
35
  stop(): void;
35
36
  private writePortFile;
37
+ /**
38
+ * Read the full request body as a string (for POST requests with JSON body).
39
+ */
40
+ private readBody;
36
41
  private handleRequest;
37
42
  /**
38
43
  * Check if a file Read can be served from cache.
@@ -53,6 +58,7 @@ export declare class IpcServer {
53
58
  private handleSessionLogRead;
54
59
  private handleSessionLogSearch;
55
60
  private handleSessionLogModify;
61
+ private handleSessionLogGrep;
56
62
  private handleSessionContext;
57
63
  private handleAddInsight;
58
64
  private handleCompactionSave;
@@ -1 +1 @@
1
- {"version":3,"file":"ipc.d.ts","sourceRoot":"","sources":["../../src/server/ipc.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAclE;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,WAAW,CAAc;IAGjC,OAAO,CAAC,KAAK,CAKX;gBAEU,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ;IAQ5D,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IA4C9B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA8B3B;;;OAGG;YACW,cAAc;IAyC5B,OAAO,IAAI,MAAM;IAIjB;;;OAGG;IACH,OAAO,IAAI,OAAO;IAIlB,IAAI,IAAI,IAAI;IAUZ,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IA4DrB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAgCnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,uBAAuB;IA2C/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,YAAY;CAWrB"}
1
+ {"version":3,"file":"ipc.d.ts","sourceRoot":"","sources":["../../src/server/ipc.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAclE;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,WAAW,CAAc;IAGjC,OAAO,CAAC,KAAK,CAKX;gBAEU,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ;IAQ5D,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAwD9B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA0C3B;;;OAGG;YACW,cAAc;IAqC5B,OAAO,IAAI,MAAM;IAIjB;;;OAGG;IACH,OAAO,IAAI,OAAO;IAIlB,IAAI,IAAI,IAAI;IAUZ,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,QAAQ;YAiBF,aAAa;IA8E3B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAgDnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,uBAAuB;IA2C/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,YAAY;CAWrB"}