codetree-claude 1.5.0 → 1.5.2

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 (123) hide show
  1. package/README.md +137 -121
  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 +11 -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 -77
  23. package/dist/hook/pre-tool-use.js +23 -90
  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/indexer.d.ts +15 -0
  58. package/dist/indexer/indexer.d.ts.map +1 -1
  59. package/dist/indexer/indexer.js +168 -4
  60. package/dist/indexer/indexer.js.map +1 -1
  61. package/dist/server/ipc.d.ts +10 -4
  62. package/dist/server/ipc.d.ts.map +1 -1
  63. package/dist/server/ipc.js +190 -109
  64. package/dist/server/ipc.js.map +1 -1
  65. package/dist/server/mcp-server.js +36 -27
  66. package/dist/server/mcp-server.js.map +1 -1
  67. package/dist/server/tools/codetree-find-refs.d.ts.map +1 -1
  68. package/dist/server/tools/codetree-find-refs.js +23 -14
  69. package/dist/server/tools/codetree-find-refs.js.map +1 -1
  70. package/dist/server/tools/codetree-memory.d.ts +3 -6
  71. package/dist/server/tools/codetree-memory.d.ts.map +1 -1
  72. package/dist/server/tools/codetree-memory.js +9 -10
  73. package/dist/server/tools/codetree-memory.js.map +1 -1
  74. package/dist/server/tools/codetree-outline.d.ts +57 -0
  75. package/dist/server/tools/codetree-outline.d.ts.map +1 -0
  76. package/dist/server/tools/codetree-outline.js +76 -0
  77. package/dist/server/tools/codetree-outline.js.map +1 -0
  78. package/dist/server/tools/codetree-probe.d.ts +53 -0
  79. package/dist/server/tools/codetree-probe.d.ts.map +1 -0
  80. package/dist/server/tools/codetree-probe.js +81 -0
  81. package/dist/server/tools/codetree-probe.js.map +1 -0
  82. package/dist/server/tools/codetree-read.d.ts +52 -3
  83. package/dist/server/tools/codetree-read.d.ts.map +1 -1
  84. package/dist/server/tools/codetree-read.js +237 -55
  85. package/dist/server/tools/codetree-read.js.map +1 -1
  86. package/dist/server/tools/codetree-search.d.ts +13 -1
  87. package/dist/server/tools/codetree-search.d.ts.map +1 -1
  88. package/dist/server/tools/codetree-search.js +80 -52
  89. package/dist/server/tools/codetree-search.js.map +1 -1
  90. package/dist/server/tools/codetree-structure.d.ts +25 -1
  91. package/dist/server/tools/codetree-structure.d.ts.map +1 -1
  92. package/dist/server/tools/codetree-structure.js +92 -42
  93. package/dist/server/tools/codetree-structure.js.map +1 -1
  94. package/dist/server/tools/codetree-summary.d.ts +2 -0
  95. package/dist/server/tools/codetree-summary.d.ts.map +1 -1
  96. package/dist/server/tools/codetree-summary.js +5 -0
  97. package/dist/server/tools/codetree-summary.js.map +1 -1
  98. package/dist/setup/install.d.ts +45 -1
  99. package/dist/setup/install.d.ts.map +1 -1
  100. package/dist/setup/install.js +163 -58
  101. package/dist/setup/install.js.map +1 -1
  102. package/dist/setup/template-load.d.ts +9 -0
  103. package/dist/setup/template-load.d.ts.map +1 -0
  104. package/dist/setup/template-load.js +39 -0
  105. package/dist/setup/template-load.js.map +1 -0
  106. package/dist/storage/database.d.ts +49 -0
  107. package/dist/storage/database.d.ts.map +1 -1
  108. package/dist/storage/database.js +383 -43
  109. package/dist/storage/database.js.map +1 -1
  110. package/dist/storage/disk-manager.d.ts.map +1 -1
  111. package/dist/storage/disk-manager.js +1 -5
  112. package/dist/storage/disk-manager.js.map +1 -1
  113. package/dist/utils.d.ts +23 -0
  114. package/dist/utils.d.ts.map +1 -0
  115. package/dist/utils.js +102 -0
  116. package/dist/utils.js.map +1 -0
  117. package/package.json +46 -10
  118. package/templates/README.md +15 -0
  119. package/templates/agents-codetree.snippet.md +24 -0
  120. package/templates/claude-md-codetree.snippet.md +22 -0
  121. package/templates/claude-rules-codetree.md +23 -0
  122. package/templates/cursor-codetree.mdc +31 -0
  123. package/templates/gemini-codetree.snippet.md +6 -0
