codesift-mcp 0.15.5 → 0.17.0

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 (287) hide show
  1. package/dist/cli/auto-prune.d.ts +16 -0
  2. package/dist/cli/auto-prune.d.ts.map +1 -0
  3. package/dist/cli/auto-prune.js +87 -0
  4. package/dist/cli/auto-prune.js.map +1 -0
  5. package/dist/cli/commands-admin.d.ts.map +1 -1
  6. package/dist/cli/commands-admin.js +11 -0
  7. package/dist/cli/commands-admin.js.map +1 -1
  8. package/dist/cli/commands-daemon.d.ts.map +1 -1
  9. package/dist/cli/commands-daemon.js +9 -0
  10. package/dist/cli/commands-daemon.js.map +1 -1
  11. package/dist/cli/commands-index.d.ts.map +1 -1
  12. package/dist/cli/commands-index.js +8 -0
  13. package/dist/cli/commands-index.js.map +1 -1
  14. package/dist/cli/embed-child.js +5 -1
  15. package/dist/cli/embed-child.js.map +1 -1
  16. package/dist/cli/hooks/pre-tool-use.d.ts.map +1 -1
  17. package/dist/cli/hooks/pre-tool-use.js +5 -2
  18. package/dist/cli/hooks/pre-tool-use.js.map +1 -1
  19. package/dist/cli/hooks/shared.d.ts.map +1 -1
  20. package/dist/cli/hooks/shared.js +6 -2
  21. package/dist/cli/hooks/shared.js.map +1 -1
  22. package/dist/cli/orphan-guard.d.ts +22 -0
  23. package/dist/cli/orphan-guard.d.ts.map +1 -1
  24. package/dist/cli/orphan-guard.js +30 -0
  25. package/dist/cli/orphan-guard.js.map +1 -1
  26. package/dist/cli/service.d.ts +32 -0
  27. package/dist/cli/service.d.ts.map +1 -1
  28. package/dist/cli/service.js +67 -3
  29. package/dist/cli/service.js.map +1 -1
  30. package/dist/cli/setup/codex-project-auto.d.ts +27 -0
  31. package/dist/cli/setup/codex-project-auto.d.ts.map +1 -0
  32. package/dist/cli/setup/codex-project-auto.js +98 -0
  33. package/dist/cli/setup/codex-project-auto.js.map +1 -0
  34. package/dist/cli/setup/codex.d.ts.map +1 -1
  35. package/dist/cli/setup/codex.js +101 -6
  36. package/dist/cli/setup/codex.js.map +1 -1
  37. package/dist/cli/setup/cursor.d.ts.map +1 -1
  38. package/dist/cli/setup/cursor.js +9 -1
  39. package/dist/cli/setup/cursor.js.map +1 -1
  40. package/dist/cli/setup/gemini.d.ts.map +1 -1
  41. package/dist/cli/setup/gemini.js +21 -0
  42. package/dist/cli/setup/gemini.js.map +1 -1
  43. package/dist/cli/setup/mcp.d.ts +37 -1
  44. package/dist/cli/setup/mcp.d.ts.map +1 -1
  45. package/dist/cli/setup/mcp.js +57 -4
  46. package/dist/cli/setup/mcp.js.map +1 -1
  47. package/dist/cli/setup/types.d.ts +19 -1
  48. package/dist/cli/setup/types.d.ts.map +1 -1
  49. package/dist/config.d.ts.map +1 -1
  50. package/dist/config.js +30 -6
  51. package/dist/config.js.map +1 -1
  52. package/dist/formatters-core.d.ts +1 -0
  53. package/dist/formatters-core.d.ts.map +1 -1
  54. package/dist/formatters-core.js +8 -2
  55. package/dist/formatters-core.js.map +1 -1
  56. package/dist/formatters-shortening.d.ts.map +1 -1
  57. package/dist/formatters-shortening.js +8 -2
  58. package/dist/formatters-shortening.js.map +1 -1
  59. package/dist/lsp/lsp-servers.d.ts.map +1 -1
  60. package/dist/lsp/lsp-servers.js +4 -1
  61. package/dist/lsp/lsp-servers.js.map +1 -1
  62. package/dist/register-tool-groups/meta.d.ts.map +1 -1
  63. package/dist/register-tool-groups/meta.js +23 -0
  64. package/dist/register-tool-groups/meta.js.map +1 -1
  65. package/dist/register-tools/runtime.d.ts +1 -1
  66. package/dist/register-tools/runtime.d.ts.map +1 -1
  67. package/dist/register-tools/runtime.js +9 -2
  68. package/dist/register-tools/runtime.js.map +1 -1
  69. package/dist/register-tools.d.ts +3 -1
  70. package/dist/register-tools.d.ts.map +1 -1
  71. package/dist/register-tools.js +7 -2
  72. package/dist/register-tools.js.map +1 -1
  73. package/dist/search/bm25-store.d.ts +6 -0
  74. package/dist/search/bm25-store.d.ts.map +1 -0
  75. package/dist/search/bm25-store.js +164 -0
  76. package/dist/search/bm25-store.js.map +1 -0
  77. package/dist/search/bm25.d.ts +30 -0
  78. package/dist/search/bm25.d.ts.map +1 -1
  79. package/dist/search/bm25.js +159 -34
  80. package/dist/search/bm25.js.map +1 -1
  81. package/dist/search/embed-gate.d.ts +17 -0
  82. package/dist/search/embed-gate.d.ts.map +1 -0
  83. package/dist/search/embed-gate.js +64 -0
  84. package/dist/search/embed-gate.js.map +1 -0
  85. package/dist/search/semantic.d.ts.map +1 -1
  86. package/dist/search/semantic.js +5 -2
  87. package/dist/search/semantic.js.map +1 -1
  88. package/dist/server-helpers/health-vitals.d.ts +45 -0
  89. package/dist/server-helpers/health-vitals.d.ts.map +1 -0
  90. package/dist/server-helpers/health-vitals.js +77 -0
  91. package/dist/server-helpers/health-vitals.js.map +1 -0
  92. package/dist/server-helpers/request-context.d.ts +34 -4
  93. package/dist/server-helpers/request-context.d.ts.map +1 -1
  94. package/dist/server-helpers/request-context.js +4 -0
  95. package/dist/server-helpers/request-context.js.map +1 -1
  96. package/dist/server.d.ts +9 -0
  97. package/dist/server.d.ts.map +1 -1
  98. package/dist/server.js +128 -6
  99. package/dist/server.js.map +1 -1
  100. package/dist/storage/_shared.d.ts +1 -1
  101. package/dist/storage/_shared.d.ts.map +1 -1
  102. package/dist/storage/_shared.js +41 -3
  103. package/dist/storage/_shared.js.map +1 -1
  104. package/dist/storage/index-migration.d.ts.map +1 -1
  105. package/dist/storage/index-migration.js +6 -2
  106. package/dist/storage/index-migration.js.map +1 -1
  107. package/dist/storage/index-store.d.ts +29 -0
  108. package/dist/storage/index-store.d.ts.map +1 -1
  109. package/dist/storage/index-store.js +112 -0
  110. package/dist/storage/index-store.js.map +1 -1
  111. package/dist/storage/registry.d.ts.map +1 -1
  112. package/dist/storage/registry.js +13 -1
  113. package/dist/storage/registry.js.map +1 -1
  114. package/dist/storage/sqlite/accessors.d.ts +17 -0
  115. package/dist/storage/sqlite/accessors.d.ts.map +1 -1
  116. package/dist/storage/sqlite/accessors.js +20 -0
  117. package/dist/storage/sqlite/accessors.js.map +1 -1
  118. package/dist/storage/sqlite/connection.d.ts +20 -0
  119. package/dist/storage/sqlite/connection.d.ts.map +1 -1
  120. package/dist/storage/sqlite/connection.js +61 -0
  121. package/dist/storage/sqlite/connection.js.map +1 -1
  122. package/dist/storage/sqlite/index-io.d.ts +5 -0
  123. package/dist/storage/sqlite/index-io.d.ts.map +1 -1
  124. package/dist/storage/sqlite/index-io.js +98 -9
  125. package/dist/storage/sqlite/index-io.js.map +1 -1
  126. package/dist/storage/sqlite/meta.d.ts +7 -0
  127. package/dist/storage/sqlite/meta.d.ts.map +1 -1
  128. package/dist/storage/sqlite/meta.js.map +1 -1
  129. package/dist/storage/sqlite/queries.d.ts +66 -0
  130. package/dist/storage/sqlite/queries.d.ts.map +1 -0
  131. package/dist/storage/sqlite/queries.js +196 -0
  132. package/dist/storage/sqlite/queries.js.map +1 -0
  133. package/dist/storage/sqlite/schema.d.ts +2 -2
  134. package/dist/storage/sqlite/schema.d.ts.map +1 -1
  135. package/dist/storage/sqlite/schema.js +36 -0
  136. package/dist/storage/sqlite/schema.js.map +1 -1
  137. package/dist/storage/sqlite-index-store.d.ts +3 -1
  138. package/dist/storage/sqlite-index-store.d.ts.map +1 -1
  139. package/dist/storage/sqlite-index-store.js +4 -1
  140. package/dist/storage/sqlite-index-store.js.map +1 -1
  141. package/dist/storage/telemetry/uploader.js +1 -1
  142. package/dist/storage/telemetry/uploader.js.map +1 -1
  143. package/dist/tools/boundary-tools.js +2 -2
  144. package/dist/tools/boundary-tools.js.map +1 -1
  145. package/dist/tools/community-tools.d.ts +7 -0
  146. package/dist/tools/community-tools.d.ts.map +1 -1
  147. package/dist/tools/community-tools.js +31 -14
  148. package/dist/tools/community-tools.js.map +1 -1
  149. package/dist/tools/complexity-tools.d.ts.map +1 -1
  150. package/dist/tools/complexity-tools.js +65 -45
  151. package/dist/tools/complexity-tools.js.map +1 -1
  152. package/dist/tools/conversation-index-tools.js +2 -2
  153. package/dist/tools/conversation-index-tools.js.map +1 -1
  154. package/dist/tools/conversation-search-tools.js +2 -2
  155. package/dist/tools/conversation-search-tools.js.map +1 -1
  156. package/dist/tools/coupling-tools.d.ts +2 -2
  157. package/dist/tools/coupling-tools.d.ts.map +1 -1
  158. package/dist/tools/coupling-tools.js +8 -13
  159. package/dist/tools/coupling-tools.js.map +1 -1
  160. package/dist/tools/diff-tools.d.ts.map +1 -1
  161. package/dist/tools/diff-tools.js +8 -14
  162. package/dist/tools/diff-tools.js.map +1 -1
  163. package/dist/tools/git-exec.d.ts +42 -0
  164. package/dist/tools/git-exec.d.ts.map +1 -0
  165. package/dist/tools/git-exec.js +53 -0
  166. package/dist/tools/git-exec.js.map +1 -0
  167. package/dist/tools/graph-tools.d.ts.map +1 -1
  168. package/dist/tools/graph-tools.js +5 -2
  169. package/dist/tools/graph-tools.js.map +1 -1
  170. package/dist/tools/hotspot-tools.d.ts +25 -0
  171. package/dist/tools/hotspot-tools.d.ts.map +1 -1
  172. package/dist/tools/hotspot-tools.js +24 -3
  173. package/dist/tools/hotspot-tools.js.map +1 -1
  174. package/dist/tools/impact-tools.d.ts.map +1 -1
  175. package/dist/tools/impact-tools.js +6 -9
  176. package/dist/tools/impact-tools.js.map +1 -1
  177. package/dist/tools/index-tools/file-indexer.d.ts +4 -0
  178. package/dist/tools/index-tools/file-indexer.d.ts.map +1 -1
  179. package/dist/tools/index-tools/file-indexer.js +155 -16
  180. package/dist/tools/index-tools/file-indexer.js.map +1 -1
  181. package/dist/tools/index-tools/folder-indexer.d.ts.map +1 -1
  182. package/dist/tools/index-tools/folder-indexer.js +5 -5
  183. package/dist/tools/index-tools/folder-indexer.js.map +1 -1
  184. package/dist/tools/index-tools/load-gate.d.ts +15 -0
  185. package/dist/tools/index-tools/load-gate.d.ts.map +1 -0
  186. package/dist/tools/index-tools/load-gate.js +57 -0
  187. package/dist/tools/index-tools/load-gate.js.map +1 -0
  188. package/dist/tools/index-tools/overload-guard.d.ts +16 -0
  189. package/dist/tools/index-tools/overload-guard.d.ts.map +1 -0
  190. package/dist/tools/index-tools/overload-guard.js +68 -0
  191. package/dist/tools/index-tools/overload-guard.js.map +1 -0
  192. package/dist/tools/index-tools/registry.d.ts +25 -1
  193. package/dist/tools/index-tools/registry.d.ts.map +1 -1
  194. package/dist/tools/index-tools/registry.js +149 -8
  195. package/dist/tools/index-tools/registry.js.map +1 -1
  196. package/dist/tools/index-tools/state.d.ts +20 -0
  197. package/dist/tools/index-tools/state.d.ts.map +1 -1
  198. package/dist/tools/index-tools/state.js +86 -0
  199. package/dist/tools/index-tools/state.js.map +1 -1
  200. package/dist/tools/index-tools/watcher.d.ts.map +1 -1
  201. package/dist/tools/index-tools/watcher.js +13 -5
  202. package/dist/tools/index-tools/watcher.js.map +1 -1
  203. package/dist/tools/index-tools/worktree-seed.d.ts +39 -1
  204. package/dist/tools/index-tools/worktree-seed.d.ts.map +1 -1
  205. package/dist/tools/index-tools/worktree-seed.js +154 -21
  206. package/dist/tools/index-tools/worktree-seed.js.map +1 -1
  207. package/dist/tools/index-tools.d.ts +2 -2
  208. package/dist/tools/index-tools.d.ts.map +1 -1
  209. package/dist/tools/index-tools.js +2 -2
  210. package/dist/tools/index-tools.js.map +1 -1
  211. package/dist/tools/journal-generator-helpers.d.ts.map +1 -1
  212. package/dist/tools/journal-generator-helpers.js +3 -1
  213. package/dist/tools/journal-generator-helpers.js.map +1 -1
  214. package/dist/tools/patterns/execution.d.ts.map +1 -1
  215. package/dist/tools/patterns/execution.js +28 -10
  216. package/dist/tools/patterns/execution.js.map +1 -1
  217. package/dist/tools/review-diff/checks/coupling.js +1 -1
  218. package/dist/tools/review-diff/checks/coupling.js.map +1 -1
  219. package/dist/tools/secret-detectors.d.ts +10 -1
  220. package/dist/tools/secret-detectors.d.ts.map +1 -1
  221. package/dist/tools/secret-detectors.js +16 -2
  222. package/dist/tools/secret-detectors.js.map +1 -1
  223. package/dist/tools/secret-file-scanner.d.ts +3 -1
  224. package/dist/tools/secret-file-scanner.d.ts.map +1 -1
  225. package/dist/tools/secret-file-scanner.js +4 -2
  226. package/dist/tools/secret-file-scanner.js.map +1 -1
  227. package/dist/tools/secret-tools.d.ts.map +1 -1
  228. package/dist/tools/secret-tools.js +6 -3
  229. package/dist/tools/secret-tools.js.map +1 -1
  230. package/dist/tools/status-tools.d.ts +20 -0
  231. package/dist/tools/status-tools.d.ts.map +1 -1
  232. package/dist/tools/status-tools.js +46 -0
  233. package/dist/tools/status-tools.js.map +1 -1
  234. package/dist/tools/symbol-analysis-tools.d.ts.map +1 -1
  235. package/dist/tools/symbol-analysis-tools.js +27 -2
  236. package/dist/tools/symbol-analysis-tools.js.map +1 -1
  237. package/dist/tools/symbol-reference-tools.js +4 -4
  238. package/dist/tools/symbol-reference-tools.js.map +1 -1
  239. package/dist/tools/symbol-tool-internals.d.ts +10 -0
  240. package/dist/tools/symbol-tool-internals.d.ts.map +1 -1
  241. package/dist/tools/symbol-tool-internals.js +16 -1
  242. package/dist/tools/symbol-tool-internals.js.map +1 -1
  243. package/dist/tools/test-impact-tools.js +1 -1
  244. package/dist/tools/test-impact-tools.js.map +1 -1
  245. package/dist/tools/wiki-overview-sources.d.ts.map +1 -1
  246. package/dist/tools/wiki-overview-sources.js +3 -0
  247. package/dist/tools/wiki-overview-sources.js.map +1 -1
  248. package/dist/utils/import-graph/collect.d.ts +2 -3
  249. package/dist/utils/import-graph/collect.d.ts.map +1 -1
  250. package/dist/utils/import-graph/collect.js +73 -8
  251. package/dist/utils/import-graph/collect.js.map +1 -1
  252. package/dist/utils/import-graph/edge-accumulator.d.ts.map +1 -1
  253. package/dist/utils/import-graph/edge-accumulator.js +5 -0
  254. package/dist/utils/import-graph/edge-accumulator.js.map +1 -1
  255. package/dist/utils/import-graph/edge-cache.d.ts +15 -0
  256. package/dist/utils/import-graph/edge-cache.d.ts.map +1 -0
  257. package/dist/utils/import-graph/edge-cache.js +98 -0
  258. package/dist/utils/import-graph/edge-cache.js.map +1 -0
  259. package/dist/utils/import-graph/language-imports.d.ts +2 -2
  260. package/dist/utils/import-graph/language-imports.d.ts.map +1 -1
  261. package/dist/utils/import-graph/language-imports.js.map +1 -1
  262. package/dist/utils/import-graph/path-map.d.ts +2 -2
  263. package/dist/utils/import-graph/path-map.d.ts.map +1 -1
  264. package/dist/utils/import-graph/path-map.js.map +1 -1
  265. package/dist/utils/import-graph/python-php-edge-collectors.d.ts +2 -3
  266. package/dist/utils/import-graph/python-php-edge-collectors.d.ts.map +1 -1
  267. package/dist/utils/import-graph/python-php-edge-collectors.js.map +1 -1
  268. package/dist/utils/import-graph/source-edge-collector.d.ts +2 -3
  269. package/dist/utils/import-graph/source-edge-collector.d.ts.map +1 -1
  270. package/dist/utils/import-graph/types.d.ts +36 -1
  271. package/dist/utils/import-graph/types.d.ts.map +1 -1
  272. package/dist/utils/import-graph/typescript-edge-collector.d.ts +2 -3
  273. package/dist/utils/import-graph/typescript-edge-collector.d.ts.map +1 -1
  274. package/dist/utils/import-graph/typescript-edge-collector.js +6 -2
  275. package/dist/utils/import-graph/typescript-edge-collector.js.map +1 -1
  276. package/dist/utils/import-graph/workspace-alias.d.ts +2 -2
  277. package/dist/utils/import-graph/workspace-alias.d.ts.map +1 -1
  278. package/dist/utils/import-graph/workspace-alias.js.map +1 -1
  279. package/dist/utils/language-detect.d.ts +2 -4
  280. package/dist/utils/language-detect.d.ts.map +1 -1
  281. package/dist/utils/language-detect.js +26 -4
  282. package/dist/utils/language-detect.js.map +1 -1
  283. package/dist/utils/ts-imports.d.ts +16 -0
  284. package/dist/utils/ts-imports.d.ts.map +1 -1
  285. package/dist/utils/ts-imports.js +65 -3
  286. package/dist/utils/ts-imports.js.map +1 -1
  287. package/package.json +1 -1
