codesift-mcp 0.9.0 → 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 (1325) 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 -724
  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 +41 -1
  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 -113
  549. package/dist/tools/conversation-tools.d.ts.map +1 -1
  550. package/dist/tools/conversation-tools.js +4 -464
  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 +7 -6
  1314. package/rules/codesift.md +1 -1
  1315. package/rules/codesift.mdc +1 -1
  1316. package/rules/codex.md +1 -1
  1317. package/rules/gemini.md +1 -1
  1318. package/dist/tools/hono-conditional-middleware.d.ts +0 -27
  1319. package/dist/tools/hono-conditional-middleware.d.ts.map +0 -1
  1320. package/dist/tools/hono-conditional-middleware.js +0 -62
  1321. package/dist/tools/hono-conditional-middleware.js.map +0 -1
  1322. package/dist/tools/hono-env-regression.d.ts +0 -29
  1323. package/dist/tools/hono-env-regression.d.ts.map +0 -1
  1324. package/dist/tools/hono-env-regression.js +0 -157
  1325. package/dist/tools/hono-env-regression.js.map +0 -1
@@ -9,15 +9,23 @@
9
9
  * Plan: docs/specs/2026-04-10-hono-framework-intelligence-plan.md (Task 2-3)
10
10
  */
11
11
  import { readFile } from "node:fs/promises";
12
- import { existsSync, realpathSync } from "node:fs";
12
+ import { existsSync, realpathSync, statSync } from "node:fs";
13
13
  import path from "node:path";
14
14
  import { getParser } from "../parser-manager.js";
