codesift-mcp 0.15.3 → 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 (401) 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/help.js +1 -1
  17. package/dist/cli/hooks/pre-tool-use.d.ts.map +1 -1
  18. package/dist/cli/hooks/pre-tool-use.js +11 -5
  19. package/dist/cli/hooks/pre-tool-use.js.map +1 -1
  20. package/dist/cli/hooks/shared.d.ts +1 -1
  21. package/dist/cli/hooks/shared.d.ts.map +1 -1
  22. package/dist/cli/hooks/shared.js +34 -2
  23. package/dist/cli/hooks/shared.js.map +1 -1
  24. package/dist/cli/orphan-guard.d.ts +22 -0
  25. package/dist/cli/orphan-guard.d.ts.map +1 -1
  26. package/dist/cli/orphan-guard.js +30 -0
  27. package/dist/cli/orphan-guard.js.map +1 -1
  28. package/dist/cli/service.d.ts +43 -0
  29. package/dist/cli/service.d.ts.map +1 -1
  30. package/dist/cli/service.js +84 -4
  31. package/dist/cli/service.js.map +1 -1
  32. package/dist/cli/setup/codex-project-auto.d.ts +27 -0
  33. package/dist/cli/setup/codex-project-auto.d.ts.map +1 -0
  34. package/dist/cli/setup/codex-project-auto.js +98 -0
  35. package/dist/cli/setup/codex-project-auto.js.map +1 -0
  36. package/dist/cli/setup/codex.d.ts.map +1 -1
  37. package/dist/cli/setup/codex.js +101 -6
  38. package/dist/cli/setup/codex.js.map +1 -1
  39. package/dist/cli/setup/cursor.d.ts.map +1 -1
  40. package/dist/cli/setup/cursor.js +9 -1
  41. package/dist/cli/setup/cursor.js.map +1 -1
  42. package/dist/cli/setup/gemini.d.ts.map +1 -1
  43. package/dist/cli/setup/gemini.js +21 -0
  44. package/dist/cli/setup/gemini.js.map +1 -1
  45. package/dist/cli/setup/mcp.d.ts +37 -1
  46. package/dist/cli/setup/mcp.d.ts.map +1 -1
  47. package/dist/cli/setup/mcp.js +57 -4
  48. package/dist/cli/setup/mcp.js.map +1 -1
  49. package/dist/cli/setup/types.d.ts +19 -1
  50. package/dist/cli/setup/types.d.ts.map +1 -1
  51. package/dist/config.d.ts.map +1 -1
  52. package/dist/config.js +30 -6
  53. package/dist/config.js.map +1 -1
  54. package/dist/formatters-core.d.ts +2 -0
  55. package/dist/formatters-core.d.ts.map +1 -1
  56. package/dist/formatters-core.js +18 -3
  57. package/dist/formatters-core.js.map +1 -1
  58. package/dist/formatters-shortening.d.ts.map +1 -1
  59. package/dist/formatters-shortening.js +8 -2
  60. package/dist/formatters-shortening.js.map +1 -1
  61. package/dist/instructions.d.ts +17 -0
  62. package/dist/instructions.d.ts.map +1 -1
  63. package/dist/instructions.js +35 -0
  64. package/dist/instructions.js.map +1 -1
  65. package/dist/lsp/lsp-servers.d.ts.map +1 -1
  66. package/dist/lsp/lsp-servers.js +4 -1
  67. package/dist/lsp/lsp-servers.js.map +1 -1
  68. package/dist/parser/parse-cache.d.ts.map +1 -1
  69. package/dist/parser/parse-cache.js +36 -1
  70. package/dist/parser/parse-cache.js.map +1 -1
  71. package/dist/register-tool-groups/analysis.d.ts.map +1 -1
  72. package/dist/register-tool-groups/analysis.js +10 -1
  73. package/dist/register-tool-groups/analysis.js.map +1 -1
  74. package/dist/register-tool-groups/core/index.d.ts.map +1 -1
  75. package/dist/register-tool-groups/core/index.js +26 -3
  76. package/dist/register-tool-groups/core/index.js.map +1 -1
  77. package/dist/register-tool-groups/core/meta.d.ts.map +1 -1
  78. package/dist/register-tool-groups/core/meta.js +23 -1
  79. package/dist/register-tool-groups/core/meta.js.map +1 -1
  80. package/dist/register-tool-groups/core/search.d.ts +15 -0
  81. package/dist/register-tool-groups/core/search.d.ts.map +1 -1
  82. package/dist/register-tool-groups/core/search.js +60 -2
  83. package/dist/register-tool-groups/core/search.js.map +1 -1
  84. package/dist/register-tool-groups/core/symbols.d.ts.map +1 -1
  85. package/dist/register-tool-groups/core/symbols.js +13 -2
  86. package/dist/register-tool-groups/core/symbols.js.map +1 -1
  87. package/dist/register-tool-groups/meta.d.ts.map +1 -1
  88. package/dist/register-tool-groups/meta.js +23 -0
  89. package/dist/register-tool-groups/meta.js.map +1 -1
  90. package/dist/register-tools/discovery.d.ts +22 -5
  91. package/dist/register-tools/discovery.d.ts.map +1 -1
  92. package/dist/register-tools/discovery.js +95 -9
  93. package/dist/register-tools/discovery.js.map +1 -1
  94. package/dist/register-tools/runtime.d.ts +9 -1
  95. package/dist/register-tools/runtime.d.ts.map +1 -1
  96. package/dist/register-tools/runtime.js +19 -2
  97. package/dist/register-tools/runtime.js.map +1 -1
  98. package/dist/register-tools.d.ts +4 -2
  99. package/dist/register-tools.d.ts.map +1 -1
  100. package/dist/register-tools.js +20 -8
  101. package/dist/register-tools.js.map +1 -1
  102. package/dist/search/bm25-store.d.ts +6 -0
  103. package/dist/search/bm25-store.d.ts.map +1 -0
  104. package/dist/search/bm25-store.js +164 -0
  105. package/dist/search/bm25-store.js.map +1 -0
  106. package/dist/search/bm25.d.ts +30 -0
  107. package/dist/search/bm25.d.ts.map +1 -1
  108. package/dist/search/bm25.js +159 -34
  109. package/dist/search/bm25.js.map +1 -1
  110. package/dist/search/embed-gate.d.ts +17 -0
  111. package/dist/search/embed-gate.d.ts.map +1 -0
  112. package/dist/search/embed-gate.js +64 -0
  113. package/dist/search/embed-gate.js.map +1 -0
  114. package/dist/search/semantic.d.ts.map +1 -1
  115. package/dist/search/semantic.js +5 -2
  116. package/dist/search/semantic.js.map +1 -1
  117. package/dist/server-helpers/health-vitals.d.ts +45 -0
  118. package/dist/server-helpers/health-vitals.d.ts.map +1 -0
  119. package/dist/server-helpers/health-vitals.js +77 -0
  120. package/dist/server-helpers/health-vitals.js.map +1 -0
  121. package/dist/server-helpers/repo-resolution.d.ts.map +1 -1
  122. package/dist/server-helpers/repo-resolution.js +23 -3
  123. package/dist/server-helpers/repo-resolution.js.map +1 -1
  124. package/dist/server-helpers/request-context.d.ts +34 -4
  125. package/dist/server-helpers/request-context.d.ts.map +1 -1
  126. package/dist/server-helpers/request-context.js +4 -0
  127. package/dist/server-helpers/request-context.js.map +1 -1
  128. package/dist/server-helpers/response-hints.d.ts +1 -4
  129. package/dist/server-helpers/response-hints.d.ts.map +1 -1
  130. package/dist/server-helpers/response-hints.js +44 -1
  131. package/dist/server-helpers/response-hints.js.map +1 -1
  132. package/dist/server-helpers.d.ts.map +1 -1
  133. package/dist/server-helpers.js +20 -0
  134. package/dist/server-helpers.js.map +1 -1
  135. package/dist/server.d.ts +10 -0
  136. package/dist/server.d.ts.map +1 -1
  137. package/dist/server.js +165 -8
  138. package/dist/server.js.map +1 -1
  139. package/dist/storage/_shared.d.ts +1 -1
  140. package/dist/storage/_shared.d.ts.map +1 -1
  141. package/dist/storage/_shared.js +41 -3
  142. package/dist/storage/_shared.js.map +1 -1
  143. package/dist/storage/index-migration.d.ts.map +1 -1
  144. package/dist/storage/index-migration.js +6 -2
  145. package/dist/storage/index-migration.js.map +1 -1
  146. package/dist/storage/index-store.d.ts +29 -0
  147. package/dist/storage/index-store.d.ts.map +1 -1
  148. package/dist/storage/index-store.js +112 -0
  149. package/dist/storage/index-store.js.map +1 -1
  150. package/dist/storage/registry.d.ts +14 -0
  151. package/dist/storage/registry.d.ts.map +1 -1
  152. package/dist/storage/registry.js +46 -7
  153. package/dist/storage/registry.js.map +1 -1
  154. package/dist/storage/sqlite/accessors.d.ts +17 -0
  155. package/dist/storage/sqlite/accessors.d.ts.map +1 -1
  156. package/dist/storage/sqlite/accessors.js +20 -0
  157. package/dist/storage/sqlite/accessors.js.map +1 -1
  158. package/dist/storage/sqlite/connection.d.ts +20 -0
  159. package/dist/storage/sqlite/connection.d.ts.map +1 -1
  160. package/dist/storage/sqlite/connection.js +61 -0
  161. package/dist/storage/sqlite/connection.js.map +1 -1
  162. package/dist/storage/sqlite/index-io.d.ts +5 -0
  163. package/dist/storage/sqlite/index-io.d.ts.map +1 -1
  164. package/dist/storage/sqlite/index-io.js +98 -9
  165. package/dist/storage/sqlite/index-io.js.map +1 -1
  166. package/dist/storage/sqlite/meta.d.ts +7 -0
  167. package/dist/storage/sqlite/meta.d.ts.map +1 -1
  168. package/dist/storage/sqlite/meta.js.map +1 -1
  169. package/dist/storage/sqlite/queries.d.ts +66 -0
  170. package/dist/storage/sqlite/queries.d.ts.map +1 -0
  171. package/dist/storage/sqlite/queries.js +196 -0
  172. package/dist/storage/sqlite/queries.js.map +1 -0
  173. package/dist/storage/sqlite/schema.d.ts +2 -2
  174. package/dist/storage/sqlite/schema.d.ts.map +1 -1
  175. package/dist/storage/sqlite/schema.js +36 -0
  176. package/dist/storage/sqlite/schema.js.map +1 -1
  177. package/dist/storage/sqlite-index-store.d.ts +3 -1
  178. package/dist/storage/sqlite-index-store.d.ts.map +1 -1
  179. package/dist/storage/sqlite-index-store.js +4 -1
  180. package/dist/storage/sqlite-index-store.js.map +1 -1
  181. package/dist/storage/telemetry/uploader.js +1 -1
  182. package/dist/storage/telemetry/uploader.js.map +1 -1
  183. package/dist/storage/usage-tracker.d.ts.map +1 -1
  184. package/dist/storage/usage-tracker.js +54 -2
  185. package/dist/storage/usage-tracker.js.map +1 -1
  186. package/dist/tools/boundary-tools.js +2 -2
  187. package/dist/tools/boundary-tools.js.map +1 -1
  188. package/dist/tools/community-tools.d.ts +7 -0
  189. package/dist/tools/community-tools.d.ts.map +1 -1
  190. package/dist/tools/community-tools.js +31 -14
  191. package/dist/tools/community-tools.js.map +1 -1
  192. package/dist/tools/complexity-tools.d.ts.map +1 -1
  193. package/dist/tools/complexity-tools.js +65 -45
  194. package/dist/tools/complexity-tools.js.map +1 -1
  195. package/dist/tools/conversation-index-tools.js +2 -2
  196. package/dist/tools/conversation-index-tools.js.map +1 -1
  197. package/dist/tools/conversation-search-tools.js +2 -2
  198. package/dist/tools/conversation-search-tools.js.map +1 -1
  199. package/dist/tools/coupling-tools.d.ts +2 -2
  200. package/dist/tools/coupling-tools.d.ts.map +1 -1
  201. package/dist/tools/coupling-tools.js +8 -13
  202. package/dist/tools/coupling-tools.js.map +1 -1
  203. package/dist/tools/diff-tools.d.ts.map +1 -1
  204. package/dist/tools/diff-tools.js +11 -14
  205. package/dist/tools/diff-tools.js.map +1 -1
  206. package/dist/tools/git-exec.d.ts +42 -0
  207. package/dist/tools/git-exec.d.ts.map +1 -0
  208. package/dist/tools/git-exec.js +53 -0
  209. package/dist/tools/git-exec.js.map +1 -0
  210. package/dist/tools/git-tree-guard.d.ts +23 -0
  211. package/dist/tools/git-tree-guard.d.ts.map +1 -0
  212. package/dist/tools/git-tree-guard.js +33 -0
  213. package/dist/tools/git-tree-guard.js.map +1 -0
  214. package/dist/tools/graph-tools.d.ts.map +1 -1
  215. package/dist/tools/graph-tools.js +5 -2
  216. package/dist/tools/graph-tools.js.map +1 -1
  217. package/dist/tools/hotspot-tools.d.ts +25 -0
  218. package/dist/tools/hotspot-tools.d.ts.map +1 -1
  219. package/dist/tools/hotspot-tools.js +24 -3
  220. package/dist/tools/hotspot-tools.js.map +1 -1
  221. package/dist/tools/impact-tools.d.ts.map +1 -1
  222. package/dist/tools/impact-tools.js +8 -9
  223. package/dist/tools/impact-tools.js.map +1 -1
  224. package/dist/tools/index-tools/file-indexer.d.ts +6 -0
  225. package/dist/tools/index-tools/file-indexer.d.ts.map +1 -1
  226. package/dist/tools/index-tools/file-indexer.js +184 -18
  227. package/dist/tools/index-tools/file-indexer.js.map +1 -1
  228. package/dist/tools/index-tools/folder-indexer.d.ts.map +1 -1
  229. package/dist/tools/index-tools/folder-indexer.js +59 -7
  230. package/dist/tools/index-tools/folder-indexer.js.map +1 -1
  231. package/dist/tools/index-tools/load-gate.d.ts +15 -0
  232. package/dist/tools/index-tools/load-gate.d.ts.map +1 -0
  233. package/dist/tools/index-tools/load-gate.js +57 -0
  234. package/dist/tools/index-tools/load-gate.js.map +1 -0
  235. package/dist/tools/index-tools/overload-guard.d.ts +16 -0
  236. package/dist/tools/index-tools/overload-guard.d.ts.map +1 -0
  237. package/dist/tools/index-tools/overload-guard.js +68 -0
  238. package/dist/tools/index-tools/overload-guard.js.map +1 -0
  239. package/dist/tools/index-tools/parse.d.ts +9 -0
  240. package/dist/tools/index-tools/parse.d.ts.map +1 -1
  241. package/dist/tools/index-tools/parse.js +9 -2
  242. package/dist/tools/index-tools/parse.js.map +1 -1
  243. package/dist/tools/index-tools/registry.d.ts +25 -1
  244. package/dist/tools/index-tools/registry.d.ts.map +1 -1
  245. package/dist/tools/index-tools/registry.js +149 -8
  246. package/dist/tools/index-tools/registry.js.map +1 -1
  247. package/dist/tools/index-tools/state.d.ts +46 -0
  248. package/dist/tools/index-tools/state.d.ts.map +1 -1
  249. package/dist/tools/index-tools/state.js +132 -0
  250. package/dist/tools/index-tools/state.js.map +1 -1
  251. package/dist/tools/index-tools/watcher.d.ts.map +1 -1
  252. package/dist/tools/index-tools/watcher.js +13 -5
  253. package/dist/tools/index-tools/watcher.js.map +1 -1
  254. package/dist/tools/index-tools/worktree-seed.d.ts +42 -1
  255. package/dist/tools/index-tools/worktree-seed.d.ts.map +1 -1
  256. package/dist/tools/index-tools/worktree-seed.js +165 -24
  257. package/dist/tools/index-tools/worktree-seed.js.map +1 -1
  258. package/dist/tools/index-tools.d.ts +2 -2
  259. package/dist/tools/index-tools.d.ts.map +1 -1
  260. package/dist/tools/index-tools.js +2 -2
  261. package/dist/tools/index-tools.js.map +1 -1
  262. package/dist/tools/journal-generator-helpers.d.ts.map +1 -1
  263. package/dist/tools/journal-generator-helpers.js +3 -1
  264. package/dist/tools/journal-generator-helpers.js.map +1 -1
  265. package/dist/tools/nest-guard-tools.d.ts +8 -0
  266. package/dist/tools/nest-guard-tools.d.ts.map +1 -1
  267. package/dist/tools/nest-guard-tools.js +7 -1
  268. package/dist/tools/nest-guard-tools.js.map +1 -1
  269. package/dist/tools/nest-pipeline-tools.d.ts.map +1 -1
  270. package/dist/tools/nest-pipeline-tools.js +5 -1
  271. package/dist/tools/nest-pipeline-tools.js.map +1 -1
  272. package/dist/tools/outline-tools.d.ts +4 -1
  273. package/dist/tools/outline-tools.d.ts.map +1 -1
  274. package/dist/tools/outline-tools.js +41 -4
  275. package/dist/tools/outline-tools.js.map +1 -1
  276. package/dist/tools/patterns/execution.d.ts.map +1 -1
  277. package/dist/tools/patterns/execution.js +28 -10
  278. package/dist/tools/patterns/execution.js.map +1 -1
  279. package/dist/tools/review-diff/checks/coupling.js +1 -1
  280. package/dist/tools/review-diff/checks/coupling.js.map +1 -1
  281. package/dist/tools/review-diff/constants.d.ts +9 -0
  282. package/dist/tools/review-diff/constants.d.ts.map +1 -1
  283. package/dist/tools/review-diff/constants.js +9 -0
  284. package/dist/tools/review-diff/constants.js.map +1 -1
  285. package/dist/tools/review-diff/orchestrator.d.ts.map +1 -1
  286. package/dist/tools/review-diff/orchestrator.js +35 -2
  287. package/dist/tools/review-diff/orchestrator.js.map +1 -1
  288. package/dist/tools/review-diff/types.d.ts +5 -0
  289. package/dist/tools/review-diff/types.d.ts.map +1 -1
  290. package/dist/tools/route-tools/file-sources.d.ts.map +1 -1
  291. package/dist/tools/route-tools/file-sources.js +8 -1
  292. package/dist/tools/route-tools/file-sources.js.map +1 -1
  293. package/dist/tools/route-tools/hono.d.ts.map +1 -1
  294. package/dist/tools/route-tools/hono.js +18 -4
  295. package/dist/tools/route-tools/hono.js.map +1 -1
  296. package/dist/tools/route-tools/laravel.js +1 -1
  297. package/dist/tools/route-tools/laravel.js.map +1 -1
  298. package/dist/tools/route-tools/mermaid-call-chain.d.ts.map +1 -1
  299. package/dist/tools/route-tools/mermaid-call-chain.js +9 -1
  300. package/dist/tools/route-tools/mermaid-call-chain.js.map +1 -1
  301. package/dist/tools/route-tools/nest.js +2 -2
  302. package/dist/tools/route-tools/nest.js.map +1 -1
  303. package/dist/tools/route-tools/next-trace.d.ts.map +1 -1
  304. package/dist/tools/route-tools/next-trace.js +16 -1
  305. package/dist/tools/route-tools/next-trace.js.map +1 -1
  306. package/dist/tools/route-tools/next.d.ts.map +1 -1
  307. package/dist/tools/route-tools/next.js +10 -3
  308. package/dist/tools/route-tools/next.js.map +1 -1
  309. package/dist/tools/route-tools/route-mermaid.d.ts.map +1 -1
  310. package/dist/tools/route-tools/route-mermaid.js +7 -1
  311. package/dist/tools/route-tools/route-mermaid.js.map +1 -1
  312. package/dist/tools/route-tools/spring-kotlin.d.ts.map +1 -1
  313. package/dist/tools/route-tools/spring-kotlin.js +4 -1
  314. package/dist/tools/route-tools/spring-kotlin.js.map +1 -1
  315. package/dist/tools/route-tools/trace-route.d.ts.map +1 -1
  316. package/dist/tools/route-tools/trace-route.js +12 -4
  317. package/dist/tools/route-tools/trace-route.js.map +1 -1
  318. package/dist/tools/route-tools/yii2.d.ts.map +1 -1
  319. package/dist/tools/route-tools/yii2.js +14 -9
  320. package/dist/tools/route-tools/yii2.js.map +1 -1
  321. package/dist/tools/secret-detectors.d.ts +10 -1
  322. package/dist/tools/secret-detectors.d.ts.map +1 -1
  323. package/dist/tools/secret-detectors.js +16 -2
  324. package/dist/tools/secret-detectors.js.map +1 -1
  325. package/dist/tools/secret-file-scanner.d.ts +3 -1
  326. package/dist/tools/secret-file-scanner.d.ts.map +1 -1
  327. package/dist/tools/secret-file-scanner.js +4 -2
  328. package/dist/tools/secret-file-scanner.js.map +1 -1
  329. package/dist/tools/secret-tools.d.ts +7 -0
  330. package/dist/tools/secret-tools.d.ts.map +1 -1
  331. package/dist/tools/secret-tools.js +62 -5
  332. package/dist/tools/secret-tools.js.map +1 -1
  333. package/dist/tools/status-tools.d.ts +20 -0
  334. package/dist/tools/status-tools.d.ts.map +1 -1
  335. package/dist/tools/status-tools.js +46 -0
  336. package/dist/tools/status-tools.js.map +1 -1
  337. package/dist/tools/symbol-analysis-tools.d.ts.map +1 -1
  338. package/dist/tools/symbol-analysis-tools.js +27 -2
  339. package/dist/tools/symbol-analysis-tools.js.map +1 -1
  340. package/dist/tools/symbol-reference-tools.d.ts +17 -0
  341. package/dist/tools/symbol-reference-tools.d.ts.map +1 -1
  342. package/dist/tools/symbol-reference-tools.js +23 -4
  343. package/dist/tools/symbol-reference-tools.js.map +1 -1
  344. package/dist/tools/symbol-tool-internals.d.ts +10 -0
  345. package/dist/tools/symbol-tool-internals.d.ts.map +1 -1
  346. package/dist/tools/symbol-tool-internals.js +16 -1
  347. package/dist/tools/symbol-tool-internals.js.map +1 -1
  348. package/dist/tools/test-impact-tools.d.ts +3 -0
  349. package/dist/tools/test-impact-tools.d.ts.map +1 -1
  350. package/dist/tools/test-impact-tools.js +26 -4
  351. package/dist/tools/test-impact-tools.js.map +1 -1
  352. package/dist/tools/wiki-overview-sources.d.ts.map +1 -1
  353. package/dist/tools/wiki-overview-sources.js +3 -0
  354. package/dist/tools/wiki-overview-sources.js.map +1 -1
  355. package/dist/utils/import-graph/collect.d.ts +2 -3
  356. package/dist/utils/import-graph/collect.d.ts.map +1 -1
  357. package/dist/utils/import-graph/collect.js +73 -8
  358. package/dist/utils/import-graph/collect.js.map +1 -1
  359. package/dist/utils/import-graph/edge-accumulator.d.ts.map +1 -1
  360. package/dist/utils/import-graph/edge-accumulator.js +5 -0
  361. package/dist/utils/import-graph/edge-accumulator.js.map +1 -1
  362. package/dist/utils/import-graph/edge-cache.d.ts +15 -0
  363. package/dist/utils/import-graph/edge-cache.d.ts.map +1 -0
  364. package/dist/utils/import-graph/edge-cache.js +98 -0
  365. package/dist/utils/import-graph/edge-cache.js.map +1 -0
  366. package/dist/utils/import-graph/language-imports.d.ts +2 -2
  367. package/dist/utils/import-graph/language-imports.d.ts.map +1 -1
  368. package/dist/utils/import-graph/language-imports.js.map +1 -1
  369. package/dist/utils/import-graph/path-map.d.ts +2 -2
  370. package/dist/utils/import-graph/path-map.d.ts.map +1 -1
  371. package/dist/utils/import-graph/path-map.js.map +1 -1
  372. package/dist/utils/import-graph/python-php-edge-collectors.d.ts +11 -4
  373. package/dist/utils/import-graph/python-php-edge-collectors.d.ts.map +1 -1
  374. package/dist/utils/import-graph/python-php-edge-collectors.js +22 -5
  375. package/dist/utils/import-graph/python-php-edge-collectors.js.map +1 -1
  376. package/dist/utils/import-graph/source-edge-collector.d.ts +2 -3
  377. package/dist/utils/import-graph/source-edge-collector.d.ts.map +1 -1
  378. package/dist/utils/import-graph/source-edge-collector.js +7 -2
  379. package/dist/utils/import-graph/source-edge-collector.js.map +1 -1
  380. package/dist/utils/import-graph/types.d.ts +36 -1
  381. package/dist/utils/import-graph/types.d.ts.map +1 -1
  382. package/dist/utils/import-graph/typescript-edge-collector.d.ts +2 -3
  383. package/dist/utils/import-graph/typescript-edge-collector.d.ts.map +1 -1
  384. package/dist/utils/import-graph/typescript-edge-collector.js +6 -2
  385. package/dist/utils/import-graph/typescript-edge-collector.js.map +1 -1
  386. package/dist/utils/import-graph/workspace-alias.d.ts +2 -2
  387. package/dist/utils/import-graph/workspace-alias.d.ts.map +1 -1
  388. package/dist/utils/import-graph/workspace-alias.js.map +1 -1
  389. package/dist/utils/language-detect.d.ts +2 -4
  390. package/dist/utils/language-detect.d.ts.map +1 -1
  391. package/dist/utils/language-detect.js +26 -4
  392. package/dist/utils/language-detect.js.map +1 -1
  393. package/dist/utils/python-imports.d.ts +20 -0
  394. package/dist/utils/python-imports.d.ts.map +1 -1
  395. package/dist/utils/python-imports.js +52 -0
  396. package/dist/utils/python-imports.js.map +1 -1
  397. package/dist/utils/ts-imports.d.ts +16 -0
  398. package/dist/utils/ts-imports.d.ts.map +1 -1
  399. package/dist/utils/ts-imports.js +65 -3
  400. package/dist/utils/ts-imports.js.map +1 -1
  401. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"graph-tools.js","sourceRoot":"","sources":["../../src/tools/graph-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph-tools.js","sourceRoot":"","sources":["../../src/tools/graph-tools.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,31 @@ export interface HotspotResult {
18
18
  */
19
19
  note?: string;
20
20
  }
21
+ /**
22
+ * Get git log numstat for a repo: file → { commits, linesChanged }.
23
+ *
24
+ * Async to avoid blocking the MCP server's event loop while git produces output.
25
+ * On a 2,376-commit repo with --numstat, the synchronous variant could block for
26
+ * tens of seconds, exceeding the MCP client's connection timeout (-32000).
27
+ *
28
+ * Returns a tuple of [churn-map, error-note]. error-note is populated when the
29
+ * git invocation failed or produced empty output — caller should surface it
30
+ * rather than treating empty as "no hotspots."
31
+ */
32
+ /**
33
+ * How long `git log --numstat` may take, scaled to the window it is asked for.
34
+ *
35
+ * It was a flat 30 s, and that is not enough for the repositories this is most useful on. Measured
36
+ * on tgm-survey-platform (11,167 commits in 180 days): the command takes 13.0 s and produces 4.9 MB
37
+ * when the machine is quiet, and exceeds 30 s when it is not. On failure `getGitChurn` returns an
38
+ * empty map — so the tool reported "no hotspots found" for a repository with six months of dense
39
+ * history. The daemon log holds 138 of those failures.
40
+ *
41
+ * Scaled rather than raised to one bigger constant: the cost is proportional to the window, and a
42
+ * ceiling generous enough for a year would be an absurd wait on a two-week query. The cap exists
43
+ * because past some point the honest answer is that this window is too large for this repository.
44
+ */
45
+ export declare function gitLogTimeoutMsForTesting(sinceDays: number): number;
21
46
  /**
22
47
  * Analyze git churn hotspots: files with high change frequency × complexity.
23
48
  * Higher hotspot_score = more likely to contain bugs and need refactoring.
@@ -1 +1 @@
1
- {"version":3,"file":"hotspot-tools.d.ts","sourceRoot":"","sources":["../../src/tools/hotspot-tools.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAuGD;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,GACA,OAAO,CAAC,aAAa,CAAC,CAoExB"}
1
+ {"version":3,"file":"hotspot-tools.d.ts","sourceRoot":"","sources":["../../src/tools/hotspot-tools.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAgGD;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,GACA,OAAO,CAAC,aAAa,CAAC,CAsExB"}
@@ -1,6 +1,6 @@
1
1
  import { execFile } from "node:child_process";
2
2
  import { promisify } from "node:util";
3
- import { getCodeIndex } from "./index-tools.js";
3
+ import { getIndexSummary } from "./index-tools.js";
4
4
  const execFileAsync = promisify(execFile);
5
5
  const DEFAULT_SINCE_DAYS = 90;
6
6
  const MAX_HOTSPOTS = 30;
@@ -15,6 +15,25 @@ const MAX_HOTSPOTS = 30;
15
15
  * git invocation failed or produced empty output — caller should surface it
16
16
  * rather than treating empty as "no hotspots."
17
17
  */
18
+ /**
19
+ * How long `git log --numstat` may take, scaled to the window it is asked for.
20
+ *
21
+ * It was a flat 30 s, and that is not enough for the repositories this is most useful on. Measured
22
+ * on tgm-survey-platform (11,167 commits in 180 days): the command takes 13.0 s and produces 4.9 MB
23
+ * when the machine is quiet, and exceeds 30 s when it is not. On failure `getGitChurn` returns an
24
+ * empty map — so the tool reported "no hotspots found" for a repository with six months of dense
25
+ * history. The daemon log holds 138 of those failures.
26
+ *
27
+ * Scaled rather than raised to one bigger constant: the cost is proportional to the window, and a
28
+ * ceiling generous enough for a year would be an absurd wait on a two-week query. The cap exists
29
+ * because past some point the honest answer is that this window is too large for this repository.
30
+ */
31
+ export function gitLogTimeoutMsForTesting(sinceDays) {
32
+ return gitLogTimeoutMs(sinceDays);
33
+ }
34
+ function gitLogTimeoutMs(sinceDays) {
35
+ return Math.min(180_000, Math.max(30_000, sinceDays * 600));
36
+ }
18
37
  async function getGitChurn(repoRoot, sinceDays, useAllRefs = false) {
19
38
  const since = `${sinceDays} days ago`;
20
39
  const args = ["log", "--numstat", "--format=%H", `--since=${since}`];
@@ -25,7 +44,7 @@ async function getGitChurn(repoRoot, sinceDays, useAllRefs = false) {
25
44
  const result = await execFileAsync("git", args, {
26
45
  cwd: repoRoot,
27
46
  encoding: "utf-8",
28
- timeout: 30_000,
47
+ timeout: gitLogTimeoutMs(sinceDays),
29
48
  maxBuffer: 50 * 1024 * 1024, // 50MB — --numstat on 2k+ commit repos
30
49
  });
31
50
  output = result.stdout;
@@ -100,7 +119,9 @@ async function getGitChurn(repoRoot, sinceDays, useAllRefs = false) {
100
119
  * Higher hotspot_score = more likely to contain bugs and need refactoring.
101
120
  */
102
121
  export async function analyzeHotspots(repo, options) {
103
- const index = await getCodeIndex(repo);
122
+ // Churn ranking reads the file list and the repo root and nothing else — it never looked at a
123
+ // symbol. Building 352,166 of them to walk `index.files` was the entire cost of a cold call.
124
+ const index = await getIndexSummary(repo);
104
125
  if (!index) {
105
126
  throw new Error(`Repository "${repo}" not found. Index it first with index_folder.`);
106
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hotspot-tools.js","sourceRoot":"","sources":["../../src/tools/hotspot-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hotspot-tools.js","sourceRoot":"","sources":["../../src/tools/hotspot-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"impact-tools.d.ts","sourceRoot":"","sources":["../../src/tools/impact-tools.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAkD,YAAY,EAAE,MAAM,aAAa,CAAC;AAmHhG,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa,EACvC,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAwEvB"}
1
+ {"version":3,"file":"impact-tools.d.ts","sourceRoot":"","sources":["../../src/tools/impact-tools.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAkD,YAAY,EAAE,MAAM,aAAa,CAAC;AAmHhG,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa,EACvC,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAyEvB"}
@@ -1,8 +1,9 @@
1
- import { execFileSync } from "node:child_process";
2
1
  import { getCodeIndex } from "./index-tools.js";
2
+ import { runGit } from "./git-exec.js";
3
3
  import { buildAdjacencyIndex, stripSource } from "./graph-tools.js";
4
4
  import { buildGitDiffArgs } from "../utils/git-validation.js";
5
5
  import { isTestFileStrict as isTestFile } from "../utils/test-file.js";
6
+ import { assertGitTreeMatches } from "./git-tree-guard.js";
6
7
  const DEFAULT_IMPACT_DEPTH = 2;
7
8
  const MAX_AFFECTED_SYMBOLS = 20;
8
9
  const MAX_DEPENDENCY_GRAPH_FILES = 15;
@@ -75,17 +76,14 @@ function buildFileDependencyGraph(index, adjacency, relevantFiles) {
75
76
  /**
76
77
  * Run git diff to find changed files between two refs.
77
78
  */
78
- function getChangedFiles(repoRoot, since, until) {
79
+ async function getChangedFiles(repoRoot, since, until) {
79
80
  // buildGitDiffArgs validates refs and translates the WORKING/STAGED pseudo-refs
80
81
  // (uncommitted diffs) — a bare `${since}..${until}` fails git for those.
81
82
  const args = buildGitDiffArgs(since, until, true);
82
83
  try {
83
- // SEC-002: Use execFileSync (array form) to prevent shell injection — R-1 pattern
84
- const output = execFileSync("git", args, {
85
- cwd: repoRoot,
86
- encoding: "utf-8",
87
- timeout: 10_000,
88
- });
84
+ // SEC-002: array form, never a shell string — the injection guard survives the move to the
85
+ // async runGit (which blocks nothing; see git-exec.ts for why that mattered).
86
+ const output = await runGit(args, { cwd: repoRoot, timeout: 10_000 });
89
87
  return output
90
88
  .split("\n")
91
89
  .map((line) => line.trim())
@@ -106,6 +104,7 @@ export async function impactAnalysis(repo, since, depthOrOptions, until) {
106
104
  if (!index) {
107
105
  throw new Error(`Repository not found: ${repo}`);
108
106
  }
107
+ assertGitTreeMatches(repo, index.root);
109
108
  // Support both legacy (depth: number, until: string) and new (options: ImpactOptions) signatures
110
109
  let maxDepth;
111
110
  let untilRef;
@@ -120,7 +119,7 @@ export async function impactAnalysis(repo, since, depthOrOptions, until) {
120
119
  untilRef = until ?? "HEAD";
121
120
  includeSource = false;
122
121
  }
123
- const changedFiles = getChangedFiles(index.root, since, untilRef);
122
+ const changedFiles = await getChangedFiles(index.root, since, untilRef);
124
123
  // Find all symbols in changed files — use Set for O(1) lookup (CQ17 fix)
125
124
  const changedFileSet = new Set(changedFiles);
126
125
  const changedSymbols = index.symbols.filter((s) => changedFileSet.has(s.file));
@@ -1 +1 @@
1
- {"version":3,"file":"impact-tools.js","sourceRoot":"","sources":["../../src/tools/impact-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"impact-tools.js","sourceRoot":"","sources":["../../src/tools/impact-tools.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,12 @@ export declare function indexFile(filePath: string): Promise<{
12
12
  duration_ms: number;
13
13
  skipped?: boolean;
14
14
  secrets_warning?: string;
15
+ /** The file no longer exists and its symbols were pruned from the index. */
16
+ removed?: boolean;
17
+ /** The walker would never have indexed this path; the directory that decided it. */
18
+ excluded_by?: string;
19
+ /** The path is in no git checkout at all, so there was nothing to index and nothing is wrong. */
20
+ outside_indexed_repos?: boolean;
15
21
  }>;
16
22
  /**
17
23
  * Ensure the index for a repo is fresh relative to git HEAD.
@@ -1 +1 @@
1
- {"version":3,"file":"file-indexer.d.ts","sourceRoot":"","sources":["../../../src/tools/index-tools/file-indexer.ts"],"names":[],"mappings":"AA8BA,2DAA2D;AAC3D,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC,CA8HD;AAUD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAChE,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CAiED;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
1
+ {"version":3,"file":"file-indexer.d.ts","sourceRoot":"","sources":["../../../src/tools/index-tools/file-indexer.ts"],"names":[],"mappings":"AAiCA,2DAA2D;AAC3D,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD;AAqDD;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iGAAiG;IACjG,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC,CAuOD;AAUD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAChE,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CAsED;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -1,14 +1,17 @@
1
1
  import { readFile, stat } from "node:fs/promises";
2
- import { join, resolve, relative, basename } from "node:path";
3
- import { execFileSync } from "node:child_process";
2
+ import { runGit } from "../git-exec.js";
3
+ import { join, resolve, relative, basename, isAbsolute, dirname } from "node:path";
4
4
  import { createHash } from "node:crypto";
5
5
  import { clearTsconfigCache } from "../../utils/tsconfig-paths.js";
6
6
  import { getRepo, listRepos as listRegistryRepos, updateRepoMeta, } from "../../storage/registry.js";
7
7
  import { getFileEntry, saveIncremental } from "../../storage/index-store.js";
8
8
  import { loadConfig } from "../../config.js";
9
+ import { currentCwd, hasRequestContext } from "../../server-helpers/request-context.js";
9
10
  import { scanFileForSecrets } from "../secret-scan-shared.js";
10
11
  import { parseOneFile } from "./parse.js";
11
12
  import { indexFolder } from "./folder-indexer.js";
13
+ import { updateBM25ForFile } from "../../search/bm25.js";
14
+ import { IGNORE_DIRS } from "../../utils/walk/filters.js";
12
15
  import { bm25Indexes, codeIndexes, invalidateEmbeddingCaches } from "./state.js";
13
16
  /**
14
17
  * In-process record of the last indexed state per absolute file path.
@@ -26,13 +29,72 @@ const lastIndexedState = new Map();
26
29
  export function clearLastIndexedStateForTesting() {
27
30
  lastIndexedState.clear();
28
31
  }
32
+ /**
33
+ * The nearest ancestor that is a git checkout, or null if there is none.
34
+ *
35
+ * `.git` is a directory in a normal checkout and a FILE in a linked worktree or a submodule, so the
36
+ * test is existence, not `isDirectory` — the worktree case is precisely the one this needs to catch.
37
+ */
38
+ async function findEnclosingCheckout(absPath) {
39
+ let dir = dirname(absPath);
40
+ // Bounded: a pathological symlink loop must not turn a missing repo into an infinite walk.
41
+ for (let depth = 0; depth < 64; depth++) {
42
+ try {
43
+ await stat(join(dir, ".git"));
44
+ return dir;
45
+ }
46
+ catch {
47
+ // not here — keep climbing
48
+ }
49
+ const parent = dirname(dir);
50
+ if (parent === dir)
51
+ return null;
52
+ dir = parent;
53
+ }
54
+ return null;
55
+ }
56
+ /**
57
+ * The directory that makes this path one the walker would never have visited, or null.
58
+ *
59
+ * There are two doors into an index and only one of them had a filter. `walkDirectory` refuses
60
+ * `node_modules`, `vendor`, `dist` and every dot-directory; `indexFile` refused nothing, and the
61
+ * PostToolUse hook calls it after EVERY agent edit. So anything an agent touched went in, including
62
+ * files under directories the walk deliberately declines to enter.
63
+ *
64
+ * Measured on the live indexes: 3,067 files across 33 repositories under `.claude/worktrees/`,
65
+ * 1,911 of them in ResearchShieldNew alone — real parsed source (218 symbols in the largest) from
66
+ * throwaway per-agent checkouts that no longer exist on disk. They produced 29,000 lines of
67
+ * `failed to read indexed file` in a single day's log and stayed searchable long after deletion.
68
+ *
69
+ * Mirroring the walker rather than blocklisting `.claude` is the point: the rule is "the two doors
70
+ * agree", so node_modules and vendor stop leaking in by the same route, and a future exclusion
71
+ * needs adding in one place instead of two.
72
+ */
73
+ function walkerExcludedSegment(relPath) {
74
+ const segments = relPath.split(/[\\/]/);
75
+ // The last segment is the file. A dot-FILE is fine — `.eslintrc.json` is indexable; it is
76
+ // dot-DIRECTORIES the walker declines to descend into.
77
+ for (const segment of segments.slice(0, -1)) {
78
+ if (!segment || segment === ".")
79
+ continue;
80
+ if (IGNORE_DIRS.has(segment) || segment.startsWith("."))
81
+ return segment;
82
+ }
83
+ return null;
84
+ }
29
85
  /**
30
86
  * Re-index a single file instantly. Finds the repo by matching the file
31
87
  * path against indexed repo roots. Updates symbols, BM25 index, and
32
88
  * invalidates embedding cache — no full repo walk needed.
33
89
  */
34
90
  export async function indexFile(filePath) {
35
- const absPath = resolve(filePath);
91
+ // A relative path is resolved against THIS REQUEST's directory, not the process's. Under stdio the
92
+ // two are the same; under the shared daemon the process runs from `/` (launchd), so `resolve()`
93
+ // alone turned `apps/api/x.ts` into `/apps/api/x.ts` and every such call failed. Measured
94
+ // 2026-08-30: 20 of 36 calls in one 15-minute window, all of them the PostToolUse hook reporting
95
+ // an edit, all lost.
96
+ const fallbackStart = Date.now();
97
+ const absPath = isAbsolute(filePath) ? resolve(filePath) : resolve(currentCwd(), filePath);
36
98
  const config = loadConfig();
37
99
  const repos = await listRegistryRepos(config.registryPath);
38
100
  // Find the most specific repo root that contains this file
@@ -40,10 +102,68 @@ export async function indexFile(filePath) {
40
102
  .filter((r) => absPath.startsWith(r.root + "/") || absPath === r.root)
41
103
  .sort((a, b) => b.root.length - a.root.length)[0];
42
104
  if (!matchingRepo) {
43
- throw new Error(`No indexed repo contains "${absPath}". Run index_folder first.`);
105
+ // Name the real cause when there was one. `No indexed repo contains "/apps/api/x.ts"` is true
106
+ // and useless: the leading slash IS the diagnosis, and nobody reads it that way.
107
+ //
108
+ // Deliberately NOT guessed at: this same relative path exists under the main checkout and
109
+ // fifteen worktrees of it, so picking one would index the wrong tree — the exact confusion the
110
+ // `?cwd=` mechanism exists to prevent.
111
+ if (!isAbsolute(filePath) && !hasRequestContext()) {
112
+ throw new Error(`Cannot resolve relative path "${filePath}": this connection carries no working directory, ` +
113
+ `so it resolved to "${absPath}". Add ?cwd=<abs path> to the MCP server URL ` +
114
+ `(\`codesift setup <client> --http\` writes it), or pass an absolute path.`);
115
+ }
116
+ // Two very different situations reached this one throw, and lumping them together is what made
117
+ // index_file the noisiest tool in the telemetry: 147 errors in 801 calls over three days, 18.4%,
118
+ // every one of them with an empty `repo` field.
119
+ //
120
+ // The PostToolUse hook fires after EVERY Write/Edit an agent makes — scratchpad files, notes
121
+ // under ~/.claude, anything in /tmp. Those are not in a repository and never should be, so
122
+ // reporting a tool FAILURE for them is simply wrong: nothing was asked for and nothing is
123
+ // broken. It also trains agents to distrust a tool that is working.
124
+ //
125
+ // A file inside a real git checkout that nobody has indexed is the opposite case. There the
126
+ // index is silently going stale under an agent that thinks it is being kept current, which is
127
+ // the H19 failure in miniature — so that one stays an error, and now names the exact call.
128
+ const checkoutRoot = await findEnclosingCheckout(absPath);
129
+ if (checkoutRoot === null) {
130
+ return {
131
+ repo: "",
132
+ file: absPath,
133
+ symbol_count: 0,
134
+ duration_ms: Date.now() - fallbackStart,
135
+ skipped: true,
136
+ outside_indexed_repos: true,
137
+ };
138
+ }
139
+ throw new Error(`"${absPath}" is inside the git checkout "${checkoutRoot}", which is not indexed. ` +
140
+ `Run index_folder(path="${checkoutRoot}") once — for a linked worktree that is a FIRST ` +
141
+ `index, not a re-index, and until it runs every edit here is lost and searches answer ` +
142
+ `from the parent checkout instead.`);
44
143
  }
45
144
  const startTime = Date.now();
46
145
  const relPath = relative(matchingRepo.root, absPath);
146
+ // Refuse what the walk would have refused — and prune it if a previous run let it in. Purely
147
+ // refusing would leave the 3,067 already-indexed files searchable forever, since the throwaway
148
+ // checkouts they came from are deleted and nothing will ever touch them again; pruning on the
149
+ // way past means the index heals itself wherever an agent is still working.
150
+ const excludedBy = walkerExcludedSegment(relPath);
151
+ if (excludedBy !== null) {
152
+ const { removeFileFromIndex } = await import("../../storage/index-store.js");
153
+ await removeFileFromIndex(matchingRepo.index_path, relPath).catch(() => { });
154
+ const bm25 = bm25Indexes.get(matchingRepo.name);
155
+ if (bm25)
156
+ updateBM25ForFile(bm25, relPath, []);
157
+ lastIndexedState.delete(absPath);
158
+ return {
159
+ repo: matchingRepo.name,
160
+ file: relPath,
161
+ symbol_count: 0,
162
+ duration_ms: Date.now() - startTime,
163
+ skipped: true,
164
+ excluded_by: excludedBy,
165
+ };
166
+ }
47
167
  // If the changed file is a TS/JS config that drives path resolution, drop
48
168
  // caches so incremental indexing picks up new `paths` / `extends`.
49
169
  {
@@ -53,9 +173,41 @@ export async function indexFile(filePath) {
53
173
  clearTsconfigCache();
54
174
  }
55
175
  }
56
- // In-process short-circuit: mtime, then content hash. Both avoid loading
57
- // the on-disk index entirely (the expensive part on large repos).
58
- const st = await stat(absPath);
176
+ // A file that is GONE is a normal outcome here, not a fault: agents are told to call index_file
177
+ // after editing, and deleting or renaming a file is editing. Unguarded, `stat` escaped as a raw
178
+ // `ENOENT: no such file or directory, stat '<abs>'` — a Node-level string that names neither the
179
+ // repo nor what to do, and one of the three indistinguishable ~3ms failures behind index_file's
180
+ // 8.8% error rate.
181
+ //
182
+ // Worse, the index kept the deleted file's symbols. `handleFileDelete` lives in the WATCHER only,
183
+ // and the CLI hook (`codesift postindex-file`) is a fresh process with no watcher — so the path
184
+ // agents are actually told to use had no deletion branch at all, and stale symbols outlived the
185
+ // files they came from.
186
+ let st;
187
+ try {
188
+ st = await stat(absPath);
189
+ }
190
+ catch (err) {
191
+ if (err.code !== "ENOENT")
192
+ throw err;
193
+ const { removeFileFromIndex } = await import("../../storage/index-store.js");
194
+ await removeFileFromIndex(matchingRepo.index_path, relPath);
195
+ lastIndexedState.delete(absPath);
196
+ // A deletion is a swap with nothing to put back. Dropping the index here made `rm` as
197
+ // expensive as a reindex — measured on the live daemon at 28 s for one removed file against
198
+ // 0.08 s for an edit, on the same repository minutes apart.
199
+ const bm25AfterDelete = bm25Indexes.get(matchingRepo.name);
200
+ if (bm25AfterDelete)
201
+ updateBM25ForFile(bm25AfterDelete, relPath, []);
202
+ codeIndexes.delete(matchingRepo.name);
203
+ return {
204
+ repo: matchingRepo.name,
205
+ file: relPath,
206
+ symbol_count: 0,
207
+ duration_ms: Date.now() - startTime,
208
+ removed: true,
209
+ };
210
+ }
59
211
  const mem = lastIndexedState.get(absPath);
60
212
  if (mem && Math.round(st.mtimeMs) === mem.mtimeMs) {
61
213
  return {
@@ -119,15 +271,23 @@ export async function indexFile(filePath) {
119
271
  let secretFindingsCount = 0;
120
272
  if (config.secretScanEnabled) {
121
273
  try {
122
- secretFindingsCount = (await scanFileForSecrets(absPath, relPath, matchingRepo.name, result.symbols)).length;
274
+ secretFindingsCount = (await scanFileForSecrets(absPath, relPath, matchingRepo.name, () => result.symbols)).length;
123
275
  }
124
276
  catch (err) {
125
277
  const message = err instanceof Error ? err.message : String(err);
126
278
  console.warn(`[codesift] Secret scan failed for ${relPath}: ${message}`);
127
279
  }
128
280
  }
129
- // Invalidate caches — lazy rebuild on next query via getBM25Index()
130
- bm25Indexes.delete(matchingRepo.name);
281
+ // One file changed, so swap that file's symbols in the BM25 index instead of dropping it.
282
+ // Dropping it was cheap to write and expensive to run: the next search rebuilt the whole index
283
+ // (6.8 s on a 372k-symbol repository here), and this runs after EVERY agent edit — 952 times in
284
+ // a week — against an agent loop that is edit-then-search. `relPath` is the same
285
+ // `relative(root, absPath)` that parseOneFile stores on each symbol, so the two agree by
286
+ // construction.
287
+ const cachedBm25 = bm25Indexes.get(matchingRepo.name);
288
+ if (cachedBm25) {
289
+ updateBM25ForFile(cachedBm25, relPath, result.symbols);
290
+ }
131
291
  codeIndexes.delete(matchingRepo.name);
132
292
  invalidateEmbeddingCaches(matchingRepo.name);
133
293
  let secretsWarning;
@@ -162,11 +322,13 @@ export async function ensureIndexFresh(repoName) {
162
322
  const meta = await getRepo(config.registryPath, repoName);
163
323
  if (!meta)
164
324
  return { status: "skipped" };
325
+ // Asynchronous, and this is the call site where it matters most: `ensureIndexFresh` runs from
326
+ // `getCodeIndex`, i.e. on the path of EVERY repo-scoped tool. As `execFileSync` it stopped the
327
+ // whole shared daemon for as long as git took — up to 5 s here and 10 s for the diff below —
328
+ // once per repo per freshness interval, for every client on the machine.
165
329
  let currentCommit;
166
330
  try {
167
- currentCommit = execFileSync("git", ["rev-parse", "HEAD"], {
168
- cwd: meta.root, encoding: "utf-8", timeout: 5000,
169
- }).trim();
331
+ currentCommit = (await runGit(["rev-parse", "HEAD"], { cwd: meta.root, timeout: 5000 })).trim();
170
332
  }
171
333
  catch {
172
334
  freshnessChecked.set(repoName, Date.now());
@@ -180,12 +342,10 @@ export async function ensureIndexFresh(repoName) {
180
342
  let changedFiles = [];
181
343
  if (meta.last_git_commit) {
182
344
  try {
183
- const diff = execFileSync("git", [
345
+ const diff = await runGit([
184
346
  "diff", "--name-only", "--diff-filter=ACMR",
185
347
  `${meta.last_git_commit}..${currentCommit}`,
186
- ], {
187
- cwd: meta.root, encoding: "utf-8", timeout: 10_000,
188
- });
348
+ ], { cwd: meta.root, timeout: 10_000 });
189
349
  changedFiles = diff.trim().split("\n").filter(Boolean);
190
350
  }
191
351
  catch {
@@ -193,6 +353,7 @@ export async function ensureIndexFresh(repoName) {
193
353
  changedFiles = [];
194
354
  }
195
355
  }
356
+ let fullReindexRan = false;
196
357
  if (changedFiles.length > 0 && changedFiles.length <= MAX_DIFF_FILES) {
197
358
  for (const file of changedFiles) {
198
359
  try {
@@ -205,12 +366,17 @@ export async function ensureIndexFresh(repoName) {
205
366
  }
206
367
  else if (changedFiles.length > MAX_DIFF_FILES || !meta.last_git_commit) {
207
368
  await indexFolder(meta.root, { incremental: true, watch: false });
369
+ fullReindexRan = true;
208
370
  }
209
371
  await updateRepoMeta(config.registryPath, repoName, {
210
372
  last_git_commit: currentCommit,
211
373
  updated_at: Date.now(),
212
374
  });
213
- bm25Indexes.delete(repoName);
375
+ // Only a FULL reindex invalidates the BM25 index. The per-file branch above went through
376
+ // indexFile, which already swapped each changed file in — dropping the index here would undo
377
+ // exactly the work that was just done, one file at a time, and charge a full rebuild for it.
378
+ if (fullReindexRan)
379
+ bm25Indexes.delete(repoName);
214
380
  codeIndexes.delete(repoName);
215
381
  invalidateEmbeddingCaches(repoName);
216
382
  freshnessChecked.set(repoName, Date.now());