@@ -9,10 +9,25 @@
9
9
  * answered `Repository "local/" not found`, because `resolveRepoFromCwd("/")`
10
10
  * matches nothing and falls back to `local/` + basename("/") = "".
11
11
  *
12
- * So the CWD has to travel with the request rather than with the process. The
13
- * daemon asks each client for its MCP roots once per session and runs that
14
- * session's requests inside this context; stdio callers get an empty store and
15
- * fall through to `process.cwd()`, exactly as before.
12
+ * So the CWD has to travel with the request rather than with the process. It
13
+ * travels in the URL: `setup <client> --http` writes `?cwd=<abs path>` and the
14
+ * daemon runs that session's requests inside this context. stdio callers get an
15
+ * empty store and fall through to `process.cwd()`, exactly as before.
16
+ *
17
+ * NOT from MCP roots. This comment used to say the daemon asks each client for
18
+ * its roots once per session; nothing implements that — `roots/list` appears
19
+ * nowhere in the server. The claim cost a reader a full investigation before the
20
+ * grep came back empty, which is why it is called out rather than quietly
21
+ * deleted.
22
+ *
23
+ * The consequence is structural and worth stating here, because it decides how
24
+ * many processes a machine runs: an HTTP entry is inherently PER-PROJECT, since
25
+ * one URL carries one directory. A client that keeps ONE GLOBAL MCP config
26
+ * therefore cannot use the shared daemon at all and falls back to stdio — one
27
+ * process per session. Measured on this machine: Claude Code, which stores MCP
28
+ * config per project, had 114 projects on the daemon; Codex, which has only
29
+ * ~/.codex/config.toml, had 36 stdio processes. Implementing `roots/list` is
30
+ * what would close that gap.
16
31
  *
