codesift-mcp 0.9.5 → 0.9.10

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 (1313) hide show
  1. package/README.md +39 -23
  2. package/dist/cli/commands.d.ts.map +1 -1
  3. package/dist/cli/commands.js +88 -2
  4. package/dist/cli/commands.js.map +1 -1
  5. package/dist/cli/help.d.ts +1 -1
  6. package/dist/cli/help.d.ts.map +1 -1
  7. package/dist/cli/help.js +18 -0
  8. package/dist/cli/help.js.map +1 -1
  9. package/dist/cli/hooks/input.d.ts +11 -0
  10. package/dist/cli/hooks/input.d.ts.map +1 -0
  11. package/dist/cli/hooks/input.js +111 -0
  12. package/dist/cli/hooks/input.js.map +1 -0
  13. package/dist/cli/hooks/post-tool-use.d.ts +2 -0
  14. package/dist/cli/hooks/post-tool-use.d.ts.map +1 -0
  15. package/dist/cli/hooks/post-tool-use.js +339 -0
  16. package/dist/cli/hooks/post-tool-use.js.map +1 -0
  17. package/dist/cli/hooks/pre-compact.d.ts +2 -0
  18. package/dist/cli/hooks/pre-compact.d.ts.map +1 -0
  19. package/dist/cli/hooks/pre-compact.js +41 -0
  20. package/dist/cli/hooks/pre-compact.js.map +1 -0
  21. package/dist/cli/hooks/pre-tool-use.d.ts +5 -0
  22. package/dist/cli/hooks/pre-tool-use.d.ts.map +1 -0
  23. package/dist/cli/hooks/pre-tool-use.js +215 -0
  24. package/dist/cli/hooks/pre-tool-use.js.map +1 -0
  25. package/dist/cli/hooks/session.d.ts +5 -0
  26. package/dist/cli/hooks/session.d.ts.map +1 -0
  27. package/dist/cli/hooks/session.js +188 -0
  28. package/dist/cli/hooks/session.js.map +1 -0
  29. package/dist/cli/hooks/shared.d.ts +6 -0
  30. package/dist/cli/hooks/shared.d.ts.map +1 -0
  31. package/dist/cli/hooks/shared.js +70 -0
  32. package/dist/cli/hooks/shared.js.map +1 -0
  33. package/dist/cli/hooks/wiki.d.ts +10 -0
  34. package/dist/cli/hooks/wiki.d.ts.map +1 -0
  35. package/dist/cli/hooks/wiki.js +202 -0
  36. package/dist/cli/hooks/wiki.js.map +1 -0
  37. package/dist/cli/hooks.d.ts +5 -16
  38. package/dist/cli/hooks.d.ts.map +1 -1
  39. package/dist/cli/hooks.js +5 -1132
  40. package/dist/cli/hooks.js.map +1 -1
  41. package/dist/cli/setup/claude.d.ts +4 -0
  42. package/dist/cli/setup/claude.d.ts.map +1 -0
  43. package/dist/cli/setup/claude.js +123 -0
  44. package/dist/cli/setup/claude.js.map +1 -0
  45. package/dist/cli/setup/codex.d.ts +12 -0
  46. package/dist/cli/setup/codex.d.ts.map +1 -0
  47. package/dist/cli/setup/codex.js +182 -0
  48. package/dist/cli/setup/codex.js.map +1 -0
  49. package/dist/cli/setup/cursor.d.ts +3 -0
  50. package/dist/cli/setup/cursor.d.ts.map +1 -0
  51. package/dist/cli/setup/cursor.js +6 -0
  52. package/dist/cli/setup/cursor.js.map +1 -0
  53. package/dist/cli/setup/fs.d.ts +6 -0
  54. package/dist/cli/setup/fs.d.ts.map +1 -0
  55. package/dist/cli/setup/fs.js +44 -0
  56. package/dist/cli/setup/fs.js.map +1 -0
  57. package/dist/cli/setup/gemini.d.ts +5 -0
  58. package/dist/cli/setup/gemini.d.ts.map +1 -0
  59. package/dist/cli/setup/gemini.js +46 -0
  60. package/dist/cli/setup/gemini.js.map +1 -0
  61. package/dist/cli/setup/hooks.d.ts +12 -0
  62. package/dist/cli/setup/hooks.d.ts.map +1 -0
  63. package/dist/cli/setup/hooks.js +29 -0
  64. package/dist/cli/setup/hooks.js.map +1 -0
  65. package/dist/cli/setup/mcp.d.ts +13 -0
  66. package/dist/cli/setup/mcp.d.ts.map +1 -0
  67. package/dist/cli/setup/mcp.js +104 -0
  68. package/dist/cli/setup/mcp.js.map +1 -0
  69. package/dist/cli/setup/rules.d.ts +4 -0
  70. package/dist/cli/setup/rules.d.ts.map +1 -0
  71. package/dist/cli/setup/rules.js +157 -0
  72. package/dist/cli/setup/rules.js.map +1 -0
  73. package/dist/cli/setup/types.d.ts +24 -0
  74. package/dist/cli/setup/types.d.ts.map +1 -0
  75. package/dist/cli/setup/types.js +2 -0
  76. package/dist/cli/setup/types.js.map +1 -0
  77. package/dist/cli/setup.d.ts +8 -48
  78. package/dist/cli/setup.d.ts.map +1 -1
  79. package/dist/cli/setup.js +49 -705
  80. package/dist/cli/setup.js.map +1 -1
  81. package/dist/config.d.ts +15 -0
  82. package/dist/config.d.ts.map +1 -1
  83. package/dist/config.js +56 -2
  84. package/dist/config.js.map +1 -1
  85. package/dist/formatter-dispatch.d.ts +53 -0
  86. package/dist/formatter-dispatch.d.ts.map +1 -0
  87. package/dist/formatter-dispatch.js +54 -0
  88. package/dist/formatter-dispatch.js.map +1 -0
  89. package/dist/formatters-analysis.d.ts +9 -0
  90. package/dist/formatters-analysis.d.ts.map +1 -0
  91. package/dist/formatters-analysis.js +166 -0
  92. package/dist/formatters-analysis.js.map +1 -0
  93. package/dist/formatters-core.d.ts +200 -0
  94. package/dist/formatters-core.d.ts.map +1 -0
  95. package/dist/formatters-core.js +206 -0
  96. package/dist/formatters-core.js.map +1 -0
  97. package/dist/formatters-graph.d.ts +124 -0
  98. package/dist/formatters-graph.d.ts.map +1 -0
  99. package/dist/formatters-graph.js +175 -0
  100. package/dist/formatters-graph.js.map +1 -0
  101. package/dist/formatters-nextjs.d.ts +22 -0
  102. package/dist/formatters-nextjs.d.ts.map +1 -0
  103. package/dist/formatters-nextjs.js +394 -0
  104. package/dist/formatters-nextjs.js.map +1 -0
  105. package/dist/formatters.d.ts +8 -349
  106. package/dist/formatters.d.ts.map +1 -1
  107. package/dist/formatters.js +10 -929
  108. package/dist/formatters.js.map +1 -1
  109. package/dist/parser/astro-template/preprocess.d.ts +12 -0
  110. package/dist/parser/astro-template/preprocess.d.ts.map +1 -0
  111. package/dist/parser/astro-template/preprocess.js +34 -0
  112. package/dist/parser/astro-template/preprocess.js.map +1 -0
  113. package/dist/parser/astro-template/resolution.d.ts +16 -0
  114. package/dist/parser/astro-template/resolution.d.ts.map +1 -0
  115. package/dist/parser/astro-template/resolution.js +58 -0
  116. package/dist/parser/astro-template/resolution.js.map +1 -0
  117. package/dist/parser/astro-template/scanner.d.ts +4 -0
  118. package/dist/parser/astro-template/scanner.d.ts.map +1 -0
  119. package/dist/parser/astro-template/scanner.js +71 -0
  120. package/dist/parser/astro-template/scanner.js.map +1 -0
  121. package/dist/parser/astro-template/state.d.ts +22 -0
  122. package/dist/parser/astro-template/state.d.ts.map +1 -0
  123. package/dist/parser/astro-template/state.js +48 -0
  124. package/dist/parser/astro-template/state.js.map +1 -0
  125. package/dist/parser/astro-template/tag-processor.d.ts +3 -0
  126. package/dist/parser/astro-template/tag-processor.d.ts.map +1 -0
  127. package/dist/parser/astro-template/tag-processor.js +63 -0
  128. package/dist/parser/astro-template/tag-processor.js.map +1 -0
  129. package/dist/parser/astro-template/types.d.ts +42 -0
  130. package/dist/parser/astro-template/types.d.ts.map +1 -0
  131. package/dist/parser/astro-template/types.js +2 -0
  132. package/dist/parser/astro-template/types.js.map +1 -0
  133. package/dist/parser/astro-template.d.ts +2 -45
  134. package/dist/parser/astro-template.d.ts.map +1 -1
  135. package/dist/parser/astro-template.js +7 -168
  136. package/dist/parser/astro-template.js.map +1 -1
  137. package/dist/parser/extractors/_shared.js +1 -1
  138. package/dist/parser/extractors/_shared.js.map +1 -1
  139. package/dist/parser/extractors/astro.js +1 -1
  140. package/dist/parser/extractors/astro.js.map +1 -1
  141. package/dist/parser/extractors/conversation.js +1 -1
  142. package/dist/parser/extractors/conversation.js.map +1 -1
  143. package/dist/parser/extractors/hono-app-discovery.d.ts +4 -0
  144. package/dist/parser/extractors/hono-app-discovery.d.ts.map +1 -0
  145. package/dist/parser/extractors/hono-app-discovery.js +169 -0
  146. package/dist/parser/extractors/hono-app-discovery.js.map +1 -0
  147. package/dist/parser/extractors/hono-ast-utils.d.ts +6 -0
  148. package/dist/parser/extractors/hono-ast-utils.d.ts.map +1 -0
  149. package/dist/parser/extractors/hono-ast-utils.js +77 -0
  150. package/dist/parser/extractors/hono-ast-utils.js.map +1 -0
  151. package/dist/parser/extractors/hono-context-extractor.d.ts +15 -0
  152. package/dist/parser/extractors/hono-context-extractor.d.ts.map +1 -0
  153. package/dist/parser/extractors/hono-context-extractor.js +191 -0
  154. package/dist/parser/extractors/hono-context-extractor.js.map +1 -0
  155. package/dist/parser/extractors/hono-middleware-extractor.d.ts +38 -0
  156. package/dist/parser/extractors/hono-middleware-extractor.d.ts.map +1 -0
  157. package/dist/parser/extractors/hono-middleware-extractor.js +480 -0
  158. package/dist/parser/extractors/hono-middleware-extractor.js.map +1 -0
  159. package/dist/parser/extractors/hono-openapi-extractor.d.ts +11 -0
  160. package/dist/parser/extractors/hono-openapi-extractor.d.ts.map +1 -0
  161. package/dist/parser/extractors/hono-openapi-extractor.js +119 -0
  162. package/dist/parser/extractors/hono-openapi-extractor.js.map +1 -0
  163. package/dist/parser/extractors/hono-route-extractor.d.ts +11 -0
  164. package/dist/parser/extractors/hono-route-extractor.d.ts.map +1 -0
  165. package/dist/parser/extractors/hono-route-extractor.js +128 -0
  166. package/dist/parser/extractors/hono-route-extractor.js.map +1 -0
  167. package/dist/parser/extractors/hono-route-utils.d.ts +11 -0
  168. package/dist/parser/extractors/hono-route-utils.d.ts.map +1 -0
  169. package/dist/parser/extractors/hono-route-utils.js +40 -0
  170. package/dist/parser/extractors/hono-route-utils.js.map +1 -0
  171. package/dist/parser/extractors/hono-runtime-extractor.d.ts +17 -0
  172. package/dist/parser/extractors/hono-runtime-extractor.d.ts.map +1 -0
  173. package/dist/parser/extractors/hono-runtime-extractor.js +141 -0
  174. package/dist/parser/extractors/hono-runtime-extractor.js.map +1 -0
  175. package/dist/parser/extractors/hono.d.ts +5 -79
  176. package/dist/parser/extractors/hono.d.ts.map +1 -1
  177. package/dist/parser/extractors/hono.js +32 -1159
  178. package/dist/parser/extractors/hono.js.map +1 -1
  179. package/dist/parser/extractors/kotlin-ast-helpers.d.ts +43 -0
  180. package/dist/parser/extractors/kotlin-ast-helpers.d.ts.map +1 -0
  181. package/dist/parser/extractors/kotlin-ast-helpers.js +187 -0
  182. package/dist/parser/extractors/kotlin-ast-helpers.js.map +1 -0
  183. package/dist/parser/extractors/kotlin-test-symbols.d.ts +21 -0
  184. package/dist/parser/extractors/kotlin-test-symbols.d.ts.map +1 -0
  185. package/dist/parser/extractors/kotlin-test-symbols.js +162 -0
  186. package/dist/parser/extractors/kotlin-test-symbols.js.map +1 -0
  187. package/dist/parser/extractors/kotlin.d.ts.map +1 -1
  188. package/dist/parser/extractors/kotlin.js +3 -334
  189. package/dist/parser/extractors/kotlin.js.map +1 -1
  190. package/dist/parser/extractors/markdown.js +1 -1
  191. package/dist/parser/extractors/markdown.js.map +1 -1
  192. package/dist/parser/extractors/prisma.js +1 -1
  193. package/dist/parser/extractors/prisma.js.map +1 -1
  194. package/dist/parser/extractors/sql-boundaries.d.ts +3 -0
  195. package/dist/parser/extractors/sql-boundaries.d.ts.map +1 -0
  196. package/dist/parser/extractors/sql-boundaries.js +19 -0
  197. package/dist/parser/extractors/sql-boundaries.js.map +1 -0
  198. package/dist/parser/extractors/sql-columns.d.ts +14 -0
  199. package/dist/parser/extractors/sql-columns.d.ts.map +1 -0
  200. package/dist/parser/extractors/sql-columns.js +59 -0
  201. package/dist/parser/extractors/sql-columns.js.map +1 -0
  202. package/dist/parser/extractors/sql-docstrings.d.ts +2 -0
  203. package/dist/parser/extractors/sql-docstrings.d.ts.map +1 -0
  204. package/dist/parser/extractors/sql-docstrings.js +45 -0
  205. package/dist/parser/extractors/sql-docstrings.js.map +1 -0
  206. package/dist/parser/extractors/sql-end-scanner.d.ts +5 -0
  207. package/dist/parser/extractors/sql-end-scanner.d.ts.map +1 -0
  208. package/dist/parser/extractors/sql-end-scanner.js +84 -0
  209. package/dist/parser/extractors/sql-end-scanner.js.map +1 -0
  210. package/dist/parser/extractors/sql-jinja.d.ts +2 -0
  211. package/dist/parser/extractors/sql-jinja.d.ts.map +1 -0
  212. package/dist/parser/extractors/sql-jinja.js +8 -0
  213. package/dist/parser/extractors/sql-jinja.js.map +1 -0
  214. package/dist/parser/extractors/sql-matcher-catalog.d.ts +9 -0
  215. package/dist/parser/extractors/sql-matcher-catalog.d.ts.map +1 -0
  216. package/dist/parser/extractors/sql-matcher-catalog.js +15 -0
  217. package/dist/parser/extractors/sql-matcher-catalog.js.map +1 -0
  218. package/dist/parser/extractors/sql-matchers.d.ts +9 -0
  219. package/dist/parser/extractors/sql-matchers.d.ts.map +1 -0
  220. package/dist/parser/extractors/sql-matchers.js +20 -0
  221. package/dist/parser/extractors/sql-matchers.js.map +1 -0
  222. package/dist/parser/extractors/sql-offsets.d.ts +2 -0
  223. package/dist/parser/extractors/sql-offsets.d.ts.map +1 -0
  224. package/dist/parser/extractors/sql-offsets.js +25 -0
  225. package/dist/parser/extractors/sql-offsets.js.map +1 -0
  226. package/dist/parser/extractors/sql-parens.d.ts +4 -0
  227. package/dist/parser/extractors/sql-parens.d.ts.map +1 -0
  228. package/dist/parser/extractors/sql-parens.js +70 -0
  229. package/dist/parser/extractors/sql-parens.js.map +1 -0
  230. package/dist/parser/extractors/sql-symbols.d.ts +11 -0
  231. package/dist/parser/extractors/sql-symbols.d.ts.map +1 -0
  232. package/dist/parser/extractors/sql-symbols.js +23 -0
  233. package/dist/parser/extractors/sql-symbols.js.map +1 -0
  234. package/dist/parser/extractors/sql.d.ts +2 -30
  235. package/dist/parser/extractors/sql.d.ts.map +1 -1
  236. package/dist/parser/extractors/sql.js +23 -496
  237. package/dist/parser/extractors/sql.js.map +1 -1
  238. package/dist/parser/extractors/typescript-cjs-nodes.d.ts +5 -0
  239. package/dist/parser/extractors/typescript-cjs-nodes.d.ts.map +1 -0
  240. package/dist/parser/extractors/typescript-cjs-nodes.js +148 -0
  241. package/dist/parser/extractors/typescript-cjs-nodes.js.map +1 -0
  242. package/dist/parser/extractors/typescript-class-nodes.d.ts +8 -0
  243. package/dist/parser/extractors/typescript-class-nodes.d.ts.map +1 -0
  244. package/dist/parser/extractors/typescript-class-nodes.js +183 -0
  245. package/dist/parser/extractors/typescript-class-nodes.js.map +1 -0
  246. package/dist/parser/extractors/typescript-declaration-nodes.d.ts +5 -0
  247. package/dist/parser/extractors/typescript-declaration-nodes.d.ts.map +1 -0
  248. package/dist/parser/extractors/typescript-declaration-nodes.js +105 -0
  249. package/dist/parser/extractors/typescript-declaration-nodes.js.map +1 -0
  250. package/dist/parser/extractors/typescript-module-nodes.d.ts +6 -0
  251. package/dist/parser/extractors/typescript-module-nodes.d.ts.map +1 -0
  252. package/dist/parser/extractors/typescript-module-nodes.js +151 -0
  253. package/dist/parser/extractors/typescript-module-nodes.js.map +1 -0
  254. package/dist/parser/extractors/typescript-react.d.ts +11 -0
  255. package/dist/parser/extractors/typescript-react.d.ts.map +1 -0
  256. package/dist/parser/extractors/typescript-react.js +101 -0
  257. package/dist/parser/extractors/typescript-react.js.map +1 -0
  258. package/dist/parser/extractors/typescript-shared.d.ts +26 -0
  259. package/dist/parser/extractors/typescript-shared.d.ts.map +1 -0
  260. package/dist/parser/extractors/typescript-shared.js +101 -0
  261. package/dist/parser/extractors/typescript-shared.js.map +1 -0
  262. package/dist/parser/extractors/typescript-test-nodes.d.ts +4 -0
  263. package/dist/parser/extractors/typescript-test-nodes.d.ts.map +1 -0
  264. package/dist/parser/extractors/typescript-test-nodes.js +112 -0
  265. package/dist/parser/extractors/typescript-test-nodes.js.map +1 -0
  266. package/dist/parser/extractors/typescript-type-nodes.d.ts +6 -0
  267. package/dist/parser/extractors/typescript-type-nodes.d.ts.map +1 -0
  268. package/dist/parser/extractors/typescript-type-nodes.js +48 -0
  269. package/dist/parser/extractors/typescript-type-nodes.js.map +1 -0
  270. package/dist/parser/extractors/typescript.d.ts.map +1 -1
  271. package/dist/parser/extractors/typescript.js +68 -1127
  272. package/dist/parser/extractors/typescript.js.map +1 -1
  273. package/dist/parser/parser-manager.d.ts.map +1 -1
  274. package/dist/parser/parser-manager.js +5 -0
  275. package/dist/parser/parser-manager.js.map +1 -1
  276. package/dist/parser/symbol-extractor.d.ts +1 -12
  277. package/dist/parser/symbol-extractor.d.ts.map +1 -1
  278. package/dist/parser/symbol-extractor.js +2 -24
  279. package/dist/parser/symbol-extractor.js.map +1 -1
  280. package/dist/parser/symbol-utils.d.ts +4 -0
  281. package/dist/parser/symbol-utils.d.ts.map +1 -0
  282. package/dist/parser/symbol-utils.js +20 -0
  283. package/dist/parser/symbol-utils.js.map +1 -0
  284. package/dist/register-tool-groups/analysis/cross-repo.d.ts +4 -0
  285. package/dist/register-tool-groups/analysis/cross-repo.d.ts.map +1 -0
  286. package/dist/register-tool-groups/analysis/cross-repo.js +108 -0
  287. package/dist/register-tool-groups/analysis/cross-repo.js.map +1 -0
  288. package/dist/register-tool-groups/analysis/review.d.ts +3 -0
  289. package/dist/register-tool-groups/analysis/review.d.ts.map +1 -0
  290. package/dist/register-tool-groups/analysis/review.js +96 -0
  291. package/dist/register-tool-groups/analysis/review.js.map +1 -0
  292. package/dist/register-tool-groups/analysis/workspace.d.ts +3 -0
  293. package/dist/register-tool-groups/analysis/workspace.d.ts.map +1 -0
  294. package/dist/register-tool-groups/analysis/workspace.js +82 -0
  295. package/dist/register-tool-groups/analysis/workspace.js.map +1 -0
  296. package/dist/register-tool-groups/analysis.d.ts +3 -0
  297. package/dist/register-tool-groups/analysis.d.ts.map +1 -0
  298. package/dist/register-tool-groups/analysis.js +541 -0
  299. package/dist/register-tool-groups/analysis.js.map +1 -0
  300. package/dist/register-tool-groups/astro.d.ts +3 -0
  301. package/dist/register-tool-groups/astro.d.ts.map +1 -0
  302. package/dist/register-tool-groups/astro.js +302 -0
  303. package/dist/register-tool-groups/astro.js.map +1 -0
  304. package/dist/register-tool-groups/core/index.d.ts +3 -0
  305. package/dist/register-tool-groups/core/index.d.ts.map +1 -0
  306. package/dist/register-tool-groups/core/index.js +96 -0
  307. package/dist/register-tool-groups/core/index.js.map +1 -0
  308. package/dist/register-tool-groups/core/meta.d.ts +3 -0
  309. package/dist/register-tool-groups/core/meta.d.ts.map +1 -0
  310. package/dist/register-tool-groups/core/meta.js +180 -0
  311. package/dist/register-tool-groups/core/meta.js.map +1 -0
  312. package/dist/register-tool-groups/core/schema.d.ts +3 -0
  313. package/dist/register-tool-groups/core/schema.d.ts.map +1 -0
  314. package/dist/register-tool-groups/core/schema.js +16 -0
  315. package/dist/register-tool-groups/core/schema.js.map +1 -0
  316. package/dist/register-tool-groups/core/search.d.ts +4 -0
  317. package/dist/register-tool-groups/core/search.d.ts.map +1 -0
  318. package/dist/register-tool-groups/core/search.js +262 -0
  319. package/dist/register-tool-groups/core/search.js.map +1 -0
  320. package/dist/register-tool-groups/core/symbols.d.ts +3 -0
  321. package/dist/register-tool-groups/core/symbols.d.ts.map +1 -0
  322. package/dist/register-tool-groups/core/symbols.js +338 -0
  323. package/dist/register-tool-groups/core/symbols.js.map +1 -0
  324. package/dist/register-tool-groups/core.d.ts +3 -0
  325. package/dist/register-tool-groups/core.d.ts.map +1 -0
  326. package/dist/register-tool-groups/core.js +12 -0
  327. package/dist/register-tool-groups/core.js.map +1 -0
  328. package/dist/register-tool-groups/deps.d.ts +10 -0
  329. package/dist/register-tool-groups/deps.d.ts.map +1 -0
  330. package/dist/register-tool-groups/deps.js +6 -0
  331. package/dist/register-tool-groups/deps.js.map +1 -0
  332. package/dist/register-tool-groups/handler-wrappers.d.ts +63 -0
  333. package/dist/register-tool-groups/handler-wrappers.d.ts.map +1 -0
  334. package/dist/register-tool-groups/handler-wrappers.js +106 -0
  335. package/dist/register-tool-groups/handler-wrappers.js.map +1 -0
  336. package/dist/register-tool-groups/hono.d.ts +3 -0
  337. package/dist/register-tool-groups/hono.d.ts.map +1 -0
  338. package/dist/register-tool-groups/hono.js +179 -0
  339. package/dist/register-tool-groups/hono.js.map +1 -0
  340. package/dist/register-tool-groups/index.d.ts +3 -0
  341. package/dist/register-tool-groups/index.d.ts.map +1 -0
  342. package/dist/register-tool-groups/index.js +28 -0
  343. package/dist/register-tool-groups/index.js.map +1 -0
  344. package/dist/register-tool-groups/kotlin.d.ts +3 -0
  345. package/dist/register-tool-groups/kotlin.d.ts.map +1 -0
  346. package/dist/register-tool-groups/kotlin.js +162 -0
  347. package/dist/register-tool-groups/kotlin.js.map +1 -0
  348. package/dist/register-tool-groups/meta.d.ts +3 -0
  349. package/dist/register-tool-groups/meta.d.ts.map +1 -0
  350. package/dist/register-tool-groups/meta.js +563 -0
  351. package/dist/register-tool-groups/meta.js.map +1 -0
  352. package/dist/register-tool-groups/nextjs.d.ts +3 -0
  353. package/dist/register-tool-groups/nextjs.d.ts.map +1 -0
  354. package/dist/register-tool-groups/nextjs.js +78 -0
  355. package/dist/register-tool-groups/nextjs.js.map +1 -0
  356. package/dist/register-tool-groups/php.d.ts +3 -0
  357. package/dist/register-tool-groups/php.d.ts.map +1 -0
  358. package/dist/register-tool-groups/php.js +312 -0
  359. package/dist/register-tool-groups/php.js.map +1 -0
  360. package/dist/register-tool-groups/python.d.ts +3 -0
  361. package/dist/register-tool-groups/python.d.ts.map +1 -0
  362. package/dist/register-tool-groups/python.js +366 -0
  363. package/dist/register-tool-groups/python.js.map +1 -0
  364. package/dist/register-tool-groups/react.d.ts +3 -0
  365. package/dist/register-tool-groups/react.d.ts.map +1 -0
  366. package/dist/register-tool-groups/react.js +119 -0
  367. package/dist/register-tool-groups/react.js.map +1 -0
  368. package/dist/register-tool-groups/shared.d.ts +156 -0
  369. package/dist/register-tool-groups/shared.d.ts.map +1 -0
  370. package/dist/register-tool-groups/shared.js +182 -0
  371. package/dist/register-tool-groups/shared.js.map +1 -0
  372. package/dist/register-tool-groups/sql.d.ts +3 -0
  373. package/dist/register-tool-groups/sql.d.ts.map +1 -0
  374. package/dist/register-tool-groups/sql.js +260 -0
  375. package/dist/register-tool-groups/sql.js.map +1 -0
  376. package/dist/register-tool-loaders.d.ts +22 -22
  377. package/dist/register-tool-loaders.d.ts.map +1 -1
  378. package/dist/register-tools/autoload.d.ts +8 -0
  379. package/dist/register-tools/autoload.d.ts.map +1 -0
  380. package/dist/register-tools/autoload.js +517 -0
  381. package/dist/register-tools/autoload.js.map +1 -0
  382. package/dist/register-tools/discovery.d.ts +55 -0
  383. package/dist/register-tools/discovery.d.ts.map +1 -0
  384. package/dist/register-tools/discovery.js +206 -0
  385. package/dist/register-tools/discovery.js.map +1 -0
  386. package/dist/register-tools/runtime.d.ts +89 -0
  387. package/dist/register-tools/runtime.d.ts.map +1 -0
  388. package/dist/register-tools/runtime.js +491 -0
  389. package/dist/register-tools/runtime.js.map +1 -0
  390. package/dist/register-tools.d.ts +5 -172
  391. package/dist/register-tools.d.ts.map +1 -1
  392. package/dist/register-tools.js +27 -4878
  393. package/dist/register-tools.js.map +1 -1
  394. package/dist/search/bm25.js +1 -1
  395. package/dist/search/bm25.js.map +1 -1
  396. package/dist/search/tool-embedding-cache.d.ts +4 -0
  397. package/dist/search/tool-embedding-cache.d.ts.map +1 -0
  398. package/dist/search/tool-embedding-cache.js +44 -0
  399. package/dist/search/tool-embedding-cache.js.map +1 -0
  400. package/dist/search/tool-embedding-storage.d.ts +8 -0
  401. package/dist/search/tool-embedding-storage.d.ts.map +1 -0
  402. package/dist/search/tool-embedding-storage.js +56 -0
  403. package/dist/search/tool-embedding-storage.js.map +1 -0
  404. package/dist/search/tool-ranker-bm25.d.ts +6 -0
  405. package/dist/search/tool-ranker-bm25.d.ts.map +1 -0
  406. package/dist/search/tool-ranker-bm25.js +40 -0
  407. package/dist/search/tool-ranker-bm25.js.map +1 -0
  408. package/dist/search/tool-ranker-orchestrator.d.ts +3 -0
  409. package/dist/search/tool-ranker-orchestrator.d.ts.map +1 -0
  410. package/dist/search/tool-ranker-orchestrator.js +49 -0
  411. package/dist/search/tool-ranker-orchestrator.js.map +1 -0
  412. package/dist/search/tool-ranker-reasoning.d.ts +4 -0
  413. package/dist/search/tool-ranker-reasoning.d.ts.map +1 -0
  414. package/dist/search/tool-ranker-reasoning.js +35 -0
  415. package/dist/search/tool-ranker-reasoning.js.map +1 -0
  416. package/dist/search/tool-ranker-signal-math.d.ts +6 -0
  417. package/dist/search/tool-ranker-signal-math.d.ts.map +1 -0
  418. package/dist/search/tool-ranker-signal-math.js +51 -0
  419. package/dist/search/tool-ranker-signal-math.js.map +1 -0
  420. package/dist/search/tool-ranker-signals.d.ts +20 -0
  421. package/dist/search/tool-ranker-signals.d.ts.map +1 -0
  422. package/dist/search/tool-ranker-signals.js +50 -0
  423. package/dist/search/tool-ranker-signals.js.map +1 -0
  424. package/dist/search/tool-ranker-types.d.ts +26 -0
  425. package/dist/search/tool-ranker-types.d.ts.map +1 -0
  426. package/dist/search/tool-ranker-types.js +2 -0
  427. package/dist/search/tool-ranker-types.js.map +1 -0
  428. package/dist/search/tool-ranker.d.ts +6 -89
  429. package/dist/search/tool-ranker.d.ts.map +1 -1
  430. package/dist/search/tool-ranker.js +5 -419
  431. package/dist/search/tool-ranker.js.map +1 -1
  432. package/dist/server-helpers/repo-resolution.d.ts +45 -0
  433. package/dist/server-helpers/repo-resolution.d.ts.map +1 -0
  434. package/dist/server-helpers/repo-resolution.js +113 -0
  435. package/dist/server-helpers/repo-resolution.js.map +1 -0
  436. package/dist/server-helpers/response-hints.d.ts +9 -0
  437. package/dist/server-helpers/response-hints.d.ts.map +1 -0
  438. package/dist/server-helpers/response-hints.js +225 -0
  439. package/dist/server-helpers/response-hints.js.map +1 -0
  440. package/dist/server-helpers.d.ts +14 -35
  441. package/dist/server-helpers.d.ts.map +1 -1
  442. package/dist/server-helpers.js +53 -320
  443. package/dist/server-helpers.js.map +1 -1
  444. package/dist/server.d.ts.map +1 -1
  445. package/dist/server.js +39 -0
  446. package/dist/server.js.map +1 -1
  447. package/dist/storage/usage-tracker.d.ts.map +1 -1
  448. package/dist/storage/usage-tracker.js +12 -0
  449. package/dist/storage/usage-tracker.js.map +1 -1
  450. package/dist/tools/astro-actions/ast.d.ts +14 -0
  451. package/dist/tools/astro-actions/ast.d.ts.map +1 -0
  452. package/dist/tools/astro-actions/ast.js +75 -0
  453. package/dist/tools/astro-actions/ast.js.map +1 -0
  454. package/dist/tools/astro-actions/audit.d.ts +5 -0
  455. package/dist/tools/astro-actions/audit.d.ts.map +1 -0
  456. package/dist/tools/astro-actions/audit.js +102 -0
  457. package/dist/tools/astro-actions/audit.js.map +1 -0
  458. package/dist/tools/astro-actions/callers.d.ts +9 -0
  459. package/dist/tools/astro-actions/callers.d.ts.map +1 -0
  460. package/dist/tools/astro-actions/callers.js +84 -0
  461. package/dist/tools/astro-actions/callers.js.map +1 -0
  462. package/dist/tools/astro-actions/parser.d.ts +3 -0
  463. package/dist/tools/astro-actions/parser.d.ts.map +1 -0
  464. package/dist/tools/astro-actions/parser.js +156 -0
  465. package/dist/tools/astro-actions/parser.js.map +1 -0
  466. package/dist/tools/astro-actions/types.d.ts +58 -0
  467. package/dist/tools/astro-actions/types.d.ts.map +1 -0
  468. package/dist/tools/astro-actions/types.js +2 -0
  469. package/dist/tools/astro-actions/types.js.map +1 -0
  470. package/dist/tools/astro-actions/zod-ast.d.ts +7 -0
  471. package/dist/tools/astro-actions/zod-ast.d.ts.map +1 -0
  472. package/dist/tools/astro-actions/zod-ast.js +51 -0
  473. package/dist/tools/astro-actions/zod-ast.js.map +1 -0
  474. package/dist/tools/astro-actions.d.ts +6 -46
  475. package/dist/tools/astro-actions.d.ts.map +1 -1
  476. package/dist/tools/astro-actions.js +6 -545
  477. package/dist/tools/astro-actions.js.map +1 -1
  478. package/dist/tools/astro-content-collections/diagnostics.d.ts +3 -0
  479. package/dist/tools/astro-content-collections/diagnostics.d.ts.map +1 -0
  480. package/dist/tools/astro-content-collections/diagnostics.js +277 -0
  481. package/dist/tools/astro-content-collections/diagnostics.js.map +1 -0
  482. package/dist/tools/astro-content-collections/discovery.d.ts +6 -0
  483. package/dist/tools/astro-content-collections/discovery.d.ts.map +1 -0
  484. package/dist/tools/astro-content-collections/discovery.js +152 -0
  485. package/dist/tools/astro-content-collections/discovery.js.map +1 -0
  486. package/dist/tools/astro-content-collections/schema.d.ts +15 -0
  487. package/dist/tools/astro-content-collections/schema.d.ts.map +1 -0
  488. package/dist/tools/astro-content-collections/schema.js +119 -0
  489. package/dist/tools/astro-content-collections/schema.js.map +1 -0
  490. package/dist/tools/astro-content-collections/types.d.ts +61 -0
  491. package/dist/tools/astro-content-collections/types.d.ts.map +1 -0
  492. package/dist/tools/astro-content-collections/types.js +2 -0
  493. package/dist/tools/astro-content-collections/types.js.map +1 -0
  494. package/dist/tools/astro-content-collections.d.ts +5 -40
  495. package/dist/tools/astro-content-collections.d.ts.map +1 -1
  496. package/dist/tools/astro-content-collections.js +42 -449
  497. package/dist/tools/astro-content-collections.js.map +1 -1
  498. package/dist/tools/astro-routes.js +1 -1
  499. package/dist/tools/astro-routes.js.map +1 -1
  500. package/dist/tools/complexity-tools.d.ts +6 -0
  501. package/dist/tools/complexity-tools.d.ts.map +1 -1
  502. package/dist/tools/complexity-tools.js +26 -0
  503. package/dist/tools/complexity-tools.js.map +1 -1
  504. package/dist/tools/context-levels/l0.d.ts +4 -0
  505. package/dist/tools/context-levels/l0.d.ts.map +1 -0
  506. package/dist/tools/context-levels/l0.js +17 -0
  507. package/dist/tools/context-levels/l0.js.map +1 -0
  508. package/dist/tools/context-levels/l1.d.ts +4 -0
  509. package/dist/tools/context-levels/l1.d.ts.map +1 -0
  510. package/dist/tools/context-levels/l1.js +26 -0
  511. package/dist/tools/context-levels/l1.js.map +1 -0
  512. package/dist/tools/context-levels/l2.d.ts +4 -0
  513. package/dist/tools/context-levels/l2.d.ts.map +1 -0
  514. package/dist/tools/context-levels/l2.js +36 -0
  515. package/dist/tools/context-levels/l2.js.map +1 -0
  516. package/dist/tools/context-levels/l3.d.ts +4 -0
  517. package/dist/tools/context-levels/l3.d.ts.map +1 -0
  518. package/dist/tools/context-levels/l3.js +30 -0
  519. package/dist/tools/context-levels/l3.js.map +1 -0
  520. package/dist/tools/context-levels/shared.d.ts +2 -0
  521. package/dist/tools/context-levels/shared.d.ts.map +1 -0
  522. package/dist/tools/context-levels/shared.js +4 -0
  523. package/dist/tools/context-levels/shared.js.map +1 -0
  524. package/dist/tools/context-levels/types.d.ts +34 -0
  525. package/dist/tools/context-levels/types.d.ts.map +1 -0
  526. package/dist/tools/context-levels/types.js +2 -0
  527. package/dist/tools/context-levels/types.js.map +1 -0
  528. package/dist/tools/context-tools.d.ts +2 -34
  529. package/dist/tools/context-tools.d.ts.map +1 -1
  530. package/dist/tools/context-tools.js +11 -127
  531. package/dist/tools/context-tools.js.map +1 -1
  532. package/dist/tools/conversation-cache.d.ts +6 -0
  533. package/dist/tools/conversation-cache.d.ts.map +1 -0
  534. package/dist/tools/conversation-cache.js +29 -0
  535. package/dist/tools/conversation-cache.js.map +1 -0
  536. package/dist/tools/conversation-index-tools.d.ts +39 -0
  537. package/dist/tools/conversation-index-tools.d.ts.map +1 -0
  538. package/dist/tools/conversation-index-tools.js +136 -0
  539. package/dist/tools/conversation-index-tools.js.map +1 -0
  540. package/dist/tools/conversation-paths.d.ts +4 -0
  541. package/dist/tools/conversation-paths.d.ts.map +1 -0
  542. package/dist/tools/conversation-paths.js +15 -0
  543. package/dist/tools/conversation-paths.js.map +1 -0
  544. package/dist/tools/conversation-search-tools.d.ts +52 -0
  545. package/dist/tools/conversation-search-tools.d.ts.map +1 -0
  546. package/dist/tools/conversation-search-tools.js +229 -0
  547. package/dist/tools/conversation-search-tools.js.map +1 -0
  548. package/dist/tools/conversation-tools.d.ts +6 -112
  549. package/dist/tools/conversation-tools.d.ts.map +1 -1
  550. package/dist/tools/conversation-tools.js +4 -425
  551. package/dist/tools/conversation-tools.js.map +1 -1
  552. package/dist/tools/cross-repo-outbound-lexer/call-detectors.d.ts +5 -0
  553. package/dist/tools/cross-repo-outbound-lexer/call-detectors.d.ts.map +1 -0
  554. package/dist/tools/cross-repo-outbound-lexer/call-detectors.js +76 -0
  555. package/dist/tools/cross-repo-outbound-lexer/call-detectors.js.map +1 -0
  556. package/dist/tools/cross-repo-outbound-lexer/context.d.ts +18 -0
  557. package/dist/tools/cross-repo-outbound-lexer/context.d.ts.map +1 -0
  558. package/dist/tools/cross-repo-outbound-lexer/context.js +33 -0
  559. package/dist/tools/cross-repo-outbound-lexer/context.js.map +1 -0
  560. package/dist/tools/cross-repo-outbound-lexer/literal-readers.d.ts +6 -0
  561. package/dist/tools/cross-repo-outbound-lexer/literal-readers.d.ts.map +1 -0
  562. package/dist/tools/cross-repo-outbound-lexer/literal-readers.js +65 -0
  563. package/dist/tools/cross-repo-outbound-lexer/literal-readers.js.map +1 -0
  564. package/dist/tools/cross-repo-outbound-lexer/non-code-states.d.ts +3 -0
  565. package/dist/tools/cross-repo-outbound-lexer/non-code-states.d.ts.map +1 -0
  566. package/dist/tools/cross-repo-outbound-lexer/non-code-states.js +103 -0
  567. package/dist/tools/cross-repo-outbound-lexer/non-code-states.js.map +1 -0
  568. package/dist/tools/cross-repo-outbound-lexer/template-reader.d.ts +3 -0
  569. package/dist/tools/cross-repo-outbound-lexer/template-reader.d.ts.map +1 -0
  570. package/dist/tools/cross-repo-outbound-lexer/template-reader.js +82 -0
  571. package/dist/tools/cross-repo-outbound-lexer/template-reader.js.map +1 -0
  572. package/dist/tools/cross-repo-outbound-lexer/types.d.ts +18 -0
  573. package/dist/tools/cross-repo-outbound-lexer/types.d.ts.map +1 -0
  574. package/dist/tools/cross-repo-outbound-lexer/types.js +2 -0
  575. package/dist/tools/cross-repo-outbound-lexer/types.js.map +1 -0
  576. package/dist/tools/cross-repo-outbound-lexer.d.ts +5 -31
  577. package/dist/tools/cross-repo-outbound-lexer.d.ts.map +1 -1
  578. package/dist/tools/cross-repo-outbound-lexer.js +75 -575
  579. package/dist/tools/cross-repo-outbound-lexer.js.map +1 -1
  580. package/dist/tools/dependency-audit-freshness-tools.d.ts +3 -0
  581. package/dist/tools/dependency-audit-freshness-tools.d.ts.map +1 -0
  582. package/dist/tools/dependency-audit-freshness-tools.js +62 -0
  583. package/dist/tools/dependency-audit-freshness-tools.js.map +1 -0
  584. package/dist/tools/dependency-audit-license-tools.d.ts +5 -0
  585. package/dist/tools/dependency-audit-license-tools.d.ts.map +1 -0
  586. package/dist/tools/dependency-audit-license-tools.js +75 -0
  587. package/dist/tools/dependency-audit-license-tools.js.map +1 -0
  588. package/dist/tools/dependency-audit-lockfile-tools.d.ts +3 -0
  589. package/dist/tools/dependency-audit-lockfile-tools.d.ts.map +1 -0
  590. package/dist/tools/dependency-audit-lockfile-tools.js +147 -0
  591. package/dist/tools/dependency-audit-lockfile-tools.js.map +1 -0
  592. package/dist/tools/dependency-audit-tools.d.ts +2 -54
  593. package/dist/tools/dependency-audit-tools.d.ts.map +1 -1
  594. package/dist/tools/dependency-audit-tools.js +69 -484
  595. package/dist/tools/dependency-audit-tools.js.map +1 -1
  596. package/dist/tools/dependency-audit-types.d.ts +65 -0
  597. package/dist/tools/dependency-audit-types.d.ts.map +1 -0
  598. package/dist/tools/dependency-audit-types.js +19 -0
  599. package/dist/tools/dependency-audit-types.js.map +1 -0
  600. package/dist/tools/dependency-audit-vulnerability-tools.d.ts +4 -0
  601. package/dist/tools/dependency-audit-vulnerability-tools.d.ts.map +1 -0
  602. package/dist/tools/dependency-audit-vulnerability-tools.js +103 -0
  603. package/dist/tools/dependency-audit-vulnerability-tools.js.map +1 -0
  604. package/dist/tools/diff-tools.d.ts.map +1 -1
  605. package/dist/tools/diff-tools.js +5 -7
  606. package/dist/tools/diff-tools.js.map +1 -1
  607. package/dist/tools/impact-tools.d.ts.map +1 -1
  608. package/dist/tools/impact-tools.js +5 -4
  609. package/dist/tools/impact-tools.js.map +1 -1
  610. package/dist/tools/index-shared.d.ts +17 -0
  611. package/dist/tools/index-shared.d.ts.map +1 -0
  612. package/dist/tools/index-shared.js +18 -0
  613. package/dist/tools/index-shared.js.map +1 -0
  614. package/dist/tools/index-tools/file-indexer.d.ts +27 -0
  615. package/dist/tools/index-tools/file-indexer.d.ts.map +1 -0
  616. package/dist/tools/index-tools/file-indexer.js +223 -0
  617. package/dist/tools/index-tools/file-indexer.js.map +1 -0
  618. package/dist/tools/index-tools/folder-indexer.d.ts +21 -0
  619. package/dist/tools/index-tools/folder-indexer.d.ts.map +1 -0
  620. package/dist/tools/index-tools/folder-indexer.js +399 -0
  621. package/dist/tools/index-tools/folder-indexer.js.map +1 -0
  622. package/dist/tools/index-tools/folder-merge.d.ts +23 -0
  623. package/dist/tools/index-tools/folder-merge.d.ts.map +1 -0
  624. package/dist/tools/index-tools/folder-merge.js +205 -0
  625. package/dist/tools/index-tools/folder-merge.js.map +1 -0
  626. package/dist/tools/index-tools/parse.d.ts +35 -0
  627. package/dist/tools/index-tools/parse.d.ts.map +1 -0
  628. package/dist/tools/index-tools/parse.js +262 -0
  629. package/dist/tools/index-tools/parse.js.map +1 -0
  630. package/dist/tools/index-tools/registry.d.ts +40 -0
  631. package/dist/tools/index-tools/registry.d.ts.map +1 -0
  632. package/dist/tools/index-tools/registry.js +258 -0
  633. package/dist/tools/index-tools/registry.js.map +1 -0
  634. package/dist/tools/index-tools/snapshots.d.ts +51 -0
  635. package/dist/tools/index-tools/snapshots.d.ts.map +1 -0
  636. package/dist/tools/index-tools/snapshots.js +223 -0
  637. package/dist/tools/index-tools/snapshots.js.map +1 -0
  638. package/dist/tools/index-tools/state.d.ts +8 -0
  639. package/dist/tools/index-tools/state.d.ts.map +1 -0
  640. package/dist/tools/index-tools/state.js +6 -0
  641. package/dist/tools/index-tools/state.js.map +1 -0
  642. package/dist/tools/index-tools/types.d.ts +20 -0
  643. package/dist/tools/index-tools/types.d.ts.map +1 -0
  644. package/dist/tools/index-tools/types.js +2 -0
  645. package/dist/tools/index-tools/types.js.map +1 -0
  646. package/dist/tools/index-tools/watcher.d.ts +10 -0
  647. package/dist/tools/index-tools/watcher.d.ts.map +1 -0
  648. package/dist/tools/index-tools/watcher.js +130 -0
  649. package/dist/tools/index-tools/watcher.js.map +1 -0
  650. package/dist/tools/index-tools.d.ts +16 -152
  651. package/dist/tools/index-tools.d.ts.map +1 -1
  652. package/dist/tools/index-tools.js +12 -1674
  653. package/dist/tools/index-tools.js.map +1 -1
  654. package/dist/tools/kotlin-extension-tools.d.ts +16 -0
  655. package/dist/tools/kotlin-extension-tools.d.ts.map +1 -0
  656. package/dist/tools/kotlin-extension-tools.js +31 -0
  657. package/dist/tools/kotlin-extension-tools.js.map +1 -0
  658. package/dist/tools/kotlin-flow-tools.d.ts +12 -0
  659. package/dist/tools/kotlin-flow-tools.d.ts.map +1 -0
  660. package/dist/tools/kotlin-flow-tools.js +72 -0
  661. package/dist/tools/kotlin-flow-tools.js.map +1 -0
  662. package/dist/tools/kotlin-kmp-tools.d.ts +29 -0
  663. package/dist/tools/kotlin-kmp-tools.d.ts.map +1 -0
  664. package/dist/tools/kotlin-kmp-tools.js +87 -0
  665. package/dist/tools/kotlin-kmp-tools.js.map +1 -0
  666. package/dist/tools/kotlin-sealed-tools.d.ts +27 -0
  667. package/dist/tools/kotlin-sealed-tools.d.ts.map +1 -0
  668. package/dist/tools/kotlin-sealed-tools.js +130 -0
  669. package/dist/tools/kotlin-sealed-tools.js.map +1 -0
  670. package/dist/tools/kotlin-suspend-tools.d.ts +24 -0
  671. package/dist/tools/kotlin-suspend-tools.d.ts.map +1 -0
  672. package/dist/tools/kotlin-suspend-tools.js +161 -0
  673. package/dist/tools/kotlin-suspend-tools.js.map +1 -0
  674. package/dist/tools/kotlin-tools.d.ts +6 -141
  675. package/dist/tools/kotlin-tools.d.ts.map +1 -1
  676. package/dist/tools/kotlin-tools.js +6 -571
  677. package/dist/tools/kotlin-tools.js.map +1 -1
  678. package/dist/tools/nest-audit-tools.d.ts +43 -0
  679. package/dist/tools/nest-audit-tools.d.ts.map +1 -0
  680. package/dist/tools/nest-audit-tools.js +232 -0
  681. package/dist/tools/nest-audit-tools.js.map +1 -0
  682. package/dist/tools/nest-di-tools.d.ts +32 -0
  683. package/dist/tools/nest-di-tools.d.ts.map +1 -0
  684. package/dist/tools/nest-di-tools.js +161 -0
  685. package/dist/tools/nest-di-tools.js.map +1 -0
  686. package/dist/tools/nest-guard-tools.d.ts +34 -0
  687. package/dist/tools/nest-guard-tools.d.ts.map +1 -0
  688. package/dist/tools/nest-guard-tools.js +240 -0
  689. package/dist/tools/nest-guard-tools.js.map +1 -0
  690. package/dist/tools/nest-lifecycle-tools.d.ts +16 -0
  691. package/dist/tools/nest-lifecycle-tools.d.ts.map +1 -0
  692. package/dist/tools/nest-lifecycle-tools.js +54 -0
  693. package/dist/tools/nest-lifecycle-tools.js.map +1 -0
  694. package/dist/tools/nest-module-tools.d.ts +28 -0
  695. package/dist/tools/nest-module-tools.d.ts.map +1 -0
  696. package/dist/tools/nest-module-tools.js +86 -0
  697. package/dist/tools/nest-module-tools.js.map +1 -0
  698. package/dist/tools/nest-pipeline-tools.d.ts +32 -0
  699. package/dist/tools/nest-pipeline-tools.d.ts.map +1 -0
  700. package/dist/tools/nest-pipeline-tools.js +122 -0
  701. package/dist/tools/nest-pipeline-tools.js.map +1 -0
  702. package/dist/tools/nest-route-tools.d.ts +43 -0
  703. package/dist/tools/nest-route-tools.d.ts.map +1 -0
  704. package/dist/tools/nest-route-tools.js +261 -0
  705. package/dist/tools/nest-route-tools.js.map +1 -0
  706. package/dist/tools/nest-shared-tools.d.ts +13 -0
  707. package/dist/tools/nest-shared-tools.d.ts.map +1 -0
  708. package/dist/tools/nest-shared-tools.js +36 -0
  709. package/dist/tools/nest-shared-tools.js.map +1 -0
  710. package/dist/tools/nest-tools.d.ts +18 -195
  711. package/dist/tools/nest-tools.d.ts.map +1 -1
  712. package/dist/tools/nest-tools.js +11 -1140
  713. package/dist/tools/nest-tools.js.map +1 -1
  714. package/dist/tools/pattern-registry.d.ts +4 -0
  715. package/dist/tools/pattern-registry.d.ts.map +1 -0
  716. package/dist/tools/pattern-registry.js +3 -0
  717. package/dist/tools/pattern-registry.js.map +1 -0
  718. package/dist/tools/pattern-tools.d.ts +5 -46
  719. package/dist/tools/pattern-tools.d.ts.map +1 -1
  720. package/dist/tools/pattern-tools.js +4 -1102
  721. package/dist/tools/pattern-tools.js.map +1 -1
  722. package/dist/tools/patterns/adapters/astro.d.ts +3 -0
  723. package/dist/tools/patterns/adapters/astro.d.ts.map +1 -0
  724. package/dist/tools/patterns/adapters/astro.js +56 -0
  725. package/dist/tools/patterns/adapters/astro.js.map +1 -0
  726. package/dist/tools/patterns/adapters/common.d.ts +3 -0
  727. package/dist/tools/patterns/adapters/common.d.ts.map +1 -0
  728. package/dist/tools/patterns/adapters/common.js +38 -0
  729. package/dist/tools/patterns/adapters/common.js.map +1 -0
  730. package/dist/tools/patterns/adapters/database.d.ts +3 -0
  731. package/dist/tools/patterns/adapters/database.d.ts.map +1 -0
  732. package/dist/tools/patterns/adapters/database.js +32 -0
  733. package/dist/tools/patterns/adapters/database.js.map +1 -0
  734. package/dist/tools/patterns/adapters/hono.d.ts +3 -0
  735. package/dist/tools/patterns/adapters/hono.d.ts.map +1 -0
  736. package/dist/tools/patterns/adapters/hono.js +32 -0
  737. package/dist/tools/patterns/adapters/hono.js.map +1 -0
  738. package/dist/tools/patterns/adapters/kotlin.d.ts +3 -0
  739. package/dist/tools/patterns/adapters/kotlin.d.ts.map +1 -0
  740. package/dist/tools/patterns/adapters/kotlin.js +50 -0
  741. package/dist/tools/patterns/adapters/kotlin.js.map +1 -0
  742. package/dist/tools/patterns/adapters/nest.d.ts +3 -0
  743. package/dist/tools/patterns/adapters/nest.d.ts.map +1 -0
  744. package/dist/tools/patterns/adapters/nest.js +122 -0
  745. package/dist/tools/patterns/adapters/nest.js.map +1 -0
  746. package/dist/tools/patterns/adapters/nextjs.d.ts +4 -0
  747. package/dist/tools/patterns/adapters/nextjs.d.ts.map +1 -0
  748. package/dist/tools/patterns/adapters/nextjs.js +59 -0
  749. package/dist/tools/patterns/adapters/nextjs.js.map +1 -0
  750. package/dist/tools/patterns/adapters/php.d.ts +3 -0
  751. package/dist/tools/patterns/adapters/php.d.ts.map +1 -0
  752. package/dist/tools/patterns/adapters/php.js +157 -0
  753. package/dist/tools/patterns/adapters/php.js.map +1 -0
  754. package/dist/tools/patterns/adapters/python.d.ts +3 -0
  755. package/dist/tools/patterns/adapters/python.d.ts.map +1 -0
  756. package/dist/tools/patterns/adapters/python.js +72 -0
  757. package/dist/tools/patterns/adapters/python.js.map +1 -0
  758. package/dist/tools/patterns/adapters/react.d.ts +4 -0
  759. package/dist/tools/patterns/adapters/react.d.ts.map +1 -0
  760. package/dist/tools/patterns/adapters/react.js +345 -0
  761. package/dist/tools/patterns/adapters/react.js.map +1 -0
  762. package/dist/tools/patterns/catalog.d.ts +8 -0
  763. package/dist/tools/patterns/catalog.d.ts.map +1 -0
  764. package/dist/tools/patterns/catalog.js +30 -0
  765. package/dist/tools/patterns/catalog.js.map +1 -0
  766. package/dist/tools/patterns/execution.d.ts +38 -0
  767. package/dist/tools/patterns/execution.d.ts.map +1 -0
  768. package/dist/tools/patterns/execution.js +298 -0
  769. package/dist/tools/patterns/execution.js.map +1 -0
  770. package/dist/tools/patterns/types.d.ts +13 -0
  771. package/dist/tools/patterns/types.d.ts.map +1 -0
  772. package/dist/tools/patterns/types.js +2 -0
  773. package/dist/tools/patterns/types.js.map +1 -0
  774. package/dist/tools/pg-drift-compare.d.ts +3 -0
  775. package/dist/tools/pg-drift-compare.d.ts.map +1 -0
  776. package/dist/tools/pg-drift-compare.js +30 -0
  777. package/dist/tools/pg-drift-compare.js.map +1 -0
  778. package/dist/tools/pg-drift-schema.d.ts +5 -0
  779. package/dist/tools/pg-drift-schema.d.ts.map +1 -0
  780. package/dist/tools/pg-drift-schema.js +28 -0
  781. package/dist/tools/pg-drift-schema.js.map +1 -0
  782. package/dist/tools/pg-drift-types.d.ts +25 -0
  783. package/dist/tools/pg-drift-types.d.ts.map +1 -0
  784. package/dist/tools/pg-drift-types.js +2 -0
  785. package/dist/tools/pg-drift-types.js.map +1 -0
  786. package/dist/tools/pg-drift.d.ts +5 -0
  787. package/dist/tools/pg-drift.d.ts.map +1 -0
  788. package/dist/tools/pg-drift.js +30 -0
  789. package/dist/tools/pg-drift.js.map +1 -0
  790. package/dist/tools/pg-introspect-formatters.d.ts +7 -0
  791. package/dist/tools/pg-introspect-formatters.d.ts.map +1 -0
  792. package/dist/tools/pg-introspect-formatters.js +66 -0
  793. package/dist/tools/pg-introspect-formatters.js.map +1 -0
  794. package/dist/tools/pg-introspect-tools.d.ts +5 -146
  795. package/dist/tools/pg-introspect-tools.d.ts.map +1 -1
  796. package/dist/tools/pg-introspect-tools.js +3 -395
  797. package/dist/tools/pg-introspect-tools.js.map +1 -1
  798. package/dist/tools/pg-introspection.d.ts +90 -0
  799. package/dist/tools/pg-introspection.d.ts.map +1 -0
  800. package/dist/tools/pg-introspection.js +288 -0
  801. package/dist/tools/pg-introspection.js.map +1 -0
  802. package/dist/tools/php-active-record-tools.d.ts +22 -0
  803. package/dist/tools/php-active-record-tools.d.ts.map +1 -0
  804. package/dist/tools/php-active-record-tools.js +165 -0
  805. package/dist/tools/php-active-record-tools.js.map +1 -0
  806. package/dist/tools/php-event-tools.d.ts +21 -0
  807. package/dist/tools/php-event-tools.d.ts.map +1 -0
  808. package/dist/tools/php-event-tools.js +205 -0
  809. package/dist/tools/php-event-tools.js.map +1 -0
  810. package/dist/tools/php-god-model-tools.d.ts +34 -0
  811. package/dist/tools/php-god-model-tools.d.ts.map +1 -0
  812. package/dist/tools/php-god-model-tools.js +88 -0
  813. package/dist/tools/php-god-model-tools.js.map +1 -0
  814. package/dist/tools/php-import-utils.d.ts +10 -0
  815. package/dist/tools/php-import-utils.d.ts.map +1 -0
  816. package/dist/tools/php-import-utils.js +71 -0
  817. package/dist/tools/php-import-utils.js.map +1 -0
  818. package/dist/tools/php-namespace-tools.d.ts +10 -0
  819. package/dist/tools/php-namespace-tools.d.ts.map +1 -0
  820. package/dist/tools/php-namespace-tools.js +98 -0
  821. package/dist/tools/php-namespace-tools.js.map +1 -0
  822. package/dist/tools/php-nplus1-tools.d.ts +27 -0
  823. package/dist/tools/php-nplus1-tools.d.ts.map +1 -0
  824. package/dist/tools/php-nplus1-tools.js +191 -0
  825. package/dist/tools/php-nplus1-tools.js.map +1 -0
  826. package/dist/tools/php-project-audit-tools.d.ts +31 -0
  827. package/dist/tools/php-project-audit-tools.d.ts.map +1 -0
  828. package/dist/tools/php-project-audit-tools.js +173 -0
  829. package/dist/tools/php-project-audit-tools.js.map +1 -0
  830. package/dist/tools/php-security-tools.d.ts +24 -0
  831. package/dist/tools/php-security-tools.d.ts.map +1 -0
  832. package/dist/tools/php-security-tools.js +172 -0
  833. package/dist/tools/php-security-tools.js.map +1 -0
  834. package/dist/tools/php-service-tools.d.ts +25 -0
  835. package/dist/tools/php-service-tools.d.ts.map +1 -0
  836. package/dist/tools/php-service-tools.js +326 -0
  837. package/dist/tools/php-service-tools.js.map +1 -0
  838. package/dist/tools/php-tools.d.ts +21 -255
  839. package/dist/tools/php-tools.d.ts.map +1 -1
  840. package/dist/tools/php-tools.js +12 -1423
  841. package/dist/tools/php-tools.js.map +1 -1
  842. package/dist/tools/php-view-tools.d.ts +76 -0
  843. package/dist/tools/php-view-tools.d.ts.map +1 -0
  844. package/dist/tools/php-view-tools.js +413 -0
  845. package/dist/tools/php-view-tools.js.map +1 -0
  846. package/dist/tools/plan-turn/formatter.d.ts +3 -0
  847. package/dist/tools/plan-turn/formatter.d.ts.map +1 -0
  848. package/dist/tools/plan-turn/formatter.js +88 -0
  849. package/dist/tools/plan-turn/formatter.js.map +1 -0
  850. package/dist/tools/plan-turn/framework-context.d.ts +5 -0
  851. package/dist/tools/plan-turn/framework-context.d.ts.map +1 -0
  852. package/dist/tools/plan-turn/framework-context.js +68 -0
  853. package/dist/tools/plan-turn/framework-context.js.map +1 -0
  854. package/dist/tools/plan-turn/framework-data.d.ts +5 -0
  855. package/dist/tools/plan-turn/framework-data.d.ts.map +1 -0
  856. package/dist/tools/plan-turn/framework-data.js +48 -0
  857. package/dist/tools/plan-turn/framework-data.js.map +1 -0
  858. package/dist/tools/plan-turn/orchestrator.d.ts +4 -0
  859. package/dist/tools/plan-turn/orchestrator.d.ts.map +1 -0
  860. package/dist/tools/plan-turn/orchestrator.js +262 -0
  861. package/dist/tools/plan-turn/orchestrator.js.map +1 -0
  862. package/dist/tools/plan-turn/query-parser.d.ts +6 -0
  863. package/dist/tools/plan-turn/query-parser.d.ts.map +1 -0
  864. package/dist/tools/plan-turn/query-parser.js +60 -0
  865. package/dist/tools/plan-turn/query-parser.js.map +1 -0
  866. package/dist/tools/plan-turn/recommendations.d.ts +11 -0
  867. package/dist/tools/plan-turn/recommendations.d.ts.map +1 -0
  868. package/dist/tools/plan-turn/recommendations.js +93 -0
  869. package/dist/tools/plan-turn/recommendations.js.map +1 -0
  870. package/dist/tools/plan-turn/stale-index.d.ts +4 -0
  871. package/dist/tools/plan-turn/stale-index.d.ts.map +1 -0
  872. package/dist/tools/plan-turn/stale-index.js +17 -0
  873. package/dist/tools/plan-turn/stale-index.js.map +1 -0
  874. package/dist/tools/plan-turn/types.d.ts +61 -0
  875. package/dist/tools/plan-turn/types.d.ts.map +1 -0
  876. package/dist/tools/plan-turn/types.js +2 -0
  877. package/dist/tools/plan-turn/types.js.map +1 -0
  878. package/dist/tools/plan-turn-tools.d.ts +8 -111
  879. package/dist/tools/plan-turn-tools.d.ts.map +1 -1
  880. package/dist/tools/plan-turn-tools.js +6 -696
  881. package/dist/tools/plan-turn-tools.js.map +1 -1
  882. package/dist/tools/project-profile-express.d.ts +3 -0
  883. package/dist/tools/project-profile-express.d.ts.map +1 -0
  884. package/dist/tools/project-profile-express.js +46 -0
  885. package/dist/tools/project-profile-express.js.map +1 -0
  886. package/dist/tools/project-profile-extractors.d.ts +9 -0
  887. package/dist/tools/project-profile-extractors.d.ts.map +1 -0
  888. package/dist/tools/project-profile-extractors.js +312 -0
  889. package/dist/tools/project-profile-extractors.js.map +1 -0
  890. package/dist/tools/project-profile-fs.d.ts +3 -0
  891. package/dist/tools/project-profile-fs.d.ts.map +1 -0
  892. package/dist/tools/project-profile-fs.js +19 -0
  893. package/dist/tools/project-profile-fs.js.map +1 -0
  894. package/dist/tools/project-profile-hono.d.ts +13 -0
  895. package/dist/tools/project-profile-hono.d.ts.map +1 -0
  896. package/dist/tools/project-profile-hono.js +110 -0
  897. package/dist/tools/project-profile-hono.js.map +1 -0
  898. package/dist/tools/project-profile-imports.d.ts +6 -0
  899. package/dist/tools/project-profile-imports.d.ts.map +1 -0
  900. package/dist/tools/project-profile-imports.js +95 -0
  901. package/dist/tools/project-profile-imports.js.map +1 -0
  902. package/dist/tools/project-profile-nest.d.ts +8 -0
  903. package/dist/tools/project-profile-nest.d.ts.map +1 -0
  904. package/dist/tools/project-profile-nest.js +352 -0
  905. package/dist/tools/project-profile-nest.js.map +1 -0
  906. package/dist/tools/project-profile-next.d.ts +5 -0
  907. package/dist/tools/project-profile-next.d.ts.map +1 -0
  908. package/dist/tools/project-profile-next.js +92 -0
  909. package/dist/tools/project-profile-next.js.map +1 -0
  910. package/dist/tools/project-profile-persistence.d.ts +3 -0
  911. package/dist/tools/project-profile-persistence.d.ts.map +1 -0
  912. package/dist/tools/project-profile-persistence.js +19 -0
  913. package/dist/tools/project-profile-persistence.js.map +1 -0
  914. package/dist/tools/project-profile-php.d.ts +8 -0
  915. package/dist/tools/project-profile-php.d.ts.map +1 -0
  916. package/dist/tools/project-profile-php.js +76 -0
  917. package/dist/tools/project-profile-php.js.map +1 -0
  918. package/dist/tools/project-profile-python.d.ts +5 -0
  919. package/dist/tools/project-profile-python.d.ts.map +1 -0
  920. package/dist/tools/project-profile-python.js +51 -0
  921. package/dist/tools/project-profile-python.js.map +1 -0
  922. package/dist/tools/project-profile-react.d.ts +6 -0
  923. package/dist/tools/project-profile-react.d.ts.map +1 -0
  924. package/dist/tools/project-profile-react.js +106 -0
  925. package/dist/tools/project-profile-react.js.map +1 -0
  926. package/dist/tools/project-profile-stack.d.ts +3 -0
  927. package/dist/tools/project-profile-stack.d.ts.map +1 -0
  928. package/dist/tools/project-profile-stack.js +354 -0
  929. package/dist/tools/project-profile-stack.js.map +1 -0
  930. package/dist/tools/project-profile-summary.d.ts +30 -0
  931. package/dist/tools/project-profile-summary.d.ts.map +1 -0
  932. package/dist/tools/project-profile-summary.js +112 -0
  933. package/dist/tools/project-profile-summary.js.map +1 -0
  934. package/dist/tools/project-profile-types.d.ts +315 -0
  935. package/dist/tools/project-profile-types.d.ts.map +1 -0
  936. package/dist/tools/project-profile-types.js +2 -0
  937. package/dist/tools/project-profile-types.js.map +1 -0
  938. package/dist/tools/project-tools.d.ts +17 -383
  939. package/dist/tools/project-tools.d.ts.map +1 -1
  940. package/dist/tools/project-tools.js +35 -1621
  941. package/dist/tools/project-tools.js.map +1 -1
  942. package/dist/tools/python-audit/aggregate.d.ts +3 -0
  943. package/dist/tools/python-audit/aggregate.d.ts.map +1 -0
  944. package/dist/tools/python-audit/aggregate.js +103 -0
  945. package/dist/tools/python-audit/aggregate.js.map +1 -0
  946. package/dist/tools/python-audit/checks/anti-patterns.d.ts +6 -0
  947. package/dist/tools/python-audit/checks/anti-patterns.d.ts.map +1 -0
  948. package/dist/tools/python-audit/checks/anti-patterns.js +14 -0
  949. package/dist/tools/python-audit/checks/anti-patterns.js.map +1 -0
  950. package/dist/tools/python-audit/checks/celery.d.ts +2 -0
  951. package/dist/tools/python-audit/checks/celery.d.ts.map +1 -0
  952. package/dist/tools/python-audit/checks/celery.js +5 -0
  953. package/dist/tools/python-audit/checks/celery.js.map +1 -0
  954. package/dist/tools/python-audit/checks/circular-imports.d.ts +2 -0
  955. package/dist/tools/python-audit/checks/circular-imports.d.ts.map +1 -0
  956. package/dist/tools/python-audit/checks/circular-imports.js +5 -0
  957. package/dist/tools/python-audit/checks/circular-imports.js.map +1 -0
  958. package/dist/tools/python-audit/checks/dead-code.d.ts +2 -0
  959. package/dist/tools/python-audit/checks/dead-code.d.ts.map +1 -0
  960. package/dist/tools/python-audit/checks/dead-code.js +5 -0
  961. package/dist/tools/python-audit/checks/dead-code.js.map +1 -0
  962. package/dist/tools/python-audit/checks/dependencies.d.ts +2 -0
  963. package/dist/tools/python-audit/checks/dependencies.d.ts.map +1 -0
  964. package/dist/tools/python-audit/checks/dependencies.js +5 -0
  965. package/dist/tools/python-audit/checks/dependencies.js.map +1 -0
  966. package/dist/tools/python-audit/checks/django-settings.d.ts +2 -0
  967. package/dist/tools/python-audit/checks/django-settings.d.ts.map +1 -0
  968. package/dist/tools/python-audit/checks/django-settings.js +5 -0
  969. package/dist/tools/python-audit/checks/django-settings.js.map +1 -0
  970. package/dist/tools/python-audit/checks/framework-wiring.d.ts +2 -0
  971. package/dist/tools/python-audit/checks/framework-wiring.d.ts.map +1 -0
  972. package/dist/tools/python-audit/checks/framework-wiring.js +5 -0
  973. package/dist/tools/python-audit/checks/framework-wiring.js.map +1 -0
  974. package/dist/tools/python-audit/checks/pytest-fixtures.d.ts +2 -0
  975. package/dist/tools/python-audit/checks/pytest-fixtures.d.ts.map +1 -0
  976. package/dist/tools/python-audit/checks/pytest-fixtures.js +5 -0
  977. package/dist/tools/python-audit/checks/pytest-fixtures.js.map +1 -0
  978. package/dist/tools/python-audit/runner.d.ts +5 -0
  979. package/dist/tools/python-audit/runner.d.ts.map +1 -0
  980. package/dist/tools/python-audit/runner.js +18 -0
  981. package/dist/tools/python-audit/runner.js.map +1 -0
  982. package/dist/tools/python-audit/types.d.ts +43 -0
  983. package/dist/tools/python-audit/types.d.ts.map +1 -0
  984. package/dist/tools/python-audit/types.js +2 -0
  985. package/dist/tools/python-audit/types.js.map +1 -0
  986. package/dist/tools/python-audit.d.ts +3 -39
  987. package/dist/tools/python-audit.d.ts.map +1 -1
  988. package/dist/tools/python-audit.js +34 -233
  989. package/dist/tools/python-audit.js.map +1 -1
  990. package/dist/tools/react-compiler-tools.d.ts +37 -0
  991. package/dist/tools/react-compiler-tools.d.ts.map +1 -0
  992. package/dist/tools/react-compiler-tools.js +104 -0
  993. package/dist/tools/react-compiler-tools.js.map +1 -0
  994. package/dist/tools/react-component-tree-tools.d.ts +58 -0
  995. package/dist/tools/react-component-tree-tools.d.ts.map +1 -0
  996. package/dist/tools/react-component-tree-tools.js +292 -0
  997. package/dist/tools/react-component-tree-tools.js.map +1 -0
  998. package/dist/tools/react-context-tools.d.ts +41 -0
  999. package/dist/tools/react-context-tools.d.ts.map +1 -0
  1000. package/dist/tools/react-context-tools.js +76 -0
  1001. package/dist/tools/react-context-tools.js.map +1 -0
  1002. package/dist/tools/react-hooks-tools.d.ts +58 -0
  1003. package/dist/tools/react-hooks-tools.d.ts.map +1 -0
  1004. package/dist/tools/react-hooks-tools.js +144 -0
  1005. package/dist/tools/react-hooks-tools.js.map +1 -0
  1006. package/dist/tools/react-quickstart-tools.d.ts +59 -0
  1007. package/dist/tools/react-quickstart-tools.d.ts.map +1 -0
  1008. package/dist/tools/react-quickstart-tools.js +164 -0
  1009. package/dist/tools/react-quickstart-tools.js.map +1 -0
  1010. package/dist/tools/react-render-tools.d.ts +75 -0
  1011. package/dist/tools/react-render-tools.d.ts.map +1 -0
  1012. package/dist/tools/react-render-tools.js +234 -0
  1013. package/dist/tools/react-render-tools.js.map +1 -0
  1014. package/dist/tools/react-shared-tools.d.ts +5 -0
  1015. package/dist/tools/react-shared-tools.d.ts.map +1 -0
  1016. package/dist/tools/react-shared-tools.js +12 -0
  1017. package/dist/tools/react-shared-tools.js.map +1 -0
  1018. package/dist/tools/react-suspense-tools.d.ts +29 -0
  1019. package/dist/tools/react-suspense-tools.d.ts.map +1 -0
  1020. package/dist/tools/react-suspense-tools.js +269 -0
  1021. package/dist/tools/react-suspense-tools.js.map +1 -0
  1022. package/dist/tools/react-tools.d.ts +19 -340
  1023. package/dist/tools/react-tools.d.ts.map +1 -1
  1024. package/dist/tools/react-tools.js +10 -1263
  1025. package/dist/tools/react-tools.js.map +1 -1
  1026. package/dist/tools/review-diff/check-runner.d.ts +5 -0
  1027. package/dist/tools/review-diff/check-runner.d.ts.map +1 -0
  1028. package/dist/tools/review-diff/check-runner.js +26 -0
  1029. package/dist/tools/review-diff/check-runner.js.map +1 -0
  1030. package/dist/tools/review-diff/checks/astro-hydration.d.ts +8 -0
  1031. package/dist/tools/review-diff/checks/astro-hydration.d.ts.map +1 -0
  1032. package/dist/tools/review-diff/checks/astro-hydration.js +54 -0
  1033. package/dist/tools/review-diff/checks/astro-hydration.js.map +1 -0
  1034. package/dist/tools/review-diff/checks/blast-radius.d.ts +7 -0
  1035. package/dist/tools/review-diff/checks/blast-radius.d.ts.map +1 -0
  1036. package/dist/tools/review-diff/checks/blast-radius.js +39 -0
  1037. package/dist/tools/review-diff/checks/blast-radius.js.map +1 -0
  1038. package/dist/tools/review-diff/checks/breaking.d.ts +13 -0
  1039. package/dist/tools/review-diff/checks/breaking.d.ts.map +1 -0
  1040. package/dist/tools/review-diff/checks/breaking.js +115 -0
  1041. package/dist/tools/review-diff/checks/breaking.js.map +1 -0
  1042. package/dist/tools/review-diff/checks/bug-patterns.d.ts +8 -0
  1043. package/dist/tools/review-diff/checks/bug-patterns.d.ts.map +1 -0
  1044. package/dist/tools/review-diff/checks/bug-patterns.js +130 -0
  1045. package/dist/tools/review-diff/checks/bug-patterns.js.map +1 -0
  1046. package/dist/tools/review-diff/checks/complexity.d.ts +8 -0
  1047. package/dist/tools/review-diff/checks/complexity.d.ts.map +1 -0
  1048. package/dist/tools/review-diff/checks/complexity.js +41 -0
  1049. package/dist/tools/review-diff/checks/complexity.js.map +1 -0
  1050. package/dist/tools/review-diff/checks/coupling.d.ts +7 -0
  1051. package/dist/tools/review-diff/checks/coupling.d.ts.map +1 -0
  1052. package/dist/tools/review-diff/checks/coupling.js +52 -0
  1053. package/dist/tools/review-diff/checks/coupling.js.map +1 -0
  1054. package/dist/tools/review-diff/checks/dead-code.d.ts +7 -0
  1055. package/dist/tools/review-diff/checks/dead-code.d.ts.map +1 -0
  1056. package/dist/tools/review-diff/checks/dead-code.js +39 -0
  1057. package/dist/tools/review-diff/checks/dead-code.js.map +1 -0
  1058. package/dist/tools/review-diff/checks/hotspots.d.ts +8 -0
  1059. package/dist/tools/review-diff/checks/hotspots.d.ts.map +1 -0
  1060. package/dist/tools/review-diff/checks/hotspots.js +39 -0
  1061. package/dist/tools/review-diff/checks/hotspots.js.map +1 -0
  1062. package/dist/tools/review-diff/checks/secrets.d.ts +7 -0
  1063. package/dist/tools/review-diff/checks/secrets.d.ts.map +1 -0
  1064. package/dist/tools/review-diff/checks/secrets.js +38 -0
  1065. package/dist/tools/review-diff/checks/secrets.js.map +1 -0
  1066. package/dist/tools/review-diff/checks/test-gaps.d.ts +16 -0
  1067. package/dist/tools/review-diff/checks/test-gaps.d.ts.map +1 -0
  1068. package/dist/tools/review-diff/checks/test-gaps.js +77 -0
  1069. package/dist/tools/review-diff/checks/test-gaps.js.map +1 -0
  1070. package/dist/tools/review-diff/constants.d.ts +6 -0
  1071. package/dist/tools/review-diff/constants.d.ts.map +1 -0
  1072. package/dist/tools/review-diff/constants.js +16 -0
  1073. package/dist/tools/review-diff/constants.js.map +1 -0
  1074. package/dist/tools/review-diff/file-pattern.d.ts +2 -0
  1075. package/dist/tools/review-diff/file-pattern.d.ts.map +1 -0
  1076. package/dist/tools/review-diff/file-pattern.js +9 -0
  1077. package/dist/tools/review-diff/file-pattern.js.map +1 -0
  1078. package/dist/tools/review-diff/orchestrator.d.ts +3 -0
  1079. package/dist/tools/review-diff/orchestrator.d.ts.map +1 -0
  1080. package/dist/tools/review-diff/orchestrator.js +173 -0
  1081. package/dist/tools/review-diff/orchestrator.js.map +1 -0
  1082. package/dist/tools/review-diff/scoring.d.ts +31 -0
  1083. package/dist/tools/review-diff/scoring.d.ts.map +1 -0
  1084. package/dist/tools/review-diff/scoring.js +82 -0
  1085. package/dist/tools/review-diff/scoring.js.map +1 -0
  1086. package/dist/tools/review-diff/timeout.d.ts +5 -0
  1087. package/dist/tools/review-diff/timeout.d.ts.map +1 -0
  1088. package/dist/tools/review-diff/timeout.js +14 -0
  1089. package/dist/tools/review-diff/timeout.js.map +1 -0
  1090. package/dist/tools/review-diff/types.d.ts +56 -0
  1091. package/dist/tools/review-diff/types.d.ts.map +1 -0
  1092. package/dist/tools/review-diff/types.js +2 -0
  1093. package/dist/tools/review-diff/types.js.map +1 -0
  1094. package/dist/tools/review-diff-tools.d.ts +19 -147
  1095. package/dist/tools/review-diff-tools.d.ts.map +1 -1
  1096. package/dist/tools/review-diff-tools.js +18 -941
  1097. package/dist/tools/review-diff-tools.js.map +1 -1
  1098. package/dist/tools/route-shared.d.ts +6 -0
  1099. package/dist/tools/route-shared.d.ts.map +1 -0
  1100. package/dist/tools/route-shared.js +37 -0
  1101. package/dist/tools/route-shared.js.map +1 -0
  1102. package/dist/tools/route-tools.d.ts +1 -7
  1103. package/dist/tools/route-tools.d.ts.map +1 -1
  1104. package/dist/tools/route-tools.js +2 -22
  1105. package/dist/tools/route-tools.js.map +1 -1
  1106. package/dist/tools/search-tools/constants.d.ts +33 -0
  1107. package/dist/tools/search-tools/constants.d.ts.map +1 -0
  1108. package/dist/tools/search-tools/constants.js +54 -0
  1109. package/dist/tools/search-tools/constants.js.map +1 -0
  1110. package/dist/tools/search-tools/ripgrep.d.ts +13 -0
  1111. package/dist/tools/search-tools/ripgrep.d.ts.map +1 -0
  1112. package/dist/tools/search-tools/ripgrep.js +138 -0
  1113. package/dist/tools/search-tools/ripgrep.js.map +1 -0
  1114. package/dist/tools/search-tools/semantic-search.d.ts +9 -0
  1115. package/dist/tools/search-tools/semantic-search.d.ts.map +1 -0
  1116. package/dist/tools/search-tools/semantic-search.js +19 -0
  1117. package/dist/tools/search-tools/semantic-search.js.map +1 -0
  1118. package/dist/tools/search-tools/symbol-search.d.ts +4 -0
  1119. package/dist/tools/search-tools/symbol-search.d.ts.map +1 -0
  1120. package/dist/tools/search-tools/symbol-search.js +146 -0
  1121. package/dist/tools/search-tools/symbol-search.js.map +1 -0
  1122. package/dist/tools/search-tools/text-search.d.ts +10 -0
  1123. package/dist/tools/search-tools/text-search.d.ts.map +1 -0
  1124. package/dist/tools/search-tools/text-search.js +260 -0
  1125. package/dist/tools/search-tools/text-search.js.map +1 -0
  1126. package/dist/tools/search-tools/types.d.ts +28 -0
  1127. package/dist/tools/search-tools/types.d.ts.map +1 -0
  1128. package/dist/tools/search-tools/types.js +2 -0
  1129. package/dist/tools/search-tools/types.js.map +1 -0
  1130. package/dist/tools/search-tools/zero-hit.d.ts +3 -0
  1131. package/dist/tools/search-tools/zero-hit.d.ts.map +1 -0
  1132. package/dist/tools/search-tools/zero-hit.js +92 -0
  1133. package/dist/tools/search-tools/zero-hit.js.map +1 -0
  1134. package/dist/tools/search-tools.d.ts +5 -64
  1135. package/dist/tools/search-tools.d.ts.map +1 -1
  1136. package/dist/tools/search-tools.js +4 -770
  1137. package/dist/tools/search-tools.js.map +1 -1
  1138. package/dist/tools/secret-detectors.d.ts +12 -0
  1139. package/dist/tools/secret-detectors.d.ts.map +1 -0
  1140. package/dist/tools/secret-detectors.js +86 -0
  1141. package/dist/tools/secret-detectors.js.map +1 -0
  1142. package/dist/tools/secret-file-scanner.d.ts +7 -0
  1143. package/dist/tools/secret-file-scanner.d.ts.map +1 -0
  1144. package/dist/tools/secret-file-scanner.js +52 -0
  1145. package/dist/tools/secret-file-scanner.js.map +1 -0
  1146. package/dist/tools/secret-scan-cache.d.ts +6 -0
  1147. package/dist/tools/secret-scan-cache.d.ts.map +1 -0
  1148. package/dist/tools/secret-scan-cache.js +14 -0
  1149. package/dist/tools/secret-scan-cache.js.map +1 -0
  1150. package/dist/tools/secret-scan-shared.d.ts +5 -0
  1151. package/dist/tools/secret-scan-shared.d.ts.map +1 -0
  1152. package/dist/tools/secret-scan-shared.js +4 -0
  1153. package/dist/tools/secret-scan-shared.js.map +1 -0
  1154. package/dist/tools/secret-scan-types.d.ts +21 -0
  1155. package/dist/tools/secret-scan-types.d.ts.map +1 -0
  1156. package/dist/tools/secret-scan-types.js +2 -0
  1157. package/dist/tools/secret-scan-types.js.map +1 -0
  1158. package/dist/tools/secret-tools.d.ts +3 -75
  1159. package/dist/tools/secret-tools.d.ts.map +1 -1
  1160. package/dist/tools/secret-tools.js +4 -316
  1161. package/dist/tools/secret-tools.js.map +1 -1
  1162. package/dist/tools/sql-audit-tools.d.ts +42 -0
  1163. package/dist/tools/sql-audit-tools.d.ts.map +1 -0
  1164. package/dist/tools/sql-audit-tools.js +130 -0
  1165. package/dist/tools/sql-audit-tools.js.map +1 -0
  1166. package/dist/tools/sql-column-tools.d.ts +28 -0
  1167. package/dist/tools/sql-column-tools.d.ts.map +1 -0
  1168. package/dist/tools/sql-column-tools.js +58 -0
  1169. package/dist/tools/sql-column-tools.js.map +1 -0
  1170. package/dist/tools/sql-complexity-tools.d.ts +22 -0
  1171. package/dist/tools/sql-complexity-tools.d.ts.map +1 -0
  1172. package/dist/tools/sql-complexity-tools.js +60 -0
  1173. package/dist/tools/sql-complexity-tools.js.map +1 -0
  1174. package/dist/tools/sql-dml-safety-tools.d.ts +26 -0
  1175. package/dist/tools/sql-dml-safety-tools.d.ts.map +1 -0
  1176. package/dist/tools/sql-dml-safety-tools.js +104 -0
  1177. package/dist/tools/sql-dml-safety-tools.js.map +1 -0
  1178. package/dist/tools/sql-drift-tools.d.ts +39 -0
  1179. package/dist/tools/sql-drift-tools.d.ts.map +1 -0
  1180. package/dist/tools/sql-drift-tools.js +238 -0
  1181. package/dist/tools/sql-drift-tools.js.map +1 -0
  1182. package/dist/tools/sql-lint-schema-tools.d.ts +28 -0
  1183. package/dist/tools/sql-lint-schema-tools.d.ts.map +1 -0
  1184. package/dist/tools/sql-lint-schema-tools.js +96 -0
  1185. package/dist/tools/sql-lint-schema-tools.js.map +1 -0
  1186. package/dist/tools/sql-migration-diff-tools.d.ts +24 -0
  1187. package/dist/tools/sql-migration-diff-tools.d.ts.map +1 -0
  1188. package/dist/tools/sql-migration-diff-tools.js +120 -0
  1189. package/dist/tools/sql-migration-diff-tools.js.map +1 -0
  1190. package/dist/tools/sql-orphan-table-tools.d.ts +20 -0
  1191. package/dist/tools/sql-orphan-table-tools.d.ts.map +1 -0
  1192. package/dist/tools/sql-orphan-table-tools.js +70 -0
  1193. package/dist/tools/sql-orphan-table-tools.js.map +1 -0
  1194. package/dist/tools/sql-query-tools.d.ts +32 -0
  1195. package/dist/tools/sql-query-tools.d.ts.map +1 -0
  1196. package/dist/tools/sql-query-tools.js +130 -0
  1197. package/dist/tools/sql-query-tools.js.map +1 -0
  1198. package/dist/tools/sql-schema-tools.d.ts +47 -0
  1199. package/dist/tools/sql-schema-tools.d.ts.map +1 -0
  1200. package/dist/tools/sql-schema-tools.js +202 -0
  1201. package/dist/tools/sql-schema-tools.js.map +1 -0
  1202. package/dist/tools/sql-shared-tools.d.ts +6 -0
  1203. package/dist/tools/sql-shared-tools.d.ts.map +1 -0
  1204. package/dist/tools/sql-shared-tools.js +59 -0
  1205. package/dist/tools/sql-shared-tools.js.map +1 -0
  1206. package/dist/tools/sql-tools.d.ts +25 -296
  1207. package/dist/tools/sql-tools.d.ts.map +1 -1
  1208. package/dist/tools/sql-tools.js +15 -1232
  1209. package/dist/tools/sql-tools.js.map +1 -1
  1210. package/dist/tools/status-tools.js +1 -1
  1211. package/dist/tools/status-tools.js.map +1 -1
  1212. package/dist/tools/workspace-tools.d.ts +1 -1
  1213. package/dist/tools/yii3-migration-categories-application.d.ts +4 -0
  1214. package/dist/tools/yii3-migration-categories-application.d.ts.map +1 -0
  1215. package/dist/tools/yii3-migration-categories-application.js +56 -0
  1216. package/dist/tools/yii3-migration-categories-application.js.map +1 -0
  1217. package/dist/tools/yii3-migration-categories-infrastructure.d.ts +4 -0
  1218. package/dist/tools/yii3-migration-categories-infrastructure.d.ts.map +1 -0
  1219. package/dist/tools/yii3-migration-categories-infrastructure.js +67 -0
  1220. package/dist/tools/yii3-migration-categories-infrastructure.js.map +1 -0
  1221. package/dist/tools/yii3-migration-categories-model-view.d.ts +4 -0
  1222. package/dist/tools/yii3-migration-categories-model-view.d.ts.map +1 -0
  1223. package/dist/tools/yii3-migration-categories-model-view.js +59 -0
  1224. package/dist/tools/yii3-migration-categories-model-view.js.map +1 -0
  1225. package/dist/tools/yii3-migration-categories-runtime.d.ts +4 -0
  1226. package/dist/tools/yii3-migration-categories-runtime.d.ts.map +1 -0
  1227. package/dist/tools/yii3-migration-categories-runtime.js +49 -0
  1228. package/dist/tools/yii3-migration-categories-runtime.js.map +1 -0
  1229. package/dist/tools/yii3-migration-categories.d.ts +5 -0
  1230. package/dist/tools/yii3-migration-categories.d.ts.map +1 -0
  1231. package/dist/tools/yii3-migration-categories.js +18 -0
  1232. package/dist/tools/yii3-migration-categories.js.map +1 -0
  1233. package/dist/tools/yii3-migration-report.d.ts +4 -0
  1234. package/dist/tools/yii3-migration-report.d.ts.map +1 -0
  1235. package/dist/tools/yii3-migration-report.js +88 -0
  1236. package/dist/tools/yii3-migration-report.js.map +1 -0
  1237. package/dist/tools/yii3-migration-scanner.d.ts +28 -0
  1238. package/dist/tools/yii3-migration-scanner.d.ts.map +1 -0
  1239. package/dist/tools/yii3-migration-scanner.js +87 -0
  1240. package/dist/tools/yii3-migration-scanner.js.map +1 -0
  1241. package/dist/tools/yii3-migration-tools.d.ts +4 -73
  1242. package/dist/tools/yii3-migration-tools.d.ts.map +1 -1
  1243. package/dist/tools/yii3-migration-tools.js +5 -433
  1244. package/dist/tools/yii3-migration-tools.js.map +1 -1
  1245. package/dist/tools/yii3-migration-types.d.ts +50 -0
  1246. package/dist/tools/yii3-migration-types.d.ts.map +1 -0
  1247. package/dist/tools/yii3-migration-types.js +3 -0
  1248. package/dist/tools/yii3-migration-types.js.map +1 -0
  1249. package/dist/utils/git-validation.d.ts +24 -0
  1250. package/dist/utils/git-validation.d.ts.map +1 -1
  1251. package/dist/utils/git-validation.js +30 -0
  1252. package/dist/utils/git-validation.js.map +1 -1
  1253. package/dist/utils/source-stripper/code-handler.d.ts +3 -0
  1254. package/dist/utils/source-stripper/code-handler.d.ts.map +1 -0
  1255. package/dist/utils/source-stripper/code-handler.js +79 -0
  1256. package/dist/utils/source-stripper/code-handler.js.map +1 -0
  1257. package/dist/utils/source-stripper/comment-handler.d.ts +4 -0
  1258. package/dist/utils/source-stripper/comment-handler.d.ts.map +1 -0
  1259. package/dist/utils/source-stripper/comment-handler.js +24 -0
  1260. package/dist/utils/source-stripper/comment-handler.js.map +1 -0
  1261. package/dist/utils/source-stripper/machine.d.ts +2 -0
  1262. package/dist/utils/source-stripper/machine.d.ts.map +1 -0
  1263. package/dist/utils/source-stripper/machine.js +34 -0
  1264. package/dist/utils/source-stripper/machine.js.map +1 -0
  1265. package/dist/utils/source-stripper/regex-handler.d.ts +3 -0
  1266. package/dist/utils/source-stripper/regex-handler.d.ts.map +1 -0
  1267. package/dist/utils/source-stripper/regex-handler.js +44 -0
  1268. package/dist/utils/source-stripper/regex-handler.js.map +1 -0
  1269. package/dist/utils/source-stripper/state.d.ts +4 -0
  1270. package/dist/utils/source-stripper/state.d.ts.map +1 -0
  1271. package/dist/utils/source-stripper/state.js +20 -0
  1272. package/dist/utils/source-stripper/state.js.map +1 -0
  1273. package/dist/utils/source-stripper/string-handler.d.ts +3 -0
  1274. package/dist/utils/source-stripper/string-handler.d.ts.map +1 -0
  1275. package/dist/utils/source-stripper/string-handler.js +19 -0
  1276. package/dist/utils/source-stripper/string-handler.js.map +1 -0
  1277. package/dist/utils/source-stripper/template-handler.d.ts +4 -0
  1278. package/dist/utils/source-stripper/template-handler.d.ts.map +1 -0
  1279. package/dist/utils/source-stripper/template-handler.js +40 -0
  1280. package/dist/utils/source-stripper/template-handler.js.map +1 -0
  1281. package/dist/utils/source-stripper/types.d.ts +17 -0
  1282. package/dist/utils/source-stripper/types.d.ts.map +1 -0
  1283. package/dist/utils/source-stripper/types.js +4 -0
  1284. package/dist/utils/source-stripper/types.js.map +1 -0
  1285. package/dist/utils/source-stripper.d.ts +0 -21
  1286. package/dist/utils/source-stripper.d.ts.map +1 -1
  1287. package/dist/utils/source-stripper.js +6 -234
  1288. package/dist/utils/source-stripper.js.map +1 -1
  1289. package/dist/utils/walk/errors.d.ts +4 -0
  1290. package/dist/utils/walk/errors.d.ts.map +1 -0
  1291. package/dist/utils/walk/errors.js +18 -0
  1292. package/dist/utils/walk/errors.js.map +1 -0
  1293. package/dist/utils/walk/filters.d.ts +11 -0
  1294. package/dist/utils/walk/filters.d.ts.map +1 -0
  1295. package/dist/utils/walk/filters.js +53 -0
  1296. package/dist/utils/walk/filters.js.map +1 -0
  1297. package/dist/utils/walk/limits.d.ts +10 -0
  1298. package/dist/utils/walk/limits.d.ts.map +1 -0
  1299. package/dist/utils/walk/limits.js +22 -0
  1300. package/dist/utils/walk/limits.js.map +1 -0
  1301. package/dist/utils/walk/traversal.d.ts +9 -0
  1302. package/dist/utils/walk/traversal.d.ts.map +1 -0
  1303. package/dist/utils/walk/traversal.js +38 -0
  1304. package/dist/utils/walk/traversal.js.map +1 -0
  1305. package/dist/utils/walk/types.d.ts +18 -0
  1306. package/dist/utils/walk/types.d.ts.map +1 -0
  1307. package/dist/utils/walk/types.js +2 -0
  1308. package/dist/utils/walk/types.js.map +1 -0
  1309. package/dist/utils/walk.d.ts +4 -65
  1310. package/dist/utils/walk.d.ts.map +1 -1
  1311. package/dist/utils/walk.js +23 -151
  1312. package/dist/utils/walk.js.map +1 -1
  1313. package/package.json +6 -5
