@monoes/monograph 1.5.4 → 1.5.5

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 (394) hide show
  1. package/dist/src/pipeline/phases/llm-extract.d.ts.map +1 -1
  2. package/dist/src/pipeline/phases/llm-extract.js +12 -0
  3. package/dist/src/pipeline/phases/llm-extract.js.map +1 -1
  4. package/dist/src/wiki/wiki-generator.d.ts.map +1 -1
  5. package/dist/src/wiki/wiki-generator.js +5 -1
  6. package/dist/src/wiki/wiki-generator.js.map +1 -1
  7. package/dist/tsconfig.tsbuildinfo +1 -1
  8. package/package.json +3 -1
  9. package/src/pipeline/phases/llm-extract.ts +14 -0
  10. package/src/wiki/wiki-generator.ts +7 -1
  11. package/dist/src/__tests__/analysis/benchmark.test.d.ts +0 -2
  12. package/dist/src/__tests__/analysis/benchmark.test.d.ts.map +0 -1
  13. package/dist/src/__tests__/analysis/benchmark.test.js +0 -54
  14. package/dist/src/__tests__/analysis/benchmark.test.js.map +0 -1
  15. package/dist/src/__tests__/analysis/cluster-quality.test.d.ts +0 -2
  16. package/dist/src/__tests__/analysis/cluster-quality.test.d.ts.map +0 -1
  17. package/dist/src/__tests__/analysis/cluster-quality.test.js +0 -99
  18. package/dist/src/__tests__/analysis/cluster-quality.test.js.map +0 -1
  19. package/dist/src/__tests__/analysis/corpus-health.test.d.ts +0 -2
  20. package/dist/src/__tests__/analysis/corpus-health.test.d.ts.map +0 -1
  21. package/dist/src/__tests__/analysis/corpus-health.test.js +0 -29
  22. package/dist/src/__tests__/analysis/corpus-health.test.js.map +0 -1
  23. package/dist/src/__tests__/analysis/dependency-health.test.d.ts +0 -2
  24. package/dist/src/__tests__/analysis/dependency-health.test.d.ts.map +0 -1
  25. package/dist/src/__tests__/analysis/dependency-health.test.js +0 -96
  26. package/dist/src/__tests__/analysis/dependency-health.test.js.map +0 -1
  27. package/dist/src/__tests__/analysis/file-classifier.test.d.ts +0 -2
  28. package/dist/src/__tests__/analysis/file-classifier.test.d.ts.map +0 -1
  29. package/dist/src/__tests__/analysis/file-classifier.test.js +0 -49
  30. package/dist/src/__tests__/analysis/file-classifier.test.js.map +0 -1
  31. package/dist/src/__tests__/analysis/node-similarity.test.d.ts +0 -2
  32. package/dist/src/__tests__/analysis/node-similarity.test.d.ts.map +0 -1
  33. package/dist/src/__tests__/analysis/node-similarity.test.js +0 -66
  34. package/dist/src/__tests__/analysis/node-similarity.test.js.map +0 -1
  35. package/dist/src/__tests__/cache/augment-cache.test.d.ts +0 -2
  36. package/dist/src/__tests__/cache/augment-cache.test.d.ts.map +0 -1
  37. package/dist/src/__tests__/cache/augment-cache.test.js +0 -47
  38. package/dist/src/__tests__/cache/augment-cache.test.js.map +0 -1
  39. package/dist/src/__tests__/cli/check-update.test.d.ts +0 -2
  40. package/dist/src/__tests__/cli/check-update.test.d.ts.map +0 -1
  41. package/dist/src/__tests__/cli/check-update.test.js +0 -38
  42. package/dist/src/__tests__/cli/check-update.test.js.map +0 -1
  43. package/dist/src/__tests__/cli/hooks-install.test.d.ts +0 -2
  44. package/dist/src/__tests__/cli/hooks-install.test.d.ts.map +0 -1
  45. package/dist/src/__tests__/cli/hooks-install.test.js +0 -48
  46. package/dist/src/__tests__/cli/hooks-install.test.js.map +0 -1
  47. package/dist/src/__tests__/cli/hooks-marker.test.d.ts +0 -2
  48. package/dist/src/__tests__/cli/hooks-marker.test.d.ts.map +0 -1
  49. package/dist/src/__tests__/cli/hooks-marker.test.js +0 -115
  50. package/dist/src/__tests__/cli/hooks-marker.test.js.map +0 -1
  51. package/dist/src/__tests__/cli/hooks-status.test.d.ts +0 -2
  52. package/dist/src/__tests__/cli/hooks-status.test.d.ts.map +0 -1
  53. package/dist/src/__tests__/cli/hooks-status.test.js +0 -36
  54. package/dist/src/__tests__/cli/hooks-status.test.js.map +0 -1
  55. package/dist/src/__tests__/export/adjacency-matrix.test.d.ts +0 -2
  56. package/dist/src/__tests__/export/adjacency-matrix.test.d.ts.map +0 -1
  57. package/dist/src/__tests__/export/adjacency-matrix.test.js +0 -103
  58. package/dist/src/__tests__/export/adjacency-matrix.test.js.map +0 -1
  59. package/dist/src/__tests__/export/csv.test.d.ts +0 -2
  60. package/dist/src/__tests__/export/csv.test.d.ts.map +0 -1
  61. package/dist/src/__tests__/export/csv.test.js +0 -34
  62. package/dist/src/__tests__/export/csv.test.js.map +0 -1
  63. package/dist/src/__tests__/export/dot.test.d.ts +0 -2
  64. package/dist/src/__tests__/export/dot.test.d.ts.map +0 -1
  65. package/dist/src/__tests__/export/dot.test.js +0 -73
  66. package/dist/src/__tests__/export/dot.test.js.map +0 -1
  67. package/dist/src/__tests__/export/gexf.test.d.ts +0 -2
  68. package/dist/src/__tests__/export/gexf.test.d.ts.map +0 -1
  69. package/dist/src/__tests__/export/gexf.test.js +0 -66
  70. package/dist/src/__tests__/export/gexf.test.js.map +0 -1
  71. package/dist/src/__tests__/export/graphml.test.d.ts +0 -2
  72. package/dist/src/__tests__/export/graphml.test.d.ts.map +0 -1
  73. package/dist/src/__tests__/export/graphml.test.js +0 -51
  74. package/dist/src/__tests__/export/graphml.test.js.map +0 -1
  75. package/dist/src/__tests__/export/mermaid.test.d.ts +0 -2
  76. package/dist/src/__tests__/export/mermaid.test.d.ts.map +0 -1
  77. package/dist/src/__tests__/export/mermaid.test.js +0 -78
  78. package/dist/src/__tests__/export/mermaid.test.js.map +0 -1
  79. package/dist/src/__tests__/graph/betweenness.test.d.ts +0 -2
  80. package/dist/src/__tests__/graph/betweenness.test.d.ts.map +0 -1
  81. package/dist/src/__tests__/graph/betweenness.test.js +0 -77
  82. package/dist/src/__tests__/graph/betweenness.test.js.map +0 -1
  83. package/dist/src/__tests__/graph/cycles.test.d.ts +0 -2
  84. package/dist/src/__tests__/graph/cycles.test.d.ts.map +0 -1
  85. package/dist/src/__tests__/graph/cycles.test.js +0 -119
  86. package/dist/src/__tests__/graph/cycles.test.js.map +0 -1
  87. package/dist/src/__tests__/graph/dead-code.test.d.ts +0 -2
  88. package/dist/src/__tests__/graph/dead-code.test.d.ts.map +0 -1
  89. package/dist/src/__tests__/graph/dead-code.test.js +0 -89
  90. package/dist/src/__tests__/graph/dead-code.test.js.map +0 -1
  91. package/dist/src/__tests__/graph/dfs.test.d.ts +0 -2
  92. package/dist/src/__tests__/graph/dfs.test.d.ts.map +0 -1
  93. package/dist/src/__tests__/graph/dfs.test.js +0 -56
  94. package/dist/src/__tests__/graph/dfs.test.js.map +0 -1
  95. package/dist/src/__tests__/graph/diff-summary.test.d.ts +0 -2
  96. package/dist/src/__tests__/graph/diff-summary.test.d.ts.map +0 -1
  97. package/dist/src/__tests__/graph/diff-summary.test.js +0 -74
  98. package/dist/src/__tests__/graph/diff-summary.test.js.map +0 -1
  99. package/dist/src/__tests__/graph/edge-filter.test.d.ts +0 -2
  100. package/dist/src/__tests__/graph/edge-filter.test.d.ts.map +0 -1
  101. package/dist/src/__tests__/graph/edge-filter.test.js +0 -117
  102. package/dist/src/__tests__/graph/edge-filter.test.js.map +0 -1
  103. package/dist/src/__tests__/graph/import-chain.test.d.ts +0 -2
  104. package/dist/src/__tests__/graph/import-chain.test.d.ts.map +0 -1
  105. package/dist/src/__tests__/graph/import-chain.test.js +0 -101
  106. package/dist/src/__tests__/graph/import-chain.test.js.map +0 -1
  107. package/dist/src/__tests__/graph/merge.test.d.ts +0 -2
  108. package/dist/src/__tests__/graph/merge.test.d.ts.map +0 -1
  109. package/dist/src/__tests__/graph/merge.test.js +0 -132
  110. package/dist/src/__tests__/graph/merge.test.js.map +0 -1
  111. package/dist/src/__tests__/graph/node-search.test.d.ts +0 -2
  112. package/dist/src/__tests__/graph/node-search.test.d.ts.map +0 -1
  113. package/dist/src/__tests__/graph/node-search.test.js +0 -127
  114. package/dist/src/__tests__/graph/node-search.test.js.map +0 -1
  115. package/dist/src/__tests__/graph/normalize-id.test.d.ts +0 -2
  116. package/dist/src/__tests__/graph/normalize-id.test.d.ts.map +0 -1
  117. package/dist/src/__tests__/graph/normalize-id.test.js +0 -88
  118. package/dist/src/__tests__/graph/normalize-id.test.js.map +0 -1
  119. package/dist/src/__tests__/graph/pagerank.test.d.ts +0 -2
  120. package/dist/src/__tests__/graph/pagerank.test.d.ts.map +0 -1
  121. package/dist/src/__tests__/graph/pagerank.test.js +0 -87
  122. package/dist/src/__tests__/graph/pagerank.test.js.map +0 -1
  123. package/dist/src/__tests__/graph/prune.test.d.ts +0 -2
  124. package/dist/src/__tests__/graph/prune.test.d.ts.map +0 -1
  125. package/dist/src/__tests__/graph/prune.test.js +0 -98
  126. package/dist/src/__tests__/graph/prune.test.js.map +0 -1
  127. package/dist/src/__tests__/graph/regex-search.test.d.ts +0 -2
  128. package/dist/src/__tests__/graph/regex-search.test.d.ts.map +0 -1
  129. package/dist/src/__tests__/graph/regex-search.test.js +0 -128
  130. package/dist/src/__tests__/graph/regex-search.test.js.map +0 -1
  131. package/dist/src/__tests__/graph/ripple-impact.test.d.ts +0 -2
  132. package/dist/src/__tests__/graph/ripple-impact.test.d.ts.map +0 -1
  133. package/dist/src/__tests__/graph/ripple-impact.test.js +0 -64
  134. package/dist/src/__tests__/graph/ripple-impact.test.js.map +0 -1
  135. package/dist/src/__tests__/graph/scc.test.d.ts +0 -2
  136. package/dist/src/__tests__/graph/scc.test.d.ts.map +0 -1
  137. package/dist/src/__tests__/graph/scc.test.js +0 -77
  138. package/dist/src/__tests__/graph/scc.test.js.map +0 -1
  139. package/dist/src/__tests__/graph/statistics.test.d.ts +0 -2
  140. package/dist/src/__tests__/graph/statistics.test.d.ts.map +0 -1
  141. package/dist/src/__tests__/graph/statistics.test.js +0 -197
  142. package/dist/src/__tests__/graph/statistics.test.js.map +0 -1
  143. package/dist/src/__tests__/graph/subgraph.test.d.ts +0 -2
  144. package/dist/src/__tests__/graph/subgraph.test.d.ts.map +0 -1
  145. package/dist/src/__tests__/graph/subgraph.test.js +0 -116
  146. package/dist/src/__tests__/graph/subgraph.test.js.map +0 -1
  147. package/dist/src/__tests__/graph/topo-sort.test.d.ts +0 -2
  148. package/dist/src/__tests__/graph/topo-sort.test.d.ts.map +0 -1
  149. package/dist/src/__tests__/graph/topo-sort.test.js +0 -101
  150. package/dist/src/__tests__/graph/topo-sort.test.js.map +0 -1
  151. package/dist/src/__tests__/graph/wcc.test.d.ts +0 -2
  152. package/dist/src/__tests__/graph/wcc.test.d.ts.map +0 -1
  153. package/dist/src/__tests__/graph/wcc.test.js +0 -91
  154. package/dist/src/__tests__/graph/wcc.test.js.map +0 -1
  155. package/dist/src/__tests__/groups/grpc-extractor.test.d.ts +0 -2
  156. package/dist/src/__tests__/groups/grpc-extractor.test.d.ts.map +0 -1
  157. package/dist/src/__tests__/groups/grpc-extractor.test.js +0 -42
  158. package/dist/src/__tests__/groups/grpc-extractor.test.js.map +0 -1
  159. package/dist/src/__tests__/groups/service-boundary.test.d.ts +0 -2
  160. package/dist/src/__tests__/groups/service-boundary.test.d.ts.map +0 -1
  161. package/dist/src/__tests__/groups/service-boundary.test.js +0 -75
  162. package/dist/src/__tests__/groups/service-boundary.test.js.map +0 -1
  163. package/dist/src/__tests__/groups/topic-extractor.test.d.ts +0 -2
  164. package/dist/src/__tests__/groups/topic-extractor.test.d.ts.map +0 -1
  165. package/dist/src/__tests__/groups/topic-extractor.test.js +0 -37
  166. package/dist/src/__tests__/groups/topic-extractor.test.js.map +0 -1
  167. package/dist/src/__tests__/ingest/git-clone.test.d.ts +0 -2
  168. package/dist/src/__tests__/ingest/git-clone.test.d.ts.map +0 -1
  169. package/dist/src/__tests__/ingest/git-clone.test.js +0 -100
  170. package/dist/src/__tests__/ingest/git-clone.test.js.map +0 -1
  171. package/dist/src/__tests__/ingest/query-memory.test.d.ts +0 -2
  172. package/dist/src/__tests__/ingest/query-memory.test.d.ts.map +0 -1
  173. package/dist/src/__tests__/ingest/query-memory.test.js +0 -116
  174. package/dist/src/__tests__/ingest/query-memory.test.js.map +0 -1
  175. package/dist/src/__tests__/ingest/transcribe.test.d.ts +0 -2
  176. package/dist/src/__tests__/ingest/transcribe.test.d.ts.map +0 -1
  177. package/dist/src/__tests__/ingest/transcribe.test.js +0 -50
  178. package/dist/src/__tests__/ingest/transcribe.test.js.map +0 -1
  179. package/dist/src/__tests__/ingest/url-ingest.test.d.ts +0 -2
  180. package/dist/src/__tests__/ingest/url-ingest.test.d.ts.map +0 -1
  181. package/dist/src/__tests__/ingest/url-ingest.test.js +0 -43
  182. package/dist/src/__tests__/ingest/url-ingest.test.js.map +0 -1
  183. package/dist/src/__tests__/mcp-resources/repo-context-resource.test.d.ts +0 -2
  184. package/dist/src/__tests__/mcp-resources/repo-context-resource.test.d.ts.map +0 -1
  185. package/dist/src/__tests__/mcp-resources/repo-context-resource.test.js +0 -34
  186. package/dist/src/__tests__/mcp-resources/repo-context-resource.test.js.map +0 -1
  187. package/dist/src/__tests__/mcp-resources/repos-resource.test.d.ts +0 -2
  188. package/dist/src/__tests__/mcp-resources/repos-resource.test.d.ts.map +0 -1
  189. package/dist/src/__tests__/mcp-resources/repos-resource.test.js +0 -63
  190. package/dist/src/__tests__/mcp-resources/repos-resource.test.js.map +0 -1
  191. package/dist/src/__tests__/mcp-resources/wiki-resource.test.d.ts +0 -2
  192. package/dist/src/__tests__/mcp-resources/wiki-resource.test.d.ts.map +0 -1
  193. package/dist/src/__tests__/mcp-resources/wiki-resource.test.js +0 -47
  194. package/dist/src/__tests__/mcp-resources/wiki-resource.test.js.map +0 -1
  195. package/dist/src/__tests__/mcp-tools/explain.test.d.ts +0 -2
  196. package/dist/src/__tests__/mcp-tools/explain.test.d.ts.map +0 -1
  197. package/dist/src/__tests__/mcp-tools/explain.test.js +0 -42
  198. package/dist/src/__tests__/mcp-tools/explain.test.js.map +0 -1
  199. package/dist/src/__tests__/mcp-tools/graph-query.test.d.ts +0 -2
  200. package/dist/src/__tests__/mcp-tools/graph-query.test.d.ts.map +0 -1
  201. package/dist/src/__tests__/mcp-tools/graph-query.test.js +0 -41
  202. package/dist/src/__tests__/mcp-tools/graph-query.test.js.map +0 -1
  203. package/dist/src/__tests__/mcp-tools/group-sync.test.d.ts +0 -2
  204. package/dist/src/__tests__/mcp-tools/group-sync.test.d.ts.map +0 -1
  205. package/dist/src/__tests__/mcp-tools/group-sync.test.js +0 -8
  206. package/dist/src/__tests__/mcp-tools/group-sync.test.js.map +0 -1
  207. package/dist/src/__tests__/mcp-tools/impact-filtering.test.d.ts +0 -2
  208. package/dist/src/__tests__/mcp-tools/impact-filtering.test.d.ts.map +0 -1
  209. package/dist/src/__tests__/mcp-tools/impact-filtering.test.js +0 -45
  210. package/dist/src/__tests__/mcp-tools/impact-filtering.test.js.map +0 -1
  211. package/dist/src/__tests__/mcp-tools/impact.risk.test.d.ts +0 -2
  212. package/dist/src/__tests__/mcp-tools/impact.risk.test.d.ts.map +0 -1
  213. package/dist/src/__tests__/mcp-tools/impact.risk.test.js +0 -21
  214. package/dist/src/__tests__/mcp-tools/impact.risk.test.js.map +0 -1
  215. package/dist/src/__tests__/mcp-tools/list-repos.test.d.ts +0 -2
  216. package/dist/src/__tests__/mcp-tools/list-repos.test.d.ts.map +0 -1
  217. package/dist/src/__tests__/mcp-tools/list-repos.test.js +0 -21
  218. package/dist/src/__tests__/mcp-tools/list-repos.test.js.map +0 -1
  219. package/dist/src/__tests__/mcp-tools/neighbors.test.d.ts +0 -2
  220. package/dist/src/__tests__/mcp-tools/neighbors.test.d.ts.map +0 -1
  221. package/dist/src/__tests__/mcp-tools/neighbors.test.js +0 -44
  222. package/dist/src/__tests__/mcp-tools/neighbors.test.js.map +0 -1
  223. package/dist/src/__tests__/mcp-tools/query.test.d.ts +0 -2
  224. package/dist/src/__tests__/mcp-tools/query.test.d.ts.map +0 -1
  225. package/dist/src/__tests__/mcp-tools/query.test.js +0 -37
  226. package/dist/src/__tests__/mcp-tools/query.test.js.map +0 -1
  227. package/dist/src/__tests__/parsers/language-parsers.test.d.ts +0 -2
  228. package/dist/src/__tests__/parsers/language-parsers.test.d.ts.map +0 -1
  229. package/dist/src/__tests__/parsers/language-parsers.test.js +0 -48
  230. package/dist/src/__tests__/parsers/language-parsers.test.js.map +0 -1
  231. package/dist/src/__tests__/parsers/named-bindings.test.d.ts +0 -2
  232. package/dist/src/__tests__/parsers/named-bindings.test.d.ts.map +0 -1
  233. package/dist/src/__tests__/parsers/named-bindings.test.js +0 -68
  234. package/dist/src/__tests__/parsers/named-bindings.test.js.map +0 -1
  235. package/dist/src/__tests__/pipeline/cluster-only.test.d.ts +0 -2
  236. package/dist/src/__tests__/pipeline/cluster-only.test.d.ts.map +0 -1
  237. package/dist/src/__tests__/pipeline/cluster-only.test.js +0 -31
  238. package/dist/src/__tests__/pipeline/cluster-only.test.js.map +0 -1
  239. package/dist/src/__tests__/pipeline/incremental.test.d.ts +0 -2
  240. package/dist/src/__tests__/pipeline/incremental.test.d.ts.map +0 -1
  241. package/dist/src/__tests__/pipeline/incremental.test.js +0 -38
  242. package/dist/src/__tests__/pipeline/incremental.test.js.map +0 -1
  243. package/dist/src/__tests__/pipeline/phases/communities.cohesion.test.d.ts +0 -2
  244. package/dist/src/__tests__/pipeline/phases/communities.cohesion.test.d.ts.map +0 -1
  245. package/dist/src/__tests__/pipeline/phases/communities.cohesion.test.js +0 -40
  246. package/dist/src/__tests__/pipeline/phases/communities.cohesion.test.js.map +0 -1
  247. package/dist/src/__tests__/pipeline/phases/community-split.test.d.ts +0 -2
  248. package/dist/src/__tests__/pipeline/phases/community-split.test.d.ts.map +0 -1
  249. package/dist/src/__tests__/pipeline/phases/community-split.test.js +0 -27
  250. package/dist/src/__tests__/pipeline/phases/community-split.test.js.map +0 -1
  251. package/dist/src/__tests__/pipeline/phases/framework-detect.test.d.ts +0 -2
  252. package/dist/src/__tests__/pipeline/phases/framework-detect.test.d.ts.map +0 -1
  253. package/dist/src/__tests__/pipeline/phases/framework-detect.test.js +0 -56
  254. package/dist/src/__tests__/pipeline/phases/framework-detect.test.js.map +0 -1
  255. package/dist/src/__tests__/pipeline/phases/import-resolver.test.d.ts +0 -2
  256. package/dist/src/__tests__/pipeline/phases/import-resolver.test.d.ts.map +0 -1
  257. package/dist/src/__tests__/pipeline/phases/import-resolver.test.js +0 -56
  258. package/dist/src/__tests__/pipeline/phases/import-resolver.test.js.map +0 -1
  259. package/dist/src/__tests__/pipeline/phases/parse-arrow.test.d.ts +0 -2
  260. package/dist/src/__tests__/pipeline/phases/parse-arrow.test.d.ts.map +0 -1
  261. package/dist/src/__tests__/pipeline/phases/parse-arrow.test.js +0 -30
  262. package/dist/src/__tests__/pipeline/phases/parse-arrow.test.js.map +0 -1
  263. package/dist/src/__tests__/pipeline/phases/parse-csharp.test.d.ts +0 -2
  264. package/dist/src/__tests__/pipeline/phases/parse-csharp.test.d.ts.map +0 -1
  265. package/dist/src/__tests__/pipeline/phases/parse-csharp.test.js +0 -30
  266. package/dist/src/__tests__/pipeline/phases/parse-csharp.test.js.map +0 -1
  267. package/dist/src/__tests__/pipeline/phases/scan.monographignore.test.d.ts +0 -2
  268. package/dist/src/__tests__/pipeline/phases/scan.monographignore.test.d.ts.map +0 -1
  269. package/dist/src/__tests__/pipeline/phases/scan.monographignore.test.js +0 -46
  270. package/dist/src/__tests__/pipeline/phases/scan.monographignore.test.js.map +0 -1
  271. package/dist/src/__tests__/pipeline/phases/scan.negation.test.d.ts +0 -2
  272. package/dist/src/__tests__/pipeline/phases/scan.negation.test.d.ts.map +0 -1
  273. package/dist/src/__tests__/pipeline/phases/scan.negation.test.js +0 -35
  274. package/dist/src/__tests__/pipeline/phases/scan.negation.test.js.map +0 -1
  275. package/dist/src/__tests__/pipeline/phases/scope-resolution.go.test.d.ts +0 -2
  276. package/dist/src/__tests__/pipeline/phases/scope-resolution.go.test.d.ts.map +0 -1
  277. package/dist/src/__tests__/pipeline/phases/scope-resolution.go.test.js +0 -32
  278. package/dist/src/__tests__/pipeline/phases/scope-resolution.go.test.js.map +0 -1
  279. package/dist/src/__tests__/pipeline/phases/scope-resolution.java.test.d.ts +0 -2
  280. package/dist/src/__tests__/pipeline/phases/scope-resolution.java.test.d.ts.map +0 -1
  281. package/dist/src/__tests__/pipeline/phases/scope-resolution.java.test.js +0 -28
  282. package/dist/src/__tests__/pipeline/phases/scope-resolution.java.test.js.map +0 -1
  283. package/dist/src/__tests__/pipeline/phases/scope-resolution.rust.test.d.ts +0 -2
  284. package/dist/src/__tests__/pipeline/phases/scope-resolution.rust.test.d.ts.map +0 -1
  285. package/dist/src/__tests__/pipeline/phases/scope-resolution.rust.test.js +0 -29
  286. package/dist/src/__tests__/pipeline/phases/scope-resolution.rust.test.js.map +0 -1
  287. package/dist/src/__tests__/pipeline/phases/suggest-questions.test.d.ts +0 -2
  288. package/dist/src/__tests__/pipeline/phases/suggest-questions.test.d.ts.map +0 -1
  289. package/dist/src/__tests__/pipeline/phases/suggest-questions.test.js +0 -42
  290. package/dist/src/__tests__/pipeline/phases/suggest-questions.test.js.map +0 -1
  291. package/dist/src/__tests__/pipeline/phases/surprises-scoring.test.d.ts +0 -2
  292. package/dist/src/__tests__/pipeline/phases/surprises-scoring.test.d.ts.map +0 -1
  293. package/dist/src/__tests__/pipeline/phases/surprises-scoring.test.js +0 -42
  294. package/dist/src/__tests__/pipeline/phases/surprises-scoring.test.js.map +0 -1
  295. package/dist/src/__tests__/pipeline/phases/variables-phase.test.d.ts +0 -2
  296. package/dist/src/__tests__/pipeline/phases/variables-phase.test.d.ts.map +0 -1
  297. package/dist/src/__tests__/pipeline/phases/variables-phase.test.js +0 -72
  298. package/dist/src/__tests__/pipeline/phases/variables-phase.test.js.map +0 -1
  299. package/dist/src/__tests__/pipeline/phases/wildcard-phase.test.d.ts +0 -2
  300. package/dist/src/__tests__/pipeline/phases/wildcard-phase.test.d.ts.map +0 -1
  301. package/dist/src/__tests__/pipeline/phases/wildcard-phase.test.js +0 -59
  302. package/dist/src/__tests__/pipeline/phases/wildcard-phase.test.js.map +0 -1
  303. package/dist/src/__tests__/pipeline/runner.parallel.test.d.ts +0 -2
  304. package/dist/src/__tests__/pipeline/runner.parallel.test.d.ts.map +0 -1
  305. package/dist/src/__tests__/pipeline/runner.parallel.test.js +0 -66
  306. package/dist/src/__tests__/pipeline/runner.parallel.test.js.map +0 -1
  307. package/dist/src/__tests__/reporting/graph-report-confidence.test.d.ts +0 -2
  308. package/dist/src/__tests__/reporting/graph-report-confidence.test.d.ts.map +0 -1
  309. package/dist/src/__tests__/reporting/graph-report-confidence.test.js +0 -40
  310. package/dist/src/__tests__/reporting/graph-report-confidence.test.js.map +0 -1
  311. package/dist/src/__tests__/reporting/graph-report-gaps.test.d.ts +0 -2
  312. package/dist/src/__tests__/reporting/graph-report-gaps.test.d.ts.map +0 -1
  313. package/dist/src/__tests__/reporting/graph-report-gaps.test.js +0 -38
  314. package/dist/src/__tests__/reporting/graph-report-gaps.test.js.map +0 -1
  315. package/dist/src/__tests__/scope-resolution/evidence-weights.test.d.ts +0 -2
  316. package/dist/src/__tests__/scope-resolution/evidence-weights.test.d.ts.map +0 -1
  317. package/dist/src/__tests__/scope-resolution/evidence-weights.test.js +0 -40
  318. package/dist/src/__tests__/scope-resolution/evidence-weights.test.js.map +0 -1
  319. package/dist/src/__tests__/search/diacritic.test.d.ts +0 -2
  320. package/dist/src/__tests__/search/diacritic.test.d.ts.map +0 -1
  321. package/dist/src/__tests__/search/diacritic.test.js +0 -23
  322. package/dist/src/__tests__/search/diacritic.test.js.map +0 -1
  323. package/dist/src/__tests__/security/safe-fetch.test.d.ts +0 -2
  324. package/dist/src/__tests__/security/safe-fetch.test.d.ts.map +0 -1
  325. package/dist/src/__tests__/security/safe-fetch.test.js +0 -113
  326. package/dist/src/__tests__/security/safe-fetch.test.js.map +0 -1
  327. package/dist/src/__tests__/skills/platform-skills.extra.test.d.ts +0 -2
  328. package/dist/src/__tests__/skills/platform-skills.extra.test.d.ts.map +0 -1
  329. package/dist/src/__tests__/skills/platform-skills.extra.test.js +0 -31
  330. package/dist/src/__tests__/skills/platform-skills.extra.test.js.map +0 -1
  331. package/dist/src/__tests__/web/api.clusters.test.d.ts +0 -2
  332. package/dist/src/__tests__/web/api.clusters.test.d.ts.map +0 -1
  333. package/dist/src/__tests__/web/api.clusters.test.js +0 -59
  334. package/dist/src/__tests__/web/api.clusters.test.js.map +0 -1
  335. package/dist/src/__tests__/web/api.file.test.d.ts +0 -2
  336. package/dist/src/__tests__/web/api.file.test.d.ts.map +0 -1
  337. package/dist/src/__tests__/web/api.file.test.js +0 -38
  338. package/dist/src/__tests__/web/api.file.test.js.map +0 -1
  339. package/dist/src/__tests__/web/api.grep.test.d.ts +0 -2
  340. package/dist/src/__tests__/web/api.grep.test.d.ts.map +0 -1
  341. package/dist/src/__tests__/web/api.grep.test.js +0 -43
  342. package/dist/src/__tests__/web/api.grep.test.js.map +0 -1
  343. package/dist/src/__tests__/web/api.info.test.d.ts +0 -2
  344. package/dist/src/__tests__/web/api.info.test.d.ts.map +0 -1
  345. package/dist/src/__tests__/web/api.info.test.js +0 -17
  346. package/dist/src/__tests__/web/api.info.test.js.map +0 -1
  347. package/dist/src/__tests__/web/api.jobs.test.d.ts +0 -2
  348. package/dist/src/__tests__/web/api.jobs.test.d.ts.map +0 -1
  349. package/dist/src/__tests__/web/api.jobs.test.js +0 -40
  350. package/dist/src/__tests__/web/api.jobs.test.js.map +0 -1
  351. package/dist/src/__tests__/web/api.progress.test.d.ts +0 -2
  352. package/dist/src/__tests__/web/api.progress.test.d.ts.map +0 -1
  353. package/dist/src/__tests__/web/api.progress.test.js +0 -23
  354. package/dist/src/__tests__/web/api.progress.test.js.map +0 -1
  355. package/dist/src/__tests__/web/api.stream.test.d.ts +0 -2
  356. package/dist/src/__tests__/web/api.stream.test.d.ts.map +0 -1
  357. package/dist/src/__tests__/web/api.stream.test.js +0 -33
  358. package/dist/src/__tests__/web/api.stream.test.js.map +0 -1
  359. package/dist/src/__tests__/wiki/providers-reasoning.test.d.ts +0 -2
  360. package/dist/src/__tests__/wiki/providers-reasoning.test.d.ts.map +0 -1
  361. package/dist/src/__tests__/wiki/providers-reasoning.test.js +0 -41
  362. package/dist/src/__tests__/wiki/providers-reasoning.test.js.map +0 -1
  363. package/dist/src/__tests__/wiki/wiki-review-mode.test.d.ts +0 -2
  364. package/dist/src/__tests__/wiki/wiki-review-mode.test.d.ts.map +0 -1
  365. package/dist/src/__tests__/wiki/wiki-review-mode.test.js +0 -21
  366. package/dist/src/__tests__/wiki/wiki-review-mode.test.js.map +0 -1
  367. package/dist/src/analysis/cycles.d.ts +0 -16
  368. package/dist/src/analysis/cycles.d.ts.map +0 -1
  369. package/dist/src/analysis/cycles.js +0 -203
  370. package/dist/src/analysis/cycles.js.map +0 -1
  371. package/dist/src/analysis/trace.d.ts +0 -80
  372. package/dist/src/analysis/trace.d.ts.map +0 -1
  373. package/dist/src/analysis/trace.js +0 -186
  374. package/dist/src/analysis/trace.js.map +0 -1
  375. package/dist/src/analysis/worker-pool.d.ts +0 -17
  376. package/dist/src/analysis/worker-pool.d.ts.map +0 -1
  377. package/dist/src/analysis/worker-pool.js +0 -62
  378. package/dist/src/analysis/worker-pool.js.map +0 -1
  379. package/dist/src/coverage/runtime.d.ts +0 -36
  380. package/dist/src/coverage/runtime.d.ts.map +0 -1
  381. package/dist/src/coverage/runtime.js +0 -187
  382. package/dist/src/coverage/runtime.js.map +0 -1
  383. package/dist/src/graph/clone-detector.d.ts +0 -15
  384. package/dist/src/graph/clone-detector.d.ts.map +0 -1
  385. package/dist/src/graph/clone-detector.js +0 -132
  386. package/dist/src/graph/clone-detector.js.map +0 -1
  387. package/dist/src/graph/shingle-filter.d.ts +0 -6
  388. package/dist/src/graph/shingle-filter.d.ts.map +0 -1
  389. package/dist/src/graph/shingle-filter.js +0 -129
  390. package/dist/src/graph/shingle-filter.js.map +0 -1
  391. package/dist/src/watch/watch-runner.d.ts +0 -16
  392. package/dist/src/watch/watch-runner.d.ts.map +0 -1
  393. package/dist/src/watch/watch-runner.js +0 -49
  394. package/dist/src/watch/watch-runner.js.map +0 -1