17
32
  * AsyncLocalStorage rather than a parameter thread because the consumers sit
18
33
  * deep under `wrapTool` — repo resolution, hint generation — and every one of
@@ -22,6 +37,19 @@
22
37
  export interface RequestContext {
23
38
  /** Directory the calling client is working in. */
24
39
  cwd: string;
40
+ /**
41
+ * Which client is asking, from `?client=` in the URL.
42
+ *
43
+ * Needed because clients disagree about what a good tool list is, and one daemon answers all of
44
+ * them. Codex freezes its list at session start, so anything not offered up front is unreachable
45
+ * for the whole session; Claude Code refreshes on demand and measurably STOPS USING CodeSift when
46
+ * handed the full list (3e1ec6c, adoption down >90%). A single shared answer cannot satisfy both.
47
+ *
48
+ * It travels in the URL for the same reason `cwd` does: stateless serving has no session to have
49
+ * learned it, and the `initialized` notification lands on an instance that never saw `initialize`
50
+ * — measured, it arrives with an empty clientInfo.
51
+ */
52
+ client?: string;
25
53
  /**
26
54
  * Aborted when the client-facing timeout fires.
27
55
  *
@@ -45,6 +73,8 @@ export declare function runWithRequestContext<T>(ctx: RequestContext, fn: () =>
45
73
  * process's otherwise. The fallback is what keeps stdio behaviour identical.
46
74
  */
47
75
  export declare function currentCwd(): string;
76
+ /** Which client this request belongs to, when its URL said so. */
77
+ export declare function currentClient(): string | undefined;
48
78
  /**
49
79
  * The ambient cancellation signal, if a request is in scope.
50
80
  *
@@ -1 +1 @@
1
- {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/server-helpers/request-context.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAID,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE5E;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,SAAS,CAE5D;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,IAAI,cAAc,GAAG,SAAS,CAElE;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
1
+ {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/server-helpers/request-context.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAID,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE5E;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,kEAAkE;AAClE,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAElD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,SAAS,CAE5D;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,IAAI,cAAc,GAAG,SAAS,CAElE;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
@@ -11,6 +11,10 @@ export function runWithRequestContext(ctx, fn) {
11
11
  export function currentCwd() {
12
12
  return storage.getStore()?.cwd ?? process.cwd();
13
13
  }
14
+ /** Which client this request belongs to, when its URL said so. */
15
+ export function currentClient() {
16
+ return storage.getStore()?.client;
17
+ }
14
18
  /**
15
19
  * The ambient cancellation signal, if a request is in scope.
16
20
  *
@@ -1 +1 @@
1
- {"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server-helpers/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA4CrD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAExD,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAI,GAAmB,EAAE,EAAW;IACvE,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC;AACpC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server-helpers/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAwErD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAExD,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAI,GAAmB,EAAE,EAAW;IACvE,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAClD,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC;AACpC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC;AAC1C,CAAC"}
package/dist/server.d.ts CHANGED
@@ -13,6 +13,15 @@ export interface HttpServerHandle {
13
13
  sessionCount: () => number;
14
14
  close: () => Promise<void>;
15
15
  }
16
+ /**
17
+ * Which client this connection belongs to, from `?client=` in the URL.
18
+ *
19
+ * Written by `codesift setup <platform> --http`. It travels in the URL for the same reason `cwd`
20
+ * does: stateless serving has no session, and the `initialized` notification arrives on an instance
21
+ * that never handled `initialize`, so its clientInfo is empty — measured, not assumed.
22
+ */
23
+ export declare function clientFromUrl(rawUrl: string): string | undefined;
24
+ export declare function cwdFromUrl(rawUrl: string): string | undefined;
16
25
  export declare function startIdleCacheRelease(): NodeJS.Timeout | null;
17
26
  export declare function startHttpServer(opts?: {
18
27
  port?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AA0BzD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AA0E1D,qFAAqF;AACrF,wBAAgB,oBAAoB,IAAI,SAAS,CAOhD;AAMD,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAwHD,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAiB7D;AAED,wBAAsB,eAAe,CACnC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1D,OAAO,CAAC,gBAAgB,CAAC,CAoI3B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AA4BzD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AA0E1D,qFAAqF;AACrF,wBAAgB,oBAAoB,IAAI,SAAS,CAOhD;AAMD,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAwGD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWhE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAkC7D;AAqCD,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAiB7D;AAED,wBAAsB,eAAe,CACnC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1D,OAAO,CAAC,gBAAgB,CAAC,CAoL3B"}
package/dist/server.js CHANGED
@@ -13,8 +13,10 @@ import { setupHooksForPlatform } from "./cli/setup.js";
13
13
  import { detectPlatform, detectPlatformFromClientInfo } from "./cli/platform.js";
14
14
  import { createRequire } from "node:module";
15
15
  import { timingSafeEqual } from "node:crypto";
16
- import { resolve as pathResolve } from "node:path";
16
+ import { resolve as pathResolve, isAbsolute, join } from "node:path";
17
+ import { homedir } from "node:os";
17
18
  import { statSync } from "node:fs";
19
+ import { readVitals, classifyVitals, startVitals } from "./server-helpers/health-vitals.js";
18
20
  import { fileURLToPath } from "node:url";
19
21
  import { isLoopbackHost } from "./utils/loopback.js";
20
22
  import { runWithRequestContext } from "./server-helpers/request-context.js";
@@ -149,8 +151,65 @@ function codeReplacedUnderUs() {
149
151
  * nothing. Not a security boundary (the daemon is loopback-only and already
150
152
  * serves every indexed repo to any local caller) but it keeps a typo from
151
153
  * silently resolving every repo to garbage.
154
+ *
155
+ * Two shapes come from VS Code-derived clients writing `?cwd=${workspaceFolder}`,
156
+ * which is what lets ONE GLOBAL entry serve every project on a client that has no
157
+ * per-project MCP config. Both were measured against Cursor 1.0 (probe, 2026-08-27):
158
+ *
159
+ * - `~/DEV/thing` — Cursor expands the variable to a TILDE path, not an absolute
160
+ * one. `pathResolve` expands `~` against the process cwd, which for a
161
+ * launchd-started daemon is `/`, producing `/~/DEV/thing`; that fails `statSync`
162
+ * and the directory silently vanished. Expanding it here is what makes the
163
+ * single-entry configuration work at all.
164
+ * - `${workspaceFolder}` verbatim — a window with NO folder open leaves the
165
+ * placeholder unexpanded. It must not become a directory name.
166
+ *
167
+ * A rejected value is announced once. The whole reason this cost a full
168
+ * investigation is that an unusable cwd degraded into "no cwd" without a word,
169
+ * and the symptom surfaced far away as `Repository "local/" not found`.
170
+ */
171
+ const warnedCwdValues = new Set();
172
+ const MAX_WARNED_CWD_VALUES = 32;
173
+ function warnUnusableCwd(value, why) {
174
+ // Bounded: the value comes from a URL, so an unbounded set is a memory leak a
175
+ // client could drive. Past the cap we stay quiet rather than grow.
176
+ if (warnedCwdValues.has(value) || warnedCwdValues.size >= MAX_WARNED_CWD_VALUES)
177
+ return;
178
+ warnedCwdValues.add(value);
179
+ console.error(`[codesift] ignoring ?cwd=${value} — ${why}. Repo auto-resolution will fail for this ` +
180
+ `client; pass an absolute path, or an explicit repo argument.`);
181
+ }
182
+ /** Expand a leading `~`. `~user` is left alone — it cannot be resolved reliably. */
183
+ function expandTilde(value) {
184
+ if (value === "~")
185
+ return homedir();
186
+ if (value.startsWith("~/"))
187
+ return join(homedir(), value.slice(2));
188
+ return value;
189
+ }
190
+ /**
191
+ * Which client this connection belongs to, from `?client=` in the URL.
192
+ *
193
+ * Written by `codesift setup <platform> --http`. It travels in the URL for the same reason `cwd`
194
+ * does: stateless serving has no session, and the `initialized` notification arrives on an instance
195
+ * that never handled `initialize`, so its clientInfo is empty — measured, not assumed.
152
196
  */
153
- function cwdFromUrl(rawUrl) {
197
+ export function clientFromUrl(rawUrl) {
198
+ const q = rawUrl.indexOf("?");
199
+ if (q < 0)
200
+ return undefined;
201
+ try {
202
+ const value = new URLSearchParams(rawUrl.slice(q + 1)).get("client");
203
+ // Bounded and alphanumeric: this selects a code path, so it is not a place for free text.
204
+ if (!value || !/^[a-z][a-z0-9-]{0,31}$/i.test(value))
205
+ return undefined;
206
+ return value.toLowerCase();
207
+ }
208
+ catch {
209
+ return undefined;
210
+ }
211
+ }
212
+ export function cwdFromUrl(rawUrl) {
154
213
  const q = rawUrl.indexOf("?");
155
214
  if (q < 0)
156
215
  return undefined;
@@ -163,11 +222,27 @@ function cwdFromUrl(rawUrl) {
163
222
  }
164
223
  if (!value)
165
224
  return undefined;
225
+ // An unexpanded client-side placeholder, not a path.
226
+ if (value.includes("${")) {
227
+ warnUnusableCwd(value, "the client did not expand this variable (window with no folder open?)");
228
+ return undefined;
229
+ }
230
+ const expanded = expandTilde(value);
231
+ if (!isAbsolute(expanded)) {
232
+ // Resolving a relative path against the daemon's cwd (`/` under launchd) is
233
+ // meaningless and would silently name the wrong directory.
234
+ warnUnusableCwd(value, "not an absolute path");
235
+ return undefined;
236
+ }
166
237
  try {
167
- const resolved = pathResolve(value);
168
- return statSync(resolved).isDirectory() ? resolved : undefined;
238
+ const resolved = pathResolve(expanded);
239
+ if (statSync(resolved).isDirectory())
240
+ return resolved;
241
+ warnUnusableCwd(value, "not a directory");
242
+ return undefined;
169
243
  }
170
244
  catch {
245
+ warnUnusableCwd(value, "no such directory");
171
246
  return undefined;
172
247
  }
173
248
  }
@@ -267,7 +342,37 @@ export async function startHttpServer(opts = {}) {
267
342
  * makes more than one process — or a remote host — possible at all without a
268
343
  * shared session store.
269
344
  */
270
- const handler = createMcpHandler(() => createCodesiftServer(), { legacy: "stateless" });
345
+ const envPlatformForHttp = detectPlatform();
346
+ /** Set by the HTTP handler just before delegating, read by the server factory. */
347
+ let clientForNextServer;
348
+ /**
349
+ * One daemon, clients that want different lists.
350
+ *
351
+ * Codex freezes its tool list at session start, so a tool not offered up front is unreachable for
352
+ * the whole session — measured 2026-08-29, a Codex client on the daemon saw 90 tools where the
353
+ * same build over stdio gives it 181, and `find_dead_code` did not exist as far as it was
354
+ * concerned. Claude Code is the opposite: it refreshes on demand and STOPS USING CodeSift when
355
+ * handed everything (3e1ec6c, adoption down >90%).
356
+ *
357
+ * So the decision is made per REQUEST, from `?client=`, and the front-load is deliberately not
358
+ * remembered at process scope — otherwise one Codex session would hand every Claude Code session
359
+ * the full list too.
360
+ */
361
+ const handler = createMcpHandler(() => {
362
+ const s = createCodesiftServer();
363
+ // NOT from the async context: the handler builds this server outside the request's
364
+ // AsyncLocalStorage scope — measured, `currentClient()` is undefined here even when the URL
365
+ // carried one. The value is stashed by the HTTP handler immediately before it delegates, on the
366
+ // same tick, which is the only moment both are in scope.
367
+ const client = clientForNextServer;
368
+ const platform = envPlatformForHttp !== "unknown"
369
+ ? envPlatformForHttp
370
+ : detectPlatformFromClientInfo(client ?? "");
371
+ if (client && shouldFrontLoadHiddenTools(platform)) {
372
+ frontLoadHiddenToolsForFrozenHost({ remember: false });
373
+ }
374
+ return s;
375
+ }, { legacy: "stateless" });
271
376
  const nodeHandler = toNodeHandler(handler);
272
377
  let inFlight = 0;
273
378
  const httpServer = http.createServer((req, res) => {
@@ -288,7 +393,20 @@ export async function startHttpServer(opts = {}) {
288
393
  reason: "the files this daemon started from were replaced (rebuild); lazily imported modules will fail until it restarts",
289
394
  remedy: "launchctl kickstart -k gui/$(id -u)/com.codesift.daemon",
290
395
  }
291
- : { status: "ok", sessions: inFlight, version: PKG_VERSION }));
396
+ : (() => {
397
+ // Liveness was never the question — the daemon was alive through all three
398
+ // incidents. `busy` keeps the 200 on purpose: slow is not down, and a session
399
+ // told "down" stops using tools it could still have used.
400
+ const vitals = readVitals();
401
+ const { status, reasons } = classifyVitals(vitals);
402
+ return {
403
+ status,
404
+ sessions: inFlight,
405
+ version: PKG_VERSION,
406
+ vitals,
407
+ ...(reasons.length > 0 ? { reasons } : {}),
408
+ };
409
+ })()));
292
410
  return;
293
411
  }
294
412
  if (token) {
@@ -302,6 +420,9 @@ export async function startHttpServer(opts = {}) {
302
420
  // The caller's directory, pinned per request. Statelessness makes this
303
421
  // the natural carrier: there is no session to have learned it once.
304
422
  const cwd = cwdFromUrl(url);
423
+ // Stashed for the server factory, which runs outside this request's async context —
424
+ // measured: currentClient() is undefined there even when the URL carried one.
425
+ clientForNextServer = clientFromUrl(url);
305
426
  inFlight++;
306
427
  try {
307
428
  await (cwd
@@ -325,6 +446,7 @@ export async function startHttpServer(opts = {}) {
325
446
  }
326
447
  })();
327
448
  });
449
+ startVitals();
328
450
  await new Promise((resolve) => httpServer.listen(opts.port ?? 0, host, resolve));
329
451
  const addr = httpServer.address();
330
452
  const port = typeof addr === "object" && addr ? addr.port : (opts.port ?? 0);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@ export declare function atomicWriteBuffer(targetPath: string, buf: Buffer): Prom
44
44
  * sqlitePathFor, …) rather than written out independently, and asserted against them in
45
45
  * tests, so adding an artifact kind without teaching prune about it fails the build.
46
46
  */
47
- export declare const ARTIFACT_SUFFIXES: readonly ["index.json", "index.db", "index.db-wal", "index.db-shm", "embeddings.ndjson", "embeddings.meta.json", "chunks.ndjson", "chunk-embeddings.ndjson", "bm25.json", "graph.json", "snapshot.json"];
47
+ export declare const ARTIFACT_SUFFIXES: readonly ["index.json", "index.db", "index.db-wal", "index.db-shm", "embeddings.ndjson", "embeddings.meta.json", "chunks.ndjson", "chunk-embeddings.ndjson", "bm25.json", "bm25.ndjson", "import-edges.ndjson", "graph.json", "snapshot.json"];
48
48
  /**
49
49
  * Matches `<hash>.<known artifact suffix>`, with an optional `.tmp.<ts>` tail so the
50
50
  * abandoned halves of an interrupted atomic write are reclaimed too. Capture group 1 is the
@@ -1 +1 @@
1
- {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/storage/_shared.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAiB,GACxB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,YAC5B,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,yBAAyB,EACzB,WAAW,EACX,YAAY,EACZ,eAAe,CACP,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAGxC"}
1
+ {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/storage/_shared.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAiB,GACxB,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAuBD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,YAC5B,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,yBAAyB,EACzB,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,eAAe,CACP,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAQxC"}
@@ -16,12 +16,22 @@ import { basename, dirname, join } from "node:path";
16
16
  */
17
17
  export async function cleanupOrphanTempFiles(targetPath, minAgeMs = 60 * 60 * 1000) {
18
18
  const dir = dirname(targetPath);
19
- const prefix = `${basename(targetPath)}.tmp.`;
19
+ const base = basename(targetPath);
20
+ // TWO shapes, not one. `atomicWriteFile` writes `<target>.tmp.<ts>`; `chunk-store` writes
21
+ // `<target>.generation.<pid>.<uuid>`. Only the first was ever swept, so the second accumulated
22
+ // untouched — measured 2026-09-05: 164 files, 19.6 GB, across 26 process ids of which 24 were
23
+ // long dead. They are invisible to `prune` too until the pattern above learns the tail.
24
+ const prefixes = [`${base}.tmp.`, `${base}.generation.`];
20
25
  let removed = 0;
21
26
  try {
22
27
  const cutoff = Date.now() - minAgeMs;
23
28
  for (const entry of await readdir(dir)) {
24
- if (!entry.startsWith(prefix))
29
+ if (!prefixes.some((prefix) => entry.startsWith(prefix)))
30
+ continue;
31
+ // A generation file whose WRITER IS STILL RUNNING is an in-flight write, not an orphan. The
32
+ // age guard alone would eventually delete one: a large embedding batch can outlive the hour,
33
+ // and deleting it mid-write turns a slow save into a corrupt one.
34
+ if (writerIsAlive(entry))
25
35
  continue;
26
36
  const full = join(dir, entry);
27
37
  try {
@@ -37,6 +47,29 @@ export async function cleanupOrphanTempFiles(targetPath, minAgeMs = 60 * 60 * 10
37
47
  catch { /* unreadable dir — nothing to clean */ }
38
48
  return removed;
39
49
  }
50
+ /**
51
+ * True when a `.generation.<pid>.<uuid>` name belongs to a process that still exists.
52
+ *
53
+ * `kill(pid, 0)` sends no signal; it only asks whether the id is addressable. EPERM means the
54
+ * process exists and belongs to someone else — still alive, so still hands off. Anything else, and
55
+ * any name without a parsable pid, is treated as dead: this runs beside an age guard, and the cost
56
+ * of being wrong in that direction is one orphan surviving another hour.
57
+ */
58
+ function writerIsAlive(entry) {
59
+ const match = /\.generation\.(\d+)\./.exec(entry);
60
+ if (!match)
61
+ return false;
62
+ const pid = Number(match[1]);
63
+ if (!Number.isInteger(pid) || pid <= 0)
64
+ return false;
65
+ try {
66
+ process.kill(pid, 0);
67
+ return true;
68
+ }
69
+ catch (err) {
70
+ return err.code === "EPERM";
71
+ }
72
+ }
40
73
  /**
41
74
  * Write content to a file atomically using a write-rename strategy.
42
75
  * 1. Ensures the parent directory exists (mkdir -p).
@@ -111,6 +144,8 @@ export const ARTIFACT_SUFFIXES = [
111
144
  "chunks.ndjson",
112
145
  "chunk-embeddings.ndjson",
113
146
  "bm25.json",
147
+ "bm25.ndjson",
148
+ "import-edges.ndjson",
114
149
  "graph.json",
115
150
  "snapshot.json",
116
151
  ];
@@ -121,6 +156,9 @@ export const ARTIFACT_SUFFIXES = [
121
156
  */
122
157
  export function artifactPattern() {
123
158
  const suffixes = ARTIFACT_SUFFIXES.map((s) => s.replace(/[.\\+*?[^\]$(){}=!<>|:#-]/g, "\\$&"));
124
- return new RegExp(`^([0-9a-f]{8,})\\.(?:${suffixes.join("|")})(?:\\.tmp\\..*)?$`);
159
+ // The abandoned-write tails are BOTH shapes. `.tmp.<ts>` comes from `atomicWriteFile`;
160
+ // `.generation.<pid>.<uuid>` comes from `chunk-store`, and prune could not see it — measured
161
+ // 2026-09-05, 164 such files holding 19.6 GB that neither cleanup path could reach.
162
+ return new RegExp(`^([0-9a-f]{8,})\\.(?:${suffixes.join("|")})(?:\\.tmp\\..*|\\.generation\\..*)?$`);
125
163
  }
126
164
  //# sourceMappingURL=_shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../src/storage/_shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../src/storage/_shared.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index-migration.d.ts","sourceRoot":"","sources":["../../src/storage/index-migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;AAU7C,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,YAAY,CAAC,CAGjE;AAgBD,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED,mFAAmF;AACnF,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAMhE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,KAAK,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;AAK1E;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,iBAAiB,GACjC,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
1
+ {"version":3,"file":"index-migration.d.ts","sourceRoot":"","sources":["../../src/storage/index-migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;AAU7C,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,YAAY,CAAC,CAGjE;AAgBD,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED,mFAAmF;AACnF,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAMhE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,KAAK,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;AAK1E;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,iBAAiB,GACjC,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
@@ -1,4 +1,4 @@
1
- import { importLegacyIndexIfEmpty, isSqliteAvailable, loadIndexSqlite, } from "./sqlite-index-store.js";
1
+ import { importLegacyIndexIfEmpty, indexDbIsPopulated, isSqliteAvailable, } from "./sqlite-index-store.js";
2
2
  /**
3
3
  * Which on-disk format to use.
4
4
  *
@@ -54,7 +54,11 @@ export async function ensureSqliteMigrated(indexPath, dbPath, loadLegacyIndex) {
54
54
  if (inFlight)
55
55
  return inFlight;
56
56
  const run = (async () => {
57
- if ((await loadIndexSqlite(dbPath)) !== null)
57
+ // An EXISTENCE check, not a load. This used to call `loadIndexSqlite(dbPath)` and discard the
58
+ // result, so every cold entry to a repository materialised the whole index twice — once to
59
+ // answer "is it empty", once for real. Measured on the largest index here, that is ~349 MB of
60
+ // objects built and thrown away, plus the GC pressure the allocation storm creates.
61
+ if (await indexDbIsPopulated(dbPath))
58
62
  return;
59
63
  const legacy = await loadLegacyIndex(indexPath);
60
64
  // The importer re-checks emptiness under its write lock, so racing processes cannot
@@ -1 +1 @@
1
- {"version":3,"file":"index-migration.js","sourceRoot":"","sources":["../../src/storage/index-migration.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAIjC;;;;;GAKG;AACH,IAAI,cAAiD,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,cAAc,KAAK,mBAAmB,EAAE,CAAC;IACzC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,cAAc,GAAG,SAAS,CAAC;AAC7B,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,IAAI,4CAA4C,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,SAAS,CACjB,mEAAmE,SAAS,EAAE,CAC/E,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAC7C,CAAC,CAAC,GAAG,SAAS,KAAK,CAAC;AACxB,CAAC;AAID,kEAAkE;AAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAiB,EACjB,MAAc,EACd,eAAkC;IAElC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE;QACtB,IAAI,CAAC,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI;YAAE,OAAO;QACrD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;QAChD,oFAAoF;QACpF,yCAAyC;QACzC,IAAI,MAAM;YAAE,MAAM,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,EAAE,CAAC;IAEL,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,CAAC;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wFAAwF;QACxF,mFAAmF;QACnF,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,UAAU,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"index-migration.js","sourceRoot":"","sources":["../../src/storage/index-migration.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAIjC;;;;;GAKG;AACH,IAAI,cAAiD,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,cAAc,KAAK,mBAAmB,EAAE,CAAC;IACzC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,cAAc,GAAG,SAAS,CAAC;AAC7B,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,IAAI,4CAA4C,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,SAAS,CACjB,mEAAmE,SAAS,EAAE,CAC/E,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAC7C,CAAC,CAAC,GAAG,SAAS,KAAK,CAAC;AACxB,CAAC;AAID,kEAAkE;AAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAiB,EACjB,MAAc,EACd,eAAkC;IAElC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE;QACtB,8FAA8F;QAC9F,2FAA2F;QAC3F,8FAA8F;QAC9F,oFAAoF;QACpF,IAAI,MAAM,kBAAkB,CAAC,MAAM,CAAC;YAAE,OAAO;QAC7C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;QAChD,oFAAoF;QACpF,yCAAyC;QACzC,IAAI,MAAM;YAAE,MAAM,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,EAAE,CAAC;IAEL,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,CAAC;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wFAAwF;QACxF,mFAAmF;QACnF,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,UAAU,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { CodeIndex, CodeSymbol, FileEntry } from "../types.js";
2
+ import { type IndexMeta, type SymbolQuery } from "./sqlite/queries.js";
2
3
  import { type IndexSummary } from "./sqlite-index-store.js";
3
4
  import { type IndexOrStaleResult } from "./index-version.js";
4
5
  export { getIndexCacheBytesForTesting, getIndexCacheSizeForTesting, resetIndexCacheForTesting, resetSummaryCacheForTesting, } from "./index-cache.js";
@@ -35,6 +36,34 @@ export declare function loadIndex(indexPath: string, currentVersions?: Record<st
35
36
  * The JSON backend keeps the old cost; there is no way to read one record out of a blob.
36
37
  */
37
38
  export declare function getFileEntry(indexPath: string, filePath: string): Promise<FileEntry | undefined>;
39
+ /**
40
+ * Symbols matching a predicate, without constructing the rest of the index.
41
+ *
42
+ * The narrow read the tool layer has never had. Of the 159 call sites that materialise a whole
43
+ * `CodeIndex`, 31% need nothing more than this or `getIndexMeta` — a keyed lookup or a metadata
44
+ * field — and pay 349 MB and ~10 s for it on the largest repo here. Measured against that:
45
+ * `WHERE name = ?` 9 ms, `WHERE file = ?` 10 ms, `WHERE kind = ?` 32 ms.
46
+ *
47
+ * The JSON backend keeps the old cost — there is no way to read one record out of a blob — so this
48
+ * is parity there, not a speedup. It exists so a caller is written once against the narrow shape
49
+ * instead of branching on the backend, exactly as `getFileEntry` above.
50
+ */
51
+ export declare function findSymbols(indexPath: string, query: SymbolQuery): Promise<CodeSymbol[]>;
52
+ /**
53
+ * Fold over matching symbols in pages instead of holding them all.
54
+ *
55
+ * For the callers that genuinely have to see every symbol — regex scanners, adjacency builders,
56
+ * vocabulary collectors — but never need them resident at once. They fold and discard, so the
57
+ * array was never the requirement; it was only how the data arrived.
58
+ */
59
+ export declare function streamSymbols(indexPath: string, query: SymbolQuery, onBatch: (batch: CodeSymbol[]) => void | boolean | Promise<void | boolean>): Promise<void>;
60
+ /**
61
+ * Root, repo and counts, with no symbol construction at all.
62
+ *
63
+ * 26 of the 159 call sites read only `index.root` or `index.repo`, and two materialise the whole
64
+ * index purely to check that it exists.
65
+ */
66
+ export declare function getIndexMeta(indexPath: string): Promise<IndexMeta | null>;
38
67
  /**
39
68
  * Read an index's files and metadata WITHOUT constructing its symbols (ADR-004 stage 2).
40
69
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index-store.d.ts","sourceRoot":"","sources":["../../src/storage/index-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAUL,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AAcjC,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,YAAY,EACjB,2BAA2B,EAC3B,6BAA6B,EAC7B,mBAAmB,EACnB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AAMnC;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAChB,IAAI,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAClC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAK3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAShC;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAsBtF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CAkB7D;AAuDD,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D;AAwDD;;;;4BAI4B;AAC5B;;;;;;;;;;;;;;;;wCAgBwC;AACxC,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAEpC;AAID;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EAAE,EACxB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOtE"}
1
+ {"version":3,"file":"index-store.d.ts","sourceRoot":"","sources":["../../src/storage/index-store.ts"],"names":[],"mappings":"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"}