codesift-mcp 0.10.2 → 0.12.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 (389) hide show
  1. package/dist/cache/hono-cache.d.ts.map +1 -1
  2. package/dist/cli/commands.d.ts.map +1 -1
  3. package/dist/cli/commands.js +91 -6
  4. package/dist/cli/commands.js.map +1 -1
  5. package/dist/cli/embed-child.js +3 -0
  6. package/dist/cli/embed-child.js.map +1 -1
  7. package/dist/cli/git-hooks-installer.js.map +1 -1
  8. package/dist/cli/help.d.ts +1 -1
  9. package/dist/cli/help.d.ts.map +1 -1
  10. package/dist/cli/help.js +22 -0
  11. package/dist/cli/help.js.map +1 -1
  12. package/dist/cli/hooks/pre-tool-use.d.ts.map +1 -1
  13. package/dist/cli/hooks/pre-tool-use.js +182 -7
  14. package/dist/cli/hooks/pre-tool-use.js.map +1 -1
  15. package/dist/cli/hooks/shared.d.ts.map +1 -1
  16. package/dist/cli/hooks/shared.js +6 -1
  17. package/dist/cli/hooks/shared.js.map +1 -1
  18. package/dist/cli/orphan-guard.d.ts +34 -0
  19. package/dist/cli/orphan-guard.d.ts.map +1 -0
  20. package/dist/cli/orphan-guard.js +52 -0
  21. package/dist/cli/orphan-guard.js.map +1 -0
  22. package/dist/cli/service.d.ts +133 -0
  23. package/dist/cli/service.d.ts.map +1 -0
  24. package/dist/cli/service.js +317 -0
  25. package/dist/cli/service.js.map +1 -0
  26. package/dist/cli/setup/codex.js +1 -1
  27. package/dist/cli/setup/codex.js.map +1 -1
  28. package/dist/cli/setup/fs.js.map +1 -1
  29. package/dist/cli/setup/mcp.d.ts +24 -1
  30. package/dist/cli/setup/mcp.d.ts.map +1 -1
  31. package/dist/cli/setup/mcp.js +33 -5
  32. package/dist/cli/setup/mcp.js.map +1 -1
  33. package/dist/cli/setup/types.d.ts +5 -0
  34. package/dist/cli/setup/types.d.ts.map +1 -1
  35. package/dist/cli/setup.d.ts.map +1 -1
  36. package/dist/cli/telemetry-commands.js.map +1 -1
  37. package/dist/cli.js.map +1 -1
  38. package/dist/config.d.ts +2 -0
  39. package/dist/config.d.ts.map +1 -1
  40. package/dist/config.js +5 -0
  41. package/dist/config.js.map +1 -1
  42. package/dist/formatter-dispatch.d.ts.map +1 -1
  43. package/dist/instructions.d.ts +1 -1
  44. package/dist/instructions.d.ts.map +1 -1
  45. package/dist/instructions.js +1 -0
  46. package/dist/instructions.js.map +1 -1
  47. package/dist/lsp/lsp-client.d.ts.map +1 -1
  48. package/dist/lsp/lsp-client.js.map +1 -1
  49. package/dist/lsp/lsp-manager.d.ts.map +1 -1
  50. package/dist/lsp/lsp-tools.d.ts.map +1 -1
  51. package/dist/lsp/lsp-tools.js +21 -1
  52. package/dist/lsp/lsp-tools.js.map +1 -1
  53. package/dist/parser/astro-template/state.d.ts.map +1 -1
  54. package/dist/parser/extractors/_shared.d.ts +4 -4
  55. package/dist/parser/extractors/_shared.d.ts.map +1 -1
  56. package/dist/parser/extractors/_shared.js.map +1 -1
  57. package/dist/parser/extractors/conversation.js.map +1 -1
  58. package/dist/parser/extractors/go.d.ts +2 -2
  59. package/dist/parser/extractors/go.d.ts.map +1 -1
  60. package/dist/parser/extractors/go.js.map +1 -1
  61. package/dist/parser/extractors/gradle-kts.d.ts +2 -2
  62. package/dist/parser/extractors/gradle-kts.d.ts.map +1 -1
  63. package/dist/parser/extractors/gradle-kts.js.map +1 -1
  64. package/dist/parser/extractors/hono-app-discovery.d.ts +2 -2
  65. package/dist/parser/extractors/hono-app-discovery.d.ts.map +1 -1
  66. package/dist/parser/extractors/hono-app-discovery.js.map +1 -1
  67. package/dist/parser/extractors/hono-ast-utils.d.ts +4 -4
  68. package/dist/parser/extractors/hono-ast-utils.d.ts.map +1 -1
  69. package/dist/parser/extractors/hono-ast-utils.js.map +1 -1
  70. package/dist/parser/extractors/hono-context-extractor.d.ts +2 -2
  71. package/dist/parser/extractors/hono-context-extractor.d.ts.map +1 -1
  72. package/dist/parser/extractors/hono-context-extractor.js.map +1 -1
  73. package/dist/parser/extractors/hono-inline-analyzer.d.ts +2 -2
  74. package/dist/parser/extractors/hono-inline-analyzer.d.ts.map +1 -1
  75. package/dist/parser/extractors/hono-inline-analyzer.js.map +1 -1
  76. package/dist/parser/extractors/hono-middleware-extractor.d.ts +2 -2
  77. package/dist/parser/extractors/hono-middleware-extractor.d.ts.map +1 -1
  78. package/dist/parser/extractors/hono-middleware-extractor.js.map +1 -1
  79. package/dist/parser/extractors/hono-openapi-extractor.d.ts +2 -2
  80. package/dist/parser/extractors/hono-openapi-extractor.d.ts.map +1 -1
  81. package/dist/parser/extractors/hono-openapi-extractor.js.map +1 -1
  82. package/dist/parser/extractors/hono-route-extractor.d.ts +2 -2
  83. package/dist/parser/extractors/hono-route-extractor.d.ts.map +1 -1
  84. package/dist/parser/extractors/hono-route-extractor.js.map +1 -1
  85. package/dist/parser/extractors/hono-route-utils.d.ts +2 -2
  86. package/dist/parser/extractors/hono-route-utils.d.ts.map +1 -1
  87. package/dist/parser/extractors/hono-route-utils.js.map +1 -1
  88. package/dist/parser/extractors/hono-runtime-extractor.d.ts +2 -2
  89. package/dist/parser/extractors/hono-runtime-extractor.d.ts.map +1 -1
  90. package/dist/parser/extractors/hono-runtime-extractor.js.map +1 -1
  91. package/dist/parser/extractors/hono.d.ts.map +1 -1
  92. package/dist/parser/extractors/hono.js.map +1 -1
  93. package/dist/parser/extractors/javascript.d.ts +2 -2
  94. package/dist/parser/extractors/javascript.d.ts.map +1 -1
  95. package/dist/parser/extractors/javascript.js.map +1 -1
  96. package/dist/parser/extractors/kotlin-ast-helpers.d.ts +9 -9
  97. package/dist/parser/extractors/kotlin-ast-helpers.d.ts.map +1 -1
  98. package/dist/parser/extractors/kotlin-ast-helpers.js.map +1 -1
  99. package/dist/parser/extractors/kotlin-test-symbols.d.ts +4 -4
  100. package/dist/parser/extractors/kotlin-test-symbols.d.ts.map +1 -1
  101. package/dist/parser/extractors/kotlin-test-symbols.js.map +1 -1
  102. package/dist/parser/extractors/kotlin.d.ts +2 -2
  103. package/dist/parser/extractors/kotlin.d.ts.map +1 -1
  104. package/dist/parser/extractors/kotlin.js.map +1 -1
  105. package/dist/parser/extractors/php.d.ts +2 -2
  106. package/dist/parser/extractors/php.d.ts.map +1 -1
  107. package/dist/parser/extractors/php.js.map +1 -1
  108. package/dist/parser/extractors/python.d.ts +2 -2
  109. package/dist/parser/extractors/python.d.ts.map +1 -1
  110. package/dist/parser/extractors/python.js.map +1 -1
  111. package/dist/parser/extractors/rust.d.ts +2 -2
  112. package/dist/parser/extractors/rust.d.ts.map +1 -1
  113. package/dist/parser/extractors/rust.js.map +1 -1
  114. package/dist/parser/extractors/sql-boundaries.js.map +1 -1
  115. package/dist/parser/extractors/typescript-cjs-nodes.d.ts +3 -3
  116. package/dist/parser/extractors/typescript-cjs-nodes.d.ts.map +1 -1
  117. package/dist/parser/extractors/typescript-cjs-nodes.js.map +1 -1
  118. package/dist/parser/extractors/typescript-class-nodes.d.ts +6 -6
  119. package/dist/parser/extractors/typescript-class-nodes.d.ts.map +1 -1
  120. package/dist/parser/extractors/typescript-class-nodes.js.map +1 -1
  121. package/dist/parser/extractors/typescript-declaration-nodes.d.ts +3 -3
  122. package/dist/parser/extractors/typescript-declaration-nodes.d.ts.map +1 -1
  123. package/dist/parser/extractors/typescript-declaration-nodes.js.map +1 -1
  124. package/dist/parser/extractors/typescript-module-nodes.d.ts +4 -4
  125. package/dist/parser/extractors/typescript-module-nodes.d.ts.map +1 -1
  126. package/dist/parser/extractors/typescript-module-nodes.js.map +1 -1
  127. package/dist/parser/extractors/typescript-react.d.ts +6 -6
  128. package/dist/parser/extractors/typescript-react.d.ts.map +1 -1
  129. package/dist/parser/extractors/typescript-react.js.map +1 -1
  130. package/dist/parser/extractors/typescript-shared.d.ts +8 -8
  131. package/dist/parser/extractors/typescript-shared.d.ts.map +1 -1
  132. package/dist/parser/extractors/typescript-shared.js.map +1 -1
  133. package/dist/parser/extractors/typescript-test-nodes.d.ts +2 -2
  134. package/dist/parser/extractors/typescript-test-nodes.d.ts.map +1 -1
  135. package/dist/parser/extractors/typescript-test-nodes.js.map +1 -1
  136. package/dist/parser/extractors/typescript-type-nodes.d.ts +4 -4
  137. package/dist/parser/extractors/typescript-type-nodes.d.ts.map +1 -1
  138. package/dist/parser/extractors/typescript-type-nodes.js.map +1 -1
  139. package/dist/parser/extractors/typescript.d.ts +2 -2
  140. package/dist/parser/extractors/typescript.d.ts.map +1 -1
  141. package/dist/parser/extractors/typescript.js.map +1 -1
  142. package/dist/parser/parse-cache.d.ts +3 -3
  143. package/dist/parser/parse-cache.d.ts.map +1 -1
  144. package/dist/parser/parse-cache.js.map +1 -1
  145. package/dist/parser/parser-manager.d.ts +3 -2
  146. package/dist/parser/parser-manager.d.ts.map +1 -1
  147. package/dist/parser/parser-manager.js +9 -3
  148. package/dist/parser/parser-manager.js.map +1 -1
  149. package/dist/parser/parser-pool.js.map +1 -1
  150. package/dist/parser/symbol-extractor.d.ts +2 -2
  151. package/dist/parser/symbol-extractor.d.ts.map +1 -1
  152. package/dist/parser/symbol-extractor.js.map +1 -1
  153. package/dist/register-tool-groups/handler-wrappers.d.ts.map +1 -1
  154. package/dist/register-tool-groups/handler-wrappers.js +20 -6
  155. package/dist/register-tool-groups/handler-wrappers.js.map +1 -1
  156. package/dist/register-tool-groups/meta.js.map +1 -1
  157. package/dist/register-tool-groups/shared.d.ts.map +1 -1
  158. package/dist/register-tools/discovery.d.ts +18 -0
  159. package/dist/register-tools/discovery.d.ts.map +1 -1
  160. package/dist/register-tools/discovery.js +63 -0
  161. package/dist/register-tools/discovery.js.map +1 -1
  162. package/dist/register-tools/runtime.d.ts +3 -3
  163. package/dist/register-tools/runtime.d.ts.map +1 -1
  164. package/dist/register-tools/runtime.js +24 -8
  165. package/dist/register-tools/runtime.js.map +1 -1
  166. package/dist/register-tools.d.ts +32 -2
  167. package/dist/register-tools.d.ts.map +1 -1
  168. package/dist/register-tools.js +88 -12
  169. package/dist/register-tools.js.map +1 -1
  170. package/dist/retrieval/codebase-retrieval.js.map +1 -1
  171. package/dist/retrieval/retrieval-schemas.d.ts +13 -13
  172. package/dist/search/semantic.d.ts +6 -4
  173. package/dist/search/semantic.d.ts.map +1 -1
  174. package/dist/search/semantic.js +54 -31
  175. package/dist/search/semantic.js.map +1 -1
  176. package/dist/search/static-embedding-provider.d.ts.map +1 -1
  177. package/dist/search/static-embedding-provider.js.map +1 -1
  178. package/dist/search/tool-embedding-storage.d.ts.map +1 -1
  179. package/dist/search/tool-embedding-storage.js +5 -1
  180. package/dist/search/tool-embedding-storage.js.map +1 -1
  181. package/dist/server-helpers/repo-resolution.d.ts +18 -4
  182. package/dist/server-helpers/repo-resolution.d.ts.map +1 -1
  183. package/dist/server-helpers/repo-resolution.js +72 -12
  184. package/dist/server-helpers/repo-resolution.js.map +1 -1
  185. package/dist/server-helpers/request-context.d.ts +59 -0
  186. package/dist/server-helpers/request-context.d.ts.map +1 -0
  187. package/dist/server-helpers/request-context.js +31 -0
  188. package/dist/server-helpers/request-context.js.map +1 -0
  189. package/dist/server-helpers/response-hints.d.ts.map +1 -1
  190. package/dist/server-helpers/response-hints.js +42 -0
  191. package/dist/server-helpers/response-hints.js.map +1 -1
  192. package/dist/server.d.ts +1 -11
  193. package/dist/server.d.ts.map +1 -1
  194. package/dist/server.js +97 -70
  195. package/dist/server.js.map +1 -1
  196. package/dist/storage/_shared.d.ts +15 -0
  197. package/dist/storage/_shared.d.ts.map +1 -1
  198. package/dist/storage/_shared.js +39 -2
  199. package/dist/storage/_shared.js.map +1 -1
  200. package/dist/storage/chunk-store.d.ts.map +1 -1
  201. package/dist/storage/chunk-store.js +38 -6
  202. package/dist/storage/chunk-store.js.map +1 -1
  203. package/dist/storage/embedding-store.d.ts +14 -5
  204. package/dist/storage/embedding-store.d.ts.map +1 -1
  205. package/dist/storage/embedding-store.js +48 -3
  206. package/dist/storage/embedding-store.js.map +1 -1
  207. package/dist/storage/index-store.d.ts +2 -0
  208. package/dist/storage/index-store.d.ts.map +1 -1
  209. package/dist/storage/index-store.js +101 -22
  210. package/dist/storage/index-store.js.map +1 -1
  211. package/dist/storage/registry.d.ts.map +1 -1
  212. package/dist/storage/registry.js +48 -19
  213. package/dist/storage/registry.js.map +1 -1
  214. package/dist/storage/telemetry/env-profile.js.map +1 -1
  215. package/dist/storage/usage-tracker.d.ts +13 -0
  216. package/dist/storage/usage-tracker.d.ts.map +1 -1
  217. package/dist/storage/usage-tracker.js +58 -4
  218. package/dist/storage/usage-tracker.js.map +1 -1
  219. package/dist/tools/agent-config-tools.js.map +1 -1
  220. package/dist/tools/ast-query-tools.d.ts.map +1 -1
  221. package/dist/tools/ast-query-tools.js +12 -2
  222. package/dist/tools/ast-query-tools.js.map +1 -1
  223. package/dist/tools/astro-actions/ast.d.ts +7 -7
  224. package/dist/tools/astro-actions/ast.d.ts.map +1 -1
  225. package/dist/tools/astro-actions/ast.js.map +1 -1
  226. package/dist/tools/astro-actions/parser.d.ts.map +1 -1
  227. package/dist/tools/astro-actions/parser.js +3 -0
  228. package/dist/tools/astro-actions/parser.js.map +1 -1
  229. package/dist/tools/astro-actions/types.d.ts.map +1 -1
  230. package/dist/tools/astro-actions/zod-ast.d.ts +3 -3
  231. package/dist/tools/astro-actions/zod-ast.d.ts.map +1 -1
  232. package/dist/tools/astro-actions/zod-ast.js.map +1 -1
  233. package/dist/tools/astro-audit.js.map +1 -1
  234. package/dist/tools/astro-config.d.ts.map +1 -1
  235. package/dist/tools/astro-config.js +3 -0
  236. package/dist/tools/astro-config.js.map +1 -1
  237. package/dist/tools/astro-content-collections/discovery.d.ts +2 -2
  238. package/dist/tools/astro-content-collections/discovery.d.ts.map +1 -1
  239. package/dist/tools/astro-content-collections/discovery.js.map +1 -1
  240. package/dist/tools/astro-content-collections/schema.d.ts +2 -2
  241. package/dist/tools/astro-content-collections/schema.d.ts.map +1 -1
  242. package/dist/tools/astro-content-collections/schema.js.map +1 -1
  243. package/dist/tools/astro-content-collections.d.ts.map +1 -1
  244. package/dist/tools/astro-content-collections.js +5 -1
  245. package/dist/tools/astro-content-collections.js.map +1 -1
  246. package/dist/tools/astro-db-audit.d.ts.map +1 -1
  247. package/dist/tools/astro-db-audit.js +8 -0
  248. package/dist/tools/astro-db-audit.js.map +1 -1
  249. package/dist/tools/astro-db-parser.d.ts.map +1 -1
  250. package/dist/tools/astro-db-parser.js +3 -0
  251. package/dist/tools/astro-db-parser.js.map +1 -1
  252. package/dist/tools/astro-env-validator.d.ts.map +1 -1
  253. package/dist/tools/astro-env-validator.js +4 -0
  254. package/dist/tools/astro-env-validator.js.map +1 -1
  255. package/dist/tools/astro-helpers.d.ts +6 -6
  256. package/dist/tools/astro-helpers.d.ts.map +1 -1
  257. package/dist/tools/astro-helpers.js.map +1 -1
  258. package/dist/tools/astro-middleware.d.ts.map +1 -1
  259. package/dist/tools/astro-middleware.js +4 -0
  260. package/dist/tools/astro-middleware.js.map +1 -1
  261. package/dist/tools/astro-sessions.d.ts.map +1 -1
  262. package/dist/tools/astro-sessions.js +4 -0
  263. package/dist/tools/astro-sessions.js.map +1 -1
  264. package/dist/tools/complexity-tools.d.ts.map +1 -1
  265. package/dist/tools/complexity-tools.js +51 -15
  266. package/dist/tools/complexity-tools.js.map +1 -1
  267. package/dist/tools/context-tools.js.map +1 -1
  268. package/dist/tools/cross-repo-outbound-lexer/context.d.ts.map +1 -1
  269. package/dist/tools/cross-repo-outbound-lexer/context.js.map +1 -1
  270. package/dist/tools/dependency-audit-lockfile-tools.js.map +1 -1
  271. package/dist/tools/hono-api-contract.js.map +1 -1
  272. package/dist/tools/hono-visualize.js.map +1 -1
  273. package/dist/tools/index-shared.d.ts.map +1 -1
  274. package/dist/tools/index-tools/folder-indexer.d.ts.map +1 -1
  275. package/dist/tools/index-tools/folder-indexer.js +29 -1
  276. package/dist/tools/index-tools/folder-indexer.js.map +1 -1
  277. package/dist/tools/index-tools/folder-merge.d.ts.map +1 -1
  278. package/dist/tools/index-tools/folder-merge.js +47 -1
  279. package/dist/tools/index-tools/folder-merge.js.map +1 -1
  280. package/dist/tools/index-tools/parse.d.ts.map +1 -1
  281. package/dist/tools/index-tools/parse.js +6 -2
  282. package/dist/tools/index-tools/parse.js.map +1 -1
  283. package/dist/tools/index-tools/registry.d.ts.map +1 -1
  284. package/dist/tools/index-tools/registry.js +32 -2
  285. package/dist/tools/index-tools/registry.js.map +1 -1
  286. package/dist/tools/index-tools/snapshots.js.map +1 -1
  287. package/dist/tools/index-tools/types.d.ts +7 -0
  288. package/dist/tools/index-tools/types.d.ts.map +1 -1
  289. package/dist/tools/insights-tools.js.map +1 -1
  290. package/dist/tools/journal-generator-helpers.d.ts.map +1 -1
  291. package/dist/tools/journal-generator-helpers.js.map +1 -1
  292. package/dist/tools/journal-git-client.js.map +1 -1
  293. package/dist/tools/journal-llm-client.d.ts.map +1 -1
  294. package/dist/tools/journal-llm-client.js.map +1 -1
  295. package/dist/tools/journal-migrator.d.ts.map +1 -1
  296. package/dist/tools/journal-phase-detector.d.ts.map +1 -1
  297. package/dist/tools/journal-sentinel.d.ts.map +1 -1
  298. package/dist/tools/nest-audit-tools.js.map +1 -1
  299. package/dist/tools/nest-ext-tools.js.map +1 -1
  300. package/dist/tools/nextjs-api-contract-readers.d.ts +5 -5
  301. package/dist/tools/nextjs-api-contract-readers.d.ts.map +1 -1
  302. package/dist/tools/nextjs-api-contract-readers.js.map +1 -1
  303. package/dist/tools/nextjs-boundary-tools.d.ts +2 -2
  304. package/dist/tools/nextjs-boundary-tools.d.ts.map +1 -1
  305. package/dist/tools/nextjs-boundary-tools.js.map +1 -1
  306. package/dist/tools/nextjs-component-readers.d.ts +3 -3
  307. package/dist/tools/nextjs-component-readers.d.ts.map +1 -1
  308. package/dist/tools/nextjs-component-readers.js.map +1 -1
  309. package/dist/tools/nextjs-framework-audit-tools.js.map +1 -1
  310. package/dist/tools/nextjs-metadata-tools.d.ts.map +1 -1
  311. package/dist/tools/nextjs-route-readers.d.ts +2 -2
  312. package/dist/tools/nextjs-route-readers.d.ts.map +1 -1
  313. package/dist/tools/nextjs-route-readers.js.map +1 -1
  314. package/dist/tools/nextjs-security-readers.d.ts +6 -6
  315. package/dist/tools/nextjs-security-readers.d.ts.map +1 -1
  316. package/dist/tools/nextjs-security-readers.js.map +1 -1
  317. package/dist/tools/pg-introspection.js.map +1 -1
  318. package/dist/tools/php-active-record-tools.js.map +1 -1
  319. package/dist/tools/php-view-tools.js.map +1 -1
  320. package/dist/tools/plan-turn/orchestrator.d.ts.map +1 -1
  321. package/dist/tools/plan-turn/orchestrator.js +14 -4
  322. package/dist/tools/plan-turn/orchestrator.js.map +1 -1
  323. package/dist/tools/plan-turn/recommendations.js +2 -2
  324. package/dist/tools/plan-turn/recommendations.js.map +1 -1
  325. package/dist/tools/project-profile-extractors.js.map +1 -1
  326. package/dist/tools/project-tools.d.ts.map +1 -1
  327. package/dist/tools/project-tools.js.map +1 -1
  328. package/dist/tools/pydantic-models.js.map +1 -1
  329. package/dist/tools/python-audit/aggregate.js.map +1 -1
  330. package/dist/tools/python-circular-imports.d.ts.map +1 -1
  331. package/dist/tools/python-circular-imports.js +3 -0
  332. package/dist/tools/python-circular-imports.js.map +1 -1
  333. package/dist/tools/python-constants-tools.d.ts.map +1 -1
  334. package/dist/tools/python-constants-tools.js +14 -0
  335. package/dist/tools/python-constants-tools.js.map +1 -1
  336. package/dist/tools/query-tools.js.map +1 -1
  337. package/dist/tools/review-diff/constants.d.ts.map +1 -1
  338. package/dist/tools/search-tools/ripgrep.d.ts.map +1 -1
  339. package/dist/tools/search-tools/ripgrep.js +32 -2
  340. package/dist/tools/search-tools/ripgrep.js.map +1 -1
  341. package/dist/tools/search-tools/text-search.js.map +1 -1
  342. package/dist/tools/taint-tools.d.ts.map +1 -1
  343. package/dist/tools/taint-tools.js +4 -0
  344. package/dist/tools/taint-tools.js.map +1 -1
  345. package/dist/tools/typescript-constants-tools.d.ts.map +1 -1
  346. package/dist/tools/typescript-constants-tools.js +14 -0
  347. package/dist/tools/typescript-constants-tools.js.map +1 -1
  348. package/dist/tools/wiki-manifest.js.map +1 -1
  349. package/dist/tools/workspace-tools.d.ts.map +1 -1
  350. package/dist/tools/yii-migrations-tools.js.map +1 -1
  351. package/dist/tools/yii-modules-tools.js.map +1 -1
  352. package/dist/utils/git-head.js.map +1 -1
  353. package/dist/utils/git-validation.d.ts.map +1 -1
  354. package/dist/utils/import-graph.d.ts.map +1 -1
  355. package/dist/utils/import-graph.js +10 -0
  356. package/dist/utils/import-graph.js.map +1 -1
  357. package/dist/utils/language-detect.d.ts.map +1 -1
  358. package/dist/utils/language-detect.js +6 -3
  359. package/dist/utils/language-detect.js.map +1 -1
  360. package/dist/utils/nextjs-ast-readers.d.ts +3 -3
  361. package/dist/utils/nextjs-ast-readers.d.ts.map +1 -1
  362. package/dist/utils/nextjs-ast-readers.js.map +1 -1
  363. package/dist/utils/nextjs-audit-cache.d.ts +3 -3
  364. package/dist/utils/nextjs-audit-cache.d.ts.map +1 -1
  365. package/dist/utils/nextjs-audit-cache.js.map +1 -1
  366. package/dist/utils/nextjs-metadata-readers.d.ts +4 -4
  367. package/dist/utils/nextjs-metadata-readers.d.ts.map +1 -1
  368. package/dist/utils/nextjs-metadata-readers.js.map +1 -1
  369. package/dist/utils/overlay-cache.d.ts.map +1 -1
  370. package/dist/utils/overlay-cache.js.map +1 -1
  371. package/dist/utils/python-imports.d.ts +2 -2
  372. package/dist/utils/python-imports.d.ts.map +1 -1
  373. package/dist/utils/python-imports.js.map +1 -1
  374. package/dist/utils/ts-imports.d.ts +2 -2
  375. package/dist/utils/ts-imports.d.ts.map +1 -1
  376. package/dist/utils/ts-imports.js.map +1 -1
  377. package/dist/utils/walk/filters.d.ts.map +1 -1
  378. package/dist/utils/walk/filters.js +22 -1
  379. package/dist/utils/walk/filters.js.map +1 -1
  380. package/dist/utils/walk/limits.d.ts.map +1 -1
  381. package/dist/utils/worktree.d.ts +60 -0
  382. package/dist/utils/worktree.d.ts.map +1 -0
  383. package/dist/utils/worktree.js +170 -0
  384. package/dist/utils/worktree.js.map +1 -0
  385. package/package.json +13 -7
  386. package/rules/codesift.md +5 -1
  387. package/rules/codesift.mdc +5 -1
  388. package/rules/codex.md +5 -1
  389. package/rules/gemini.md +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-store.d.ts","sourceRoot":"","sources":["../../src/storage/chunk-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AA4BD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC,CAcf;AAiCD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,CAMxC;AAWD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CAQf;AAQD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,CAM3C"}
