@monoes/monograph 1.2.0 → 1.2.1

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 (460) hide show
  1. package/__tests__/mcp-tools/cypher.test.ts +10 -6
  2. package/__tests__/mcp-tools/detect-changes.test.ts +14 -11
  3. package/__tests__/pipeline/phases/wildcard-synthesis.test.ts +4 -4
  4. package/__tests__/search/embed-batch-config.test.ts +7 -7
  5. package/__tests__/search/hybrid-query.test.ts +3 -1
  6. package/__tests__/web/api.test.ts +1 -1
  7. package/dist/src/analysis/churn-cache.d.ts.map +1 -1
  8. package/dist/src/analysis/churn-cache.js +19 -6
  9. package/dist/src/analysis/churn-cache.js.map +1 -1
  10. package/dist/src/analysis/churn-trend.d.ts.map +1 -1
  11. package/dist/src/analysis/churn-trend.js +50 -6
  12. package/dist/src/analysis/churn-trend.js.map +1 -1
  13. package/dist/src/analysis/cluster-quality.d.ts +3 -0
  14. package/dist/src/analysis/cluster-quality.d.ts.map +1 -1
  15. package/dist/src/analysis/cluster-quality.js +18 -12
  16. package/dist/src/analysis/cluster-quality.js.map +1 -1
  17. package/dist/src/analysis/coverage-gaps.d.ts +3 -0
  18. package/dist/src/analysis/coverage-gaps.d.ts.map +1 -1
  19. package/dist/src/analysis/coverage-gaps.js +40 -1
  20. package/dist/src/analysis/coverage-gaps.js.map +1 -1
  21. package/dist/src/analysis/dep-classification.d.ts +2 -0
  22. package/dist/src/analysis/dep-classification.d.ts.map +1 -1
  23. package/dist/src/analysis/dep-classification.js +30 -0
  24. package/dist/src/analysis/dep-classification.js.map +1 -1
  25. package/dist/src/analysis/dependency-health.d.ts +4 -0
  26. package/dist/src/analysis/dependency-health.d.ts.map +1 -1
  27. package/dist/src/analysis/dependency-health.js +28 -0
  28. package/dist/src/analysis/dependency-health.js.map +1 -1
  29. package/dist/src/analysis/duplicate-exports.d.ts +9 -5
  30. package/dist/src/analysis/duplicate-exports.d.ts.map +1 -1
  31. package/dist/src/analysis/duplicate-exports.js +26 -2
  32. package/dist/src/analysis/duplicate-exports.js.map +1 -1
  33. package/dist/src/analysis/feature-flags.d.ts.map +1 -1
  34. package/dist/src/analysis/feature-flags.js +36 -17
  35. package/dist/src/analysis/feature-flags.js.map +1 -1
  36. package/dist/src/analysis/node-similarity.d.ts +19 -0
  37. package/dist/src/analysis/node-similarity.d.ts.map +1 -1
  38. package/dist/src/analysis/node-similarity.js +34 -3
  39. package/dist/src/analysis/node-similarity.js.map +1 -1
  40. package/dist/src/analysis/private-type-leaks.d.ts +4 -0
  41. package/dist/src/analysis/private-type-leaks.d.ts.map +1 -1
  42. package/dist/src/analysis/private-type-leaks.js +43 -2
  43. package/dist/src/analysis/private-type-leaks.js.map +1 -1
  44. package/dist/src/analysis/project-state.d.ts +2 -0
  45. package/dist/src/analysis/project-state.d.ts.map +1 -1
  46. package/dist/src/analysis/project-state.js +18 -7
  47. package/dist/src/analysis/project-state.js.map +1 -1
  48. package/dist/src/analysis/suppressions.d.ts.map +1 -1
  49. package/dist/src/analysis/suppressions.js +3 -1
  50. package/dist/src/analysis/suppressions.js.map +1 -1
  51. package/dist/src/analysis/trace.d.ts +5 -3
  52. package/dist/src/analysis/trace.d.ts.map +1 -1
  53. package/dist/src/analysis/trace.js +59 -53
  54. package/dist/src/analysis/trace.js.map +1 -1
  55. package/dist/src/analysis/unused-class-members.d.ts.map +1 -1
  56. package/dist/src/analysis/unused-class-members.js +7 -1
  57. package/dist/src/analysis/unused-class-members.js.map +1 -1
  58. package/dist/src/analysis/worker-pool.d.ts +3 -0
  59. package/dist/src/analysis/worker-pool.d.ts.map +1 -1
  60. package/dist/src/analysis/worker-pool.js +30 -8
  61. package/dist/src/analysis/worker-pool.js.map +1 -1
  62. package/dist/src/cli/augment.d.ts.map +1 -1
  63. package/dist/src/cli/augment.js +10 -3
  64. package/dist/src/cli/augment.js.map +1 -1
  65. package/dist/src/export/sarif.js +5 -5
  66. package/dist/src/export/sarif.js.map +1 -1
  67. package/dist/src/graph/analyzer.d.ts.map +1 -1
  68. package/dist/src/graph/analyzer.js +17 -2
  69. package/dist/src/graph/analyzer.js.map +1 -1
  70. package/dist/src/graph/author-analytics.d.ts +2 -0
  71. package/dist/src/graph/author-analytics.d.ts.map +1 -1
  72. package/dist/src/graph/author-analytics.js +39 -5
  73. package/dist/src/graph/author-analytics.js.map +1 -1
  74. package/dist/src/graph/baseline.d.ts +5 -0
  75. package/dist/src/graph/baseline.d.ts.map +1 -1
  76. package/dist/src/graph/baseline.js +65 -18
  77. package/dist/src/graph/baseline.js.map +1 -1
  78. package/dist/src/graph/clone-detector.d.ts.map +1 -1
  79. package/dist/src/graph/clone-detector.js +19 -33
  80. package/dist/src/graph/clone-detector.js.map +1 -1
  81. package/dist/src/graph/clone-families.d.ts +2 -0
  82. package/dist/src/graph/clone-families.d.ts.map +1 -1
  83. package/dist/src/graph/clone-families.js +38 -10
  84. package/dist/src/graph/clone-families.js.map +1 -1
  85. package/dist/src/graph/codeowners-extended.d.ts +17 -0
  86. package/dist/src/graph/codeowners-extended.d.ts.map +1 -1
  87. package/dist/src/graph/codeowners-extended.js +42 -0
  88. package/dist/src/graph/codeowners-extended.js.map +1 -1
  89. package/dist/src/graph/codeowners-gitlab.d.ts +21 -0
  90. package/dist/src/graph/codeowners-gitlab.d.ts.map +1 -1
  91. package/dist/src/graph/codeowners-gitlab.js +37 -0
  92. package/dist/src/graph/codeowners-gitlab.js.map +1 -1
  93. package/dist/src/graph/codeowners.d.ts +10 -0
  94. package/dist/src/graph/codeowners.d.ts.map +1 -1
  95. package/dist/src/graph/codeowners.js +24 -2
  96. package/dist/src/graph/codeowners.js.map +1 -1
  97. package/dist/src/graph/complexity.d.ts +10 -0
  98. package/dist/src/graph/complexity.d.ts.map +1 -1
  99. package/dist/src/graph/complexity.js +93 -43
  100. package/dist/src/graph/complexity.js.map +1 -1
  101. package/dist/src/graph/cross-reference-findings.d.ts.map +1 -1
  102. package/dist/src/graph/cross-reference-findings.js +19 -2
  103. package/dist/src/graph/cross-reference-findings.js.map +1 -1
  104. package/dist/src/graph/cross-reference.d.ts +4 -0
  105. package/dist/src/graph/cross-reference.d.ts.map +1 -1
  106. package/dist/src/graph/cross-reference.js +23 -0
  107. package/dist/src/graph/cross-reference.js.map +1 -1
  108. package/dist/src/graph/cycle-detection.d.ts +2 -0
  109. package/dist/src/graph/cycle-detection.d.ts.map +1 -1
  110. package/dist/src/graph/cycle-detection.js +26 -3
  111. package/dist/src/graph/cycle-detection.js.map +1 -1
  112. package/dist/src/graph/cycles.d.ts +11 -3
  113. package/dist/src/graph/cycles.d.ts.map +1 -1
  114. package/dist/src/graph/cycles.js +121 -83
  115. package/dist/src/graph/cycles.js.map +1 -1
  116. package/dist/src/graph/dead-code.d.ts +23 -0
  117. package/dist/src/graph/dead-code.d.ts.map +1 -1
  118. package/dist/src/graph/dead-code.js +53 -13
  119. package/dist/src/graph/dead-code.js.map +1 -1
  120. package/dist/src/graph/dependency-closure.d.ts.map +1 -1
  121. package/dist/src/graph/dependency-closure.js +20 -4
  122. package/dist/src/graph/dependency-closure.js.map +1 -1
  123. package/dist/src/graph/dfs.d.ts +14 -0
  124. package/dist/src/graph/dfs.d.ts.map +1 -1
  125. package/dist/src/graph/dfs.js +61 -0
  126. package/dist/src/graph/dfs.js.map +1 -1
  127. package/dist/src/graph/duplication-stats.d.ts.map +1 -1
  128. package/dist/src/graph/duplication-stats.js +19 -3
  129. package/dist/src/graph/duplication-stats.js.map +1 -1
  130. package/dist/src/graph/edge-filter.d.ts +2 -0
  131. package/dist/src/graph/edge-filter.d.ts.map +1 -1
  132. package/dist/src/graph/edge-filter.js +26 -12
  133. package/dist/src/graph/edge-filter.js.map +1 -1
  134. package/dist/src/graph/health-score.d.ts +8 -0
  135. package/dist/src/graph/health-score.d.ts.map +1 -1
  136. package/dist/src/graph/health-score.js +48 -17
  137. package/dist/src/graph/health-score.js.map +1 -1
  138. package/dist/src/graph/hotspots.d.ts +7 -0
  139. package/dist/src/graph/hotspots.d.ts.map +1 -1
  140. package/dist/src/graph/hotspots.js +50 -5
  141. package/dist/src/graph/hotspots.js.map +1 -1
  142. package/dist/src/graph/import-chain.d.ts +17 -1
  143. package/dist/src/graph/import-chain.d.ts.map +1 -1
  144. package/dist/src/graph/import-chain.js +68 -19
  145. package/dist/src/graph/import-chain.js.map +1 -1
  146. package/dist/src/graph/loader.d.ts.map +1 -1
  147. package/dist/src/graph/loader.js +9 -10
  148. package/dist/src/graph/loader.js.map +1 -1
  149. package/dist/src/graph/maintainability.d.ts +8 -0
  150. package/dist/src/graph/maintainability.d.ts.map +1 -1
  151. package/dist/src/graph/maintainability.js +65 -10
  152. package/dist/src/graph/maintainability.js.map +1 -1
  153. package/dist/src/graph/mirrored-dirs.d.ts +4 -0
  154. package/dist/src/graph/mirrored-dirs.d.ts.map +1 -1
  155. package/dist/src/graph/mirrored-dirs.js +48 -13
  156. package/dist/src/graph/mirrored-dirs.js.map +1 -1
  157. package/dist/src/graph/narrowing.d.ts +15 -0
  158. package/dist/src/graph/narrowing.d.ts.map +1 -1
  159. package/dist/src/graph/narrowing.js +33 -0
  160. package/dist/src/graph/narrowing.js.map +1 -1
  161. package/dist/src/graph/node-search.d.ts +3 -0
  162. package/dist/src/graph/node-search.d.ts.map +1 -1
  163. package/dist/src/graph/node-search.js +37 -4
  164. package/dist/src/graph/node-search.js.map +1 -1
  165. package/dist/src/graph/normalize-id.d.ts +4 -0
  166. package/dist/src/graph/normalize-id.d.ts.map +1 -1
  167. package/dist/src/graph/normalize-id.js +25 -2
  168. package/dist/src/graph/normalize-id.js.map +1 -1
  169. package/dist/src/graph/pagerank.d.ts +7 -0
  170. package/dist/src/graph/pagerank.d.ts.map +1 -1
  171. package/dist/src/graph/pagerank.js +49 -2
  172. package/dist/src/graph/pagerank.js.map +1 -1
  173. package/dist/src/graph/prune.d.ts +31 -0
  174. package/dist/src/graph/prune.d.ts.map +1 -1
  175. package/dist/src/graph/prune.js +65 -0
  176. package/dist/src/graph/prune.js.map +1 -1
  177. package/dist/src/graph/regex-search.d.ts +10 -2
  178. package/dist/src/graph/regex-search.d.ts.map +1 -1
  179. package/dist/src/graph/regex-search.js +33 -4
  180. package/dist/src/graph/regex-search.js.map +1 -1
  181. package/dist/src/graph/regression.d.ts +5 -0
  182. package/dist/src/graph/regression.d.ts.map +1 -1
  183. package/dist/src/graph/regression.js +45 -23
  184. package/dist/src/graph/regression.js.map +1 -1
  185. package/dist/src/graph/ripple-impact.d.ts +27 -0
  186. package/dist/src/graph/ripple-impact.d.ts.map +1 -1
  187. package/dist/src/graph/ripple-impact.js +55 -7
  188. package/dist/src/graph/ripple-impact.js.map +1 -1
  189. package/dist/src/graph/risk-profile.d.ts +7 -0
  190. package/dist/src/graph/risk-profile.d.ts.map +1 -1
  191. package/dist/src/graph/risk-profile.js +82 -48
  192. package/dist/src/graph/risk-profile.js.map +1 -1
  193. package/dist/src/graph/shingle-filter.d.ts.map +1 -1
  194. package/dist/src/graph/shingle-filter.js +25 -26
  195. package/dist/src/graph/shingle-filter.js.map +1 -1
  196. package/dist/src/graph/statistics.d.ts +19 -0
  197. package/dist/src/graph/statistics.d.ts.map +1 -1
  198. package/dist/src/graph/statistics.js +53 -40
  199. package/dist/src/graph/statistics.js.map +1 -1
  200. package/dist/src/graph/stats.d.ts +2 -0
  201. package/dist/src/graph/stats.d.ts.map +1 -1
  202. package/dist/src/graph/stats.js +54 -8
  203. package/dist/src/graph/stats.js.map +1 -1
  204. package/dist/src/graph/subgraph.d.ts +5 -0
  205. package/dist/src/graph/subgraph.d.ts.map +1 -1
  206. package/dist/src/graph/subgraph.js +73 -9
  207. package/dist/src/graph/subgraph.js.map +1 -1
  208. package/dist/src/graph/topo-sort.d.ts +15 -0
  209. package/dist/src/graph/topo-sort.d.ts.map +1 -1
  210. package/dist/src/graph/topo-sort.js +83 -10
  211. package/dist/src/graph/topo-sort.js.map +1 -1
  212. package/dist/src/graph/wcc.d.ts +29 -0
  213. package/dist/src/graph/wcc.d.ts.map +1 -1
  214. package/dist/src/graph/wcc.js +122 -39
  215. package/dist/src/graph/wcc.js.map +1 -1
  216. package/dist/src/index.js +1 -1
  217. package/dist/src/index.js.map +1 -1
  218. package/dist/src/mcp-tools/api-impact.d.ts.map +1 -1
  219. package/dist/src/mcp-tools/api-impact.js +13 -6
  220. package/dist/src/mcp-tools/api-impact.js.map +1 -1
  221. package/dist/src/mcp-tools/context.d.ts.map +1 -1
  222. package/dist/src/mcp-tools/context.js +19 -29
  223. package/dist/src/mcp-tools/context.js.map +1 -1
  224. package/dist/src/mcp-tools/cypher.d.ts +11 -0
  225. package/dist/src/mcp-tools/cypher.d.ts.map +1 -1
  226. package/dist/src/mcp-tools/cypher.js +13 -1
  227. package/dist/src/mcp-tools/cypher.js.map +1 -1
  228. package/dist/src/mcp-tools/detect-changes.d.ts.map +1 -1
  229. package/dist/src/mcp-tools/detect-changes.js +35 -20
  230. package/dist/src/mcp-tools/detect-changes.js.map +1 -1
  231. package/dist/src/mcp-tools/explain.d.ts.map +1 -1
  232. package/dist/src/mcp-tools/explain.js +4 -1
  233. package/dist/src/mcp-tools/explain.js.map +1 -1
  234. package/dist/src/mcp-tools/graph-query.d.ts +2 -0
  235. package/dist/src/mcp-tools/graph-query.d.ts.map +1 -1
  236. package/dist/src/mcp-tools/graph-query.js +20 -3
  237. package/dist/src/mcp-tools/graph-query.js.map +1 -1
  238. package/dist/src/mcp-tools/group-list.d.ts +1 -0
  239. package/dist/src/mcp-tools/group-list.d.ts.map +1 -1
  240. package/dist/src/mcp-tools/group-list.js +7 -9
  241. package/dist/src/mcp-tools/group-list.js.map +1 -1
  242. package/dist/src/mcp-tools/impact.d.ts.map +1 -1
  243. package/dist/src/mcp-tools/impact.js +20 -59
  244. package/dist/src/mcp-tools/impact.js.map +1 -1
  245. package/dist/src/mcp-tools/neighbors.d.ts.map +1 -1
  246. package/dist/src/mcp-tools/neighbors.js +24 -33
  247. package/dist/src/mcp-tools/neighbors.js.map +1 -1
  248. package/dist/src/mcp-tools/query.d.ts +2 -0
  249. package/dist/src/mcp-tools/query.d.ts.map +1 -1
  250. package/dist/src/mcp-tools/query.js +1 -0
  251. package/dist/src/mcp-tools/query.js.map +1 -1
  252. package/dist/src/mcp-tools/rename.d.ts.map +1 -1
  253. package/dist/src/mcp-tools/rename.js +12 -7
  254. package/dist/src/mcp-tools/rename.js.map +1 -1
  255. package/dist/src/mcp-tools/route-map.d.ts.map +1 -1
  256. package/dist/src/mcp-tools/route-map.js +19 -23
  257. package/dist/src/mcp-tools/route-map.js.map +1 -1
  258. package/dist/src/mcp-tools/shape-check.d.ts.map +1 -1
  259. package/dist/src/mcp-tools/shape-check.js +17 -13
  260. package/dist/src/mcp-tools/shape-check.js.map +1 -1
  261. package/dist/src/parsers/loader.js +6 -5
  262. package/dist/src/parsers/loader.js.map +1 -1
  263. package/dist/src/pipeline/cluster-only.d.ts.map +1 -1
  264. package/dist/src/pipeline/cluster-only.js +8 -4
  265. package/dist/src/pipeline/cluster-only.js.map +1 -1
  266. package/dist/src/pipeline/orchestrator.d.ts.map +1 -1
  267. package/dist/src/pipeline/orchestrator.js +19 -0
  268. package/dist/src/pipeline/orchestrator.js.map +1 -1
  269. package/dist/src/pipeline/phases/boundary.d.ts +2 -0
  270. package/dist/src/pipeline/phases/boundary.d.ts.map +1 -1
  271. package/dist/src/pipeline/phases/boundary.js +31 -2
  272. package/dist/src/pipeline/phases/boundary.js.map +1 -1
  273. package/dist/src/pipeline/phases/communities.d.ts +14 -0
  274. package/dist/src/pipeline/phases/communities.d.ts.map +1 -1
  275. package/dist/src/pipeline/phases/communities.js +58 -5
  276. package/dist/src/pipeline/phases/communities.js.map +1 -1
  277. package/dist/src/pipeline/phases/contextual-proximity.d.ts.map +1 -1
  278. package/dist/src/pipeline/phases/contextual-proximity.js +21 -14
  279. package/dist/src/pipeline/phases/contextual-proximity.js.map +1 -1
  280. package/dist/src/pipeline/phases/cross-file.d.ts.map +1 -1
  281. package/dist/src/pipeline/phases/cross-file.js +35 -14
  282. package/dist/src/pipeline/phases/cross-file.js.map +1 -1
  283. package/dist/src/pipeline/phases/field-access.d.ts.map +1 -1
  284. package/dist/src/pipeline/phases/field-access.js +9 -4
  285. package/dist/src/pipeline/phases/field-access.js.map +1 -1
  286. package/dist/src/pipeline/phases/god-nodes.d.ts +4 -0
  287. package/dist/src/pipeline/phases/god-nodes.d.ts.map +1 -1
  288. package/dist/src/pipeline/phases/god-nodes.js +43 -9
  289. package/dist/src/pipeline/phases/god-nodes.js.map +1 -1
  290. package/dist/src/pipeline/phases/import-resolver.d.ts +11 -0
  291. package/dist/src/pipeline/phases/import-resolver.d.ts.map +1 -1
  292. package/dist/src/pipeline/phases/import-resolver.js +34 -7
  293. package/dist/src/pipeline/phases/import-resolver.js.map +1 -1
  294. package/dist/src/pipeline/phases/leiden.d.ts.map +1 -1
  295. package/dist/src/pipeline/phases/leiden.js +27 -19
  296. package/dist/src/pipeline/phases/leiden.js.map +1 -1
  297. package/dist/src/pipeline/phases/markdown.d.ts.map +1 -1
  298. package/dist/src/pipeline/phases/markdown.js +10 -5
  299. package/dist/src/pipeline/phases/markdown.js.map +1 -1
  300. package/dist/src/pipeline/phases/pdf-parse.d.ts.map +1 -1
  301. package/dist/src/pipeline/phases/pdf-parse.js +18 -3
  302. package/dist/src/pipeline/phases/pdf-parse.js.map +1 -1
  303. package/dist/src/pipeline/phases/processes.d.ts.map +1 -1
  304. package/dist/src/pipeline/phases/processes.js +26 -9
  305. package/dist/src/pipeline/phases/processes.js.map +1 -1
  306. package/dist/src/pipeline/phases/re-export-propagation.d.ts.map +1 -1
  307. package/dist/src/pipeline/phases/re-export-propagation.js +33 -14
  308. package/dist/src/pipeline/phases/re-export-propagation.js.map +1 -1
  309. package/dist/src/pipeline/phases/reachability.d.ts.map +1 -1
  310. package/dist/src/pipeline/phases/reachability.js +42 -26
  311. package/dist/src/pipeline/phases/reachability.js.map +1 -1
  312. package/dist/src/pipeline/phases/routes.d.ts.map +1 -1
  313. package/dist/src/pipeline/phases/routes.js +30 -21
  314. package/dist/src/pipeline/phases/routes.js.map +1 -1
  315. package/dist/src/pipeline/phases/scope-resolution.d.ts.map +1 -1
  316. package/dist/src/pipeline/phases/scope-resolution.js +93 -63
  317. package/dist/src/pipeline/phases/scope-resolution.js.map +1 -1
  318. package/dist/src/pipeline/runner.d.ts +4 -0
  319. package/dist/src/pipeline/runner.d.ts.map +1 -1
  320. package/dist/src/pipeline/runner.js +30 -11
  321. package/dist/src/pipeline/runner.js.map +1 -1
  322. package/dist/src/query/cypher-parser.d.ts +20 -0
  323. package/dist/src/query/cypher-parser.d.ts.map +1 -1
  324. package/dist/src/query/cypher-parser.js +73 -0
  325. package/dist/src/query/cypher-parser.js.map +1 -1
  326. package/dist/src/search/embed-batch.d.ts.map +1 -1
  327. package/dist/src/search/embed-batch.js +4 -1
  328. package/dist/src/search/embed-batch.js.map +1 -1
  329. package/dist/src/search/hybrid-query.d.ts +4 -0
  330. package/dist/src/search/hybrid-query.d.ts.map +1 -1
  331. package/dist/src/search/hybrid-query.js +5 -1
  332. package/dist/src/search/hybrid-query.js.map +1 -1
  333. package/dist/src/staleness/git-staleness.js +3 -3
  334. package/dist/src/staleness/git-staleness.js.map +1 -1
  335. package/dist/src/storage/db.d.ts.map +1 -1
  336. package/dist/src/storage/db.js +12 -0
  337. package/dist/src/storage/db.js.map +1 -1
  338. package/dist/src/storage/edge-store.d.ts +2 -0
  339. package/dist/src/storage/edge-store.d.ts.map +1 -1
  340. package/dist/src/storage/edge-store.js +26 -1
  341. package/dist/src/storage/edge-store.js.map +1 -1
  342. package/dist/src/storage/embedding-store.d.ts +16 -0
  343. package/dist/src/storage/embedding-store.d.ts.map +1 -1
  344. package/dist/src/storage/embedding-store.js +26 -2
  345. package/dist/src/storage/embedding-store.js.map +1 -1
  346. package/dist/src/storage/file-cache.d.ts +5 -0
  347. package/dist/src/storage/file-cache.d.ts.map +1 -1
  348. package/dist/src/storage/file-cache.js +35 -9
  349. package/dist/src/storage/file-cache.js.map +1 -1
  350. package/dist/src/storage/fts-store.d.ts +4 -0
  351. package/dist/src/storage/fts-store.d.ts.map +1 -1
  352. package/dist/src/storage/fts-store.js +8 -3
  353. package/dist/src/storage/fts-store.js.map +1 -1
  354. package/dist/src/storage/node-store.d.ts +2 -0
  355. package/dist/src/storage/node-store.d.ts.map +1 -1
  356. package/dist/src/storage/node-store.js +28 -1
  357. package/dist/src/storage/node-store.js.map +1 -1
  358. package/dist/tsconfig.tsbuildinfo +1 -1
  359. package/package.json +1 -1
  360. package/src/__tests__/pipeline/runner.parallel.test.ts +2 -2
  361. package/src/analysis/churn-cache.ts +18 -7
  362. package/src/analysis/churn-trend.ts +35 -6
  363. package/src/analysis/cluster-quality.ts +20 -11
  364. package/src/analysis/coverage-gaps.ts +44 -1
  365. package/src/analysis/dep-classification.ts +34 -0
  366. package/src/analysis/dependency-health.ts +25 -0
  367. package/src/analysis/duplicate-exports.ts +40 -4
  368. package/src/analysis/feature-flags.ts +37 -17
  369. package/src/analysis/node-similarity.ts +45 -4
  370. package/src/analysis/private-type-leaks.ts +49 -2
  371. package/src/analysis/project-state.ts +19 -9
  372. package/src/analysis/suppressions.ts +4 -1
  373. package/src/analysis/trace.ts +73 -54
  374. package/src/analysis/unused-class-members.ts +8 -1
  375. package/src/analysis/worker-pool.ts +40 -8
  376. package/src/cli/augment.ts +10 -3
  377. package/src/export/sarif.ts +5 -5
  378. package/src/graph/analyzer.ts +26 -2
  379. package/src/graph/author-analytics.ts +45 -5
  380. package/src/graph/baseline.ts +78 -24
  381. package/src/graph/clone-detector.ts +22 -36
  382. package/src/graph/clone-families.ts +34 -10
  383. package/src/graph/codeowners-extended.ts +54 -0
  384. package/src/graph/codeowners-gitlab.ts +46 -0
  385. package/src/graph/codeowners.ts +33 -2
  386. package/src/graph/complexity.ts +102 -47
  387. package/src/graph/cross-reference-findings.ts +23 -2
  388. package/src/graph/cross-reference.ts +26 -0
  389. package/src/graph/cycle-detection.ts +22 -3
  390. package/src/graph/cycles.ts +155 -96
  391. package/src/graph/dead-code.ts +76 -17
  392. package/src/graph/dependency-closure.ts +24 -7
  393. package/src/graph/dfs.ts +78 -0
  394. package/src/graph/duplication-stats.ts +17 -6
  395. package/src/graph/edge-filter.ts +26 -12
  396. package/src/graph/health-score.ts +47 -17
  397. package/src/graph/hotspots.ts +57 -8
  398. package/src/graph/import-chain.ts +89 -19
  399. package/src/graph/loader.ts +10 -7
  400. package/src/graph/maintainability.ts +72 -22
  401. package/src/graph/mirrored-dirs.ts +45 -14
  402. package/src/graph/narrowing.ts +44 -0
  403. package/src/graph/node-search.ts +49 -4
  404. package/src/graph/normalize-id.ts +26 -2
  405. package/src/graph/pagerank.ts +69 -2
  406. package/src/graph/prune.ts +76 -0
  407. package/src/graph/regex-search.ts +38 -4
  408. package/src/graph/regression.ts +48 -23
  409. package/src/graph/ripple-impact.ts +71 -11
  410. package/src/graph/risk-profile.ts +98 -53
  411. package/src/graph/shingle-filter.ts +33 -27
  412. package/src/graph/statistics.ts +73 -45
  413. package/src/graph/stats.ts +50 -16
  414. package/src/graph/subgraph.ts +96 -25
  415. package/src/graph/topo-sort.ts +101 -16
  416. package/src/graph/wcc.ts +146 -37
  417. package/src/index.ts +1 -1
  418. package/src/mcp-tools/api-impact.ts +13 -6
  419. package/src/mcp-tools/context.ts +31 -40
  420. package/src/mcp-tools/cypher.ts +14 -1
  421. package/src/mcp-tools/detect-changes.ts +38 -23
  422. package/src/mcp-tools/explain.ts +4 -1
  423. package/src/mcp-tools/graph-query.ts +24 -3
  424. package/src/mcp-tools/group-list.ts +9 -11
  425. package/src/mcp-tools/impact.ts +26 -66
  426. package/src/mcp-tools/neighbors.ts +34 -39
  427. package/src/mcp-tools/query.ts +3 -0
  428. package/src/mcp-tools/rename.ts +9 -8
  429. package/src/mcp-tools/route-map.ts +21 -23
  430. package/src/mcp-tools/shape-check.ts +18 -14
  431. package/src/parsers/loader.ts +5 -5
  432. package/src/pipeline/cluster-only.ts +8 -4
  433. package/src/pipeline/orchestrator.ts +22 -0
  434. package/src/pipeline/phases/boundary.ts +40 -2
  435. package/src/pipeline/phases/communities.ts +66 -5
  436. package/src/pipeline/phases/contextual-proximity.ts +15 -14
  437. package/src/pipeline/phases/cross-file.ts +35 -14
  438. package/src/pipeline/phases/field-access.ts +11 -4
  439. package/src/pipeline/phases/god-nodes.ts +47 -10
  440. package/src/pipeline/phases/import-resolver.ts +37 -5
  441. package/src/pipeline/phases/leiden.ts +25 -18
  442. package/src/pipeline/phases/markdown.ts +12 -7
  443. package/src/pipeline/phases/pdf-parse.ts +19 -2
  444. package/src/pipeline/phases/processes.ts +27 -15
  445. package/src/pipeline/phases/re-export-propagation.ts +40 -18
  446. package/src/pipeline/phases/reachability.ts +39 -24
  447. package/src/pipeline/phases/routes.ts +32 -21
  448. package/src/pipeline/phases/scope-resolution.ts +110 -71
  449. package/src/pipeline/runner.ts +28 -11
  450. package/src/query/cypher-parser.ts +83 -0
  451. package/src/search/embed-batch.ts +4 -1
  452. package/src/search/hybrid-query.ts +11 -1
  453. package/src/staleness/git-staleness.ts +3 -3
  454. package/src/storage/db.ts +11 -0
  455. package/src/storage/edge-store.ts +34 -1
  456. package/src/storage/embedding-store.ts +38 -6
  457. package/src/storage/file-cache.ts +35 -21
  458. package/src/storage/fts-store.ts +12 -3
  459. package/src/storage/node-store.ts +39 -1
  460. package/src/coverage/runtime.ts +0 -249
