optave-codegraph 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1672) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +984 -0
  3. package/dist/ast-analysis/engine.d.ts +19 -0
  4. package/dist/ast-analysis/engine.d.ts.map +1 -0
  5. package/dist/ast-analysis/engine.js +660 -0
  6. package/dist/ast-analysis/engine.js.map +1 -0
  7. package/dist/ast-analysis/metrics.d.ts +34 -0
  8. package/dist/ast-analysis/metrics.d.ts.map +1 -0
  9. package/dist/ast-analysis/metrics.js +123 -0
  10. package/dist/ast-analysis/metrics.js.map +1 -0
  11. package/dist/ast-analysis/rules/b2.d.ts +7 -0
  12. package/dist/ast-analysis/rules/b2.d.ts.map +1 -0
  13. package/dist/ast-analysis/rules/b2.js +240 -0
  14. package/dist/ast-analysis/rules/b2.js.map +1 -0
  15. package/dist/ast-analysis/rules/b3.d.ts +6 -0
  16. package/dist/ast-analysis/rules/b3.d.ts.map +1 -0
  17. package/dist/ast-analysis/rules/b3.js +105 -0
  18. package/dist/ast-analysis/rules/b3.js.map +1 -0
  19. package/dist/ast-analysis/rules/b4.d.ts +9 -0
  20. package/dist/ast-analysis/rules/b4.d.ts.map +1 -0
  21. package/dist/ast-analysis/rules/b4.js +361 -0
  22. package/dist/ast-analysis/rules/b4.js.map +1 -0
  23. package/dist/ast-analysis/rules/b5.d.ts +4 -0
  24. package/dist/ast-analysis/rules/b5.d.ts.map +1 -0
  25. package/dist/ast-analysis/rules/b5.js +52 -0
  26. package/dist/ast-analysis/rules/b5.js.map +1 -0
  27. package/dist/ast-analysis/rules/c.d.ts +4 -0
  28. package/dist/ast-analysis/rules/c.d.ts.map +1 -0
  29. package/dist/ast-analysis/rules/c.js +143 -0
  30. package/dist/ast-analysis/rules/c.js.map +1 -0
  31. package/dist/ast-analysis/rules/csharp.d.ts +7 -0
  32. package/dist/ast-analysis/rules/csharp.d.ts.map +1 -0
  33. package/dist/ast-analysis/rules/csharp.js +196 -0
  34. package/dist/ast-analysis/rules/csharp.js.map +1 -0
  35. package/dist/ast-analysis/rules/go.d.ts +7 -0
  36. package/dist/ast-analysis/rules/go.d.ts.map +1 -0
  37. package/dist/ast-analysis/rules/go.js +173 -0
  38. package/dist/ast-analysis/rules/go.js.map +1 -0
  39. package/dist/ast-analysis/rules/index.d.ts +13 -0
  40. package/dist/ast-analysis/rules/index.d.ts.map +1 -0
  41. package/dist/ast-analysis/rules/index.js +325 -0
  42. package/dist/ast-analysis/rules/index.js.map +1 -0
  43. package/dist/ast-analysis/rules/java.d.ts +7 -0
  44. package/dist/ast-analysis/rules/java.d.ts.map +1 -0
  45. package/dist/ast-analysis/rules/java.js +167 -0
  46. package/dist/ast-analysis/rules/java.js.map +1 -0
  47. package/dist/ast-analysis/rules/javascript.d.ts +7 -0
  48. package/dist/ast-analysis/rules/javascript.d.ts.map +1 -0
  49. package/dist/ast-analysis/rules/javascript.js +233 -0
  50. package/dist/ast-analysis/rules/javascript.js.map +1 -0
  51. package/dist/ast-analysis/rules/php.d.ts +7 -0
  52. package/dist/ast-analysis/rules/php.d.ts.map +1 -0
  53. package/dist/ast-analysis/rules/php.js +212 -0
  54. package/dist/ast-analysis/rules/php.js.map +1 -0
  55. package/dist/ast-analysis/rules/python.d.ts +7 -0
  56. package/dist/ast-analysis/rules/python.d.ts.map +1 -0
  57. package/dist/ast-analysis/rules/python.js +189 -0
  58. package/dist/ast-analysis/rules/python.js.map +1 -0
  59. package/dist/ast-analysis/rules/ruby.d.ts +7 -0
  60. package/dist/ast-analysis/rules/ruby.d.ts.map +1 -0
  61. package/dist/ast-analysis/rules/ruby.js +193 -0
  62. package/dist/ast-analysis/rules/ruby.js.map +1 -0
  63. package/dist/ast-analysis/rules/rust.d.ts +7 -0
  64. package/dist/ast-analysis/rules/rust.d.ts.map +1 -0
  65. package/dist/ast-analysis/rules/rust.js +166 -0
  66. package/dist/ast-analysis/rules/rust.js.map +1 -0
  67. package/dist/ast-analysis/shared.d.ts +12 -0
  68. package/dist/ast-analysis/shared.d.ts.map +1 -0
  69. package/dist/ast-analysis/shared.js +166 -0
  70. package/dist/ast-analysis/shared.js.map +1 -0
  71. package/dist/ast-analysis/visitor-utils.d.ts +70 -0
  72. package/dist/ast-analysis/visitor-utils.d.ts.map +1 -0
  73. package/dist/ast-analysis/visitor-utils.js +235 -0
  74. package/dist/ast-analysis/visitor-utils.js.map +1 -0
  75. package/dist/ast-analysis/visitor.d.ts +27 -0
  76. package/dist/ast-analysis/visitor.d.ts.map +1 -0
  77. package/dist/ast-analysis/visitor.js +178 -0
  78. package/dist/ast-analysis/visitor.js.map +1 -0
  79. package/dist/ast-analysis/visitors/ast-store-visitor.d.ts +4 -0
  80. package/dist/ast-analysis/visitors/ast-store-visitor.d.ts.map +1 -0
  81. package/dist/ast-analysis/visitors/ast-store-visitor.js +288 -0
  82. package/dist/ast-analysis/visitors/ast-store-visitor.js.map +1 -0
  83. package/dist/ast-analysis/visitors/cfg-conditionals.d.ts +5 -0
  84. package/dist/ast-analysis/visitors/cfg-conditionals.d.ts.map +1 -0
  85. package/dist/ast-analysis/visitors/cfg-conditionals.js +166 -0
  86. package/dist/ast-analysis/visitors/cfg-conditionals.js.map +1 -0
  87. package/dist/ast-analysis/visitors/cfg-loops.d.ts +7 -0
  88. package/dist/ast-analysis/visitors/cfg-loops.d.ts.map +1 -0
  89. package/dist/ast-analysis/visitors/cfg-loops.js +73 -0
  90. package/dist/ast-analysis/visitors/cfg-loops.js.map +1 -0
  91. package/dist/ast-analysis/visitors/cfg-shared.d.ts +56 -0
  92. package/dist/ast-analysis/visitors/cfg-shared.d.ts.map +1 -0
  93. package/dist/ast-analysis/visitors/cfg-shared.js +107 -0
  94. package/dist/ast-analysis/visitors/cfg-shared.js.map +1 -0
  95. package/dist/ast-analysis/visitors/cfg-try-catch.d.ts +4 -0
  96. package/dist/ast-analysis/visitors/cfg-try-catch.d.ts.map +1 -0
  97. package/dist/ast-analysis/visitors/cfg-try-catch.js +100 -0
  98. package/dist/ast-analysis/visitors/cfg-try-catch.js.map +1 -0
  99. package/dist/ast-analysis/visitors/cfg-visitor.d.ts +5 -0
  100. package/dist/ast-analysis/visitors/cfg-visitor.d.ts.map +1 -0
  101. package/dist/ast-analysis/visitors/cfg-visitor.js +231 -0
  102. package/dist/ast-analysis/visitors/cfg-visitor.js.map +1 -0
  103. package/dist/ast-analysis/visitors/complexity-visitor.d.ts +8 -0
  104. package/dist/ast-analysis/visitors/complexity-visitor.d.ts.map +1 -0
  105. package/dist/ast-analysis/visitors/complexity-visitor.js +233 -0
  106. package/dist/ast-analysis/visitors/complexity-visitor.js.map +1 -0
  107. package/dist/ast-analysis/visitors/dataflow-visitor.d.ts +5 -0
  108. package/dist/ast-analysis/visitors/dataflow-visitor.d.ts.map +1 -0
  109. package/dist/ast-analysis/visitors/dataflow-visitor.js +378 -0
  110. package/dist/ast-analysis/visitors/dataflow-visitor.js.map +1 -0
  111. package/dist/cli/commands/ast.d.ts +3 -0
  112. package/dist/cli/commands/ast.d.ts.map +1 -0
  113. package/dist/cli/commands/ast.js +23 -0
  114. package/dist/cli/commands/ast.js.map +1 -0
  115. package/dist/cli/commands/audit.d.ts +3 -0
  116. package/dist/cli/commands/audit.d.ts.map +1 -0
  117. package/dist/cli/commands/audit.js +47 -0
  118. package/dist/cli/commands/audit.js.map +1 -0
  119. package/dist/cli/commands/batch.d.ts +3 -0
  120. package/dist/cli/commands/batch.d.ts.map +1 -0
  121. package/dist/cli/commands/batch.js +66 -0
  122. package/dist/cli/commands/batch.js.map +1 -0
  123. package/dist/cli/commands/branch-compare.d.ts +3 -0
  124. package/dist/cli/commands/branch-compare.d.ts.map +1 -0
  125. package/dist/cli/commands/branch-compare.js +26 -0
  126. package/dist/cli/commands/branch-compare.js.map +1 -0
  127. package/dist/cli/commands/brief.d.ts +3 -0
  128. package/dist/cli/commands/brief.d.ts.map +1 -0
  129. package/dist/cli/commands/brief.js +12 -0
  130. package/dist/cli/commands/brief.js.map +1 -0
  131. package/dist/cli/commands/build.d.ts +3 -0
  132. package/dist/cli/commands/build.d.ts.map +1 -0
  133. package/dist/cli/commands/build.js +33 -0
  134. package/dist/cli/commands/build.js.map +1 -0
  135. package/dist/cli/commands/cfg.d.ts +3 -0
  136. package/dist/cli/commands/cfg.d.ts.map +1 -0
  137. package/dist/cli/commands/cfg.js +27 -0
  138. package/dist/cli/commands/cfg.js.map +1 -0
  139. package/dist/cli/commands/check.d.ts +3 -0
  140. package/dist/cli/commands/check.d.ts.map +1 -0
  141. package/dist/cli/commands/check.js +65 -0
  142. package/dist/cli/commands/check.js.map +1 -0
  143. package/dist/cli/commands/children.d.ts +3 -0
  144. package/dist/cli/commands/children.d.ts.map +1 -0
  145. package/dist/cli/commands/children.js +33 -0
  146. package/dist/cli/commands/children.js.map +1 -0
  147. package/dist/cli/commands/co-change.d.ts +3 -0
  148. package/dist/cli/commands/co-change.d.ts.map +1 -0
  149. package/dist/cli/commands/co-change.js +66 -0
  150. package/dist/cli/commands/co-change.js.map +1 -0
  151. package/dist/cli/commands/communities.d.ts +3 -0
  152. package/dist/cli/commands/communities.d.ts.map +1 -0
  153. package/dist/cli/commands/communities.js +20 -0
  154. package/dist/cli/commands/communities.js.map +1 -0
  155. package/dist/cli/commands/complexity.d.ts +3 -0
  156. package/dist/cli/commands/complexity.d.ts.map +1 -0
  157. package/dist/cli/commands/complexity.js +47 -0
  158. package/dist/cli/commands/complexity.js.map +1 -0
  159. package/dist/cli/commands/config.d.ts +3 -0
  160. package/dist/cli/commands/config.d.ts.map +1 -0
  161. package/dist/cli/commands/config.js +275 -0
  162. package/dist/cli/commands/config.js.map +1 -0
  163. package/dist/cli/commands/context.d.ts +3 -0
  164. package/dist/cli/commands/context.d.ts.map +1 -0
  165. package/dist/cli/commands/context.js +35 -0
  166. package/dist/cli/commands/context.js.map +1 -0
  167. package/dist/cli/commands/cycles.d.ts +3 -0
  168. package/dist/cli/commands/cycles.d.ts.map +1 -0
  169. package/dist/cli/commands/cycles.js +33 -0
  170. package/dist/cli/commands/cycles.js.map +1 -0
  171. package/dist/cli/commands/dataflow.d.ts +3 -0
  172. package/dist/cli/commands/dataflow.d.ts.map +1 -0
  173. package/dist/cli/commands/dataflow.js +29 -0
  174. package/dist/cli/commands/dataflow.js.map +1 -0
  175. package/dist/cli/commands/deps.d.ts +3 -0
  176. package/dist/cli/commands/deps.d.ts.map +1 -0
  177. package/dist/cli/commands/deps.js +18 -0
  178. package/dist/cli/commands/deps.js.map +1 -0
  179. package/dist/cli/commands/diff-impact.d.ts +3 -0
  180. package/dist/cli/commands/diff-impact.d.ts.map +1 -0
  181. package/dist/cli/commands/diff-impact.js +29 -0
  182. package/dist/cli/commands/diff-impact.js.map +1 -0
  183. package/dist/cli/commands/embed.d.ts +3 -0
  184. package/dist/cli/commands/embed.d.ts.map +1 -0
  185. package/dist/cli/commands/embed.js +75 -0
  186. package/dist/cli/commands/embed.js.map +1 -0
  187. package/dist/cli/commands/export.d.ts +3 -0
  188. package/dist/cli/commands/export.d.ts.map +1 -0
  189. package/dist/cli/commands/export.js +72 -0
  190. package/dist/cli/commands/export.js.map +1 -0
  191. package/dist/cli/commands/exports.d.ts +3 -0
  192. package/dist/cli/commands/exports.d.ts.map +1 -0
  193. package/dist/cli/commands/exports.js +14 -0
  194. package/dist/cli/commands/exports.js.map +1 -0
  195. package/dist/cli/commands/flow.d.ts +3 -0
  196. package/dist/cli/commands/flow.d.ts.map +1 -0
  197. package/dist/cli/commands/flow.js +32 -0
  198. package/dist/cli/commands/flow.js.map +1 -0
  199. package/dist/cli/commands/fn-impact.d.ts +3 -0
  200. package/dist/cli/commands/fn-impact.d.ts.map +1 -0
  201. package/dist/cli/commands/fn-impact.js +33 -0
  202. package/dist/cli/commands/fn-impact.js.map +1 -0
  203. package/dist/cli/commands/impact.d.ts +3 -0
  204. package/dist/cli/commands/impact.d.ts.map +1 -0
  205. package/dist/cli/commands/impact.js +12 -0
  206. package/dist/cli/commands/impact.js.map +1 -0
  207. package/dist/cli/commands/implementations.d.ts +3 -0
  208. package/dist/cli/commands/implementations.d.ts.map +1 -0
  209. package/dist/cli/commands/implementations.js +29 -0
  210. package/dist/cli/commands/implementations.js.map +1 -0
  211. package/dist/cli/commands/info.d.ts +3 -0
  212. package/dist/cli/commands/info.d.ts.map +1 -0
  213. package/dist/cli/commands/info.js +67 -0
  214. package/dist/cli/commands/info.js.map +1 -0
  215. package/dist/cli/commands/interfaces.d.ts +3 -0
  216. package/dist/cli/commands/interfaces.d.ts.map +1 -0
  217. package/dist/cli/commands/interfaces.js +29 -0
  218. package/dist/cli/commands/interfaces.js.map +1 -0
  219. package/dist/cli/commands/map.d.ts +3 -0
  220. package/dist/cli/commands/map.d.ts.map +1 -0
  221. package/dist/cli/commands/map.js +19 -0
  222. package/dist/cli/commands/map.js.map +1 -0
  223. package/dist/cli/commands/mcp.d.ts +3 -0
  224. package/dist/cli/commands/mcp.d.ts.map +1 -0
  225. package/dist/cli/commands/mcp.js +18 -0
  226. package/dist/cli/commands/mcp.js.map +1 -0
  227. package/dist/cli/commands/models.d.ts +3 -0
  228. package/dist/cli/commands/models.d.ts.map +1 -0
  229. package/dist/cli/commands/models.js +19 -0
  230. package/dist/cli/commands/models.js.map +1 -0
  231. package/dist/cli/commands/owners.d.ts +3 -0
  232. package/dist/cli/commands/owners.d.ts.map +1 -0
  233. package/dist/cli/commands/owners.js +27 -0
  234. package/dist/cli/commands/owners.js.map +1 -0
  235. package/dist/cli/commands/path.d.ts +3 -0
  236. package/dist/cli/commands/path.d.ts.map +1 -0
  237. package/dist/cli/commands/path.js +41 -0
  238. package/dist/cli/commands/path.js.map +1 -0
  239. package/dist/cli/commands/plot.d.ts +3 -0
  240. package/dist/cli/commands/plot.d.ts.map +1 -0
  241. package/dist/cli/commands/plot.js +96 -0
  242. package/dist/cli/commands/plot.js.map +1 -0
  243. package/dist/cli/commands/query.d.ts +3 -0
  244. package/dist/cli/commands/query.d.ts.map +1 -0
  245. package/dist/cli/commands/query.js +51 -0
  246. package/dist/cli/commands/query.js.map +1 -0
  247. package/dist/cli/commands/registry.d.ts +3 -0
  248. package/dist/cli/commands/registry.d.ts.map +1 -0
  249. package/dist/cli/commands/registry.js +95 -0
  250. package/dist/cli/commands/registry.js.map +1 -0
  251. package/dist/cli/commands/roles.d.ts +3 -0
  252. package/dist/cli/commands/roles.d.ts.map +1 -0
  253. package/dist/cli/commands/roles.js +36 -0
  254. package/dist/cli/commands/roles.js.map +1 -0
  255. package/dist/cli/commands/search.d.ts +3 -0
  256. package/dist/cli/commands/search.d.ts.map +1 -0
  257. package/dist/cli/commands/search.js +43 -0
  258. package/dist/cli/commands/search.js.map +1 -0
  259. package/dist/cli/commands/sequence.d.ts +3 -0
  260. package/dist/cli/commands/sequence.d.ts.map +1 -0
  261. package/dist/cli/commands/sequence.js +29 -0
  262. package/dist/cli/commands/sequence.js.map +1 -0
  263. package/dist/cli/commands/snapshot.d.ts +3 -0
  264. package/dist/cli/commands/snapshot.d.ts.map +1 -0
  265. package/dist/cli/commands/snapshot.js +61 -0
  266. package/dist/cli/commands/snapshot.js.map +1 -0
  267. package/dist/cli/commands/stats.d.ts +3 -0
  268. package/dist/cli/commands/stats.d.ts.map +1 -0
  269. package/dist/cli/commands/stats.js +15 -0
  270. package/dist/cli/commands/stats.js.map +1 -0
  271. package/dist/cli/commands/structure.d.ts +3 -0
  272. package/dist/cli/commands/structure.d.ts.map +1 -0
  273. package/dist/cli/commands/structure.js +50 -0
  274. package/dist/cli/commands/structure.js.map +1 -0
  275. package/dist/cli/commands/triage.d.ts +3 -0
  276. package/dist/cli/commands/triage.d.ts.map +1 -0
  277. package/dist/cli/commands/triage.js +89 -0
  278. package/dist/cli/commands/triage.js.map +1 -0
  279. package/dist/cli/commands/watch.d.ts +3 -0
  280. package/dist/cli/commands/watch.d.ts.map +1 -0
  281. package/dist/cli/commands/watch.js +28 -0
  282. package/dist/cli/commands/watch.js.map +1 -0
  283. package/dist/cli/commands/where.d.ts +3 -0
  284. package/dist/cli/commands/where.d.ts.map +1 -0
  285. package/dist/cli/commands/where.js +20 -0
  286. package/dist/cli/commands/where.js.map +1 -0
  287. package/dist/cli/index.d.ts +22 -0
  288. package/dist/cli/index.d.ts.map +1 -0
  289. package/dist/cli/index.js +139 -0
  290. package/dist/cli/index.js.map +1 -0
  291. package/dist/cli/shared/open-graph.d.ts +11 -0
  292. package/dist/cli/shared/open-graph.d.ts.map +1 -0
  293. package/dist/cli/shared/open-graph.js +9 -0
  294. package/dist/cli/shared/open-graph.js.map +1 -0
  295. package/dist/cli/shared/options.d.ts +25 -0
  296. package/dist/cli/shared/options.d.ts.map +1 -0
  297. package/dist/cli/shared/options.js +66 -0
  298. package/dist/cli/shared/options.js.map +1 -0
  299. package/dist/cli/shared/output.d.ts +2 -0
  300. package/dist/cli/shared/output.d.ts.map +1 -0
  301. package/dist/cli/shared/output.js +2 -0
  302. package/dist/cli/shared/output.js.map +1 -0
  303. package/dist/cli/types.d.ts +32 -0
  304. package/dist/cli/types.d.ts.map +1 -0
  305. package/dist/cli/types.js +2 -0
  306. package/dist/cli/types.js.map +1 -0
  307. package/dist/cli.d.ts +3 -0
  308. package/dist/cli.d.ts.map +1 -0
  309. package/dist/cli.js +38 -0
  310. package/dist/cli.js.map +1 -0
  311. package/dist/db/better-sqlite3.d.ts +4 -0
  312. package/dist/db/better-sqlite3.d.ts.map +1 -0
  313. package/dist/db/better-sqlite3.js +19 -0
  314. package/dist/db/better-sqlite3.js.map +1 -0
  315. package/dist/db/connection.d.ts +82 -0
  316. package/dist/db/connection.d.ts.map +1 -0
  317. package/dist/db/connection.js +444 -0
  318. package/dist/db/connection.js.map +1 -0
  319. package/dist/db/index.d.ts +6 -0
  320. package/dist/db/index.d.ts.map +1 -0
  321. package/dist/db/index.js +6 -0
  322. package/dist/db/index.js.map +1 -0
  323. package/dist/db/migrations.d.ts +11 -0
  324. package/dist/db/migrations.d.ts.map +1 -0
  325. package/dist/db/migrations.js +416 -0
  326. package/dist/db/migrations.js.map +1 -0
  327. package/dist/db/query-builder.d.ts +88 -0
  328. package/dist/db/query-builder.d.ts.map +1 -0
  329. package/dist/db/query-builder.js +321 -0
  330. package/dist/db/query-builder.js.map +1 -0
  331. package/dist/db/repository/base.d.ts +103 -0
  332. package/dist/db/repository/base.d.ts.map +1 -0
  333. package/dist/db/repository/base.js +172 -0
  334. package/dist/db/repository/base.js.map +1 -0
  335. package/dist/db/repository/build-stmts.d.ts +16 -0
  336. package/dist/db/repository/build-stmts.d.ts.map +1 -0
  337. package/dist/db/repository/build-stmts.js +76 -0
  338. package/dist/db/repository/build-stmts.js.map +1 -0
  339. package/dist/db/repository/cached-stmt.d.ts +9 -0
  340. package/dist/db/repository/cached-stmt.d.ts.map +1 -0
  341. package/dist/db/repository/cached-stmt.js +15 -0
  342. package/dist/db/repository/cached-stmt.js.map +1 -0
  343. package/dist/db/repository/cfg.d.ts +34 -0
  344. package/dist/db/repository/cfg.d.ts.map +1 -0
  345. package/dist/db/repository/cfg.js +46 -0
  346. package/dist/db/repository/cfg.js.map +1 -0
  347. package/dist/db/repository/cochange.d.ts +14 -0
  348. package/dist/db/repository/cochange.d.ts.map +1 -0
  349. package/dist/db/repository/cochange.js +38 -0
  350. package/dist/db/repository/cochange.js.map +1 -0
  351. package/dist/db/repository/complexity.d.ts +7 -0
  352. package/dist/db/repository/complexity.d.ts.map +1 -0
  353. package/dist/db/repository/complexity.js +12 -0
  354. package/dist/db/repository/complexity.js.map +1 -0
  355. package/dist/db/repository/dataflow.d.ts +11 -0
  356. package/dist/db/repository/dataflow.d.ts.map +1 -0
  357. package/dist/db/repository/dataflow.js +30 -0
  358. package/dist/db/repository/dataflow.js.map +1 -0
  359. package/dist/db/repository/edges.d.ts +66 -0
  360. package/dist/db/repository/edges.d.ts.map +1 -0
  361. package/dist/db/repository/edges.js +175 -0
  362. package/dist/db/repository/edges.js.map +1 -0
  363. package/dist/db/repository/embeddings.d.ts +14 -0
  364. package/dist/db/repository/embeddings.d.ts.map +1 -0
  365. package/dist/db/repository/embeddings.js +40 -0
  366. package/dist/db/repository/embeddings.js.map +1 -0
  367. package/dist/db/repository/graph-read.d.ts +18 -0
  368. package/dist/db/repository/graph-read.d.ts.map +1 -0
  369. package/dist/db/repository/graph-read.js +33 -0
  370. package/dist/db/repository/graph-read.js.map +1 -0
  371. package/dist/db/repository/in-memory-repository.d.ts +88 -0
  372. package/dist/db/repository/in-memory-repository.d.ts.map +1 -0
  373. package/dist/db/repository/in-memory-repository.js +541 -0
  374. package/dist/db/repository/in-memory-repository.js.map +1 -0
  375. package/dist/db/repository/index.d.ts +16 -0
  376. package/dist/db/repository/index.d.ts.map +1 -0
  377. package/dist/db/repository/index.js +16 -0
  378. package/dist/db/repository/index.js.map +1 -0
  379. package/dist/db/repository/native-repository.d.ts +70 -0
  380. package/dist/db/repository/native-repository.d.ts.map +1 -0
  381. package/dist/db/repository/native-repository.js +418 -0
  382. package/dist/db/repository/native-repository.js.map +1 -0
  383. package/dist/db/repository/nodes.d.ts +86 -0
  384. package/dist/db/repository/nodes.d.ts.map +1 -0
  385. package/dist/db/repository/nodes.js +203 -0
  386. package/dist/db/repository/nodes.js.map +1 -0
  387. package/dist/db/repository/sqlite-repository.d.ts +59 -0
  388. package/dist/db/repository/sqlite-repository.d.ts.map +1 -0
  389. package/dist/db/repository/sqlite-repository.js +199 -0
  390. package/dist/db/repository/sqlite-repository.js.map +1 -0
  391. package/dist/domain/analysis/brief.d.ts +25 -0
  392. package/dist/domain/analysis/brief.d.ts.map +1 -0
  393. package/dist/domain/analysis/brief.js +136 -0
  394. package/dist/domain/analysis/brief.js.map +1 -0
  395. package/dist/domain/analysis/context.d.ts +241 -0
  396. package/dist/domain/analysis/context.d.ts.map +1 -0
  397. package/dist/domain/analysis/context.js +361 -0
  398. package/dist/domain/analysis/context.js.map +1 -0
  399. package/dist/domain/analysis/dependencies.d.ts +158 -0
  400. package/dist/domain/analysis/dependencies.d.ts.map +1 -0
  401. package/dist/domain/analysis/dependencies.js +522 -0
  402. package/dist/domain/analysis/dependencies.js.map +1 -0
  403. package/dist/domain/analysis/diff-impact.d.ts +90 -0
  404. package/dist/domain/analysis/diff-impact.d.ts.map +1 -0
  405. package/dist/domain/analysis/diff-impact.js +301 -0
  406. package/dist/domain/analysis/diff-impact.js.map +1 -0
  407. package/dist/domain/analysis/exports.d.ts +8 -0
  408. package/dist/domain/analysis/exports.d.ts.map +1 -0
  409. package/dist/domain/analysis/exports.js +178 -0
  410. package/dist/domain/analysis/exports.js.map +1 -0
  411. package/dist/domain/analysis/fn-impact.d.ts +61 -0
  412. package/dist/domain/analysis/fn-impact.d.ts.map +1 -0
  413. package/dist/domain/analysis/fn-impact.js +190 -0
  414. package/dist/domain/analysis/fn-impact.js.map +1 -0
  415. package/dist/domain/analysis/impact.d.ts +11 -0
  416. package/dist/domain/analysis/impact.d.ts.map +1 -0
  417. package/dist/domain/analysis/impact.js +11 -0
  418. package/dist/domain/analysis/impact.js.map +1 -0
  419. package/dist/domain/analysis/implementations.d.ts +59 -0
  420. package/dist/domain/analysis/implementations.d.ts.map +1 -0
  421. package/dist/domain/analysis/implementations.js +65 -0
  422. package/dist/domain/analysis/implementations.js.map +1 -0
  423. package/dist/domain/analysis/module-map.d.ts +86 -0
  424. package/dist/domain/analysis/module-map.d.ts.map +1 -0
  425. package/dist/domain/analysis/module-map.js +468 -0
  426. package/dist/domain/analysis/module-map.js.map +1 -0
  427. package/dist/domain/analysis/query-helpers.d.ts +27 -0
  428. package/dist/domain/analysis/query-helpers.d.ts.map +1 -0
  429. package/dist/domain/analysis/query-helpers.js +41 -0
  430. package/dist/domain/analysis/query-helpers.js.map +1 -0
  431. package/dist/domain/analysis/roles.d.ts +20 -0
  432. package/dist/domain/analysis/roles.d.ts.map +1 -0
  433. package/dist/domain/analysis/roles.js +74 -0
  434. package/dist/domain/analysis/roles.js.map +1 -0
  435. package/dist/domain/analysis/symbol-lookup.d.ts +125 -0
  436. package/dist/domain/analysis/symbol-lookup.d.ts.map +1 -0
  437. package/dist/domain/analysis/symbol-lookup.js +206 -0
  438. package/dist/domain/analysis/symbol-lookup.js.map +1 -0
  439. package/dist/domain/graph/builder/call-resolver.d.ts +89 -0
  440. package/dist/domain/graph/builder/call-resolver.d.ts.map +1 -0
  441. package/dist/domain/graph/builder/call-resolver.js +212 -0
  442. package/dist/domain/graph/builder/call-resolver.js.map +1 -0
  443. package/dist/domain/graph/builder/cha.d.ts +69 -0
  444. package/dist/domain/graph/builder/cha.d.ts.map +1 -0
  445. package/dist/domain/graph/builder/cha.js +158 -0
  446. package/dist/domain/graph/builder/cha.js.map +1 -0
  447. package/dist/domain/graph/builder/context.d.ts +91 -0
  448. package/dist/domain/graph/builder/context.d.ts.map +1 -0
  449. package/dist/domain/graph/builder/context.js +66 -0
  450. package/dist/domain/graph/builder/context.js.map +1 -0
  451. package/dist/domain/graph/builder/helpers.d.ts +97 -0
  452. package/dist/domain/graph/builder/helpers.d.ts.map +1 -0
  453. package/dist/domain/graph/builder/helpers.js +558 -0
  454. package/dist/domain/graph/builder/helpers.js.map +1 -0
  455. package/dist/domain/graph/builder/incremental.d.ts +53 -0
  456. package/dist/domain/graph/builder/incremental.d.ts.map +1 -0
  457. package/dist/domain/graph/builder/incremental.js +647 -0
  458. package/dist/domain/graph/builder/incremental.js.map +1 -0
  459. package/dist/domain/graph/builder/native-db-proxy.d.ts +24 -0
  460. package/dist/domain/graph/builder/native-db-proxy.d.ts.map +1 -0
  461. package/dist/domain/graph/builder/native-db-proxy.js +91 -0
  462. package/dist/domain/graph/builder/native-db-proxy.js.map +1 -0
  463. package/dist/domain/graph/builder/pipeline.d.ts +9 -0
  464. package/dist/domain/graph/builder/pipeline.d.ts.map +1 -0
  465. package/dist/domain/graph/builder/pipeline.js +448 -0
  466. package/dist/domain/graph/builder/pipeline.js.map +1 -0
  467. package/dist/domain/graph/builder/stages/build-edges.d.ts +3 -0
  468. package/dist/domain/graph/builder/stages/build-edges.d.ts.map +1 -0
  469. package/dist/domain/graph/builder/stages/build-edges.js +1425 -0
  470. package/dist/domain/graph/builder/stages/build-edges.js.map +1 -0
  471. package/dist/domain/graph/builder/stages/build-structure.d.ts +3 -0
  472. package/dist/domain/graph/builder/stages/build-structure.d.ts.map +1 -0
  473. package/dist/domain/graph/builder/stages/build-structure.js +250 -0
  474. package/dist/domain/graph/builder/stages/build-structure.js.map +1 -0
  475. package/dist/domain/graph/builder/stages/collect-files.d.ts +3 -0
  476. package/dist/domain/graph/builder/stages/collect-files.d.ts.map +1 -0
  477. package/dist/domain/graph/builder/stages/collect-files.js +161 -0
  478. package/dist/domain/graph/builder/stages/collect-files.js.map +1 -0
  479. package/dist/domain/graph/builder/stages/detect-changes.d.ts +27 -0
  480. package/dist/domain/graph/builder/stages/detect-changes.d.ts.map +1 -0
  481. package/dist/domain/graph/builder/stages/detect-changes.js +593 -0
  482. package/dist/domain/graph/builder/stages/detect-changes.js.map +1 -0
  483. package/dist/domain/graph/builder/stages/finalize.d.ts +3 -0
  484. package/dist/domain/graph/builder/stages/finalize.d.ts.map +1 -0
  485. package/dist/domain/graph/builder/stages/finalize.js +274 -0
  486. package/dist/domain/graph/builder/stages/finalize.js.map +1 -0
  487. package/dist/domain/graph/builder/stages/insert-nodes.d.ts +35 -0
  488. package/dist/domain/graph/builder/stages/insert-nodes.d.ts.map +1 -0
  489. package/dist/domain/graph/builder/stages/insert-nodes.js +351 -0
  490. package/dist/domain/graph/builder/stages/insert-nodes.js.map +1 -0
  491. package/dist/domain/graph/builder/stages/native-db-lifecycle.d.ts +14 -0
  492. package/dist/domain/graph/builder/stages/native-db-lifecycle.d.ts.map +1 -0
  493. package/dist/domain/graph/builder/stages/native-db-lifecycle.js +77 -0
  494. package/dist/domain/graph/builder/stages/native-db-lifecycle.js.map +1 -0
  495. package/dist/domain/graph/builder/stages/native-orchestrator.d.ts +62 -0
  496. package/dist/domain/graph/builder/stages/native-orchestrator.d.ts.map +1 -0
  497. package/dist/domain/graph/builder/stages/native-orchestrator.js +1763 -0
  498. package/dist/domain/graph/builder/stages/native-orchestrator.js.map +1 -0
  499. package/dist/domain/graph/builder/stages/parse-files.d.ts +3 -0
  500. package/dist/domain/graph/builder/stages/parse-files.d.ts.map +1 -0
  501. package/dist/domain/graph/builder/stages/parse-files.js +22 -0
  502. package/dist/domain/graph/builder/stages/parse-files.js.map +1 -0
  503. package/dist/domain/graph/builder/stages/resolve-imports.d.ts +7 -0
  504. package/dist/domain/graph/builder/stages/resolve-imports.d.ts.map +1 -0
  505. package/dist/domain/graph/builder/stages/resolve-imports.js +231 -0
  506. package/dist/domain/graph/builder/stages/resolve-imports.js.map +1 -0
  507. package/dist/domain/graph/builder/stages/run-analyses.d.ts +3 -0
  508. package/dist/domain/graph/builder/stages/run-analyses.d.ts.map +1 -0
  509. package/dist/domain/graph/builder/stages/run-analyses.js +23 -0
  510. package/dist/domain/graph/builder/stages/run-analyses.js.map +1 -0
  511. package/dist/domain/graph/builder.d.ts +4 -0
  512. package/dist/domain/graph/builder.d.ts.map +1 -0
  513. package/dist/domain/graph/builder.js +6 -0
  514. package/dist/domain/graph/builder.js.map +1 -0
  515. package/dist/domain/graph/change-journal.d.ts +50 -0
  516. package/dist/domain/graph/change-journal.d.ts.map +1 -0
  517. package/dist/domain/graph/change-journal.js +97 -0
  518. package/dist/domain/graph/change-journal.js.map +1 -0
  519. package/dist/domain/graph/cycles.d.ts +19 -0
  520. package/dist/domain/graph/cycles.d.ts.map +1 -0
  521. package/dist/domain/graph/cycles.js +142 -0
  522. package/dist/domain/graph/cycles.js.map +1 -0
  523. package/dist/domain/graph/journal.d.ts +30 -0
  524. package/dist/domain/graph/journal.d.ts.map +1 -0
  525. package/dist/domain/graph/journal.js +360 -0
  526. package/dist/domain/graph/journal.js.map +1 -0
  527. package/dist/domain/graph/resolve.d.ts +67 -0
  528. package/dist/domain/graph/resolve.d.ts.map +1 -0
  529. package/dist/domain/graph/resolve.js +521 -0
  530. package/dist/domain/graph/resolve.js.map +1 -0
  531. package/dist/domain/graph/resolver/points-to.d.ts +53 -0
  532. package/dist/domain/graph/resolver/points-to.d.ts.map +1 -0
  533. package/dist/domain/graph/resolver/points-to.js +261 -0
  534. package/dist/domain/graph/resolver/points-to.js.map +1 -0
  535. package/dist/domain/graph/resolver/strategy.d.ts +61 -0
  536. package/dist/domain/graph/resolver/strategy.d.ts.map +1 -0
  537. package/dist/domain/graph/resolver/strategy.js +222 -0
  538. package/dist/domain/graph/resolver/strategy.js.map +1 -0
  539. package/dist/domain/graph/resolver/ts-resolver.d.ts +9 -0
  540. package/dist/domain/graph/resolver/ts-resolver.d.ts.map +1 -0
  541. package/dist/domain/graph/resolver/ts-resolver.js +476 -0
  542. package/dist/domain/graph/resolver/ts-resolver.js.map +1 -0
  543. package/dist/domain/graph/watcher.d.ts +23 -0
  544. package/dist/domain/graph/watcher.d.ts.map +1 -0
  545. package/dist/domain/graph/watcher.js +272 -0
  546. package/dist/domain/graph/watcher.js.map +1 -0
  547. package/dist/domain/parser.d.ts +128 -0
  548. package/dist/domain/parser.d.ts.map +1 -0
  549. package/dist/domain/parser.js +1246 -0
  550. package/dist/domain/parser.js.map +1 -0
  551. package/dist/domain/queries.d.ts +22 -0
  552. package/dist/domain/queries.d.ts.map +1 -0
  553. package/dist/domain/queries.js +26 -0
  554. package/dist/domain/queries.js.map +1 -0
  555. package/dist/domain/search/generator.d.ts +16 -0
  556. package/dist/domain/search/generator.d.ts.map +1 -0
  557. package/dist/domain/search/generator.js +181 -0
  558. package/dist/domain/search/generator.js.map +1 -0
  559. package/dist/domain/search/index.d.ts +15 -0
  560. package/dist/domain/search/index.d.ts.map +1 -0
  561. package/dist/domain/search/index.js +13 -0
  562. package/dist/domain/search/index.js.map +1 -0
  563. package/dist/domain/search/models.d.ts +63 -0
  564. package/dist/domain/search/models.d.ts.map +1 -0
  565. package/dist/domain/search/models.js +303 -0
  566. package/dist/domain/search/models.js.map +1 -0
  567. package/dist/domain/search/search/cli-formatter.d.ts +10 -0
  568. package/dist/domain/search/search/cli-formatter.d.ts.map +1 -0
  569. package/dist/domain/search/search/cli-formatter.js +134 -0
  570. package/dist/domain/search/search/cli-formatter.js.map +1 -0
  571. package/dist/domain/search/search/filters.d.ts +9 -0
  572. package/dist/domain/search/search/filters.d.ts.map +1 -0
  573. package/dist/domain/search/search/filters.js +31 -0
  574. package/dist/domain/search/search/filters.js.map +1 -0
  575. package/dist/domain/search/search/hybrid.d.ts +21 -0
  576. package/dist/domain/search/search/hybrid.d.ts.map +1 -0
  577. package/dist/domain/search/search/hybrid.js +122 -0
  578. package/dist/domain/search/search/hybrid.js.map +1 -0
  579. package/dist/domain/search/search/keyword.d.ts +18 -0
  580. package/dist/domain/search/search/keyword.d.ts.map +1 -0
  581. package/dist/domain/search/search/keyword.js +58 -0
  582. package/dist/domain/search/search/keyword.js.map +1 -0
  583. package/dist/domain/search/search/prepare.d.ts +25 -0
  584. package/dist/domain/search/search/prepare.d.ts.map +1 -0
  585. package/dist/domain/search/search/prepare.js +63 -0
  586. package/dist/domain/search/search/prepare.js.map +1 -0
  587. package/dist/domain/search/search/semantic.d.ts +41 -0
  588. package/dist/domain/search/search/semantic.d.ts.map +1 -0
  589. package/dist/domain/search/search/semantic.js +135 -0
  590. package/dist/domain/search/search/semantic.js.map +1 -0
  591. package/dist/domain/search/stores/fts5.d.ts +10 -0
  592. package/dist/domain/search/stores/fts5.d.ts.map +1 -0
  593. package/dist/domain/search/stores/fts5.js +27 -0
  594. package/dist/domain/search/stores/fts5.js.map +1 -0
  595. package/dist/domain/search/stores/sqlite-blob.d.ts +5 -0
  596. package/dist/domain/search/stores/sqlite-blob.d.ts.map +1 -0
  597. package/dist/domain/search/stores/sqlite-blob.js +16 -0
  598. package/dist/domain/search/stores/sqlite-blob.js.map +1 -0
  599. package/dist/domain/search/strategies/source.d.ts +6 -0
  600. package/dist/domain/search/strategies/source.d.ts.map +1 -0
  601. package/dist/domain/search/strategies/source.js +14 -0
  602. package/dist/domain/search/strategies/source.js.map +1 -0
  603. package/dist/domain/search/strategies/structured.d.ts +10 -0
  604. package/dist/domain/search/strategies/structured.d.ts.map +1 -0
  605. package/dist/domain/search/strategies/structured.js +35 -0
  606. package/dist/domain/search/strategies/structured.js.map +1 -0
  607. package/dist/domain/search/strategies/text-utils.d.ts +9 -0
  608. package/dist/domain/search/strategies/text-utils.d.ts.map +1 -0
  609. package/dist/domain/search/strategies/text-utils.js +45 -0
  610. package/dist/domain/search/strategies/text-utils.js.map +1 -0
  611. package/dist/domain/wasm-worker-entry.d.ts +24 -0
  612. package/dist/domain/wasm-worker-entry.d.ts.map +1 -0
  613. package/dist/domain/wasm-worker-entry.js +749 -0
  614. package/dist/domain/wasm-worker-entry.js.map +1 -0
  615. package/dist/domain/wasm-worker-pool.d.ts +59 -0
  616. package/dist/domain/wasm-worker-pool.d.ts.map +1 -0
  617. package/dist/domain/wasm-worker-pool.js +363 -0
  618. package/dist/domain/wasm-worker-pool.js.map +1 -0
  619. package/dist/domain/wasm-worker-protocol.d.ts +81 -0
  620. package/dist/domain/wasm-worker-protocol.d.ts.map +1 -0
  621. package/dist/domain/wasm-worker-protocol.js +13 -0
  622. package/dist/domain/wasm-worker-protocol.js.map +1 -0
  623. package/dist/extractors/bash.d.ts +6 -0
  624. package/dist/extractors/bash.d.ts.map +1 -0
  625. package/dist/extractors/bash.js +91 -0
  626. package/dist/extractors/bash.js.map +1 -0
  627. package/dist/extractors/c.d.ts +6 -0
  628. package/dist/extractors/c.d.ts.map +1 -0
  629. package/dist/extractors/c.js +223 -0
  630. package/dist/extractors/c.js.map +1 -0
  631. package/dist/extractors/clojure.d.ts +12 -0
  632. package/dist/extractors/clojure.d.ts.map +1 -0
  633. package/dist/extractors/clojure.js +245 -0
  634. package/dist/extractors/clojure.js.map +1 -0
  635. package/dist/extractors/cpp.d.ts +6 -0
  636. package/dist/extractors/cpp.d.ts.map +1 -0
  637. package/dist/extractors/cpp.js +365 -0
  638. package/dist/extractors/cpp.js.map +1 -0
  639. package/dist/extractors/csharp.d.ts +6 -0
  640. package/dist/extractors/csharp.d.ts.map +1 -0
  641. package/dist/extractors/csharp.js +430 -0
  642. package/dist/extractors/csharp.js.map +1 -0
  643. package/dist/extractors/cuda.d.ts +11 -0
  644. package/dist/extractors/cuda.d.ts.map +1 -0
  645. package/dist/extractors/cuda.js +419 -0
  646. package/dist/extractors/cuda.js.map +1 -0
  647. package/dist/extractors/dart.d.ts +6 -0
  648. package/dist/extractors/dart.d.ts.map +1 -0
  649. package/dist/extractors/dart.js +277 -0
  650. package/dist/extractors/dart.js.map +1 -0
  651. package/dist/extractors/elixir.d.ts +9 -0
  652. package/dist/extractors/elixir.d.ts.map +1 -0
  653. package/dist/extractors/elixir.js +327 -0
  654. package/dist/extractors/elixir.js.map +1 -0
  655. package/dist/extractors/erlang.d.ts +14 -0
  656. package/dist/extractors/erlang.d.ts.map +1 -0
  657. package/dist/extractors/erlang.js +275 -0
  658. package/dist/extractors/erlang.js.map +1 -0
  659. package/dist/extractors/fsharp.d.ts +20 -0
  660. package/dist/extractors/fsharp.d.ts.map +1 -0
  661. package/dist/extractors/fsharp.js +312 -0
  662. package/dist/extractors/fsharp.js.map +1 -0
  663. package/dist/extractors/gleam.d.ts +14 -0
  664. package/dist/extractors/gleam.d.ts.map +1 -0
  665. package/dist/extractors/gleam.js +225 -0
  666. package/dist/extractors/gleam.js.map +1 -0
  667. package/dist/extractors/go.d.ts +6 -0
  668. package/dist/extractors/go.d.ts.map +1 -0
  669. package/dist/extractors/go.js +460 -0
  670. package/dist/extractors/go.js.map +1 -0
  671. package/dist/extractors/groovy.d.ts +10 -0
  672. package/dist/extractors/groovy.d.ts.map +1 -0
  673. package/dist/extractors/groovy.js +403 -0
  674. package/dist/extractors/groovy.js.map +1 -0
  675. package/dist/extractors/haskell.d.ts +8 -0
  676. package/dist/extractors/haskell.d.ts.map +1 -0
  677. package/dist/extractors/haskell.js +261 -0
  678. package/dist/extractors/haskell.js.map +1 -0
  679. package/dist/extractors/hcl.d.ts +6 -0
  680. package/dist/extractors/hcl.d.ts.map +1 -0
  681. package/dist/extractors/hcl.js +114 -0
  682. package/dist/extractors/hcl.js.map +1 -0
  683. package/dist/extractors/helpers.d.ts +144 -0
  684. package/dist/extractors/helpers.d.ts.map +1 -0
  685. package/dist/extractors/helpers.js +360 -0
  686. package/dist/extractors/helpers.js.map +1 -0
  687. package/dist/extractors/index.d.ts +33 -0
  688. package/dist/extractors/index.d.ts.map +1 -0
  689. package/dist/extractors/index.js +33 -0
  690. package/dist/extractors/index.js.map +1 -0
  691. package/dist/extractors/java.d.ts +6 -0
  692. package/dist/extractors/java.d.ts.map +1 -0
  693. package/dist/extractors/java.js +390 -0
  694. package/dist/extractors/java.js.map +1 -0
  695. package/dist/extractors/javascript.d.ts +10 -0
  696. package/dist/extractors/javascript.d.ts.map +1 -0
  697. package/dist/extractors/javascript.js +3618 -0
  698. package/dist/extractors/javascript.js.map +1 -0
  699. package/dist/extractors/julia.d.ts +16 -0
  700. package/dist/extractors/julia.d.ts.map +1 -0
  701. package/dist/extractors/julia.js +411 -0
  702. package/dist/extractors/julia.js.map +1 -0
  703. package/dist/extractors/kotlin.d.ts +6 -0
  704. package/dist/extractors/kotlin.d.ts.map +1 -0
  705. package/dist/extractors/kotlin.js +340 -0
  706. package/dist/extractors/kotlin.js.map +1 -0
  707. package/dist/extractors/lua.d.ts +6 -0
  708. package/dist/extractors/lua.d.ts.map +1 -0
  709. package/dist/extractors/lua.js +162 -0
  710. package/dist/extractors/lua.js.map +1 -0
  711. package/dist/extractors/objc.d.ts +9 -0
  712. package/dist/extractors/objc.d.ts.map +1 -0
  713. package/dist/extractors/objc.js +543 -0
  714. package/dist/extractors/objc.js.map +1 -0
  715. package/dist/extractors/ocaml.d.ts +6 -0
  716. package/dist/extractors/ocaml.d.ts.map +1 -0
  717. package/dist/extractors/ocaml.js +310 -0
  718. package/dist/extractors/ocaml.js.map +1 -0
  719. package/dist/extractors/php.d.ts +6 -0
  720. package/dist/extractors/php.d.ts.map +1 -0
  721. package/dist/extractors/php.js +381 -0
  722. package/dist/extractors/php.js.map +1 -0
  723. package/dist/extractors/python.d.ts +6 -0
  724. package/dist/extractors/python.d.ts.map +1 -0
  725. package/dist/extractors/python.js +428 -0
  726. package/dist/extractors/python.js.map +1 -0
  727. package/dist/extractors/r.d.ts +13 -0
  728. package/dist/extractors/r.d.ts.map +1 -0
  729. package/dist/extractors/r.js +267 -0
  730. package/dist/extractors/r.js.map +1 -0
  731. package/dist/extractors/ruby.d.ts +6 -0
  732. package/dist/extractors/ruby.d.ts.map +1 -0
  733. package/dist/extractors/ruby.js +281 -0
  734. package/dist/extractors/ruby.js.map +1 -0
  735. package/dist/extractors/rust.d.ts +6 -0
  736. package/dist/extractors/rust.d.ts.map +1 -0
  737. package/dist/extractors/rust.js +354 -0
  738. package/dist/extractors/rust.js.map +1 -0
  739. package/dist/extractors/scala.d.ts +6 -0
  740. package/dist/extractors/scala.d.ts.map +1 -0
  741. package/dist/extractors/scala.js +315 -0
  742. package/dist/extractors/scala.js.map +1 -0
  743. package/dist/extractors/solidity.d.ts +9 -0
  744. package/dist/extractors/solidity.d.ts.map +1 -0
  745. package/dist/extractors/solidity.js +351 -0
  746. package/dist/extractors/solidity.js.map +1 -0
  747. package/dist/extractors/swift.d.ts +6 -0
  748. package/dist/extractors/swift.d.ts.map +1 -0
  749. package/dist/extractors/swift.js +326 -0
  750. package/dist/extractors/swift.js.map +1 -0
  751. package/dist/extractors/verilog.d.ts +9 -0
  752. package/dist/extractors/verilog.d.ts.map +1 -0
  753. package/dist/extractors/verilog.js +351 -0
  754. package/dist/extractors/verilog.js.map +1 -0
  755. package/dist/extractors/zig.d.ts +9 -0
  756. package/dist/extractors/zig.d.ts.map +1 -0
  757. package/dist/extractors/zig.js +274 -0
  758. package/dist/extractors/zig.js.map +1 -0
  759. package/dist/features/ast.d.ts +78 -0
  760. package/dist/features/ast.d.ts.map +1 -0
  761. package/dist/features/ast.js +228 -0
  762. package/dist/features/ast.js.map +1 -0
  763. package/dist/features/audit.d.ts +15 -0
  764. package/dist/features/audit.d.ts.map +1 -0
  765. package/dist/features/audit.js +275 -0
  766. package/dist/features/audit.js.map +1 -0
  767. package/dist/features/batch.d.ts +54 -0
  768. package/dist/features/batch.d.ts.map +1 -0
  769. package/dist/features/batch.js +97 -0
  770. package/dist/features/batch.js.map +1 -0
  771. package/dist/features/boundaries.d.ts +51 -0
  772. package/dist/features/boundaries.d.ts.map +1 -0
  773. package/dist/features/boundaries.js +248 -0
  774. package/dist/features/boundaries.js.map +1 -0
  775. package/dist/features/branch-compare.d.ts +71 -0
  776. package/dist/features/branch-compare.d.ts.map +1 -0
  777. package/dist/features/branch-compare.js +444 -0
  778. package/dist/features/branch-compare.js.map +1 -0
  779. package/dist/features/cfg.d.ts +79 -0
  780. package/dist/features/cfg.d.ts.map +1 -0
  781. package/dist/features/cfg.js +483 -0
  782. package/dist/features/cfg.js.map +1 -0
  783. package/dist/features/check.d.ts +84 -0
  784. package/dist/features/check.d.ts.map +1 -0
  785. package/dist/features/check.js +290 -0
  786. package/dist/features/check.js.map +1 -0
  787. package/dist/features/cochange.d.ts +68 -0
  788. package/dist/features/cochange.d.ts.map +1 -0
  789. package/dist/features/cochange.js +384 -0
  790. package/dist/features/cochange.js.map +1 -0
  791. package/dist/features/communities.d.ts +26 -0
  792. package/dist/features/communities.d.ts.map +1 -0
  793. package/dist/features/communities.js +149 -0
  794. package/dist/features/communities.js.map +1 -0
  795. package/dist/features/complexity-query.d.ts +37 -0
  796. package/dist/features/complexity-query.d.ts.map +1 -0
  797. package/dist/features/complexity-query.js +268 -0
  798. package/dist/features/complexity-query.js.map +1 -0
  799. package/dist/features/complexity.d.ts +52 -0
  800. package/dist/features/complexity.d.ts.map +1 -0
  801. package/dist/features/complexity.js +490 -0
  802. package/dist/features/complexity.js.map +1 -0
  803. package/dist/features/dataflow.d.ts +129 -0
  804. package/dist/features/dataflow.d.ts.map +1 -0
  805. package/dist/features/dataflow.js +1079 -0
  806. package/dist/features/dataflow.js.map +1 -0
  807. package/dist/features/export.d.ts +35 -0
  808. package/dist/features/export.d.ts.map +1 -0
  809. package/dist/features/export.js +340 -0
  810. package/dist/features/export.js.map +1 -0
  811. package/dist/features/flow.d.ts +21 -0
  812. package/dist/features/flow.d.ts.map +1 -0
  813. package/dist/features/flow.js +195 -0
  814. package/dist/features/flow.js.map +1 -0
  815. package/dist/features/graph-enrichment.d.ts +44 -0
  816. package/dist/features/graph-enrichment.d.ts.map +1 -0
  817. package/dist/features/graph-enrichment.js +312 -0
  818. package/dist/features/graph-enrichment.js.map +1 -0
  819. package/dist/features/manifesto.d.ts +23 -0
  820. package/dist/features/manifesto.d.ts.map +1 -0
  821. package/dist/features/manifesto.js +382 -0
  822. package/dist/features/manifesto.js.map +1 -0
  823. package/dist/features/owners.d.ts +60 -0
  824. package/dist/features/owners.d.ts.map +1 -0
  825. package/dist/features/owners.js +248 -0
  826. package/dist/features/owners.js.map +1 -0
  827. package/dist/features/sequence.d.ts +42 -0
  828. package/dist/features/sequence.d.ts.map +1 -0
  829. package/dist/features/sequence.js +271 -0
  830. package/dist/features/sequence.js.map +1 -0
  831. package/dist/features/shared/find-nodes.d.ts +7 -0
  832. package/dist/features/shared/find-nodes.d.ts.map +1 -0
  833. package/dist/features/shared/find-nodes.js +18 -0
  834. package/dist/features/shared/find-nodes.js.map +1 -0
  835. package/dist/features/snapshot.d.ts +25 -0
  836. package/dist/features/snapshot.d.ts.map +1 -0
  837. package/dist/features/snapshot.js +188 -0
  838. package/dist/features/snapshot.js.map +1 -0
  839. package/dist/features/structure-query.d.ts +76 -0
  840. package/dist/features/structure-query.d.ts.map +1 -0
  841. package/dist/features/structure-query.js +274 -0
  842. package/dist/features/structure-query.js.map +1 -0
  843. package/dist/features/structure.d.ts +39 -0
  844. package/dist/features/structure.d.ts.map +1 -0
  845. package/dist/features/structure.js +796 -0
  846. package/dist/features/structure.js.map +1 -0
  847. package/dist/features/triage.d.ts +47 -0
  848. package/dist/features/triage.d.ts.map +1 -0
  849. package/dist/features/triage.js +123 -0
  850. package/dist/features/triage.js.map +1 -0
  851. package/dist/graph/algorithms/bfs.d.ts +14 -0
  852. package/dist/graph/algorithms/bfs.d.ts.map +1 -0
  853. package/dist/graph/algorithms/bfs.js +72 -0
  854. package/dist/graph/algorithms/bfs.js.map +1 -0
  855. package/dist/graph/algorithms/centrality.d.ts +12 -0
  856. package/dist/graph/algorithms/centrality.d.ts.map +1 -0
  857. package/dist/graph/algorithms/centrality.js +42 -0
  858. package/dist/graph/algorithms/centrality.js.map +1 -0
  859. package/dist/graph/algorithms/index.d.ts +7 -0
  860. package/dist/graph/algorithms/index.d.ts.map +1 -0
  861. package/dist/graph/algorithms/index.js +7 -0
  862. package/dist/graph/algorithms/index.js.map +1 -0
  863. package/dist/graph/algorithms/leiden/adapter.d.ts +37 -0
  864. package/dist/graph/algorithms/leiden/adapter.d.ts.map +1 -0
  865. package/dist/graph/algorithms/leiden/adapter.js +173 -0
  866. package/dist/graph/algorithms/leiden/adapter.js.map +1 -0
  867. package/dist/graph/algorithms/leiden/cpm.d.ts +28 -0
  868. package/dist/graph/algorithms/leiden/cpm.d.ts.map +1 -0
  869. package/dist/graph/algorithms/leiden/cpm.js +48 -0
  870. package/dist/graph/algorithms/leiden/cpm.js.map +1 -0
  871. package/dist/graph/algorithms/leiden/index.d.ts +37 -0
  872. package/dist/graph/algorithms/leiden/index.d.ts.map +1 -0
  873. package/dist/graph/algorithms/leiden/index.js +157 -0
  874. package/dist/graph/algorithms/leiden/index.js.map +1 -0
  875. package/dist/graph/algorithms/leiden/modularity.d.ts +33 -0
  876. package/dist/graph/algorithms/leiden/modularity.d.ts.map +1 -0
  877. package/dist/graph/algorithms/leiden/modularity.js +80 -0
  878. package/dist/graph/algorithms/leiden/modularity.js.map +1 -0
  879. package/dist/graph/algorithms/leiden/optimiser.d.ts +62 -0
  880. package/dist/graph/algorithms/leiden/optimiser.d.ts.map +1 -0
  881. package/dist/graph/algorithms/leiden/optimiser.js +530 -0
  882. package/dist/graph/algorithms/leiden/optimiser.js.map +1 -0
  883. package/dist/graph/algorithms/leiden/partition.d.ts +44 -0
  884. package/dist/graph/algorithms/leiden/partition.d.ts.map +1 -0
  885. package/dist/graph/algorithms/leiden/partition.js +438 -0
  886. package/dist/graph/algorithms/leiden/partition.js.map +1 -0
  887. package/dist/graph/algorithms/leiden/rng.d.ts +9 -0
  888. package/dist/graph/algorithms/leiden/rng.d.ts.map +1 -0
  889. package/dist/graph/algorithms/leiden/rng.js +17 -0
  890. package/dist/graph/algorithms/leiden/rng.js.map +1 -0
  891. package/dist/graph/algorithms/louvain.d.ts +20 -0
  892. package/dist/graph/algorithms/louvain.d.ts.map +1 -0
  893. package/dist/graph/algorithms/louvain.js +52 -0
  894. package/dist/graph/algorithms/louvain.js.map +1 -0
  895. package/dist/graph/algorithms/shortest-path.d.ts +10 -0
  896. package/dist/graph/algorithms/shortest-path.d.ts.map +1 -0
  897. package/dist/graph/algorithms/shortest-path.js +55 -0
  898. package/dist/graph/algorithms/shortest-path.js.map +1 -0
  899. package/dist/graph/algorithms/tarjan.d.ts +9 -0
  900. package/dist/graph/algorithms/tarjan.d.ts.map +1 -0
  901. package/dist/graph/algorithms/tarjan.js +52 -0
  902. package/dist/graph/algorithms/tarjan.js.map +1 -0
  903. package/dist/graph/builders/dependency.d.ts +18 -0
  904. package/dist/graph/builders/dependency.d.ts.map +1 -0
  905. package/dist/graph/builders/dependency.js +101 -0
  906. package/dist/graph/builders/dependency.js.map +1 -0
  907. package/dist/graph/builders/index.d.ts +4 -0
  908. package/dist/graph/builders/index.d.ts.map +1 -0
  909. package/dist/graph/builders/index.js +4 -0
  910. package/dist/graph/builders/index.js.map +1 -0
  911. package/dist/graph/builders/structure.d.ts +10 -0
  912. package/dist/graph/builders/structure.d.ts.map +1 -0
  913. package/dist/graph/builders/structure.js +33 -0
  914. package/dist/graph/builders/structure.js.map +1 -0
  915. package/dist/graph/builders/temporal.d.ts +13 -0
  916. package/dist/graph/builders/temporal.d.ts.map +1 -0
  917. package/dist/graph/builders/temporal.js +29 -0
  918. package/dist/graph/builders/temporal.js.map +1 -0
  919. package/dist/graph/classifiers/index.d.ts +3 -0
  920. package/dist/graph/classifiers/index.d.ts.map +1 -0
  921. package/dist/graph/classifiers/index.js +3 -0
  922. package/dist/graph/classifiers/index.js.map +1 -0
  923. package/dist/graph/classifiers/risk.d.ts +39 -0
  924. package/dist/graph/classifiers/risk.d.ts.map +1 -0
  925. package/dist/graph/classifiers/risk.js +78 -0
  926. package/dist/graph/classifiers/risk.js.map +1 -0
  927. package/dist/graph/classifiers/roles.d.ts +48 -0
  928. package/dist/graph/classifiers/roles.d.ts.map +1 -0
  929. package/dist/graph/classifiers/roles.js +180 -0
  930. package/dist/graph/classifiers/roles.js.map +1 -0
  931. package/dist/graph/index.d.ts +5 -0
  932. package/dist/graph/index.d.ts.map +1 -0
  933. package/dist/graph/index.js +6 -0
  934. package/dist/graph/index.js.map +1 -0
  935. package/dist/graph/model.d.ts +57 -0
  936. package/dist/graph/model.d.ts.map +1 -0
  937. package/dist/graph/model.js +205 -0
  938. package/dist/graph/model.js.map +1 -0
  939. package/dist/index.cjs +16 -0
  940. package/dist/index.d.ts +37 -0
  941. package/dist/index.d.ts.map +1 -0
  942. package/dist/index.js +36 -0
  943. package/dist/index.js.map +1 -0
  944. package/dist/infrastructure/config.d.ts +281 -0
  945. package/dist/infrastructure/config.d.ts.map +1 -0
  946. package/dist/infrastructure/config.js +857 -0
  947. package/dist/infrastructure/config.js.map +1 -0
  948. package/dist/infrastructure/logger.d.ts +7 -0
  949. package/dist/infrastructure/logger.d.ts.map +1 -0
  950. package/dist/infrastructure/logger.js +21 -0
  951. package/dist/infrastructure/logger.js.map +1 -0
  952. package/dist/infrastructure/native.d.ts +38 -0
  953. package/dist/infrastructure/native.d.ts.map +1 -0
  954. package/dist/infrastructure/native.js +182 -0
  955. package/dist/infrastructure/native.js.map +1 -0
  956. package/dist/infrastructure/registry.d.ts +81 -0
  957. package/dist/infrastructure/registry.d.ts.map +1 -0
  958. package/dist/infrastructure/registry.js +229 -0
  959. package/dist/infrastructure/registry.js.map +1 -0
  960. package/dist/infrastructure/result-formatter.d.ts +2 -0
  961. package/dist/infrastructure/result-formatter.d.ts.map +1 -0
  962. package/dist/infrastructure/result-formatter.js +3 -0
  963. package/dist/infrastructure/result-formatter.js.map +1 -0
  964. package/dist/infrastructure/suppress.d.ts +25 -0
  965. package/dist/infrastructure/suppress.d.ts.map +1 -0
  966. package/dist/infrastructure/suppress.js +43 -0
  967. package/dist/infrastructure/suppress.js.map +1 -0
  968. package/dist/infrastructure/test-filter.d.ts +5 -0
  969. package/dist/infrastructure/test-filter.d.ts.map +1 -0
  970. package/dist/infrastructure/test-filter.js +7 -0
  971. package/dist/infrastructure/test-filter.js.map +1 -0
  972. package/dist/infrastructure/update-check.d.ts +26 -0
  973. package/dist/infrastructure/update-check.d.ts.map +1 -0
  974. package/dist/infrastructure/update-check.js +164 -0
  975. package/dist/infrastructure/update-check.js.map +1 -0
  976. package/dist/mcp/index.d.ts +3 -0
  977. package/dist/mcp/index.d.ts.map +1 -0
  978. package/dist/mcp/index.js +3 -0
  979. package/dist/mcp/index.js.map +1 -0
  980. package/dist/mcp/middleware.d.ts +26 -0
  981. package/dist/mcp/middleware.d.ts.map +1 -0
  982. package/dist/mcp/middleware.js +32 -0
  983. package/dist/mcp/middleware.js.map +1 -0
  984. package/dist/mcp/server.d.ts +14 -0
  985. package/dist/mcp/server.d.ts.map +1 -0
  986. package/dist/mcp/server.js +193 -0
  987. package/dist/mcp/server.js.map +1 -0
  988. package/dist/mcp/tool-registry.d.ts +21 -0
  989. package/dist/mcp/tool-registry.d.ts.map +1 -0
  990. package/dist/mcp/tool-registry.js +839 -0
  991. package/dist/mcp/tool-registry.js.map +1 -0
  992. package/dist/mcp/tools/ast-query.d.ts +14 -0
  993. package/dist/mcp/tools/ast-query.d.ts.map +1 -0
  994. package/dist/mcp/tools/ast-query.js +13 -0
  995. package/dist/mcp/tools/ast-query.js.map +1 -0
  996. package/dist/mcp/tools/audit.d.ts +15 -0
  997. package/dist/mcp/tools/audit.d.ts.map +1 -0
  998. package/dist/mcp/tools/audit.js +20 -0
  999. package/dist/mcp/tools/audit.js.map +1 -0
  1000. package/dist/mcp/tools/batch-query.d.ts +13 -0
  1001. package/dist/mcp/tools/batch-query.d.ts.map +1 -0
  1002. package/dist/mcp/tools/batch-query.js +11 -0
  1003. package/dist/mcp/tools/batch-query.js.map +1 -0
  1004. package/dist/mcp/tools/branch-compare.d.ts +12 -0
  1005. package/dist/mcp/tools/branch-compare.d.ts.map +1 -0
  1006. package/dist/mcp/tools/branch-compare.js +10 -0
  1007. package/dist/mcp/tools/branch-compare.js.map +1 -0
  1008. package/dist/mcp/tools/brief.d.ts +9 -0
  1009. package/dist/mcp/tools/brief.d.ts.map +1 -0
  1010. package/dist/mcp/tools/brief.js +8 -0
  1011. package/dist/mcp/tools/brief.js.map +1 -0
  1012. package/dist/mcp/tools/cfg.d.ts +14 -0
  1013. package/dist/mcp/tools/cfg.d.ts.map +1 -0
  1014. package/dist/mcp/tools/cfg.js +20 -0
  1015. package/dist/mcp/tools/cfg.js.map +1 -0
  1016. package/dist/mcp/tools/check.d.ts +20 -0
  1017. package/dist/mcp/tools/check.d.ts.map +1 -0
  1018. package/dist/mcp/tools/check.js +39 -0
  1019. package/dist/mcp/tools/check.js.map +1 -0
  1020. package/dist/mcp/tools/co-changes.d.ts +12 -0
  1021. package/dist/mcp/tools/co-changes.d.ts.map +1 -0
  1022. package/dist/mcp/tools/co-changes.js +19 -0
  1023. package/dist/mcp/tools/co-changes.js.map +1 -0
  1024. package/dist/mcp/tools/code-owners.d.ts +12 -0
  1025. package/dist/mcp/tools/code-owners.d.ts.map +1 -0
  1026. package/dist/mcp/tools/code-owners.js +12 -0
  1027. package/dist/mcp/tools/code-owners.js.map +1 -0
  1028. package/dist/mcp/tools/communities.d.ts +13 -0
  1029. package/dist/mcp/tools/communities.d.ts.map +1 -0
  1030. package/dist/mcp/tools/communities.js +14 -0
  1031. package/dist/mcp/tools/communities.js.map +1 -0
  1032. package/dist/mcp/tools/complexity.d.ts +16 -0
  1033. package/dist/mcp/tools/complexity.d.ts.map +1 -0
  1034. package/dist/mcp/tools/complexity.js +16 -0
  1035. package/dist/mcp/tools/complexity.js.map +1 -0
  1036. package/dist/mcp/tools/context.d.ts +16 -0
  1037. package/dist/mcp/tools/context.d.ts.map +1 -0
  1038. package/dist/mcp/tools/context.js +16 -0
  1039. package/dist/mcp/tools/context.js.map +1 -0
  1040. package/dist/mcp/tools/dataflow.d.ts +15 -0
  1041. package/dist/mcp/tools/dataflow.d.ts.map +1 -0
  1042. package/dist/mcp/tools/dataflow.js +25 -0
  1043. package/dist/mcp/tools/dataflow.js.map +1 -0
  1044. package/dist/mcp/tools/diff-impact.d.ts +14 -0
  1045. package/dist/mcp/tools/diff-impact.d.ts.map +1 -0
  1046. package/dist/mcp/tools/diff-impact.js +23 -0
  1047. package/dist/mcp/tools/diff-impact.js.map +1 -0
  1048. package/dist/mcp/tools/execution-flow.d.ts +15 -0
  1049. package/dist/mcp/tools/execution-flow.d.ts.map +1 -0
  1050. package/dist/mcp/tools/execution-flow.js +25 -0
  1051. package/dist/mcp/tools/execution-flow.js.map +1 -0
  1052. package/dist/mcp/tools/export-graph.d.ts +11 -0
  1053. package/dist/mcp/tools/export-graph.d.ts.map +1 -0
  1054. package/dist/mcp/tools/export-graph.js +57 -0
  1055. package/dist/mcp/tools/export-graph.js.map +1 -0
  1056. package/dist/mcp/tools/file-deps.d.ts +11 -0
  1057. package/dist/mcp/tools/file-deps.d.ts.map +1 -0
  1058. package/dist/mcp/tools/file-deps.js +11 -0
  1059. package/dist/mcp/tools/file-deps.js.map +1 -0
  1060. package/dist/mcp/tools/file-exports.d.ts +12 -0
  1061. package/dist/mcp/tools/file-exports.d.ts.map +1 -0
  1062. package/dist/mcp/tools/file-exports.js +12 -0
  1063. package/dist/mcp/tools/file-exports.js.map +1 -0
  1064. package/dist/mcp/tools/find-cycles.d.ts +7 -0
  1065. package/dist/mcp/tools/find-cycles.d.ts.map +1 -0
  1066. package/dist/mcp/tools/find-cycles.js +15 -0
  1067. package/dist/mcp/tools/find-cycles.js.map +1 -0
  1068. package/dist/mcp/tools/fn-impact.d.ts +14 -0
  1069. package/dist/mcp/tools/fn-impact.d.ts.map +1 -0
  1070. package/dist/mcp/tools/fn-impact.js +14 -0
  1071. package/dist/mcp/tools/fn-impact.js.map +1 -0
  1072. package/dist/mcp/tools/impact-analysis.d.ts +9 -0
  1073. package/dist/mcp/tools/impact-analysis.d.ts.map +1 -0
  1074. package/dist/mcp/tools/impact-analysis.js +8 -0
  1075. package/dist/mcp/tools/impact-analysis.js.map +1 -0
  1076. package/dist/mcp/tools/implementations.d.ts +13 -0
  1077. package/dist/mcp/tools/implementations.d.ts.map +1 -0
  1078. package/dist/mcp/tools/implementations.js +13 -0
  1079. package/dist/mcp/tools/implementations.js.map +1 -0
  1080. package/dist/mcp/tools/index.d.ts +7 -0
  1081. package/dist/mcp/tools/index.d.ts.map +1 -0
  1082. package/dist/mcp/tools/index.js +76 -0
  1083. package/dist/mcp/tools/index.js.map +1 -0
  1084. package/dist/mcp/tools/interfaces.d.ts +13 -0
  1085. package/dist/mcp/tools/interfaces.d.ts.map +1 -0
  1086. package/dist/mcp/tools/interfaces.js +13 -0
  1087. package/dist/mcp/tools/interfaces.js.map +1 -0
  1088. package/dist/mcp/tools/list-functions.d.ts +12 -0
  1089. package/dist/mcp/tools/list-functions.d.ts.map +1 -0
  1090. package/dist/mcp/tools/list-functions.js +13 -0
  1091. package/dist/mcp/tools/list-functions.js.map +1 -0
  1092. package/dist/mcp/tools/list-repos.d.ts +8 -0
  1093. package/dist/mcp/tools/list-repos.d.ts.map +1 -0
  1094. package/dist/mcp/tools/list-repos.js +11 -0
  1095. package/dist/mcp/tools/list-repos.js.map +1 -0
  1096. package/dist/mcp/tools/module-map.d.ts +9 -0
  1097. package/dist/mcp/tools/module-map.d.ts.map +1 -0
  1098. package/dist/mcp/tools/module-map.js +6 -0
  1099. package/dist/mcp/tools/module-map.js.map +1 -0
  1100. package/dist/mcp/tools/node-roles.d.ts +12 -0
  1101. package/dist/mcp/tools/node-roles.d.ts.map +1 -0
  1102. package/dist/mcp/tools/node-roles.js +13 -0
  1103. package/dist/mcp/tools/node-roles.js.map +1 -0
  1104. package/dist/mcp/tools/path.d.ts +15 -0
  1105. package/dist/mcp/tools/path.d.ts.map +1 -0
  1106. package/dist/mcp/tools/path.js +21 -0
  1107. package/dist/mcp/tools/path.js.map +1 -0
  1108. package/dist/mcp/tools/query.d.ts +20 -0
  1109. package/dist/mcp/tools/query.d.ts.map +1 -0
  1110. package/dist/mcp/tools/query.js +29 -0
  1111. package/dist/mcp/tools/query.js.map +1 -0
  1112. package/dist/mcp/tools/semantic-search.d.ts +13 -0
  1113. package/dist/mcp/tools/semantic-search.d.ts.map +1 -0
  1114. package/dist/mcp/tools/semantic-search.js +62 -0
  1115. package/dist/mcp/tools/semantic-search.js.map +1 -0
  1116. package/dist/mcp/tools/sequence.d.ts +16 -0
  1117. package/dist/mcp/tools/sequence.d.ts.map +1 -0
  1118. package/dist/mcp/tools/sequence.js +16 -0
  1119. package/dist/mcp/tools/sequence.js.map +1 -0
  1120. package/dist/mcp/tools/structure.d.ts +13 -0
  1121. package/dist/mcp/tools/structure.d.ts.map +1 -0
  1122. package/dist/mcp/tools/structure.js +14 -0
  1123. package/dist/mcp/tools/structure.js.map +1 -0
  1124. package/dist/mcp/tools/symbol-children.d.ts +13 -0
  1125. package/dist/mcp/tools/symbol-children.d.ts.map +1 -0
  1126. package/dist/mcp/tools/symbol-children.js +13 -0
  1127. package/dist/mcp/tools/symbol-children.js.map +1 -0
  1128. package/dist/mcp/tools/triage.d.ts +17 -0
  1129. package/dist/mcp/tools/triage.d.ts.map +1 -0
  1130. package/dist/mcp/tools/triage.js +34 -0
  1131. package/dist/mcp/tools/triage.js.map +1 -0
  1132. package/dist/mcp/tools/where.d.ts +12 -0
  1133. package/dist/mcp/tools/where.d.ts.map +1 -0
  1134. package/dist/mcp/tools/where.js +12 -0
  1135. package/dist/mcp/tools/where.js.map +1 -0
  1136. package/dist/mcp/types.d.ts +19 -0
  1137. package/dist/mcp/types.d.ts.map +1 -0
  1138. package/dist/mcp/types.js +6 -0
  1139. package/dist/mcp/types.js.map +1 -0
  1140. package/dist/presentation/audit.d.ts +15 -0
  1141. package/dist/presentation/audit.d.ts.map +1 -0
  1142. package/dist/presentation/audit.js +78 -0
  1143. package/dist/presentation/audit.js.map +1 -0
  1144. package/dist/presentation/batch.d.ts +20 -0
  1145. package/dist/presentation/batch.d.ts.map +1 -0
  1146. package/dist/presentation/batch.js +21 -0
  1147. package/dist/presentation/batch.js.map +1 -0
  1148. package/dist/presentation/branch-compare.d.ts +13 -0
  1149. package/dist/presentation/branch-compare.d.ts.map +1 -0
  1150. package/dist/presentation/branch-compare.js +91 -0
  1151. package/dist/presentation/branch-compare.js.map +1 -0
  1152. package/dist/presentation/brief.d.ts +9 -0
  1153. package/dist/presentation/brief.d.ts.map +1 -0
  1154. package/dist/presentation/brief.js +39 -0
  1155. package/dist/presentation/brief.js.map +1 -0
  1156. package/dist/presentation/cfg.d.ts +13 -0
  1157. package/dist/presentation/cfg.d.ts.map +1 -0
  1158. package/dist/presentation/cfg.js +62 -0
  1159. package/dist/presentation/cfg.js.map +1 -0
  1160. package/dist/presentation/check.d.ts +19 -0
  1161. package/dist/presentation/check.d.ts.map +1 -0
  1162. package/dist/presentation/check.js +74 -0
  1163. package/dist/presentation/check.js.map +1 -0
  1164. package/dist/presentation/cochange.d.ts +32 -0
  1165. package/dist/presentation/cochange.d.ts.map +1 -0
  1166. package/dist/presentation/cochange.js +33 -0
  1167. package/dist/presentation/cochange.js.map +1 -0
  1168. package/dist/presentation/colors.d.ts +12 -0
  1169. package/dist/presentation/colors.d.ts.map +1 -0
  1170. package/dist/presentation/colors.js +47 -0
  1171. package/dist/presentation/colors.js.map +1 -0
  1172. package/dist/presentation/communities.d.ts +11 -0
  1173. package/dist/presentation/communities.d.ts.map +1 -0
  1174. package/dist/presentation/communities.js +57 -0
  1175. package/dist/presentation/communities.js.map +1 -0
  1176. package/dist/presentation/complexity.d.ts +17 -0
  1177. package/dist/presentation/complexity.d.ts.map +1 -0
  1178. package/dist/presentation/complexity.js +59 -0
  1179. package/dist/presentation/complexity.js.map +1 -0
  1180. package/dist/presentation/dataflow.d.ts +14 -0
  1181. package/dist/presentation/dataflow.d.ts.map +1 -0
  1182. package/dist/presentation/dataflow.js +100 -0
  1183. package/dist/presentation/dataflow.js.map +1 -0
  1184. package/dist/presentation/diff-impact-mermaid.d.ts +11 -0
  1185. package/dist/presentation/diff-impact-mermaid.d.ts.map +1 -0
  1186. package/dist/presentation/diff-impact-mermaid.js +114 -0
  1187. package/dist/presentation/diff-impact-mermaid.js.map +1 -0
  1188. package/dist/presentation/export.d.ts +130 -0
  1189. package/dist/presentation/export.d.ts.map +1 -0
  1190. package/dist/presentation/export.js +311 -0
  1191. package/dist/presentation/export.js.map +1 -0
  1192. package/dist/presentation/flow.d.ts +16 -0
  1193. package/dist/presentation/flow.d.ts.map +1 -0
  1194. package/dist/presentation/flow.js +85 -0
  1195. package/dist/presentation/flow.js.map +1 -0
  1196. package/dist/presentation/manifesto.d.ts +13 -0
  1197. package/dist/presentation/manifesto.d.ts.map +1 -0
  1198. package/dist/presentation/manifesto.js +51 -0
  1199. package/dist/presentation/manifesto.js.map +1 -0
  1200. package/dist/presentation/owners.d.ts +16 -0
  1201. package/dist/presentation/owners.d.ts.map +1 -0
  1202. package/dist/presentation/owners.js +42 -0
  1203. package/dist/presentation/owners.js.map +1 -0
  1204. package/dist/presentation/queries-cli/exports.d.ts +12 -0
  1205. package/dist/presentation/queries-cli/exports.d.ts.map +1 -0
  1206. package/dist/presentation/queries-cli/exports.js +100 -0
  1207. package/dist/presentation/queries-cli/exports.js.map +1 -0
  1208. package/dist/presentation/queries-cli/impact.d.ts +23 -0
  1209. package/dist/presentation/queries-cli/impact.d.ts.map +1 -0
  1210. package/dist/presentation/queries-cli/impact.js +208 -0
  1211. package/dist/presentation/queries-cli/impact.js.map +1 -0
  1212. package/dist/presentation/queries-cli/index.d.ts +6 -0
  1213. package/dist/presentation/queries-cli/index.d.ts.map +1 -0
  1214. package/dist/presentation/queries-cli/index.js +6 -0
  1215. package/dist/presentation/queries-cli/index.js.map +1 -0
  1216. package/dist/presentation/queries-cli/inspect.d.ts +23 -0
  1217. package/dist/presentation/queries-cli/inspect.d.ts.map +1 -0
  1218. package/dist/presentation/queries-cli/inspect.js +376 -0
  1219. package/dist/presentation/queries-cli/inspect.js.map +1 -0
  1220. package/dist/presentation/queries-cli/overview.d.ts +19 -0
  1221. package/dist/presentation/queries-cli/overview.d.ts.map +1 -0
  1222. package/dist/presentation/queries-cli/overview.js +196 -0
  1223. package/dist/presentation/queries-cli/overview.js.map +1 -0
  1224. package/dist/presentation/queries-cli/path.d.ts +15 -0
  1225. package/dist/presentation/queries-cli/path.d.ts.map +1 -0
  1226. package/dist/presentation/queries-cli/path.js +101 -0
  1227. package/dist/presentation/queries-cli/path.js.map +1 -0
  1228. package/dist/presentation/queries-cli.d.ts +12 -0
  1229. package/dist/presentation/queries-cli.d.ts.map +1 -0
  1230. package/dist/presentation/queries-cli.js +12 -0
  1231. package/dist/presentation/queries-cli.js.map +1 -0
  1232. package/dist/presentation/query.d.ts +2 -0
  1233. package/dist/presentation/query.d.ts.map +1 -0
  1234. package/dist/presentation/query.js +2 -0
  1235. package/dist/presentation/query.js.map +1 -0
  1236. package/dist/presentation/result-formatter.d.ts +23 -0
  1237. package/dist/presentation/result-formatter.d.ts.map +1 -0
  1238. package/dist/presentation/result-formatter.js +122 -0
  1239. package/dist/presentation/result-formatter.js.map +1 -0
  1240. package/dist/presentation/sequence-renderer.d.ts +19 -0
  1241. package/dist/presentation/sequence-renderer.d.ts.map +1 -0
  1242. package/dist/presentation/sequence-renderer.js +23 -0
  1243. package/dist/presentation/sequence-renderer.js.map +1 -0
  1244. package/dist/presentation/sequence.d.ts +15 -0
  1245. package/dist/presentation/sequence.d.ts.map +1 -0
  1246. package/dist/presentation/sequence.js +26 -0
  1247. package/dist/presentation/sequence.js.map +1 -0
  1248. package/dist/presentation/structure.d.ts +46 -0
  1249. package/dist/presentation/structure.d.ts.map +1 -0
  1250. package/dist/presentation/structure.js +50 -0
  1251. package/dist/presentation/structure.js.map +1 -0
  1252. package/dist/presentation/table.d.ts +24 -0
  1253. package/dist/presentation/table.d.ts.map +1 -0
  1254. package/dist/presentation/table.js +33 -0
  1255. package/dist/presentation/table.js.map +1 -0
  1256. package/dist/presentation/triage.d.ts +19 -0
  1257. package/dist/presentation/triage.d.ts.map +1 -0
  1258. package/dist/presentation/triage.js +34 -0
  1259. package/dist/presentation/triage.js.map +1 -0
  1260. package/dist/presentation/viewer.d.ts +102 -0
  1261. package/dist/presentation/viewer.d.ts.map +1 -0
  1262. package/dist/presentation/viewer.js +618 -0
  1263. package/dist/presentation/viewer.js.map +1 -0
  1264. package/dist/shared/constants.d.ts +33 -0
  1265. package/dist/shared/constants.d.ts.map +1 -0
  1266. package/dist/shared/constants.js +54 -0
  1267. package/dist/shared/constants.js.map +1 -0
  1268. package/dist/shared/errors.d.ts +46 -0
  1269. package/dist/shared/errors.d.ts.map +1 -0
  1270. package/dist/shared/errors.js +69 -0
  1271. package/dist/shared/errors.js.map +1 -0
  1272. package/dist/shared/file-utils.d.ts +27 -0
  1273. package/dist/shared/file-utils.d.ts.map +1 -0
  1274. package/dist/shared/file-utils.js +186 -0
  1275. package/dist/shared/file-utils.js.map +1 -0
  1276. package/dist/shared/generators.d.ts +57 -0
  1277. package/dist/shared/generators.d.ts.map +1 -0
  1278. package/dist/shared/generators.js +106 -0
  1279. package/dist/shared/generators.js.map +1 -0
  1280. package/dist/shared/globs.d.ts +40 -0
  1281. package/dist/shared/globs.d.ts.map +1 -0
  1282. package/dist/shared/globs.js +126 -0
  1283. package/dist/shared/globs.js.map +1 -0
  1284. package/dist/shared/hierarchy.d.ts +9 -0
  1285. package/dist/shared/hierarchy.d.ts.map +1 -0
  1286. package/dist/shared/hierarchy.js +68 -0
  1287. package/dist/shared/hierarchy.js.map +1 -0
  1288. package/dist/shared/kinds.d.ts +12 -0
  1289. package/dist/shared/kinds.d.ts.map +1 -0
  1290. package/dist/shared/kinds.js +67 -0
  1291. package/dist/shared/kinds.js.map +1 -0
  1292. package/dist/shared/normalize.d.ts +49 -0
  1293. package/dist/shared/normalize.d.ts.map +1 -0
  1294. package/dist/shared/normalize.js +57 -0
  1295. package/dist/shared/normalize.js.map +1 -0
  1296. package/dist/shared/paginate.d.ts +32 -0
  1297. package/dist/shared/paginate.d.ts.map +1 -0
  1298. package/dist/shared/paginate.js +82 -0
  1299. package/dist/shared/paginate.js.map +1 -0
  1300. package/dist/shared/version.d.ts +2 -0
  1301. package/dist/shared/version.d.ts.map +1 -0
  1302. package/dist/shared/version.js +5 -0
  1303. package/dist/shared/version.js.map +1 -0
  1304. package/dist/types.d.ts +2468 -0
  1305. package/dist/types.d.ts.map +1 -0
  1306. package/dist/types.js +10 -0
  1307. package/dist/types.js.map +1 -0
  1308. package/grammars/tree-sitter-bash.wasm +0 -0
  1309. package/grammars/tree-sitter-c.wasm +0 -0
  1310. package/grammars/tree-sitter-c_sharp.wasm +0 -0
  1311. package/grammars/tree-sitter-clojure.wasm +0 -0
  1312. package/grammars/tree-sitter-cpp.wasm +0 -0
  1313. package/grammars/tree-sitter-cuda.wasm +0 -0
  1314. package/grammars/tree-sitter-dart.wasm +0 -0
  1315. package/grammars/tree-sitter-elixir.wasm +0 -0
  1316. package/grammars/tree-sitter-erlang.wasm +0 -0
  1317. package/grammars/tree-sitter-fsharp.wasm +0 -0
  1318. package/grammars/tree-sitter-fsharp_signature.wasm +0 -0
  1319. package/grammars/tree-sitter-gleam.wasm +0 -0
  1320. package/grammars/tree-sitter-go.wasm +0 -0
  1321. package/grammars/tree-sitter-groovy.wasm +0 -0
  1322. package/grammars/tree-sitter-haskell.wasm +0 -0
  1323. package/grammars/tree-sitter-hcl.wasm +0 -0
  1324. package/grammars/tree-sitter-java.wasm +0 -0
  1325. package/grammars/tree-sitter-javascript.wasm +0 -0
  1326. package/grammars/tree-sitter-julia.wasm +0 -0
  1327. package/grammars/tree-sitter-kotlin.wasm +0 -0
  1328. package/grammars/tree-sitter-lua.wasm +0 -0
  1329. package/grammars/tree-sitter-objc.wasm +0 -0
  1330. package/grammars/tree-sitter-ocaml.wasm +0 -0
  1331. package/grammars/tree-sitter-ocaml_interface.wasm +0 -0
  1332. package/grammars/tree-sitter-php.wasm +0 -0
  1333. package/grammars/tree-sitter-python.wasm +0 -0
  1334. package/grammars/tree-sitter-r.wasm +0 -0
  1335. package/grammars/tree-sitter-ruby.wasm +0 -0
  1336. package/grammars/tree-sitter-rust.wasm +0 -0
  1337. package/grammars/tree-sitter-scala.wasm +0 -0
  1338. package/grammars/tree-sitter-solidity.wasm +0 -0
  1339. package/grammars/tree-sitter-swift.wasm +0 -0
  1340. package/grammars/tree-sitter-tsx.wasm +0 -0
  1341. package/grammars/tree-sitter-typescript.wasm +0 -0
  1342. package/grammars/tree-sitter-verilog.wasm +0 -0
  1343. package/grammars/tree-sitter-zig.wasm +0 -0
  1344. package/package.json +188 -0
  1345. package/src/ast-analysis/engine.ts +926 -0
  1346. package/src/ast-analysis/metrics.ts +150 -0
  1347. package/src/ast-analysis/rules/b2.ts +263 -0
  1348. package/src/ast-analysis/rules/b3.ts +127 -0
  1349. package/src/ast-analysis/rules/b4.ts +378 -0
  1350. package/src/ast-analysis/rules/b5.ts +65 -0
  1351. package/src/ast-analysis/rules/c.ts +157 -0
  1352. package/src/ast-analysis/rules/csharp.ts +210 -0
  1353. package/src/ast-analysis/rules/go.ts +187 -0
  1354. package/src/ast-analysis/rules/index.ts +380 -0
  1355. package/src/ast-analysis/rules/java.ts +181 -0
  1356. package/src/ast-analysis/rules/javascript.ts +249 -0
  1357. package/src/ast-analysis/rules/php.ts +226 -0
  1358. package/src/ast-analysis/rules/python.ts +202 -0
  1359. package/src/ast-analysis/rules/ruby.ts +209 -0
  1360. package/src/ast-analysis/rules/rust.ts +179 -0
  1361. package/src/ast-analysis/shared.ts +223 -0
  1362. package/src/ast-analysis/visitor-utils.ts +278 -0
  1363. package/src/ast-analysis/visitor.ts +266 -0
  1364. package/src/ast-analysis/visitors/ast-store-visitor.ts +334 -0
  1365. package/src/ast-analysis/visitors/cfg-conditionals.ts +227 -0
  1366. package/src/ast-analysis/visitors/cfg-loops.ts +136 -0
  1367. package/src/ast-analysis/visitors/cfg-shared.ts +196 -0
  1368. package/src/ast-analysis/visitors/cfg-try-catch.ts +142 -0
  1369. package/src/ast-analysis/visitors/cfg-visitor.ts +367 -0
  1370. package/src/ast-analysis/visitors/complexity-visitor.ts +328 -0
  1371. package/src/ast-analysis/visitors/dataflow-visitor.ts +571 -0
  1372. package/src/cli/commands/ast.ts +24 -0
  1373. package/src/cli/commands/audit.ts +48 -0
  1374. package/src/cli/commands/batch.ts +66 -0
  1375. package/src/cli/commands/branch-compare.ts +27 -0
  1376. package/src/cli/commands/brief.ts +13 -0
  1377. package/src/cli/commands/build.ts +35 -0
  1378. package/src/cli/commands/cfg.ts +28 -0
  1379. package/src/cli/commands/check.ts +72 -0
  1380. package/src/cli/commands/children.ts +34 -0
  1381. package/src/cli/commands/co-change.ts +72 -0
  1382. package/src/cli/commands/communities.ts +21 -0
  1383. package/src/cli/commands/complexity.ts +48 -0
  1384. package/src/cli/commands/config.ts +353 -0
  1385. package/src/cli/commands/context.ts +36 -0
  1386. package/src/cli/commands/cycles.ts +33 -0
  1387. package/src/cli/commands/dataflow.ts +30 -0
  1388. package/src/cli/commands/deps.ts +18 -0
  1389. package/src/cli/commands/diff-impact.ts +30 -0
  1390. package/src/cli/commands/embed.ts +82 -0
  1391. package/src/cli/commands/export.ts +79 -0
  1392. package/src/cli/commands/exports.ts +15 -0
  1393. package/src/cli/commands/flow.ts +34 -0
  1394. package/src/cli/commands/fn-impact.ts +34 -0
  1395. package/src/cli/commands/impact.ts +13 -0
  1396. package/src/cli/commands/implementations.ts +30 -0
  1397. package/src/cli/commands/info.ts +79 -0
  1398. package/src/cli/commands/interfaces.ts +30 -0
  1399. package/src/cli/commands/map.ts +20 -0
  1400. package/src/cli/commands/mcp.ts +19 -0
  1401. package/src/cli/commands/models.ts +29 -0
  1402. package/src/cli/commands/owners.ts +28 -0
  1403. package/src/cli/commands/path.ts +42 -0
  1404. package/src/cli/commands/plot.ts +110 -0
  1405. package/src/cli/commands/query.ts +51 -0
  1406. package/src/cli/commands/registry.ts +106 -0
  1407. package/src/cli/commands/roles.ts +38 -0
  1408. package/src/cli/commands/search.ts +45 -0
  1409. package/src/cli/commands/sequence.ts +30 -0
  1410. package/src/cli/commands/snapshot.ts +67 -0
  1411. package/src/cli/commands/stats.ts +16 -0
  1412. package/src/cli/commands/structure.ts +55 -0
  1413. package/src/cli/commands/triage.ts +93 -0
  1414. package/src/cli/commands/watch.ts +29 -0
  1415. package/src/cli/commands/where.ts +21 -0
  1416. package/src/cli/index.ts +159 -0
  1417. package/src/cli/shared/open-graph.ts +13 -0
  1418. package/src/cli/shared/options.ts +69 -0
  1419. package/src/cli/shared/output.ts +1 -0
  1420. package/src/cli/types.ts +35 -0
  1421. package/src/cli.ts +37 -0
  1422. package/src/db/better-sqlite3.ts +21 -0
  1423. package/src/db/connection.ts +478 -0
  1424. package/src/db/index.ts +84 -0
  1425. package/src/db/migrations.ts +440 -0
  1426. package/src/db/query-builder.ts +371 -0
  1427. package/src/db/repository/base.ts +269 -0
  1428. package/src/db/repository/build-stmts.ts +126 -0
  1429. package/src/db/repository/cached-stmt.ts +20 -0
  1430. package/src/db/repository/cfg.ts +81 -0
  1431. package/src/db/repository/cochange.ts +48 -0
  1432. package/src/db/repository/complexity.ts +21 -0
  1433. package/src/db/repository/dataflow.ts +35 -0
  1434. package/src/db/repository/edges.ts +281 -0
  1435. package/src/db/repository/embeddings.ts +47 -0
  1436. package/src/db/repository/graph-read.ts +62 -0
  1437. package/src/db/repository/in-memory-repository.ts +657 -0
  1438. package/src/db/repository/index.ts +53 -0
  1439. package/src/db/repository/native-repository.ts +546 -0
  1440. package/src/db/repository/nodes.ts +322 -0
  1441. package/src/db/repository/sqlite-repository.ts +303 -0
  1442. package/src/domain/analysis/brief.ts +165 -0
  1443. package/src/domain/analysis/context.ts +537 -0
  1444. package/src/domain/analysis/dependencies.ts +738 -0
  1445. package/src/domain/analysis/diff-impact.ts +381 -0
  1446. package/src/domain/analysis/exports.ts +262 -0
  1447. package/src/domain/analysis/fn-impact.ts +311 -0
  1448. package/src/domain/analysis/impact.ts +11 -0
  1449. package/src/domain/analysis/implementations.ts +81 -0
  1450. package/src/domain/analysis/module-map.ts +576 -0
  1451. package/src/domain/analysis/query-helpers.ts +52 -0
  1452. package/src/domain/analysis/roles.ts +95 -0
  1453. package/src/domain/analysis/symbol-lookup.ts +284 -0
  1454. package/src/domain/graph/builder/call-resolver.ts +289 -0
  1455. package/src/domain/graph/builder/cha.ts +192 -0
  1456. package/src/domain/graph/builder/context.ts +120 -0
  1457. package/src/domain/graph/builder/helpers.ts +665 -0
  1458. package/src/domain/graph/builder/incremental.ts +987 -0
  1459. package/src/domain/graph/builder/native-db-proxy.ts +104 -0
  1460. package/src/domain/graph/builder/pipeline.ts +517 -0
  1461. package/src/domain/graph/builder/stages/build-edges.ts +1986 -0
  1462. package/src/domain/graph/builder/stages/build-structure.ts +330 -0
  1463. package/src/domain/graph/builder/stages/collect-files.ts +175 -0
  1464. package/src/domain/graph/builder/stages/detect-changes.ts +751 -0
  1465. package/src/domain/graph/builder/stages/finalize.ts +321 -0
  1466. package/src/domain/graph/builder/stages/insert-nodes.ts +489 -0
  1467. package/src/domain/graph/builder/stages/native-db-lifecycle.ts +74 -0
  1468. package/src/domain/graph/builder/stages/native-orchestrator.ts +2241 -0
  1469. package/src/domain/graph/builder/stages/parse-files.ts +26 -0
  1470. package/src/domain/graph/builder/stages/resolve-imports.ts +285 -0
  1471. package/src/domain/graph/builder/stages/run-analyses.ts +26 -0
  1472. package/src/domain/graph/builder.ts +11 -0
  1473. package/src/domain/graph/change-journal.ts +141 -0
  1474. package/src/domain/graph/cycles.ts +155 -0
  1475. package/src/domain/graph/journal.ts +377 -0
  1476. package/src/domain/graph/resolve.ts +579 -0
  1477. package/src/domain/graph/resolver/points-to.ts +377 -0
  1478. package/src/domain/graph/resolver/strategy.ts +265 -0
  1479. package/src/domain/graph/resolver/ts-resolver.ts +536 -0
  1480. package/src/domain/graph/watcher.ts +339 -0
  1481. package/src/domain/parser.ts +1437 -0
  1482. package/src/domain/queries.ts +50 -0
  1483. package/src/domain/search/generator.ts +260 -0
  1484. package/src/domain/search/index.ts +15 -0
  1485. package/src/domain/search/models.ts +356 -0
  1486. package/src/domain/search/search/cli-formatter.ts +179 -0
  1487. package/src/domain/search/search/filters.ts +38 -0
  1488. package/src/domain/search/search/hybrid.ts +197 -0
  1489. package/src/domain/search/search/keyword.ts +101 -0
  1490. package/src/domain/search/search/prepare.ts +95 -0
  1491. package/src/domain/search/search/semantic.ts +226 -0
  1492. package/src/domain/search/stores/fts5.ts +27 -0
  1493. package/src/domain/search/stores/sqlite-blob.ts +15 -0
  1494. package/src/domain/search/strategies/source.ts +19 -0
  1495. package/src/domain/search/strategies/structured.ts +48 -0
  1496. package/src/domain/search/strategies/text-utils.ts +41 -0
  1497. package/src/domain/wasm-worker-entry.ts +921 -0
  1498. package/src/domain/wasm-worker-pool.ts +375 -0
  1499. package/src/domain/wasm-worker-protocol.ts +98 -0
  1500. package/src/extractors/bash.ts +97 -0
  1501. package/src/extractors/c.ts +231 -0
  1502. package/src/extractors/clojure.ts +273 -0
  1503. package/src/extractors/cpp.ts +383 -0
  1504. package/src/extractors/csharp.ts +448 -0
  1505. package/src/extractors/cuda.ts +433 -0
  1506. package/src/extractors/dart.ts +304 -0
  1507. package/src/extractors/elixir.ts +350 -0
  1508. package/src/extractors/erlang.ts +295 -0
  1509. package/src/extractors/fsharp.ts +357 -0
  1510. package/src/extractors/gleam.ts +247 -0
  1511. package/src/extractors/go.ts +512 -0
  1512. package/src/extractors/groovy.ts +436 -0
  1513. package/src/extractors/haskell.ts +276 -0
  1514. package/src/extractors/hcl.ts +136 -0
  1515. package/src/extractors/helpers.ts +449 -0
  1516. package/src/extractors/index.ts +32 -0
  1517. package/src/extractors/java.ts +439 -0
  1518. package/src/extractors/javascript.ts +3844 -0
  1519. package/src/extractors/julia.ts +432 -0
  1520. package/src/extractors/kotlin.ts +358 -0
  1521. package/src/extractors/lua.ts +169 -0
  1522. package/src/extractors/objc.ts +555 -0
  1523. package/src/extractors/ocaml.ts +337 -0
  1524. package/src/extractors/php.ts +399 -0
  1525. package/src/extractors/python.ts +439 -0
  1526. package/src/extractors/r.ts +275 -0
  1527. package/src/extractors/ruby.ts +292 -0
  1528. package/src/extractors/rust.ts +371 -0
  1529. package/src/extractors/scala.ts +335 -0
  1530. package/src/extractors/solidity.ts +375 -0
  1531. package/src/extractors/swift.ts +337 -0
  1532. package/src/extractors/verilog.ts +383 -0
  1533. package/src/extractors/zig.ts +291 -0
  1534. package/src/features/ast.ts +405 -0
  1535. package/src/features/audit.ts +446 -0
  1536. package/src/features/batch.ts +182 -0
  1537. package/src/features/boundaries.ts +345 -0
  1538. package/src/features/branch-compare.ts +618 -0
  1539. package/src/features/cfg.ts +750 -0
  1540. package/src/features/check.ts +454 -0
  1541. package/src/features/cochange.ts +506 -0
  1542. package/src/features/communities.ts +232 -0
  1543. package/src/features/complexity-query.ts +388 -0
  1544. package/src/features/complexity.ts +753 -0
  1545. package/src/features/dataflow.ts +1654 -0
  1546. package/src/features/export.ts +486 -0
  1547. package/src/features/flow.ts +307 -0
  1548. package/src/features/graph-enrichment.ts +493 -0
  1549. package/src/features/manifesto.ts +508 -0
  1550. package/src/features/owners.ts +360 -0
  1551. package/src/features/sequence.ts +410 -0
  1552. package/src/features/shared/find-nodes.ts +28 -0
  1553. package/src/features/snapshot.ts +221 -0
  1554. package/src/features/structure-query.ts +456 -0
  1555. package/src/features/structure.ts +1100 -0
  1556. package/src/features/triage.ts +199 -0
  1557. package/src/graph/algorithms/bfs.ts +92 -0
  1558. package/src/graph/algorithms/centrality.ts +50 -0
  1559. package/src/graph/algorithms/index.ts +6 -0
  1560. package/src/graph/algorithms/leiden/LICENSE +24 -0
  1561. package/src/graph/algorithms/leiden/adapter.ts +252 -0
  1562. package/src/graph/algorithms/leiden/cpm.ts +77 -0
  1563. package/src/graph/algorithms/leiden/index.ts +224 -0
  1564. package/src/graph/algorithms/leiden/modularity.ts +122 -0
  1565. package/src/graph/algorithms/leiden/optimiser.ts +706 -0
  1566. package/src/graph/algorithms/leiden/partition.ts +577 -0
  1567. package/src/graph/algorithms/leiden/rng.ts +20 -0
  1568. package/src/graph/algorithms/louvain.ts +75 -0
  1569. package/src/graph/algorithms/shortest-path.ts +59 -0
  1570. package/src/graph/algorithms/tarjan.ts +55 -0
  1571. package/src/graph/builders/dependency.ts +148 -0
  1572. package/src/graph/builders/index.ts +3 -0
  1573. package/src/graph/builders/structure.ts +58 -0
  1574. package/src/graph/builders/temporal.ts +51 -0
  1575. package/src/graph/classifiers/index.ts +2 -0
  1576. package/src/graph/classifiers/risk.ts +123 -0
  1577. package/src/graph/classifiers/roles.ts +226 -0
  1578. package/src/graph/index.ts +13 -0
  1579. package/src/graph/model.ts +238 -0
  1580. package/src/index.cjs +16 -0
  1581. package/src/index.ts +72 -0
  1582. package/src/infrastructure/config.ts +954 -0
  1583. package/src/infrastructure/logger.ts +24 -0
  1584. package/src/infrastructure/native.ts +199 -0
  1585. package/src/infrastructure/registry.ts +313 -0
  1586. package/src/infrastructure/result-formatter.ts +2 -0
  1587. package/src/infrastructure/suppress.ts +47 -0
  1588. package/src/infrastructure/test-filter.ts +7 -0
  1589. package/src/infrastructure/update-check.ts +196 -0
  1590. package/src/mcp/index.ts +2 -0
  1591. package/src/mcp/middleware.ts +38 -0
  1592. package/src/mcp/server.ts +259 -0
  1593. package/src/mcp/tool-registry.ts +890 -0
  1594. package/src/mcp/tools/ast-query.ts +25 -0
  1595. package/src/mcp/tools/audit.ts +33 -0
  1596. package/src/mcp/tools/batch-query.ts +22 -0
  1597. package/src/mcp/tools/branch-compare.ts +22 -0
  1598. package/src/mcp/tools/brief.ts +15 -0
  1599. package/src/mcp/tools/cfg.ts +32 -0
  1600. package/src/mcp/tools/check.ts +60 -0
  1601. package/src/mcp/tools/co-changes.ts +29 -0
  1602. package/src/mcp/tools/code-owners.ts +22 -0
  1603. package/src/mcp/tools/communities.ts +25 -0
  1604. package/src/mcp/tools/complexity.ts +30 -0
  1605. package/src/mcp/tools/context.ts +30 -0
  1606. package/src/mcp/tools/dataflow.ts +38 -0
  1607. package/src/mcp/tools/diff-impact.ts +35 -0
  1608. package/src/mcp/tools/execution-flow.ts +38 -0
  1609. package/src/mcp/tools/export-graph.ts +67 -0
  1610. package/src/mcp/tools/file-deps.ts +20 -0
  1611. package/src/mcp/tools/file-exports.ts +22 -0
  1612. package/src/mcp/tools/find-cycles.ts +19 -0
  1613. package/src/mcp/tools/fn-impact.ts +26 -0
  1614. package/src/mcp/tools/impact-analysis.ts +15 -0
  1615. package/src/mcp/tools/implementations.ts +24 -0
  1616. package/src/mcp/tools/index.ts +81 -0
  1617. package/src/mcp/tools/interfaces.ts +24 -0
  1618. package/src/mcp/tools/list-functions.ts +23 -0
  1619. package/src/mcp/tools/list-repos.ts +17 -0
  1620. package/src/mcp/tools/module-map.ts +13 -0
  1621. package/src/mcp/tools/node-roles.ts +23 -0
  1622. package/src/mcp/tools/path.ts +34 -0
  1623. package/src/mcp/tools/query.ts +47 -0
  1624. package/src/mcp/tools/semantic-search.ts +76 -0
  1625. package/src/mcp/tools/sequence.ts +30 -0
  1626. package/src/mcp/tools/structure.ts +25 -0
  1627. package/src/mcp/tools/symbol-children.ts +24 -0
  1628. package/src/mcp/tools/triage.ts +50 -0
  1629. package/src/mcp/tools/where.ts +22 -0
  1630. package/src/mcp/types.ts +21 -0
  1631. package/src/presentation/audit.ts +109 -0
  1632. package/src/presentation/batch.ts +50 -0
  1633. package/src/presentation/branch-compare.ts +148 -0
  1634. package/src/presentation/brief.ts +63 -0
  1635. package/src/presentation/cfg.ts +103 -0
  1636. package/src/presentation/check.ts +138 -0
  1637. package/src/presentation/cochange.ts +57 -0
  1638. package/src/presentation/colors.ts +51 -0
  1639. package/src/presentation/communities.ts +114 -0
  1640. package/src/presentation/complexity.ts +127 -0
  1641. package/src/presentation/dataflow.ts +179 -0
  1642. package/src/presentation/diff-impact-mermaid.ts +169 -0
  1643. package/src/presentation/export.ts +509 -0
  1644. package/src/presentation/flow.ts +147 -0
  1645. package/src/presentation/manifesto.ts +92 -0
  1646. package/src/presentation/owners.ts +89 -0
  1647. package/src/presentation/queries-cli/exports.ts +152 -0
  1648. package/src/presentation/queries-cli/impact.ts +340 -0
  1649. package/src/presentation/queries-cli/index.ts +13 -0
  1650. package/src/presentation/queries-cli/inspect.ts +594 -0
  1651. package/src/presentation/queries-cli/overview.ts +375 -0
  1652. package/src/presentation/queries-cli/path.ts +187 -0
  1653. package/src/presentation/queries-cli.ts +30 -0
  1654. package/src/presentation/query.ts +17 -0
  1655. package/src/presentation/result-formatter.ts +161 -0
  1656. package/src/presentation/sequence-renderer.ts +46 -0
  1657. package/src/presentation/sequence.ts +43 -0
  1658. package/src/presentation/structure.ts +109 -0
  1659. package/src/presentation/table.ts +45 -0
  1660. package/src/presentation/triage.ts +84 -0
  1661. package/src/presentation/viewer.ts +715 -0
  1662. package/src/shared/constants.ts +70 -0
  1663. package/src/shared/errors.ts +85 -0
  1664. package/src/shared/file-utils.ts +233 -0
  1665. package/src/shared/generators.ts +176 -0
  1666. package/src/shared/globs.ts +121 -0
  1667. package/src/shared/hierarchy.ts +81 -0
  1668. package/src/shared/kinds.ts +85 -0
  1669. package/src/shared/normalize.ts +106 -0
  1670. package/src/shared/paginate.ts +93 -0
  1671. package/src/shared/version.ts +10 -0
  1672. package/src/types.ts +2871 -0
