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
package/dist/cli/hooks.js CHANGED
@@ -1,1133 +1,6 @@
1
- // ---------------------------------------------------------------------------
2
- // CLI hooks — Cross-platform PreToolUse / PostToolUse hook handlers
3
- // ---------------------------------------------------------------------------
4
- // Supports Claude Code, Codex, Gemini CLI, and Cline.
5
- //
6
- // Input sources:
7
- // Claude Code / Codex: HOOK_TOOL_INPUT env var (JSON)
8
- // Gemini CLI / Cline: stdin (JSON), triggered by --stdin flag
9
- //
10
- // Exit codes: 0 = allow, 2 = deny (with redirect message on stdout)
11
- // ---------------------------------------------------------------------------
12
- import { readFileSync, existsSync, unlinkSync, mkdirSync, writeFileSync, appendFileSync } from "node:fs";
13
- import { dirname, extname, join, relative, posix as pathPosix } from "node:path";
14
- import { homedir, hostname, tmpdir } from "node:os";
15
- import { createHash } from "node:crypto";
16
- import { spawn } from "node:child_process";
17
- import { getCurrentGitCommit } from "../utils/git-head.js";
18
- // ---------------------------------------------------------------------------
19
- // Cross-platform input parsing
20
- // ---------------------------------------------------------------------------
21
- /**
22
- * Read raw hook input from env var (Claude/Codex) or stdin (Gemini/Cline).
23
- */
24
- function readRawInput() {
25
- const envInput = process.env["HOOK_TOOL_INPUT"];
26
- if (envInput)
27
- return envInput;
28
- if (process.argv.includes("--stdin")) {
29
- try {
30
- return readFileSync(0, "utf-8");
31
- }
32
- catch {
33
- return null;
34
- }
35
- }
36
- return null;
37
- }
38
- const EMPTY_INPUT = Object.freeze({ filePath: null, sessionId: null, command: null, toolName: null });
39
- /**
40
- * Parse hook input JSON once, extracting all fields across all platforms.
41
- *
42
- * Supported formats:
43
- * Claude Code / Codex: { tool_input: { file_path, command }, session_id }
44
- * Gemini CLI: { tool: { input: { path|file_path, command } }, sessionId }
45
- * Cline: { preToolUse|postToolUse: { args: { file_path } } }
46
- */
47
- function parseHookInput(raw) {
48
- let parsed;
49
- try {
50
- parsed = JSON.parse(raw);
51
- }
52
- catch {
53
- return EMPTY_INPUT;
54
- }
55
- if (parsed === null || typeof parsed !== "object")
56
- return EMPTY_INPUT;
57
- const obj = parsed;
58
- let filePath = null;
59
- let command = null;
60
- // Claude Code / Codex: { tool_input: { file_path, command } }
61
- if (obj["tool_input"] && typeof obj["tool_input"] === "object") {
62
- const ti = obj["tool_input"];
63
- if (typeof ti["file_path"] === "string")
64
- filePath = ti["file_path"];
65
- if (typeof ti["command"] === "string")
66
- command = ti["command"];
67
- }
68
- // Gemini CLI: { tool: { input: { path|file_path, command } } }
69
- if (obj["tool"] && typeof obj["tool"] === "object") {
70
- const tool = obj["tool"];
71
- if (tool["input"] && typeof tool["input"] === "object") {
72
- const input = tool["input"];
73
- if (filePath === null) {
74
- if (typeof input["path"] === "string")
75
- filePath = input["path"];
76
- else if (typeof input["file_path"] === "string")
77
- filePath = input["file_path"];
78
- }
79
- if (command === null && typeof input["command"] === "string")
80
- command = input["command"];
81
- }
82
- }
83
- // Cline: { preToolUse|postToolUse: { args: { file_path } } }
84
- if (filePath === null) {
85
- for (const key of ["preToolUse", "postToolUse"]) {
86
- if (obj[key] && typeof obj[key] === "object") {
87
- const hook = obj[key];
88
- if (hook["args"] && typeof hook["args"] === "object") {
89
- const args = hook["args"];
90
- if (typeof args["file_path"] === "string") {
91
- filePath = args["file_path"];
92
- break;
93
- }
94
- }
95
- }
96
- }
97
- }
98
- // Session ID: top-level { session_id } or { sessionId }
99
- let sessionId = null;
100
- if (typeof obj["session_id"] === "string")
101
- sessionId = obj["session_id"];
102
- else if (typeof obj["sessionId"] === "string")
103
- sessionId = obj["sessionId"];
104
- // Tool name: top-level { tool_name } (Claude Code) or { tool: { name } } (Gemini)
105
- let toolName = null;
106
- if (typeof obj["tool_name"] === "string")
107
- toolName = obj["tool_name"];
108
- else if (obj["tool"] && typeof obj["tool"] === "object") {
109
- const t = obj["tool"];
110
- if (typeof t["name"] === "string")
111
- toolName = t["name"];
112
- }
113
- return { filePath, sessionId, command, toolName };
114
- }
115
- // ---------------------------------------------------------------------------
116
- // Constants
117
- // ---------------------------------------------------------------------------
118
- const CODE_EXTENSIONS = new Set([
119
- ".ts",
120
- ".tsx",
121
- ".js",
122
- ".jsx",
123
- ".py",
124
- ".go",
125
- ".rs",
126
- ".java",
127
- ".c",
128
- ".cpp",
129
- ".cs",
130
- ".rb",
131
- ".php",
132
- ".swift",
133
- ".kt",
134
- ".scala",
135
- ".vue",
136
- ".svelte",
137
- ]);
138
- const DEFAULT_MIN_LINES = 200;
139
- const WIKI_MANIFEST_REL = join(".codesift", "wiki", "wiki-manifest.json");
140
- const WIKI_SUMMARY_DEFAULT_MAX_CHARS = 2500;
141
- const WIKI_OVERVIEW_DEFAULT_MAX_CHARS = 1800;
142
- /** Char budget for `.summary.md` hook injection. `CODESIFT_WIKI_SUMMARY_MAX_CHARS`
143
- * env var overrides when it parses to a positive integer; NaN or <=0 falls
144
- * back to the default (CQ8: defensive env parsing so the hook never crashes). */
145
- export function wikiSummaryMaxChars() {
146
- return positiveIntEnv("CODESIFT_WIKI_SUMMARY_MAX_CHARS", WIKI_SUMMARY_DEFAULT_MAX_CHARS);
147
- }
148
- /** Char budget for the SessionStart project-overview injection. */
149
- export function wikiOverviewMaxChars() {
150
- return positiveIntEnv("CODESIFT_WIKI_OVERVIEW_MAX_CHARS", WIKI_OVERVIEW_DEFAULT_MAX_CHARS);
151
- }
152
- /** Parse a positive-int env var with a default fallback (NaN/<=0 → default). */
153
- function positiveIntEnv(name, fallback) {
154
- const raw = process.env[name];
155
- if (raw === undefined || raw === "")
156
- return fallback;
157
- const n = parseInt(raw, 10);
158
- if (!Number.isFinite(n) || n <= 0)
159
- return fallback;
160
- return n;
161
- }
162
- /**
163
- * Walk up from `startDir` looking for `.codesift/wiki/wiki-manifest.json`.
164
- * Returns the repo root directory if found, otherwise null.
165
- */
166
- function findRepoRootFromDir(startDir) {
167
- let dir = startDir;
168
- while (true) {
169
- try {
170
- readFileSync(join(dir, WIKI_MANIFEST_REL));
171
- return dir;
172
- }
173
- catch {
174
- // manifest not found at this level
175
- }
176
- const parent = dirname(dir);
177
- if (parent === dir)
178
- break; // reached filesystem root
179
- dir = parent;
180
- }
181
- return null;
182
- }
183
- /**
184
- * Walk up from `filePath`'s directory looking for the wiki manifest.
185
- * Returns the repo root directory if found, otherwise null.
186
- */
187
- function findRepoRoot(filePath) {
188
- return findRepoRootFromDir(dirname(filePath));
189
- }
190
- /**
191
- * Append a wiki telemetry event to usage.jsonl (same shape as MCP tool events,
192
- * so usage_stats and existing tooling pick it up). Synchronous + swallowed:
193
- * hooks are short-lived and call process.exit, so an async write could be lost.
194
- * Opt out of all wiki telemetry with CODESIFT_WIKI_TELEMETRY=0.
195
- */
196
- function logWikiEvent(tool, repo, args, resultTokens = 0, sessionId) {
197
- try {
198
- if (process.env.CODESIFT_WIKI_TELEMETRY === "0")
199
- return;
200
- const dataDir = process.env["CODESIFT_DATA_DIR"] ?? join(homedir(), ".codesift");
201
- const entry = {
202
- ts: Date.now(),
203
- tool,
204
- repo,
205
- args_summary: args,
206
- elapsed_ms: 0,
207
- result_tokens: resultTokens,
208
- result_chunks: 0,
209
- // Prefer the real session_id from the hook payload (now that --stdin works)
210
- // so wiki consumption can be correlated to sessions; fall back to the env
211
- // var, then "hook" for entries with no resolvable session.
212
- session_id: sessionId ?? process.env["CLAUDE_SESSION_ID"] ?? "hook",
213
- host: process.env["CODESIFT_HOST_TAG"] ?? hostname(),
214
- };
215
- mkdirSync(dataDir, { recursive: true });
216
- appendFileSync(join(dataDir, "usage.jsonl"), JSON.stringify(entry) + "\n");
217
- }
218
- catch {
219
- // CQ8: telemetry must never break the hook.
220
- }
221
- }
222
- /**
223
- * Try to load the wiki community summary for `filePath`.
224
- * Returns the summary string (truncated to WIKI_SUMMARY_MAX_CHARS) if found,
225
- * or null if any step fails (missing manifest, file not mapped, missing .md, etc.).
226
- *
227
- * ALL reads are synchronous — the hook must exit fast.
228
- * ALL errors are caught — never crash the hook (CQ8).
229
- */
230
- function tryLoadWikiSummary(filePath) {
231
- try {
232
- const repoRoot = findRepoRoot(filePath);
233
- if (!repoRoot)
234
- return null;
235
- const manifestPath = join(repoRoot, WIKI_MANIFEST_REL);
236
- let manifestRaw;
237
- try {
238
- manifestRaw = readFileSync(manifestPath, "utf-8");
239
- }
240
- catch {
241
- return null;
242
- }
243
- let manifest;
244
- try {
245
- manifest = JSON.parse(manifestRaw);
246
- }
247
- catch {
248
- return null;
249
- }
250
- const fileToComm = manifest["file_to_community"];
251
- if (!fileToComm || typeof fileToComm !== "object")
252
- return null;
253
- const map = fileToComm;
254
- // Resolve the file path relative to the repo root for lookup.
255
- // Manifest keys are POSIX-style; normalize separators and collapse `./`, `//`
256
- // so that Windows backslashes and mixed slashes resolve to a single canonical key.
257
- const relPath = pathPosix.normalize(relative(repoRoot, filePath).split("\\").join("/"));
258
- const communitySlug = map[relPath];
259
- if (typeof communitySlug !== "string")
260
- return null;
261
- // Validate slug format (defense-in-depth: prevent path traversal via crafted manifest)
262
- if (!/^[a-z0-9-]+$/.test(communitySlug))
263
- return null;
264
- const summaryPath = join(repoRoot, ".codesift", "wiki", `${communitySlug}.summary.md`);
265
- let summary;
266
- try {
267
- summary = readFileSync(summaryPath, "utf-8");
268
- }
269
- catch {
270
- return null;
271
- }
272
- const maxChars = wikiSummaryMaxChars();
273
- return summary.length > maxChars ? summary.slice(0, maxChars) : summary;
274
- }
275
- catch {
276
- // CQ8: never crash the hook
277
- return null;
278
- }
279
- }
280
- /**
281
- * Build a compact, agent-facing project overview from the v2 wiki manifest at
282
- * `repoRoot`. Returns null for missing/v1/malformed manifests (graceful — the
283
- * caller falls back to the static prompt). Output is capped to the overview
284
- * char budget so it never bloats the SessionStart context.
285
- *
286
- * ALL reads are synchronous and ALL errors are swallowed (CQ8: never crash).
287
- */
288
- function tryLoadProjectOverview(repoRoot) {
289
- try {
290
- let manifest;
291
- try {
292
- manifest = JSON.parse(readFileSync(join(repoRoot, WIKI_MANIFEST_REL), "utf-8"));
293
- }
294
- catch {
295
- return null;
296
- }
297
- // v2 manifests carry schema_version === 2; v1 has no project/modules blocks.
298
- if (manifest["schema_version"] !== 2)
299
- return null;
300
- const project = manifest["project"];
301
- if (!project || typeof project !== "object")
302
- return null;
303
- const p = project;
304
- const stack = (p["stack"] ?? {});
305
- const str = (v) => (typeof v === "string" && v.trim() !== "" ? v.trim() : null);
306
- const lines = [];
307
- lines.push(`\n\nCodeSift project wiki (architecture map — use instead of re-discovering structure):`);
308
- const name = str(p["name"]) ?? "this repo";
309
- const stackBits = [
310
- str(stack["language"]),
311
- str(stack["framework"]),
312
- str(stack["test_runner"]) ? `test:${str(stack["test_runner"])}` : null,
313
- str(stack["package_manager"]) ? `pm:${str(stack["package_manager"])}` : null,
314
- ].filter(Boolean);
315
- lines.push(`Project: ${name}${stackBits.length ? ` — ${stackBits.join(" · ")}` : ""}`);
316
- const entry = p["entry_points"];
317
- if (Array.isArray(entry) && entry.length > 0) {
318
- lines.push(`Entry points: ${entry.filter((e) => typeof e === "string").slice(0, 5).join(", ")}`);
319
- }
320
- const modules = manifest["modules"];
321
- if (Array.isArray(modules) && modules.length > 0) {
322
- lines.push(`Modules (${modules.length}):`);
323
- for (const m of modules.slice(0, 14)) {
324
- if (!m || typeof m !== "object")
325
- continue;
326
- const mod = m;
327
- const mName = str(mod["name"]) ?? str(mod["slug"]) ?? "module";
328
- let desc = str(mod["description"]) ?? "";
329
- if (desc.length > 110)
330
- desc = desc.slice(0, 107) + "…";
331
- lines.push(` - ${mName}${desc ? `: ${desc}` : ""}`);
332
- }
333
- }
334
- const gotchas = p["known_gotchas"];
335
- if (Array.isArray(gotchas) && gotchas.length > 0) {
336
- const top = gotchas
337
- .filter((g) => !!g && typeof g === "object")
338
- .sort((a, b) => sevRank(b["severity"]) - sevRank(a["severity"]))
339
- .slice(0, 2)
340
- .map((g) => str(g["gotcha"]))
341
- .filter(Boolean);
342
- if (top.length > 0)
343
- lines.push(`Gotchas: ${top.join(" | ")}`);
344
- }
345
- // Push→pull pointer: this overview is an orientation MAP, not the full
346
- // architecture. Point the agent at the on-demand path — the queryable tools
347
- // (get_knowledge_map / assemble_context) have near-zero usage because agents
348
- // don't know to reach for them. Research (ETH arXiv:2602.11988) shows a
349
- // pushed overview earns its tokens only when it surfaces non-inferable signal
350
- // AND lets the agent pull the rest rather than re-discovering by hand.
351
- lines.push("Need detail beyond this map? Pull on demand: get_knowledge_map(focus=<module>) for dependencies, assemble_context(level=\"L3\") for a directory overview, search_symbols/get_file_outline for a specific area — don't hand-walk the tree.");
352
- // Staleness hint: compare manifest commit to current HEAD. Best-effort and
353
- // gated — the probe is a synchronous subprocess on the SessionStart hot
354
- // path, so users who care about absolute startup latency can disable it.
355
- // (Auto-regen keeps the wiki fresh anyway, so the hint rarely fires.)
356
- if (process.env.CODESIFT_WIKI_STALENESS_CHECK !== "0") {
357
- const manifestCommit = str(manifest["git_commit"]);
358
- const head = getCurrentGitCommit(repoRoot);
359
- if (manifestCommit && manifestCommit !== "unknown" && head && !head.startsWith(manifestCommit) && !manifestCommit.startsWith(head)) {
360
- lines.push(`(Wiki generated at ${manifestCommit.slice(0, 8)}; HEAD is ${head.slice(0, 8)} — auto-refreshes on edits.)`);
361
- }
362
- }
363
- const out = lines.join("\n");
364
- const max = wikiOverviewMaxChars();
365
- if (out.length <= max)
366
- return out;
367
- // Trim to the last full line so the overview never ends mid-sentence.
368
- const truncated = out.slice(0, max);
369
- const lastNl = truncated.lastIndexOf("\n");
370
- return lastNl > 0 ? truncated.slice(0, lastNl) : truncated;
371
- }
372
- catch {
373
- return null;
374
- }
375
- }
376
- function sevRank(s) {
377
- return s === "high" ? 3 : s === "medium" ? 2 : s === "low" ? 1 : 0;
378
- }
379
- // ---------------------------------------------------------------------------
380
- // handlePrecheckRead
381
- //
382
- // PreToolUse hook for the Read tool. When the agent attempts to read a large
383
- // code file, deny the read and redirect to CodeSift tools instead.
384
- //
385
- // Env vars:
386
- // HOOK_TOOL_INPUT — JSON string with tool_input.file_path
387
- // CODESIFT_READ_HOOK_MIN_LINES — override the line threshold (default: 200)
388
- // ---------------------------------------------------------------------------
389
- export async function handlePrecheckRead() {
390
- try {
391
- const raw = readRawInput();
392
- if (!raw) {
393
- process.exit(0);
394
- return;
395
- }
396
- const { filePath } = parseHookInput(raw);
397
- if (!filePath) {
398
- process.exit(0);
399
- return;
400
- }
401
- const ext = extname(filePath).toLowerCase();
402
- if (!CODE_EXTENSIONS.has(ext)) {
403
- process.exit(0);
404
- return;
405
- }
406
- // Only redirect inside repos the user actually indexed — never interfere
407
- // with reads in unrelated (non-CodeSift) projects. This makes precheck-read
408
- // consistent with precheck-bash/glob/grep (all indexed-repo-scoped).
409
- if (!isCurrentRepoIndexed()) {
410
- process.exit(0);
411
- return;
412
- }
413
- // Allow bounded reads (offset/limit): a windowed read is targeted, and it
414
- // is how an agent reads the region it is about to Edit — Claude Code
415
- // requires a prior Read before Edit/Write, so redirecting these would make
416
- // any file >= the threshold uneditable (a catch-22). Unbounded full reads
417
- // of large files are still redirected below.
418
- try {
419
- const ti = JSON.parse(raw).tool_input;
420
- if (ti && (typeof ti["offset"] === "number" || typeof ti["limit"] === "number")) {
421
- process.exit(0);
422
- return;
423
- }
424
- }
425
- catch {
426
- // malformed — fall through to the size check
427
- }
428
- const minLinesEnv = process.env["CODESIFT_READ_HOOK_MIN_LINES"];
429
- const parsed_min = minLinesEnv ? parseInt(minLinesEnv, 10) : NaN;
430
- const minLines = Number.isNaN(parsed_min) ? DEFAULT_MIN_LINES : parsed_min;
431
- let content;
432
- try {
433
- content = readFileSync(filePath, "utf-8");
434
- }
435
- catch {
436
- // File not found or unreadable — allow
437
- process.exit(0);
438
- return;
439
- }
440
- const lineCount = content.split("\n").length;
441
- if (lineCount >= minLines) {
442
- const relPath = filePath.split("/").slice(-3).join("/");
443
- const reason = `File ${relPath} has ${lineCount} lines. Use CodeSift tools instead:\n` +
444
- ` get_file_outline(repo, "${relPath}") for structure\n` +
445
- ` search_text(repo, "query", file_pattern="${relPath}") for specific content\n` +
446
- ` get_symbol(repo, "symbol_id") for a specific function\n` +
447
- ` To EDIT this file: Read a bounded range (pass offset+limit) — bounded reads are always allowed.`;
448
- process.stdout.write(JSON.stringify({
449
- hookSpecificOutput: {
450
- hookEventName: "PreToolUse",
451
- permissionDecision: "deny",
452
- permissionDecisionReason: reason,
453
- },
454
- }));
455
- process.exit(0);
456
- return;
457
- }
458
- // Wiki context injection — only fires for small files (not redirected above)
459
- const wikiSummary = tryLoadWikiSummary(filePath);
460
- if (wikiSummary) {
461
- process.stdout.write(wikiSummary);
462
- }
463
- process.exit(0);
464
- }
465
- catch {
466
- // CQ8: never crash — always fall back to allow so the agent is not blocked
467
- process.exit(0);
468
- }
469
- }
470
- // ---------------------------------------------------------------------------
471
- // handlePrecheckBash
472
- //
473
- // PreToolUse hook for the Bash tool. When the agent attempts to run file-
474
- // finding (find ... -name) or content-searching (grep -r, rg) commands,
475
- // deny and redirect to CodeSift tools instead.
476
- //
477
- // This ensures sub-agents (Explore, Plan, etc.) use the CodeSift index
478
- // rather than raw shell commands, even when they don't have CodeSift rules
479
- // in their context.
480
- //
481
- // Env vars:
482
- // HOOK_TOOL_INPUT — JSON string with tool_input.command
483
- // ---------------------------------------------------------------------------
484
- function isFileFindCommand(cmd) {
485
- const hasFind = /\bfind\s/.test(cmd);
486
- const hasNameFilter = /\s-i?name\s/.test(cmd);
487
- // Don't intercept destructive operations
488
- const hasDestructive = /\s-(?:exec|delete|ok)\b|\brm\s|\bmv\s/.test(cmd);
489
- return hasFind && hasNameFilter && !hasDestructive;
490
- }
491
- function isContentGrepCommand(cmd) {
492
- // grep -r/-R/--recursive (but not git grep)
493
- const hasRecursiveGrep = /\bgrep\b.*(?:\s-\w*[rR]\w*\s|--recursive)/.test(cmd) && !/\bgit\s+grep\b/.test(cmd);
494
- // standalone rg (not as part of another word like "org")
495
- const hasRg = /(?:^|[\s;&|])rg\s/.test(cmd);
496
- return hasRecursiveGrep || hasRg;
497
- }
498
- function getRegistryPath() {
499
- return join(process.env["CODESIFT_DATA_DIR"] ?? join(homedir(), ".codesift"), "registry.json");
500
- }
501
- /**
502
- * Treat the current shell as "inside an indexed repo" when CWD equals OR is
503
- * a descendant of any registered repo root whose on-disk index still exists.
504
- * Subdirectory match matters because agents typically work several levels
505
- * below the repo root (e.g. `src/utils/`); the previous exact-equality check
506
- * silently bypassed the redirect in those cases.
507
- */
508
- function isCurrentRepoIndexed() {
509
- try {
510
- const raw = readFileSync(getRegistryPath(), "utf-8");
511
- const parsed = JSON.parse(raw);
512
- if (!parsed.repos || typeof parsed.repos !== "object")
513
- return false;
514
- const repos = Object.values(parsed.repos);
515
- const cwd = process.cwd();
516
- for (const repo of repos) {
517
- if (!repo || typeof repo !== "object")
518
- continue;
519
- const meta = repo;
520
- if (typeof meta.root !== "string" || typeof meta.index_path !== "string")
521
- continue;
522
- if (!isCwdInsideRepo(cwd, meta.root))
523
- continue;
524
- if (existsSync(meta.index_path))
525
- return true;
526
- }
527
- }
528
- catch {
529
- // Hooks should never block normal shell use if registry inspection fails.
530
- }
531
- return false;
532
- }
533
- function isCwdInsideRepo(cwd, repoRoot) {
534
- if (cwd === repoRoot)
535
- return true;
536
- const rootWithSep = repoRoot.endsWith("/") ? repoRoot : repoRoot + "/";
537
- return cwd.startsWith(rootWithSep);
538
- }
539
- export async function handlePrecheckBash() {
540
- try {
541
- const raw = readRawInput();
542
- if (!raw) {
543
- process.exit(0);
544
- return;
545
- }
546
- const { command } = parseHookInput(raw);
547
- if (!command) {
548
- process.exit(0);
549
- return;
550
- }
551
- const shouldIntercept = isFileFindCommand(command) || isContentGrepCommand(command);
552
- if (!shouldIntercept) {
553
- process.exit(0);
554
- return;
555
- }
556
- const shouldRedirectToCodeSift = isCurrentRepoIndexed();
557
- if (!shouldRedirectToCodeSift) {
558
- process.exit(0);
559
- return;
560
- }
561
- if (isFileFindCommand(command)) {
562
- denyTool(`Current repo is indexed by CodeSift. Use CodeSift MCP tools instead of find:\n` +
563
- ` get_file_tree(compact=true, name_pattern="*.ts")\n` +
564
- ` search_symbols(query="test", kind="function")`);
565
- }
566
- if (isContentGrepCommand(command)) {
567
- denyTool(`Current repo is indexed by CodeSift. Use CodeSift MCP tools instead of grep/rg:\n` +
568
- ` search_text(query="pattern", file_pattern="*.ts")\n` +
569
- ` search_symbols(query="name", include_source=true)`);
570
- }
571
- process.exit(0);
572
- }
573
- catch {
574
- // CQ8: never crash — always fall back to allow
575
- process.exit(0);
576
- }
577
- }
578
- // ---------------------------------------------------------------------------
579
- // handlePrecheckGlob
580
- //
581
- // PreToolUse hook for the Glob tool. Redirects file-finding operations to
582
- // CodeSift's get_file_tree which uses the pre-built index.
583
- //
584
- // Env vars:
585
- // HOOK_TOOL_INPUT — JSON string with tool_input.pattern
586
- // ---------------------------------------------------------------------------
587
- export async function handlePrecheckGlob() {
588
- try {
589
- const raw = readRawInput();
590
- if (!raw) {
591
- process.exit(0);
592
- return;
593
- }
594
- denyTool(`CodeSift is available. Use CodeSift instead of Glob:\n` +
595
- ` get_file_tree(compact=true, name_pattern="*.ts") — find files\n` +
596
- ` search_symbols(query="name", kind="function") — find symbols`);
597
- }
598
- catch {
599
- process.exit(0);
600
- }
601
- }
602
- // ---------------------------------------------------------------------------
603
- // handlePrecheckGrep
604
- //
605
- // PreToolUse hook for the Grep tool. Redirects content-searching operations
606
- // to CodeSift's search_text which uses the pre-built BM25 index.
607
- //
608
- // Env vars:
609
- // HOOK_TOOL_INPUT — JSON string with tool_input.pattern
610
- // ---------------------------------------------------------------------------
611
- export async function handlePrecheckGrep() {
612
- try {
613
- const raw = readRawInput();
614
- if (!raw) {
615
- process.exit(0);
616
- return;
617
- }
618
- denyTool(`CodeSift is available. Use CodeSift instead of Grep:\n` +
619
- ` search_text(query="pattern", file_pattern="*.ts") — BM25-ranked full-text search\n` +
620
- ` search_symbols(query="name", include_source=true) — find functions/classes`);
621
- }
622
- catch {
623
- process.exit(0);
624
- }
625
- }
626
- // ---------------------------------------------------------------------------
627
- // handlePostindexFile
628
- //
629
- // PostToolUse hook for Write/Edit tools. When the agent writes or edits a
630
- // code file, re-index that file so the CodeSift index stays up to date.
631
- //
632
- // Env vars:
633
- // HOOK_TOOL_INPUT — JSON string with tool_input.file_path
634
- //
635
- // Always exits 0 (fire-and-forget — never block the agent on hook errors).
636
- // ---------------------------------------------------------------------------
637
- // Debounce window for handlePostindexFile. Telemetry showed 417/659
638
- // index_file calls were duplicates within 60s — Edit/Edit/Edit bursts hit the
639
- // hook 2-3× per logical change. 2s catches them without delaying real reindex.
640
- const POSTINDEX_DEBOUNCE_MS = 2000;
641
- function postindexDebouncePath() {
642
- const dataDir = process.env["CODESIFT_DATA_DIR"] ?? join(homedir(), ".codesift");
643
- return join(dataDir, "hook-debounce.json");
644
- }
645
- /**
646
- * Returns true if `filePath` was indexed within the debounce window.
647
- * Best-effort: any I/O error returns false so the hook never blocks the agent.
648
- */
649
- function shouldDebouncePostindex(filePath, now) {
650
- try {
651
- const path = postindexDebouncePath();
652
- let state = {};
653
- if (existsSync(path)) {
654
- try {
655
- state = JSON.parse(readFileSync(path, "utf-8"));
656
- }
657
- catch {
658
- state = {};
659
- }
660
- }
661
- const last = state[filePath];
662
- if (typeof last === "number" && now - last < POSTINDEX_DEBOUNCE_MS) {
663
- return true;
664
- }
665
- // Update state with current timestamp; opportunistically prune stale entries
666
- // older than 60s to keep the file small.
667
- const pruned = { [filePath]: now };
668
- for (const [k, v] of Object.entries(state)) {
669
- if (k !== filePath && typeof v === "number" && now - v < 60_000) {
670
- pruned[k] = v;
671
- }
672
- }
673
- try {
674
- mkdirSync(dirname(path), { recursive: true });
675
- writeFileSync(path, JSON.stringify(pruned));
676
- }
677
- catch {
678
- // Disk error — fall through; we still indexed once, no harm done.
679
- }
680
- return false;
681
- }
682
- catch {
683
- return false;
684
- }
685
- }
686
- // Auto-regenerate the wiki at most once per this window per repo. Telemetry
687
- // (Jun 2026) showed the wiki's queryable/pull path goes effectively unused by
688
- // agents, so per-structural-change regen was burning CPU to keep a map nobody
689
- // reads on demand fresh-to-the-minute. The overview changes slowly and tolerates
690
- // being a day stale, so the window is 24h: still auto-fresh, near-zero cost, no
691
- // per-edit churn. Override with CODESIFT_WIKI_REGEN_DEBOUNCE_MIN (minutes); set
692
- // CODESIFT_WIKI_AUTO_REGEN=1 to enable background refresh (manual
693
- // `codesift wiki-generate` is the default).
694
- function wikiRegenDebounceMs() {
695
- const raw = process.env["CODESIFT_WIKI_REGEN_DEBOUNCE_MIN"];
696
- const min = raw ? parseInt(raw, 10) : NaN;
697
- return (Number.isNaN(min) || min <= 0 ? 24 * 60 : min) * 60 * 1000;
698
- }
699
- const WIKI_REGEN_DEBOUNCE_MS = wikiRegenDebounceMs();
700
- // Skip background auto-regen entirely for repos larger than this (file count).
701
- // Whole-repo analysis on a huge repo is too heavy to run opportunistically on
702
- // edit — users regenerate those manually with `codesift wiki-generate`.
703
- // Override with CODESIFT_WIKI_AUTO_REGEN_MAX_FILES.
704
- const WIKI_REGEN_DEFAULT_MAX_FILES = 5000;
705
- function wikiRegenMaxFiles() {
706
- return positiveIntEnv("CODESIFT_WIKI_AUTO_REGEN_MAX_FILES", WIKI_REGEN_DEFAULT_MAX_FILES);
707
- }
708
- function wikiRegenStatePath() {
709
- const dataDir = process.env["CODESIFT_DATA_DIR"] ?? join(homedir(), ".codesift");
710
- return join(dataDir, "wiki-regen-debounce.json");
711
- }
712
- /** True if `repoRoot`'s wiki was regenerated within the throttle window. */
713
- function shouldDebounceWikiRegen(repoRoot, now) {
714
- try {
715
- const path = wikiRegenStatePath();
716
- let state = {};
717
- if (existsSync(path)) {
718
- try {
719
- state = JSON.parse(readFileSync(path, "utf-8"));
720
- }
721
- catch {
722
- state = {};
723
- }
724
- }
725
- const last = state[repoRoot];
726
- if (typeof last === "number" && now - last < WIKI_REGEN_DEBOUNCE_MS)
727
- return true;
728
- const pruned = { [repoRoot]: now };
729
- for (const [k, v] of Object.entries(state)) {
730
- if (k !== repoRoot && typeof v === "number" && now - v < 60 * 60_000)
731
- pruned[k] = v;
732
- }
733
- try {
734
- mkdirSync(dirname(path), { recursive: true });
735
- writeFileSync(path, JSON.stringify(pruned));
736
- }
737
- catch { /* disk */ }
738
- return false;
739
- }
740
- catch {
741
- return false;
742
- }
743
- }
744
- /**
745
- * Opportunistically regenerate the wiki for the repo containing `filePath`.
746
- * Fire-and-forget: spawns a detached `wiki-generate` process and returns
747
- * immediately so the agent is never blocked. No-ops unless ALL of:
748
- * - a wiki already exists for the repo (we never auto-create — opt-in only),
749
- * - the repo is not larger than the size cap (huge repos are manual-only),
750
- * - the edit added a NEW file (structure changed). Edits to files already
751
- * known to the wiki don't change the module map / overview, so they skip
752
- * regen — this makes the common case (editing existing code) cost nothing,
753
- * - the per-repo throttle window has elapsed.
754
- * Opt in via `CODESIFT_WIKI_AUTO_REGEN=1`.
755
- */
756
- function maybeRegenerateWiki(filePath, now, sessionId) {
757
- try {
758
- const optIn = process.env.CODESIFT_WIKI_AUTO_REGEN;
759
- if (optIn !== "1" && optIn !== "true")
760
- return;
761
- // Only repos that already have a wiki manifest are auto-refreshed.
762
- const repoRoot = findRepoRoot(filePath);
763
- if (!repoRoot)
764
- return;
765
- // Read the manifest once for the size + structural gates.
766
- let manifest;
767
- try {
768
- manifest = JSON.parse(readFileSync(join(repoRoot, WIKI_MANIFEST_REL), "utf-8"));
769
- }
770
- catch {
771
- return;
772
- }
773
- const fileMap = manifest["file_to_community"];
774
- const knownFiles = fileMap && typeof fileMap === "object" ? fileMap : null;
775
- // Size gate: don't run whole-repo analysis in the background for huge repos.
776
- if (knownFiles && Object.keys(knownFiles).length > wikiRegenMaxFiles())
777
- return;
778
- // Structural gate: only regenerate when a NEW file appeared. An edit to a
779
- // file the wiki already knows about doesn't change the architecture map, so
780
- // we skip it — the throttle is then never even consulted for plain edits.
781
- if (knownFiles) {
782
- const rel = pathPosix.normalize(relative(repoRoot, filePath).split("\\").join("/"));
783
- if (rel in knownFiles)
784
- return;
785
- }
786
- if (shouldDebounceWikiRegen(repoRoot, now))
787
- return;
788
- // Re-run the same CLI entry point that's executing this hook, with cwd set
789
- // to the repo root so `wiki-generate` auto-resolves the repo. Detached +
790
- // unref + ignored stdio so it outlives this short-lived hook process.
791
- const cliEntry = process.argv[1];
792
- if (!cliEntry)
793
- return;
794
- const child = spawn(process.execPath, [cliEntry, "wiki-generate", "--no-lens"], {
795
- cwd: repoRoot,
796
- detached: true,
797
- stdio: "ignore",
798
- });
799
- child.on("error", () => { });
800
- child.unref();
801
- logWikiEvent("wiki_auto_regen", repoRoot, { trigger: "new-file", file: relative(repoRoot, filePath) }, 0, sessionId);
802
- }
803
- catch {
804
- // CQ8: auto-regen is best-effort — never crash the hook.
805
- }
806
- }
807
- export async function handlePostindexFile() {
808
- try {
809
- const raw = readRawInput();
810
- if (!raw) {
811
- process.exit(0);
812
- return;
813
- }
814
- const { filePath } = parseHookInput(raw);
815
- if (!filePath) {
816
- process.exit(0);
817
- return;
818
- }
819
- const ext = extname(filePath).toLowerCase();
820
- if (!CODE_EXTENSIONS.has(ext)) {
821
- process.exit(0);
822
- return;
823
- }
824
- if (shouldDebouncePostindex(filePath, Date.now())) {
825
- process.exit(0);
826
- return;
827
- }
828
- try {
829
- const { indexFile } = await import("../tools/index-tools.js");
830
- await indexFile(filePath);
831
- }
832
- catch {
833
- // CQ8: fire-and-forget — never crash, never block the agent
834
- }
835
- // Keep the wiki fresh: throttled, detached background regeneration.
836
- maybeRegenerateWiki(filePath, Date.now(), parseHookInput(raw).sessionId);
837
- process.exit(0);
838
- }
839
- catch {
840
- process.exit(0);
841
- }
842
- }
843
- // ---------------------------------------------------------------------------
844
- // handlePrecompactSnapshot
845
- //
846
- // PreCompact hook for Claude Code. Reads the sidecar JSON file written by
847
- // the MCP server process, formats a compact snapshot, and writes it to stdout.
848
- // Claude Code injects stdout content into context before compaction.
849
- //
850
- // Env vars:
851
- // HOOK_TOOL_INPUT — JSON string with session_id
852
- //
853
- // Always exits 0 — never blocks compaction.
854
- // ---------------------------------------------------------------------------
855
- export async function handlePrecompactSnapshot() {
856
- try {
857
- const raw = readRawInput();
858
- if (!raw) {
859
- process.exit(0);
860
- return;
861
- }
862
- const { sessionId } = parseHookInput(raw);
863
- if (!sessionId || !/^[a-f0-9-]+$/i.test(sessionId)) {
864
- process.exit(0);
865
- return;
866
- }
867
- // Read sidecar file
868
- const dataDir = process.env["CODESIFT_DATA_DIR"] ?? join(homedir(), ".codesift");
869
- const sidecarPath = join(dataDir, `session-${sessionId}.json`);
870
- let sidecarData;
871
- try {
872
- const content = readFileSync(sidecarPath, "utf-8");
873
- sidecarData = JSON.parse(content);
874
- }
875
- catch {
876
- // Sidecar missing or invalid — exit gracefully
877
- process.exit(0);
878
- return;
879
- }
880
- // Deserialize and format snapshot
881
- const { deserializeState, formatSnapshot } = await import("../storage/session-state.js");
882
- const sessionState = deserializeState(sidecarData);
883
- const snapshot = formatSnapshot(sessionState);
884
- if (snapshot) {
885
- process.stdout.write(snapshot, () => process.exit(0));
886
- return;
887
- }
888
- process.exit(0);
889
- }
890
- catch {
891
- // CQ8: never crash — never block compaction
892
- process.exit(0);
893
- }
894
- }
895
- // ---------------------------------------------------------------------------
896
- // SessionStart / SessionGate / SentinelWriter / Agent gate hooks
897
- // Inspired by cmm-claude-code-setup (https://github.com/halindrome/cmm-claude-code-setup)
898
- // ---------------------------------------------------------------------------
899
- /** Emit modern Claude Code "deny" decision via stdout JSON, then exit 0. */
900
- function denyTool(reason) {
901
- process.stdout.write(JSON.stringify({
902
- hookSpecificOutput: {
903
- hookEventName: "PreToolUse",
904
- permissionDecision: "deny",
905
- permissionDecisionReason: reason,
906
- },
907
- }));
908
- process.exit(0);
909
- }
910
- function getSessionSentinelPath(sessionId) {
911
- const id = sessionId ?? "default";
912
- const hash = createHash("sha1").update(id).digest("hex").slice(0, 16);
913
- return join(tmpdir(), `codesift-session-ready-${hash}`);
914
- }
915
- export async function handleSessionStart() {
916
- try {
917
- const raw = readRawInput();
918
- const { sessionId } = raw ? parseHookInput(raw) : EMPTY_INPUT;
919
- const sentinel = getSessionSentinelPath(sessionId);
920
- try {
921
- unlinkSync(sentinel);
922
- }
923
- catch { /* not exist */ }
924
- // Inject context prompt
925
- let additionalContext = "CodeSift MCP is available (mcp__codesift__* tools). " +
926
- "Before searching code with built-in Grep/Glob/Read, prefer CodeSift tools: " +
927
- "search_text, get_file_tree, search_symbols, plan_turn. " +
928
- "Repo auto-resolves from CWD — no need for list_repos.";
929
- // Append the project wiki overview (architecture map) so every session starts
930
- // oriented without spending tool calls re-discovering structure. Best-effort:
931
- // only fires when a v2 wiki manifest exists at/above CWD; never blocks startup.
932
- if (process.env.CODESIFT_WIKI_OVERVIEW !== "0") {
933
- const repoRoot = findRepoRootFromDir(process.cwd());
934
- if (repoRoot) {
935
- const overview = tryLoadProjectOverview(repoRoot);
936
- if (overview) {
937
- additionalContext += overview;
938
- logWikiEvent("wiki_overview_injected", repoRoot, {
939
- chars: overview.length,
940
- modules: (overview.match(/^ - /gm) || []).length,
941
- }, Math.ceil(overview.length / 4), sessionId);
942
- }
943
- }
944
- }
945
- process.stdout.write(JSON.stringify({
946
- hookSpecificOutput: {
947
- hookEventName: "SessionStart",
948
- additionalContext,
949
- },
950
- }));
951
- process.exit(0);
952
- }
953
- catch {
954
- process.exit(0);
955
- }
956
- }
957
- // ---------------------------------------------------------------------------
958
- // handleSessionGate
959
- //
960
- // PreToolUse hook with empty matcher (matches ALL tools). Blocks every tool
961
- // EXCEPT the allow-list until a CodeSift tool has been called once
962
- // (sentinel file). Inspired by cmm-claude-code-setup/session-gate.sh.
963
- //
964
- // Allow-list (always permitted):
965
- // - All mcp__codesift__* (so the agent CAN call them to release the gate)
966
- // - Agent (so subagents can spawn — they have their own gate)
967
- // - Skill, ToolSearch, SendMessage, TaskCreate, TaskUpdate, TaskList
968
- // - PushNotification, ScheduleWakeup
969
- //
970
- // Once any mcp__codesift__index_status / plan_turn / index_folder is called,
971
- // the sentinel is created (by handleSentinelWriter PostToolUse) and all tools
972
- // are unlocked for the rest of the session.
973
- // ---------------------------------------------------------------------------
974
- const SESSION_GATE_ALLOWLIST = new Set([
975
- "Agent", "Skill", "ToolSearch", "SendMessage",
976
- "TaskCreate", "TaskUpdate", "TaskList", "TaskGet", "TaskOutput", "TaskStop",
977
- "PushNotification", "ScheduleWakeup", "AskUserQuestion",
978
- "EnterPlanMode", "ExitPlanMode", "EnterWorktree", "ExitWorktree",
979
- "Monitor", "CronCreate", "CronList", "CronDelete", "RemoteTrigger",
980
- ]);
981
- export async function handleSessionGate() {
982
- try {
983
- const raw = readRawInput();
984
- if (!raw) {
985
- process.exit(0);
986
- return;
987
- }
988
- const { toolName, sessionId } = parseHookInput(raw);
989
- if (!toolName) {
990
- process.exit(0);
991
- return;
992
- }
993
- // Allow CodeSift tools (they release the gate)
994
- if (toolName.startsWith("mcp__codesift__")) {
995
- process.exit(0);
996
- return;
997
- }
998
- // Allow infrastructure tools
999
- if (SESSION_GATE_ALLOWLIST.has(toolName)) {
1000
- process.exit(0);
1001
- return;
1002
- }
1003
- // Allow other MCP tools (sentry, playwright, etc. — not our concern)
1004
- if (toolName.startsWith("mcp__") && !toolName.startsWith("mcp__codesift__")) {
1005
- process.exit(0);
1006
- return;
1007
- }
1008
- // Check sentinel — has CodeSift been called yet?
1009
- const sentinel = getSessionSentinelPath(sessionId);
1010
- if (existsSync(sentinel)) {
1011
- process.exit(0);
1012
- return;
1013
- }
1014
- // Block — agent must call CodeSift first
1015
- denyTool(`CodeSift session not initialized. Call one of these first:\n` +
1016
- ` mcp__codesift__index_status() — check if repo is indexed\n` +
1017
- ` mcp__codesift__plan_turn(query="...") — natural-language tool router\n` +
1018
- ` mcp__codesift__get_file_tree() — list repo files\n` +
1019
- `Then '${toolName}' will be allowed.`);
1020
- }
1021
- catch {
1022
- process.exit(0);
1023
- }
1024
- }
1025
- // ---------------------------------------------------------------------------
1026
- // handleSentinelWriter
1027
- //
1028
- // PostToolUse hook for mcp__codesift__* tools. Creates the session-ready
1029
- // sentinel so subsequent tool calls pass the SessionGate.
1030
- // ---------------------------------------------------------------------------
1031
- export async function handleSentinelWriter() {
1032
- try {
1033
- const raw = readRawInput();
1034
- if (!raw) {
1035
- process.exit(0);
1036
- return;
1037
- }
1038
- const { sessionId } = parseHookInput(raw);
1039
- const sentinel = getSessionSentinelPath(sessionId);
1040
- try {
1041
- mkdirSync(dirname(sentinel), { recursive: true });
1042
- writeFileSync(sentinel, String(Date.now()), "utf-8");
1043
- }
1044
- catch { /* best-effort */ }
1045
- process.exit(0);
1046
- }
1047
- catch {
1048
- process.exit(0);
1049
- }
1050
- }
1051
- // ---------------------------------------------------------------------------
1052
- // handlePrecheckAgent
1053
- //
1054
- // PreToolUse hook for the Agent tool. Blocks Task/Explore subagent spawns
1055
- // whose prompt does NOT reference CodeSift tool names. Forces parent agent
1056
- // to either do the work itself with CodeSift, or pass CodeSift tool names
1057
- // in the subagent prompt. Inspired by cmm/agent-cmm-gate.sh.
1058
- // ---------------------------------------------------------------------------
1059
- const CODESIFT_TOOL_KEYWORDS = [
1060
- "search_text", "search_symbols", "get_file_tree", "get_file_outline",
1061
- "index_file", "get_symbol", "get_symbols", "find_references", "trace_call_chain",
1062
- "trace_route", "codebase_retrieval", "assemble_context", "plan_turn",
1063
- "search_all_conversations", "find_dead_code", "scan_secrets", "review_diff", "audit_scan",
1064
- "detect_communities", "analyze_complexity", "analyze_hotspots",
1065
- "impact_analysis", "find_and_show", "discover_tools", "describe_tools",
1066
- "codesift", "CodeSift",
1067
- ];
1068
- export async function handlePrecheckAgent() {
1069
- try {
1070
- const raw = readRawInput();
1071
- if (!raw) {
1072
- process.exit(0);
1073
- return;
1074
- }
1075
- let parsed;
1076
- try {
1077
- parsed = JSON.parse(raw);
1078
- }
1079
- catch {
1080
- process.exit(0);
1081
- return;
1082
- }
1083
- if (!parsed || typeof parsed !== "object") {
1084
- process.exit(0);
1085
- return;
1086
- }
1087
- const obj = parsed;
1088
- const ti = obj["tool_input"];
1089
- if (!ti) {
1090
- process.exit(0);
1091
- return;
1092
- }
1093
- const subagentType = typeof ti["subagent_type"] === "string" ? ti["subagent_type"] : "";
1094
- const prompt = typeof ti["prompt"] === "string" ? ti["prompt"] : "";
1095
- // Only nudge inside indexed repos — Explore can't use CodeSift in a repo
1096
- // that was never indexed, so gating subagents there is pointless friction.
1097
- if (!isCurrentRepoIndexed()) {
1098
- process.exit(0);
1099
- return;
1100
- }
1101
- // Only gate code-exploration subagents
1102
- if (subagentType !== "Explore" && subagentType !== "general-purpose" && subagentType !== "Plan") {
1103
- process.exit(0);
1104
- return;
1105
- }
1106
- // Allow if prompt mentions any CodeSift keyword
1107
- const lower = prompt.toLowerCase();
1108
- if (CODESIFT_TOOL_KEYWORDS.some((k) => lower.includes(k.toLowerCase()))) {
1109
- process.exit(0);
1110
- return;
1111
- }
1112
- // Detect code-search intent — block these
1113
- const CODE_SEARCH_INTENT = /\b(find|search|investigate|trace|explore|locate|grep|look\s+for|where\s+is|how\s+does|what\s+calls)\b.*\b(code|file|function|class|module|component|symbol|import|method|hook|route|endpoint|service|handler|in\s+the\s+(codebase|project|repo))\b/i;
1114
- if (CODE_SEARCH_INTENT.test(prompt)) {
1115
- // Code search detected without CodeSift keywords — block
1116
- }
1117
- else if (prompt.length < 200) {
1118
- // Non-code-search short prompt — allow
1119
- process.exit(0);
1120
- return;
1121
- }
1122
- // Block — subagent prompt should reference CodeSift tools
1123
- denyTool(`Subagent '${subagentType}' prompt does not mention any CodeSift tool.\n` +
1124
- `Explore subagent does NOT have access to mcp__codesift__* tools — it will use Grep/Glob/Read.\n` +
1125
- `Either:\n` +
1126
- ` 1. Add CodeSift tool names to the subagent prompt (search_text, get_file_tree, etc.)\n` +
1127
- ` 2. Do the work yourself using mcp__codesift__* tools — usually faster and cheaper`);
1128
- }
1129
- catch {
1130
- process.exit(0);
1131
- }
1132
- }
1
+ export { handlePrecheckRead, handlePrecheckBash, handlePrecheckGlob, handlePrecheckGrep, } from "./hooks/pre-tool-use.js";
2
+ export { handlePostindexFile } from "./hooks/post-tool-use.js";
3
+ export { handlePrecompactSnapshot } from "./hooks/pre-compact.js";
4
+ export { handleSessionStart, handleSessionGate, handleSentinelWriter, handlePrecheckAgent, } from "./hooks/session.js";
5
+ export { wikiOverviewMaxChars, wikiSummaryMaxChars } from "./hooks/wiki.js";
1133
6
  //# sourceMappingURL=hooks.js.map