1
+ {"version":3,"file":"chunk-store.d.ts","sourceRoot":"","sources":["../../src/storage/chunk-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AA4BD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC,CAcf;AAiCD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,CAMxC;AAWD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CAmCf;AAQD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,CAM3C"}
@@ -1,5 +1,5 @@
1
1
  import { readFile } from "node:fs/promises";
2
- import { atomicWriteFile } from "./_shared.js";
2
+ import { atomicWriteFile, cleanupOrphanTempFiles } from "./_shared.js";
3
3
  // ---------------------------------------------------------------------------
4
4
  // Path helpers
5
5
  // ---------------------------------------------------------------------------
@@ -82,12 +82,44 @@ export async function loadChunks(chunkPath) {
82
82
  * File: ~/.codesift/{hash}.chunk-embeddings.ndjson
83
83
  */
84
84
  export async function saveChunkEmbeddings(embeddingPath, embeddings) {
85
- const lines = [];
86
- for (const [id, vec] of embeddings) {
87
- lines.push(JSON.stringify({ id, vec: Array.from(vec) }));
85
+ // Stream line-by-line. The previous version built one big `lines.join("\n")`
86
+ // string, which threw `RangeError: Invalid string length` once the combined
87
+ // ndjson exceeded V8's max string length (~512 MB) — a repo with enough chunks
88
+ // (e.g. TGMQuotas, ~27K) silently failed its entire chunk-embedding save with
89
+ // exit 0 and no chunk file, so semantic search stayed symbol-only there. This
90
+ // mirrors saveEmbeddings, which already streams for the same reason.
91
+ // Same orphan sweep as saveEmbeddings — a killed process leaves these behind.
92
+ await cleanupOrphanTempFiles(embeddingPath);
93
+ const tmpPath = `${embeddingPath}.tmp.${Date.now()}`;
94
+ const { createWriteStream } = await import("node:fs");
95
+ const stream = createWriteStream(tmpPath, { encoding: "utf-8" });
96
+ let streamError = null;
97
+ stream.on("error", (err) => { streamError = err; });
98
+ try {
99
+ for (const [id, vec] of embeddings) {
100
+ if (streamError)
101
+ throw streamError;
102
+ const line = JSON.stringify({ id, vec: Array.from(vec) }) + "\n";
103
+ if (!stream.write(line)) {
104
+ await new Promise((resolve) => stream.once("drain", resolve));
105
+ }
106
+ }
107
+ if (streamError)
108
+ throw streamError;
109
+ await new Promise((resolve, reject) => {
110
+ stream.end(() => streamError ? reject(streamError) : resolve());
111
+ });
112
+ const { rename } = await import("node:fs/promises");
113
+ await rename(tmpPath, embeddingPath);
114
+ }
115
+ catch (err) {
116
+ try {
117
+ const { unlink } = await import("node:fs/promises");
118
+ await unlink(tmpPath);
119
+ }
120
+ catch { /* ignore */ }
121
+ throw err;
88
122
  }
89
- const data = lines.join("\n") + "\n";
90
- await atomicWriteFile(embeddingPath, data);
91
123
  }
92
124
  function isChunkEmbeddingLine(parsed) {
93
125
  return typeof parsed === "object" && parsed !== null &&
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-store.js","sourceRoot":"","sources":["../../src/storage/chunk-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chunk-store.js","sourceRoot":"","sources":["../../src/storage/chunk-store.ts"],"names":[],"mappings":"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"}
@@ -9,16 +9,14 @@ export declare function getEmbeddingPath(indexPath: string): string;
9
9
  * {hash}.index.json → {hash}.embeddings.meta.json
10
10
  */
11
11
  export declare function getEmbeddingMetaPath(indexPath: string): string;
12
- /**
13
- * Load all embeddings from an ndjson file.
14
- * Returns a Map of symbolId → Float32Array vector.
15
- */
12
+ /** Content hashes that came with the vectors at `embeddingPath`, if any. */
13
+ export declare function contentHashesForPath(embeddingPath: string): Map<string, number>;
16
14
  export declare function loadEmbeddings(embeddingPath: string, maxBytes?: number): Promise<Map<string, Float32Array>>;
17
15
  /**
18
16
  * Save all embeddings to an ndjson file using streaming writes.
19
17
  * Avoids building a single huge string (30K+ symbols × 1536 floats = >300MB).
20
18
  */
21
- export declare function saveEmbeddings(embeddingPath: string, embeddings: Map<string, Float32Array>): Promise<void>;
19
+ export declare function saveEmbeddings(embeddingPath: string, embeddings: Map<string, Float32Array>, hashes?: ReadonlyMap<string, number>): Promise<void>;
22
20
  /**
23
21
  * Save embedding metadata atomically.
24
22
  */
@@ -28,6 +26,17 @@ export declare function saveEmbeddingMeta(metaPath: string, meta: EmbeddingMeta)
28
26
  * Returns null if not found or invalid.
29
27
  */
30
28
  export declare function loadEmbeddingMeta(metaPath: string): Promise<EmbeddingMeta | null>;
29
+ /**
30
+ * Seed the in-process hash map for `cacheKey` from what was persisted.
31
+ *
32
+ * This map used to start empty on every process, so `hashes.get(id)` was always
33
+ * undefined, every symbol compared as changed, and the entire corpus was
34
+ * re-embedded on each MCP server start — 4.18M symbols across 1,587 repos, and
35
+ * servers restart once per session.
36
+ */
37
+ export declare function primeContentHashes(cacheKey: string, hashes: ReadonlyMap<string, number>): void;
38
+ /** Hashes currently known for `cacheKey`, for persisting beside the vectors. */
39
+ export declare function contentHashesFor(cacheKey: string): ReadonlyMap<string, number>;
31
40
  /**
32
41
  * Batch-embed symbols using the given provider, appending to existing embeddings.
33
42
  * Skips symbols whose ID exists AND content hash hasn't changed.
@@ -1 +1 @@
1
- {"version":3,"file":"embedding-store.d.ts","sourceRoot":"","sources":["../../src/storage/embedding-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9D;AAOD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,QAAQ,GAAE,MAAiC,GAC1C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CA0FpC;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAgB/B;AAeD;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACnC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EACjD,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CA2CpC"}
1
+ {"version":3,"file":"embedding-store.d.ts","sourceRoot":"","sources":["../../src/storage/embedding-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9D;AAkCD,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAE/E;AAED,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,QAAQ,GAAE,MAAiC,GAC1C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAgGpC;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAgB/B;AAeD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAK9F;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAE9E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACnC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EACjD,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CA2CpC"}
@@ -1,5 +1,5 @@
1
1
  import { readFile } from "node:fs/promises";
2
- import { atomicWriteFile } from "./_shared.js";
2
+ import { atomicWriteFile, cleanupOrphanTempFiles } from "./_shared.js";
3
3
  /**
4
4
  * Get the embedding file path from an index path.
5
5
  * {hash}.index.json → {hash}.embeddings.ndjson
@@ -18,8 +18,22 @@ export function getEmbeddingMetaPath(indexPath) {
18
18
  * Load all embeddings from an ndjson file.
19
19
  * Returns a Map of symbolId → Float32Array vector.
20
20
  */
21
+ /**
22
+ * Content hashes read alongside the vectors on the last load of a given path.
23
+ *
24
+ * Keyed by path rather than repo name because that is what the loader knows.
25
+ * Populated as a side effect of `loadEmbeddings` — the data is already on the
26
+ * line, so collecting it costs nothing extra.
27
+ */
28
+ const loadedContentHashes = new Map();
29
+ /** Content hashes that came with the vectors at `embeddingPath`, if any. */
30
+ export function contentHashesForPath(embeddingPath) {
31
+ return loadedContentHashes.get(embeddingPath) ?? new Map();
32
+ }
21
33
  export async function loadEmbeddings(embeddingPath, maxBytes = Number.POSITIVE_INFINITY) {
22
34
  const embeddings = new Map();
35
+ const hashes = new Map();
36
+ loadedContentHashes.set(embeddingPath, hashes);
23
37
  // Stream line-by-line rather than readFile-ing the whole file into one string:
24
38
  // embedding files are GB-scale (e.g. 4.5GB), so a single slurp spikes the heap
25
39
  // by the full file size at load. readline keeps peak memory to one line plus
@@ -86,12 +100,17 @@ export async function loadEmbeddings(embeddingPath, maxBytes = Number.POSITIVE_I
86
100
  if (residentBytes > maxBytes) {
87
101
  overBudget = true;
88
102
  embeddings.clear();
103
+ // Hashes describe vectors we are dropping; keeping them would let
104
+ // batchEmbed believe those symbols are still covered.
105
+ hashes.clear();
89
106
  rl.close();
90
107
  stream.destroy();
91
108
  resolve();
92
109
  return;
93
110
  }
94
111
  embeddings.set(entry.id, vec);
112
+ if (typeof entry.h === "number")
113
+ hashes.set(entry.id, entry.h);
95
114
  }
96
115
  }
97
116
  catch {
@@ -110,7 +129,11 @@ export async function loadEmbeddings(embeddingPath, maxBytes = Number.POSITIVE_I
110
129
  * Save all embeddings to an ndjson file using streaming writes.
111
130
  * Avoids building a single huge string (30K+ symbols × 1536 floats = >300MB).
112
131
  */
113
- export async function saveEmbeddings(embeddingPath, embeddings) {
132
+ export async function saveEmbeddings(embeddingPath, embeddings, hashes) {
133
+ // Sweep orphans from earlier runs that were killed mid-write. These files are
134
+ // never overwritten (the name carries a timestamp), so without this they
135
+ // accumulate indefinitely — see cleanupOrphanTempFiles.
136
+ await cleanupOrphanTempFiles(embeddingPath);
114
137
  const tmpPath = `${embeddingPath}.tmp.${Date.now()}`;
115
138
  const { createWriteStream } = await import("node:fs");
116
139
  const stream = createWriteStream(tmpPath, { encoding: "utf-8" });
@@ -121,7 +144,8 @@ export async function saveEmbeddings(embeddingPath, embeddings) {
121
144
  for (const [id, vec] of embeddings) {
122
145
  if (streamError)
123
146
  throw streamError;
124
- const line = JSON.stringify({ id, vec: Array.from(vec) }) + "\n";
147
+ const h = hashes?.get(id);
148
+ const line = JSON.stringify(h === undefined ? { id, vec: Array.from(vec) } : { id, vec: Array.from(vec), h }) + "\n";
125
149
  const canContinue = stream.write(line);
126
150
  if (!canContinue) {
127
151
  await new Promise((resolve) => stream.once("drain", resolve));
@@ -183,6 +207,27 @@ function contentHash(text) {
183
207
  }
184
208
  /** Track content hashes so we re-embed when symbol content changes. */
185
209
  const embeddingContentHashes = new Map();
210
+ /**
211
+ * Seed the in-process hash map for `cacheKey` from what was persisted.
212
+ *
213
+ * This map used to start empty on every process, so `hashes.get(id)` was always
214
+ * undefined, every symbol compared as changed, and the entire corpus was
215
+ * re-embedded on each MCP server start — 4.18M symbols across 1,587 repos, and
216
+ * servers restart once per session.
217
+ */
218
+ export function primeContentHashes(cacheKey, hashes) {
219
+ if (hashes.size === 0)
220
+ return;
221
+ const target = embeddingContentHashes.get(cacheKey) ?? new Map();
222
+ for (const [id, h] of hashes)
223
+ if (!target.has(id))
224
+ target.set(id, h);
225
+ embeddingContentHashes.set(cacheKey, target);
226
+ }
227
+ /** Hashes currently known for `cacheKey`, for persisting beside the vectors. */
228
+ export function contentHashesFor(cacheKey) {
229
+ return embeddingContentHashes.get(cacheKey) ?? new Map();
230
+ }
186
231
  /**
187
232
  * Batch-embed symbols using the given provider, appending to existing embeddings.
188
233
  * Skips symbols whose ID exists AND content hash hasn't changed.
@@ -1 +1 @@
1
- {"version":3,"file":"embedding-store.js","sourceRoot":"","sources":["../../src/storage/embedding-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embedding-store.js","sourceRoot":"","sources":["../../src/storage/embedding-store.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,8 @@ export declare function loadIndexOrStale(indexPath: string, currentVersions: Rec
72
72
  * version miss.
73
73
  */
74
74
  export declare function isExtractorVersionCurrent(index: CodeIndex, currentVersions: Record<string, string>): boolean;
75
+ export declare function getIndexWriteCountForTesting(): number;
76
+ export declare function resetIndexWriteCountForTesting(): void;
75
77
  /**
76
78
  * Incrementally update an index for a single changed file.
77
79
  * Removes old symbols for the file, adds new ones, and saves atomically.
@@ -1 +1 @@
1
- {"version":3,"file":"index-store.d.ts","sourceRoot":"","sources":["../../src/storage/index-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMpE;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC,CAGf;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,CAiB3B;AAED;;;;4BAI4B;AAC5B,MAAM,MAAM,kBAAkB,GAC1B;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAClC;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,4BAA4B,CAAC;IACrC,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB;sFACkF;IAClF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;qEAEqE;AACrE,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,SAAS,EAChB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,2BAA2B,EAAE,CAmC/B;AAED;;;;;;;;;;;;;;;;wCAgBwC;AACxC,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA8BpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,EAChB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,OAAO,CAGT;AAED;;;;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,CAgCf;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAsBf;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":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMpE;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC,CAGf;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,CAiB3B;AAED;;;;4BAI4B;AAC5B,MAAM,MAAM,kBAAkB,GAC1B;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAClC;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,4BAA4B,CAAC;IACrC,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB;sFACkF;IAClF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;qEAEqE;AACrE,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,SAAS,EAChB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,2BAA2B,EAAE,CAmC/B;AAED;;;;;;;;;;;;;;;;wCAgBwC;AACxC,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA8BpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,EAChB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,OAAO,CAGT;AAyBD,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AACD,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAoFD;;;;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,CAiBf;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOtE"}
@@ -140,59 +140,138 @@ export function isExtractorVersionCurrent(index, currentVersions) {
140
140
  return false;
141
141
  return collectExtractorVersionMismatches(index, currentVersions).length === 0;
142
142
  }
143
+ const pendingMutations = new Map();
144
+ const scheduledFlushes = new Map();
145
+ /**
146
+ * Count of full index rewrites. Exposed for tests: the whole point of batching
147
+ * is that N queued edits cost fewer than N rewrites, and ESM will not let a
148
+ * test spy on `node:fs/promises` to measure that from the outside.
149
+ */
150
+ let indexWriteCount = 0;
151
+ export function getIndexWriteCountForTesting() {
152
+ return indexWriteCount;
153
+ }
154
+ export function resetIndexWriteCountForTesting() {
155
+ indexWriteCount = 0;
156
+ }
157
+ /**
158
+ * Fold every queued mutation for one index into a SINGLE load + save.
159
+ *
160
+ * The index is one JSON blob per repo, so each write costs a full parse plus a
161
+ * full stringify of the whole thing — 263 MB on tgm-survey-platform, 391 MB on
162
+ * Mobi3. Agents edit in bursts and the PostToolUse hook calls index_file once
163
+ * per edit, so the old one-write-per-edit path re-serialised the entire repo N
164
+ * times for N files. Telemetry over 10,613 index_file calls: 235 ms median
165
+ * overall, but 3.7 s median / 15.2 s p90 on tgm-survey-platform, 7.5 h of wall
166
+ * clock in total. Batching collapses a burst of N edits to one parse+write.
167
+ *
168
+ * Ordering and durability are unchanged: mutations still apply in submission
169
+ * order, and a caller's promise still resolves only once its own edit is on
170
+ * disk. This does not fix the underlying whole-blob format — it removes the
171
+ * repeated cost of it.
172
+ */
173
+ async function flushIndexMutations(indexPath) {
174
+ const batch = pendingMutations.get(indexPath);
175
+ if (!batch || batch.length === 0)
176
+ return;
177
+ // Take ownership before the first await: anything queued from here on belongs
178
+ // to the next flush, which the scheduler chains after this one.
179
+ pendingMutations.delete(indexPath);
180
+ try {
181
+ const existing = await loadIndex(indexPath);
182
+ if (!existing) {
183
+ // Updates need an index to update; removals against a missing index are
184
+ // already in the desired state.
185
+ for (const mutation of batch) {
186
+ if (mutation.missing === "throw") {
187
+ mutation.reject(new Error(`Cannot incrementally update: index not found at ${indexPath}`));
188
+ }
189
+ else {
190
+ mutation.resolve();
191
+ }
192
+ }
193
+ return;
194
+ }
195
+ let changed = false;
196
+ for (const mutation of batch) {
197
+ if (mutation.apply(existing))
198
+ changed = true;
199
+ }
200
+ // A batch of pure no-ops (e.g. removing files the index never had) must not
201
+ // rewrite the whole blob — that was the point of the old early return.
202
+ if (changed) {
203
+ existing.updated_at = Date.now();
204
+ indexWriteCount++;
205
+ await saveIndex(indexPath, existing);
206
+ }
207
+ for (const mutation of batch)
208
+ mutation.resolve();
209
+ }
210
+ catch (err) {
211
+ for (const mutation of batch)
212
+ mutation.reject(err);
213
+ }
214
+ }
215
+ /** Queue a mutation and make sure exactly one flush is pending per index. */
216
+ function enqueueIndexMutation(indexPath, missing, apply) {
217
+ return new Promise((resolve, reject) => {
218
+ const queue = pendingMutations.get(indexPath);
219
+ if (queue)
220
+ queue.push({ apply, missing, resolve, reject });
221
+ else
222
+ pendingMutations.set(indexPath, [{ apply, missing, resolve, reject }]);
223
+ // A flush already waiting has not drained yet, so it will pick this up.
224
+ if (scheduledFlushes.has(indexPath))
225
+ return;
226
+ const prev = writeLocks.get(indexPath) ?? Promise.resolve();
227
+ const next = prev.then(() => {
228
+ // Release the slot before draining so mutations that arrive during the
229
+ // load/save schedule their own follow-up flush instead of being lost.
230
+ scheduledFlushes.delete(indexPath);
231
+ return flushIndexMutations(indexPath);
232
+ });
233
+ scheduledFlushes.set(indexPath, next);
234
+ // Swallow errors on the lock chain so one failure cannot block later writers.
235
+ writeLocks.set(indexPath, next.catch(() => { }));
236
+ });
237
+ }
143
238
  /**
144
239
  * Incrementally update an index for a single changed file.
145
240
  * Removes old symbols for the file, adds new ones, and saves atomically.
146
241
  * Serialized per indexPath to prevent read-modify-write races.
147
242
  */
148
243
  export async function saveIncremental(indexPath, updatedFile, newSymbols, fileEntry) {
149
- const prev = writeLocks.get(indexPath) ?? Promise.resolve();
150
- const next = prev.then(async () => {
151
- const existing = await loadIndex(indexPath);
152
- if (!existing) {
153
- throw new Error(`Cannot incrementally update: index not found at ${indexPath}`);
154
- }
155
- // Update symbols
244
+ return enqueueIndexMutation(indexPath, "throw", (existing) => {
156
245
  const filtered = existing.symbols.filter((symbol) => symbol.file !== updatedFile);
157
246
  const merged = [...filtered, ...newSymbols];
158
247
  existing.symbols = merged;
159
248
  existing.symbol_count = merged.length;
160
- existing.updated_at = Date.now();
161
249
  // Update files[] to keep it in sync
162
250
  if (fileEntry) {
163
251
  existing.files = existing.files.filter((f) => f.path !== updatedFile);
164
252
  existing.files.push(fileEntry);
165
253
  existing.file_count = existing.files.length;
166
254
  }
167
- await saveIndex(indexPath, existing);
255
+ // A re-index of a file always rewrites its symbols, so this is never a no-op.
256
+ return true;
168
257
  });
169
- // Store the chain (swallow errors so next caller isn't blocked)
170
- writeLocks.set(indexPath, next.catch(() => { }));
171
- return next;
172
258
  }
173
259
  /**
174
260
  * Remove all symbols and the file entry for a deleted file.
175
261
  * Serialized per indexPath to prevent read-modify-write races.
176
262
  */
177
263
  export async function removeFileFromIndex(indexPath, deletedFile) {
178
- const prev = writeLocks.get(indexPath) ?? Promise.resolve();
179
- const next = prev.then(async () => {
180
- const existing = await loadIndex(indexPath);
181
- if (!existing)
182
- return;
264
+ return enqueueIndexMutation(indexPath, "skip", (existing) => {
183
265
  const hadSymbols = existing.symbols.some((s) => s.file === deletedFile);
184
266
  const hadFile = existing.files.some((f) => f.path === deletedFile);
185
267
  if (!hadSymbols && !hadFile)
186
- return;
268
+ return false;
187
269
  existing.symbols = existing.symbols.filter((s) => s.file !== deletedFile);
188
270
  existing.symbol_count = existing.symbols.length;
189
271
  existing.files = existing.files.filter((f) => f.path !== deletedFile);
190
272
  existing.file_count = existing.files.length;
191
- existing.updated_at = Date.now();
192
- await saveIndex(indexPath, existing);
273
+ return true;
193
274
  });
194
- writeLocks.set(indexPath, next.catch(() => { }));
195
- return next;
196
275
  }
197
276
  /**
198
277
  * Derive a deterministic index file path from a repo root.
@@ -1 +1 @@
1
- {"version":3,"file":"index-store.js","sourceRoot":"","sources":["../../src/storage/index-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index-store.js","sourceRoot":"","sources":["../../src/storage/index-store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/storage/registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGtD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAa1E;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAG1B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAGrB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC,GACjG,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG,IAAI,CAAC,CA6C1D;AA+BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQpD"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/storage/registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGtD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAa1E;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAGf;AA2BD;;GAEG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAG1B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAGrB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC,GACjG,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG,IAAI,CAAC,CA6C1D;AA+BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQpD"}
@@ -27,14 +27,39 @@ export async function saveRegistry(registryPath, registry) {
27
27
  const data = JSON.stringify(registry);
28
28
  await atomicWriteFile(registryPath, data);
29
29
  }
30
+ /**
31
+ * Serialises read-modify-write cycles per registry file.
32
+ *
33
+ * `registerRepo` / `updateRepoMeta` / `removeRepo` each load the whole registry,
34
+ * mutate one entry and write it back. Nothing kept two of those from
35
+ * interleaving, so the classic lost update applied: A reads, B reads, A writes,
36
+ * B writes — and A's repo is silently gone from the registry. The caller sees a
37
+ * successful index followed by "Repository ... not found", or `prune` reporting
38
+ * zero repos.
39
+ *
40
+ * Concurrency here is not hypothetical even in a single process: watcher-driven
41
+ * re-indexing, background embedding and auto-index all call these unawaited
42
+ * while a foreground tool call is doing the same. `index-store.ts` already
43
+ * serialises its own writes this way (`writeLocks`); the registry never did.
44
+ */
45
+ const registryWriteLocks = new Map();
46
+ function withRegistryLock(registryPath, work) {
47
+ const prev = registryWriteLocks.get(registryPath) ?? Promise.resolve();
48
+ const next = prev.then(work, work);
49
+ // Swallow on the chain only — the caller still sees its own rejection.
50
+ registryWriteLocks.set(registryPath, next.then(() => undefined, () => undefined));
51
+ return next;
52
+ }
30
53
  /**
31
54
  * Register or update a repo in the registry.
32
55
  */
33
56
  export async function registerRepo(registryPath, meta) {
34
- const registry = await loadRegistry(registryPath);
35
- registry.repos[meta.name] = meta;
36
- registry.updated_at = Date.now();
37
- await saveRegistry(registryPath, registry);
57
+ return withRegistryLock(registryPath, async () => {
58
+ const registry = await loadRegistry(registryPath);
59
+ registry.repos[meta.name] = meta;
60
+ registry.updated_at = Date.now();
61
+ await saveRegistry(registryPath, registry);
62
+ });
38
63
  }
39
64
  /**
40
65
  * Get a single repo's metadata by name.
@@ -55,27 +80,31 @@ export async function listRepos(registryPath) {
55
80
  * Partially update a repo's metadata (e.g., last_git_commit after freshness check).
56
81
  */
57
82
  export async function updateRepoMeta(registryPath, repoName, updates) {
58
- const registry = await loadRegistry(registryPath);
59
- const existing = registry.repos[repoName];
60
- if (!existing)
61
- return;
62
- Object.assign(existing, updates);
63
- registry.updated_at = Date.now();
64
- await saveRegistry(registryPath, registry);
83
+ return withRegistryLock(registryPath, async () => {
84
+ const registry = await loadRegistry(registryPath);
85
+ const existing = registry.repos[repoName];
86
+ if (!existing)
87
+ return;
88
+ Object.assign(existing, updates);
89
+ registry.updated_at = Date.now();
90
+ await saveRegistry(registryPath, registry);
91
+ });
65
92
  }
66
93
  /**
67
94
  * Remove a repo from the registry.
68
95
  * Returns true if the repo existed and was removed, false otherwise.
69
96
  */
70
97
  export async function removeRepo(registryPath, name) {
71
- const registry = await loadRegistry(registryPath);
72
- if (!(name in registry.repos)) {
73
- return false;
74
- }
75
- delete registry.repos[name];
76
- registry.updated_at = Date.now();
77
- await saveRegistry(registryPath, registry);
78
- return true;
98
+ return withRegistryLock(registryPath, async () => {
99
+ const registry = await loadRegistry(registryPath);
100
+ if (!(name in registry.repos)) {
101
+ return false;
102
+ }
103
+ delete registry.repos[name];
104
+ registry.updated_at = Date.now();
105
+ await saveRegistry(registryPath, registry);
106
+ return true;
107
+ });
79
108
  }
80
109
  /**
81
110
  * Resolve registry metadata for a repo input string.