@@ -1,771 +1,5 @@
1
- import { readFile } from "node:fs/promises";
2
- import { execFileSync } from "node:child_process";
3
- import { join } from "node:path";
4
- import { getBM25Index, getCodeIndex } from "./index-tools.js";
5
- import { searchBM25, applyCutoff } from "../search/bm25.js";
6
- import { loadConfig } from "../config.js";
7
- import { walkDirectory } from "../utils/walk.js";
8
- import { matchFilePattern } from "../utils/glob.js";
9
- import { raceWallClock } from "../utils/wall-clock.js";
10
- const DEFAULT_MAX_TEXT_MATCHES = 200;
11
- const MAX_WALK_FILES = 50_000; // Safety limit — stop walking after this many files
12
- const SEARCH_TIMEOUT_MS = 30_000; // Abort search after 30s to prevent 100s+ hangs
13
- /**
14
- * End-to-end wall-clock cap on a single searchText call. Telemetry showed
15
- * p95 = 2.4s but a 937s outlier — slow paths exist in semantic enrichment
16
- * and Node.js fallback walks. Configurable via CODESIFT_SEARCH_TEXT_CAP_MS.
17
- */
18
- const SEARCH_TEXT_WALL_CLOCK_MS = (() => {
19
- const env = process.env["CODESIFT_SEARCH_TEXT_CAP_MS"];
20
- const parsed = env ? Number(env) : NaN;
21
- return Number.isFinite(parsed) && parsed > 0 ? parsed : 8000;
22
- })();
23
- const AUTO_GROUP_THRESHOLD = 50; // Auto-switch to group_by_file above this match count (when auto_group=true)
24
- const SERVER_AUTO_GROUP_THRESHOLD = 30; // Server-side auto-group when caller omitted ALL grouping opts
25
- const MAX_RESPONSE_CHARS = 80_000; // ~20K tokens — force group_by_file above this
26
- const MAX_FIRST_MATCH_CHARS = 300; // Cap first_match preview in grouped output
27
- const MAX_LINE_CHARS = 500; // Truncate individual match lines (minified JS/JSON can be 100K+)
28
- const DEFAULT_TOP_K_WITH_SOURCE = 10; // Cap results when include_source=true without file_pattern
29
- const BM25_FILTER_MULTIPLIER = 5; // Widen BM25 candidate set when filters active
30
- const BM25_FILTER_MIN_K = 200; // Minimum candidate set size when filters active
31
- const BM25_FILE_SHORTLIST_K = 60; // top-K BM25 symbol hits → unique file set for identifier-query shortlist
32
- const IDENTIFIER_QUERY_RX = /^[A-Za-z_][A-Za-z0-9_]{2,}$/; // single identifier ≥3 chars — triggers BM25 shortlist + auto-rank
33
- const DEFAULT_SOURCE_CHARS_NARROW = 200; // Source truncation without file_pattern (reduce waste)
34
- const DEFAULT_SOURCE_CHARS_WIDE = 500; // Source truncation with file_pattern
35
- const CHARS_PER_TOKEN = 3.5; // Approximate chars-per-token for budget calculation
36
- const DEFAULT_MAX_REGEX_RESULTS = 50; // Regex without file_pattern — tighter cap to limit timeout
37
- const JSON_OVERHEAD_PER_MATCH = 40; // Estimated JSON serialization overhead per TextMatch
38
- // SEC-003: Detect common catastrophic backtracking patterns (ReDoS)
39
- const REDOS_PATTERNS = [
40
- /\(.*[+*].*\)[+*]/, // Nested quantifiers: (a+)+ or (a*)*
41
- /\(.*\|.*\)[+*]/, // Alternation with quantifier: (a|b)+
42
- /\(.*[+*].*\)\{/, // Nested quantifier with range: (a+){2,}
43
- /\([^)]*\\[dDwWsS][+*].*\)[+*]/, // Character class with nested quantifier
44
- ];
45
- function isSafeRegex(pattern) {
46
- return !REDOS_PATTERNS.some((p) => p.test(pattern));
47
- }
48
- /** Binary/non-text extensions to skip during text search */
49
- const BINARY_EXTENSIONS = new Set([
50
- ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".ico", ".svg",
51
- ".woff", ".woff2", ".ttf", ".eot", ".otf",
52
- ".zip", ".gz", ".tar", ".bz2", ".7z", ".rar",
53
- ".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx",
54
- ".exe", ".dll", ".so", ".dylib", ".o", ".obj",
55
- ".wasm", ".class", ".pyc", ".pyo",
56
- ".mp3", ".mp4", ".avi", ".mov", ".mkv", ".wav", ".flac",
57
- ".db", ".sqlite", ".sqlite3",
58
- ".lock",
59
- ]);
60
- // ── Private helpers ─────────────────────────────────────
61
- function matchesDecoratorFilter(decorators, decoratorFilter) {
62
- if (!decoratorFilter)
63
- return true;
64
- if (!decorators || decorators.length === 0)
65
- return false;
66
- const normalizedFilter = decoratorFilter.trim().replace(/^@/, "");
67
- return decorators.some((decorator) => {
68
- const normalized = decorator.trim().replace(/^@/, "");
69
- return normalized === normalizedFilter || normalized.startsWith(`${normalizedFilter}(`);
70
- });
71
- }
72
- /** Check if a symbol matches the active kind and file_pattern filters. */
73
- function matchesSymbolFilters(symbol, options) {
74
- if (options?.kind && symbol.kind !== options.kind)
75
- return false;
76
- if (options?.file_pattern && !matchFilePattern(symbol.file, options.file_pattern))
77
- return false;
78
- if (!matchesDecoratorFilter(symbol.decorators, options?.decorator))
79
- return false;
80
- return true;
81
- }
82
- /**
83
- * Apply detail-level shaping, source truncation, and field cleanup.
84
- * Compact: ~15 tok/result. Standard: signature + truncated source. Full: unlimited.
85
- */
86
- function shapeSearchResults(results, detail, includeSource, options) {
87
- if (detail === "compact") {
88
- return results.map((r) => ({
89
- symbol: {
90
- id: r.symbol.id,
91
- name: r.symbol.name,
92
- kind: r.symbol.kind,
93
- file: r.symbol.file,
94
- start_line: r.symbol.start_line,
95
- },
96
- score: r.score,
97
- }));
98
- }
99
- let shaped = results;
100
- if (!includeSource) {
101
- shaped = shaped.map((r) => {
102
- const { source: _source, ...symbolWithoutSource } = r.symbol;
103
- return { ...r, symbol: symbolWithoutSource };
104
- });
105
- }
106
- const defaultSourceChars = detail === "full" ? undefined
107
- : (includeSource && !options?.file_pattern) ? DEFAULT_SOURCE_CHARS_NARROW : DEFAULT_SOURCE_CHARS_WIDE;
108
- const sourceChars = options?.source_chars ?? (includeSource ? defaultSourceChars : undefined);
109
- if (includeSource && sourceChars !== undefined && sourceChars > 0) {
110
- shaped = shaped.map((r) => {
111
- const source = r.symbol.source;
112
- if (source && source.length > sourceChars) {
113
- return { ...r, symbol: { ...r.symbol, source: source.slice(0, sourceChars) + "..." } };
114
- }
115
- return r;
116
- });
117
- }
118
- return shaped.map((r) => {
119
- const { tokens: _tokens, repo: _repo, ...cleanSymbol } = r.symbol;
120
- return { ...r, symbol: cleanSymbol };
121
- });
122
- }
123
- /** Validate regex for ReDoS safety and compile without g/y flags, or throw descriptive error. */
124
- function compileSearchRegex(query) {
125
- if (!isSafeRegex(query)) {
126
- throw new Error("Regex pattern rejected: potential catastrophic backtracking (ReDoS)");
127
- }
128
- try {
129
- // No g/y flags — regex is reused across files; stateful flags cause alternating matches
130
- return new RegExp(query);
131
- }
132
- catch (err) {
133
- const message = err instanceof Error ? err.message : String(err);
134
- throw new Error(`Invalid regex pattern: ${message}`);
135
- }
136
- }
137
- // ── Ripgrep backend ────────────────────────────────────
138
- /** Directories always excluded from ripgrep search */
139
- const RG_EXCLUDE_DIRS = [
140
- "node_modules", ".git", ".next", "dist", ".codesift", "coverage",
141
- ".playwright-mcp", "__pycache__", ".mypy_cache", ".tox",
142
- ];
143
- /** Detect whether `rg` (ripgrep) is available on this system. Cached at module level. */
144
- let rgAvailable = null;
145
- function hasRipgrep() {
146
- if (rgAvailable !== null)
147
- return rgAvailable;
148
- try {
149
- execFileSync("rg", ["--version"], { stdio: "pipe", timeout: 2000 });
150
- rgAvailable = true;
151
- }
152
- catch {
153
- rgAvailable = false;
154
- }
155
- return rgAvailable;
156
- }
157
- /**
158
- * Search via ripgrep — fast C-based search, parses `rg -n` output.
159
- * Falls back to Node.js search if rg is not available.
160
- */
161
- function searchWithRipgrep(root, query, options) {
162
- const args = [
163
- "-n", // line numbers
164
- "--no-heading", // flat output
165
- "--max-columns", String(MAX_LINE_CHARS),
166
- "--max-columns-preview", // show truncated preview
167
- "--max-count", String(Math.min(options.maxResults * 2, 5000)), // per-file cap (generous to hit global max)
168
- ];
169
- if (!options.regex) {
170
- args.push("-F"); // fixed string (literal)
171
- }
172
- if (options.contextLines > 0) {
173
- args.push("-C", String(options.contextLines));
174
- }
175
- // File pattern → rg glob
176
- if (options.filePattern) {
177
- // Handle patterns like "src/**" or "*.ts"
178
- args.push("--glob", options.filePattern);
179
- }
180
- // Exclude dirs (only relevant when scanning the whole root — candidate file lists
181
- // are explicit paths and bypass the walker)
182
- if (!options.candidateFiles || options.candidateFiles.length === 0) {
183
- for (const dir of RG_EXCLUDE_DIRS) {
184
- args.push("--glob", `!${dir}`);
185
- }
186
- }
187
- if (options.candidateFiles && options.candidateFiles.length > 0) {
188
- // ripgrep omits the file-path prefix in output when given a single file,
189
- // and the parser below expects `path:line:content`. `--with-filename`
190
- // forces the prefix regardless of file count.
191
- args.push("--with-filename");
192
- }
193
- args.push("--", query);
194
- if (options.candidateFiles && options.candidateFiles.length > 0) {
195
- // Pass explicit file paths as positional args. Avoids whole-tree walk.
196
- for (const relPath of options.candidateFiles) {
197
- args.push(join(root, relPath));
198
- }
199
- }
200
- else {
201
- args.push(root);
202
- }
203
- let stdout;
204
- try {
205
- stdout = execFileSync("rg", args, {
206
- encoding: "utf-8",
207
- maxBuffer: 20 * 1024 * 1024, // 20MB
208
- timeout: SEARCH_TIMEOUT_MS,
209
- });
210
- }
211
- catch (err) {
212
- // rg exits 1 = no matches, 2 = error
213
- if (err && typeof err === "object" && "status" in err) {
214
- const exitCode = err.status;
215
- if (exitCode === 1)
216
- return []; // no matches
217
- if ("stdout" in err && typeof err.stdout === "string") {
218
- stdout = err.stdout;
219
- if (!stdout)
220
- return [];
221
- }
222
- else {
223
- return [];
224
- }
225
- }
226
- else {
227
- return [];
228
- }
229
- }
230
- const matches = [];
231
- const rootPrefix = root.endsWith("/") ? root : root + "/";
232
- // Parse context blocks: lines separated by "--" separators
233
- const blocks = options.contextLines > 0
234
- ? stdout.split(/^--$/m)
235
- : [stdout];
236
- for (const block of blocks) {
237
- if (matches.length >= options.maxResults)
238
- break;
239
- const lines = block.split("\n").filter(Boolean);
240
- // In context mode, find the actual match line (has `:` separator) vs context (has `-` separator)
241
- // In non-context mode, all lines are matches
242
- for (const rawLine of lines) {
243
- if (matches.length >= options.maxResults)
244
- break;
245
- // rg format: /abs/path/file.ts:42:content (match)
246
- // rg format: /abs/path/file.ts-40-content (context, only with -C)
247
- // We only want match lines (with `:` after line number)
248
- const matchResult = rawLine.match(/^(.+?):(\d+):(.*)/);
249
- if (!matchResult)
250
- continue;
251
- const [, absPath, lineNumStr, content] = matchResult;
252
- if (!absPath || !lineNumStr || content === undefined)
253
- continue;
254
- const relPath = absPath.startsWith(rootPrefix)
255
- ? absPath.slice(rootPrefix.length)
256
- : absPath;
257
- matches.push({
258
- file: relPath,
259
- line: parseInt(lineNumStr, 10),
260
- content: content,
261
- });
262
- }
263
- }
264
- // For context mode, we need to re-parse to attach context_before/context_after
265
- // But context_lines=0 is the default now, so this path is rarely hit
266
- if (options.contextLines > 0 && blocks.length > 1) {
267
- return parseRipgrepContextBlocks(stdout, rootPrefix, options.maxResults, options.contextLines);
268
- }
269
- return matches;
270
- }
271
- /**
272
- * Parse rg output with context lines (-C N) into TextMatch[] with context_before/context_after.
273
- */
274
- function parseRipgrepContextBlocks(stdout, rootPrefix, maxResults, contextLines) {
275
- const matches = [];
276
- const blocks = stdout.split(/^--$/m);
277
- for (const block of blocks) {
278
- if (matches.length >= maxResults)
279
- break;
280
- const lines = block.split("\n").filter(Boolean);
281
- // Separate match lines from context lines
282
- // Match: path:line:content Context: path-line-content
283
- const parsed = [];
284
- for (const raw of lines) {
285
- // Try match line first (colon after line number)
286
- const matchLine = raw.match(/^(.+?):(\d+):(.*)/);
287
- if (matchLine && matchLine[1] && matchLine[2] && matchLine[3] !== undefined) {
288
- parsed.push({
289
- path: matchLine[1].startsWith(rootPrefix) ? matchLine[1].slice(rootPrefix.length) : matchLine[1],
290
- line: parseInt(matchLine[2], 10),
291
- content: matchLine[3],
292
- isMatch: true,
293
- });
294
- continue;
295
- }
296
- // Try context line (hyphen after line number)
297
- const ctxLine = raw.match(/^(.+?)-(\d+)-(.*)/);
298
- if (ctxLine && ctxLine[1] && ctxLine[2] && ctxLine[3] !== undefined) {
299
- parsed.push({
300
- path: ctxLine[1].startsWith(rootPrefix) ? ctxLine[1].slice(rootPrefix.length) : ctxLine[1],
301
- line: parseInt(ctxLine[2], 10),
302
- content: ctxLine[3],
303
- isMatch: false,
304
- });
305
- }
306
- }
307
- // Build TextMatch for each match line with surrounding context
308
- for (let i = 0; i < parsed.length; i++) {
309
- const p = parsed[i];
310
- if (!p.isMatch)
311
- continue;
312
- if (matches.length >= maxResults)
313
- break;
314
- const contextBefore = [];
315
- const contextAfter = [];
316
- // Collect context before
317
- for (let j = Math.max(0, i - contextLines); j < i; j++) {
318
- const ctx = parsed[j];
319
- if (ctx && !ctx.isMatch)
320
- contextBefore.push(ctx.content);
321
- }
322
- // Collect context after
323
- for (let j = i + 1; j <= Math.min(parsed.length - 1, i + contextLines); j++) {
324
- const ctx = parsed[j];
325
- if (ctx && !ctx.isMatch)
326
- contextAfter.push(ctx.content);
327
- }
328
- const match = { file: p.path, line: p.line, content: p.content };
329
- if (contextBefore.length > 0)
330
- match.context_before = contextBefore;
331
- if (contextAfter.length > 0)
332
- match.context_after = contextAfter;
333
- matches.push(match);
334
- }
335
- }
336
- return matches;
337
- }
338
- // ── Node.js fallback search ───────────────────────────
339
- /** Search file content for line matches, collecting context lines around each hit. */
340
- function searchFileForMatches(content, filePath, query, regex, contextLines, maxMatches) {
341
- const lines = content.split("\n");
342
- const matches = [];
343
- for (let i = 0; i < lines.length; i++) {
344
- if (matches.length >= maxMatches)
345
- break;
346
- const line = lines[i];
347
- if (line === undefined)
348
- continue;
349
- const isMatch = regex ? regex.test(line) : line.includes(query);
350
- if (!isMatch)
351
- continue;
352
- const contextBefore = [];
353
- for (let j = Math.max(0, i - contextLines); j < i; j++) {
354
- const ctxLine = lines[j];
355
- if (ctxLine !== undefined)
356
- contextBefore.push(ctxLine);
357
- }
358
- const contextAfter = [];
359
- for (let j = i + 1; j <= Math.min(lines.length - 1, i + contextLines); j++) {
360
- const ctxLine = lines[j];
361
- if (ctxLine !== undefined)
362
- contextAfter.push(ctxLine);
363
- }
364
- const truncLine = line.length > MAX_LINE_CHARS
365
- ? line.slice(0, MAX_LINE_CHARS) + "..."
366
- : line;
367
- const match = {
368
- file: filePath,
369
- line: i + 1,
370
- content: truncLine,
371
- };
372
- if (contextBefore.length > 0)
373
- match.context_before = contextBefore;
374
- if (contextAfter.length > 0)
375
- match.context_after = contextAfter;
376
- matches.push(match);
377
- }
378
- return matches;
379
- }
380
- /** Aggregate flat TextMatch[] into per-file groups with counts and first_match preview. */
381
- function groupMatchesByFile(matches) {
382
- const groups = new Map();
383
- for (const m of matches) {
384
- const existing = groups.get(m.file);
385
- if (existing) {
386
- existing.count++;
387
- existing.lines.push(m.line);
388
- }
389
- else {
390
- groups.set(m.file, {
391
- file: m.file,
392
- count: 1,
393
- lines: [m.line],
394
- first_match: m.content.length > MAX_FIRST_MATCH_CHARS
395
- ? m.content.slice(0, MAX_FIRST_MATCH_CHARS) + "..."
396
- : m.content,
397
- });
398
- }
399
- }
400
- return [...groups.values()];
401
- }
402
- // ── Public API ──────────────────────────────────────────
403
- /**
404
- * Search symbols by name/signature/docstring using BM25 ranking.
405
- * Supports filtering by symbol kind, file pattern, and decorator metadata.
406
- *
407
- * When query is empty, returns all symbols matching the filters (up to top_k).
408
- * When kind, decorator, or file_pattern filters are active, BM25 searches a wider candidate
409
- * set to avoid post-filter truncation.
410
- */
411
- export async function searchSymbols(repo, query, options) {
412
- const index = await getBM25Index(repo);
413
- if (!index) {
414
- throw new Error(`Repository "${repo}" not found. Run index_folder first.`);
415
- }
416
- const config = loadConfig();
417
- const includeSource = options?.include_source ?? true;
418
- const defaultK = (includeSource && !options?.file_pattern) ? DEFAULT_TOP_K_WITH_SOURCE : config.defaultTopK;
419
- const topK = options?.top_k ?? defaultK;
420
- const hasFilters = !!options?.kind || !!options?.file_pattern || !!options?.decorator;
421
- let results;
422
- if (!query.trim()) {
423
- const allSymbols = [...index.symbols.values()];
424
- const filtered = allSymbols.filter((s) => matchesSymbolFilters(s, options));
425
- results = filtered.slice(0, topK).map((symbol) => ({ symbol, score: 0 }));
426
- }
427
- else {
428
- const searchTopK = hasFilters ? Math.max(topK * BM25_FILTER_MULTIPLIER, BM25_FILTER_MIN_K) : topK;
429
- results = searchBM25(index, query, searchTopK, config.bm25FieldWeights);
430
- results = results.filter((r) => matchesSymbolFilters(r.symbol, options));
431
- results = results.slice(0, topK);
432
- results = applyCutoff(results);
433
- }
434
- if (options?.rerank && results.length > 1) {
435
- const { rerankResults } = await import("../search/reranker.js");
436
- results = await rerankResults(query, results);
437
- }
438
- // Server-side auto-compact: telemetry showed 100% of search_symbols calls
439
- // omit detail_level/token_budget (post-fact H6 hints don't change agent
440
- // behavior). When the result count is large and the caller didn't specify
441
- // detail_level, switch to "compact" — cuts payload roughly in half without
442
- // losing critical info (location is preserved; agent can fetch source via
443
- // get_symbol if needed). An EXPLICIT include_source=true opts out: the
444
- // caller asked for source, compact would silently drop it.
445
- const SERVER_AUTO_COMPACT_THRESHOLD = 12;
446
- const callerExplicitlyWantsSource = options?.include_source === true;
447
- const detail = options?.detail_level
448
- ?? (results.length > SERVER_AUTO_COMPACT_THRESHOLD
449
- && !options?.token_budget
450
- && !callerExplicitlyWantsSource
451
- ? "compact"
452
- : "standard");
453
- const shaped = shapeSearchResults(results, detail, includeSource, options);
454
- // Token budget: greedily pack results until budget exhausted
455
- const budget = options?.token_budget;
456
- if (budget && budget > 0) {
457
- const packed = [];
458
- let used = 0;
459
- for (const r of shaped) {
460
- const tok = Math.ceil(JSON.stringify(r).length / CHARS_PER_TOKEN);
461
- if (used + tok > budget)
462
- break;
463
- packed.push(r);
464
- used += tok;
465
- }
466
- return packed;
467
- }
468
- return shaped;
469
- }
470
- export async function searchText(repo, query, options) {
471
- return raceWallClock(searchTextInner(repo, query, options), SEARCH_TEXT_WALL_CLOCK_MS, () => [{
472
- file: "<truncated>",
473
- line: 0,
474
- content: `search exceeded ${SEARCH_TEXT_WALL_CLOCK_MS}ms — narrow scope with file_pattern (e.g. "src/**/*.ts") or use search_symbols for identifier lookup. Ranked mode runs after the regex scan and does not speed it up.`,
475
- truncated: true,
476
- hint: "narrow scope with file_pattern, or use search_symbols for identifier lookup",
477
- }]);
478
- }
479
- async function searchTextInner(repo, query, options) {
480
- const index = await getCodeIndex(repo);
481
- if (!index) {
482
- throw new Error(`Repository "${repo}" not found. Run index_folder first.`);
483
- }
484
- const useRegex = options?.regex ?? false;
485
- const filePattern = options?.file_pattern;
486
- const maxResults = options?.max_results
487
- ?? (useRegex && !filePattern ? DEFAULT_MAX_REGEX_RESULTS : DEFAULT_MAX_TEXT_MATCHES);
488
- const contextLines = options?.context_lines ?? 0; // OPT-2: default 0 (was 2) — saves ~30 tokens/match
489
- // Validate regex safety before passing to ripgrep
490
- if (useRegex) {
491
- compileSearchRegex(query); // throws on ReDoS patterns
492
- }
493
- // OPT-RANK-1: For single-identifier queries without an explicit file_pattern,
494
- // shortlist candidate files via BM25 (top-K symbol hits → unique file set)
495
- // BEFORE scanning. Telemetry showed identifier queries on large repos hit
496
- // the 8s wall-clock cap because ripgrep walked the entire tree; restricting
497
- // to ~60 candidate files drops scan time to <500ms while preserving the
498
- // matches an agent actually wants (definition + usages of the identifier).
499
- // Skipped when the agent passed file_pattern (already narrowed) or for
500
- // regex/multi-word queries (BM25 symbol relevance doesn't generalize).
501
- let candidateFiles;
502
- if (!useRegex && !filePattern && IDENTIFIER_QUERY_RX.test(query)) {
503
- try {
504
- const bm25 = await getBM25Index(repo);
505
- if (bm25) {
506
- const config = loadConfig();
507
- const bm25Hits = searchBM25(bm25, query, BM25_FILE_SHORTLIST_K, config.bm25FieldWeights);
508
- if (bm25Hits.length > 0) {
509
- const fileSet = new Set();
510
- for (const r of bm25Hits)
511
- fileSet.add(r.symbol.file);
512
- candidateFiles = [...fileSet];
513
- }
514
- }
515
- }
516
- catch {
517
- // Graceful fallback — full scan if BM25 lookup fails for any reason
518
- }
519
- }
520
- let matches;
521
- // OPT-1: Use ripgrep when available (10x faster)
522
- if (hasRipgrep()) {
523
- matches = searchWithRipgrep(index.root, query, {
524
- regex: useRegex,
525
- filePattern: filePattern,
526
- maxResults: maxResults,
527
- contextLines: contextLines,
528
- candidateFiles: candidateFiles,
529
- });
530
- }
531
- else {
532
- // Node.js fallback
533
- const regex = useRegex ? compileSearchRegex(query) : null;
534
- let allFiles;
535
- if (candidateFiles && candidateFiles.length > 0) {
536
- // OPT-RANK-1: BM25 shortlist already narrowed the search space — skip the walk.
537
- allFiles = [...candidateFiles];
538
- }
539
- else if (filePattern) {
540
- allFiles = index.files.map((f) => f.path);
541
- }
542
- else {
543
- allFiles = await walkDirectory(index.root, {
544
- fileFilter: (ext) => !BINARY_EXTENSIONS.has(ext),
545
- maxFiles: MAX_WALK_FILES,
546
- relative: true,
547
- });
548
- }
549
- matches = [];
550
- const searchStart = Date.now();
551
- for (const filePath of allFiles) {
552
- if (matches.length >= maxResults)
553
- break;
554
- if (Date.now() - searchStart > SEARCH_TIMEOUT_MS)
555
- break;
556
- if (filePattern && !matchFilePattern(filePath, filePattern))
557
- continue;
558
- const fullPath = join(index.root, filePath);
559
- let content;
560
- try {
561
- content = await readFile(fullPath, "utf-8");
562
- }
563
- catch {
564
- continue;
565
- }
566
- const fileMatches = searchFileForMatches(content, filePath, query, regex, contextLines, maxResults - matches.length);
567
- matches.push(...fileMatches);
568
- }
569
- }
570
- // Server-side auto-promotion of ranked mode for identifier-like queries when
571
- // the caller passed no grouping/ranking options. Telemetry showed 0/5640
572
- // calls used ranked=true despite it saving 1-3 follow-up get_symbol calls
573
- // for "find usages of X" queries — agents simply weren't reaching for it.
574
- // Conservative trigger: query must look like a single identifier (≥3 chars)
575
- // and the caller must not have expressed any grouping preference.
576
- const callerOmittedGroupOpts = options?.group_by_file === undefined
577
- && options?.auto_group === undefined
578
- && options?.ranked === undefined
579
- && options?.compact === undefined;
580
- const isIdentifierQuery = !useRegex && IDENTIFIER_QUERY_RX.test(query);
581
- const shouldRank = options?.ranked
582
- || (callerOmittedGroupOpts && isIdentifierQuery);
583
- // Ranked mode: classify hits with symbol context, deduplicate, and sort by centrality.
584
- // Takes precedence over auto_group/compact — returns TextMatch[] with containing_symbol.
585
- if (shouldRank && matches.length > 0) {
586
- try {
587
- const { classifyHitsWithSymbols } = await import("./search-ranker.js");
588
- const bm25Idx = await getBM25Index(repo);
589
- if (bm25Idx) {
590
- matches = await classifyHitsWithSymbols(matches, index, { centrality: bm25Idx.centrality });
591
- }
592
- }
593
- catch {
594
- // Graceful fallback — return unranked matches if pipeline fails
595
- }
596
- return matches;
597
- }
598
- // OPT-3: Compact format — grep-like `file:line: content` output, ~50% less tokens than JSON
599
- // Auto-enable when auto_group is set (caller is optimization-aware) and results are small
600
- const useCompact = options?.compact
601
- ?? (options?.auto_group && contextLines === 0 && matches.length > 0 && matches.length <= AUTO_GROUP_THRESHOLD);
602
- if (useCompact && !options?.group_by_file) {
603
- // Group by file to avoid repeating long paths (saves ~30% on multi-match files)
604
- const groups = new Map();
605
- for (const m of matches) {
606
- let g = groups.get(m.file);
607
- if (!g) {
608
- g = [];
609
- groups.set(m.file, g);
610
- }
611
- g.push(` ${m.line}: ${m.content}`);
612
- }
613
- if (groups.size === matches.length) {
614
- // Each file has 1 match — flat format is fine
615
- return matches.map((m) => `${m.file}:${m.line}: ${m.content}`).join("\n");
616
- }
617
- // Grouped: file header + indented matches
618
- const parts = [];
619
- for (const [file, lines] of groups) {
620
- parts.push(`${file}\n${lines.join("\n")}`);
621
- }
622
- return parts.join("\n");
623
- }
624
- // Estimate response size; force grouping when output would be enormous
625
- const estimatedChars = matches.reduce((sum, m) => {
626
- let chars = m.file.length + m.content.length + JSON_OVERHEAD_PER_MATCH;
627
- if (m.context_before)
628
- chars += m.context_before.reduce((s, l) => s + l.length, 0);
629
- if (m.context_after)
630
- chars += m.context_after.reduce((s, l) => s + l.length, 0);
631
- return sum + chars;
632
- }, 0);
633
- // Server-side default grouping: when caller didn't specify any grouping/ranking
634
- // option AND result count exceeds SERVER_AUTO_GROUP_THRESHOLD, group by file.
635
- // Telemetry showed 51% of search_text calls omitted these opts entirely;
636
- // grouping cuts payload by ~50% (975 → 499 avg tokens per call).
637
- // (callerOmittedGroupOpts hoisted above for shared use with ranked auto-promote)
638
- const shouldGroup = options?.group_by_file
639
- || (options?.auto_group && matches.length > AUTO_GROUP_THRESHOLD)
640
- || (callerOmittedGroupOpts && matches.length > SERVER_AUTO_GROUP_THRESHOLD)
641
- || estimatedChars > MAX_RESPONSE_CHARS;
642
- if (shouldGroup) {
643
- return groupMatchesByFile(matches);
644
- }
645
- return matches;
646
- }
647
- // ---------------------------------------------------------------------------
648
- // Semantic search — standalone wrapper around retrieval infrastructure
649
- // ---------------------------------------------------------------------------
650
- export async function semanticSearch(repo, query, options) {
651
- const { handleSemanticQuery } = await import("../retrieval/semantic-handlers.js");
652
- const result = await handleSemanticQuery(repo, {
653
- type: "semantic",
654
- query,
655
- top_k: options?.top_k,
656
- file_filter: options?.file_pattern,
657
- exclude_tests: options?.exclude_tests,
658
- rerank: options?.rerank,
659
- });
660
- return typeof result.data === "string" ? result.data : JSON.stringify(result.data);
661
- }
662
- // ---------------------------------------------------------------------------
663
- // Zero-hit fallback — vocabulary suggestions + semantic rescue
664
- //
665
- // Telemetry (30d window, 2026-06): 44% of search_text calls (2,539/5,826)
666
- // returned zero matches. Each miss costs the agent a turn of re-guessing.
667
- // On a miss we now return (a) near-miss symbol names from the index
668
- // vocabulary and (b) semantic results when an embeddings index already
669
- // exists on disk — never triggering a fresh embedding build on this path.
670
- // ---------------------------------------------------------------------------
671
- const ZERO_HIT_SUGGESTION_CAP = 5;
672
- const ZERO_HIT_SEMANTIC_TOP_K = 5;
673
- const ZERO_HIT_SEMANTIC_CAP_MS = 4000;
674
- const ZERO_HIT_EDIT_DISTANCE_MAX = 2;
675
- const ZERO_HIT_MIN_QUERY_LEN = 3;
676
- /** Levenshtein distance with early exit once the distance exceeds `max`. */
677
- function boundedEditDistance(a, b, max) {
678
- if (Math.abs(a.length - b.length) > max)
679
- return max + 1;
680
- let prev = Array.from({ length: b.length + 1 }, (_, i) => i);
681
- for (let i = 1; i <= a.length; i++) {
682
- const curr = [i];
683
- let rowMin = i;
684
- for (let j = 1; j <= b.length; j++) {
685
- const cost = a[i - 1] === b[j - 1] ? 0 : 1;
686
- curr[j] = Math.min(prev[j] + 1, curr[j - 1] + 1, prev[j - 1] + cost);
687
- if (curr[j] < rowMin)
688
- rowMin = curr[j];
689
- }
690
- if (rowMin > max)
691
- return max + 1;
692
- prev = curr;
693
- }
694
- return prev[b.length];
695
- }
696
- /** Rank symbol names against a single-token query: exact-insensitive first,
697
- * then substring containment, then small edit distance. */
698
- function suggestFromVocabulary(query, names) {
699
- const q = query.toLowerCase();
700
- const scored = [];
701
- const seen = new Set();
702
- for (const name of names) {
703
- if (seen.has(name))
704
- continue;
705
- seen.add(name);
706
- const n = name.toLowerCase();
707
- if (n === q)
708
- continue; // exact match would have been found by the scan
709
- let score;
710
- if (n.includes(q) || q.includes(n)) {
711
- score = Math.abs(n.length - q.length); // tighter containment ranks higher
712
- }
713
- else {
714
- const d = boundedEditDistance(q, n, ZERO_HIT_EDIT_DISTANCE_MAX);
715
- if (d > ZERO_HIT_EDIT_DISTANCE_MAX)
716
- continue;
717
- score = 10 + d; // containment always beats fuzzy
718
- }
719
- scored.push({ name, score });
720
- }
721
- scored.sort((a, b) => a.score - b.score || a.name.length - b.name.length);
722
- return scored.slice(0, ZERO_HIT_SUGGESTION_CAP).map((s) => s.name);
723
- }
724
- /**
725
- * Build fallback guidance after a zero-hit text search. Both branches are
726
- * best-effort: any failure degrades to an empty object, never an error.
727
- */
728
- export async function zeroHitFallback(repo, query) {
729
- const out = {};
730
- const trimmed = query.trim();
731
- if (trimmed.length < ZERO_HIT_MIN_QUERY_LEN)
732
- return out;
733
- // (a) Vocabulary suggestions — only meaningful for single-token queries.
734
- if (!/\s/.test(trimmed)) {
735
- try {
736
- const index = await getCodeIndex(repo);
737
- if (index) {
738
- const suggestions = suggestFromVocabulary(trimmed, index.symbols.map((s) => s.name));
739
- if (suggestions.length > 0)
740
- out.suggestions = suggestions;
741
- }
742
- }
743
- catch {
744
- // best-effort
745
- }
746
- }
747
- // (b) Semantic rescue — gated on a pre-existing embeddings file so a miss
748
- // never triggers an expensive embedding build.
749
- try {
750
- const config = loadConfig();
751
- const { getRepo } = await import("../storage/registry.js");
752
- const meta = await getRepo(config.registryPath, repo);
753
- if (meta) {
754
- const { existsSync } = await import("node:fs");
755
- const { getEmbeddingPath } = await import("../storage/embedding-store.js");
756
- const { getChunkEmbeddingPath } = await import("../storage/chunk-store.js");
757
- const hasEmbeddings = existsSync(getEmbeddingPath(meta.index_path))
758
- || existsSync(getChunkEmbeddingPath(meta.index_path));
759
- if (hasEmbeddings) {
760
- const semantic = await raceWallClock(semanticSearch(repo, trimmed, { top_k: ZERO_HIT_SEMANTIC_TOP_K }), ZERO_HIT_SEMANTIC_CAP_MS, () => "");
761
- if (semantic && semantic !== "(no results)")
762
- out.semantic_results = semantic;
763
- }
764
- }
765
- }
766
- catch {
767
- // best-effort — no provider, no registry entry, embed timeout, etc.
768
- }
769
- return out;
770
- }
1
+ export { searchSymbols } from "./search-tools/symbol-search.js";
2
+ export { searchText } from "./search-tools/text-search.js";
3
+ export { semanticSearch } from "./search-tools/semantic-search.js";
4
+ export { zeroHitFallback } from "./search-tools/zero-hit.js";
771
5
  //# sourceMappingURL=search-tools.js.map