@@ -0,0 +1,1246 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { Language, Parser, Query } from 'web-tree-sitter';
5
+ import { debug, warn } from '../infrastructure/logger.js';
6
+ import { getNative, getNativePackageVersion, loadNative } from '../infrastructure/native.js';
7
+ import { ParseError, toErrorMessage } from '../shared/errors.js';
8
+ import { disposeWasmWorkerPool, getWasmWorkerPool } from './wasm-worker-pool.js';
9
+ /** Default worker opts: run all analyses so output matches parseFilesFull. */
10
+ const FULL_ANALYSIS = {
11
+ ast: true,
12
+ complexity: true,
13
+ cfg: true,
14
+ dataflow: true,
15
+ };
16
+ /** Extract-only opts: skip visitor walk for typeMap backfill / similar fast paths. */
17
+ const EXTRACT_ONLY = {
18
+ ast: false,
19
+ complexity: false,
20
+ cfg: false,
21
+ dataflow: false,
22
+ };
23
+ // Re-export all extractors for backward compatibility
24
+ export { extractBashSymbols, extractClojureSymbols, extractCppSymbols, extractCSharpSymbols, extractCSymbols, extractCudaSymbols, extractDartSymbols, extractElixirSymbols, extractErlangSymbols, extractFSharpSymbols, extractGleamSymbols, extractGoSymbols, extractGroovySymbols, extractHaskellSymbols, extractHCLSymbols, extractJavaSymbols, extractJuliaSymbols, extractKotlinSymbols, extractLuaSymbols, extractObjCSymbols, extractOCamlSymbols, extractPHPSymbols, extractPythonSymbols, extractRSymbols, extractRubySymbols, extractRustSymbols, extractScalaSymbols, extractSoliditySymbols, extractSwiftSymbols, extractSymbols, extractVerilogSymbols, extractZigSymbols, } from '../extractors/index.js';
25
+ import { extractBashSymbols, extractClojureSymbols, extractCppSymbols, extractCSharpSymbols, extractCSymbols, extractCudaSymbols, extractDartSymbols, extractElixirSymbols, extractErlangSymbols, extractFSharpSymbols, extractGleamSymbols, extractGoSymbols, extractGroovySymbols, extractHaskellSymbols, extractHCLSymbols, extractJavaSymbols, extractJuliaSymbols, extractKotlinSymbols, extractLuaSymbols, extractObjCSymbols, extractOCamlSymbols, extractPHPSymbols, extractPythonSymbols, extractRSymbols, extractRubySymbols, extractRustSymbols, extractScalaSymbols, extractSoliditySymbols, extractSwiftSymbols, extractSymbols, extractVerilogSymbols, extractZigSymbols, } from '../extractors/index.js';
26
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
27
+ function grammarPath(name) {
28
+ return path.join(__dirname, '..', '..', 'grammars', name);
29
+ }
30
+ let _initialized = false;
31
+ // Memoized parsers — avoids reloading WASM grammars on every createParsers() call
32
+ let _cachedParsers = null;
33
+ // Cached Language objects — WASM-backed, must be .delete()'d explicitly
34
+ let _cachedLanguages = null;
35
+ // Query cache for JS/TS/TSX extractors (populated during createParsers)
36
+ const _queryCache = new Map();
37
+ // Tracks whether ALL grammars have been loaded (vs. a lazy subset)
38
+ let _allParsersLoaded = false;
39
+ // In-flight grammar loads keyed by language id — prevents concurrent duplicate loads
40
+ const _loadingPromises = new Map();
41
+ // Extensions that need typeMap backfill (type annotations only exist in TS/TSX)
42
+ const TS_BACKFILL_EXTS = new Set(['.ts', '.tsx']);
43
+ // Shared patterns for all JS/TS/TSX (class_declaration excluded — name type differs)
44
+ const COMMON_QUERY_PATTERNS = [
45
+ '(function_declaration name: (identifier) @fn_name) @fn_node',
46
+ '(generator_function_declaration name: (identifier) @fn_name) @fn_node',
47
+ '(variable_declarator name: (identifier) @varfn_name value: (arrow_function) @varfn_value)',
48
+ '(variable_declarator name: (identifier) @varfn_name value: (function_expression) @varfn_value)',
49
+ '(variable_declarator name: (identifier) @varfn_name value: (generator_function) @varfn_value)',
50
+ '(method_definition name: (property_identifier) @meth_name) @meth_node',
51
+ '(method_definition name: (private_property_identifier) @meth_name) @meth_node',
52
+ '(method_definition name: (computed_property_name) @meth_name) @meth_node',
53
+ '(import_statement source: (string) @imp_source) @imp_node',
54
+ '(export_statement) @exp_node',
55
+ '(call_expression function: (identifier) @callfn_name) @callfn_node',
56
+ '(call_expression function: (member_expression) @callmem_fn) @callmem_node',
57
+ '(call_expression function: (subscript_expression) @callsub_fn) @callsub_node',
58
+ '(new_expression constructor: (identifier) @newfn_name) @newfn_node',
59
+ '(new_expression constructor: (member_expression) @newmem_fn) @newmem_node',
60
+ '(expression_statement (assignment_expression left: (member_expression) @assign_left right: (_) @assign_right)) @assign_node',
61
+ ];
62
+ // JS: class name is (identifier) — declarations and expressions
63
+ const JS_CLASS_PATTERNS = [
64
+ '(class_declaration name: (identifier) @cls_name) @cls_node',
65
+ // class expressions: `return class Foo extends Bar { ... }` or `const X = class Foo { ... }`
66
+ '(class name: (identifier) @cls_name) @cls_node',
67
+ ];
68
+ // TS/TSX: class name is (type_identifier), plus interface and type alias
69
+ // abstract_class_declaration is a separate node type in tree-sitter-typescript
70
+ const TS_EXTRA_PATTERNS = [
71
+ '(class_declaration name: (type_identifier) @cls_name) @cls_node',
72
+ '(abstract_class_declaration name: (type_identifier) @cls_name) @cls_node',
73
+ // class expressions: `return class Foo extends Bar { ... }`
74
+ '(class name: (type_identifier) @cls_name) @cls_node',
75
+ '(interface_declaration name: (type_identifier) @iface_name) @iface_node',
76
+ '(type_alias_declaration name: (type_identifier) @type_name) @type_node',
77
+ ];
78
+ /**
79
+ * Load a single language grammar and cache the parser + language + query.
80
+ * Uses in-flight deduplication so concurrent callers awaiting the same grammar
81
+ * share a single load rather than producing orphaned WASM instances.
82
+ * Assumes Parser.init() has already been called and _cachedParsers/_cachedLanguages exist.
83
+ */
84
+ async function loadLanguage(entry) {
85
+ if (_cachedParsers.has(entry.id))
86
+ return;
87
+ const inflight = _loadingPromises.get(entry.id);
88
+ if (inflight)
89
+ return inflight;
90
+ const p = doLoadLanguage(entry).finally(() => _loadingPromises.delete(entry.id));
91
+ _loadingPromises.set(entry.id, p);
92
+ return p;
93
+ }
94
+ async function doLoadLanguage(entry) {
95
+ try {
96
+ const lang = await Language.load(grammarPath(entry.grammarFile));
97
+ const parser = new Parser();
98
+ parser.setLanguage(lang);
99
+ _cachedParsers.set(entry.id, parser);
100
+ _cachedLanguages.set(entry.id, lang);
101
+ if (entry.extractor === extractSymbols && !_queryCache.has(entry.id)) {
102
+ const isTS = entry.id === 'typescript' || entry.id === 'tsx';
103
+ const patterns = isTS
104
+ ? [...COMMON_QUERY_PATTERNS, ...TS_EXTRA_PATTERNS]
105
+ : [...COMMON_QUERY_PATTERNS, ...JS_CLASS_PATTERNS];
106
+ _queryCache.set(entry.id, new Query(lang, patterns.join('\n')));
107
+ }
108
+ }
109
+ catch (e) {
110
+ if (entry.required)
111
+ throw new ParseError(`Required parser ${entry.id} failed to initialize`, {
112
+ file: entry.grammarFile,
113
+ cause: e,
114
+ });
115
+ const isEnoent = e.code === 'ENOENT';
116
+ const log = isEnoent ? debug : warn;
117
+ log(`${entry.id} parser failed to initialize: ${e.message}. ${entry.id} files will be skipped.`);
118
+ _cachedParsers.set(entry.id, null);
119
+ }
120
+ }
121
+ async function initParserRuntime() {
122
+ if (!_initialized) {
123
+ await Parser.init();
124
+ _initialized = true;
125
+ }
126
+ if (!_cachedParsers)
127
+ _cachedParsers = new Map();
128
+ if (!_cachedLanguages)
129
+ _cachedLanguages = new Map();
130
+ }
131
+ /**
132
+ * Load only the WASM grammars needed for the given file paths.
133
+ * Grammars already in cache are reused. This avoids the ~500ms cold-start
134
+ * penalty of loading all 23+ grammars when only 1-2 are needed (e.g. incremental rebuilds).
135
+ */
136
+ async function ensureParsersForFiles(filePaths) {
137
+ await initParserRuntime();
138
+ const needed = new Set();
139
+ for (const fp of filePaths) {
140
+ const ext = path.extname(fp).toLowerCase();
141
+ const entry = _extToLang.get(ext);
142
+ if (entry && !_cachedParsers.has(entry.id))
143
+ needed.add(entry);
144
+ }
145
+ for (const entry of needed) {
146
+ await loadLanguage(entry);
147
+ }
148
+ return _cachedParsers;
149
+ }
150
+ /**
151
+ * Load ALL WASM grammars. Used by full builds and feature modules (CFG, dataflow, complexity)
152
+ * that may process files of any language.
153
+ */
154
+ export async function createParsers() {
155
+ if (_cachedParsers && _allParsersLoaded)
156
+ return _cachedParsers;
157
+ await initParserRuntime();
158
+ for (const entry of LANGUAGE_REGISTRY) {
159
+ if (!_cachedParsers.has(entry.id)) {
160
+ await loadLanguage(entry);
161
+ }
162
+ }
163
+ _allParsersLoaded = true;
164
+ return _cachedParsers;
165
+ }
166
+ /**
167
+ * Dispose all cached WASM parsers and queries to free WASM linear memory.
168
+ * Call this between repeated builds in the same process (e.g. benchmarks)
169
+ * to prevent memory accumulation that can cause segfaults.
170
+ */
171
+ function disposeMapEntries(entries, label) {
172
+ for (const [id, item] of entries) {
173
+ if (item && typeof item.delete === 'function') {
174
+ try {
175
+ item.delete();
176
+ }
177
+ catch (e) {
178
+ debug(`Failed to dispose ${label} ${id}: ${e.message}`);
179
+ }
180
+ }
181
+ }
182
+ }
183
+ export async function disposeParsers() {
184
+ if (_cachedParsers) {
185
+ disposeMapEntries(_cachedParsers, 'parser');
186
+ _cachedParsers = null;
187
+ }
188
+ disposeMapEntries(_queryCache, 'query');
189
+ _queryCache.clear();
190
+ if (_cachedLanguages) {
191
+ disposeMapEntries(_cachedLanguages, 'language');
192
+ _cachedLanguages = null;
193
+ }
194
+ _initialized = false;
195
+ _allParsersLoaded = false;
196
+ _loadingPromises.clear();
197
+ await disposeWasmWorkerPool();
198
+ }
199
+ export function getParser(parsers, filePath) {
200
+ const ext = path.extname(filePath);
201
+ const entry = _extToLang.get(ext);
202
+ if (!entry)
203
+ return null;
204
+ return parsers.get(entry.id) || null;
205
+ }
206
+ /**
207
+ * Backfill missing AST-analysis data (astNodes, dataflow, def.complexity,
208
+ * def.cfg) via the WASM worker pool for files that were parsed by the native
209
+ * engine but are missing one or more analyses.
210
+ *
211
+ * Historically this function populated `symbols._tree` so the main-thread
212
+ * visitor walk in `ast-analysis/engine.ts` could run. After the worker-isolation
213
+ * refactor (#965), the worker runs every visitor itself and returns pre-computed
214
+ * analysis data — `_tree` is never set on the main thread.
215
+ *
216
+ * Name is preserved for caller compatibility; the function now ensures
217
+ * *analysis data* rather than *trees*.
218
+ *
219
+ * `needsFn` (optional): when provided, only files for which it returns true are
220
+ * re-parsed. Without it the function falls back to "any WASM-parseable file
221
+ * without _tree", which was the source of #1036 — a single file missing one
222
+ * analysis triggered a full-build re-parse of every WASM-parseable file.
223
+ */
224
+ /**
225
+ * Select files from `fileSymbols` that still need analysis data and are
226
+ * parseable by an installed WASM grammar. Pure (no I/O) — safe to unit-test.
227
+ */
228
+ function collectBackfillPending(fileSymbols, rootDir, needsFn) {
229
+ const pending = [];
230
+ for (const [relPath, symbols] of fileSymbols) {
231
+ if (symbols._tree)
232
+ continue; // legacy path — leave existing trees alone
233
+ if (!_extToLang.has(path.extname(relPath).toLowerCase()))
234
+ continue;
235
+ if (needsFn && !needsFn(relPath, symbols))
236
+ continue;
237
+ pending.push({ relPath, absPath: path.join(rootDir, relPath), symbols });
238
+ }
239
+ return pending;
240
+ }
241
+ export async function ensureWasmTrees(fileSymbols, rootDir, needsFn) {
242
+ const pending = collectBackfillPending(fileSymbols, rootDir, needsFn);
243
+ if (pending.length === 0)
244
+ return;
245
+ const pool = getWasmWorkerPool();
246
+ for (const { relPath, absPath, symbols } of pending) {
247
+ let code;
248
+ try {
249
+ code = fs.readFileSync(absPath, 'utf-8');
250
+ }
251
+ catch (e) {
252
+ debug(`ensureWasmTrees: cannot read ${relPath}: ${e.message}`);
253
+ continue;
254
+ }
255
+ const output = await pool.parse(absPath, code, FULL_ANALYSIS);
256
+ if (!output)
257
+ continue; // worker crashed or returned null — skip silently
258
+ mergeAnalysisData(symbols, output);
259
+ }
260
+ }
261
+ /** Fill gap-only scalar metadata (`_langId`, `_lineCount`) from the worker output. */
262
+ function mergeScalarMetadata(symbols, worker) {
263
+ if (!symbols._langId && worker._langId)
264
+ symbols._langId = worker._langId;
265
+ if (!symbols._lineCount && worker._lineCount)
266
+ symbols._lineCount = worker._lineCount;
267
+ }
268
+ /** Fill gap-only analysis arrays (`astNodes`, `dataflow`) from the worker output. */
269
+ function mergeAnalysisArrays(symbols, worker) {
270
+ if (!Array.isArray(symbols.astNodes) && Array.isArray(worker.astNodes)) {
271
+ symbols.astNodes = worker.astNodes;
272
+ }
273
+ if (!symbols.dataflow && worker.dataflow)
274
+ symbols.dataflow = worker.dataflow;
275
+ }
276
+ /** Merge worker typeMap into existing symbols.typeMap with first-wins semantics. */
277
+ function mergeTypeMap(symbols, worker) {
278
+ if (!worker.typeMap || worker.typeMap.size === 0)
279
+ return;
280
+ if (!symbols.typeMap || !(symbols.typeMap instanceof Map)) {
281
+ symbols.typeMap = new Map(worker.typeMap);
282
+ return;
283
+ }
284
+ for (const [k, v] of worker.typeMap) {
285
+ if (!symbols.typeMap.has(k))
286
+ symbols.typeMap.set(k, v);
287
+ }
288
+ }
289
+ /** Patch existing definitions with worker complexity/cfg when absent. */
290
+ function mergeDefinitionAnalysis(symbols, worker) {
291
+ const existingDefs = Array.isArray(symbols.definitions) ? symbols.definitions : [];
292
+ const workerDefs = Array.isArray(worker.definitions) ? worker.definitions : [];
293
+ if (existingDefs.length === 0 || workerDefs.length === 0)
294
+ return;
295
+ // Index existing defs by (kind, name, line) — mirrors engine.ts matching key.
296
+ const byKey = new Map();
297
+ for (const d of existingDefs)
298
+ byKey.set(`${d.kind}|${d.name}|${d.line}`, d);
299
+ for (const wd of workerDefs) {
300
+ const existing = byKey.get(`${wd.kind}|${wd.name}|${wd.line}`);
301
+ if (!existing)
302
+ continue;
303
+ if (!existing.complexity && wd.complexity)
304
+ existing.complexity = wd.complexity;
305
+ if ((!existing.cfg || !Array.isArray(existing.cfg.blocks)) && wd.cfg?.blocks) {
306
+ existing.cfg = wd.cfg;
307
+ }
308
+ }
309
+ }
310
+ /**
311
+ * Merge pre-computed analysis data from a worker result onto existing symbols.
312
+ * Only fills gaps — never overwrites fields the caller already populated.
313
+ * Used to patch native-parsed symbols with worker-produced astNodes / dataflow /
314
+ * per-definition complexity and cfg.
315
+ */
316
+ function mergeAnalysisData(symbols, worker) {
317
+ mergeScalarMetadata(symbols, worker);
318
+ mergeAnalysisArrays(symbols, worker);
319
+ mergeTypeMap(symbols, worker);
320
+ mergeDefinitionAnalysis(symbols, worker);
321
+ }
322
+ /**
323
+ * Check whether the required WASM grammar files exist on disk.
324
+ */
325
+ export function isWasmAvailable() {
326
+ return LANGUAGE_REGISTRY.filter((e) => e.required).every((e) => fs.existsSync(grammarPath(e.grammarFile)));
327
+ }
328
+ /**
329
+ * Return the set of lowercase file extensions whose WASM grammar is actually
330
+ * installed on disk. Used to scope engine-parity backfill to files that WASM
331
+ * can recover — languages without an installed grammar are skipped by both
332
+ * engines, so they don't represent a native-engine drop.
333
+ *
334
+ * Cached on first call; the grammars directory is shipped immutable.
335
+ */
336
+ let _installedWasmExts = null;
337
+ export function getInstalledWasmExtensions() {
338
+ if (_installedWasmExts)
339
+ return _installedWasmExts;
340
+ const exts = new Set();
341
+ for (const entry of LANGUAGE_REGISTRY) {
342
+ if (fs.existsSync(grammarPath(entry.grammarFile))) {
343
+ for (const ext of entry.extensions)
344
+ exts.add(ext.toLowerCase());
345
+ }
346
+ }
347
+ _installedWasmExts = exts;
348
+ return exts;
349
+ }
350
+ /**
351
+ * Lowercase file extensions covered by the native Rust addon.
352
+ *
353
+ * Mirrors `LanguageKind::from_extension` in
354
+ * `crates/codegraph-core/src/domain/parser.rs`. Used to classify why the
355
+ * native orchestrator dropped a file: extensions outside this set are a
356
+ * legitimate parser limit (no Rust extractor exists), while extensions inside
357
+ * it indicate a real native bug (parse/read/extract failure).
358
+ *
359
+ * Keep this list in sync with the Rust enum — the native addon is a separate
360
+ * npm package, so JS has no runtime way to discover its language coverage.
361
+ */
362
+ export const NATIVE_SUPPORTED_EXTENSIONS = new Set([
363
+ '.js',
364
+ '.jsx',
365
+ '.mjs',
366
+ '.cjs',
367
+ '.ts',
368
+ '.tsx',
369
+ '.py',
370
+ '.pyi',
371
+ '.tf',
372
+ '.hcl',
373
+ '.go',
374
+ '.rs',
375
+ '.java',
376
+ '.cs',
377
+ '.rb',
378
+ '.rake',
379
+ '.gemspec',
380
+ '.php',
381
+ '.phtml',
382
+ '.c',
383
+ '.h',
384
+ '.cpp',
385
+ '.cc',
386
+ '.cxx',
387
+ '.hpp',
388
+ '.cu',
389
+ '.cuh',
390
+ '.kt',
391
+ '.kts',
392
+ '.swift',
393
+ '.scala',
394
+ '.sh',
395
+ '.bash',
396
+ '.ex',
397
+ '.exs',
398
+ '.lua',
399
+ '.dart',
400
+ '.zig',
401
+ '.hs',
402
+ '.ml',
403
+ '.mli',
404
+ '.fs',
405
+ '.fsx',
406
+ '.fsi',
407
+ '.m',
408
+ '.gleam',
409
+ '.jl',
410
+ '.clj',
411
+ '.cljs',
412
+ '.cljc',
413
+ '.erl',
414
+ '.hrl',
415
+ '.groovy',
416
+ '.gvy',
417
+ '.r',
418
+ '.sol',
419
+ '.v',
420
+ '.sv',
421
+ ]);
422
+ /**
423
+ * Group the missing files (relative paths) by drop reason and extension so the
424
+ * caller can log per-extension counts and a sample path. Pure function — no
425
+ * I/O, safe to unit-test independently of the build pipeline.
426
+ */
427
+ export function classifyNativeDrops(relPaths) {
428
+ const byReason = {
429
+ 'unsupported-by-native': new Map(),
430
+ 'native-extractor-failure': new Map(),
431
+ };
432
+ const totals = {
433
+ 'unsupported-by-native': 0,
434
+ 'native-extractor-failure': 0,
435
+ };
436
+ for (const rel of relPaths) {
437
+ const ext = path.extname(rel).toLowerCase();
438
+ const reason = NATIVE_SUPPORTED_EXTENSIONS.has(ext)
439
+ ? 'native-extractor-failure'
440
+ : 'unsupported-by-native';
441
+ const bucket = byReason[reason];
442
+ let list = bucket.get(ext);
443
+ if (!list) {
444
+ list = [];
445
+ bucket.set(ext, list);
446
+ }
447
+ list.push(rel);
448
+ totals[reason]++;
449
+ }
450
+ return { byReason, totals };
451
+ }
452
+ /**
453
+ * Render `{ ext → paths[] }` as a multi-line tabular breakdown for log lines.
454
+ * Each extension occupies its own line so a long warning scans like a table
455
+ * instead of a wall of semicolon-separated slices. Caps at 3 sample paths per
456
+ * extension and 6 extensions total to keep output bounded when many languages
457
+ * are dropped at once. Extensions are sorted by descending file count so the
458
+ * loudest offender shows up first; ties keep insertion order.
459
+ *
460
+ * Returns the empty string for empty input, and otherwise a string that
461
+ * begins with `\n` so callers can append it directly after the header line
462
+ * (`"Backfilling via WASM:" + formatDropExtensionSummary(...)`).
463
+ *
464
+ * Pure function — safe to unit-test independently.
465
+ */
466
+ export function formatDropExtensionSummary(buckets) {
467
+ const MAX_EXTS = 6;
468
+ const MAX_SAMPLES = 3;
469
+ const entries = Array.from(buckets.entries()).sort((a, b) => b[1].length - a[1].length);
470
+ if (entries.length === 0)
471
+ return '';
472
+ const shown = entries.slice(0, MAX_EXTS);
473
+ const extWidth = Math.max(...shown.map(([ext]) => ext.length));
474
+ const countWidth = Math.max(...shown.map(([, paths]) => String(paths.length).length));
475
+ const lines = shown.map(([ext, paths]) => {
476
+ const sample = paths.slice(0, MAX_SAMPLES).join(', ');
477
+ const more = paths.length > MAX_SAMPLES ? ` (+${paths.length - MAX_SAMPLES} more)` : '';
478
+ return ` ${ext.padEnd(extWidth)} ${String(paths.length).padStart(countWidth)} ${sample}${more}`;
479
+ });
480
+ if (entries.length > MAX_EXTS) {
481
+ lines.push(` (+${entries.length - MAX_EXTS} more extension(s))`);
482
+ }
483
+ return `\n${lines.join('\n')}`;
484
+ }
485
+ // ── Unified API ──────────────────────────────────────────────────────────────
486
+ function resolveEngine(opts = {}) {
487
+ const pref = opts.engine || 'auto';
488
+ if (pref === 'wasm')
489
+ return { name: 'wasm', native: null };
490
+ if (pref === 'native' || pref === 'auto') {
491
+ const native = loadNative();
492
+ if (native)
493
+ return { name: 'native', native };
494
+ if (pref === 'native') {
495
+ getNative(); // throws with detailed error + install instructions
496
+ }
497
+ }
498
+ return { name: 'wasm', native: null };
499
+ }
500
+ /**
501
+ * Patch native engine output in-place for the few remaining semantic transforms.
502
+ * With #[napi(js_name)] on Rust types, most fields already arrive as camelCase.
503
+ * This only handles:
504
+ * - _lineCount compat for builder.js
505
+ * - Backward compat for older native binaries missing js_name annotations
506
+ * - dataflow argFlows/mutations bindingType -> binding wrapper
507
+ */
508
+ /** Patch definition fields for backward compat with older native binaries. */
509
+ function patchDefinitions(definitions) {
510
+ for (const d of definitions) {
511
+ if (d.endLine === undefined && d.end_line !== undefined) {
512
+ d.endLine = d.end_line;
513
+ }
514
+ }
515
+ }
516
+ /**
517
+ * Field renames applied to each import record to bridge older native binaries
518
+ * that emit snake_case names. Each `[camel, snake]` pair becomes:
519
+ * `if (imp[camel] === undefined) imp[camel] = imp[snake];`
520
+ * Defined as data so the loop body stays trivially linear in cognitive complexity.
521
+ */
522
+ const IMPORT_FIELD_RENAMES = [
523
+ ['typeOnly', 'type_only'],
524
+ ['wildcardReexport', 'wildcard_reexport'],
525
+ ['pythonImport', 'python_import'],
526
+ ['goImport', 'go_import'],
527
+ ['rustUse', 'rust_use'],
528
+ ['javaImport', 'java_import'],
529
+ ['csharpUsing', 'csharp_using'],
530
+ ['rubyRequire', 'ruby_require'],
531
+ ['phpUse', 'php_use'],
532
+ ['cInclude', 'c_include'],
533
+ ['kotlinImport', 'kotlin_import'],
534
+ ['swiftImport', 'swift_import'],
535
+ ['scalaImport', 'scala_import'],
536
+ ['bashSource', 'bash_source'],
537
+ ['dynamicImport', 'dynamic_import'],
538
+ ];
539
+ /** Patch import fields for backward compat with older native binaries. */
540
+ function patchImports(imports) {
541
+ for (const i of imports) {
542
+ for (const [camel, snake] of IMPORT_FIELD_RENAMES) {
543
+ if (i[camel] === undefined)
544
+ i[camel] = i[snake];
545
+ }
546
+ }
547
+ }
548
+ /** Normalize native typeMap array to a Map instance.
549
+ * Uses first-wins semantics at equal confidence to match the WASM/JS extractor. */
550
+ function patchTypeMap(r) {
551
+ if (!r.typeMap) {
552
+ r.typeMap = new Map();
553
+ }
554
+ else if (!(r.typeMap instanceof Map)) {
555
+ const map = new Map();
556
+ for (const e of r.typeMap) {
557
+ if (!map.has(e.name)) {
558
+ map.set(e.name, { type: e.typeName, confidence: e.confidence ?? 0.9 });
559
+ }
560
+ }
561
+ r.typeMap = map;
562
+ }
563
+ }
564
+ /** Normalize native returnTypeMap array to a Map instance, keeping highest-confidence entry per key. */
565
+ function patchReturnTypeMap(r) {
566
+ if (!r.returnTypeMap || r.returnTypeMap instanceof Map)
567
+ return;
568
+ const map = new Map();
569
+ for (const e of r.returnTypeMap) {
570
+ const conf = e.confidence ?? 1.0;
571
+ const existing = map.get(e.name);
572
+ if (!existing || conf > existing.confidence) {
573
+ map.set(e.name, { type: e.typeName, confidence: conf });
574
+ }
575
+ }
576
+ r.returnTypeMap = map.size > 0 ? map : new Map();
577
+ }
578
+ /** Wrap bindingType into binding object for dataflow argFlows and mutations. */
579
+ /**
580
+ * Normalise a DataflowResult from the native Rust extractor to the VisitorArgFlow
581
+ * shape expected by the TypeScript dataflow analysis layer.
582
+ *
583
+ * The Rust `DataflowArgFlow` emits `bindingType: string | null` as a flat field.
584
+ * The TS analysis layer (`buildDataflowVerticesAndEdges`, `collectCallerStitchCandidates`)
585
+ * expects `binding: { type: string; index?: number }` on each argFlow/mutation entry.
586
+ * This normalisation must be applied whenever `extractDataflowAnalysis` is called
587
+ * outside the standard `patchNativeResult` pipeline.
588
+ */
589
+ export function patchDataflowResult(dataflow) {
590
+ if (dataflow.argFlows) {
591
+ for (const f of dataflow.argFlows) {
592
+ f.binding = f.bindingType ? { type: f.bindingType } : null;
593
+ }
594
+ }
595
+ if (dataflow.mutations) {
596
+ for (const m of dataflow.mutations) {
597
+ m.binding = m.bindingType ? { type: m.bindingType } : null;
598
+ }
599
+ }
600
+ }
601
+ function patchNativeResult(r) {
602
+ // lineCount: napi(js_name) emits "lineCount"; older binaries may emit "line_count"
603
+ r.lineCount = r.lineCount ?? r.line_count ?? null;
604
+ r._lineCount = r.lineCount;
605
+ if (r.definitions)
606
+ patchDefinitions(r.definitions);
607
+ if (r.imports)
608
+ patchImports(r.imports);
609
+ patchTypeMap(r);
610
+ patchReturnTypeMap(r);
611
+ if (r.dataflow)
612
+ patchDataflowResult(r.dataflow);
613
+ return r;
614
+ }
615
+ /**
616
+ * Declarative registry of all supported languages.
617
+ * Adding a new language requires only a new entry here + its extractor function.
618
+ */
619
+ export const LANGUAGE_REGISTRY = [
620
+ {
621
+ id: 'javascript',
622
+ extensions: ['.js', '.jsx', '.mjs', '.cjs'],
623
+ grammarFile: 'tree-sitter-javascript.wasm',
624
+ extractor: extractSymbols,
625
+ required: true,
626
+ },
627
+ {
628
+ id: 'typescript',
629
+ extensions: ['.ts'],
630
+ grammarFile: 'tree-sitter-typescript.wasm',
631
+ extractor: extractSymbols,
632
+ required: true,
633
+ },
634
+ {
635
+ id: 'tsx',
636
+ extensions: ['.tsx'],
637
+ grammarFile: 'tree-sitter-tsx.wasm',
638
+ extractor: extractSymbols,
639
+ required: true,
640
+ },
641
+ {
642
+ id: 'hcl',
643
+ extensions: ['.tf', '.hcl'],
644
+ grammarFile: 'tree-sitter-hcl.wasm',
645
+ extractor: extractHCLSymbols,
646
+ required: false,
647
+ },
648
+ {
649
+ id: 'python',
650
+ extensions: ['.py', '.pyi'],
651
+ grammarFile: 'tree-sitter-python.wasm',
652
+ extractor: extractPythonSymbols,
653
+ required: false,
654
+ },
655
+ {
656
+ id: 'go',
657
+ extensions: ['.go'],
658
+ grammarFile: 'tree-sitter-go.wasm',
659
+ extractor: extractGoSymbols,
660
+ required: false,
661
+ },
662
+ {
663
+ id: 'rust',
664
+ extensions: ['.rs'],
665
+ grammarFile: 'tree-sitter-rust.wasm',
666
+ extractor: extractRustSymbols,
667
+ required: false,
668
+ },
669
+ {
670
+ id: 'java',
671
+ extensions: ['.java'],
672
+ grammarFile: 'tree-sitter-java.wasm',
673
+ extractor: extractJavaSymbols,
674
+ required: false,
675
+ },
676
+ {
677
+ id: 'csharp',
678
+ extensions: ['.cs'],
679
+ grammarFile: 'tree-sitter-c_sharp.wasm',
680
+ extractor: extractCSharpSymbols,
681
+ required: false,
682
+ },
683
+ {
684
+ id: 'ruby',
685
+ extensions: ['.rb', '.rake', '.gemspec'],
686
+ grammarFile: 'tree-sitter-ruby.wasm',
687
+ extractor: extractRubySymbols,
688
+ required: false,
689
+ },
690
+ {
691
+ id: 'php',
692
+ extensions: ['.php', '.phtml'],
693
+ grammarFile: 'tree-sitter-php.wasm',
694
+ extractor: extractPHPSymbols,
695
+ required: false,
696
+ },
697
+ {
698
+ id: 'c',
699
+ extensions: ['.c', '.h'],
700
+ grammarFile: 'tree-sitter-c.wasm',
701
+ extractor: extractCSymbols,
702
+ required: false,
703
+ },
704
+ {
705
+ id: 'cpp',
706
+ extensions: ['.cpp', '.cc', '.cxx', '.hpp'],
707
+ grammarFile: 'tree-sitter-cpp.wasm',
708
+ extractor: extractCppSymbols,
709
+ required: false,
710
+ },
711
+ {
712
+ id: 'kotlin',
713
+ extensions: ['.kt', '.kts'],
714
+ grammarFile: 'tree-sitter-kotlin.wasm',
715
+ extractor: extractKotlinSymbols,
716
+ required: false,
717
+ },
718
+ {
719
+ id: 'swift',
720
+ extensions: ['.swift'],
721
+ grammarFile: 'tree-sitter-swift.wasm',
722
+ extractor: extractSwiftSymbols,
723
+ required: false,
724
+ },
725
+ {
726
+ id: 'scala',
727
+ extensions: ['.scala'],
728
+ grammarFile: 'tree-sitter-scala.wasm',
729
+ extractor: extractScalaSymbols,
730
+ required: false,
731
+ },
732
+ {
733
+ id: 'bash',
734
+ extensions: ['.sh', '.bash'],
735
+ grammarFile: 'tree-sitter-bash.wasm',
736
+ extractor: extractBashSymbols,
737
+ required: false,
738
+ },
739
+ {
740
+ id: 'elixir',
741
+ extensions: ['.ex', '.exs'],
742
+ grammarFile: 'tree-sitter-elixir.wasm',
743
+ extractor: extractElixirSymbols,
744
+ required: false,
745
+ },
746
+ {
747
+ id: 'lua',
748
+ extensions: ['.lua'],
749
+ grammarFile: 'tree-sitter-lua.wasm',
750
+ extractor: extractLuaSymbols,
751
+ required: false,
752
+ },
753
+ {
754
+ id: 'dart',
755
+ extensions: ['.dart'],
756
+ grammarFile: 'tree-sitter-dart.wasm',
757
+ extractor: extractDartSymbols,
758
+ required: false,
759
+ },
760
+ {
761
+ id: 'zig',
762
+ extensions: ['.zig'],
763
+ grammarFile: 'tree-sitter-zig.wasm',
764
+ extractor: extractZigSymbols,
765
+ required: false,
766
+ },
767
+ {
768
+ id: 'haskell',
769
+ extensions: ['.hs'],
770
+ grammarFile: 'tree-sitter-haskell.wasm',
771
+ extractor: extractHaskellSymbols,
772
+ required: false,
773
+ },
774
+ {
775
+ id: 'ocaml',
776
+ extensions: ['.ml'],
777
+ grammarFile: 'tree-sitter-ocaml.wasm',
778
+ extractor: extractOCamlSymbols,
779
+ required: false,
780
+ },
781
+ {
782
+ id: 'ocaml-interface',
783
+ extensions: ['.mli'],
784
+ grammarFile: 'tree-sitter-ocaml_interface.wasm',
785
+ extractor: extractOCamlSymbols,
786
+ required: false,
787
+ },
788
+ {
789
+ id: 'fsharp',
790
+ extensions: ['.fs', '.fsx'],
791
+ grammarFile: 'tree-sitter-fsharp.wasm',
792
+ extractor: extractFSharpSymbols,
793
+ required: false,
794
+ },
795
+ {
796
+ id: 'fsharp-signature',
797
+ extensions: ['.fsi'],
798
+ grammarFile: 'tree-sitter-fsharp_signature.wasm',
799
+ extractor: extractFSharpSymbols,
800
+ required: false,
801
+ },
802
+ {
803
+ id: 'gleam',
804
+ extensions: ['.gleam'],
805
+ grammarFile: 'tree-sitter-gleam.wasm',
806
+ extractor: extractGleamSymbols,
807
+ required: false,
808
+ },
809
+ {
810
+ id: 'clojure',
811
+ extensions: ['.clj', '.cljs', '.cljc'],
812
+ grammarFile: 'tree-sitter-clojure.wasm',
813
+ extractor: extractClojureSymbols,
814
+ required: false,
815
+ },
816
+ {
817
+ id: 'julia',
818
+ extensions: ['.jl'],
819
+ grammarFile: 'tree-sitter-julia.wasm',
820
+ extractor: extractJuliaSymbols,
821
+ required: false,
822
+ },
823
+ {
824
+ id: 'r',
825
+ extensions: ['.r', '.R'],
826
+ grammarFile: 'tree-sitter-r.wasm',
827
+ extractor: extractRSymbols,
828
+ required: false,
829
+ },
830
+ {
831
+ id: 'erlang',
832
+ extensions: ['.erl', '.hrl'],
833
+ grammarFile: 'tree-sitter-erlang.wasm',
834
+ extractor: extractErlangSymbols,
835
+ required: false,
836
+ },
837
+ {
838
+ id: 'solidity',
839
+ extensions: ['.sol'],
840
+ grammarFile: 'tree-sitter-solidity.wasm',
841
+ extractor: extractSoliditySymbols,
842
+ required: false,
843
+ },
844
+ {
845
+ id: 'objc',
846
+ extensions: ['.m'],
847
+ grammarFile: 'tree-sitter-objc.wasm',
848
+ extractor: extractObjCSymbols,
849
+ required: false,
850
+ },
851
+ {
852
+ id: 'cuda',
853
+ extensions: ['.cu', '.cuh'],
854
+ grammarFile: 'tree-sitter-cuda.wasm',
855
+ extractor: extractCudaSymbols,
856
+ required: false,
857
+ },
858
+ {
859
+ id: 'groovy',
860
+ extensions: ['.groovy', '.gvy'],
861
+ grammarFile: 'tree-sitter-groovy.wasm',
862
+ extractor: extractGroovySymbols,
863
+ required: false,
864
+ },
865
+ {
866
+ id: 'verilog',
867
+ extensions: ['.v', '.sv'],
868
+ grammarFile: 'tree-sitter-verilog.wasm',
869
+ extractor: extractVerilogSymbols,
870
+ required: false,
871
+ },
872
+ ];
873
+ const _extToLang = new Map();
874
+ for (const entry of LANGUAGE_REGISTRY) {
875
+ for (const ext of entry.extensions) {
876
+ _extToLang.set(ext, entry);
877
+ }
878
+ }
879
+ export const SUPPORTED_EXTENSIONS = new Set(_extToLang.keys());
880
+ /**
881
+ * WASM-based typeMap backfill for TS/TSX files parsed by the native engine.
882
+ * Serves two purposes:
883
+ * 1. Compatibility with older native binaries that don't emit typeMap (< 3.2.0).
884
+ * 2. Workaround for native parser scope-collision bugs — when the same variable
885
+ * name appears at multiple scopes, native type extraction can produce
886
+ * incorrect results. WASM's JS-based extractor handles scope traversal
887
+ * more accurately. TODO: Remove purpose (2) once the Rust extractor handles
888
+ * nested scopes correctly.
889
+ *
890
+ * Uses tree-sitter AST extraction instead of regex to avoid false positives from
891
+ * matches inside comments and string literals.
892
+ */
893
+ async function backfillTypeMap(filePath, source) {
894
+ let code = source;
895
+ if (!code) {
896
+ try {
897
+ code = fs.readFileSync(filePath, 'utf-8');
898
+ }
899
+ catch (e) {
900
+ debug(`backfillTypeMap: failed to read ${filePath}: ${toErrorMessage(e)}`);
901
+ return { typeMap: new Map(), backfilled: false };
902
+ }
903
+ }
904
+ const pool = getWasmWorkerPool();
905
+ // Extract-only — no visitor walk, we only need the typeMap from this pass.
906
+ const output = await pool.parse(filePath, code, EXTRACT_ONLY);
907
+ if (!output || output.typeMap.size === 0) {
908
+ return { typeMap: new Map(), backfilled: false };
909
+ }
910
+ return { typeMap: output.typeMap, backfilled: true };
911
+ }
912
+ /**
913
+ * WASM extraction helper: picks the right extractor based on file extension.
914
+ */
915
+ function wasmExtractSymbols(parsers, filePath, code) {
916
+ const parser = getParser(parsers, filePath);
917
+ if (!parser)
918
+ return null;
919
+ let tree;
920
+ try {
921
+ tree = parser.parse(code);
922
+ }
923
+ catch (e) {
924
+ warn(`Parse error in ${filePath}: ${e.message}`);
925
+ return null;
926
+ }
927
+ if (!tree)
928
+ return null;
929
+ const ext = path.extname(filePath);
930
+ const entry = _extToLang.get(ext);
931
+ if (!entry)
932
+ return null;
933
+ const query = _queryCache.get(entry.id) ?? undefined;
934
+ // Query (web-tree-sitter) is structurally compatible with TreeSitterQuery at runtime
935
+ let symbols;
936
+ try {
937
+ symbols = entry.extractor(tree, filePath, query);
938
+ }
939
+ catch (e) {
940
+ warn(`Extractor error in ${filePath}: ${e.message}`);
941
+ // Free WASM tree to prevent memory leak — web-tree-sitter trees are backed
942
+ // by WASM linear memory and are not garbage-collected automatically.
943
+ if (typeof tree.delete === 'function')
944
+ tree.delete();
945
+ return null;
946
+ }
947
+ return symbols ? { symbols, tree, langId: entry.id } : null;
948
+ }
949
+ /**
950
+ * Parse a single file and return normalized symbols.
951
+ */
952
+ export async function parseFileAuto(filePath, source, opts = {}) {
953
+ const { native } = resolveEngine(opts);
954
+ if (native) {
955
+ const result = native.parseFile(filePath, source, true, true);
956
+ if (!result)
957
+ return null;
958
+ const patched = patchNativeResult(result);
959
+ // Always backfill typeMap for TS/TSX from WASM — native parser's type
960
+ // extraction can produce incorrect scope-collision results. Non-TS files
961
+ // are skipped to stay consistent with the batch path (backfillTypeMapBatch).
962
+ if (TS_BACKFILL_EXTS.has(path.extname(filePath))) {
963
+ const { typeMap, backfilled } = await backfillTypeMap(filePath, source);
964
+ if (backfilled) {
965
+ patched.typeMap = typeMap;
966
+ patched._typeMapBackfilled = true;
967
+ }
968
+ }
969
+ return patched;
970
+ }
971
+ // WASM path — dispatch to isolated worker
972
+ const pool = getWasmWorkerPool();
973
+ return pool.parse(filePath, source, FULL_ANALYSIS);
974
+ }
975
+ /** Backfill typeMap via WASM for TS/TSX files parsed by the native engine. */
976
+ async function backfillTypeMapBatch(needsTypeMap, result) {
977
+ const tsFiles = needsTypeMap.filter(({ filePath }) => TS_BACKFILL_EXTS.has(path.extname(filePath)));
978
+ if (tsFiles.length === 0)
979
+ return;
980
+ const pool = getWasmWorkerPool();
981
+ for (const { filePath, relPath } of tsFiles) {
982
+ let code;
983
+ try {
984
+ code = fs.readFileSync(filePath, 'utf-8');
985
+ }
986
+ catch (e) {
987
+ debug(`batchExtract: cannot read ${filePath}: ${toErrorMessage(e)}`);
988
+ continue;
989
+ }
990
+ const output = await pool.parse(filePath, code, EXTRACT_ONLY);
991
+ if (!output || output.typeMap.size === 0)
992
+ continue;
993
+ const symbols = result.get(relPath);
994
+ if (!symbols)
995
+ continue;
996
+ symbols.typeMap = output.typeMap;
997
+ symbols._typeMapBackfilled = true;
998
+ }
999
+ }
1000
+ /**
1001
+ * Parse files via WASM engine, returning a Map<relPath, symbols>.
1002
+ *
1003
+ * Each file is dispatched to the WASM worker pool. The worker parses, extracts,
1004
+ * and runs all AST analyses (complexity, CFG, dataflow, ast-store) in its own
1005
+ * thread, returning fully pre-computed ExtractorOutput. V8 fatal errors from
1006
+ * tree-sitter WASM (#965) kill only the worker — the pool skips the file and
1007
+ * restarts the worker for the next one.
1008
+ *
1009
+ * `_tree` is NEVER set by this path. All downstream analyses operate on the
1010
+ * pre-computed `astNodes` / `dataflow` / `def.complexity` / `def.cfg` fields.
1011
+ */
1012
+ async function parseFilesWasm(filePaths, rootDir, analysis = FULL_ANALYSIS) {
1013
+ const result = new Map();
1014
+ const pool = getWasmWorkerPool();
1015
+ for (const filePath of filePaths) {
1016
+ if (!_extToLang.has(path.extname(filePath).toLowerCase()))
1017
+ continue;
1018
+ let code;
1019
+ try {
1020
+ code = fs.readFileSync(filePath, 'utf-8');
1021
+ }
1022
+ catch (err) {
1023
+ warn(`Skipping ${path.relative(rootDir, filePath)}: ${err.message}`);
1024
+ continue;
1025
+ }
1026
+ const output = await pool.parse(filePath, code, analysis);
1027
+ if (output) {
1028
+ const relPath = path.relative(rootDir, filePath).split(path.sep).join('/');
1029
+ result.set(relPath, output);
1030
+ }
1031
+ }
1032
+ return result;
1033
+ }
1034
+ /**
1035
+ * Files at or below this count use the inline parse path (no worker spawn).
1036
+ *
1037
+ * The worker pool exists for crash safety (#965): exotic (non-required) WASM
1038
+ * grammars can trigger uncatchable V8 fatal errors that would kill the main
1039
+ * process. Running them in a worker means only the worker dies; the pool
1040
+ * detects the exit, skips the file, respawns, and continues.
1041
+ *
1042
+ * JS/TS/TSX are required-tier grammars — they have never triggered the V8
1043
+ * fatal crash class and are safe to run inline. The primary hot caller
1044
+ * (this/super dispatch post-pass) exclusively handles JS/TS/TSX files and
1045
+ * measured ~55–64ms/file through the pool vs ~8–10ms/file inline (#1435);
1046
+ * IPC overhead scales linearly with file count, not amortised.
1047
+ *
1048
+ * The threshold is set high enough to keep typical this-dispatch batches
1049
+ * (≤ 18 files on the codegraph corpus) on the inline path, while still
1050
+ * routing truly large exotic-language drops (rare; typical HCL case is 4
1051
+ * files) through the pool for crash isolation. Exotic-language drops are
1052
+ * almost always well under this limit anyway, so they benefit from the
1053
+ * inline fast path too without meaningful crash risk increase.
1054
+ */
1055
+ const INLINE_BACKFILL_THRESHOLD = 32;
1056
+ /**
1057
+ * Inline WASM parse (no worker) for small file batches.
1058
+ *
1059
+ * Used by the engine-parity backfill path when the native engine drops a
1060
+ * handful of files (typically test fixtures). The worker pool's per-call
1061
+ * IPC + grammar-init overhead can cost 1–2s on slow CI runners — for a
1062
+ * 4-file backfill, that dwarfs the ~10ms of actual parse work.
1063
+ *
1064
+ * Returns symbols with `_tree` set so `runAnalyses` can run AST/CFG/dataflow
1065
+ * visitors via the unified walker (mirrors how WASM-engine results behaved
1066
+ * before the worker pool was introduced), unless `symbolsOnly` is true — in
1067
+ * that case `_tree` is not set, skipping all analysis visitor walks. Use
1068
+ * `symbolsOnly` when only definitions/calls/typeMap are needed (e.g. the
1069
+ * this/super dispatch post-pass) to avoid the analysis overhead on the inline
1070
+ * path, matching the optimization already applied to the worker-pool path.
1071
+ */
1072
+ async function parseFilesWasmInline(filePaths, rootDir, symbolsOnly = false) {
1073
+ const result = new Map();
1074
+ if (filePaths.length === 0)
1075
+ return result;
1076
+ const parsers = await ensureParsersForFiles(filePaths);
1077
+ for (const filePath of filePaths) {
1078
+ if (!_extToLang.has(path.extname(filePath).toLowerCase()))
1079
+ continue;
1080
+ let code;
1081
+ try {
1082
+ code = fs.readFileSync(filePath, 'utf-8');
1083
+ }
1084
+ catch (err) {
1085
+ warn(`Skipping ${path.relative(rootDir, filePath)}: ${err.message}`);
1086
+ continue;
1087
+ }
1088
+ const extracted = wasmExtractSymbols(parsers, filePath, code);
1089
+ if (!extracted)
1090
+ continue;
1091
+ const relPath = path.relative(rootDir, filePath).split(path.sep).join('/');
1092
+ const symbols = extracted.symbols;
1093
+ // When symbolsOnly=true, skip setting _tree so runAnalyses does not run
1094
+ // AST/complexity/CFG/dataflow visitor walks — only definitions/calls/typeMap
1095
+ // are needed by callers like the this/super dispatch post-pass.
1096
+ if (!symbolsOnly) {
1097
+ symbols._tree = extracted.tree;
1098
+ }
1099
+ else if (typeof extracted.tree?.delete === 'function') {
1100
+ // Free the WASM-backed tree immediately — web-tree-sitter trees are backed
1101
+ // by WASM linear memory and require explicit disposal. When symbolsOnly is
1102
+ // true the tree is never stored anywhere, so we must delete it here to
1103
+ // avoid leaking WASM heap on every incremental rebuild.
1104
+ extracted.tree.delete();
1105
+ }
1106
+ symbols._langId = extracted.langId;
1107
+ result.set(relPath, symbols);
1108
+ }
1109
+ return result;
1110
+ }
1111
+ /**
1112
+ * Backfill helper: small batches use the inline (main-thread) path; larger
1113
+ * batches keep the worker-pool isolation against tree-sitter WASM crashes
1114
+ * (#965). See INLINE_BACKFILL_THRESHOLD for threshold rationale.
1115
+ *
1116
+ * `opts.symbolsOnly` skips the AST/complexity/CFG/dataflow visitors in the
1117
+ * worker (and their result serialization across the thread boundary) for
1118
+ * callers that only consume definitions/calls/typeMap — the native
1119
+ * orchestrator's this-dispatch post-pass. Callers that ingest the files into
1120
+ * the DB (dropped-language backfill) must keep
1121
+ * the default full analysis.
1122
+ */
1123
+ export async function parseFilesWasmForBackfill(filePaths, rootDir, opts = {}) {
1124
+ if (filePaths.length <= INLINE_BACKFILL_THRESHOLD) {
1125
+ return parseFilesWasmInline(filePaths, rootDir, opts.symbolsOnly);
1126
+ }
1127
+ return parseFilesWasm(filePaths, rootDir, opts.symbolsOnly ? EXTRACT_ONLY : FULL_ANALYSIS);
1128
+ }
1129
+ /**
1130
+ * Run the native engine over `filePaths` and ingest the results into `result`.
1131
+ * Returns the set of file paths the native engine successfully parsed and the
1132
+ * TS/TSX files that need a typeMap backfill pass.
1133
+ */
1134
+ function ingestNativeResults(native, filePaths, rootDir, result) {
1135
+ // Always extract all analysis data (dataflow + AST nodes) during native parse.
1136
+ // This eliminates the need for any downstream WASM re-parse or native standalone calls.
1137
+ const nativeResults = native.parseFilesFull
1138
+ ? native.parseFilesFull(filePaths, rootDir)
1139
+ : native.parseFiles(filePaths, rootDir, true, true);
1140
+ const needsTypeMap = [];
1141
+ const nativeParsed = new Set();
1142
+ for (const r of nativeResults) {
1143
+ if (!r)
1144
+ continue;
1145
+ nativeParsed.add(r.file);
1146
+ const patched = patchNativeResult(r);
1147
+ const relPath = path.relative(rootDir, r.file).split(path.sep).join('/');
1148
+ result.set(relPath, patched);
1149
+ // Always backfill TS/TSX type maps from WASM — the native parser's type
1150
+ // extraction can produce incorrect results when the same variable name
1151
+ // appears at multiple scopes (e.g. `node: TreeSitterNode` in one function
1152
+ // vs `node: NodeRow` in another). The WASM JS extractor handles scope
1153
+ // traversal order more accurately.
1154
+ if (TS_BACKFILL_EXTS.has(path.extname(r.file))) {
1155
+ needsTypeMap.push({ filePath: r.file, relPath });
1156
+ }
1157
+ }
1158
+ return { nativeParsed, needsTypeMap };
1159
+ }
1160
+ /**
1161
+ * Engine parity: native may silently drop files whose extensions are in
1162
+ * SUPPORTED_EXTENSIONS (because a WASM grammar exists) but whose Rust
1163
+ * extractor/grammar is missing or fails. WASM handles these — fall back so
1164
+ * both engines process the same file set (#967). Restrict to installed WASM
1165
+ * grammars so we don't warn about files that neither engine can parse.
1166
+ */
1167
+ async function backfillNativeDrops(filePaths, nativeParsed, rootDir, result) {
1168
+ const installedExts = getInstalledWasmExtensions();
1169
+ const dropped = filePaths.filter((f) => !nativeParsed.has(f) && installedExts.has(path.extname(f).toLowerCase()));
1170
+ if (dropped.length === 0)
1171
+ return;
1172
+ warn(`Native engine dropped ${dropped.length} file(s); falling back to WASM for parity`);
1173
+ const wasmResults = await parseFilesWasmForBackfill(dropped, rootDir);
1174
+ for (const [relPath, symbols] of wasmResults) {
1175
+ result.set(relPath, symbols);
1176
+ }
1177
+ }
1178
+ /**
1179
+ * Parse multiple files in bulk and return a Map<relPath, symbols>.
1180
+ */
1181
+ export async function parseFilesAuto(filePaths, rootDir, opts = {}) {
1182
+ const { native } = resolveEngine(opts);
1183
+ if (!native)
1184
+ return parseFilesWasm(filePaths, rootDir);
1185
+ const result = new Map();
1186
+ const { nativeParsed, needsTypeMap } = ingestNativeResults(native, filePaths, rootDir, result);
1187
+ if (needsTypeMap.length > 0) {
1188
+ await backfillTypeMapBatch(needsTypeMap, result);
1189
+ }
1190
+ await backfillNativeDrops(filePaths, nativeParsed, rootDir, result);
1191
+ return result;
1192
+ }
1193
+ /**
1194
+ * Report which engine is active.
1195
+ */
1196
+ export function getActiveEngine(opts = {}) {
1197
+ const { name, native } = resolveEngine(opts);
1198
+ const binaryVersion = native && typeof native.engineVersion === 'function' ? native.engineVersion() : null;
1199
+ // The display version prefers the platform package.json so the "Using native
1200
+ // engine (vX)" log matches the npm release the user installed. The Rust
1201
+ // orchestrator's check_version_mismatch compares against CARGO_PKG_VERSION
1202
+ // (the binary's own value), so build_meta writes must use `binaryVersion`,
1203
+ // not this display value — see pipeline.ts and finalize.ts (#1066).
1204
+ let version = binaryVersion;
1205
+ if (native) {
1206
+ try {
1207
+ version = getNativePackageVersion() ?? version;
1208
+ }
1209
+ catch (e) {
1210
+ debug(`getNativePackageVersion failed: ${e.message}`);
1211
+ }
1212
+ }
1213
+ return { name, version, binaryVersion };
1214
+ }
1215
+ /**
1216
+ * Create a native ParseTreeCache for incremental parsing.
1217
+ * Returns null if the native engine is unavailable (WASM fallback).
1218
+ */
1219
+ export function createParseTreeCache() {
1220
+ const native = loadNative();
1221
+ if (!native?.ParseTreeCache)
1222
+ return null;
1223
+ return new native.ParseTreeCache();
1224
+ }
1225
+ /**
1226
+ * Parse a file incrementally using the cache, or fall back to full parse.
1227
+ */
1228
+ export async function parseFileIncremental(cache, filePath, source, opts = {}) {
1229
+ if (cache) {
1230
+ const result = cache.parseFile(filePath, source);
1231
+ if (!result)
1232
+ return null;
1233
+ const patched = patchNativeResult(result);
1234
+ // Always backfill typeMap for TS/TSX from WASM (see parseFileAuto comment).
1235
+ if (TS_BACKFILL_EXTS.has(path.extname(filePath))) {
1236
+ const { typeMap, backfilled } = await backfillTypeMap(filePath, source);
1237
+ if (backfilled) {
1238
+ patched.typeMap = typeMap;
1239
+ patched._typeMapBackfilled = true;
1240
+ }
1241
+ }
1242
+ return patched;
1243
+ }
1244
+ return parseFileAuto(filePath, source, opts);
1245
+ }
1246
+ //# sourceMappingURL=parser.js.map