15
- import { HonoInlineAnalyzer } from "./hono-inline-analyzer.js";
16
- const HTTP_METHODS = new Set([
17
- "get", "post", "put", "delete", "patch", "options", "all", "on",
18
- ]);
15
+ import { HonoMiddlewareExtractor } from "./hono-middleware-extractor.js";
16
+ import { pickLanguage, stringLiteralValue, walk } from "./hono-ast-utils.js";
17
+ import { HonoRouteExtractor } from "./hono-route-extractor.js";
18
+ import { HonoOpenAPIExtractor } from "./hono-openapi-extractor.js";
19
+ import { HonoContextExtractor } from "./hono-context-extractor.js";
20
+ import { HonoRuntimeExtractor } from "./hono-runtime-extractor.js";
21
+ import { walkHonoAppVariables } from "./hono-app-discovery.js";
22
+ import { joinPaths } from "./hono-route-utils.js";
19
23
  export class HonoExtractor {
20
- inlineAnalyzer = new HonoInlineAnalyzer();
24
+ routeExtractor = new HonoRouteExtractor();
25
+ middlewareExtractor = new HonoMiddlewareExtractor();
26
+ openAPIExtractor = new HonoOpenAPIExtractor();
27
+ contextExtractor = new HonoContextExtractor();
28
+ runtimeExtractor = new HonoRuntimeExtractor();
21
29
  async parse(entryFile) {
22
30
  const absoluteEntry = canonicalize(path.resolve(entryFile));
23
31
  const model = emptyModel(absoluteEntry, {});
@@ -28,29 +36,10 @@ export class HonoExtractor {
28
36
  // Worker type, promote runtime to "cloudflare". Real Hono apps commonly
29
37
  // isolate Bindings type definitions in a separate file.
30
38
  if (model.runtime === "unknown") {
31
- model.runtime = await this.upgradeRuntimeFromImports(model.files_used);
39
+ model.runtime = await this.runtimeExtractor.upgradeRuntimeFromImports(model.files_used);
32
40
  }
33
41
  return model;
34
42
  }
35
- /**
36
- * Post-parse runtime upgrade. Scans each file in files_used (excluding the
37
- * entry file, which was already checked) for Cloudflare Worker type
38
- * references. Returns "cloudflare" on first match, "unknown" otherwise.
39
- */
40
- async upgradeRuntimeFromImports(filesUsed) {
41
- for (const file of filesUsed) {
42
- let source;
43
- try {
44
- source = await readFile(file, "utf-8");
45
- }
46
- catch {
47
- continue;
48
- }
49
- if (hasCloudflareBindingsType(source))
50
- return "cloudflare";
51
- }
52
- return "unknown";
53
- }
54
43
  /**
55
44
  * Parse a single file and merge results into the model.
56
45
  * @param file Absolute canonicalized path
@@ -147,13 +136,13 @@ export class HonoExtractor {
147
136
  const localMounts = [];
148
137
  const importMap = this.extractImportMap(tree.rootNode, file);
149
138
  // Walk for Hono app variables
150
- this.walkAppVariables(tree.rootNode, file, localAppVars);
139
+ walkHonoAppVariables(tree.rootNode, file, localAppVars);
151
140
  // Merge local app variables into model
152
141
  for (const [name, app] of Object.entries(localAppVars)) {
153
142
  model.app_variables[name] = app;
154
143
  }
155
144
  // Walk for HTTP routes (not app.route — those are handled separately)
156
- this.walkHttpRoutes(tree.rootNode, file, localAppVars, localRoutes);
145
+ this.routeExtractor.walkHttpRoutes(tree.rootNode, file, localAppVars, localRoutes);
157
146
  // Apply mount prefix on top of routes (route.path already has basePath)
158
147
  for (const route of localRoutes) {
159
148
  model.routes.push({
@@ -162,24 +151,24 @@ export class HonoExtractor {
162
151
  });
163
152
  }
164
153
  // Walk for context flow: c.set(), c.get(), c.var.*, c.env.*
165
- this.walkContextFlow(tree.rootNode, file, model);
154
+ this.contextExtractor.walkContextFlow(tree.rootNode, file, model);
166
155
  // Walk for middleware chains: app.use("scope", mw1, mw2, ...)
167
- this.walkMiddleware(tree.rootNode, file, localAppVars, importMap, model);
156
+ this.middlewareExtractor.walkMiddleware(tree.rootNode, file, localAppVars, model);
168
157
  // Walk for RPC type exports: export type AppType = typeof app
169
158
  this.walkRPCExports(tree.rootNode, file, localAppVars, model);
170
159
  // Walk for OpenAPI: createRoute() definitions + app.openapi() registrations
171
- this.walkOpenAPI(tree.rootNode, file, localAppVars, prefix, model);
160
+ this.openAPIExtractor.walkOpenAPI(tree.rootNode, file, localAppVars, prefix, model);
172
161
  // Scan imported files for context flow (middleware files like auth.ts)
173
162
  for (const [, importedFile] of importMap) {
174
163
  if (!model.files_used.includes(importedFile)) {
175
164
  model.files_used.push(importedFile);
176
165
  }
177
- await this.scanFileForContextFlow(importedFile, model);
166
+ await this.contextExtractor.scanFileForContextFlow(importedFile, model);
178
167
  }
179
168
  // Detect runtime and env bindings (only for entry file)
180
169
  if (file === model.entry_file) {
181
- model.runtime = await this.detectRuntime(file);
182
- this.extractEnvBindings(tree.rootNode, source, model);
170
+ model.runtime = await this.runtimeExtractor.detectRuntime(file);
171
+ this.runtimeExtractor.extractEnvBindings(tree.rootNode, source, model);
183
172
  }
184
173
  // Walk for app.route() mounts — recursive into child files.
185
174
  // `inFlight.delete(file)` runs in `finally` so an exception in walkRouteMounts
@@ -245,387 +234,6 @@ export class HonoExtractor {
245
234
  });
246
235
  return importMap;
247
236
  }
248
- walkAppVariables(root, file, localVars) {
249
- // First pass: detect factory variables (createFactory<Env>())
250
- const factoryVars = new Set();
251
- const cursor1 = root.walk();
252
- walk(cursor1, (node) => {
253
- if (node.type !== "variable_declarator")
254
- return;
255
- const nameNode = node.childForFieldName("name");
256
- const valueNode = node.childForFieldName("value");
257
- if (!nameNode || !valueNode || nameNode.type !== "identifier")
258
- return;
259
- if (isCreateFactoryCall(valueNode)) {
260
- factoryVars.add(nameNode.text);
261
- }
262
- });
263
- // Second pass: detect Hono app variables
264
- const cursor = root.walk();
265
- walk(cursor, (node) => {
266
- if (node.type !== "variable_declarator")
267
- return;
268
- const nameNode = node.childForFieldName("name");
269
- const valueNode = node.childForFieldName("value");
270
- if (!nameNode || !valueNode)
271
- return;
272
- if (nameNode.type !== "identifier")
273
- return;
274
- const name = nameNode.text;
275
- // Direct creation: new Hono(), new OpenAPIHono()
276
- const createdVia = classifyAppCreation(valueNode);
277
- if (createdVia) {
278
- localVars[name] = {
279
- variable_name: name,
280
- file,
281
- line: nameNode.startPosition.row + 1,
282
- created_via: createdVia,
283
- base_path: "",
284
- };
285
- return;
286
- }
287
- // basePath derivation: const v1 = app.basePath("/v1")
288
- const basePath = extractBasePathCall(valueNode, localVars);
289
- if (basePath) {
290
- localVars[name] = {
291
- variable_name: name,
292
- file,
293
- line: nameNode.startPosition.row + 1,
294
- created_via: "basePath",
295
- base_path: basePath.prefix,
296
- parent: basePath.parentVar,
297
- };
298
- return;
299
- }
300
- // factory.createApp(): const api = factory.createApp()
301
- if (isFactoryCreateApp(valueNode, factoryVars)) {
302
- localVars[name] = {
303
- variable_name: name,
304
- file,
305
- line: nameNode.startPosition.row + 1,
306
- created_via: "factory.createApp",
307
- base_path: "",
308
- };
309
- }
310
- });
311
- }
312
- walkHttpRoutes(root, file, appVars, routes) {
313
- const cursor = root.walk();
314
- walk(cursor, (node) => {
315
- if (node.type !== "call_expression")
316
- return;
317
- const fnNode = node.childForFieldName("function");
318
- const argsNode = node.childForFieldName("arguments");
319
- if (!fnNode || !argsNode || fnNode.type !== "member_expression")
320
- return;
321
- const objectNode = fnNode.childForFieldName("object");
322
- const propertyNode = fnNode.childForFieldName("property");
323
- if (!objectNode || !propertyNode || objectNode.type !== "identifier")
324
- return;
325
- const ownerVar = objectNode.text;
326
- const appDef = appVars[ownerVar];
327
- if (!appDef)
328
- return;
329
- const method = propertyNode.text.toLowerCase();
330
- if (!HTTP_METHODS.has(method) || method === "use" || method === "route")
331
- return;
332
- const argList = argsNode.namedChildren;
333
- if (argList.length === 0)
334
- return;
335
- // basePath prefix inherited from the HonoApp variable
336
- const basePrefix = appDef.base_path || "";
337
- // Handle app.on(["GET", "POST"], "/path", handler) — fan out
338
- if (method === "on") {
339
- this.handleOnMethod(argList, file, node, ownerVar, basePrefix, routes);
340
- return;
341
- }
342
- const firstArg = argList[0];
343
- if (!firstArg)
344
- return;
345
- const rawPath = stringLiteralValue(firstArg);
346
- if (rawPath == null)
347
- return;
348
- // Resolve once so buildHandler and analyzeHandlerIfInline see the same node.
349
- const handlerNode = argList[argList.length - 1] ?? firstArg;
350
- const handler = buildHandler(handlerNode, file);
351
- const regexConstraint = parseRegexConstraints(rawPath);
352
- const inlineAnalysis = this.analyzeHandlerIfInline(handler, handlerNode);
353
- routes.push({
354
- method: method.toUpperCase(),
355
- path: joinPaths(basePrefix, rawPath),
356
- raw_path: rawPath,
357
- file,
358
- line: node.startPosition.row + 1,
359
- owner_var: ownerVar,
360
- handler,
361
- inline_middleware: [],
362
- validators: [],
363
- ...(regexConstraint ? { regex_constraint: regexConstraint } : {}),
364
- ...(inlineAnalysis ? { inline_analysis: inlineAnalysis } : {}),
365
- });
366
- });
367
- }
368
- /**
369
- * Run InlineHandlerAnalyzer on the handler AST node when buildHandler
370
- * classified the handler as inline. Returns undefined for named-identifier
371
- * handlers — those are defined elsewhere and analyzed via their symbol.
372
- * The caller must pass the SAME node used by buildHandler so the two
373
- * decisions cannot disagree.
374
- */
375
- analyzeHandlerIfInline(handler, handlerNode) {
376
- if (!handler.inline)
377
- return undefined;
378
- return this.inlineAnalyzer.analyze(handlerNode);
379
- }
380
- /** Handle app.on(methods, path, handler) — fan out into per-method routes. */
381
- handleOnMethod(argList, file, node, ownerVar, basePrefix, routes) {
382
- if (argList.length < 2)
383
- return;
384
- const methodsArg = argList[0];
385
- const pathArg = argList[1];
386
- if (!methodsArg || !pathArg)
387
- return;
388
- // Methods: string or array of strings
389
- const methods = [];
390
- if (methodsArg.type === "array") {
391
- for (const el of methodsArg.namedChildren) {
392
- const v = stringLiteralValue(el);
393
- if (v)
394
- methods.push(v.toUpperCase());
395
- }
396
- }
397
- else {
398
- const v = stringLiteralValue(methodsArg);
399
- if (v)
400
- methods.push(v.toUpperCase());
401
- }
402
- if (methods.length === 0)
403
- return;
404
- const rawPath = stringLiteralValue(pathArg);
405
- if (rawPath == null)
406
- return;
407
- // Resolve once so buildHandler and analyzeHandlerIfInline see the same node.
408
- const handlerNode = argList[argList.length - 1] ?? pathArg;
409
- const handler = buildHandler(handlerNode, file);
410
- const regexConstraint = parseRegexConstraints(rawPath);
411
- const inlineAnalysis = this.analyzeHandlerIfInline(handler, handlerNode);
412
- for (const m of methods) {
413
- routes.push({
414
- method: m,
415
- path: joinPaths(basePrefix, rawPath),
416
- raw_path: rawPath,
417
- file,
418
- line: node.startPosition.row + 1,
419
- owner_var: ownerVar,
420
- handler,
421
- inline_middleware: [],
422
- validators: [],
423
- ...(regexConstraint ? { regex_constraint: regexConstraint } : {}),
424
- ...(inlineAnalysis ? { inline_analysis: inlineAnalysis } : {}),
425
- });
426
- }
427
- }
428
- /**
429
- * Walk for app.use(scope, mw1, mw2, ...) calls.
430
- * Handles: identifiers, inline arrows, some()/every() from hono/combine,
431
- * spread arrays, call expressions like cors().
432
- */
433
- walkMiddleware(root, file, appVars, _importMap, model) {
434
- // Build local variable → array declaration map for spread expansion
435
- const arrayVars = this.collectArrayVars(root);
436
- // Identify which imported names come from which packages
437
- const importSources = this.collectImportSources(root);
438
- const cursor = root.walk();
439
- walk(cursor, (node) => {
440
- if (node.type !== "call_expression")
441
- return;
442
- const fnNode = node.childForFieldName("function");
443
- const argsNode = node.childForFieldName("arguments");
444
- if (!fnNode || !argsNode || fnNode.type !== "member_expression")
445
- return;
446
- const objectNode = fnNode.childForFieldName("object");
447
- const propertyNode = fnNode.childForFieldName("property");
448
- if (!objectNode || !propertyNode || objectNode.type !== "identifier")
449
- return;
450
- const ownerVar = objectNode.text;
451
- if (!appVars[ownerVar])
452
- return;
453
- if (propertyNode.text !== "use")
454
- return;
455
- const argList = argsNode.namedChildren;
456
- if (argList.length === 0)
457
- return;
458
- // First arg may be a scope path string, or directly a middleware
459
- let scope = "*";
460
- let mwStartIdx = 0;
461
- const firstArg = argList[0];
462
- if (firstArg) {
463
- const maybeScope = stringLiteralValue(firstArg);
464
- if (maybeScope != null) {
465
- scope = maybeScope;
466
- mwStartIdx = 1;
467
- }
468
- }
469
- const entries = [];
470
- let order = 0;
471
- for (let i = mwStartIdx; i < argList.length; i++) {
472
- const arg = argList[i];
473
- if (!arg)
474
- continue;
475
- order++;
476
- // Spread: ...adminChain
477
- if (arg.type === "spread_element") {
478
- const inner = arg.namedChildren[0];
479
- if (inner?.type === "identifier") {
480
- const arrItems = arrayVars.get(inner.text);
481
- if (arrItems) {
482
- for (const item of arrItems) {
483
- entries.push(this.buildMiddlewareEntry(item, file, node.startPosition.row + 1, order++, importSources, undefined));
484
- }
485
- }
486
- }
487
- continue;
488
- }
489
- // some(mw1, mw2) / every(mw1, mw2) from hono/combine
490
- if (arg.type === "call_expression") {
491
- const callFn = arg.childForFieldName("function");
492
- const callArgs = arg.childForFieldName("arguments");
493
- if (callFn?.type === "identifier" &&
494
- (callFn.text === "some" || callFn.text === "every") && callArgs) {
495
- const combineType = callFn.text;
496
- for (const innerArg of callArgs.namedChildren) {
497
- entries.push(this.buildMiddlewareEntry(innerArg.type === "identifier" ? innerArg.text : "<inline>", file, innerArg.startPosition.row + 1, order++, importSources, combineType));
498
- }
499
- continue;
500
- }
501
- }
502
- // Regular middleware: identifier, call expression, or inline arrow
503
- const mwName = this.extractMiddlewareName(arg);
504
- entries.push(this.buildMiddlewareEntry(mwName, file, arg.startPosition.row + 1, order, importSources, undefined));
505
- // T4: If this is an inline arrow, scan its body for conditional
506
- // middleware calls like `if (cond) return mw(c, next)`. Each match
507
- // produces an ADDITIONAL entry with applied_when set.
508
- if (arg.type === "arrow_function" ||
509
- arg.type === "function_expression") {
510
- const conditional = this.detectConditionalMiddlewareCalls(arg);
511
- for (const found of conditional) {
512
- order++;
513
- const extra = this.buildMiddlewareEntry(found.name, file, found.line, order, importSources, undefined);
514
- extra.conditional = true;
515
- extra.applied_when = found.applied_when;
516
- entries.push(extra);
517
- }
518
- }
519
- }
520
- if (entries.length > 0) {
521
- // Merge into existing chain for same scope, or create new
522
- const existing = model.middleware_chains.find((mc) => mc.scope === scope && mc.owner_var === ownerVar);
523
- if (existing) {
524
- existing.entries.push(...entries);
525
- }
526
- else {
527
- // scope_pattern is the raw scope (e.g., "*" or "/api/*") — downstream
528
- // tools compile to regex via compileScopePattern()
529
- model.middleware_chains.push({
530
- scope,
531
- scope_pattern: scope,
532
- owner_var: ownerVar,
533
- entries,
534
- });
535
- }
536
- }
537
- });
538
- }
539
- /**
540
- * T4: walk an inline middleware arrow body and surface any conditional
541
- * calls of the form `if (cond) return mw(c, next)` or `if (cond) await mw(c, next)`.
542
- *
543
- * We only inspect the DIRECT `if` statements at the top of the body (one level
544
- * of `statement_block` / `return_statement`). Deep nesting is out of scope to
545
- * keep false positives low.
546
- *
547
- * Returns an entry per conditional call found, with name + condition info.
548
- */
549
- detectConditionalMiddlewareCalls(fnNode) {
550
- const results = [];
551
- // Arrow function body is either an expression or a statement_block
552
- const block = fnNode.childForFieldName("body");
553
- if (!block)
554
- return results;
555
- // Only walk if the arrow body is a statement_block — expression-body
556
- // arrows `(c) => foo(c, next)` are NOT conditional by definition.
557
- if (block.type !== "statement_block")
558
- return results;
559
- for (let i = 0; i < block.childCount; i++) {
560
- const stmt = block.child(i);
561
- if (stmt?.type !== "if_statement")
562
- continue;
563
- const condition = stmt.childForFieldName("condition");
564
- const consequence = stmt.childForFieldName("consequence");
565
- if (!condition || !consequence)
566
- continue;
567
- // Resolve block-local `const x = mwFactory({...})` aliases so that
568
- // const auth = basicAuth({...});
569
- // return auth(c, next);
570
- // reports "basicAuth" instead of "auth".
571
- const localAliases = collectLocalAliases(consequence);
572
- // Find mw call inside the consequence.
573
- const mwCall = findMiddlewareCallInBlock(consequence);
574
- if (!mwCall)
575
- continue;
576
- const rawName = extractCallCalleeName(mwCall);
577
- if (!rawName)
578
- continue;
579
- const name = localAliases.get(rawName) ?? rawName;
580
- const condText = condition.text.slice(0, 200);
581
- const applied_when = {
582
- condition_type: classifyConditionType(condition),
583
- condition_text: condText,
584
- };
585
- results.push({
586
- name,
587
- line: mwCall.startPosition.row + 1,
588
- applied_when,
589
- });
590
- }
591
- return results;
592
- }
593
- extractMiddlewareName(node) {
594
- if (node.type === "identifier")
595
- return node.text;
596
- if (node.type === "arrow_function" || node.type === "function_expression") {
597
- return "<inline>";
598
- }
599
- if (node.type === "call_expression") {
600
- const fn = node.childForFieldName("function");
601
- if (fn?.type === "identifier")
602
- return fn.text;
603
- if (fn?.type === "member_expression") {
604
- const prop = fn.childForFieldName("property");
605
- return prop?.text ?? "<inline>";
606
- }
607
- }
608
- return "<inline>";
609
- }
610
- buildMiddlewareEntry(name, file, line, order, importSources, expandedFrom) {
611
- const importedFrom = importSources.get(name);
612
- const isThirdParty = !!importedFrom && (importedFrom.startsWith("hono/") ||
613
- !importedFrom.startsWith("."));
614
- const entry = {
615
- name,
616
- order,
617
- line,
618
- file,
619
- inline: name === "<inline>",
620
- is_third_party: isThirdParty,
621
- conditional: expandedFrom === "some",
622
- };
623
- if (importedFrom)
624
- entry.imported_from = importedFrom;
625
- if (expandedFrom)
626
- entry.expanded_from = expandedFrom;
627
- return entry;
628
- }
629
237
  /**
630
238
  * Walk for `export type X = typeof varName` declarations.
631
239
  * Classifies as "full_app" if varName is the root app (has mounts/middleware on it),
@@ -667,288 +275,6 @@ export class HonoExtractor {
667
275
  });
668
276
  });
669
277
  }
670
- /**
671
- * Walk for createRoute() definitions and app.openapi(route, handler) registrations.
672
- * - createRoute({method, path, ...}) → tracked in a local map by variable name
673
- * - app.openapi(routeVar, handler) → emits OpenAPIRoute + adds to model.routes
674
- */
675
- walkOpenAPI(root, file, appVars, prefix, model) {
676
- // First pass: collect createRoute() variable definitions
677
- const routeDefs = new Map();
678
- const cursor1 = root.walk();
679
- walk(cursor1, (node) => {
680
- if (node.type !== "variable_declarator")
681
- return;
682
- const nameNode = node.childForFieldName("name");
683
- const valueNode = node.childForFieldName("value");
684
- if (!nameNode || !valueNode || nameNode.type !== "identifier")
685
- return;
686
- if (valueNode.type !== "call_expression")
687
- return;
688
- const fn = valueNode.childForFieldName("function");
689
- if (!fn || fn.text !== "createRoute")
690
- return;
691
- const args = valueNode.childForFieldName("arguments");
692
- const objArg = args?.namedChildren[0];
693
- if (!objArg || objArg.type !== "object")
694
- return;
695
- let method = "";
696
- let routePath = "";
697
- for (const prop of objArg.namedChildren) {
698
- if (prop.type !== "pair")
699
- continue;
700
- const key = prop.childForFieldName("key");
701
- const val = prop.childForFieldName("value");
702
- if (!key || !val)
703
- continue;
704
- if (key.text === "method") {
705
- method = stringLiteralValue(val) ?? "";
706
- }
707
- if (key.text === "path") {
708
- routePath = stringLiteralValue(val) ?? "";
709
- }
710
- }
711
- if (method && routePath) {
712
- routeDefs.set(nameNode.text, {
713
- method,
714
- path: routePath,
715
- line: node.startPosition.row + 1,
716
- });
717
- }
718
- });
719
- // Second pass: find app.openapi(routeVar, handler) calls
720
- const cursor2 = root.walk();
721
- walk(cursor2, (node) => {
722
- if (node.type !== "call_expression")
723
- return;
724
- const fnNode = node.childForFieldName("function");
725
- const argsNode = node.childForFieldName("arguments");
726
- if (!fnNode || !argsNode || fnNode.type !== "member_expression")
727
- return;
728
- const obj = fnNode.childForFieldName("object");
729
- const prop = fnNode.childForFieldName("property");
730
- if (!obj || !prop || obj.type !== "identifier")
731
- return;
732
- if (!appVars[obj.text])
733
- return;
734
- if (prop.text !== "openapi")
735
- return;
736
- const argList = argsNode.namedChildren;
737
- if (argList.length < 2)
738
- return;
739
- const routeRef = argList[0];
740
- const handlerArg = argList[1];
741
- if (!routeRef || !handlerArg)
742
- return;
743
- if (routeRef.type !== "identifier")
744
- return;
745
- const routeDef = routeDefs.get(routeRef.text);
746
- if (!routeDef)
747
- return;
748
- const honoPath = routeDef.path.replace(/\{(\w+)\}/g, ":$1");
749
- const openapiRoute = {
750
- id: `openapi_${routeRef.text}`,
751
- method: routeDef.method,
752
- path: routeDef.path,
753
- hono_path: honoPath,
754
- request_schemas: {},
755
- response_schemas: {},
756
- middleware: [],
757
- hidden: false,
758
- file,
759
- line: routeDef.line,
760
- };
761
- model.openapi_routes.push(openapiRoute);
762
- // Also add as a regular route
763
- const handler = buildHandler(handlerArg, file);
764
- model.routes.push({
765
- method: routeDef.method.toUpperCase(),
766
- path: joinPaths(prefix, honoPath),
767
- raw_path: honoPath,
768
- file,
769
- line: node.startPosition.row + 1,
770
- owner_var: obj.text,
771
- handler,
772
- inline_middleware: [],
773
- validators: [],
774
- openapi_route_id: openapiRoute.id,
775
- });
776
- });
777
- }
778
- /**
779
- * Lightweight scan of an imported file (e.g., middleware) for context flow only.
780
- * Does not extract routes or mounts — just c.set/c.get/c.var patterns.
781
- */
782
- async scanFileForContextFlow(file, model) {
783
- let source;
784
- try {
785
- source = await readFile(file, "utf-8");
786
- }
787
- catch {
788
- return;
789
- }
790
- const parser = await getParser(pickLanguage(file));
791
- if (!parser)
792
- return;
793
- const tree = parser.parse(source);
794
- if (!tree)
795
- return;
796
- try {
797
- this.walkContextFlow(tree.rootNode, file, model);
798
- }
799
- finally {
800
- tree.delete();
801
- }
802
- }
803
- /**
804
- * Walk for context variable flow: c.set("key", val), c.get("key"), c.var.key, c.env.KEY.
805
- * Detects conditional sets (inside if/try/switch blocks).
806
- */
807
- walkContextFlow(root, file, model) {
808
- const varsMap = new Map();
809
- const getOrCreate = (name, isEnv) => {
810
- let cv = varsMap.get(name);
811
- if (!cv) {
812
- cv = { name, set_points: [], get_points: [], is_env_binding: isEnv };
813
- varsMap.set(name, cv);
814
- }
815
- return cv;
816
- };
817
- const cursor = root.walk();
818
- walk(cursor, (node) => {
819
- // c.set("key", value)
820
- if (node.type === "call_expression") {
821
- const fn = node.childForFieldName("function");
822
- if (fn?.type === "member_expression") {
823
- const obj = fn.childForFieldName("object");
824
- const prop = fn.childForFieldName("property");
825
- if (obj?.text === "c" && prop?.text === "set") {
826
- const args = node.childForFieldName("arguments");
827
- const keyArg = args?.namedChildren[0];
828
- if (keyArg) {
829
- const key = stringLiteralValue(keyArg);
830
- if (key) {
831
- const cv = getOrCreate(key, false);
832
- cv.set_points.push({
833
- file,
834
- line: node.startPosition.row + 1,
835
- scope: "middleware",
836
- via_context_storage: false,
837
- condition: isInsideBranch(node) ? "conditional" : "always",
838
- });
839
- }
840
- }
841
- }
842
- // c.get("key")
843
- if (obj?.text === "c" && prop?.text === "get") {
844
- const args = node.childForFieldName("arguments");
845
- const keyArg = args?.namedChildren[0];
846
- if (keyArg) {
847
- const key = stringLiteralValue(keyArg);
848
- if (key) {
849
- const cv = getOrCreate(key, false);
850
- cv.get_points.push({
851
- file,
852
- line: node.startPosition.row + 1,
853
- scope: "handler",
854
- via_context_storage: false,
855
- condition: "always",
856
- });
857
- }
858
- }
859
- }
860
- }
861
- }
862
- // c.var.key — member_expression chain: c.var.key → (c.var).key
863
- if (node.type === "member_expression") {
864
- const obj = node.childForFieldName("object");
865
- const prop = node.childForFieldName("property");
866
- if (obj?.type === "member_expression" && prop) {
867
- const innerObj = obj.childForFieldName("object");
868
- const innerProp = obj.childForFieldName("property");
869
- if (innerObj?.text === "c" && innerProp?.text === "var") {
870
- const cv = getOrCreate(prop.text, false);
871
- cv.get_points.push({
872
- file,
873
- line: node.startPosition.row + 1,
874
- scope: "handler",
875
- via_context_storage: false,
876
- condition: "always",
877
- });
878
- }
879
- }
880
- }
881
- });
882
- // Merge into model.context_vars
883
- for (const cv of varsMap.values()) {
884
- const existing = model.context_vars.find((e) => e.name === cv.name);
885
- if (existing) {
886
- existing.set_points.push(...cv.set_points);
887
- existing.get_points.push(...cv.get_points);
888
- }
889
- else {
890
- model.context_vars.push(cv);
891
- }
892
- }
893
- }
894
- /** Collect local array variable declarations: const adminChain = [authMw, tenantMw] */
895
- collectArrayVars(root) {
896
- const result = new Map();
897
- const cursor = root.walk();
898
- walk(cursor, (node) => {
899
- if (node.type !== "variable_declarator")
900
- return;
901
- const nameNode = node.childForFieldName("name");
902
- const valueNode = node.childForFieldName("value");
903
- if (!nameNode || !valueNode || nameNode.type !== "identifier")
904
- return;
905
- if (valueNode.type !== "array")
906
- return;
907
- const items = [];
908
- for (const el of valueNode.namedChildren) {
909
- if (el.type === "identifier")
910
- items.push(el.text);
911
- }
912
- if (items.length > 0)
913
- result.set(nameNode.text, items);
914
- });
915
- return result;
916
- }
917
- /** Collect import source mapping: variableName → packageSpecifier */
918
- collectImportSources(root) {
919
- const result = new Map();
920
- const cursor = root.walk();
921
- walk(cursor, (node) => {
922
- if (node.type !== "import_statement")
923
- return;
924
- const sourceNode = node.childForFieldName("source");
925
- if (!sourceNode)
926
- return;
927
- const specifier = stringLiteralValue(sourceNode);
928
- if (!specifier)
929
- return;
930
- const importClause = node.children.find((c) => c.type === "import_clause");
931
- if (!importClause)
932
- return;
933
- for (const child of importClause.namedChildren) {
934
- if (child.type === "identifier") {
935
- result.set(child.text, specifier);
936
- }
937
- if (child.type === "named_imports") {
938
- for (const spec of child.namedChildren) {
939
- if (spec.type === "import_specifier") {
940
- const alias = spec.childForFieldName("alias");
941
- const name = spec.childForFieldName("name");
942
- const varName = alias?.text ?? name?.text;
943
- if (varName)
944
- result.set(varName, specifier);
945
- }
946
- }
947
- }
948
- }
949
- });
950
- return result;
951
- }
952
278
  /**
953
279
  * Walk for app.route("/prefix", subApp) calls.
954
280
  * Resolves subApp import, recursively parses the file.
@@ -1053,130 +379,8 @@ export class HonoExtractor {
1053
379
  }
1054
380
  }
1055
381
  }
1056
- /** Detect Hono runtime from project files and source patterns. */
1057
- async detectRuntime(entryFile) {
1058
- const dir = path.dirname(entryFile);
1059
- const projectRoot = path.dirname(dir); // assume src/ is one level down
1060
- // Check for wrangler.toml → Cloudflare Workers
1061
- if (existsSync(path.join(projectRoot, "wrangler.toml")) ||
1062
- existsSync(path.join(dir, "wrangler.toml"))) {
1063
- return "cloudflare";
1064
- }
1065
- let source;
1066
- try {
1067
- source = await readFile(entryFile, "utf-8");
1068
- }
1069
- catch {
1070
- return "unknown";
1071
- }
1072
- if (source.includes("Deno.serve"))
1073
- return "deno";
1074
- if (source.includes("Bun.serve"))
1075
- return "bun";
1076
- if (source.includes("@hono/node-server") || source.includes("serve({ fetch"))
1077
- return "node";
1078
- if (source.includes("hono/aws-lambda") || source.includes("handle("))
1079
- return "lambda";
1080
- // T5: Advanced runtime detection — only runs when existing heuristics
1081
- // produced "unknown". Checks Cloudflare Bindings type signals and
1082
- // deployment-target config files in the project root.
1083
- return this.detectRuntimeAdvanced(source, projectRoot);
1084
- }
1085
- /**
1086
- * Fallback runtime detection. Runs after detectRuntime's primary signals
1087
- * miss — additive by design so Phase 1 tests remain stable.
1088
- *
1089
- * Signal precedence (first match wins):
1090
- * 1. Cloudflare Bindings type using KVNamespace/D1Database/R2Bucket/Queue
1091
- * 2. vercel.json at project root
1092
- * 3. netlify.toml OR netlify/functions/ dir at project root
1093
- * 4. fly.toml at project root
1094
- * 5. unknown
1095
- */
1096
- detectRuntimeAdvanced(source, projectRoot) {
1097
- if (hasCloudflareBindingsType(source))
1098
- return "cloudflare";
1099
- if (existsSync(path.join(projectRoot, "vercel.json")))
1100
- return "vercel";
1101
- if (existsSync(path.join(projectRoot, "netlify.toml")) ||
1102
- existsSync(path.join(projectRoot, "netlify", "functions"))) {
1103
- return "netlify";
1104
- }
1105
- if (existsSync(path.join(projectRoot, "fly.toml")))
1106
- return "fly";
1107
- return "unknown";
1108
- }
1109
- /**
1110
- * Extract env bindings from:
1111
- * 1. c.env.IDENTIFIER member accesses
1112
- * 2. Destructuring: const { A, B } = c.env
1113
- * 3. Bindings type literal from Hono<{ Bindings: {...} }> or createFactory<{ Bindings: {...} }>
1114
- */
1115
- extractEnvBindings(root, source, model) {
1116
- const bindings = new Set();
1117
- // Pattern 1 & 2: Walk AST for c.env.X and const { X } = c.env
1118
- const cursor = root.walk();
1119
- walk(cursor, (node) => {
1120
- // c.env.IDENTIFIER
1121
- if (node.type === "member_expression") {
1122
- const obj = node.childForFieldName("object");
1123
- const prop = node.childForFieldName("property");
1124
- if (obj?.type === "member_expression" && prop) {
1125
- const innerObj = obj.childForFieldName("object");
1126
- const innerProp = obj.childForFieldName("property");
1127
- if (innerObj?.text === "c" && innerProp?.text === "env") {
1128
- bindings.add(prop.text);
1129
- }
1130
- }
1131
- }
1132
- // const { DATABASE_URL, KV } = c.env
1133
- if (node.type === "variable_declarator") {
1134
- const nameNode = node.childForFieldName("name");
1135
- const valueNode = node.childForFieldName("value");
1136
- if (nameNode?.type === "object_pattern" && valueNode?.type === "member_expression") {
1137
- const obj = valueNode.childForFieldName("object");
1138
- const prop = valueNode.childForFieldName("property");
1139
- if (obj?.text === "c" && prop?.text === "env") {
1140
- for (const child of nameNode.namedChildren) {
1141
- if (child.type === "shorthand_property_identifier_pattern" ||
1142
- child.type === "shorthand_property_identifier") {
1143
- bindings.add(child.text);
1144
- }
1145
- if (child.type === "pair_pattern") {
1146
- const key = child.childForFieldName("key");
1147
- if (key)
1148
- bindings.add(key.text);
1149
- }
1150
- }
1151
- }
1152
- }
1153
- }
1154
- });
1155
- // Pattern 3: Bindings type literal from source using regex (simpler than full AST type resolution)
1156
- const bindingsMatch = source.match(/Bindings\s*:\s*\{([^}]+)\}/);
1157
- if (bindingsMatch?.[1]) {
1158
- const typeBody = bindingsMatch[1];
1159
- const propRegex = /(\w+)\s*:/g;
1160
- let m;
1161
- while ((m = propRegex.exec(typeBody)) !== null) {
1162
- if (m[1])
1163
- bindings.add(m[1]);
1164
- }
1165
- }
1166
- model.env_bindings = [...bindings].sort();
1167
- }
1168
382
  }
