codesift-mcp 0.2.18 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/README.md +143 -20
  2. package/dist/cache/hono-cache.d.ts +50 -0
  3. package/dist/cache/hono-cache.d.ts.map +1 -0
  4. package/dist/cache/hono-cache.js +132 -0
  5. package/dist/cache/hono-cache.js.map +1 -0
  6. package/dist/cli/setup.d.ts.map +1 -1
  7. package/dist/cli/setup.js +17 -2
  8. package/dist/cli/setup.js.map +1 -1
  9. package/dist/formatters-shortening.d.ts +13 -0
  10. package/dist/formatters-shortening.d.ts.map +1 -1
  11. package/dist/formatters-shortening.js +131 -0
  12. package/dist/formatters-shortening.js.map +1 -1
  13. package/dist/formatters.d.ts +38 -0
  14. package/dist/formatters.d.ts.map +1 -1
  15. package/dist/formatters.js +498 -0
  16. package/dist/formatters.js.map +1 -1
  17. package/dist/instructions.d.ts +1 -1
  18. package/dist/instructions.d.ts.map +1 -1
  19. package/dist/instructions.js +27 -26
  20. package/dist/instructions.js.map +1 -1
  21. package/dist/lsp/lsp-servers.d.ts.map +1 -1
  22. package/dist/lsp/lsp-servers.js +5 -0
  23. package/dist/lsp/lsp-servers.js.map +1 -1
  24. package/dist/lsp/lsp-tools.d.ts.map +1 -1
  25. package/dist/lsp/lsp-tools.js +1 -0
  26. package/dist/lsp/lsp-tools.js.map +1 -1
  27. package/dist/parser/astro-template.d.ts +47 -0
  28. package/dist/parser/astro-template.d.ts.map +1 -0
  29. package/dist/parser/astro-template.js +171 -0
  30. package/dist/parser/astro-template.js.map +1 -0
  31. package/dist/parser/extractors/_shared.d.ts +4 -0
  32. package/dist/parser/extractors/_shared.d.ts.map +1 -1
  33. package/dist/parser/extractors/_shared.js +8 -0
  34. package/dist/parser/extractors/_shared.js.map +1 -1
  35. package/dist/parser/extractors/astro.d.ts +4 -5
  36. package/dist/parser/extractors/astro.d.ts.map +1 -1
  37. package/dist/parser/extractors/astro.js +102 -26
  38. package/dist/parser/extractors/astro.js.map +1 -1
  39. package/dist/parser/extractors/gradle-kts.d.ts +4 -0
  40. package/dist/parser/extractors/gradle-kts.d.ts.map +1 -0
  41. package/dist/parser/extractors/gradle-kts.js +246 -0
  42. package/dist/parser/extractors/gradle-kts.js.map +1 -0
  43. package/dist/parser/extractors/hono-inline-analyzer.d.ts +34 -0
  44. package/dist/parser/extractors/hono-inline-analyzer.d.ts.map +1 -0
  45. package/dist/parser/extractors/hono-inline-analyzer.js +465 -0
  46. package/dist/parser/extractors/hono-inline-analyzer.js.map +1 -0
  47. package/dist/parser/extractors/hono-model.d.ts +196 -0
  48. package/dist/parser/extractors/hono-model.d.ts.map +1 -0
  49. package/dist/parser/extractors/hono-model.js +10 -0
  50. package/dist/parser/extractors/hono-model.js.map +1 -0
  51. package/dist/parser/extractors/hono.d.ts +118 -0
  52. package/dist/parser/extractors/hono.d.ts.map +1 -0
  53. package/dist/parser/extractors/hono.js +1527 -0
  54. package/dist/parser/extractors/hono.js.map +1 -0
  55. package/dist/parser/extractors/kotlin.d.ts +4 -0
  56. package/dist/parser/extractors/kotlin.d.ts.map +1 -0
  57. package/dist/parser/extractors/kotlin.js +521 -0
  58. package/dist/parser/extractors/kotlin.js.map +1 -0
  59. package/dist/parser/extractors/php.d.ts +22 -0
  60. package/dist/parser/extractors/php.d.ts.map +1 -0
  61. package/dist/parser/extractors/php.js +326 -0
  62. package/dist/parser/extractors/php.js.map +1 -0
  63. package/dist/parser/extractors/python.d.ts.map +1 -1
  64. package/dist/parser/extractors/python.js +234 -11
  65. package/dist/parser/extractors/python.js.map +1 -1
  66. package/dist/parser/extractors/sql.d.ts +33 -0
  67. package/dist/parser/extractors/sql.d.ts.map +1 -0
  68. package/dist/parser/extractors/sql.js +506 -0
  69. package/dist/parser/extractors/sql.js.map +1 -0
  70. package/dist/parser/extractors/typescript.d.ts.map +1 -1
  71. package/dist/parser/extractors/typescript.js +166 -3
  72. package/dist/parser/extractors/typescript.js.map +1 -1
  73. package/dist/parser/languages/tree-sitter-javascript.wasm +0 -0
  74. package/dist/parser/languages/tree-sitter-kotlin.wasm +0 -0
  75. package/dist/parser/languages/tree-sitter-php.wasm +0 -0
  76. package/dist/parser/languages/tree-sitter-php_only.wasm +0 -0
  77. package/dist/parser/languages/tree-sitter-python.wasm +0 -0
  78. package/dist/parser/parser-manager.d.ts +32 -0
  79. package/dist/parser/parser-manager.d.ts.map +1 -1
  80. package/dist/parser/parser-manager.js +82 -3
  81. package/dist/parser/parser-manager.js.map +1 -1
  82. package/dist/parser/symbol-extractor.d.ts.map +1 -1
  83. package/dist/parser/symbol-extractor.js +16 -0
  84. package/dist/parser/symbol-extractor.js.map +1 -1
  85. package/dist/register-tools.d.ts +37 -1
  86. package/dist/register-tools.d.ts.map +1 -1
  87. package/dist/register-tools.js +2657 -191
  88. package/dist/register-tools.js.map +1 -1
  89. package/dist/search/reranker.js +1 -1
  90. package/dist/search/reranker.js.map +1 -1
  91. package/dist/server-helpers.d.ts.map +1 -1
  92. package/dist/server-helpers.js +11 -0
  93. package/dist/server-helpers.js.map +1 -1
  94. package/dist/server.js +28 -1
  95. package/dist/server.js.map +1 -1
  96. package/dist/storage/index-store.d.ts +15 -1
  97. package/dist/storage/index-store.d.ts.map +1 -1
  98. package/dist/storage/index-store.js +27 -1
  99. package/dist/storage/index-store.js.map +1 -1
  100. package/dist/storage/session-state.d.ts +1 -1
  101. package/dist/storage/session-state.d.ts.map +1 -1
  102. package/dist/storage/session-state.js +6 -4
  103. package/dist/storage/session-state.js.map +1 -1
  104. package/dist/tools/agent-config-tools.d.ts +24 -0
  105. package/dist/tools/agent-config-tools.d.ts.map +1 -0
  106. package/dist/tools/agent-config-tools.js +119 -0
  107. package/dist/tools/agent-config-tools.js.map +1 -0
  108. package/dist/tools/architecture-tools.d.ts +23 -0
  109. package/dist/tools/architecture-tools.d.ts.map +1 -0
  110. package/dist/tools/architecture-tools.js +140 -0
  111. package/dist/tools/architecture-tools.js.map +1 -0
  112. package/dist/tools/astro-config.d.ts +33 -0
  113. package/dist/tools/astro-config.d.ts.map +1 -0
  114. package/dist/tools/astro-config.js +260 -0
  115. package/dist/tools/astro-config.js.map +1 -0
  116. package/dist/tools/astro-islands.d.ts +61 -0
  117. package/dist/tools/astro-islands.d.ts.map +1 -0
  118. package/dist/tools/astro-islands.js +240 -0
  119. package/dist/tools/astro-islands.js.map +1 -0
  120. package/dist/tools/astro-routes.d.ts +49 -0
  121. package/dist/tools/astro-routes.d.ts.map +1 -0
  122. package/dist/tools/astro-routes.js +119 -0
  123. package/dist/tools/astro-routes.js.map +1 -0
  124. package/dist/tools/audit-tools.d.ts +38 -0
  125. package/dist/tools/audit-tools.d.ts.map +1 -0
  126. package/dist/tools/audit-tools.js +248 -0
  127. package/dist/tools/audit-tools.js.map +1 -0
  128. package/dist/tools/celery-tools.d.ts +38 -0
  129. package/dist/tools/celery-tools.d.ts.map +1 -0
  130. package/dist/tools/celery-tools.js +154 -0
  131. package/dist/tools/celery-tools.js.map +1 -0
  132. package/dist/tools/clone-tools.js +1 -1
  133. package/dist/tools/clone-tools.js.map +1 -1
  134. package/dist/tools/complexity-tools.d.ts +4 -0
  135. package/dist/tools/complexity-tools.d.ts.map +1 -1
  136. package/dist/tools/complexity-tools.js +78 -4
  137. package/dist/tools/complexity-tools.js.map +1 -1
  138. package/dist/tools/compose-tools.d.ts +60 -0
  139. package/dist/tools/compose-tools.d.ts.map +1 -0
  140. package/dist/tools/compose-tools.js +203 -0
  141. package/dist/tools/compose-tools.js.map +1 -0
  142. package/dist/tools/coupling-tools.d.ts +50 -0
  143. package/dist/tools/coupling-tools.d.ts.map +1 -0
  144. package/dist/tools/coupling-tools.js +262 -0
  145. package/dist/tools/coupling-tools.js.map +1 -0
  146. package/dist/tools/dependency-audit-tools.d.ts +65 -0
  147. package/dist/tools/dependency-audit-tools.d.ts.map +1 -0
  148. package/dist/tools/dependency-audit-tools.js +553 -0
  149. package/dist/tools/dependency-audit-tools.js.map +1 -0
  150. package/dist/tools/django-settings.d.ts +22 -0
  151. package/dist/tools/django-settings.d.ts.map +1 -0
  152. package/dist/tools/django-settings.js +301 -0
  153. package/dist/tools/django-settings.js.map +1 -0
  154. package/dist/tools/frequency-tools.js +1 -1
  155. package/dist/tools/frequency-tools.js.map +1 -1
  156. package/dist/tools/graph-tools.d.ts +8 -2
  157. package/dist/tools/graph-tools.d.ts.map +1 -1
  158. package/dist/tools/graph-tools.js +44 -3
  159. package/dist/tools/graph-tools.js.map +1 -1
  160. package/dist/tools/hilt-tools.d.ts +55 -0
  161. package/dist/tools/hilt-tools.d.ts.map +1 -0
  162. package/dist/tools/hilt-tools.js +258 -0
  163. package/dist/tools/hilt-tools.js.map +1 -0
  164. package/dist/tools/hono-analyze-app.d.ts +48 -0
  165. package/dist/tools/hono-analyze-app.d.ts.map +1 -0
  166. package/dist/tools/hono-analyze-app.js +102 -0
  167. package/dist/tools/hono-analyze-app.js.map +1 -0
  168. package/dist/tools/hono-api-contract.d.ts +22 -0
  169. package/dist/tools/hono-api-contract.d.ts.map +1 -0
  170. package/dist/tools/hono-api-contract.js +80 -0
  171. package/dist/tools/hono-api-contract.js.map +1 -0
  172. package/dist/tools/hono-conditional-middleware.d.ts +27 -0
  173. package/dist/tools/hono-conditional-middleware.d.ts.map +1 -0
  174. package/dist/tools/hono-conditional-middleware.js +62 -0
  175. package/dist/tools/hono-conditional-middleware.js.map +1 -0
  176. package/dist/tools/hono-context-flow.d.ts +24 -0
  177. package/dist/tools/hono-context-flow.d.ts.map +1 -0
  178. package/dist/tools/hono-context-flow.js +78 -0
  179. package/dist/tools/hono-context-flow.js.map +1 -0
  180. package/dist/tools/hono-dead-routes.d.ts +26 -0
  181. package/dist/tools/hono-dead-routes.d.ts.map +1 -0
  182. package/dist/tools/hono-dead-routes.js +109 -0
  183. package/dist/tools/hono-dead-routes.js.map +1 -0
  184. package/dist/tools/hono-env-regression.d.ts +29 -0
  185. package/dist/tools/hono-env-regression.d.ts.map +1 -0
  186. package/dist/tools/hono-env-regression.js +157 -0
  187. package/dist/tools/hono-env-regression.js.map +1 -0
  188. package/dist/tools/hono-inline-analyze.d.ts +31 -0
  189. package/dist/tools/hono-inline-analyze.d.ts.map +1 -0
  190. package/dist/tools/hono-inline-analyze.js +67 -0
  191. package/dist/tools/hono-inline-analyze.js.map +1 -0
  192. package/dist/tools/hono-middleware-chain.d.ts +22 -0
  193. package/dist/tools/hono-middleware-chain.d.ts.map +1 -0
  194. package/dist/tools/hono-middleware-chain.js +84 -0
  195. package/dist/tools/hono-middleware-chain.js.map +1 -0
  196. package/dist/tools/hono-modules.d.ts +22 -0
  197. package/dist/tools/hono-modules.d.ts.map +1 -0
  198. package/dist/tools/hono-modules.js +126 -0
  199. package/dist/tools/hono-modules.js.map +1 -0
  200. package/dist/tools/hono-response-types.d.ts +37 -0
  201. package/dist/tools/hono-response-types.d.ts.map +1 -0
  202. package/dist/tools/hono-response-types.js +84 -0
  203. package/dist/tools/hono-response-types.js.map +1 -0
  204. package/dist/tools/hono-rpc-types.d.ts +21 -0
  205. package/dist/tools/hono-rpc-types.d.ts.map +1 -0
  206. package/dist/tools/hono-rpc-types.js +57 -0
  207. package/dist/tools/hono-rpc-types.js.map +1 -0
  208. package/dist/tools/hono-security.d.ts +21 -0
  209. package/dist/tools/hono-security.d.ts.map +1 -0
  210. package/dist/tools/hono-security.js +98 -0
  211. package/dist/tools/hono-security.js.map +1 -0
  212. package/dist/tools/hono-visualize.d.ts +13 -0
  213. package/dist/tools/hono-visualize.d.ts.map +1 -0
  214. package/dist/tools/hono-visualize.js +72 -0
  215. package/dist/tools/hono-visualize.js.map +1 -0
  216. package/dist/tools/hotspot-tools.d.ts.map +1 -1
  217. package/dist/tools/hotspot-tools.js +9 -7
  218. package/dist/tools/hotspot-tools.js.map +1 -1
  219. package/dist/tools/index-tools.d.ts +17 -0
  220. package/dist/tools/index-tools.d.ts.map +1 -1
  221. package/dist/tools/index-tools.js +210 -10
  222. package/dist/tools/index-tools.js.map +1 -1
  223. package/dist/tools/kotlin-tools.d.ts +142 -0
  224. package/dist/tools/kotlin-tools.d.ts.map +1 -0
  225. package/dist/tools/kotlin-tools.js +572 -0
  226. package/dist/tools/kotlin-tools.js.map +1 -0
  227. package/dist/tools/legacy-hono-conventions.d.ts +14 -0
  228. package/dist/tools/legacy-hono-conventions.d.ts.map +1 -0
  229. package/dist/tools/legacy-hono-conventions.js +152 -0
  230. package/dist/tools/legacy-hono-conventions.js.map +1 -0
  231. package/dist/tools/migration-lint-tools.d.ts +26 -0
  232. package/dist/tools/migration-lint-tools.d.ts.map +1 -0
  233. package/dist/tools/migration-lint-tools.js +247 -0
  234. package/dist/tools/migration-lint-tools.js.map +1 -0
  235. package/dist/tools/model-tools.d.ts +30 -0
  236. package/dist/tools/model-tools.d.ts.map +1 -0
  237. package/dist/tools/model-tools.js +145 -0
  238. package/dist/tools/model-tools.js.map +1 -0
  239. package/dist/tools/nest-ext-tools.d.ts +92 -0
  240. package/dist/tools/nest-ext-tools.d.ts.map +1 -0
  241. package/dist/tools/nest-ext-tools.js +359 -0
  242. package/dist/tools/nest-ext-tools.js.map +1 -0
  243. package/dist/tools/nest-tools.d.ts +171 -0
  244. package/dist/tools/nest-tools.d.ts.map +1 -0
  245. package/dist/tools/nest-tools.js +1042 -0
  246. package/dist/tools/nest-tools.js.map +1 -0
  247. package/dist/tools/nextjs-api-contract-readers.d.ts +14 -0
  248. package/dist/tools/nextjs-api-contract-readers.d.ts.map +1 -0
  249. package/dist/tools/nextjs-api-contract-readers.js +204 -0
  250. package/dist/tools/nextjs-api-contract-readers.js.map +1 -0
  251. package/dist/tools/nextjs-api-contract-tools.d.ts +57 -0
  252. package/dist/tools/nextjs-api-contract-tools.d.ts.map +1 -0
  253. package/dist/tools/nextjs-api-contract-tools.js +144 -0
  254. package/dist/tools/nextjs-api-contract-tools.js.map +1 -0
  255. package/dist/tools/nextjs-boundary-tools.d.ts +39 -0
  256. package/dist/tools/nextjs-boundary-tools.d.ts.map +1 -0
  257. package/dist/tools/nextjs-boundary-tools.js +152 -0
  258. package/dist/tools/nextjs-boundary-tools.js.map +1 -0
  259. package/dist/tools/nextjs-component-tools.d.ts +121 -0
  260. package/dist/tools/nextjs-component-tools.d.ts.map +1 -0
  261. package/dist/tools/nextjs-component-tools.js +460 -0
  262. package/dist/tools/nextjs-component-tools.js.map +1 -0
  263. package/dist/tools/nextjs-data-flow-tools.d.ts +42 -0
  264. package/dist/tools/nextjs-data-flow-tools.d.ts.map +1 -0
  265. package/dist/tools/nextjs-data-flow-tools.js +158 -0
  266. package/dist/tools/nextjs-data-flow-tools.js.map +1 -0
  267. package/dist/tools/nextjs-framework-audit-tools.d.ts +37 -0
  268. package/dist/tools/nextjs-framework-audit-tools.d.ts.map +1 -0
  269. package/dist/tools/nextjs-framework-audit-tools.js +211 -0
  270. package/dist/tools/nextjs-framework-audit-tools.js.map +1 -0
  271. package/dist/tools/nextjs-link-tools.d.ts +41 -0
  272. package/dist/tools/nextjs-link-tools.d.ts.map +1 -0
  273. package/dist/tools/nextjs-link-tools.js +157 -0
  274. package/dist/tools/nextjs-link-tools.js.map +1 -0
  275. package/dist/tools/nextjs-metadata-tools.d.ts +74 -0
  276. package/dist/tools/nextjs-metadata-tools.d.ts.map +1 -0
  277. package/dist/tools/nextjs-metadata-tools.js +252 -0
  278. package/dist/tools/nextjs-metadata-tools.js.map +1 -0
  279. package/dist/tools/nextjs-middleware-coverage-tools.d.ts +41 -0
  280. package/dist/tools/nextjs-middleware-coverage-tools.d.ts.map +1 -0
  281. package/dist/tools/nextjs-middleware-coverage-tools.js +88 -0
  282. package/dist/tools/nextjs-middleware-coverage-tools.js.map +1 -0
  283. package/dist/tools/nextjs-route-tools.d.ts +100 -0
  284. package/dist/tools/nextjs-route-tools.d.ts.map +1 -0
  285. package/dist/tools/nextjs-route-tools.js +493 -0
  286. package/dist/tools/nextjs-route-tools.js.map +1 -0
  287. package/dist/tools/nextjs-security-readers.d.ts +22 -0
  288. package/dist/tools/nextjs-security-readers.d.ts.map +1 -0
  289. package/dist/tools/nextjs-security-readers.js +318 -0
  290. package/dist/tools/nextjs-security-readers.js.map +1 -0
  291. package/dist/tools/nextjs-security-scoring.d.ts +15 -0
  292. package/dist/tools/nextjs-security-scoring.d.ts.map +1 -0
  293. package/dist/tools/nextjs-security-scoring.js +65 -0
  294. package/dist/tools/nextjs-security-scoring.js.map +1 -0
  295. package/dist/tools/nextjs-security-tools.d.ts +75 -0
  296. package/dist/tools/nextjs-security-tools.d.ts.map +1 -0
  297. package/dist/tools/nextjs-security-tools.js +153 -0
  298. package/dist/tools/nextjs-security-tools.js.map +1 -0
  299. package/dist/tools/nextjs-tools.d.ts +15 -0
  300. package/dist/tools/nextjs-tools.d.ts.map +1 -0
  301. package/dist/tools/nextjs-tools.js +15 -0
  302. package/dist/tools/nextjs-tools.js.map +1 -0
  303. package/dist/tools/outline-tools.d.ts.map +1 -1
  304. package/dist/tools/outline-tools.js +20 -0
  305. package/dist/tools/outline-tools.js.map +1 -1
  306. package/dist/tools/pattern-tools.d.ts +8 -0
  307. package/dist/tools/pattern-tools.d.ts.map +1 -1
  308. package/dist/tools/pattern-tools.js +561 -3
  309. package/dist/tools/pattern-tools.js.map +1 -1
  310. package/dist/tools/perf-tools.d.ts +32 -0
  311. package/dist/tools/perf-tools.d.ts.map +1 -0
  312. package/dist/tools/perf-tools.js +227 -0
  313. package/dist/tools/perf-tools.js.map +1 -0
  314. package/dist/tools/php-tools.d.ts +176 -0
  315. package/dist/tools/php-tools.d.ts.map +1 -0
  316. package/dist/tools/php-tools.js +543 -0
  317. package/dist/tools/php-tools.js.map +1 -0
  318. package/dist/tools/prisma-schema-tools.d.ts +44 -0
  319. package/dist/tools/prisma-schema-tools.d.ts.map +1 -0
  320. package/dist/tools/prisma-schema-tools.js +358 -0
  321. package/dist/tools/prisma-schema-tools.js.map +1 -0
  322. package/dist/tools/project-tools.d.ts +115 -6
  323. package/dist/tools/project-tools.d.ts.map +1 -1
  324. package/dist/tools/project-tools.js +594 -217
  325. package/dist/tools/project-tools.js.map +1 -1
  326. package/dist/tools/pyproject-tools.d.ts +23 -0
  327. package/dist/tools/pyproject-tools.d.ts.map +1 -0
  328. package/dist/tools/pyproject-tools.js +133 -0
  329. package/dist/tools/pyproject-tools.js.map +1 -0
  330. package/dist/tools/pytest-tools.d.ts +20 -0
  331. package/dist/tools/pytest-tools.d.ts.map +1 -0
  332. package/dist/tools/pytest-tools.js +106 -0
  333. package/dist/tools/pytest-tools.js.map +1 -0
  334. package/dist/tools/python-callers.d.ts +28 -0
  335. package/dist/tools/python-callers.d.ts.map +1 -0
  336. package/dist/tools/python-callers.js +110 -0
  337. package/dist/tools/python-callers.js.map +1 -0
  338. package/dist/tools/python-circular-imports.d.ts +19 -0
  339. package/dist/tools/python-circular-imports.d.ts.map +1 -0
  340. package/dist/tools/python-circular-imports.js +126 -0
  341. package/dist/tools/python-circular-imports.js.map +1 -0
  342. package/dist/tools/python-deps-analyzer.d.ts +46 -0
  343. package/dist/tools/python-deps-analyzer.d.ts.map +1 -0
  344. package/dist/tools/python-deps-analyzer.js +227 -0
  345. package/dist/tools/python-deps-analyzer.js.map +1 -0
  346. package/dist/tools/query-tools.d.ts +23 -0
  347. package/dist/tools/query-tools.d.ts.map +1 -0
  348. package/dist/tools/query-tools.js +256 -0
  349. package/dist/tools/query-tools.js.map +1 -0
  350. package/dist/tools/react-tools.d.ts +218 -0
  351. package/dist/tools/react-tools.d.ts.map +1 -0
  352. package/dist/tools/react-tools.js +714 -0
  353. package/dist/tools/react-tools.js.map +1 -0
  354. package/dist/tools/report-tools.js +47 -0
  355. package/dist/tools/report-tools.js.map +1 -1
  356. package/dist/tools/review-diff-tools.d.ts +2 -6
  357. package/dist/tools/review-diff-tools.d.ts.map +1 -1
  358. package/dist/tools/review-diff-tools.js +51 -66
  359. package/dist/tools/review-diff-tools.js.map +1 -1
  360. package/dist/tools/room-tools.d.ts +36 -0
  361. package/dist/tools/room-tools.d.ts.map +1 -0
  362. package/dist/tools/room-tools.js +147 -0
  363. package/dist/tools/room-tools.js.map +1 -0
  364. package/dist/tools/route-tools.d.ts +27 -1
  365. package/dist/tools/route-tools.d.ts.map +1 -1
  366. package/dist/tools/route-tools.js +744 -18
  367. package/dist/tools/route-tools.js.map +1 -1
  368. package/dist/tools/ruff-tools.d.ts +32 -0
  369. package/dist/tools/ruff-tools.d.ts.map +1 -0
  370. package/dist/tools/ruff-tools.js +114 -0
  371. package/dist/tools/ruff-tools.js.map +1 -0
  372. package/dist/tools/search-ranker.d.ts.map +1 -1
  373. package/dist/tools/search-ranker.js +7 -0
  374. package/dist/tools/search-ranker.js.map +1 -1
  375. package/dist/tools/serialization-tools.d.ts +24 -0
  376. package/dist/tools/serialization-tools.d.ts.map +1 -0
  377. package/dist/tools/serialization-tools.js +156 -0
  378. package/dist/tools/serialization-tools.js.map +1 -0
  379. package/dist/tools/sql-tools.d.ts +234 -0
  380. package/dist/tools/sql-tools.d.ts.map +1 -0
  381. package/dist/tools/sql-tools.js +1037 -0
  382. package/dist/tools/sql-tools.js.map +1 -0
  383. package/dist/tools/status-tools.d.ts +10 -0
  384. package/dist/tools/status-tools.d.ts.map +1 -0
  385. package/dist/tools/status-tools.js +32 -0
  386. package/dist/tools/status-tools.js.map +1 -0
  387. package/dist/tools/symbol-tools.d.ts +19 -0
  388. package/dist/tools/symbol-tools.d.ts.map +1 -1
  389. package/dist/tools/symbol-tools.js +78 -4
  390. package/dist/tools/symbol-tools.js.map +1 -1
  391. package/dist/tools/test-impact-tools.d.ts +29 -0
  392. package/dist/tools/test-impact-tools.d.ts.map +1 -0
  393. package/dist/tools/test-impact-tools.js +156 -0
  394. package/dist/tools/test-impact-tools.js.map +1 -0
  395. package/dist/tools/typecheck-tools.d.ts +39 -0
  396. package/dist/tools/typecheck-tools.d.ts.map +1 -0
  397. package/dist/tools/typecheck-tools.js +191 -0
  398. package/dist/tools/typecheck-tools.js.map +1 -0
  399. package/dist/tools/wiring-tools.d.ts +19 -0
  400. package/dist/tools/wiring-tools.d.ts.map +1 -0
  401. package/dist/tools/wiring-tools.js +147 -0
  402. package/dist/tools/wiring-tools.js.map +1 -0
  403. package/dist/types.d.ts +9 -1
  404. package/dist/types.d.ts.map +1 -1
  405. package/dist/utils/framework-detect.d.ts +18 -2
  406. package/dist/utils/framework-detect.d.ts.map +1 -1
  407. package/dist/utils/framework-detect.js +150 -3
  408. package/dist/utils/framework-detect.js.map +1 -1
  409. package/dist/utils/import-graph.d.ts +36 -0
  410. package/dist/utils/import-graph.d.ts.map +1 -1
  411. package/dist/utils/import-graph.js +212 -9
  412. package/dist/utils/import-graph.js.map +1 -1
  413. package/dist/utils/language-detect.d.ts +21 -0
  414. package/dist/utils/language-detect.d.ts.map +1 -0
  415. package/dist/utils/language-detect.js +183 -0
  416. package/dist/utils/language-detect.js.map +1 -0
  417. package/dist/utils/nextjs-ast-readers.d.ts +44 -0
  418. package/dist/utils/nextjs-ast-readers.d.ts.map +1 -0
  419. package/dist/utils/nextjs-ast-readers.js +341 -0
  420. package/dist/utils/nextjs-ast-readers.js.map +1 -0
  421. package/dist/utils/nextjs-audit-cache.d.ts +51 -0
  422. package/dist/utils/nextjs-audit-cache.d.ts.map +1 -0
  423. package/dist/utils/nextjs-audit-cache.js +116 -0
  424. package/dist/utils/nextjs-audit-cache.js.map +1 -0
  425. package/dist/utils/nextjs-metadata-readers.d.ts +65 -0
  426. package/dist/utils/nextjs-metadata-readers.d.ts.map +1 -0
  427. package/dist/utils/nextjs-metadata-readers.js +447 -0
  428. package/dist/utils/nextjs-metadata-readers.js.map +1 -0
  429. package/dist/utils/nextjs.d.ts +42 -0
  430. package/dist/utils/nextjs.d.ts.map +1 -0
  431. package/dist/utils/nextjs.js +284 -0
  432. package/dist/utils/nextjs.js.map +1 -0
  433. package/dist/utils/python-import-resolver.d.ts +42 -0
  434. package/dist/utils/python-import-resolver.d.ts.map +1 -0
  435. package/dist/utils/python-import-resolver.js +101 -0
  436. package/dist/utils/python-import-resolver.js.map +1 -0
  437. package/dist/utils/python-imports.d.ts +28 -0
  438. package/dist/utils/python-imports.d.ts.map +1 -0
  439. package/dist/utils/python-imports.js +117 -0
  440. package/dist/utils/python-imports.js.map +1 -0
  441. package/dist/utils/react-alias.d.ts +15 -0
  442. package/dist/utils/react-alias.d.ts.map +1 -0
  443. package/dist/utils/react-alias.js +31 -0
  444. package/dist/utils/react-alias.js.map +1 -0
  445. package/dist/utils/test-file.d.ts.map +1 -1
  446. package/dist/utils/test-file.js +7 -0
  447. package/dist/utils/test-file.js.map +1 -1
  448. package/dist/utils/walk.d.ts +22 -0
  449. package/dist/utils/walk.d.ts.map +1 -1
  450. package/dist/utils/walk.js +70 -2
  451. package/dist/utils/walk.js.map +1 -1
  452. package/package.json +3 -2
  453. package/rules/codesift.md +34 -5
  454. package/rules/codesift.mdc +34 -5
  455. package/rules/codex.md +34 -5
  456. package/rules/gemini.md +34 -5
  457. package/src/parser/languages/tree-sitter-javascript.wasm +0 -0
  458. package/src/parser/languages/tree-sitter-kotlin.wasm +0 -0
  459. package/src/parser/languages/tree-sitter-php.wasm +0 -0
  460. package/src/parser/languages/tree-sitter-php_only.wasm +0 -0
  461. package/src/parser/languages/tree-sitter-python.wasm +0 -0