@@ -1 +1 @@
1
- {"version":3,"file":"contextual-proximity.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/contextual-proximity.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAO1D,MAAM,CAAC,MAAM,wBAAwB,GAA6C;IAChF,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;IAEjC,KAAK,CAAC,OAAO,CAAC,GAAoB;QAChC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;QAEzE,yDAAyD;QACzD,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE;aAChB,OAAO,CAAC,qEAAqE,CAAC;aAC9E,GAAG,EAAgD,CAAC;QAEvD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;QAEtE,4BAA4B;QAC5B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAoB,CAAC;QACpD,KAAK,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACxE,eAAe,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;QAED,mDAAmD;QACnD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,KAAK,MAAM,QAAQ,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACjD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;QAED,iFAAiF;QACjF,MAAM,KAAK,GAAoB,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC;gBAC3C,QAAQ;gBACR,QAAQ;gBACR,QAAQ,EAAE,WAAW;gBACrB,UAAU,EAAE,UAAU;gBACtB,eAAe,EAAE,gBAAgB,CAAC,QAAQ;gBAC1C,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,mFAAmF;QACnF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;QAChD,KAAK,MAAM,QAAQ,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,CAC3B,oGAAoG,CACrG,CAAC;YACF,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBACtB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,aAAa,EAAE,CAAC;oBACvC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC9D,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAEjD,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,qBAAqB,aAAa,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;QACvI,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC;IAC7E,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"contextual-proximity.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/contextual-proximity.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cross-file.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/cross-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAMnE,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,aAAa,EAAE,CAAC;CAChC;AAED,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,eAAe,CAiEzD,CAAC"}
1
+ {"version":3,"file":"cross-file.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/cross-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAMnE,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,aAAa,EAAE,CAAC;CAChC;AAED,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,eAAe,CAsFzD,CAAC"}
@@ -6,25 +6,47 @@ export const crossFilePhase = {
6
6
  async execute(_ctx, deps) {
7
7
  const { allEdges, symbolNodes } = deps.get('parse');
8
8
  const { fileNodes } = deps.get('structure');
9
- // Symbol name symbol node ID
9
+ /** Extract the last path segment of a '/'-separated string (faster than split+pop). */
10
+ function lastSegment(s) {
11
+ const idx = s.lastIndexOf('/');
12
+ return idx === -1 ? s : s.slice(idx + 1);
13
+ }
14
+ /** Strip leading `import_` prefix, then return the last path segment. */
15
+ function targetBasename(rawId) {
16
+ const stripped = rawId.startsWith('import_') ? rawId.slice(7) : rawId;
17
+ return lastSegment(stripped);
18
+ }
19
+ // Symbol name → symbol node ID.
20
+ // Pre-key lowercase variants so IMPORTS resolution is a single Map.get() instead of two.
10
21
  const nameIndex = new Map();
11
22
  for (const node of symbolNodes) {
12
23
  nameIndex.set(node.name, node.id);
13
- if (node.normLabel)
24
+ const lower = node.name.toLowerCase();
25
+ if (lower !== node.name)
26
+ nameIndex.set(lower, node.id);
27
+ if (node.normLabel) {
14
28
  nameIndex.set(node.normLabel, node.id);
29
+ const normLower = node.normLabel.toLowerCase();
30
+ if (normLower !== node.normLabel)
31
+ nameIndex.set(normLower, node.id);
32
+ }
15
33
  }
16
- // Basename (without extension) → File node ID, for resolving RE_EXPORTS
34
+ // Basename (without extension) → File node ID, for resolving RE_EXPORTS.
35
+ // Use lastIndexOf to avoid allocating a full split array per file path.
17
36
  const fileBasenameIndex = new Map();
18
37
  for (const fileNode of fileNodes) {
19
- const basename = (fileNode.filePath ?? '').split('/').pop() ?? '';
20
- const noExt = basename.replace(/\.[^.]+$/, '');
21
- fileBasenameIndex.set(noExt.toLowerCase(), fileNode.id);
22
- fileBasenameIndex.set(basename.toLowerCase(), fileNode.id);
38
+ const basename = lastSegment(fileNode.filePath ?? '').toLowerCase();
39
+ const dotIdx = basename.lastIndexOf('.');
40
+ const noExt = dotIdx === -1 ? basename : basename.slice(0, dotIdx);
41
+ fileBasenameIndex.set(basename, fileNode.id);
42
+ if (noExt !== basename)
43
+ fileBasenameIndex.set(noExt, fileNode.id);
23
44
  }
24
45
  const resolvedEdges = [];
25
46
  for (const edge of allEdges) {
26
47
  if (edge.relation === 'IMPORTS') {
27
- const targetName = edge.targetId.replace(/^import_/, '').split('/').pop() ?? '';
48
+ const targetName = targetBasename(edge.targetId);
49
+ // Single lookup — lowercase variants are pre-keyed in nameIndex
28
50
  const resolvedId = nameIndex.get(targetName) ?? nameIndex.get(targetName.toLowerCase());
29
51
  if (resolvedId && resolvedId !== edge.targetId) {
30
52
  resolvedEdges.push({
@@ -37,12 +59,11 @@ export const crossFilePhase = {
37
59
  }
38
60
  }
39
61
  else if (edge.relation === 'RE_EXPORTS') {
40
- // Resolve to a File node ID
41
- const rawTarget = edge.targetId.replace(/^import_/, '');
42
- const basename = rawTarget.split('/').pop() ?? '';
43
- const noExt = basename.replace(/\.[^.]+$/, '');
44
- const resolvedId = fileBasenameIndex.get(basename.toLowerCase())
45
- ?? fileBasenameIndex.get(noExt.toLowerCase());
62
+ // Resolve to a File node ID using the pre-built basename index
63
+ const basename = targetBasename(edge.targetId).toLowerCase();
64
+ const dotIdx = basename.lastIndexOf('.');
65
+ const noExt = dotIdx === -1 ? basename : basename.slice(0, dotIdx);
66
+ const resolvedId = fileBasenameIndex.get(basename) ?? fileBasenameIndex.get(noExt);
46
67
  if (resolvedId && resolvedId !== edge.targetId) {
47
68
  resolvedEdges.push({
48
69
  ...edge,
@@ -1 +1 @@
1
- {"version":3,"file":"cross-file.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/cross-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cross-file.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/cross-file.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"field-access.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/field-access.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CA4BrG"}
1
+ {"version":3,"file":"field-access.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/field-access.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAmCrG"}
@@ -5,12 +5,17 @@ export function extractFieldAccesses(source, varName, filePath) {
5
5
  const results = [];
6
6
  const lines = source.split('\n');
7
7
  const escapedName = escapeRegexChars(varName);
8
+ // Hoist regex construction outside the loop — both patterns are fixed for the
9
+ // entire call, so creating them once avoids O(lines) RegExp allocations.
10
+ // Write: varName.field = or varName.field +=/-=/*=
11
+ const writeRe = new RegExp(`\\b${escapedName}\\.(\\w+)\\s*(?:\\+|-|\\*|\\/|%)?=(?!=)`, 'g');
12
+ // Read: varName.field NOT followed by assignment operator
13
+ const readRe = new RegExp(`\\b${escapedName}\\.(\\w+)`, 'g');
8
14
  for (let i = 0; i < lines.length; i++) {
9
15
  const line = lines[i];
10
- // Write: varName.field = or varName.field +=/-=/*=
11
- const writeRe = new RegExp(`\\b${escapedName}\\.(\\w+)\\s*(?:\\+|-|\\*|\\/|%)?=(?!=)`, 'g');
12
- // Read: varName.field NOT followed by assignment operator
13
- const readRe = new RegExp(`\\b${escapedName}\\.(\\w+)`, 'g');
16
+ // Reset stateful lastIndex before each line (required for reused /g regexes).
17
+ writeRe.lastIndex = 0;
18
+ readRe.lastIndex = 0;
14
19
  const writeFields = new Set();
15
20
  let m;
16
21
  while ((m = writeRe.exec(line)) !== null) {
@@ -1 +1 @@
1
- {"version":3,"file":"field-access.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/field-access.ts"],"names":[],"mappings":"AASA,SAAS,gBAAgB,CAAC,CAAS;IACjC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,OAAe,EAAE,QAAgB;IACpF,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,mDAAmD;QACnD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,WAAW,yCAAyC,EAAE,GAAG,CAAC,CAAC;QAC5F,0DAA0D;QAC1D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,WAAW,WAAW,EAAE,GAAG,CAAC,CAAC;QAE7D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,IAAI,CAAyB,CAAC;QAE9B,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"field-access.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/field-access.ts"],"names":[],"mappings":"AASA,SAAS,gBAAgB,CAAC,CAAS;IACjC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,OAAe,EAAE,QAAgB;IACpF,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE9C,8EAA8E;IAC9E,yEAAyE;IACzE,mDAAmD;IACnD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,WAAW,yCAAyC,EAAE,GAAG,CAAC,CAAC;IAC5F,0DAA0D;IAC1D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,WAAW,WAAW,EAAE,GAAG,CAAC,CAAC;IAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,8EAA8E;QAC9E,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;QAErB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,IAAI,CAAyB,CAAC;QAE9B,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -21,4 +21,8 @@ export interface GodNodesOutput {
21
21
  thresholds: GodNodesThresholds;
22
22
  }
23
23
  export declare const godNodesPhase: PipelinePhase<GodNodesOutput>;
24
+ /**
25
+ * Format god-node results as structured text with file:line hints for LLM navigation.
26
+ */
27
+ export declare function formatGodNodes(output: GodNodesOutput): string;
24
28
  //# sourceMappingURL=god-nodes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"god-nodes.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/god-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,gBAAgB,CAAC;AAM7D,MAAM,MAAM,eAAe,GACvB,iBAAiB,GACjB,aAAa,GACb,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,aAAa,CAAC;AAElB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,CAAC,OAAO,GAAG;QAAE,QAAQ,EAAE,eAAe,CAAC;QAAC,mBAAmB,EAAE,kBAAkB,EAAE,CAAA;KAAE,CAAC,EAAE,CAAC;IACjG,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAQD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,cAAc,CA6EvD,CAAC"}
1
+ {"version":3,"file":"god-nodes.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/god-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,gBAAgB,CAAC;AAM7D,MAAM,MAAM,eAAe,GACvB,iBAAiB,GACjB,aAAa,GACb,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,aAAa,CAAC;AAElB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,CAAC,OAAO,GAAG;QAAE,QAAQ,EAAE,eAAe,CAAC;QAAC,mBAAmB,EAAE,kBAAkB,EAAE,CAAA;KAAE,CAAC,EAAE,CAAC;IACjG,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAQD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,cAAc,CA8EvD,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA+B7D"}
@@ -18,15 +18,18 @@ export const godNodesPhase = {
18
18
  outDeg.set(e.sourceId, (outDeg.get(e.sourceId) ?? 0) + 1);
19
19
  inDeg.set(e.targetId, (inDeg.get(e.targetId) ?? 0) + 1);
20
20
  }
21
- // Compute degree distributions from all symbol nodes
22
- const allFanIn = symbolNodes
23
- .filter(n => !EXCLUDED_LABELS.has(n.label))
24
- .map(n => inDeg.get(n.id) ?? 0)
25
- .sort((a, b) => a - b);
26
- const allFanOut = symbolNodes
27
- .filter(n => !EXCLUDED_LABELS.has(n.label))
28
- .map(n => outDeg.get(n.id) ?? 0)
29
- .sort((a, b) => a - b);
21
+ // Compute degree distributions from all symbol nodes in a single pass
22
+ // (avoids two separate filter + map passes over potentially large arrays)
23
+ const allFanIn = [];
24
+ const allFanOut = [];
25
+ for (const n of symbolNodes) {
26
+ if (EXCLUDED_LABELS.has(n.label))
27
+ continue;
28
+ allFanIn.push(inDeg.get(n.id) ?? 0);
29
+ allFanOut.push(outDeg.get(n.id) ?? 0);
30
+ }
31
+ allFanIn.sort((a, b) => a - b);
32
+ allFanOut.sort((a, b) => a - b);
30
33
  const thresholds = {
31
34
  p75FanIn: percentile(allFanIn, 75),
32
35
  p90FanIn: percentile(allFanIn, 90),
@@ -74,4 +77,35 @@ export const godNodesPhase = {
74
77
  return { godNodes, thresholds };
75
78
  },
76
79
  };
80
+ /**
81
+ * Format god-node results as structured text with file:line hints for LLM navigation.
82
+ */
83
+ export function formatGodNodes(output) {
84
+ const { godNodes, thresholds } = output;
85
+ if (godNodes.length === 0) {
86
+ return 'god-nodes: none\nstatus: no high-centrality nodes detected\n';
87
+ }
88
+ const lines = [
89
+ `god-nodes: ${godNodes.length} high-centrality node(s) detected`,
90
+ `thresholds: fanIn p75=${thresholds.p75FanIn} p90=${thresholds.p90FanIn} p95=${thresholds.p95FanIn}; fanOut p75=${thresholds.p75FanOut} p90=${thresholds.p90FanOut}`,
91
+ '',
92
+ ];
93
+ for (let i = 0; i < godNodes.length; i++) {
94
+ const n = godNodes[i];
95
+ const loc = n.filePath
96
+ ? `${n.filePath}${n.startLine !== undefined ? `:${n.startLine}` : ''}`
97
+ : n.id;
98
+ lines.push(`[${i + 1}] ${n.name} (${n.label}) — ${n.category}`);
99
+ lines.push(` file: ${loc}`);
100
+ lines.push(` degree: ${n.degree} (fanIn=${n.inDegree}, fanOut=${n.outDegree})`);
101
+ for (const f of n.contributingFactors) {
102
+ lines.push(` factor: ${f.metric}=${f.value} (threshold=${f.threshold})`);
103
+ }
104
+ lines.push('');
105
+ }
106
+ const bridgeCount = godNodes.filter(n => n.category === 'BRIDGE_NODE').length;
107
+ const highCentralityCount = godNodes.length - bridgeCount;
108
+ lines.push(`summary: ${highCentralityCount} HIGH_CENTRALITY, ${bridgeCount} BRIDGE_NODE`);
109
+ return lines.join('\n');
110
+ }
77
111
  //# sourceMappingURL=god-nodes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"god-nodes.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/god-nodes.ts"],"names":[],"mappings":"AAKA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AA6B5E,SAAS,UAAU,CAAC,MAAgB,EAAE,CAAS;IAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAkC;IAC1D,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI;QACrB,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAoB,CAAC;QACpE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAgB,CAAC;QACnE,MAAM,gBAAgB,GAAoB,CAAC,GAAG,QAAQ,EAAE,GAAG,aAAa,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,qDAAqD;QACrD,MAAM,QAAQ,GAAG,WAAW;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzB,MAAM,SAAS,GAAG,WAAW;aAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzB,MAAM,UAAU,GAAuB;YACrC,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClC,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClC,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClC,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC;YACpC,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC;SACrC,CAAC;QAEF,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACrC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACrC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QAEvC,MAAM,QAAQ,GAAG,WAAW;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;aACzG,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;YAE9B,MAAM,mBAAmB,GAAyB,EAAE,CAAC;YACrD,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACrB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACrB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;gBACvB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YACtF,CAAC;YAED,IAAI,QAAyB,CAAC;YAC9B,IAAI,KAAK,GAAG,QAAQ,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;gBAC3C,QAAQ,GAAG,aAAa,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,iBAAiB,CAAC;YAC/B,CAAC;YAED,OAAO;gBACL,GAAG,CAAC;gBACJ,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,MAAM;gBACjB,MAAM;gBACN,QAAQ;gBACR,mBAAmB;aACpB,CAAC;QACJ,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;aACnC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAClC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"god-nodes.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/god-nodes.ts"],"names":[],"mappings":"AAKA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AA6B5E,SAAS,UAAU,CAAC,MAAgB,EAAE,CAAS;IAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAkC;IAC1D,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI;QACrB,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAoB,CAAC;QACpE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAgB,CAAC;QACnE,MAAM,gBAAgB,GAAoB,CAAC,GAAG,QAAQ,EAAE,GAAG,aAAa,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,sEAAsE;QACtE,0EAA0E;QAC1E,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC3C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEhC,MAAM,UAAU,GAAuB;YACrC,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClC,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClC,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClC,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC;YACpC,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC;SACrC,CAAC;QAEF,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACrC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACrC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QAEvC,MAAM,QAAQ,GAAG,WAAW;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;aACzG,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;YAE9B,MAAM,mBAAmB,GAAyB,EAAE,CAAC;YACrD,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACrB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACrB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;gBACvB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YACtF,CAAC;YAED,IAAI,QAAyB,CAAC;YAC9B,IAAI,KAAK,GAAG,QAAQ,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;gBAC3C,QAAQ,GAAG,aAAa,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,iBAAiB,CAAC;YAC/B,CAAC;YAED,OAAO;gBACL,GAAG,CAAC;gBACJ,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,MAAM;gBACjB,MAAM;gBACN,QAAQ;gBACR,mBAAmB;aACpB,CAAC;QACJ,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;aACnC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAClC,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAsB;IACnD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,8DAA8D,CAAC;IACxE,CAAC;IAED,MAAM,KAAK,GAAa;QACtB,cAAc,QAAQ,CAAC,MAAM,mCAAmC;QAChE,yBAAyB,UAAU,CAAC,QAAQ,QAAQ,UAAU,CAAC,QAAQ,QAAQ,UAAU,CAAC,QAAQ,gBAAgB,UAAU,CAAC,SAAS,QAAQ,UAAU,CAAC,SAAS,EAAE;QACpK,EAAE;KACH,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ;YACpB,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YACtE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,QAAQ,YAAY,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QACjF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAC5E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;IAC9E,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,YAAY,mBAAmB,qBAAqB,WAAW,cAAc,CAAC,CAAC;IAE1F,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -9,5 +9,16 @@ export interface ImportResolverOutput {
9
9
  }
10
10
  export declare function detectWorkspacePackages(repoPath: string): WorkspacePackage[];
11
11
  export declare function resolveWorkspaceImport(importSpecifier: string, packages: WorkspacePackage[]): string | null;
12
+ /**
13
+ * Build a Map<packageName, packagePath> index from a WorkspacePackage array.
14
+ * Use this when resolveWorkspaceImport will be called many times (e.g. per import
15
+ * statement across a whole repo) to reduce resolution cost from O(N*I) to O(N+I).
16
+ */
17
+ export declare function buildPackageIndex(packages: WorkspacePackage[]): Map<string, string>;
18
+ /**
19
+ * O(1) workspace import resolution using a pre-built package index.
20
+ * Falls back to prefix scan only for sub-path imports (e.g. `pkg/subpath`).
21
+ */
22
+ export declare function resolveWorkspaceImportFromIndex(importSpecifier: string, index: Map<string, string>): string | null;
12
23
  export declare const importResolverPhase: PipelinePhase<ImportResolverOutput>;
13
24
  //# sourceMappingURL=import-resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"import-resolver.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/import-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC;CACvB;AAkBD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE,CA8B5E;AAED,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,MAAM,GAAG,IAAI,CAOf;AAED,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,oBAAoB,CAOnE,CAAC"}
1
+ {"version":3,"file":"import-resolver.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/import-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC;CACvB;AAkBD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE,CA4B5E;AAED,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,MAAM,GAAG,IAAI,CAOf;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAMnF;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACzB,MAAM,GAAG,IAAI,CAYf;AAED,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,oBAAoB,CAOnE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { existsSync, readFileSync, readdirSync } from 'fs';
1
+ import { readFileSync, readdirSync } from 'fs';
2
2
  import { join, resolve } from 'path';
3
3
  function globWorkspacePattern(repoPath, pattern) {
4
4
  if (!pattern.includes('*')) {
@@ -6,8 +6,7 @@ function globWorkspacePattern(repoPath, pattern) {
6
6
  }
7
7
  const [base] = pattern.split('/*');
8
8
  const baseDir = join(repoPath, base ?? '');
9
- if (!existsSync(baseDir))
10
- return [];
9
+ // Skip existsSync — readdirSync will throw ENOENT which the catch already handles.
11
10
  try {
12
11
  return readdirSync(baseDir, { withFileTypes: true })
13
12
  .filter(d => d.isDirectory())
@@ -19,8 +18,6 @@ function globWorkspacePattern(repoPath, pattern) {
19
18
  }
20
19
  export function detectWorkspacePackages(repoPath) {
21
20
  const pkgPath = join(repoPath, 'package.json');
22
- if (!existsSync(pkgPath))
23
- return [];
24
21
  let workspaceGlobs = [];
25
22
  try {
26
23
  const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
@@ -38,9 +35,8 @@ export function detectWorkspacePackages(repoPath) {
38
35
  const dirs = globWorkspacePattern(repoPath, glob);
39
36
  for (const dir of dirs) {
40
37
  const subPkgPath = join(dir, 'package.json');
41
- if (!existsSync(subPkgPath))
42
- continue;
43
38
  try {
39
+ // existsSync guard removed — readFileSync throws ENOENT which the catch handles.
44
40
  const subPkg = JSON.parse(readFileSync(subPkgPath, 'utf8'));
45
41
  if (subPkg.name) {
46
42
  result.push({ name: subPkg.name, path: resolve(dir) });
@@ -59,6 +55,37 @@ export function resolveWorkspaceImport(importSpecifier, packages) {
59
55
  }
60
56
  return null;
61
57
  }
58
+ /**
59
+ * Build a Map<packageName, packagePath> index from a WorkspacePackage array.
60
+ * Use this when resolveWorkspaceImport will be called many times (e.g. per import
61
+ * statement across a whole repo) to reduce resolution cost from O(N*I) to O(N+I).
62
+ */
63
+ export function buildPackageIndex(packages) {
64
+ const index = new Map();
65
+ for (const pkg of packages) {
66
+ index.set(pkg.name, pkg.path);
67
+ }
68
+ return index;
69
+ }
70
+ /**
71
+ * O(1) workspace import resolution using a pre-built package index.
72
+ * Falls back to prefix scan only for sub-path imports (e.g. `pkg/subpath`).
73
+ */
74
+ export function resolveWorkspaceImportFromIndex(importSpecifier, index) {
75
+ // Exact match: O(1)
76
+ const exact = index.get(importSpecifier);
77
+ if (exact !== undefined)
78
+ return exact;
79
+ // Sub-path import: find the matching package name prefix
80
+ const slash = importSpecifier.indexOf('/', importSpecifier.startsWith('@') ? importSpecifier.indexOf('/') + 1 : 0);
81
+ if (slash !== -1) {
82
+ const pkgName = importSpecifier.slice(0, slash);
83
+ const path = index.get(pkgName);
84
+ if (path !== undefined)
85
+ return path;
86
+ }
87
+ return null;
88
+ }
62
89
  export const importResolverPhase = {
63
90
  name: 'import-resolver',
64
91
  deps: ['cross-file'],
@@ -1 +1 @@
1
- {"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/import-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/import-resolver.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"leiden.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/leiden.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAEpC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiD7F"}
1
+ {"version":3,"file":"leiden.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/leiden.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAEpC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwD7F"}
@@ -22,36 +22,44 @@ export function leiden(graph, _options = {}) {
22
22
  }
23
23
  // Phase 1: Louvain with deterministic settings
24
24
  const communities = louvain(graph, { randomWalk: false });
25
- // Phase 2: Refinement — merge singletons into their largest neighbor's community
25
+ // Phase 2: Refinement — merge singletons into their largest neighbor's community.
26
+ // Single pass over Object.entries to build both communitySizes and the singletonNodes Set,
27
+ // avoiding a separate Object.values scan. The singletonNodes Set enables O(1) skip in the
28
+ // refinement loop below instead of a map.get(commId) <= 1 test per node.
26
29
  const communitySizes = new Map();
27
30
  for (const comm of Object.values(communities)) {
28
31
  communitySizes.set(comm, (communitySizes.get(comm) ?? 0) + 1);
29
32
  }
33
+ const singletonNodes = new Set();
34
+ for (const [nodeId, commId] of Object.entries(communities)) {
35
+ if ((communitySizes.get(commId) ?? 0) <= 1)
36
+ singletonNodes.add(nodeId);
37
+ }
30
38
  // Refinement: merge singletons into their largest neighbor's community.
31
39
  // Pass 1: update communitySizes eagerly (so adjacent singletons see each other's moves
32
40
  // and avoid mutual-swap cycles), collect community writes into `pending`.
33
41
  // Pass 2: apply community writes — keeps the community map consistent at all times.
34
42
  const pending = new Map();
35
43
  for (const [nodeId, commId] of Object.entries(communities)) {
36
- if ((communitySizes.get(commId) ?? 0) <= 1) {
37
- let bestComm = commId;
38
- let bestSize = 0;
39
- graph.forEachNeighbor(nodeId, (neighbor) => {
40
- const neighborComm = communities[neighbor];
41
- if (neighborComm === undefined)
42
- return;
43
- const size = communitySizes.get(neighborComm) ?? 0;
44
- if (size > bestSize) {
45
- bestSize = size;
46
- bestComm = neighborComm;
47
- }
48
- });
49
- if (bestComm !== commId) {
50
- // Update sizes eagerly so subsequent singletons see the correct community sizes
51
- communitySizes.set(commId, (communitySizes.get(commId) ?? 1) - 1);
52
- communitySizes.set(bestComm, (communitySizes.get(bestComm) ?? 0) + 1);
53
- pending.set(nodeId, bestComm);
44
+ if (!singletonNodes.has(nodeId))
45
+ continue; // O(1) skip for non-singletons
46
+ let bestComm = commId;
47
+ let bestSize = 0;
48
+ graph.forEachNeighbor(nodeId, (neighbor) => {
49
+ const neighborComm = communities[neighbor];
50
+ if (neighborComm === undefined)
51
+ return;
52
+ const size = communitySizes.get(neighborComm) ?? 0;
53
+ if (size > bestSize) {
54
+ bestSize = size;
55
+ bestComm = neighborComm;
54
56
  }
57
+ });
58
+ if (bestComm !== commId) {
59
+ // Update sizes eagerly so subsequent singletons see the correct community sizes
60
+ communitySizes.set(commId, (communitySizes.get(commId) ?? 1) - 1);
61
+ communitySizes.set(bestComm, (communitySizes.get(bestComm) ?? 0) + 1);
62
+ pending.set(nodeId, bestComm);
55
63
  }
56
64
  }
57
65
  // Apply deferred community writes
@@ -1 +1 @@
1
- {"version":3,"file":"leiden.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/leiden.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,gCAAgC,CAAC;AAGrD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,MAAM,CAAC,KAAY,EAAE,WAA8B,EAAE;IACnE,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,+CAA+C;IAC/C,MAAM,WAAW,GAA2B,OAAO,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAElF,iFAAiF;IACjF,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9C,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,wEAAwE;IACxE,uFAAuF;IACvF,kFAAkF;IAClF,oFAAoF;IACpF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,IAAI,QAAQ,GAAG,MAAM,CAAC;YACtB,IAAI,QAAQ,GAAG,CAAC,CAAC;YAEjB,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,QAAgB,EAAE,EAAE;gBACjD,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,YAAY,KAAK,SAAS;oBAAE,OAAO;gBACvC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;oBACpB,QAAQ,GAAG,IAAI,CAAC;oBAChB,QAAQ,GAAG,YAAY,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,gFAAgF;gBAChF,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClE,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC;QACzC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;IACjC,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"leiden.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/leiden.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,gCAAgC,CAAC;AAGrD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,MAAM,CAAC,KAAY,EAAE,WAA8B,EAAE;IACnE,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,+CAA+C;IAC/C,MAAM,WAAW,GAA2B,OAAO,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAElF,kFAAkF;IAClF,2FAA2F;IAC3F,0FAA0F;IAC1F,yEAAyE;IACzE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9C,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC;IAED,wEAAwE;IACxE,uFAAuF;IACvF,kFAAkF;IAClF,oFAAoF;IACpF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS,CAAC,+BAA+B;QAE1E,IAAI,QAAQ,GAAG,MAAM,CAAC;QACtB,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,QAAgB,EAAE,EAAE;YACjD,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,YAAY,KAAK,SAAS;gBAAE,OAAO;YACvC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;gBACpB,QAAQ,GAAG,IAAI,CAAC;gBAChB,QAAQ,GAAG,YAAY,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,gFAAgF;YAChF,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC;QACzC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;IACjC,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/markdown.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAUnE,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,eAAe,EAAE,aAAa,EAAE,CAAC;CAClC;AAED,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,cAAc,CAkFvD,CAAC"}
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/markdown.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAYnE,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,eAAe,EAAE,aAAa,EAAE,CAAC;CAClC;AAED,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,cAAc,CAqFvD,CAAC"}
@@ -6,6 +6,8 @@ import { insertEdges } from '../../storage/edge-store.js';
6
6
  const MARKDOWN_EXTENSIONS = new Set(['.md', '.mdx']);
7
7
  // Inline code span: `identifier`
8
8
  const INLINE_CODE_RE = /`([^`]+)`/g;
9
+ // Module-level constant: compiled once per process, not per isIdentifier() call.
10
+ const IDENTIFIER_RE = /^[A-Za-z_$][A-Za-z0-9_$.-]*$/;
9
11
  export const markdownPhase = {
10
12
  name: 'markdown',
11
13
  // Must run after parse so symbols are already in the DB for name lookup.
@@ -13,6 +15,8 @@ export const markdownPhase = {
13
15
  // Runs before communities so REFERENCES edges are visible to graph analyses.
14
16
  deps: ['parse', 'structure'],
15
17
  async execute(ctx, deps) {
18
+ if (ctx.options.codeOnly)
19
+ return { documentNodes: [], referencesEdges: [] };
16
20
  const { fileNodes } = deps.get('structure');
17
21
  const documentNodes = [];
18
22
  const referencesEdges = [];
@@ -50,15 +54,16 @@ export const markdownPhase = {
50
54
  // Extract inline code spans and match against symbol names in the DB
51
55
  if (ctx.db) {
52
56
  const spans = extractCodeSpans(source);
57
+ // Hoist prepared statement outside the span loop — avoids re-compiling the
58
+ // SQL query for every identifier in every markdown file (N+1 preparation).
59
+ const symbolLookup = ctx.db.prepare(`SELECT id FROM nodes WHERE name = ?
60
+ AND label NOT IN ('File', 'Folder', 'Document')`);
53
61
  for (const span of spans) {
54
62
  // Only match single-word identifiers (not shell commands, paths, etc.)
55
63
  if (!isIdentifier(span))
56
64
  continue;
57
65
  // Exact name match, excluding structural nodes to avoid matching file names
58
- const rows = ctx.db
59
- .prepare(`SELECT id FROM nodes WHERE name = ?
60
- AND label NOT IN ('File', 'Folder', 'Document')`)
61
- .all(span);
66
+ const rows = symbolLookup.all(span);
62
67
  if (rows.length === 1) {
63
68
  const edgeId = makeId(docId, rows[0].id, 'references');
64
69
  referencesEdges.push({
@@ -93,6 +98,6 @@ function extractCodeSpans(source) {
93
98
  }
94
99
  /** Accept only simple identifiers — letters, digits, underscores, hyphens, dots (for namespaced names). */
95
100
  function isIdentifier(span) {
96
- return /^[A-Za-z_$][A-Za-z0-9_$.-]*$/.test(span);
101
+ return IDENTIFIER_RE.test(span);
97
102
  }
98
103
  //# sourceMappingURL=markdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/markdown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/markdown.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-parse.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/pdf-parse.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAWnE,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAqBD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,cAAc,CA6EvD,CAAC"}
1
+ {"version":3,"file":"pdf-parse.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/pdf-parse.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAWnE,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAqBD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,cAAc,CA8FvD,CAAC"}
@@ -108,10 +108,25 @@ export const pdfParsePhase = {
108
108
  });
109
109
  }
110
110
  }
111
- if (sectionNodes.length > 0)
112
- insertNodes(ctx.db, sectionNodes);
113
- if (allEdges.length > 0)
111
+ if (sectionNodes.length > 0) {
112
+ // File nodes are not persisted by structure/parse phases for non-code files —
113
+ // insert them here before edges to satisfy the FK constraint.
114
+ const seenFileIds = new Set();
115
+ const fileNodes = [];
116
+ for (const edge of allEdges) {
117
+ if (!seenFileIds.has(edge.sourceId)) {
118
+ seenFileIds.add(edge.sourceId);
119
+ const relPath = sectionNodes.find(n => n.id === edge.targetId)?.filePath ?? '';
120
+ fileNodes.push({
121
+ id: edge.sourceId, label: 'File',
122
+ name: basename(relPath), normLabel: toNormLabel(basename(relPath)),
123
+ filePath: relPath, isExported: false,
124
+ });
125
+ }
126
+ }
127
+ insertNodes(ctx.db, [...fileNodes, ...sectionNodes]);
114
128
  insertEdges(ctx.db, allEdges);
129
+ }
115
130
  ctx.onProgress?.({ phase: 'pdf-parse', message: `Parsed ${pdfPaths.length} PDF files → ${sectionNodes.length} chunks` });
116
131
  return { sectionNodes, pdfFiles: pdfPaths.length };
117
132
  },
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-parse.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/pdf-parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdf-parse.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/pdf-parse.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"processes.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/processes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AASjD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE;QACb,SAAS,EAAE,UAAU,EAAE,CAAC;QACxB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,KAAK,EAAE;YAAE,cAAc,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;KACvD,CAAC;CACH;AAwGD,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,eAAe,CA4GzD,CAAC"}
1
+ {"version":3,"file":"processes.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/processes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AASjD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE;QACb,SAAS,EAAE,UAAU,EAAE,CAAC;QACxB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,KAAK,EAAE;YAAE,cAAc,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;KACvD,CAAC;CACH;AAoHD,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,eAAe,CA4GzD,CAAC"}