@@ -1 +1 @@
1
- {"version":3,"file":"post-compact.js","sourceRoot":"","sources":["../../src/hook/post-compact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-compact.js","sourceRoot":"","sources":["../../src/hook/post-compact.ts"],"names":[],"mappings":"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"}
@@ -7,9 +7,8 @@
7
7
  *
8
8
  * Exit 0 always — we never block, just observe.
9
9
  */
10
- import { readFileSync, existsSync } from "node:fs";
11
- import { join, dirname } from "node:path";
12
10
  import { queryIpc } from "./hook-client.js";
11
+ import { findIpcPort } from "../utils.js";
13
12
  async function main() {
14
13
  let rawInput = "";
15
14
  for await (const chunk of process.stdin) {
@@ -39,11 +38,17 @@ async function main() {
39
38
  }
40
39
  break;
41
40
  }
42
- case "Grep":
43
- case "codetree_search": {
44
- const pattern = (tool_input.pattern || tool_input.query) || "";
41
+ case "Grep": {
42
+ const pattern = (tool_input.pattern) || "";
45
43
  if (pattern) {
46
- await queryIpc(port, `/session/log-search?session=${encodeURIComponent(session_id)}&symbol=${encodeURIComponent(pattern)}`, 50);
44
+ await queryIpc(port, `/session/log-grep?session=${encodeURIComponent(session_id)}&pattern=${encodeURIComponent(pattern)}`, 50);
45
+ }
46
+ break;
47
+ }
48
+ case "codetree_search": {
49
+ const query = (tool_input.query) || "";
50
+ if (query) {
51
+ await queryIpc(port, `/session/log-search?session=${encodeURIComponent(session_id)}&symbol=${encodeURIComponent(query)}`, 50);
47
52
  }
48
53
  break;
49
54
  }
@@ -62,27 +67,6 @@ async function main() {
62
67
  }
63
68
  process.exit(0);
64
69
  }
65
- function findIpcPort(startDir) {
66
- let dir = startDir;
67
- for (let i = 0; i < 10; i++) {
68
- const portFile = join(dir, ".codetree", "ipc.port");
69
- if (existsSync(portFile)) {
70
- try {
71
- const port = parseInt(readFileSync(portFile, "utf-8").trim(), 10);
72
- if (port > 0 && port <= 65535)
73
- return port;
74
- }
75
- catch {
76
- return null;
77
- }
78
- }
79
- const parent = dirname(dir);
80
- if (parent === dir)
81
- break;
82
- dir = parent;
83
- }
84
- return null;
85
- }
86
70
  main().catch(() => {
87
71
  process.exit(0);
88
72
  });
@@ -1 +1 @@
1
- {"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../src/hook/post-tool-use.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../src/hook/post-tool-use.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAW1C,KAAK,UAAU,IAAI;IACjB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,QAAQ,IAAI,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,KAAgB,CAAC;IACrB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAEzD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yBAAyB;IACzB,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC;QACZ,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,QAAQ,GAAI,UAAU,CAAC,SAAoB,IAAI,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,UAAU,CAAC,MAA4B,CAAC;YACvD,MAAM,KAAK,GAAG,UAAU,CAAC,KAA2B,CAAC;YACrD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,CAAC,IAAI,EAAE,6BAA6B,kBAAkB,CAAC,UAAU,CAAC,SAAS,kBAAkB,CAAC,QAAQ,CAAC,SAAS,SAAS,UAAU,MAAM,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/M,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAW,IAAI,EAAE,CAAC;YACrD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,QAAQ,CAAC,IAAI,EAAE,6BAA6B,kBAAkB,CAAC,UAAU,CAAC,YAAY,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjI,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,KAAK,CAAW,IAAI,EAAE,CAAC;YACjD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,QAAQ,CAAC,IAAI,EAAE,+BAA+B,kBAAkB,CAAC,UAAU,CAAC,WAAW,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAChI,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,QAAQ,GAAI,UAAU,CAAC,SAAoB,IAAI,EAAE,CAAC;YACxD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,CAAC,IAAI,EAAE,+BAA+B,kBAAkB,CAAC,UAAU,CAAC,SAAS,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjI,CAAC;YACD,MAAM;QACR,CAAC;QAED,4FAA4F;QAC5F,KAAK,eAAe,CAAC;QACrB,KAAK,gBAAgB;YACnB,MAAM;IACV,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -15,8 +15,8 @@
15
15
  * Exit 0 always — never block compaction.
16
16
  */
17
17
  import { readFileSync, existsSync } from "node:fs";
18
- import { join, dirname } from "node:path";
19
18
  import { queryIpc } from "./hook-client.js";
19
+ import { findIpcPort } from "../utils.js";
20
20
  async function main() {
21
21
  let rawInput = "";
22
22
  for await (const chunk of process.stdin) {
@@ -165,26 +165,5 @@ function parseTranscript(transcript) {
165
165
  decisions: [...new Set(decisions)].slice(0, 10),
166
166
  };
167
167
  }
168
- function findIpcPort(startDir) {
169
- let dir = startDir;
170
- for (let i = 0; i < 10; i++) {
171
- const portFile = join(dir, ".codetree", "ipc.port");
172
- if (existsSync(portFile)) {
173
- try {
174
- const port = parseInt(readFileSync(portFile, "utf-8").trim(), 10);
175
- if (port > 0 && port <= 65535)
176
- return port;
177
- }
178
- catch {
179
- return null;
180
- }
181
- }
182
- const parent = dirname(dir);
183
- if (parent === dir)
184
- break;
185
- dir = parent;
186
- }
187
- return null;
188
- }
189
168
  main().catch(() => { process.exit(0); });
190
169
  //# sourceMappingURL=pre-compact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pre-compact.js","sourceRoot":"","sources":["../../src/hook/pre-compact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pre-compact.js","sourceRoot":"","sources":["../../src/hook/pre-compact.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  #!/usr/bin/env node
3
3
 
4
- // dist/hook/pre-tool-use.js
5
- import { readFileSync, existsSync } from "node:fs";
6
- import { join, dirname } from "node:path";
7
-
8
4
  // dist/hook/hook-client.js
9
5
  import { request } from "node:http";
10
6
  function queryIpc(port, path, timeoutMs = 30) {
11
- return new Promise((resolve) => {
7
+ return new Promise((resolve2) => {
12
8
  const timer = setTimeout(() => {
13
- resolve(null);
9
+ resolve2(null);
14
10
  }, timeoutMs);
15
11
  try {
16
12
  const req = request({
@@ -27,29 +23,53 @@ function queryIpc(port, path, timeoutMs = 30) {
27
23
  res.on("end", () => {
28
24
  clearTimeout(timer);
29
25
  try {
30
- resolve(JSON.parse(data));
26
+ resolve2(JSON.parse(data));
31
27
  } catch {
32
- resolve(null);
28
+ resolve2(null);
33
29
  }
34
30
  });
35
31
  });
36
32
  req.on("error", () => {
37
33
  clearTimeout(timer);
38
- resolve(null);
34
+ resolve2(null);
39
35
  });
40
36
  req.on("timeout", () => {
41
37
  req.destroy();
42
38
  clearTimeout(timer);
43
- resolve(null);
39
+ resolve2(null);
44
40
  });
45
41
  req.end();
46
42
  } catch {
47
43
  clearTimeout(timer);
48
- resolve(null);
44
+ resolve2(null);
49
45
  }
50
46
  });
51
47
  }
52
48
 
49
+ // dist/utils.js
50
+ import { existsSync, readFileSync, readdirSync, realpathSync } from "node:fs";
51
+ import { join, resolve, dirname } from "node:path";
52
+ function findIpcPort(startDir) {
53
+ let dir = startDir;
54
+ for (let i = 0; i < 10; i++) {
55
+ const portFile = join(dir, ".codetree", "ipc.port");
56
+ if (existsSync(portFile)) {
57
+ try {
58
+ const port = parseInt(readFileSync(portFile, "utf-8").trim(), 10);
59
+ if (port > 0 && port <= 65535)
60
+ return port;
61
+ } catch {
62
+ return null;
63
+ }
64
+ }
65
+ const parent = dirname(dir);
66
+ if (parent === dir)
67
+ break;
68
+ dir = parent;
69
+ }
70
+ return null;
71
+ }
72
+
53
73
  // dist/hook/pre-tool-use.js
54
74
  async function main() {
55
75
  let rawInput = "";
@@ -62,14 +82,13 @@ async function main() {
62
82
  } catch {
63
83
  process.exit(0);
64
84
  }
65
- const { tool_name, tool_input, cwd } = input;
85
+ const { tool_name, tool_input, cwd, session_id } = input;
66
86
  const port = findIpcPort(cwd);
67
- if (!port) {
87
+ if (!port)
68
88
  process.exit(0);
69
- }
70
89
  switch (tool_name) {
71
90
  case "Read":
72
- await handleRead(port, tool_input);
91
+ await handleRead(port, tool_input, session_id);
73
92
  break;
74
93
  case "Grep":
75
94
  await handleGrep(port, tool_input);
@@ -77,106 +96,59 @@ async function main() {
77
96
  case "Glob":
78
97
  await handleGlob(port, tool_input);
79
98
  break;
80
- case "Edit":
81
- await handleEdit(port, tool_input);
82
- break;
83
- case "Write":
84
- await handleWrite(port, tool_input);
85
- break;
86
99
  default:
87
100
  process.exit(0);
88
101
  }
89
102
  }
90
- async function handleRead(port, input) {
103
+ async function handleRead(port, input, sessionId) {
91
104
  const filePath = input.file_path;
92
- if (!filePath) {
105
+ if (!filePath)
93
106
  process.exit(0);
107
+ const params = new URLSearchParams();
108
+ params.set("path", filePath);
109
+ if (sessionId)
110
+ params.set("session", sessionId);
111
+ const result = await queryIpc(port, `/check?${params.toString()}`);
112
+ if (result?.unchanged) {
113
+ process.stderr.write(`Unchanged since your last read this session. Skip re-reading "${result.path}" (hash ${String(result.hash).slice(0, 8)}).`);
114
+ process.exit(2);
94
115
  }
95
- const result = await queryIpc(port, `/check?path=${encodeURIComponent(filePath)}`);
96
116
  if (result?.cached) {
97
117
  const relPath = result.path;
98
118
  const lineCount = result.lineCount;
99
119
  const size = result.size;
100
- process.stderr.write(`File "${relPath}" is cached in CodeTree (${lineCount} lines, ${formatSize(size)}). Call the codetree_read tool with file_path="${relPath}" to read it. This saves tokens by using the cached version.`);
120
+ process.stderr.write(`Cached. Use codetree_read file_path="${relPath}" (${lineCount}L, ${formatSize(size)}). Pass session_id+expected_hash to skip if unchanged.`);
101
121
  process.exit(2);
102
122
  }
103
123
  process.exit(0);
104
124
  }
105
- async function handleEdit(port, input) {
106
- const filePath = input.file_path;
107
- if (!filePath) {
108
- process.exit(0);
109
- }
110
- const result = await queryIpc(port, `/check?path=${encodeURIComponent(filePath)}`);
111
- if (!result?.cached) {
112
- process.exit(0);
113
- }
114
- process.stderr.write(`Use the codetree_edit tool instead of Edit. It works without requiring a prior Read call. Call codetree_edit with file_path="${filePath}", old_string, and new_string.`);
115
- process.exit(2);
116
- }
117
- async function handleWrite(port, input) {
118
- const filePath = input.file_path;
119
- if (!filePath) {
120
- process.exit(0);
121
- }
122
- const result = await queryIpc(port, `/check?path=${encodeURIComponent(filePath)}`);
123
- if (!result?.cached) {
124
- process.exit(0);
125
- }
126
- process.stderr.write(`Use the codetree_write tool instead of Write. It works without requiring a prior Read call. Call codetree_write with file_path="${filePath}" and content.`);
127
- process.exit(2);
128
- }
129
125
  async function handleGrep(port, input) {
130
126
  const pattern = input.pattern;
131
127
  const searchPath = input.path;
132
- if (!pattern) {
128
+ if (!pattern)
133
129
  process.exit(0);
134
- }
135
130
  const params = new URLSearchParams();
136
131
  params.set("pattern", pattern);
137
132
  if (searchPath)
138
133
  params.set("path", searchPath);
139
134
  const result = await queryIpc(port, `/check-search?${params.toString()}`);
140
135
  if (result?.cached) {
141
- const hint = result.hint;
142
- process.stderr.write(`${hint} Call the codetree_search tool with query="${pattern}" for indexed results. Set content_search=true if you need line-level matches.`);
136
+ process.stderr.write(`Indexed. Use codetree_search query="${pattern}" (or codetree_probe for cheap presence check).`);
143
137
  process.exit(2);
144
138
  }
145
139
  process.exit(0);
146
140
  }
147
141
  async function handleGlob(port, input) {
148
142
  const pattern = input.pattern;
149
- if (!pattern) {
143
+ if (!pattern)
150
144
  process.exit(0);
151
- }
152
145
  const result = await queryIpc(port, `/check-glob?pattern=${encodeURIComponent(pattern)}`);
153
146
  if (result?.cached) {
154
- const hint = result.hint;
155
- process.stderr.write(`${hint} Call the codetree_structure tool to browse the project tree. Use the pattern parameter to filter files.`);
147
+ process.stderr.write(`Indexed. Use codetree_structure pattern="${pattern}" (format='text' for compact output).`);
156
148
  process.exit(2);
157
149
  }
158
150
  process.exit(0);
159
151
  }
160
- function findIpcPort(startDir) {
161
- let dir = startDir;
162
- for (let i = 0; i < 10; i++) {
163
- const portFile = join(dir, ".codetree", "ipc.port");
164
- if (existsSync(portFile)) {
165
- try {
166
- const port = parseInt(readFileSync(portFile, "utf-8").trim(), 10);
167
- if (port > 0 && port <= 65535)
168
- return port;
169
- } catch {
170
- return null;
171
- }
172
- }
173
- const parent = dirname(dir);
174
- if (parent === dir)
175
- break;
176
- dir = parent;
177
- }
178
- return null;
179
- }
180
152
  function formatSize(bytes) {
181
153
  if (bytes < 1024)
182
154
  return `${bytes}B`;
@@ -10,9 +10,8 @@
10
10
  *
11
11
  * CRITICAL: This must complete in <50ms. Any failure = exit 0 (fall through).
12
12
  */
13
- import { readFileSync, existsSync } from "node:fs";
14
- import { join, dirname } from "node:path";
15
13
  import { queryIpc } from "./hook-client.js";
14
+ import { findIpcPort } from "../utils.js";
16
15
  async function main() {
17
16
  // Read stdin (hook input)
18
17
  let rawInput = "";
@@ -26,16 +25,13 @@ async function main() {
26
25
  catch {
27
26
  process.exit(0); // Can't parse → allow
28
27
  }
29
- const { tool_name, tool_input, cwd } = input;
30
- // Find the IPC port file
28
+ const { tool_name, tool_input, cwd, session_id } = input;
31
29
  const port = findIpcPort(cwd);
32
- if (!port) {
33
- process.exit(0); // No server running → allow
34
- }
35
- // Route based on tool
30
+ if (!port)
31
+ process.exit(0);
36
32
  switch (tool_name) {
37
33
  case "Read":
38
- await handleRead(port, tool_input);
34
+ await handleRead(port, tool_input, session_id);
39
35
  break;
40
36
  case "Grep":
41
37
  await handleGrep(port, tool_input);
@@ -43,121 +39,58 @@ async function main() {
43
39
  case "Glob":
44
40
  await handleGlob(port, tool_input);
45
41
  break;
46
- case "Edit":
47
- await handleEdit(port, tool_input);
48
- break;
49
- case "Write":
50
- await handleWrite(port, tool_input);
51
- break;
52
42
  default:
53
43
  process.exit(0); // Unknown tool → allow
54
44
  }
55
45
  }
56
- async function handleRead(port, input) {
46
+ async function handleRead(port, input, sessionId) {
57
47
  const filePath = input.file_path;
58
- if (!filePath) {
48
+ if (!filePath)
59
49
  process.exit(0);
50
+ const params = new URLSearchParams();
51
+ params.set("path", filePath);
52
+ if (sessionId)
53
+ params.set("session", sessionId);
54
+ const result = await queryIpc(port, `/check?${params.toString()}`);
55
+ if (result?.unchanged) {
56
+ process.stderr.write(`Unchanged since your last read this session. Skip re-reading "${result.path}" (hash ${String(result.hash).slice(0, 8)}).`);
57
+ process.exit(2);
60
58
  }
61
- const result = await queryIpc(port, `/check?path=${encodeURIComponent(filePath)}`);
62
59
  if (result?.cached) {
63
60
  const relPath = result.path;
64
61
  const lineCount = result.lineCount;
65
62
  const size = result.size;
66
- // Deny with redirect to codetree_read
67
- process.stderr.write(`File "${relPath}" is cached in CodeTree (${lineCount} lines, ${formatSize(size)}). ` +
68
- `Call the codetree_read tool with file_path="${relPath}" to read it. ` +
69
- `This saves tokens by using the cached version.`);
63
+ process.stderr.write(`Cached. Use codetree_read file_path="${relPath}" (${lineCount}L, ${formatSize(size)}). Pass session_id+expected_hash to skip if unchanged.`);
70
64
  process.exit(2);
71
65
  }
72
- process.exit(0); // Cache miss → allow native Read
73
- }
74
- async function handleEdit(port, input) {
75
- const filePath = input.file_path;
76
- if (!filePath) {
77
- process.exit(0);
78
- }
79
- // Only redirect if file is actually cached — if codetree_edit fails, user can retry with native Edit
80
- const result = await queryIpc(port, `/check?path=${encodeURIComponent(filePath)}`);
81
- if (!result?.cached) {
82
- process.exit(0); // Not cached → allow native Edit
83
- }
84
- process.stderr.write(`Use the codetree_edit tool instead of Edit. ` +
85
- `It works without requiring a prior Read call. ` +
86
- `Call codetree_edit with file_path="${filePath}", old_string, and new_string.`);
87
- process.exit(2);
88
- }
89
- async function handleWrite(port, input) {
90
- const filePath = input.file_path;
91
- if (!filePath) {
92
- process.exit(0);
93
- }
94
- // Only redirect if file is actually cached
95
- const result = await queryIpc(port, `/check?path=${encodeURIComponent(filePath)}`);
96
- if (!result?.cached) {
97
- process.exit(0); // Not cached → allow native Write
98
- }
99
- process.stderr.write(`Use the codetree_write tool instead of Write. ` +
100
- `It works without requiring a prior Read call. ` +
101
- `Call codetree_write with file_path="${filePath}" and content.`);
102
- process.exit(2);
66
+ process.exit(0);
103
67
  }
104
68
  async function handleGrep(port, input) {
105
69
  const pattern = input.pattern;
106
70
  const searchPath = input.path;
107
- if (!pattern) {
71
+ if (!pattern)
108
72
  process.exit(0);
109
- }
110
73
  const params = new URLSearchParams();
111
74
  params.set("pattern", pattern);
112
75
  if (searchPath)
113
76
  params.set("path", searchPath);
114
77
  const result = await queryIpc(port, `/check-search?${params.toString()}`);
115
78
  if (result?.cached) {
116
- const hint = result.hint;
117
- process.stderr.write(`${hint} Call the codetree_search tool with query="${pattern}" for indexed results. ` +
118
- `Set content_search=true if you need line-level matches.`);
79
+ process.stderr.write(`Indexed. Use codetree_search query="${pattern}" (or codetree_probe for cheap presence check).`);
119
80
  process.exit(2);
120
81
  }
121
- process.exit(0); // Can't answer from index → allow native Grep
82
+ process.exit(0);
122
83
  }
123
84
  async function handleGlob(port, input) {
124
85
  const pattern = input.pattern;
125
- if (!pattern) {
86
+ if (!pattern)
126
87
  process.exit(0);
127
- }
128
88
  const result = await queryIpc(port, `/check-glob?pattern=${encodeURIComponent(pattern)}`);
129
89
  if (result?.cached) {
130
- const hint = result.hint;
131
- process.stderr.write(`${hint} Call the codetree_structure tool to browse the project tree. ` +
132
- `Use the pattern parameter to filter files.`);
90
+ process.stderr.write(`Indexed. Use codetree_structure pattern="${pattern}" (format='text' for compact output).`);
133
91
  process.exit(2);
134
92
  }
135
- process.exit(0); // Index not ready → allow native Glob
136
- }
137
- /**
138
- * Find the IPC port by looking for .codetree/ipc.port file.
139
- * Walks up from cwd to find the project root.
140
- */
141
- function findIpcPort(startDir) {
142
- let dir = startDir;
143
- for (let i = 0; i < 10; i++) {
144
- const portFile = join(dir, ".codetree", "ipc.port");
145
- if (existsSync(portFile)) {
146
- try {
147
- const port = parseInt(readFileSync(portFile, "utf-8").trim(), 10);
148
- if (port > 0 && port <= 65535)
149
- return port;
150
- }
151
- catch {
152
- return null;
153
- }
154
- }
155
- const parent = dirname(dir);
156
- if (parent === dir)
157
- break;
158
- dir = parent;
159
- }
160
- return null;
93
+ process.exit(0);
161
94
  }
162
95
  function formatSize(bytes) {
163
96
  if (bytes < 1024)
@@ -1 +1 @@
1
- {"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../src/hook/pre-tool-use.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../src/hook/pre-tool-use.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,9 @@
11
11
  * This goes to stdout (exit 0) — Claude Code adds stdout to the session context.
12
12
  */
13
13
  import { readFileSync, existsSync } from "node:fs";
14
- import { join, dirname } from "node:path";
14
+ import { join } from "node:path";
15
15
  import { queryIpc } from "./hook-client.js";
16
+ import { findIpcPort } from "../utils.js";
16
17
  async function main() {
17
18
  let rawInput = "";
18
19
  for await (const chunk of process.stdin) {
@@ -94,30 +95,25 @@ async function main() {
94
95
  lines.push("");
95
96
  }
96
97
  lines.push("=== End CodeTree Session Memory ===");
97
- // Output to stdoutClaude Code injects this into context
98
- process.stdout.write(lines.join("\n"));
99
- process.exit(0);
100
- }
101
- function findIpcPort(startDir) {
102
- let dir = startDir;
103
- for (let i = 0; i < 10; i++) {
104
- const portFile = join(dir, ".codetree", "ipc.port");
105
- if (existsSync(portFile)) {
106
- try {
107
- const port = parseInt(readFileSync(portFile, "utf-8").trim(), 10);
108
- if (port > 0 && port <= 65535)
109
- return port;
110
- }
111
- catch {
112
- return null;
113
- }
98
+ // Cap by byteskeep session-start cheap on large repos.
99
+ // Read .codetreerc.json if present for sessionStart.maxBytes; default 2KB.
100
+ let maxBytes = 2048;
101
+ try {
102
+ const cfgPath = join(cwd, ".codetreerc.json");
103
+ if (existsSync(cfgPath)) {
104
+ const cfg = JSON.parse(readFileSync(cfgPath, "utf-8"));
105
+ const v = cfg?.tokenSave?.sessionStart?.maxBytes;
106
+ if (typeof v === "number" && v > 0)
107
+ maxBytes = v;
114
108
  }
115
- const parent = dirname(dir);
116
- if (parent === dir)
117
- break;
118
- dir = parent;
119
109
  }
120
- return null;
110
+ catch { /* ignore */ }
111
+ let out = lines.join("\n");
112
+ if (Buffer.byteLength(out, "utf-8") > maxBytes) {
113
+ out = out.slice(0, maxBytes) + "\n... [truncated to fit session-start budget]";
114
+ }
115
+ process.stdout.write(out);
116
+ process.exit(0);
121
117
  }
122
118
  function formatTimeAgo(timestamp) {
123
119
  const diff = Date.now() - timestamp;