@@ -0,0 +1,256 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Types
3
+ // ---------------------------------------------------------------------------
4
+ // ---------------------------------------------------------------------------
5
+ // Prisma call parser (regex-based MVP)
6
+ // ---------------------------------------------------------------------------
7
+ /**
8
+ * Extract the content between matching braces, starting after the first `{`.
9
+ * Returns the inner content (excluding outer braces), or null if not found.
10
+ */
11
+ function extractBraceContent(code, startIdx) {
12
+ let depth = 0;
13
+ let start = -1;
14
+ for (let i = startIdx; i < code.length; i++) {
15
+ if (code[i] === "{") {
16
+ if (depth === 0)
17
+ start = i + 1;
18
+ depth++;
19
+ }
20
+ else if (code[i] === "}") {
21
+ depth--;
22
+ if (depth === 0 && start >= 0) {
23
+ return code.slice(start, i);
24
+ }
25
+ }
26
+ }
27
+ return null;
28
+ }
29
+ /**
30
+ * Extract simple key-value fields from a Prisma options object.
31
+ * Works for flat structures like { email: "x", role: "admin" }.
32
+ */
33
+ function extractFields(content) {
34
+ const fields = {};
35
+ const fieldRegex = /(\w+)\s*:\s*(?:"([^"]*)"|\{[^}]*\}|(\w+))/g;
36
+ let match;
37
+ while ((match = fieldRegex.exec(content)) !== null) {
38
+ fields[match[1]] = match[2] ?? match[3] ?? "...";
39
+ }
40
+ return fields;
41
+ }
42
+ /**
43
+ * Extract array of field names from select/include: { field: true, ... }
44
+ */
45
+ function extractSelectedFields(content, key) {
46
+ const keyIdx = content.indexOf(`${key}:`);
47
+ if (keyIdx === -1)
48
+ return undefined;
49
+ const braceContent = extractBraceContent(content, keyIdx);
50
+ if (!braceContent)
51
+ return undefined;
52
+ const fields = [];
53
+ const fieldRegex = /(\w+)\s*:\s*true/g;
54
+ let match;
55
+ while ((match = fieldRegex.exec(braceContent)) !== null) {
56
+ fields.push(match[1]);
57
+ }
58
+ return fields.length > 0 ? fields : undefined;
59
+ }
60
+ /**
61
+ * Extract orderBy fields: { field: "asc" } or [{ field: "asc" }]
62
+ */
63
+ function extractOrderBy(content) {
64
+ const keyIdx = content.indexOf("orderBy:");
65
+ if (keyIdx === -1)
66
+ return undefined;
67
+ // Look for the content after orderBy:
68
+ const afterKey = content.slice(keyIdx + 8).trim();
69
+ const orders = [];
70
+ const orderRegex = /(\w+)\s*:\s*["']?(asc|desc)["']?/gi;
71
+ let match;
72
+ while ((match = orderRegex.exec(afterKey)) !== null) {
73
+ orders.push(`${match[1]} ${match[2].toUpperCase()}`);
74
+ }
75
+ return orders.length > 0 ? orders : undefined;
76
+ }
77
+ /**
78
+ * Extract numeric value for take/skip
79
+ */
80
+ function extractNumericField(content, key) {
81
+ const regex = new RegExp(`${key}\\s*:\\s*(\\d+)`);
82
+ const match = regex.exec(content);
83
+ return match ? parseInt(match[1], 10) : undefined;
84
+ }
85
+ function parsePrismaCall(code) {
86
+ // Match: prisma.modelName.method(
87
+ const callRegex = /\bprisma\.(\w+)\.(\w+)\s*\(/;
88
+ const callMatch = callRegex.exec(code);
89
+ if (!callMatch) {
90
+ throw new Error("Could not parse Prisma call. Expected format: prisma.model.method(...)");
91
+ }
92
+ const model = callMatch[1];
93
+ const method = callMatch[2];
94
+ // Extract the options object content
95
+ const optionsStart = callMatch.index + callMatch[0].length - 1; // position of '('
96
+ const braceStart = code.indexOf("{", optionsStart);
97
+ const parsed = { model, method };
98
+ if (braceStart >= 0) {
99
+ const content = extractBraceContent(code, braceStart);
100
+ if (content) {
101
+ // where
102
+ const whereIdx = content.indexOf("where:");
103
+ if (whereIdx >= 0) {
104
+ const whereContent = extractBraceContent(content, whereIdx);
105
+ if (whereContent) {
106
+ parsed.where = extractFields(whereContent);
107
+ }
108
+ }
109
+ parsed.select = extractSelectedFields(content, "select");
110
+ parsed.include = extractSelectedFields(content, "include");
111
+ parsed.orderBy = extractOrderBy(content);
112
+ parsed.take = extractNumericField(content, "take");
113
+ parsed.skip = extractNumericField(content, "skip");
114
+ }
115
+ }
116
+ return parsed;
117
+ }
118
+ // ---------------------------------------------------------------------------
119
+ // SQL generation
120
+ // ---------------------------------------------------------------------------
121
+ function quoteIdentifier(name, dialect) {
122
+ switch (dialect) {
123
+ case "postgresql": return `"${name}"`;
124
+ case "mysql": return `\`${name}\``;
125
+ case "sqlite": return `"${name}"`;
126
+ }
127
+ }
128
+ function modelToTable(model, dialect) {
129
+ // Prisma convention: model User → table "User" (postgres) or `User` (mysql)
130
+ return quoteIdentifier(model, dialect);
131
+ }
132
+ function whereToSql(where, dialect) {
133
+ const conditions = [];
134
+ for (const [key, value] of Object.entries(where)) {
135
+ const col = quoteIdentifier(key, dialect);
136
+ if (typeof value === "string") {
137
+ conditions.push(`${col} = '${value}'`);
138
+ }
139
+ else if (typeof value === "number") {
140
+ conditions.push(`${col} = ${value}`);
141
+ }
142
+ else {
143
+ conditions.push(`${col} = ?`);
144
+ }
145
+ }
146
+ return conditions.length > 0 ? ` WHERE ${conditions.join(" AND ")}` : "";
147
+ }
148
+ function generateSql(parsed, dialect) {
149
+ const table = modelToTable(parsed.model, dialect);
150
+ const selectCols = parsed.select
151
+ ? parsed.select.map((f) => quoteIdentifier(f, dialect)).join(", ")
152
+ : "*";
153
+ const whereSql = parsed.where ? whereToSql(parsed.where, dialect) : "";
154
+ const orderSql = parsed.orderBy
155
+ ? ` ORDER BY ${parsed.orderBy.map((o) => {
156
+ const [field, dir] = o.split(" ");
157
+ return `${quoteIdentifier(field, dialect)} ${dir ?? "ASC"}`;
158
+ }).join(", ")}`
159
+ : "";
160
+ switch (parsed.method) {
161
+ case "findMany":
162
+ case "findAll": {
163
+ const limitSql = parsed.take != null ? ` LIMIT ${parsed.take}` : "";
164
+ const offsetSql = parsed.skip != null ? ` OFFSET ${parsed.skip}` : "";
165
+ return `SELECT ${selectCols} FROM ${table}${whereSql}${orderSql}${limitSql}${offsetSql}`;
166
+ }
167
+ case "findFirst": {
168
+ return `SELECT ${selectCols} FROM ${table}${whereSql}${orderSql} LIMIT 1`;
169
+ }
170
+ case "findUnique": {
171
+ return `SELECT ${selectCols} FROM ${table}${whereSql} LIMIT 1`;
172
+ }
173
+ case "count": {
174
+ return `SELECT COUNT(*) FROM ${table}${whereSql}`;
175
+ }
176
+ case "aggregate": {
177
+ return `SELECT COUNT(*), MIN(*), MAX(*), AVG(*), SUM(*) FROM ${table}${whereSql}`;
178
+ }
179
+ case "groupBy": {
180
+ const groupCols = parsed.select
181
+ ? parsed.select.map((f) => quoteIdentifier(f, dialect)).join(", ")
182
+ : "?";
183
+ return `SELECT ${groupCols}, COUNT(*) FROM ${table}${whereSql} GROUP BY ${groupCols}${orderSql}`;
184
+ }
185
+ case "create": {
186
+ return `INSERT INTO ${table} (...) VALUES (...)`;
187
+ }
188
+ case "update": {
189
+ return `UPDATE ${table} SET ...${whereSql}`;
190
+ }
191
+ case "delete":
192
+ case "deleteMany": {
193
+ return `DELETE FROM ${table}${whereSql}`;
194
+ }
195
+ default: {
196
+ return `SELECT ${selectCols} FROM ${table}${whereSql}${orderSql}`;
197
+ }
198
+ }
199
+ }
200
+ // ---------------------------------------------------------------------------
201
+ // Warnings and hints
202
+ // ---------------------------------------------------------------------------
203
+ function generateWarnings(parsed) {
204
+ const warnings = [];
205
+ if ((parsed.method === "findMany" || parsed.method === "findAll") && parsed.take == null) {
206
+ warnings.push("findMany without take — unbounded query, could return entire table");
207
+ }
208
+ if (parsed.include && parsed.include.length > 0) {
209
+ warnings.push(`include with ${parsed.include.length} relation(s) — each generates a JOIN or sub-query`);
210
+ if (parsed.include.length >= 3) {
211
+ warnings.push("3+ includes — consider splitting into separate queries or using select");
212
+ }
213
+ }
214
+ if (parsed.method === "deleteMany" && !parsed.where) {
215
+ warnings.push("deleteMany without where — will delete ALL rows in table");
216
+ }
217
+ return warnings;
218
+ }
219
+ function generateHints(parsed) {
220
+ const hints = [];
221
+ if ((parsed.method === "findMany" || parsed.method === "findAll") && parsed.take == null) {
222
+ hints.push("Add take: 100 (or appropriate page size) for pagination");
223
+ }
224
+ if (parsed.where) {
225
+ const nonIndexedCandidates = Object.keys(parsed.where).filter((k) => !["id", "uuid", "email", "slug", "username"].includes(k.toLowerCase()));
226
+ for (const field of nonIndexedCandidates) {
227
+ hints.push(`Consider adding an index on "${field}" if queried frequently`);
228
+ }
229
+ }
230
+ if (parsed.orderBy && parsed.orderBy.length > 0) {
231
+ for (const order of parsed.orderBy) {
232
+ const field = order.split(" ")[0];
233
+ hints.push(`Ensure index covers "${field}" for efficient ORDER BY`);
234
+ }
235
+ }
236
+ if (parsed.skip != null && parsed.skip > 1000) {
237
+ hints.push(`skip: ${parsed.skip} is expensive — consider cursor-based pagination instead`);
238
+ }
239
+ return hints;
240
+ }
241
+ // ---------------------------------------------------------------------------
242
+ // Public API
243
+ // ---------------------------------------------------------------------------
244
+ export function explainQuery(code, options) {
245
+ const dialect = options?.dialect ?? "postgresql";
246
+ const parsed = parsePrismaCall(code);
247
+ const sql = generateSql(parsed, dialect);
248
+ return {
249
+ sql,
250
+ explain_command: `EXPLAIN ANALYZE ${sql}`,
251
+ warnings: generateWarnings(parsed),
252
+ optimization_hints: generateHints(parsed),
253
+ parsed,
254
+ };
255
+ }
256
+ //# sourceMappingURL=query-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-tools.js","sourceRoot":"","sources":["../../src/tools/query-tools.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAuB9E,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAE,QAAgB;IACzD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACpB,IAAI,KAAK,KAAK,CAAC;gBAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,EAAE,CAAC;QACV,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC3B,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,4CAA4C,CAAC;IAChE,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAe,EAAE,GAAW;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC1C,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAEpC,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1D,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IAEpC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,mBAAmB,CAAC;IACvC,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAEpC,sCAAsC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,oCAAoC,CAAC;IACxD,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAe,EAAE,GAAW;IACvD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,kCAAkC;IAClC,MAAM,SAAS,GAAG,6BAA6B,CAAC;IAChD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;IAE7B,qCAAqC;IACrC,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,kBAAkB;IAClF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAE9C,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACtD,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ;YACR,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAClB,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC5D,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YAED,MAAM,CAAC,MAAM,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACzD,MAAM,CAAC,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC3D,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,CAAC,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,SAAS,eAAe,CAAC,IAAY,EAAE,OAAgB;IACrD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,IAAI,GAAG,CAAC;QACtC,KAAK,OAAO,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC;QACnC,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,IAAI,GAAG,CAAC;IACpC,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,OAAgB;IACnD,4EAA4E;IAC5E,OAAO,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,UAAU,CAAC,KAA8B,EAAE,OAAgB;IAClE,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,KAAK,GAAG,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,WAAW,CAAC,MAAmB,EAAE,OAAgB;IACxD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM;QAC9B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAClE,CAAC,CAAC,GAAG,CAAC;IAER,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO;QAC7B,CAAC,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,OAAO,GAAG,eAAe,CAAC,KAAM,EAAE,OAAO,CAAC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QAC/D,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACjB,CAAC,CAAC,EAAE,CAAC;IAEP,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,OAAO,UAAU,UAAU,SAAS,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC;QAC3F,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO,UAAU,UAAU,SAAS,KAAK,GAAG,QAAQ,GAAG,QAAQ,UAAU,CAAC;QAC5E,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,OAAO,UAAU,UAAU,SAAS,KAAK,GAAG,QAAQ,UAAU,CAAC;QACjE,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,wBAAwB,KAAK,GAAG,QAAQ,EAAE,CAAC;QACpD,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO,wDAAwD,KAAK,GAAG,QAAQ,EAAE,CAAC;QACpF,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM;gBAC7B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClE,CAAC,CAAC,GAAG,CAAC;YACR,OAAO,UAAU,SAAS,mBAAmB,KAAK,GAAG,QAAQ,aAAa,SAAS,GAAG,QAAQ,EAAE,CAAC;QACnG,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,eAAe,KAAK,qBAAqB,CAAC;QACnD,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,UAAU,KAAK,WAAW,QAAQ,EAAE,CAAC;QAC9C,CAAC;QACD,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,OAAO,eAAe,KAAK,GAAG,QAAQ,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,UAAU,UAAU,SAAS,KAAK,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAAC;QACpE,CAAC;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,gBAAgB,CAAC,MAAmB;IAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACzF,QAAQ,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,OAAO,CAAC,MAAM,mDAAmD,CAAC,CAAC;QACxG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CAAC,MAAmB;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACzF,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAC3D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAC9E,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,gCAAgC,KAAK,yBAAyB,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,0BAA0B,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,0DAA0D,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,OAA+B;IAE/B,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,YAAY,CAAC;IACjD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzC,OAAO;QACL,GAAG;QACH,eAAe,EAAE,mBAAmB,GAAG,EAAE;QACzC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC;QAClC,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAAC;QACzC,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,218 @@
1
+ import type { CodeSymbol, CallNode } from "../types.js";
2
+ export { buildJsxAdjacency, buildComponentTree, extractJsxComponents, extractHookCalls, findRuleOfHooksViolations, findRenderRisks };
3
+ export declare const REACT_STDLIB_HOOKS: Set<string>;
4
+ interface JsxAdjacency {
5
+ /** component id → components it renders */
6
+ children: Map<string, CodeSymbol[]>;
7
+ }
8
+ /**
9
+ * Extract PascalCase JSX element names from source code.
10
+ * Returns the set of component names used via `<ComponentName ...>` or `<ComponentName/>`.
11
+ * HTML elements (lowercase) are skipped.
12
+ */
13
+ declare function extractJsxComponents(source: string): Set<string>;
14
+ /**
15
+ * Build component → rendered-components adjacency from the index.
16
+ * Only considers symbols with kind "component" (requires Wave 1 extractor).
17
+ */
18
+ declare function buildJsxAdjacency(symbols: CodeSymbol[]): JsxAdjacency;
19
+ /**
20
+ * BFS the component composition tree from a root component.
21
+ * Returns a CallNode tree of rendered components up to maxDepth.
22
+ */
23
+ declare function buildComponentTree(root: CodeSymbol, adjacency: JsxAdjacency, maxDepth: number): CallNode;
24
+ export interface TraceComponentTreeOptions {
25
+ depth?: number | undefined;
26
+ output_format?: "json" | "mermaid" | undefined;
27
+ include_source?: boolean | undefined;
28
+ include_tests?: boolean | undefined;
29
+ }
30
+ /**
31
+ * Trace the React component composition tree from a root component.
32
+ * Returns a tree of JSX children (which components the root renders,
33
+ * and recursively their children).
34
+ */
35
+ export declare function traceComponentTree(repo: string, rootComponent: string, options?: TraceComponentTreeOptions): Promise<CallNode | {
36
+ mermaid: string;
37
+ root: string;
38
+ depth: number;
39
+ }>;
40
+ export interface HookCall {
41
+ name: string;
42
+ line: number;
43
+ is_stdlib: boolean;
44
+ context: string;
45
+ }
46
+ export interface HookInventoryEntry {
47
+ name: string;
48
+ kind: "component" | "hook";
49
+ file: string;
50
+ start_line: number;
51
+ hook_count: number;
52
+ hooks: HookCall[];
53
+ violations: string[];
54
+ }
55
+ export interface HookUsageSummary {
56
+ name: string;
57
+ count: number;
58
+ is_stdlib: boolean;
59
+ }
60
+ export interface AnalyzeHooksResult {
61
+ entries: HookInventoryEntry[];
62
+ total_components: number;
63
+ total_custom_hooks: number;
64
+ hook_usage: HookUsageSummary[];
65
+ violations_count: number;
66
+ }
67
+ /**
68
+ * Scan a component/hook source for Rule of Hooks violations.
69
+ * Detects: hook inside if/for/while/switch, hook after early return.
70
+ * Returns a list of human-readable violation descriptions.
71
+ */
72
+ declare function findRuleOfHooksViolations(source: string): string[];
73
+ /**
74
+ * Extract hook calls from source with their relative line number.
75
+ */
76
+ declare function extractHookCalls(source: string): HookCall[];
77
+ /**
78
+ * Analyze hook usage across components and custom hooks in a repo.
79
+ *
80
+ * Returns:
81
+ * - per-symbol inventory (hooks called, violations)
82
+ * - codebase-wide hook usage summary
83
+ * - Rule of Hooks violation count
84
+ */
85
+ export declare function analyzeHooks(repo: string, options?: {
86
+ component_name?: string | undefined;
87
+ file_pattern?: string | undefined;
88
+ include_tests?: boolean | undefined;
89
+ max_entries?: number | undefined;
90
+ }): Promise<AnalyzeHooksResult>;
91
+ export interface RenderRisk {
92
+ type: "inline-object" | "inline-array" | "inline-function" | "unstable-default" | "missing-memo";
93
+ line: number;
94
+ context: string;
95
+ suggestion: string;
96
+ }
97
+ export interface RenderAnalysisEntry {
98
+ name: string;
99
+ file: string;
100
+ start_line: number;
101
+ is_memoized: boolean;
102
+ risk_count: number;
103
+ risk_level: "low" | "medium" | "high";
104
+ risks: RenderRisk[];
105
+ /** Components rendered as children (from JSX), useful to see impact */
106
+ children_count: number;
107
+ }
108
+ export interface AnalyzeRendersResult {
109
+ entries: RenderAnalysisEntry[];
110
+ total_components: number;
111
+ high_risk_count: number;
112
+ summary: {
113
+ inline_objects: number;
114
+ inline_arrays: number;
115
+ inline_functions: number;
116
+ unstable_defaults: number;
117
+ missing_memo: number;
118
+ };
119
+ }
120
+ /**
121
+ * Analyze a single component source for re-render risks.
122
+ */
123
+ declare function findRenderRisks(source: string): RenderRisk[];
124
+ /**
125
+ * Analyze re-render risk across React components in a repo.
126
+ *
127
+ * Detects:
128
+ * - Inline object/array/function props in JSX (new reference every render)
129
+ * - Unstable default parameter values ([] or {} in component params)
130
+ * - Components not wrapped in React.memo that render children (missing-memo)
131
+ *
132
+ * Returns per-component risk assessment with actionable suggestions.
133
+ */
134
+ /**
135
+ * Format an AnalyzeRendersResult as human-readable Markdown.
136
+ * Used by analyzeRenders when format="markdown" is requested.
137
+ */
138
+ export declare function formatRendersMarkdown(result: AnalyzeRendersResult): string;
139
+ export declare function analyzeRenders(repo: string, options?: {
140
+ component_name?: string | undefined;
141
+ file_pattern?: string | undefined;
142
+ include_tests?: boolean | undefined;
143
+ max_entries?: number | undefined;
144
+ format?: "json" | "markdown" | undefined;
145
+ }): Promise<AnalyzeRendersResult | string>;
146
+ export interface ReactContextInfo {
147
+ name: string;
148
+ created_in: {
149
+ file: string;
150
+ line: number;
151
+ };
152
+ providers: {
153
+ file: string;
154
+ line: number;
155
+ }[];
156
+ consumers: {
157
+ file: string;
158
+ component: string;
159
+ line: number;
160
+ }[];
161
+ }
162
+ export interface ContextGraph {
163
+ contexts: ReactContextInfo[];
164
+ }
165
+ /**
166
+ * Build a graph of React Context flows: createContext → Provider → useContext consumers.
167
+ *
168
+ * Single-pass scan over all symbols (capped at 500). No cycle detection — relies
169
+ * on visited set keyed by context name to prevent re-processing.
170
+ *
171
+ * Detection patterns:
172
+ * - createContext call: `const X = createContext(...)` or `const X = React.createContext(...)`
173
+ * - Provider usage: `<X.Provider value={...}>` (anywhere in any source)
174
+ * - Consumer usage: `useContext(X)` (anywhere in any source)
175
+ *
176
+ * Phase 2 features (not implemented here):
177
+ * - Cycle detection in provider chains
178
+ * - Re-render impact analysis ("which consumers re-render when X changes")
179
+ * - Context value type tracking
180
+ */
181
+ export declare function buildContextGraph(symbols: CodeSymbol[]): ContextGraph;
182
+ export interface CompilerReadinessResult {
183
+ /** 0-100 readiness score (100 = fully compatible) */
184
+ readiness_score: number;
185
+ total_components: number;
186
+ /** Components with 0 bailout patterns */
187
+ compatible_components: number;
188
+ /** Components with ≥1 bailout pattern */
189
+ bailout_components: number;
190
+ /** Count of redundant manual memoization (safe to remove post-adoption) */
191
+ redundant_memoization: number;
192
+ /** Bailout issues by pattern, sorted by frequency */
193
+ issues: Array<{
194
+ pattern: string;
195
+ count: number;
196
+ description: string;
197
+ }>;
198
+ /** Top components with most bailout issues */
199
+ top_bailout_components: Array<{
200
+ name: string;
201
+ file: string;
202
+ issues: number;
203
+ }>;
204
+ }
205
+ /**
206
+ * Audit a React codebase for React Compiler (v1.0) adoption readiness.
207
+ *
208
+ * Scans all components for patterns that cause the compiler to silently
209
+ * bail out of auto-memoization. Returns a readiness score (0-100) with
210
+ * prioritized fix list.
211
+ *
212
+ * No competitor offers codebase-wide compiler readiness analysis.
213
+ */
214
+ export declare function auditCompilerReadiness(repo: string, options?: {
215
+ file_pattern?: string | undefined;
216
+ include_tests?: boolean | undefined;
217
+ }): Promise<CompilerReadinessResult>;
218
+ //# sourceMappingURL=react-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-tools.d.ts","sourceRoot":"","sources":["../../src/tools/react-tools.ts"],"names":[],"mappings":"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"}