@@ -1,43 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import Database from 'better-sqlite3';
3
- import { queryGrep } from '../../web/api.js';
4
- function makeDb() {
5
- const db = new Database(':memory:');
6
- db.exec(`
7
- CREATE TABLE nodes (id TEXT PRIMARY KEY, name TEXT, label TEXT, file_path TEXT, start_line INTEGER, end_line INTEGER, community_id INTEGER);
8
- CREATE VIRTUAL TABLE nodes_fts USING fts5(id, name, label, content='nodes', content_rowid='rowid');
9
- INSERT INTO nodes VALUES ('n1', 'fetchUser', 'Function', '/app/user.ts', 10, 20, null);
10
- INSERT INTO nodes VALUES ('n2', 'UserService', 'Class', '/app/service.ts', 1, 100, 1);
11
- INSERT INTO nodes VALUES ('n3', 'formatDate', 'Function', '/app/utils.ts', 5, 15, null);
12
- `);
13
- return db;
14
- }
15
- describe('queryGrep', () => {
16
- it('returns nodes whose name matches pattern case-insensitively', () => {
17
- const db = makeDb();
18
- const results = queryGrep(db, 'user', false);
19
- expect(results.length).toBe(2); // fetchUser and UserService
20
- expect(results.some(r => r.name === 'fetchUser')).toBe(true);
21
- expect(results.some(r => r.name === 'UserService')).toBe(true);
22
- });
23
- it('returns empty array for no match', () => {
24
- const db = makeDb();
25
- const results = queryGrep(db, 'nonexistent', false);
26
- expect(results).toEqual([]);
27
- });
28
- it('limits to 100 results', () => {
29
- const db = makeDb();
30
- const results = queryGrep(db, 'Date', false);
31
- expect(results.length).toBeLessThanOrEqual(100);
32
- });
33
- it('returns results with correct shape', () => {
34
- const db = makeDb();
35
- const results = queryGrep(db, 'format', false);
36
- expect(results[0]).toHaveProperty('id');
37
- expect(results[0]).toHaveProperty('name');
38
- expect(results[0]).toHaveProperty('label');
39
- expect(results[0]).toHaveProperty('filePath');
40
- expect(results[0]).toHaveProperty('startLine');
41
- });
42
- });
43
- //# sourceMappingURL=api.grep.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.grep.test.js","sourceRoot":"","sources":["../../../../src/__tests__/web/api.grep.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,SAAS,MAAM;IACb,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAC;IACH,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;QAC5D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=api.info.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.info.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/web/api.info.test.ts"],"names":[],"mappings":""}
@@ -1,17 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { getServerInfo } from '../../web/api.js';
3
- describe('getServerInfo', () => {
4
- it('returns version and nodeVersion', () => {
5
- const info = getServerInfo();
6
- expect(info.version).toBeDefined();
7
- expect(typeof info.version).toBe('string');
8
- expect(info.nodeVersion).toBe(process.version);
9
- expect(info.name).toBe('monograph');
10
- });
11
- it('includes uptime', () => {
12
- const info = getServerInfo();
13
- expect(typeof info.uptimeSeconds).toBe('number');
14
- expect(info.uptimeSeconds).toBeGreaterThanOrEqual(0);
15
- });
16
- });
17
- //# sourceMappingURL=api.info.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.info.test.js","sourceRoot":"","sources":["../../../../src/__tests__/web/api.info.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;QAC7B,MAAM,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=api.jobs.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.jobs.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/web/api.jobs.test.ts"],"names":[],"mappings":""}
@@ -1,40 +0,0 @@
1
- import { describe, it, expect, beforeEach } from 'vitest';
2
- import { createJobRegistry } from '../../web/async-jobs.js';
3
- describe('JobRegistry', () => {
4
- let registry;
5
- beforeEach(() => {
6
- registry = createJobRegistry();
7
- });
8
- it('creates a job and returns an id', () => {
9
- const job = registry.create('analyze', { repoPath: '/tmp/repo' });
10
- expect(job.id).toBeDefined();
11
- expect(job.status).toBe('queued');
12
- expect(job.type).toBe('analyze');
13
- });
14
- it('retrieves a job by id', () => {
15
- const job = registry.create('analyze', { repoPath: '/tmp/repo' });
16
- const found = registry.get(job.id);
17
- expect(found).toBeDefined();
18
- expect(found?.id).toBe(job.id);
19
- });
20
- it('updates job status to running and done', () => {
21
- const job = registry.create('analyze', { repoPath: '/tmp/repo' });
22
- registry.update(job.id, { status: 'running' });
23
- expect(registry.get(job.id)?.status).toBe('running');
24
- registry.update(job.id, { status: 'done', result: { nodes: 42 } });
25
- expect(registry.get(job.id)?.status).toBe('done');
26
- expect(registry.get(job.id)?.result?.nodes).toBe(42);
27
- });
28
- it('cancels a job', () => {
29
- const job = registry.create('analyze', { repoPath: '/tmp/repo' });
30
- registry.cancel(job.id);
31
- expect(registry.get(job.id)?.status).toBe('cancelled');
32
- });
33
- it('returns undefined for unknown job', () => {
34
- expect(registry.get('nonexistent')).toBeUndefined();
35
- });
36
- it('cancel returns false for unknown job', () => {
37
- expect(registry.cancel('nonexistent')).toBe(false);
38
- });
39
- });
40
- //# sourceMappingURL=api.jobs.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.jobs.test.js","sourceRoot":"","sources":["../../../../src/__tests__/web/api.jobs.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=api.progress.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.progress.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/web/api.progress.test.ts"],"names":[],"mappings":""}
@@ -1,23 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { createJobRegistry } from '../../web/async-jobs.js';
3
- describe('JobRegistry SSE progress', () => {
4
- it('emitProgress stores progress events on the job', () => {
5
- const reg = createJobRegistry();
6
- const job = reg.create('analyze', {});
7
- reg.emitProgress(job.id, { phase: 'scan', percent: 10, message: 'scanning' });
8
- reg.emitProgress(job.id, { phase: 'parse', percent: 50 });
9
- const events = reg.getProgress(job.id);
10
- expect(events).toHaveLength(2);
11
- expect(events[0]).toMatchObject({ phase: 'scan', percent: 10 });
12
- expect(events[1]).toMatchObject({ phase: 'parse', percent: 50 });
13
- });
14
- it('getProgress returns empty array for unknown job', () => {
15
- const reg = createJobRegistry();
16
- expect(reg.getProgress('nonexistent')).toEqual([]);
17
- });
18
- it('emitProgress is a no-op for unknown job', () => {
19
- const reg = createJobRegistry();
20
- expect(() => reg.emitProgress('nonexistent', { phase: 'scan' })).not.toThrow();
21
- });
22
- });
23
- //# sourceMappingURL=api.progress.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.progress.test.js","sourceRoot":"","sources":["../../../../src/__tests__/web/api.progress.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACtC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9E,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=api.stream.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.stream.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/web/api.stream.test.ts"],"names":[],"mappings":""}
@@ -1,33 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import Database from 'better-sqlite3';
3
- import { streamGraph } from '../../web/api.js';
4
- function makeDb() {
5
- const db = new Database(':memory:');
6
- db.exec(`
7
- CREATE TABLE nodes (id TEXT PRIMARY KEY, name TEXT, label TEXT, file_path TEXT, start_line INTEGER, end_line INTEGER, community_id INTEGER);
8
- CREATE TABLE edges (id TEXT PRIMARY KEY, source_id TEXT, target_id TEXT, relation TEXT, confidence TEXT, confidence_score REAL);
9
- INSERT INTO nodes VALUES ('n1', 'A', 'Class', '/a.ts', 1, 10, null);
10
- INSERT INTO nodes VALUES ('n2', 'B', 'Function', '/b.ts', 1, 5, null);
11
- INSERT INTO edges VALUES ('e1', 'n1', 'n2', 'CALLS', 'EXTRACTED', 1.0);
12
- `);
13
- return db;
14
- }
15
- describe('streamGraph', () => {
16
- it('calls onRecord for each node and edge', async () => {
17
- const db = makeDb();
18
- const records = [];
19
- await streamGraph(db, (record) => { records.push(record); });
20
- expect(records.length).toBeGreaterThanOrEqual(3); // 2 nodes + 1 edge
21
- expect(records.some((r) => r.type === 'node')).toBe(true);
22
- expect(records.some((r) => r.type === 'edge')).toBe(true);
23
- });
24
- it('each record has a type field', async () => {
25
- const db = makeDb();
26
- const records = [];
27
- await streamGraph(db, (record) => { records.push(record); });
28
- for (const r of records) {
29
- expect(['node', 'edge']).toContain(r.type);
30
- }
31
- });
32
- });
33
- //# sourceMappingURL=api.stream.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.stream.test.js","sourceRoot":"","sources":["../../../../src/__tests__/web/api.stream.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,SAAS,MAAM;IACb,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAC;IACH,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAc,EAAE,CAAC;QAC9B,MAAM,WAAW,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;QACrE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAc,EAAE,CAAC;QAC9B,MAAM,WAAW,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAE,CAAS,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=providers-reasoning.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"providers-reasoning.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/wiki/providers-reasoning.test.ts"],"names":[],"mappings":""}
@@ -1,41 +0,0 @@
1
- import { describe, it, expect, vi } from 'vitest';
2
- import { callLLM } from '../../wiki/providers.js';
3
- describe('reasoning model support', () => {
4
- it('strips temperature for o1 model', async () => {
5
- let capturedBody;
6
- const mockFetch = vi.fn().mockImplementation((_url, opts) => {
7
- capturedBody = JSON.parse(opts.body);
8
- return Promise.resolve({
9
- ok: true,
10
- json: async () => ({
11
- choices: [{ message: { content: 'result' } }],
12
- usage: { prompt_tokens: 10, completion_tokens: 5 },
13
- }),
14
- });
15
- });
16
- global.fetch = mockFetch;
17
- await callLLM('test', { provider: 'openai', model: 'o1-mini', apiKey: 'test' });
18
- expect(capturedBody.temperature).toBeUndefined();
19
- expect(capturedBody.max_completion_tokens).toBeDefined();
20
- expect(capturedBody.max_tokens).toBeUndefined();
21
- });
22
- it('uses standard params for non-reasoning models', async () => {
23
- let capturedBody;
24
- const mockFetch = vi.fn().mockImplementation((_url, opts) => {
25
- capturedBody = JSON.parse(opts.body);
26
- return Promise.resolve({
27
- ok: true,
28
- json: async () => ({
29
- choices: [{ message: { content: 'result' } }],
30
- usage: { prompt_tokens: 10, completion_tokens: 5 },
31
- }),
32
- });
33
- });
34
- global.fetch = mockFetch;
35
- await callLLM('test', { provider: 'openai', model: 'gpt-4o', apiKey: 'test' });
36
- expect(capturedBody.temperature).toBeDefined();
37
- expect(capturedBody.max_tokens).toBeDefined();
38
- expect(capturedBody.max_completion_tokens).toBeUndefined();
39
- });
40
- });
41
- //# sourceMappingURL=providers-reasoning.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"providers-reasoning.test.js","sourceRoot":"","sources":["../../../../src/__tests__/wiki/providers-reasoning.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,IAAI,YAAiB,CAAC;QACtB,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAS,EAAE,IAAS,EAAE,EAAE;YACpE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,OAAO,CAAC,OAAO,CAAC;gBACrB,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;oBAC7C,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE;iBACnD,CAAC;aACH,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,GAAG,SAAgB,CAAC;QAEhC,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAEhF,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;QACjD,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;QACzD,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,IAAI,YAAiB,CAAC;QACtB,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAS,EAAE,IAAS,EAAE,EAAE;YACpE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,OAAO,CAAC,OAAO,CAAC;gBACrB,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;oBAC7C,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE;iBACnD,CAAC;aACH,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,GAAG,SAAgB,CAAC;QAEhC,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAE/E,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,aAAa,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wiki-review-mode.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wiki-review-mode.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/wiki/wiki-review-mode.test.ts"],"names":[],"mappings":""}
@@ -1,21 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { generateWiki } from '../../wiki/wiki-generator.js';
3
- describe('wiki review mode', () => {
4
- it('WikiGeneratorOptions accepts reviewOnly flag', () => {
5
- const opts = {
6
- repoPath: '/tmp',
7
- reviewOnly: true,
8
- };
9
- expect(opts.reviewOnly).toBe(true);
10
- });
11
- it('generateWiki returns early with groupings when reviewOnly is true', async () => {
12
- const result = await generateWiki({
13
- repoPath: '/tmp',
14
- reviewOnly: true,
15
- db: { prepare: () => ({ all: () => [] }) },
16
- });
17
- expect(result).toHaveProperty('reviewMode', true);
18
- expect(result).toHaveProperty('proposedGroupings');
19
- });
20
- });
21
- //# sourceMappingURL=wiki-review-mode.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wiki-review-mode.test.js","sourceRoot":"","sources":["../../../../src/__tests__/wiki/wiki-review-mode.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAA6B,MAAM,8BAA8B,CAAC;AAEvF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,IAAI,GAAyB;YACjC,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;YAChC,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,IAAI;YAChB,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAS;SAClD,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,16 +0,0 @@
1
- import type { MonographDb } from '../storage/db.js';
2
- export interface DependencyCycle {
3
- files: string[];
4
- length: number;
5
- isCrossCommunity: boolean;
6
- edgeRelations: string[];
7
- }
8
- export interface CycleDetectionResult {
9
- cycles: DependencyCycle[];
10
- totalCycles: number;
11
- filesInCycles: number;
12
- longestCycle: number;
13
- crossCommunityCycles: number;
14
- }
15
- export declare function detectCycles(db: MonographDb): CycleDetectionResult;
16
- //# sourceMappingURL=cycles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cycles.d.ts","sourceRoot":"","sources":["../../../src/analysis/cycles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAsJD,wBAAgB,YAAY,CAAC,EAAE,EAAE,WAAW,GAAG,oBAAoB,CAsGlE"}
@@ -1,203 +0,0 @@
1
- /**
2
- * Iterative Tarjan's SCC algorithm to avoid stack overflow on large graphs.
3
- * Returns arrays of node IDs, each array is one SCC.
4
- */
5
- function tarjanSCC(adjacency, nodes) {
6
- const index = new Map();
7
- const lowlink = new Map();
8
- const onStack = new Set();
9
- const stack = [];
10
- const sccs = [];
11
- let counter = 0;
12
- // Iterative DFS using explicit call stack
13
- for (const startNode of nodes) {
14
- if (index.has(startNode))
15
- continue;
16
- const callStack = [{ node: startNode, neighborIdx: 0 }];
17
- index.set(startNode, counter);
18
- lowlink.set(startNode, counter);
19
- counter++;
20
- stack.push(startNode);
21
- onStack.add(startNode);
22
- while (callStack.length > 0) {
23
- const frame = callStack[callStack.length - 1];
24
- const { node } = frame;
25
- const neighbors = adjacency.get(node) ?? [];
26
- if (frame.neighborIdx < neighbors.length) {
27
- const neighbor = neighbors[frame.neighborIdx];
28
- frame.neighborIdx++;
29
- if (!index.has(neighbor)) {
30
- index.set(neighbor, counter);
31
- lowlink.set(neighbor, counter);
32
- counter++;
33
- stack.push(neighbor);
34
- onStack.add(neighbor);
35
- callStack.push({ node: neighbor, neighborIdx: 0 });
36
- }
37
- else if (onStack.has(neighbor)) {
38
- const curLow = lowlink.get(node);
39
- const neighborIdx = index.get(neighbor);
40
- if (neighborIdx < curLow) {
41
- lowlink.set(node, neighborIdx);
42
- }
43
- }
44
- }
45
- else {
46
- // Done with this node — pop and propagate lowlink to parent
47
- callStack.pop();
48
- if (callStack.length > 0) {
49
- const parent = callStack[callStack.length - 1].node;
50
- const parentLow = lowlink.get(parent);
51
- const nodeLow = lowlink.get(node);
52
- if (nodeLow < parentLow) {
53
- lowlink.set(parent, nodeLow);
54
- }
55
- }
56
- // If this is an SCC root, pop the stack
57
- if (lowlink.get(node) === index.get(node)) {
58
- const scc = [];
59
- let w;
60
- do {
61
- w = stack.pop();
62
- onStack.delete(w);
63
- scc.push(w);
64
- } while (w !== node);
65
- sccs.push(scc);
66
- }
67
- }
68
- }
69
- }
70
- return sccs;
71
- }
72
- /**
73
- * Enumerate elementary cycles within a given SCC using DFS.
74
- * Caps at maxCycles to avoid exponential blowup.
75
- */
76
- function findCyclesInSCC(scc, adjacency, maxCycles) {
77
- const sccSet = new Set(scc);
78
- const cycles = [];
79
- const seen = new Set();
80
- for (const startNode of scc) {
81
- if (cycles.length >= maxCycles)
82
- break;
83
- const path = [startNode];
84
- const onPath = new Set([startNode]);
85
- const dfs = (node) => {
86
- if (cycles.length >= maxCycles)
87
- return;
88
- const neighbors = adjacency.get(node) ?? [];
89
- for (const neighbor of neighbors) {
90
- if (!sccSet.has(neighbor))
91
- continue;
92
- if (neighbor === startNode && path.length > 1) {
93
- // Found a cycle — normalize via smallest-index-first rotation
94
- const canonical = canonicalRotation([...path]);
95
- const key = canonical.join('\0');
96
- if (!seen.has(key)) {
97
- seen.add(key);
98
- cycles.push([...path, startNode]);
99
- }
100
- }
101
- else if (!onPath.has(neighbor)) {
102
- path.push(neighbor);
103
- onPath.add(neighbor);
104
- dfs(neighbor);
105
- path.pop();
106
- onPath.delete(neighbor);
107
- }
108
- }
109
- };
110
- dfs(startNode);
111
- }
112
- return cycles;
113
- }
114
- function canonicalRotation(cycle) {
115
- // Find index of lexicographically smallest element
116
- let minIdx = 0;
117
- for (let i = 1; i < cycle.length; i++) {
118
- if (cycle[i] < cycle[minIdx])
119
- minIdx = i;
120
- }
121
- return [...cycle.slice(minIdx), ...cycle.slice(0, minIdx)];
122
- }
123
- export function detectCycles(db) {
124
- // Load all File nodes
125
- const nodeRows = db.prepare(`SELECT id, file_path, community_id FROM nodes WHERE label = 'File'`).all();
126
- const nodeMap = new Map();
127
- for (const row of nodeRows) {
128
- nodeMap.set(row.id, row);
129
- }
130
- // Load all IMPORTS and RE_EXPORTS edges between File nodes
131
- const edgeRows = db.prepare(`SELECT e.source_id, e.target_id, e.relation
132
- FROM edges e
133
- WHERE e.relation IN ('IMPORTS', 'RE_EXPORTS')
134
- AND e.source_id IN (SELECT id FROM nodes WHERE label = 'File')
135
- AND e.target_id IN (SELECT id FROM nodes WHERE label = 'File')`).all();
136
- // Build adjacency list
137
- const adjacency = new Map();
138
- const edgeRelationMap = new Map(); // "src\0tgt" -> relation
139
- for (const row of nodeRows) {
140
- adjacency.set(row.id, []);
141
- }
142
- for (const edge of edgeRows) {
143
- const neighbors = adjacency.get(edge.source_id);
144
- if (neighbors) {
145
- neighbors.push(edge.target_id);
146
- }
147
- edgeRelationMap.set(`${edge.source_id}\0${edge.target_id}`, edge.relation);
148
- }
149
- // Run Tarjan's SCC
150
- const nodeIds = nodeRows.map(n => n.id);
151
- const sccs = tarjanSCC(adjacency, nodeIds);
152
- // SCCs with size > 1 are multi-node cycles; size-1 SCCs are cycles only if self-referencing
153
- const cycleSCCs = sccs.filter(scc => scc.length > 1 || (scc.length === 1 && adjacency.get(scc[0])?.includes(scc[0])));
154
- const cycles = [];
155
- const filesInCyclesSet = new Set();
156
- for (const scc of cycleSCCs) {
157
- const elementaryCycles = scc.length === 1
158
- ? [[scc[0], scc[0]]]
159
- : findCyclesInSCC(scc, adjacency, 20);
160
- for (const cyclePath of elementaryCycles) {
161
- // cyclePath is [...nodes, startNode] — last element = first
162
- const cycleNodes = cyclePath.slice(0, -1);
163
- for (const nodeId of cycleNodes) {
164
- filesInCyclesSet.add(nodeId);
165
- }
166
- // Collect file paths
167
- const files = cycleNodes.map(id => nodeMap.get(id)?.file_path ?? id);
168
- // isCrossCommunity: any two nodes with different community_id
169
- const communityIds = cycleNodes
170
- .map(id => nodeMap.get(id)?.community_id)
171
- .filter((c) => c !== null && c !== undefined);
172
- const uniqueCommunities = new Set(communityIds);
173
- const isCrossCommunity = uniqueCommunities.size > 1;
174
- // Collect edge relations used in this cycle
175
- const edgeRelations = [];
176
- for (let i = 0; i < cyclePath.length - 1; i++) {
177
- const key = `${cyclePath[i]}\0${cyclePath[i + 1]}`;
178
- const rel = edgeRelationMap.get(key);
179
- if (rel && !edgeRelations.includes(rel)) {
180
- edgeRelations.push(rel);
181
- }
182
- }
183
- cycles.push({
184
- files,
185
- length: cycleNodes.length,
186
- isCrossCommunity,
187
- edgeRelations,
188
- });
189
- }
190
- }
191
- // Sort by length ascending
192
- cycles.sort((a, b) => a.length - b.length);
193
- const longestCycle = cycles.length > 0 ? cycles.reduce((a, c) => Math.max(a, c.length), 0) : 0;
194
- const crossCommunityCycles = cycles.filter(c => c.isCrossCommunity).length;
195
- return {
196
- cycles,
197
- totalCycles: cycles.length,
198
- filesInCycles: filesInCyclesSet.size,
199
- longestCycle,
200
- crossCommunityCycles,
201
- };
202
- }
203
- //# sourceMappingURL=cycles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cycles.js","sourceRoot":"","sources":["../../../src/analysis/cycles.ts"],"names":[],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- export type TraceReason = 'no_references' | 'only_re_exported' | 'self_import' | 'has_references';
2
- export interface ReferenceLocation {
3
- filePath: string;
4
- line: number;
5
- col: number;
6
- }
7
- export interface ReExportChain {
8
- path: string;
9
- exportName: string;
10
- }
11
- export interface ExportTrace {
12
- file: string;
13
- exportName: string;
14
- isUsed: boolean;
15
- directReferences: ReferenceLocation[];
16
- reExportChains: ReExportChain[];
17
- reason: TraceReason;
18
- }
19
- export interface FileTrace {
20
- file: string;
21
- exports: Array<{
22
- name: string;
23
- isUsed: boolean;
24
- line: number;
25
- }>;
26
- importsFrom: string[];
27
- importedBy: string[];
28
- reExports: Array<{
29
- name: string;
30
- fromFile: string;
31
- }>;
32
- }
33
- export interface DependencyTrace {
34
- packageName: string;
35
- directImporters: string[];
36
- transitiveImporters: string[];
37
- isUsed: boolean;
38
- }
39
- export interface CloneInstance {
40
- filePath: string;
41
- startLine: number;
42
- endLine: number;
43
- similarity: number;
44
- }
45
- export interface CloneTrace {
46
- sourceFile: string;
47
- sourceLine: number;
48
- matchingInstances: CloneInstance[];
49
- groupId?: number;
50
- }
51
- export interface GraphNode {
52
- id: string;
53
- filePath?: string;
54
- name: string;
55
- isExported: boolean;
56
- startLine?: number;
57
- }
58
- interface GraphEdge {
59
- sourceId: string;
60
- targetId: string;
61
- relation: string;
62
- }
63
- interface Graph {
64
- nodes: GraphNode[];
65
- edges: GraphEdge[];
66
- }
67
- /** Build an O(1) id→node index. Pass to the trace functions when calling multiple times on the same graph. */
68
- export declare function buildNodeIndex(graph: Graph): Map<string, GraphNode>;
69
- export declare function traceExport(graph: Graph, file: string, exportName: string, nodeIndex?: Map<string, GraphNode>): ExportTrace;
70
- export declare function traceFile(graph: Graph, file: string, nodeIndex?: Map<string, GraphNode>): FileTrace;
71
- export declare function traceDependency(importEdges: Array<{
72
- sourceFile: string;
73
- targetPackage: string;
74
- }>, packageName: string): DependencyTrace;
75
- export declare function traceClone(cloneGroups: Array<{
76
- id: number;
77
- instances: CloneInstance[];
78
- }>, file: string, line: number): CloneTrace;
79
- export {};
80
- //# sourceMappingURL=trace.d.ts.map