1169
383
  // --- Utility functions ---
1170
- function pickLanguage(file) {
1171
- const ext = path.extname(file).toLowerCase();
1172
- if (ext === ".tsx")
1173
- return "tsx";
1174
- if (ext === ".ts")
1175
- return "typescript";
1176
- if (ext === ".jsx" || ext === ".js")
1177
- return "javascript";
1178
- return "typescript";
1179
- }
1180
384
  function emptyModel(entryFile, skipReasons) {
1181
385
  return {
1182
386
  entry_file: entryFile,
@@ -1194,146 +398,6 @@ function emptyModel(entryFile, skipReasons) {
1194
398
  skip_reasons: skipReasons,
1195
399
  };
1196
400
  }
1197
- /**
1198
- * Detect `<parentVar>.basePath("/prefix")` call expression.
1199
- * Returns the parent variable name and prefix path, or null.
1200
- */
1201
- function extractBasePathCall(valueNode, knownVars) {
1202
- if (valueNode.type !== "call_expression")
1203
- return null;
1204
- const fnNode = valueNode.childForFieldName("function");
1205
- if (!fnNode || fnNode.type !== "member_expression")
1206
- return null;
1207
- const obj = fnNode.childForFieldName("object");
1208
- const prop = fnNode.childForFieldName("property");
1209
- if (!obj || !prop || obj.type !== "identifier")
1210
- return null;
1211
- if (prop.text !== "basePath")
1212
- return null;
1213
- if (!knownVars[obj.text])
1214
- return null;
1215
- const argsNode = valueNode.childForFieldName("arguments");
1216
- const firstArg = argsNode?.namedChildren[0];
1217
- if (!firstArg)
1218
- return null;
1219
- const prefix = stringLiteralValue(firstArg);
1220
- if (prefix == null)
1221
- return null;
1222
- // Combine parent's base_path with the new prefix
1223
- const parentBase = knownVars[obj.text]?.base_path || "";
1224
- return { parentVar: obj.text, prefix: joinPaths(parentBase, prefix) };
1225
- }
1226
- /**
1227
- * Parse regex constraints from Hono path parameters.
1228
- * e.g., ":id{[0-9]+}" → { id: "[0-9]+" }
1229
- */
1230
- function parseRegexConstraints(rawPath) {
1231
- const regex = /:(\w+)\{([^}]+)\}/g;
1232
- let match;
1233
- const constraints = {};
1234
- let found = false;
1235
- while ((match = regex.exec(rawPath)) !== null) {
1236
- if (match[1] && match[2]) {
1237
- constraints[match[1]] = match[2];
1238
- found = true;
1239
- }
1240
- }
1241
- return found ? constraints : undefined;
1242
- }
1243
- /** Check if a value is `createFactory(...)` or `createFactory<Env>(...)`. */
1244
- function isCreateFactoryCall(valueNode) {
1245
- if (valueNode.type !== "call_expression")
1246
- return false;
1247
- const fn = valueNode.childForFieldName("function");
1248
- if (!fn)
1249
- return false;
1250
- // createFactory<...>()
1251
- if (fn.type === "identifier" && fn.text === "createFactory")
1252
- return true;
1253
- // hono/factory.createFactory<...>()
1254
- if (fn.type === "member_expression") {
1255
- const prop = fn.childForFieldName("property");
1256
- if (prop?.text === "createFactory")
1257
- return true;
1258
- }
1259
- return false;
1260
- }
1261
- /** Check if a value is `<factoryVar>.createApp()`. */
1262
- function isFactoryCreateApp(valueNode, factoryVars) {
1263
- if (valueNode.type !== "call_expression")
1264
- return false;
1265
- const fn = valueNode.childForFieldName("function");
1266
- if (!fn || fn.type !== "member_expression")
1267
- return false;
1268
- const obj = fn.childForFieldName("object");
1269
- const prop = fn.childForFieldName("property");
1270
- if (!obj || !prop || obj.type !== "identifier")
1271
- return false;
1272
- return factoryVars.has(obj.text) && prop.text === "createApp";
1273
- }
1274
- function classifyAppCreation(valueNode) {
1275
- if (valueNode.type !== "new_expression")
1276
- return null;
1277
- const ctor = valueNode.childForFieldName("constructor");
1278
- if (!ctor)
1279
- return null;
1280
- if (ctor.type === "identifier") {
1281
- if (ctor.text === "Hono")
1282
- return "new Hono";
1283
- if (ctor.text === "OpenAPIHono")
1284
- return "OpenAPIHono";
1285
- }
1286
- if (ctor.type === "member_expression") {
1287
- const prop = ctor.childForFieldName("property");
1288
- if (prop?.text === "Hono")
1289
- return "new Hono";
1290
- if (prop?.text === "OpenAPIHono")
1291
- return "OpenAPIHono";
1292
- }
1293
- return null;
1294
- }
1295
- function stringLiteralValue(node) {
1296
- if (node.type === "string") {
1297
- const text = node.text;
1298
- if (text.length < 2)
1299
- return null;
1300
- const quote = text[0];
1301
- if (quote !== '"' && quote !== "'")
1302
- return null;
1303
- try {
1304
- const normalized = quote === "'"
1305
- ? `"${text.slice(1, -1).replace(/\\'/g, "'").replace(/"/g, '\\"')}"`
1306
- : text;
1307
- const parsed = JSON.parse(normalized);
1308
- return typeof parsed === "string" ? parsed : null;
1309
- }
1310
- catch {
1311
- return text.slice(1, -1);
1312
- }
1313
- }
1314
- if (node.type === "template_string") {
1315
- const hasInterpolation = node.namedChildren.some((c) => c.type === "template_substitution");
1316
- if (hasInterpolation)
1317
- return null;
1318
- const text = node.text;
1319
- if (text.length < 2)
1320
- return null;
1321
- return text.slice(1, -1);
1322
- }
1323
- return null;
1324
- }
1325
- function buildHandler(node, file) {
1326
- const line = node.startPosition.row + 1;
1327
- if (node.type === "arrow_function" ||
1328
- node.type === "function_expression" ||
1329
- node.type === "function") {
1330
- return { name: "<inline>", inline: true, file, line };
1331
- }
1332
- if (node.type === "identifier") {
1333
- return { name: node.text, inline: false, file, line };
1334
- }
1335
- return { name: "<inline>", inline: true, file, line };
1336
- }
1337
401
  /**
1338
402
  * Resolve a relative import specifier to an absolute file path.
1339
403
  * Tries: exact path, .ts, .js, /index.ts, /index.js extensions.
@@ -1352,12 +416,20 @@ function resolveImportPath(fromFile, importSpecifier) {
1352
416
  path.join(base, "index.js"),
1353
417
  ];
1354
418
  for (const candidate of candidates) {
1355
- if (existsSync(candidate)) {
419
+ if (isExistingFile(candidate)) {
1356
420
  return canonicalize(candidate);
1357
421
  }
1358
422
  }
1359
423
  return null;
1360
424
  }
425
+ function isExistingFile(candidate) {
426
+ try {
427
+ return existsSync(candidate) && statSync(candidate).isFile();
428
+ }
429
+ catch {
430
+ return false;
431
+ }
432
+ }
1361
433
  /**
1362
434
  * Canonicalize path via realpath for consistent cache invalidation.
1363
435
  * Falls back to the input path if the file doesn't exist.
@@ -1370,203 +442,4 @@ function canonicalize(filePath) {
1370
442
  return filePath;
1371
443
  }
1372
444
  }
1373
- /** Join a parent prefix with a child path, avoiding double/trailing slashes. */
1374
- function joinPaths(prefix, childPath) {
1375
- if (!prefix)
1376
- return childPath;
1377
- const p = prefix.endsWith("/") ? prefix.slice(0, -1) : prefix;
1378
- // In Hono, a sub-router's "/" matches the mount path exactly (no trailing slash)
1379
- if (childPath === "/" || childPath === "")
1380
- return p || "/";
1381
- const c = childPath.startsWith("/") ? childPath : "/" + childPath;
1382
- return p + c;
1383
- }
1384
- /**
1385
- * Given the `consequence` of an if_statement, locate a middleware-call
1386
- * expression of the form `mw(c, next)`. Walks the whole block (not just the
1387
- * first statement) so patterns like
1388
- *
1389
- * if (cond) {
1390
- * const auth = basicAuth({...});
1391
- * return auth(c, next);
1392
- * }
1393
- *
1394
- * are recognized. Only looks at top-level statements of the consequence —
1395
- * does not descend into nested blocks. The candidate call must have >= 2
1396
- * named arguments to heuristically match `mw(c, next)` shape.
1397
- */
1398
- function findMiddlewareCallInBlock(consequence) {
1399
- const statements = consequence.type === "statement_block"
1400
- ? consequence.namedChildren
1401
- : [consequence];
1402
- for (const stmt of statements) {
1403
- let call = null;
1404
- if (stmt.type === "return_statement") {
1405
- const expr = stmt.namedChildren[0];
1406
- if (expr)
1407
- call = unwrapCallExpression(expr);
1408
- }
1409
- else if (stmt.type === "expression_statement") {
1410
- const expr = stmt.namedChildren[0];
1411
- if (expr)
1412
- call = unwrapCallExpression(expr);
1413
- }
1414
- if (call && callHasAtLeastNArgs(call, 2))
1415
- return call;
1416
- }
1417
- return null;
1418
- }
1419
- function callHasAtLeastNArgs(call, n) {
1420
- const args = call.childForFieldName("arguments");
1421
- return (args?.namedChildren.length ?? 0) >= n;
1422
- }
1423
- /**
1424
- * Collect block-local alias declarations of the form
1425
- * const X = <callee>(...)
1426
- * into a Map<X, <callee>>. Used to resolve `const auth = basicAuth({...})` so
1427
- * that `return auth(c, next)` reports "basicAuth" as the applied middleware.
1428
- */
1429
- function collectLocalAliases(consequence) {
1430
- const map = new Map();
1431
- const statements = consequence.type === "statement_block"
1432
- ? consequence.namedChildren
1433
- : [consequence];
1434
- for (const stmt of statements) {
1435
- if (stmt.type !== "lexical_declaration" && stmt.type !== "variable_declaration")
1436
- continue;
1437
- for (const declarator of stmt.namedChildren) {
1438
- if (declarator.type !== "variable_declarator")
1439
- continue;
1440
- const nameNode = declarator.childForFieldName("name");
1441
- const valueNode = declarator.childForFieldName("value");
1442
- if (nameNode?.type !== "identifier" || !valueNode)
1443
- continue;
1444
- if (valueNode.type !== "call_expression")
1445
- continue;
1446
- const calleeName = extractCallCalleeName(valueNode);
1447
- if (calleeName)
1448
- map.set(nameNode.text, calleeName);
1449
- }
1450
- }
1451
- return map;
1452
- }
1453
- /** Peel off `await ...` wrappers and return the underlying call_expression, if any. */
1454
- function unwrapCallExpression(node) {
1455
- let current = node;
1456
- while (current.type === "await_expression") {
1457
- const inner = current.namedChildren[0];
1458
- if (!inner)
1459
- return null;
1460
- current = inner;
1461
- }
1462
- if (current.type === "call_expression")
1463
- return current;
1464
- return null;
1465
- }
1466
- /**
1467
- * Extract the name of the middleware at the call site. Supports:
1468
- * - `foo(c, next)` → "foo"
1469
- * - `foo.bar(c, next)` → "bar"
1470
- * - `auth(c, next)` where `auth` came from `const auth = basicAuth({...})`
1471
- * → returns "auth"; T4 reports the local identifier, and a separate
1472
- * def-use pass could resolve it further (out of scope here).
1473
- * - `basicAuth({...})(c, next)` → "basicAuth" (outer callee of the inner call)
1474
- */
1475
- function extractCallCalleeName(callNode) {
1476
- const fn = callNode.childForFieldName("function");
1477
- if (!fn)
1478
- return null;
1479
- if (fn.type === "identifier")
1480
- return fn.text;
1481
- if (fn.type === "member_expression") {
1482
- const prop = fn.childForFieldName("property");
1483
- return prop?.text ?? null;
1484
- }
1485
- // `basicAuth({...})(c, next)` — fn itself is a call_expression
1486
- if (fn.type === "call_expression") {
1487
- const innerFn = fn.childForFieldName("function");
1488
- if (innerFn?.type === "identifier")
1489
- return innerFn.text;
1490
- if (innerFn?.type === "member_expression") {
1491
- const prop = innerFn.childForFieldName("property");
1492
- return prop?.text ?? null;
1493
- }
1494
- }
1495
- return null;
1496
- }
1497
- /**
1498
- * Classify an if-condition into method / header / path / custom by looking at
1499
- * the leftmost member_expression chain. Keeps the check cheap and deterministic.
1500
- */
1501
- function classifyConditionType(condition) {
1502
- const text = condition.text;
1503
- // Normalize for substring checks
1504
- if (/c\.req\.method\b/.test(text))
1505
- return "method";
1506
- if (/c\.req\.header\s*\(/.test(text) || /c\.req\.headers\b/.test(text))
1507
- return "header";
1508
- if (/c\.req\.path\b/.test(text) || /c\.req\.url\b/.test(text))
1509
- return "path";
1510
- return "custom";
1511
- }
1512
- /**
1513
- * T5: Cloudflare Workers signal. These types ship with
1514
- * @cloudflare/workers-types and never appear in non-Worker codebases, so
1515
- * a word-boundary match on the source is sufficient — we do NOT need to
1516
- * correlate with a Bindings declaration (which may be `type Bindings = {}`,
1517
- * `interface Bindings {}`, inline in `Hono<{Bindings: {}}>`, or split across
1518
- * nested type bodies with inner `}`). Removing the Bindings-block coupling
1519
- * also fixes the first-`}` truncation that the initial regex had.
1520
- *
1521
- * Generic names like `Fetcher` and `Service` were dropped — they collide
1522
- * with common non-CF type names in application code.
1523
- */
1524
- const CF_WORKER_TYPES = [
1525
- "KVNamespace",
1526
- "D1Database",
1527
- "R2Bucket",
1528
- "DurableObjectNamespace",
1529
- "AnalyticsEngineDataset",
1530
- ];
1531
- function hasCloudflareBindingsType(source) {
1532
- for (const cfType of CF_WORKER_TYPES) {
1533
- const re = new RegExp(`\\b${cfType}\\b`);
1534
- if (re.test(source))
1535
- return true;
1536
- }
1537
- return false;
1538
- }
1539
- /** Check if a node is inside a conditional branch (if/switch/try body). */
1540
- function isInsideBranch(node) {
1541
- let current = node.parent;
1542
- while (current) {
1543
- if (current.type === "if_statement" ||
1544
- current.type === "switch_case" ||
1545
- current.type === "catch_clause" ||
1546
- current.type === "ternary_expression") {
1547
- return true;
1548
- }
1549
- // Stop at function boundary — we only care about branches within the function
1550
- if (current.type === "arrow_function" ||
1551
- current.type === "function_declaration" ||
1552
- current.type === "function_expression" ||
1553
- current.type === "method_definition") {
1554
- break;
1555
- }
1556
- current = current.parent;
1557
- }
1558
- return false;
1559
- }
1560
- const MAX_WALK_DEPTH = 500;
1561
- function walk(cursor, visit, depth = 0) {
1562
- if (depth > MAX_WALK_DEPTH)
1563
- return;
1564
- visit(cursor.currentNode);
1565
- if (cursor.gotoFirstChild()) {
1566
- do {
1567
- walk(cursor, visit, depth + 1);
1568
- } while (cursor.gotoNextSibling());
1569
- cursor.gotoParent();
1570
- }
1571
- }
1572
445
  //# sourceMappingURL=hono.js.map