@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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wcc.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wcc.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/graph/wcc.test.ts"],"names":[],"mappings":""}
@@ -1,91 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { weaklyConnectedComponents } from '../../graph/wcc.js';
3
- import { openDb } from '../../storage/db.js';
4
- import { join } from 'path';
5
- import { mkdtempSync } from 'fs';
6
- import { tmpdir } from 'os';
7
- function makeTempDb() {
8
- const dir = mkdtempSync(join(tmpdir(), 'monograph-wcc-test-'));
9
- return openDb(join(dir, 'test.db'));
10
- }
11
- function insertNode(db, id) {
12
- db.prepare(`INSERT INTO nodes (id, label, name, norm_label, is_exported) VALUES (?, 'Function', ?, ?, 0)`)
13
- .run(id, id, id.toLowerCase());
14
- }
15
- function insertEdge(db, src, tgt) {
16
- db.prepare(`INSERT INTO edges (id, source_id, target_id, relation, confidence, confidence_score) VALUES (?, ?, ?, 'CALLS', 'EXTRACTED', 1.0)`)
17
- .run(`${src}_${tgt}`, src, tgt);
18
- }
19
- describe('weaklyConnectedComponents', () => {
20
- it('returns empty array for empty graph', () => {
21
- const db = makeTempDb();
22
- expect(weaklyConnectedComponents(db)).toEqual([]);
23
- db.close();
24
- });
25
- it('returns single component for single node', () => {
26
- const db = makeTempDb();
27
- insertNode(db, 'a');
28
- const result = weaklyConnectedComponents(db);
29
- expect(result.length).toBe(1);
30
- expect(result[0]).toContain('a');
31
- db.close();
32
- });
33
- it('returns single component for connected chain a->b->c', () => {
34
- const db = makeTempDb();
35
- insertNode(db, 'a');
36
- insertNode(db, 'b');
37
- insertNode(db, 'c');
38
- insertEdge(db, 'a', 'b');
39
- insertEdge(db, 'b', 'c');
40
- const result = weaklyConnectedComponents(db);
41
- expect(result.length).toBe(1);
42
- expect(result[0].sort()).toEqual(['a', 'b', 'c'].sort());
43
- db.close();
44
- });
45
- it('returns two components for two disconnected pairs', () => {
46
- const db = makeTempDb();
47
- insertNode(db, 'a');
48
- insertNode(db, 'b');
49
- insertNode(db, 'c');
50
- insertNode(db, 'd');
51
- insertEdge(db, 'a', 'b');
52
- insertEdge(db, 'c', 'd');
53
- const result = weaklyConnectedComponents(db);
54
- expect(result.length).toBe(2);
55
- const allNodes = result.flat().sort();
56
- expect(allNodes).toEqual(['a', 'b', 'c', 'd'].sort());
57
- db.close();
58
- });
59
- it('treats directed edges as undirected (weak connectivity)', () => {
60
- const db = makeTempDb();
61
- // b->a but they should still be in same WCC
62
- insertNode(db, 'a');
63
- insertNode(db, 'b');
64
- insertEdge(db, 'b', 'a');
65
- const result = weaklyConnectedComponents(db);
66
- expect(result.length).toBe(1);
67
- expect(result[0].sort()).toEqual(['a', 'b'].sort());
68
- db.close();
69
- });
70
- it('returns isolated nodes as separate components', () => {
71
- const db = makeTempDb();
72
- insertNode(db, 'a');
73
- insertNode(db, 'b');
74
- insertNode(db, 'c');
75
- // no edges — 3 separate components
76
- const result = weaklyConnectedComponents(db);
77
- expect(result.length).toBe(3);
78
- db.close();
79
- });
80
- it('handles cycle within a component', () => {
81
- const db = makeTempDb();
82
- insertNode(db, 'a');
83
- insertNode(db, 'b');
84
- insertEdge(db, 'a', 'b');
85
- insertEdge(db, 'b', 'a');
86
- const result = weaklyConnectedComponents(db);
87
- expect(result.length).toBe(1);
88
- db.close();
89
- });
90
- });
91
- //# sourceMappingURL=wcc.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wcc.test.js","sourceRoot":"","sources":["../../../../src/__tests__/graph/wcc.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=grpc-extractor.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grpc-extractor.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/groups/grpc-extractor.test.ts"],"names":[],"mappings":""}
@@ -1,42 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { extractGrpcContracts } from '../../groups/grpc-extractor.js';
3
- const PROTO_SOURCE = `
4
- syntax = "proto3";
5
- package payments;
6
-
7
- service PaymentService {
8
- rpc ProcessPayment (PaymentRequest) returns (PaymentResponse);
9
- rpc RefundPayment (RefundRequest) returns (RefundResponse);
10
- }
11
-
12
- message PaymentRequest { string amount = 1; }
13
- message PaymentResponse { bool success = 1; }
14
- `;
15
- const GO_GRPC_SOURCE = `
16
- conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure())
17
- client := pb.NewPaymentServiceClient(conn)
18
- resp, err := client.ProcessPayment(ctx, req)
19
- `;
20
- describe('extractGrpcContracts', () => {
21
- it('extracts service definitions from proto files', () => {
22
- const result = extractGrpcContracts(PROTO_SOURCE, '/api.proto');
23
- const services = result.filter(c => c.role === 'provider');
24
- expect(services.some(s => s.serviceName === 'PaymentService')).toBe(true);
25
- });
26
- it('extracts RPC method names', () => {
27
- const result = extractGrpcContracts(PROTO_SOURCE, '/api.proto');
28
- const methods = result.flatMap(c => c.methods);
29
- expect(methods).toContain('ProcessPayment');
30
- expect(methods).toContain('RefundPayment');
31
- });
32
- it('detects consumer pattern in Go gRPC client code', () => {
33
- const result = extractGrpcContracts(GO_GRPC_SOURCE, '/client.go');
34
- const consumers = result.filter(c => c.role === 'consumer');
35
- expect(consumers.length).toBeGreaterThan(0);
36
- });
37
- it('returns empty for unrelated source', () => {
38
- const result = extractGrpcContracts('const x = 1;', '/utils.ts');
39
- expect(result).toHaveLength(0);
40
- });
41
- });
42
- //# sourceMappingURL=grpc-extractor.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grpc-extractor.test.js","sourceRoot":"","sources":["../../../../src/__tests__/groups/grpc-extractor.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAqB,MAAM,gCAAgC,CAAC;AAEzF,MAAM,YAAY,GAAG;;;;;;;;;;;CAWpB,CAAC;AAEF,MAAM,cAAc,GAAG;;;;CAItB,CAAC;AAEF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,MAAM,GAAG,oBAAoB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAC3D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,MAAM,GAAG,oBAAoB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,oBAAoB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAC5D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,oBAAoB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=service-boundary.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-boundary.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/groups/service-boundary.test.ts"],"names":[],"mappings":""}
@@ -1,75 +0,0 @@
1
- import { describe, it, expect, beforeAll, afterAll } from 'vitest';
2
- import { detectServiceBoundaries, assignService } from '../../groups/service-boundary.js';
3
- import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from 'fs';
4
- import { join } from 'path';
5
- import { tmpdir } from 'os';
6
- let tmpRoot;
7
- beforeAll(() => {
8
- tmpRoot = mkdtempSync(join(tmpdir(), 'monograph-svc-boundary-test-'));
9
- // service-a: has package.json
10
- mkdirSync(join(tmpRoot, 'service-a'));
11
- writeFileSync(join(tmpRoot, 'service-a', 'package.json'), JSON.stringify({ name: 'service-a' }));
12
- mkdirSync(join(tmpRoot, 'service-a', 'src'));
13
- writeFileSync(join(tmpRoot, 'service-a', 'src', 'index.ts'), '');
14
- // service-b: has Dockerfile
15
- mkdirSync(join(tmpRoot, 'service-b'));
16
- writeFileSync(join(tmpRoot, 'service-b', 'Dockerfile'), 'FROM node:20');
17
- mkdirSync(join(tmpRoot, 'service-b', 'lib'));
18
- writeFileSync(join(tmpRoot, 'service-b', 'lib', 'main.ts'), '');
19
- // service-c: has go.mod
20
- mkdirSync(join(tmpRoot, 'service-c'));
21
- writeFileSync(join(tmpRoot, 'service-c', 'go.mod'), 'module github.com/example/service-c');
22
- // shared: no markers
23
- mkdirSync(join(tmpRoot, 'shared'));
24
- writeFileSync(join(tmpRoot, 'shared', 'utils.ts'), '');
25
- });
26
- afterAll(() => {
27
- rmSync(tmpRoot, { recursive: true, force: true });
28
- });
29
- describe('detectServiceBoundaries', () => {
30
- it('detects directories with service markers', () => {
31
- const boundaries = detectServiceBoundaries(tmpRoot);
32
- expect(boundaries.length).toBeGreaterThanOrEqual(2);
33
- const paths = boundaries.map(b => b.servicePath);
34
- expect(paths.some(p => p.includes('service-a'))).toBe(true);
35
- expect(paths.some(p => p.includes('service-b') || p.includes('service-c'))).toBe(true);
36
- db?.close?.();
37
- });
38
- it('returns ServiceBoundary objects with required fields', () => {
39
- const boundaries = detectServiceBoundaries(tmpRoot);
40
- for (const b of boundaries) {
41
- expect(typeof b.servicePath).toBe('string');
42
- expect(typeof b.serviceName).toBe('string');
43
- expect(Array.isArray(b.markers)).toBe(true);
44
- expect(typeof b.confidence).toBe('number');
45
- expect(b.confidence).toBeGreaterThan(0);
46
- expect(b.confidence).toBeLessThanOrEqual(1);
47
- }
48
- });
49
- it('returns empty array when no markers found', () => {
50
- const emptyDir = mkdtempSync(join(tmpdir(), 'monograph-empty-svc-'));
51
- const boundaries = detectServiceBoundaries(emptyDir);
52
- expect(boundaries).toEqual([]);
53
- rmSync(emptyDir, { recursive: true, force: true });
54
- });
55
- });
56
- // Workaround: db was referenced accidentally above — ignore it
57
- const db = null;
58
- describe('assignService', () => {
59
- it('returns the matching service for a file inside a service directory', () => {
60
- const boundaries = detectServiceBoundaries(tmpRoot);
61
- const file = join(tmpRoot, 'service-a', 'src', 'index.ts');
62
- const result = assignService(file, boundaries);
63
- expect(result).toBeDefined();
64
- expect(result?.servicePath).toContain('service-a');
65
- });
66
- it('returns undefined for a file outside any service boundary', () => {
67
- const boundaries = detectServiceBoundaries(tmpRoot);
68
- const file = join(tmpRoot, 'shared', 'utils.ts');
69
- const result = assignService(file, boundaries);
70
- // shared has no markers so may be undefined (depends on whether shared is detected)
71
- // The test just asserts the function runs without throwing
72
- expect(typeof result === 'undefined' || typeof result === 'object').toBe(true);
73
- });
74
- });
75
- //# sourceMappingURL=service-boundary.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-boundary.test.js","sourceRoot":"","sources":["../../../../src/__tests__/groups/service-boundary.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=topic-extractor.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"topic-extractor.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/groups/topic-extractor.test.ts"],"names":[],"mappings":""}
@@ -1,37 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { extractTopicContracts } from '../../groups/topic-extractor.js';
3
- const KAFKA_PRODUCER_TS = `
4
- producer.send({ topic: 'order.created', messages: [{ value: JSON.stringify(order) }] });
5
- await producer.send({ topic: 'payment.processed', messages: [{ key: id, value: body }] });
6
- `;
7
- const KAFKA_CONSUMER_TS = `
8
- await consumer.subscribe({ topic: 'order.created', fromBeginning: true });
9
- consumer.run({ eachMessage: async ({ topic, message }) => { } });
10
- `;
11
- const RABBITMQ_TS = `
12
- channel.assertExchange('inventory.exchange', 'topic');
13
- channel.publish('inventory.exchange', 'product.updated', Buffer.from(msg));
14
- channel.bindQueue(q.queue, 'inventory.exchange', 'product.#');
15
- `;
16
- describe('extractTopicContracts', () => {
17
- it('detects Kafka producer topics', () => {
18
- const result = extractTopicContracts(KAFKA_PRODUCER_TS, '/producer.ts');
19
- const topics = result.filter(c => c.role === 'producer').map(c => c.topicName);
20
- expect(topics).toContain('order.created');
21
- expect(topics).toContain('payment.processed');
22
- });
23
- it('detects Kafka consumer topics', () => {
24
- const result = extractTopicContracts(KAFKA_CONSUMER_TS, '/consumer.ts');
25
- const topics = result.filter(c => c.role === 'consumer').map(c => c.topicName);
26
- expect(topics).toContain('order.created');
27
- });
28
- it('detects RabbitMQ exchange/routing key patterns', () => {
29
- const result = extractTopicContracts(RABBITMQ_TS, '/rabbit.ts');
30
- expect(result.some(c => c.topicName.includes('inventory'))).toBe(true);
31
- });
32
- it('returns empty for unrelated source', () => {
33
- const result = extractTopicContracts('const x = 1;', '/utils.ts');
34
- expect(result).toHaveLength(0);
35
- });
36
- });
37
- //# sourceMappingURL=topic-extractor.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"topic-extractor.test.js","sourceRoot":"","sources":["../../../../src/__tests__/groups/topic-extractor.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE,MAAM,iBAAiB,GAAG;;;CAGzB,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;CAGzB,CAAC;AAEF,MAAM,WAAW,GAAG;;;;CAInB,CAAC;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,MAAM,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,MAAM,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,qBAAqB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,qBAAqB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=git-clone.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-clone.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/ingest/git-clone.test.ts"],"names":[],"mappings":""}
@@ -1,100 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { validateGitUrl, extractRepoName, getCloneDir } from '../../ingest/git-clone.js';
3
- import os from 'os';
4
- import path from 'path';
5
- // ── validateGitUrl ─────────────────────────────────────────────────────────────
6
- describe('validateGitUrl', () => {
7
- // ── Allowed ──────────────────────────────────────────────────────────────────
8
- it('allows https:// URLs', () => {
9
- expect(() => validateGitUrl('https://github.com/org/repo.git')).not.toThrow();
10
- });
11
- it('allows http:// URLs', () => {
12
- expect(() => validateGitUrl('http://github.com/org/repo.git')).not.toThrow();
13
- });
14
- // ── Scheme blocks ─────────────────────────────────────────────────────────────
15
- it('blocks git:// scheme', () => {
16
- expect(() => validateGitUrl('git://github.com/org/repo.git')).toThrow();
17
- });
18
- it('blocks ssh:// scheme', () => {
19
- expect(() => validateGitUrl('ssh://github.com/org/repo.git')).toThrow();
20
- });
21
- it('blocks file:// scheme', () => {
22
- expect(() => validateGitUrl('file:///etc/passwd')).toThrow();
23
- });
24
- // ── Blocked hostnames ─────────────────────────────────────────────────────────
25
- it('blocks localhost', () => {
26
- expect(() => validateGitUrl('https://localhost/repo')).toThrow();
27
- });
28
- it('blocks metadata.google.internal', () => {
29
- expect(() => validateGitUrl('https://metadata.google.internal/repo')).toThrow();
30
- });
31
- it('blocks metadata.azure.com', () => {
32
- expect(() => validateGitUrl('https://metadata.azure.com/repo')).toThrow();
33
- });
34
- // ── Private IPv4 ──────────────────────────────────────────────────────────────
35
- it('blocks 127.0.0.1', () => {
36
- expect(() => validateGitUrl('https://127.0.0.1/repo')).toThrow();
37
- });
38
- it('blocks 10.0.0.1', () => {
39
- expect(() => validateGitUrl('https://10.0.0.1/repo')).toThrow();
40
- });
41
- it('blocks 192.168.1.1', () => {
42
- expect(() => validateGitUrl('https://192.168.1.1/repo')).toThrow();
43
- });
44
- it('blocks 172.16.0.1 (RFC1918)', () => {
45
- expect(() => validateGitUrl('https://172.16.0.1/repo')).toThrow();
46
- });
47
- it('blocks 172.31.255.255 (RFC1918)', () => {
48
- expect(() => validateGitUrl('https://172.31.255.255/repo')).toThrow();
49
- });
50
- it('blocks 169.254.169.254 (link-local)', () => {
51
- expect(() => validateGitUrl('https://169.254.169.254/repo')).toThrow();
52
- });
53
- // ── IPv6 private ──────────────────────────────────────────────────────────────
54
- it('blocks IPv6 loopback ::1', () => {
55
- expect(() => validateGitUrl('https://[::1]/repo')).toThrow();
56
- });
57
- it('blocks IPv6 Unique Local fc00::', () => {
58
- expect(() => validateGitUrl('https://[fc00::1]/repo')).toThrow();
59
- });
60
- it('blocks IPv6 link-local fe80::', () => {
61
- expect(() => validateGitUrl('https://[fe80::1]/repo')).toThrow();
62
- });
63
- it('blocks IPv4-mapped IPv6 ::ffff:127.0.0.1', () => {
64
- expect(() => validateGitUrl('https://[::ffff:127.0.0.1]/repo')).toThrow();
65
- });
66
- // ── Numeric IP encodings ───────────────────────────────────────────────────────
67
- it('blocks decimal IP encoding 2130706433 (127.0.0.1)', () => {
68
- expect(() => validateGitUrl('https://2130706433/repo')).toThrow();
69
- });
70
- it('blocks hex IP encoding 0x7f000001 (127.0.0.1)', () => {
71
- expect(() => validateGitUrl('https://0x7f000001/repo')).toThrow();
72
- });
73
- // ── Invalid URL ───────────────────────────────────────────────────────────────
74
- it('throws for an invalid URL', () => {
75
- expect(() => validateGitUrl('not a url')).toThrow();
76
- });
77
- });
78
- // ── extractRepoName ────────────────────────────────────────────────────────────
79
- describe('extractRepoName', () => {
80
- it('extracts repo name from https URL with .git suffix', () => {
81
- expect(extractRepoName('https://github.com/org/my-repo.git')).toBe('my-repo');
82
- });
83
- it('extracts repo name from https URL without .git suffix', () => {
84
- expect(extractRepoName('https://github.com/org/my-repo')).toBe('my-repo');
85
- });
86
- it('extracts repo name from https URL with trailing slash', () => {
87
- expect(extractRepoName('https://github.com/org/my-repo/')).toBe('my-repo');
88
- });
89
- it('extracts repo name from SSH URL', () => {
90
- expect(extractRepoName('git@github.com:org/my-repo.git')).toBe('my-repo');
91
- });
92
- });
93
- // ── getCloneDir ────────────────────────────────────────────────────────────────
94
- describe('getCloneDir', () => {
95
- it('returns path under ~/.monograph/repos/<name>', () => {
96
- const expected = path.join(os.homedir(), '.monograph', 'repos', 'my-repo');
97
- expect(getCloneDir('my-repo')).toBe(expected);
98
- });
99
- });
100
- //# sourceMappingURL=git-clone.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-clone.test.js","sourceRoot":"","sources":["../../../../src/__tests__/ingest/git-clone.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=query-memory.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-memory.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/ingest/query-memory.test.ts"],"names":[],"mappings":""}
@@ -1,116 +0,0 @@
1
- import { describe, it, expect, afterEach } from 'vitest';
2
- import { saveQueryResult } from '../../ingest/query-memory.js';
3
- import { mkdtempSync, readFileSync, rmSync } from 'fs';
4
- import { tmpdir } from 'os';
5
- import { join } from 'path';
6
- function makeTempDir() {
7
- return mkdtempSync(join(tmpdir(), 'monograph-qmem-test-'));
8
- }
9
- describe('saveQueryResult', () => {
10
- const dirs = [];
11
- afterEach(() => {
12
- for (const d of dirs) {
13
- try {
14
- rmSync(d, { recursive: true });
15
- }
16
- catch { /* ignore */ }
17
- }
18
- dirs.length = 0;
19
- });
20
- it('creates the memory directory if it does not exist', () => {
21
- const memDir = join(makeTempDir(), 'sub', 'memory');
22
- dirs.push(memDir.split('/').slice(0, -2).join('/'));
23
- saveQueryResult({ question: 'What is X?', answer: 'X is Y.', memoryDir: memDir });
24
- const { existsSync } = require('fs');
25
- expect(existsSync(memDir)).toBe(true);
26
- });
27
- it('writes a Markdown file with YAML front-matter', () => {
28
- const memDir = makeTempDir();
29
- dirs.push(memDir);
30
- const result = saveQueryResult({ question: 'What is X?', answer: 'X is Y.', memoryDir: memDir });
31
- const content = readFileSync(result.filePath, 'utf-8');
32
- expect(content).toContain('---');
33
- expect(content).toContain('type: "query"');
34
- expect(content).toContain('question: "What is X?"');
35
- expect(content).toContain('contributor: "monograph"');
36
- expect(content).toContain('# Q: What is X?');
37
- expect(content).toContain('X is Y.');
38
- });
39
- it('includes a date field in the front-matter', () => {
40
- const memDir = makeTempDir();
41
- dirs.push(memDir);
42
- const result = saveQueryResult({ question: 'Test?', answer: 'Yes.', memoryDir: memDir });
43
- const content = readFileSync(result.filePath, 'utf-8');
44
- expect(content).toMatch(/date: "\d{4}-\d{2}-\d{2}/);
45
- });
46
- it('includes source_nodes in front-matter when provided', () => {
47
- const memDir = makeTempDir();
48
- dirs.push(memDir);
49
- const result = saveQueryResult({
50
- question: 'Who calls auth?',
51
- answer: 'login calls auth.',
52
- memoryDir: memDir,
53
- sourceNodes: ['login', 'auth'],
54
- });
55
- const content = readFileSync(result.filePath, 'utf-8');
56
- expect(content).toContain('source_nodes:');
57
- expect(content).toContain('"login"');
58
- expect(content).toContain('"auth"');
59
- });
60
- it('includes Source Nodes section in body when sourceNodes provided', () => {
61
- const memDir = makeTempDir();
62
- dirs.push(memDir);
63
- const result = saveQueryResult({
64
- question: 'Q',
65
- answer: 'A',
66
- memoryDir: memDir,
67
- sourceNodes: ['nodeA'],
68
- });
69
- const content = readFileSync(result.filePath, 'utf-8');
70
- expect(content).toContain('## Source Nodes');
71
- expect(content).toContain('- nodeA');
72
- });
73
- it('limits source_nodes to 10 entries in front-matter', () => {
74
- const memDir = makeTempDir();
75
- dirs.push(memDir);
76
- const manyNodes = Array.from({ length: 15 }, (_, i) => `node${i}`);
77
- const result = saveQueryResult({
78
- question: 'Q',
79
- answer: 'A',
80
- memoryDir: memDir,
81
- sourceNodes: manyNodes,
82
- });
83
- const content = readFileSync(result.filePath, 'utf-8');
84
- // front-matter line has at most 10 quoted node names
85
- const fmLine = content.split('\n').find(l => l.startsWith('source_nodes:'));
86
- const matches = fmLine.match(/"node\d+"/g) ?? [];
87
- expect(matches.length).toBeLessThanOrEqual(10);
88
- });
89
- it('uses custom queryType in front-matter', () => {
90
- const memDir = makeTempDir();
91
- dirs.push(memDir);
92
- const result = saveQueryResult({ question: 'Q', answer: 'A', memoryDir: memDir, queryType: 'impact' });
93
- const content = readFileSync(result.filePath, 'utf-8');
94
- expect(content).toContain('type: "impact"');
95
- });
96
- it('returns the written file path and writtenAt timestamp', () => {
97
- const memDir = makeTempDir();
98
- dirs.push(memDir);
99
- const before = new Date().toISOString();
100
- const result = saveQueryResult({ question: 'Q', answer: 'A', memoryDir: memDir });
101
- const after = new Date().toISOString();
102
- expect(result.filePath).toContain(memDir);
103
- expect(result.filePath.endsWith('.md')).toBe(true);
104
- expect(result.writtenAt >= before).toBe(true);
105
- expect(result.writtenAt <= after).toBe(true);
106
- });
107
- it('escapes double quotes in the question', () => {
108
- const memDir = makeTempDir();
109
- dirs.push(memDir);
110
- const result = saveQueryResult({ question: 'Say "hello"?', answer: 'Hi.', memoryDir: memDir });
111
- const content = readFileSync(result.filePath, 'utf-8');
112
- // YAML value should escape the inner quotes
113
- expect(content).toContain('\\"hello\\"');
114
- });
115
- });
116
- //# sourceMappingURL=query-memory.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-memory.test.js","sourceRoot":"","sources":["../../../../src/__tests__/ingest/query-memory.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=transcribe.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transcribe.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/ingest/transcribe.test.ts"],"names":[],"mappings":""}
@@ -1,50 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { isUrl, buildWhisperPrompt, VIDEO_EXTENSIONS } from '../../ingest/transcribe.js';
3
- describe('isUrl', () => {
4
- it('returns true for http:// URLs', () => {
5
- expect(isUrl('http://example.com/video.mp4')).toBe(true);
6
- });
7
- it('returns true for https:// URLs', () => {
8
- expect(isUrl('https://www.youtube.com/watch?v=abc')).toBe(true);
9
- });
10
- it('returns true for www. prefixed strings', () => {
11
- expect(isUrl('www.youtube.com/watch?v=abc')).toBe(true);
12
- });
13
- it('returns false for local file paths', () => {
14
- expect(isUrl('/path/to/video.mp4')).toBe(false);
15
- expect(isUrl('./relative/video.mp4')).toBe(false);
16
- expect(isUrl('video.mp4')).toBe(false);
17
- });
18
- });
19
- describe('buildWhisperPrompt', () => {
20
- it('returns fallback prompt for empty labels', () => {
21
- const prompt = buildWhisperPrompt([]);
22
- expect(prompt).toContain('punctuation');
23
- });
24
- it('includes top 5 labels in the prompt', () => {
25
- const labels = ['React', 'TypeScript', 'GraphQL', 'Node.js', 'Webpack', 'Babel'];
26
- const prompt = buildWhisperPrompt(labels);
27
- expect(prompt).toContain('React');
28
- expect(prompt).toContain('TypeScript');
29
- expect(prompt).toContain('GraphQL');
30
- // 6th label should not appear
31
- expect(prompt).not.toContain('Babel');
32
- });
33
- it('produces a domain hint in the expected format', () => {
34
- const prompt = buildWhisperPrompt(['Auth', 'JWT']);
35
- expect(prompt).toMatch(/Technical discussion about Auth, JWT/);
36
- });
37
- });
38
- describe('VIDEO_EXTENSIONS', () => {
39
- it('includes common video extensions', () => {
40
- expect(VIDEO_EXTENSIONS.has('.mp4')).toBe(true);
41
- expect(VIDEO_EXTENSIONS.has('.mov')).toBe(true);
42
- expect(VIDEO_EXTENSIONS.has('.webm')).toBe(true);
43
- });
44
- it('includes common audio extensions', () => {
45
- expect(VIDEO_EXTENSIONS.has('.mp3')).toBe(true);
46
- expect(VIDEO_EXTENSIONS.has('.wav')).toBe(true);
47
- expect(VIDEO_EXTENSIONS.has('.m4a')).toBe(true);
48
- });
49
- });
50
- //# sourceMappingURL=transcribe.test.js.map