@yalehwang/archguard 0.1.23 → 0.1.31

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 (689) hide show
  1. package/README.md +80 -23
  2. package/dist/analysis/atlas-metrics-analysis.d.ts +11 -0
  3. package/dist/analysis/atlas-metrics-analysis.d.ts.map +1 -0
  4. package/dist/analysis/atlas-metrics-analysis.js +17 -0
  5. package/dist/analysis/atlas-metrics-analysis.js.map +1 -0
  6. package/dist/analysis/fitness/dependency-checker.d.ts +4 -0
  7. package/dist/analysis/fitness/dependency-checker.d.ts.map +1 -0
  8. package/dist/analysis/fitness/dependency-checker.js +16 -0
  9. package/dist/analysis/fitness/dependency-checker.js.map +1 -0
  10. package/dist/analysis/fitness/rule-evaluator.d.ts +6 -0
  11. package/dist/analysis/fitness/rule-evaluator.d.ts.map +1 -0
  12. package/dist/analysis/fitness/rule-evaluator.js +64 -0
  13. package/dist/analysis/fitness/rule-evaluator.js.map +1 -0
  14. package/dist/analysis/fitness/rule-types.d.ts +34 -0
  15. package/dist/analysis/fitness/rule-types.d.ts.map +1 -0
  16. package/dist/analysis/fitness/rule-types.js +2 -0
  17. package/dist/analysis/fitness/rule-types.js.map +1 -0
  18. package/dist/analysis/gim/direction-hint.d.ts +18 -0
  19. package/dist/analysis/gim/direction-hint.d.ts.map +1 -0
  20. package/dist/analysis/gim/direction-hint.js +76 -0
  21. package/dist/analysis/gim/direction-hint.js.map +1 -0
  22. package/dist/analysis/gim/gim-loss-evaluator.d.ts +14 -0
  23. package/dist/analysis/gim/gim-loss-evaluator.d.ts.map +1 -0
  24. package/dist/analysis/gim/gim-loss-evaluator.js +80 -0
  25. package/dist/analysis/gim/gim-loss-evaluator.js.map +1 -0
  26. package/dist/analysis/gini.d.ts +2 -0
  27. package/dist/analysis/gini.d.ts.map +1 -0
  28. package/dist/analysis/gini.js +12 -0
  29. package/dist/analysis/gini.js.map +1 -0
  30. package/dist/analysis/git-history/git-log-reader.d.ts +24 -0
  31. package/dist/analysis/git-history/git-log-reader.d.ts.map +1 -0
  32. package/dist/analysis/git-history/git-log-reader.js +117 -0
  33. package/dist/analysis/git-history/git-log-reader.js.map +1 -0
  34. package/dist/analysis/git-history/history-aggregator.d.ts +19 -0
  35. package/dist/analysis/git-history/history-aggregator.d.ts.map +1 -0
  36. package/dist/analysis/git-history/history-aggregator.js +291 -0
  37. package/dist/analysis/git-history/history-aggregator.js.map +1 -0
  38. package/dist/analysis/git-history/history-query.d.ts +111 -0
  39. package/dist/analysis/git-history/history-query.d.ts.map +1 -0
  40. package/dist/analysis/git-history/history-query.js +201 -0
  41. package/dist/analysis/git-history/history-query.js.map +1 -0
  42. package/dist/analysis/git-history/index.d.ts +4 -0
  43. package/dist/analysis/git-history/index.d.ts.map +1 -0
  44. package/dist/analysis/git-history/index.js +4 -0
  45. package/dist/analysis/git-history/index.js.map +1 -0
  46. package/dist/analysis/metric-vector-builder.d.ts +5 -0
  47. package/dist/analysis/metric-vector-builder.d.ts.map +1 -0
  48. package/dist/analysis/metric-vector-builder.js +47 -0
  49. package/dist/analysis/metric-vector-builder.js.map +1 -0
  50. package/dist/analysis/metrics-history-reader.d.ts +4 -0
  51. package/dist/analysis/metrics-history-reader.d.ts.map +1 -0
  52. package/dist/analysis/metrics-history-reader.js +24 -0
  53. package/dist/analysis/metrics-history-reader.js.map +1 -0
  54. package/dist/analysis/package-metrics-analysis.d.ts +18 -0
  55. package/dist/analysis/package-metrics-analysis.d.ts.map +1 -0
  56. package/dist/analysis/package-metrics-analysis.js +59 -0
  57. package/dist/analysis/package-metrics-analysis.js.map +1 -0
  58. package/dist/analysis/project-semantics-loader.d.ts +3 -0
  59. package/dist/analysis/project-semantics-loader.d.ts.map +1 -0
  60. package/dist/analysis/project-semantics-loader.js +25 -0
  61. package/dist/analysis/project-semantics-loader.js.map +1 -0
  62. package/dist/analysis/snapshot-diff.d.ts +19 -0
  63. package/dist/analysis/snapshot-diff.d.ts.map +1 -0
  64. package/dist/analysis/snapshot-diff.js +54 -0
  65. package/dist/analysis/snapshot-diff.js.map +1 -0
  66. package/dist/analysis/snapshot-store.d.ts +15 -0
  67. package/dist/analysis/snapshot-store.d.ts.map +1 -0
  68. package/dist/analysis/snapshot-store.js +96 -0
  69. package/dist/analysis/snapshot-store.js.map +1 -0
  70. package/dist/analysis/test-analyzer.d.ts +4 -1
  71. package/dist/analysis/test-analyzer.d.ts.map +1 -1
  72. package/dist/analysis/test-analyzer.js +67 -14
  73. package/dist/analysis/test-analyzer.js.map +1 -1
  74. package/dist/analysis/test-coverage-mapper.d.ts +1 -1
  75. package/dist/analysis/test-coverage-mapper.d.ts.map +1 -1
  76. package/dist/analysis/test-coverage-mapper.js +32 -2
  77. package/dist/analysis/test-coverage-mapper.js.map +1 -1
  78. package/dist/analysis/test-issue-detector.d.ts +1 -1
  79. package/dist/analysis/test-issue-detector.d.ts.map +1 -1
  80. package/dist/analysis/test-issue-detector.js +7 -2
  81. package/dist/analysis/test-issue-detector.js.map +1 -1
  82. package/dist/analysis/test-pattern-advisor.d.ts +2 -0
  83. package/dist/analysis/test-pattern-advisor.d.ts.map +1 -0
  84. package/dist/analysis/test-pattern-advisor.js +59 -0
  85. package/dist/analysis/test-pattern-advisor.js.map +1 -0
  86. package/dist/cli/analyze/normalize-to-diagrams.d.ts +9 -0
  87. package/dist/cli/analyze/normalize-to-diagrams.d.ts.map +1 -1
  88. package/dist/cli/analyze/normalize-to-diagrams.js +35 -26
  89. package/dist/cli/analyze/normalize-to-diagrams.js.map +1 -1
  90. package/dist/cli/analyze/run-analysis.d.ts +1 -1
  91. package/dist/cli/analyze/run-analysis.d.ts.map +1 -1
  92. package/dist/cli/analyze/run-analysis.js +186 -32
  93. package/dist/cli/analyze/run-analysis.js.map +1 -1
  94. package/dist/cli/{cache-manager.d.ts → cache/cache-manager.d.ts} +1 -1
  95. package/dist/cli/cache/cache-manager.d.ts.map +1 -0
  96. package/dist/cli/{cache-manager.js → cache/cache-manager.js} +2 -2
  97. package/dist/cli/cache/cache-manager.js.map +1 -0
  98. package/dist/cli/cognitive/ccb-assembler.d.ts +8 -0
  99. package/dist/cli/cognitive/ccb-assembler.d.ts.map +1 -0
  100. package/dist/cli/cognitive/ccb-assembler.js +213 -0
  101. package/dist/cli/cognitive/ccb-assembler.js.map +1 -0
  102. package/dist/cli/cognitive/ccb-reader.d.ts +7 -0
  103. package/dist/cli/cognitive/ccb-reader.d.ts.map +1 -0
  104. package/dist/cli/cognitive/ccb-reader.js +27 -0
  105. package/dist/cli/cognitive/ccb-reader.js.map +1 -0
  106. package/dist/cli/cognitive/ccb-schema.d.ts +36 -0
  107. package/dist/cli/cognitive/ccb-schema.d.ts.map +1 -0
  108. package/dist/cli/cognitive/ccb-schema.js +2 -0
  109. package/dist/cli/cognitive/ccb-schema.js.map +1 -0
  110. package/dist/cli/cognitive/ccb-writer.d.ts +3 -0
  111. package/dist/cli/cognitive/ccb-writer.d.ts.map +1 -0
  112. package/dist/cli/cognitive/ccb-writer.js +12 -0
  113. package/dist/cli/cognitive/ccb-writer.js.map +1 -0
  114. package/dist/cli/commands/analyze.d.ts.map +1 -1
  115. package/dist/cli/commands/analyze.js +23 -4
  116. package/dist/cli/commands/analyze.js.map +1 -1
  117. package/dist/cli/commands/cache.js +2 -2
  118. package/dist/cli/commands/cache.js.map +1 -1
  119. package/dist/cli/commands/check.d.ts +3 -0
  120. package/dist/cli/commands/check.d.ts.map +1 -0
  121. package/dist/cli/commands/check.js +48 -0
  122. package/dist/cli/commands/check.js.map +1 -0
  123. package/dist/cli/commands/diff.d.ts +3 -0
  124. package/dist/cli/commands/diff.d.ts.map +1 -0
  125. package/dist/cli/commands/diff.js +89 -0
  126. package/dist/cli/commands/diff.js.map +1 -0
  127. package/dist/cli/commands/init.d.ts.map +1 -1
  128. package/dist/cli/commands/init.js +1 -2
  129. package/dist/cli/commands/init.js.map +1 -1
  130. package/dist/cli/commands/query.d.ts +51 -0
  131. package/dist/cli/commands/query.d.ts.map +1 -1
  132. package/dist/cli/commands/query.js +373 -17
  133. package/dist/cli/commands/query.js.map +1 -1
  134. package/dist/cli/config-loader.d.ts +50 -0
  135. package/dist/cli/config-loader.d.ts.map +1 -1
  136. package/dist/cli/config-loader.js +33 -0
  137. package/dist/cli/config-loader.js.map +1 -1
  138. package/dist/cli/{errors.d.ts → errors/index.d.ts} +16 -2
  139. package/dist/cli/errors/index.d.ts.map +1 -0
  140. package/dist/cli/{error-handler.js → errors/index.js} +32 -2
  141. package/dist/cli/errors/index.js.map +1 -0
  142. package/dist/cli/git-history/git-log-reader.d.ts +2 -0
  143. package/dist/cli/git-history/git-log-reader.d.ts.map +1 -0
  144. package/dist/cli/git-history/git-log-reader.js +2 -0
  145. package/dist/cli/git-history/git-log-reader.js.map +1 -0
  146. package/dist/cli/git-history/history-aggregator.d.ts +2 -0
  147. package/dist/cli/git-history/history-aggregator.d.ts.map +1 -0
  148. package/dist/cli/git-history/history-aggregator.js +2 -0
  149. package/dist/cli/git-history/history-aggregator.js.map +1 -0
  150. package/dist/cli/git-history/history-loader.d.ts +11 -0
  151. package/dist/cli/git-history/history-loader.d.ts.map +1 -0
  152. package/dist/cli/git-history/history-loader.js +30 -0
  153. package/dist/cli/git-history/history-loader.js.map +1 -0
  154. package/dist/cli/git-history/history-query.d.ts +2 -0
  155. package/dist/cli/git-history/history-query.d.ts.map +1 -0
  156. package/dist/cli/git-history/history-query.js +2 -0
  157. package/dist/cli/git-history/history-query.js.map +1 -0
  158. package/dist/cli/git-history/history-writer.d.ts +3 -0
  159. package/dist/cli/git-history/history-writer.d.ts.map +1 -0
  160. package/dist/cli/git-history/history-writer.js +14 -0
  161. package/dist/cli/git-history/history-writer.js.map +1 -0
  162. package/dist/cli/index.d.ts.map +1 -1
  163. package/dist/cli/index.js +5 -1
  164. package/dist/cli/index.js.map +1 -1
  165. package/dist/cli/mcp/analyze-tool.d.ts.map +1 -1
  166. package/dist/cli/mcp/analyze-tool.js +10 -4
  167. package/dist/cli/mcp/analyze-tool.js.map +1 -1
  168. package/dist/cli/mcp/mcp-server.d.ts.map +1 -1
  169. package/dist/cli/mcp/mcp-server.js +166 -47
  170. package/dist/cli/mcp/mcp-server.js.map +1 -1
  171. package/dist/cli/mcp/tools/atlas-analytics-tools.d.ts +7 -0
  172. package/dist/cli/mcp/tools/atlas-analytics-tools.d.ts.map +1 -0
  173. package/dist/cli/mcp/tools/atlas-analytics-tools.js +190 -0
  174. package/dist/cli/mcp/tools/atlas-analytics-tools.js.map +1 -0
  175. package/dist/cli/mcp/tools/call-graph-tools.d.ts +3 -0
  176. package/dist/cli/mcp/tools/call-graph-tools.d.ts.map +1 -0
  177. package/dist/cli/mcp/tools/call-graph-tools.js +47 -0
  178. package/dist/cli/mcp/tools/call-graph-tools.js.map +1 -0
  179. package/dist/cli/mcp/tools/ccb-tool.d.ts +3 -0
  180. package/dist/cli/mcp/tools/ccb-tool.d.ts.map +1 -0
  181. package/dist/cli/mcp/tools/ccb-tool.js +63 -0
  182. package/dist/cli/mcp/tools/ccb-tool.js.map +1 -0
  183. package/dist/cli/mcp/tools/cognitive-summary-tool.d.ts +3 -0
  184. package/dist/cli/mcp/tools/cognitive-summary-tool.d.ts.map +1 -0
  185. package/dist/cli/mcp/tools/cognitive-summary-tool.js +118 -0
  186. package/dist/cli/mcp/tools/cognitive-summary-tool.js.map +1 -0
  187. package/dist/cli/mcp/tools/gim-tools.d.ts +3 -0
  188. package/dist/cli/mcp/tools/gim-tools.d.ts.map +1 -0
  189. package/dist/cli/mcp/tools/gim-tools.js +78 -0
  190. package/dist/cli/mcp/tools/gim-tools.js.map +1 -0
  191. package/dist/cli/mcp/tools/git-history-analyze-tool.d.ts +3 -0
  192. package/dist/cli/mcp/tools/git-history-analyze-tool.d.ts.map +1 -0
  193. package/dist/cli/mcp/tools/git-history-analyze-tool.js +172 -0
  194. package/dist/cli/mcp/tools/git-history-analyze-tool.js.map +1 -0
  195. package/dist/cli/mcp/tools/git-history-evidence-pack-tool.d.ts +3 -0
  196. package/dist/cli/mcp/tools/git-history-evidence-pack-tool.d.ts.map +1 -0
  197. package/dist/cli/mcp/tools/git-history-evidence-pack-tool.js +87 -0
  198. package/dist/cli/mcp/tools/git-history-evidence-pack-tool.js.map +1 -0
  199. package/dist/cli/mcp/tools/git-history-tools.d.ts +3 -0
  200. package/dist/cli/mcp/tools/git-history-tools.d.ts.map +1 -0
  201. package/dist/cli/mcp/tools/git-history-tools.js +125 -0
  202. package/dist/cli/mcp/tools/git-history-tools.js.map +1 -0
  203. package/dist/cli/mcp/tools/metric-trend-tools.d.ts +8 -0
  204. package/dist/cli/mcp/tools/metric-trend-tools.d.ts.map +1 -0
  205. package/dist/cli/mcp/tools/metric-trend-tools.js +50 -0
  206. package/dist/cli/mcp/tools/metric-trend-tools.js.map +1 -0
  207. package/dist/cli/mcp/tools/package-metrics-tools.d.ts +7 -0
  208. package/dist/cli/mcp/tools/package-metrics-tools.d.ts.map +1 -0
  209. package/dist/cli/mcp/tools/package-metrics-tools.js +62 -0
  210. package/dist/cli/mcp/tools/package-metrics-tools.js.map +1 -0
  211. package/dist/cli/mcp/tools/test-analysis-tools.d.ts.map +1 -1
  212. package/dist/cli/mcp/tools/test-analysis-tools.js +75 -84
  213. package/dist/cli/mcp/tools/test-analysis-tools.js.map +1 -1
  214. package/dist/cli/metrics-history-writer.d.ts +16 -0
  215. package/dist/cli/metrics-history-writer.d.ts.map +1 -0
  216. package/dist/cli/metrics-history-writer.js +16 -0
  217. package/dist/cli/metrics-history-writer.js.map +1 -0
  218. package/dist/cli/processors/arch-json-provider-types.d.ts +12 -0
  219. package/dist/cli/processors/arch-json-provider-types.d.ts.map +1 -0
  220. package/dist/cli/processors/arch-json-provider-types.js +2 -0
  221. package/dist/cli/processors/arch-json-provider-types.js.map +1 -0
  222. package/dist/cli/processors/arch-json-provider.d.ts +4 -13
  223. package/dist/cli/processors/arch-json-provider.d.ts.map +1 -1
  224. package/dist/cli/processors/arch-json-provider.js +54 -76
  225. package/dist/cli/processors/arch-json-provider.js.map +1 -1
  226. package/dist/cli/processors/arch-json-utils.d.ts +4 -0
  227. package/dist/cli/processors/arch-json-utils.d.ts.map +1 -0
  228. package/dist/cli/processors/arch-json-utils.js +73 -0
  229. package/dist/cli/processors/arch-json-utils.js.map +1 -0
  230. package/dist/cli/processors/diagram-output-router.d.ts +3 -1
  231. package/dist/cli/processors/diagram-output-router.d.ts.map +1 -1
  232. package/dist/cli/processors/diagram-output-router.js +28 -3
  233. package/dist/cli/processors/diagram-output-router.js.map +1 -1
  234. package/dist/cli/processors/diagram-pipeline-runner.d.ts +20 -0
  235. package/dist/cli/processors/diagram-pipeline-runner.d.ts.map +1 -0
  236. package/dist/cli/processors/diagram-pipeline-runner.js +171 -0
  237. package/dist/cli/processors/diagram-pipeline-runner.js.map +1 -0
  238. package/dist/cli/processors/diagram-processor.d.ts +11 -8
  239. package/dist/cli/processors/diagram-processor.d.ts.map +1 -1
  240. package/dist/cli/processors/diagram-processor.js +19 -148
  241. package/dist/cli/processors/diagram-processor.js.map +1 -1
  242. package/dist/cli/processors/query-scope-collector.d.ts +11 -0
  243. package/dist/cli/processors/query-scope-collector.d.ts.map +1 -0
  244. package/dist/cli/processors/query-scope-collector.js +44 -0
  245. package/dist/cli/processors/query-scope-collector.js.map +1 -0
  246. package/dist/cli/processors/test-coverage-writer.d.ts +4 -0
  247. package/dist/cli/processors/test-coverage-writer.d.ts.map +1 -0
  248. package/dist/cli/processors/test-coverage-writer.js +22 -0
  249. package/dist/cli/processors/test-coverage-writer.js.map +1 -0
  250. package/dist/cli/processors/worker-pool-factory.d.ts +6 -0
  251. package/dist/cli/processors/worker-pool-factory.d.ts.map +1 -0
  252. package/dist/cli/processors/worker-pool-factory.js +22 -0
  253. package/dist/cli/processors/worker-pool-factory.js.map +1 -0
  254. package/dist/cli/{progress.d.ts → progress/index.d.ts} +1 -1
  255. package/dist/cli/progress/index.d.ts.map +1 -0
  256. package/dist/cli/{progress.js → progress/index.js} +1 -1
  257. package/dist/cli/progress/index.js.map +1 -0
  258. package/dist/cli/query/arch-index-builder.d.ts +1 -3
  259. package/dist/cli/query/arch-index-builder.d.ts.map +1 -1
  260. package/dist/cli/query/arch-index-builder.js +1 -125
  261. package/dist/cli/query/arch-index-builder.js.map +1 -1
  262. package/dist/cli/query/arch-index.d.ts +2 -16
  263. package/dist/cli/query/arch-index.d.ts.map +1 -1
  264. package/dist/cli/query/arch-index.js +1 -1
  265. package/dist/cli/query/arch-index.js.map +1 -1
  266. package/dist/cli/query/engine-loader.d.ts +9 -1
  267. package/dist/cli/query/engine-loader.d.ts.map +1 -1
  268. package/dist/cli/query/engine-loader.js +5 -1
  269. package/dist/cli/query/engine-loader.js.map +1 -1
  270. package/dist/cli/query/query-artifacts.d.ts.map +1 -1
  271. package/dist/cli/query/query-artifacts.js +2 -1
  272. package/dist/cli/query/query-artifacts.js.map +1 -1
  273. package/dist/cli/query/query-engine.d.ts +3 -105
  274. package/dist/cli/query/query-engine.d.ts.map +1 -1
  275. package/dist/cli/query/query-engine.js +1 -417
  276. package/dist/cli/query/query-engine.js.map +1 -1
  277. package/dist/cli/utils/java-project-structure-detector.js +1 -1
  278. package/dist/cli/utils/java-project-structure-detector.js.map +1 -1
  279. package/dist/cli/utils/kotlin-project-structure-detector.d.ts +7 -0
  280. package/dist/cli/utils/kotlin-project-structure-detector.d.ts.map +1 -0
  281. package/dist/cli/utils/kotlin-project-structure-detector.js +101 -0
  282. package/dist/cli/utils/kotlin-project-structure-detector.js.map +1 -0
  283. package/dist/cli/utils/output-path-resolver.d.ts.map +1 -1
  284. package/dist/cli/utils/output-path-resolver.js.map +1 -1
  285. package/dist/cli/utils/project-language-detector.d.ts +1 -1
  286. package/dist/cli/utils/project-language-detector.d.ts.map +1 -1
  287. package/dist/cli/utils/project-language-detector.js +5 -1
  288. package/dist/cli/utils/project-language-detector.js.map +1 -1
  289. package/dist/cli/utils/project-structure-detector.js +3 -3
  290. package/dist/cli/utils/project-structure-detector.js.map +1 -1
  291. package/dist/cli/utils/test-output-writer.d.ts +1 -1
  292. package/dist/cli/utils/test-output-writer.d.ts.map +1 -1
  293. package/dist/cli/utils/test-output-writer.js.map +1 -1
  294. package/dist/core/entity-type-registry.d.ts +10 -0
  295. package/dist/core/entity-type-registry.d.ts.map +1 -0
  296. package/dist/core/entity-type-registry.js +17 -0
  297. package/dist/core/entity-type-registry.js.map +1 -0
  298. package/dist/core/interfaces/dependency.d.ts +1 -1
  299. package/dist/core/interfaces/dependency.d.ts.map +1 -1
  300. package/dist/core/interfaces/index.d.ts +2 -0
  301. package/dist/core/interfaces/index.d.ts.map +1 -1
  302. package/dist/core/interfaces/index.js.map +1 -1
  303. package/dist/core/interfaces/language-plugin.d.ts +8 -1
  304. package/dist/core/interfaces/language-plugin.d.ts.map +1 -1
  305. package/dist/core/interfaces/parser-facade.d.ts +5 -0
  306. package/dist/core/interfaces/parser-facade.d.ts.map +1 -0
  307. package/dist/core/interfaces/parser-facade.js +2 -0
  308. package/dist/core/interfaces/parser-facade.js.map +1 -0
  309. package/dist/core/interfaces/renderer-facade.d.ts +8 -0
  310. package/dist/core/interfaces/renderer-facade.d.ts.map +1 -0
  311. package/dist/core/interfaces/renderer-facade.js +2 -0
  312. package/dist/core/interfaces/renderer-facade.js.map +1 -0
  313. package/dist/core/interfaces/validation.d.ts.map +1 -1
  314. package/dist/core/plugin-registry.d.ts.map +1 -1
  315. package/dist/core/plugin-registry.js +2 -0
  316. package/dist/core/plugin-registry.js.map +1 -1
  317. package/dist/core/query/arch-index-builder.d.ts +4 -0
  318. package/dist/core/query/arch-index-builder.d.ts.map +1 -0
  319. package/dist/core/query/arch-index-builder.js +126 -0
  320. package/dist/core/query/arch-index-builder.js.map +1 -0
  321. package/dist/core/query/arch-index.d.ts +17 -0
  322. package/dist/core/query/arch-index.d.ts.map +1 -0
  323. package/dist/core/query/arch-index.js +2 -0
  324. package/dist/core/query/arch-index.js.map +1 -0
  325. package/dist/core/query/arch-metrics-cognitive.d.ts +32 -0
  326. package/dist/core/query/arch-metrics-cognitive.d.ts.map +1 -0
  327. package/dist/core/query/arch-metrics-cognitive.js +60 -0
  328. package/dist/core/query/arch-metrics-cognitive.js.map +1 -0
  329. package/dist/core/query/arch-metrics-quality.d.ts +24 -0
  330. package/dist/core/query/arch-metrics-quality.d.ts.map +1 -0
  331. package/dist/core/query/arch-metrics-quality.js +86 -0
  332. package/dist/core/query/arch-metrics-quality.js.map +1 -0
  333. package/dist/core/query/arch-metrics-structure.d.ts +43 -0
  334. package/dist/core/query/arch-metrics-structure.d.ts.map +1 -0
  335. package/dist/core/query/arch-metrics-structure.js +291 -0
  336. package/dist/core/query/arch-metrics-structure.js.map +1 -0
  337. package/dist/core/query/arch-metrics.d.ts +54 -0
  338. package/dist/core/query/arch-metrics.d.ts.map +1 -0
  339. package/dist/core/query/arch-metrics.js +42 -0
  340. package/dist/core/query/arch-metrics.js.map +1 -0
  341. package/dist/core/query/edge-list-serializer.d.ts +4 -0
  342. package/dist/core/query/edge-list-serializer.d.ts.map +1 -0
  343. package/dist/core/query/edge-list-serializer.js +24 -0
  344. package/dist/core/query/edge-list-serializer.js.map +1 -0
  345. package/dist/core/query/entity-query-service.d.ts +15 -0
  346. package/dist/core/query/entity-query-service.d.ts.map +1 -0
  347. package/dist/core/query/entity-query-service.js +51 -0
  348. package/dist/core/query/entity-query-service.js.map +1 -0
  349. package/dist/core/query/extension-accessor.d.ts +15 -0
  350. package/dist/core/query/extension-accessor.d.ts.map +1 -0
  351. package/dist/core/query/extension-accessor.js +28 -0
  352. package/dist/core/query/extension-accessor.js.map +1 -0
  353. package/dist/core/query/index.d.ts +8 -0
  354. package/dist/core/query/index.d.ts.map +1 -0
  355. package/dist/core/query/index.js +6 -0
  356. package/dist/core/query/index.js.map +1 -0
  357. package/dist/core/query/output-scope-filter.d.ts +6 -0
  358. package/dist/core/query/output-scope-filter.d.ts.map +1 -0
  359. package/dist/core/query/output-scope-filter.js +45 -0
  360. package/dist/core/query/output-scope-filter.js.map +1 -0
  361. package/dist/core/query/query-engine.d.ts +116 -0
  362. package/dist/core/query/query-engine.d.ts.map +1 -0
  363. package/dist/core/query/query-engine.js +105 -0
  364. package/dist/core/query/query-engine.js.map +1 -0
  365. package/dist/core/query/relation-query-service.d.ts +21 -0
  366. package/dist/core/query/relation-query-service.d.ts.map +1 -0
  367. package/dist/core/query/relation-query-service.js +124 -0
  368. package/dist/core/query/relation-query-service.js.map +1 -0
  369. package/dist/mermaid/auto-repair.d.ts +1 -1
  370. package/dist/mermaid/auto-repair.d.ts.map +1 -1
  371. package/dist/mermaid/auto-repair.js +6 -6
  372. package/dist/mermaid/auto-repair.js.map +1 -1
  373. package/dist/mermaid/cpp-package-flowchart-generator.js +1 -1
  374. package/dist/mermaid/cpp-package-flowchart-generator.js.map +1 -1
  375. package/dist/mermaid/diagram-generator.d.ts +2 -1
  376. package/dist/mermaid/diagram-generator.d.ts.map +1 -1
  377. package/dist/mermaid/diagram-generator.js +17 -16
  378. package/dist/mermaid/diagram-generator.js.map +1 -1
  379. package/dist/mermaid/generator-formatting.d.ts +1 -1
  380. package/dist/mermaid/generator-formatting.d.ts.map +1 -1
  381. package/dist/mermaid/generator-formatting.js +2 -0
  382. package/dist/mermaid/generator-formatting.js.map +1 -1
  383. package/dist/mermaid/generator-validation.d.ts.map +1 -1
  384. package/dist/mermaid/generator-validation.js.map +1 -1
  385. package/dist/mermaid/generator.d.ts +5 -10
  386. package/dist/mermaid/generator.d.ts.map +1 -1
  387. package/dist/mermaid/generator.js +192 -227
  388. package/dist/mermaid/generator.js.map +1 -1
  389. package/dist/mermaid/grouper.d.ts.map +1 -1
  390. package/dist/mermaid/grouper.js.map +1 -1
  391. package/dist/mermaid/test-coverage-renderer.d.ts +1 -1
  392. package/dist/mermaid/test-coverage-renderer.d.ts.map +1 -1
  393. package/dist/mermaid/ts-module-graph-renderer.d.ts +6 -2
  394. package/dist/mermaid/ts-module-graph-renderer.d.ts.map +1 -1
  395. package/dist/mermaid/ts-module-graph-renderer.js +49 -2
  396. package/dist/mermaid/ts-module-graph-renderer.js.map +1 -1
  397. package/dist/mermaid/validator-quality.js +1 -1
  398. package/dist/mermaid/validator-quality.js.map +1 -1
  399. package/dist/mermaid/validator-render.js +1 -1
  400. package/dist/mermaid/validator-render.js.map +1 -1
  401. package/dist/parser/archjson-aggregator.d.ts +1 -0
  402. package/dist/parser/archjson-aggregator.d.ts.map +1 -1
  403. package/dist/parser/archjson-aggregator.js +37 -7
  404. package/dist/parser/archjson-aggregator.js.map +1 -1
  405. package/dist/parser/call-edge-extractor.d.ts +13 -0
  406. package/dist/parser/call-edge-extractor.d.ts.map +1 -0
  407. package/dist/parser/call-edge-extractor.js +70 -0
  408. package/dist/parser/call-edge-extractor.js.map +1 -0
  409. package/dist/parser/metrics-calculator.d.ts.map +1 -1
  410. package/dist/parser/metrics-calculator.js +2 -1
  411. package/dist/parser/metrics-calculator.js.map +1 -1
  412. package/dist/parser/parallel-parser.d.ts +2 -1
  413. package/dist/parser/parallel-parser.d.ts.map +1 -1
  414. package/dist/parser/parallel-parser.js +4 -2
  415. package/dist/parser/parallel-parser.js.map +1 -1
  416. package/dist/parser/relation-extractor.d.ts +1 -0
  417. package/dist/parser/relation-extractor.d.ts.map +1 -1
  418. package/dist/parser/relation-extractor.js +84 -4
  419. package/dist/parser/relation-extractor.js.map +1 -1
  420. package/dist/parser/typescript-parser.d.ts +2 -0
  421. package/dist/parser/typescript-parser.d.ts.map +1 -1
  422. package/dist/parser/typescript-parser.js +44 -5
  423. package/dist/parser/typescript-parser.js.map +1 -1
  424. package/dist/plugins/cpp/archjson-mapper.d.ts.map +1 -1
  425. package/dist/plugins/cpp/archjson-mapper.js.map +1 -1
  426. package/dist/plugins/cpp/builders/class-builder.d.ts.map +1 -1
  427. package/dist/plugins/cpp/builders/class-builder.js +6 -1
  428. package/dist/plugins/cpp/builders/class-builder.js.map +1 -1
  429. package/dist/plugins/cpp/index.d.ts +3 -3
  430. package/dist/plugins/cpp/index.d.ts.map +1 -1
  431. package/dist/plugins/cpp/index.js +36 -7
  432. package/dist/plugins/cpp/index.js.map +1 -1
  433. package/dist/plugins/cpp/tree-sitter-bridge.d.ts.map +1 -1
  434. package/dist/plugins/cpp/tree-sitter-bridge.js +10 -7
  435. package/dist/plugins/cpp/tree-sitter-bridge.js.map +1 -1
  436. package/dist/plugins/golang/archjson-mapper.d.ts +3 -1
  437. package/dist/plugins/golang/archjson-mapper.d.ts.map +1 -1
  438. package/dist/plugins/golang/archjson-mapper.js +56 -1
  439. package/dist/plugins/golang/archjson-mapper.js.map +1 -1
  440. package/dist/plugins/golang/atlas/behavior-analyzer.d.ts +2 -1
  441. package/dist/plugins/golang/atlas/behavior-analyzer.d.ts.map +1 -1
  442. package/dist/plugins/golang/atlas/behavior-analyzer.js +2 -2
  443. package/dist/plugins/golang/atlas/behavior-analyzer.js.map +1 -1
  444. package/dist/plugins/golang/atlas/builders/capability-graph-builder.d.ts +5 -1
  445. package/dist/plugins/golang/atlas/builders/capability-graph-builder.d.ts.map +1 -1
  446. package/dist/plugins/golang/atlas/builders/capability-graph-builder.js +43 -1
  447. package/dist/plugins/golang/atlas/builders/capability-graph-builder.js.map +1 -1
  448. package/dist/plugins/golang/atlas/builders/flow-graph-builder.d.ts +3 -0
  449. package/dist/plugins/golang/atlas/builders/flow-graph-builder.d.ts.map +1 -1
  450. package/dist/plugins/golang/atlas/builders/flow-graph-builder.js +166 -6
  451. package/dist/plugins/golang/atlas/builders/flow-graph-builder.js.map +1 -1
  452. package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.d.ts.map +1 -1
  453. package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js +12 -5
  454. package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js.map +1 -1
  455. package/dist/plugins/golang/atlas/builders/package-graph-builder.js +5 -5
  456. package/dist/plugins/golang/atlas/builders/package-graph-builder.js.map +1 -1
  457. package/dist/plugins/golang/atlas/framework-detector.d.ts.map +1 -1
  458. package/dist/plugins/golang/atlas/framework-detector.js +2 -0
  459. package/dist/plugins/golang/atlas/framework-detector.js.map +1 -1
  460. package/dist/plugins/golang/atlas/go-mod-resolver.d.ts.map +1 -1
  461. package/dist/plugins/golang/atlas/go-mod-resolver.js +3 -3
  462. package/dist/plugins/golang/atlas/go-mod-resolver.js.map +1 -1
  463. package/dist/plugins/golang/atlas/renderers/atlas-renderer.d.ts.map +1 -1
  464. package/dist/plugins/golang/atlas/renderers/atlas-renderer.js +32 -2
  465. package/dist/plugins/golang/atlas/renderers/atlas-renderer.js.map +1 -1
  466. package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.d.ts.map +1 -1
  467. package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.js +16 -5
  468. package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.js.map +1 -1
  469. package/dist/plugins/golang/atlas/renderers/flow-mermaid-template.js.map +1 -1
  470. package/dist/plugins/golang/atlas/renderers/goroutine-mermaid-template.d.ts.map +1 -1
  471. package/dist/plugins/golang/atlas/renderers/goroutine-mermaid-template.js.map +1 -1
  472. package/dist/plugins/golang/atlas/renderers/mermaid-templates.d.ts.map +1 -1
  473. package/dist/plugins/golang/atlas/renderers/mermaid-templates.js.map +1 -1
  474. package/dist/plugins/golang/atlas/renderers/package-mermaid-template.d.ts.map +1 -1
  475. package/dist/plugins/golang/atlas/renderers/package-mermaid-template.js +5 -5
  476. package/dist/plugins/golang/atlas/renderers/package-mermaid-template.js.map +1 -1
  477. package/dist/plugins/golang/atlas/renderers/template-shared.d.ts.map +1 -1
  478. package/dist/plugins/golang/atlas/renderers/template-shared.js.map +1 -1
  479. package/dist/plugins/golang/atlas/types.d.ts +9 -3
  480. package/dist/plugins/golang/atlas/types.d.ts.map +1 -1
  481. package/dist/plugins/golang/atlas/types.js +1 -1
  482. package/dist/plugins/golang/atlas/types.js.map +1 -1
  483. package/dist/plugins/golang/builders/function-builder.d.ts +19 -0
  484. package/dist/plugins/golang/builders/function-builder.d.ts.map +1 -0
  485. package/dist/plugins/golang/builders/function-builder.js +206 -0
  486. package/dist/plugins/golang/builders/function-builder.js.map +1 -0
  487. package/dist/plugins/golang/builders/goroutine-builder.d.ts +11 -0
  488. package/dist/plugins/golang/builders/goroutine-builder.d.ts.map +1 -0
  489. package/dist/plugins/golang/builders/goroutine-builder.js +147 -0
  490. package/dist/plugins/golang/builders/goroutine-builder.js.map +1 -0
  491. package/dist/plugins/golang/builders/interface-builder.d.ts +9 -0
  492. package/dist/plugins/golang/builders/interface-builder.d.ts.map +1 -0
  493. package/dist/plugins/golang/builders/interface-builder.js +126 -0
  494. package/dist/plugins/golang/builders/interface-builder.js.map +1 -0
  495. package/dist/plugins/golang/builders/node-utils.d.ts +8 -0
  496. package/dist/plugins/golang/builders/node-utils.d.ts.map +1 -0
  497. package/dist/plugins/golang/builders/node-utils.js +18 -0
  498. package/dist/plugins/golang/builders/node-utils.js.map +1 -0
  499. package/dist/plugins/golang/builders/struct-builder.d.ts +12 -0
  500. package/dist/plugins/golang/builders/struct-builder.d.ts.map +1 -0
  501. package/dist/plugins/golang/builders/struct-builder.js +81 -0
  502. package/dist/plugins/golang/builders/struct-builder.js.map +1 -0
  503. package/dist/plugins/golang/go-atlas-adapter.d.ts +11 -0
  504. package/dist/plugins/golang/go-atlas-adapter.d.ts.map +1 -0
  505. package/dist/plugins/golang/go-atlas-adapter.js +47 -0
  506. package/dist/plugins/golang/go-atlas-adapter.js.map +1 -0
  507. package/dist/plugins/golang/go-atlas-coordinator.d.ts +12 -0
  508. package/dist/plugins/golang/go-atlas-coordinator.d.ts.map +1 -0
  509. package/dist/plugins/golang/go-atlas-coordinator.js +76 -0
  510. package/dist/plugins/golang/go-atlas-coordinator.js.map +1 -0
  511. package/dist/plugins/golang/go-mod-reader.d.ts +2 -0
  512. package/dist/plugins/golang/go-mod-reader.d.ts.map +1 -0
  513. package/dist/plugins/golang/go-mod-reader.js +12 -0
  514. package/dist/plugins/golang/go-mod-reader.js.map +1 -0
  515. package/dist/plugins/golang/go-parse-coordinator.d.ts +23 -0
  516. package/dist/plugins/golang/go-parse-coordinator.d.ts.map +1 -0
  517. package/dist/plugins/golang/go-parse-coordinator.js +137 -0
  518. package/dist/plugins/golang/go-parse-coordinator.js.map +1 -0
  519. package/dist/plugins/golang/go-test-analyzer.d.ts +10 -0
  520. package/dist/plugins/golang/go-test-analyzer.d.ts.map +1 -0
  521. package/dist/plugins/golang/go-test-analyzer.js +90 -0
  522. package/dist/plugins/golang/go-test-analyzer.js.map +1 -0
  523. package/dist/plugins/golang/gopls-client.js +6 -6
  524. package/dist/plugins/golang/gopls-client.js.map +1 -1
  525. package/dist/plugins/golang/gopls-interface-resolver.d.ts +19 -0
  526. package/dist/plugins/golang/gopls-interface-resolver.d.ts.map +1 -0
  527. package/dist/plugins/golang/gopls-interface-resolver.js +49 -0
  528. package/dist/plugins/golang/gopls-interface-resolver.js.map +1 -0
  529. package/dist/plugins/golang/index.d.ts +12 -17
  530. package/dist/plugins/golang/index.d.ts.map +1 -1
  531. package/dist/plugins/golang/index.js +44 -326
  532. package/dist/plugins/golang/index.js.map +1 -1
  533. package/dist/plugins/golang/tree-sitter-bridge.d.ts +4 -24
  534. package/dist/plugins/golang/tree-sitter-bridge.d.ts.map +1 -1
  535. package/dist/plugins/golang/tree-sitter-bridge.js +16 -526
  536. package/dist/plugins/golang/tree-sitter-bridge.js.map +1 -1
  537. package/dist/plugins/golang/types.d.ts +5 -0
  538. package/dist/plugins/golang/types.d.ts.map +1 -1
  539. package/dist/plugins/java/archjson-mapper.d.ts +3 -1
  540. package/dist/plugins/java/archjson-mapper.d.ts.map +1 -1
  541. package/dist/plugins/java/archjson-mapper.js +123 -0
  542. package/dist/plugins/java/archjson-mapper.js.map +1 -1
  543. package/dist/plugins/java/dependency-extractor.js +2 -2
  544. package/dist/plugins/java/dependency-extractor.js.map +1 -1
  545. package/dist/plugins/java/index.d.ts +2 -2
  546. package/dist/plugins/java/index.d.ts.map +1 -1
  547. package/dist/plugins/java/index.js +73 -16
  548. package/dist/plugins/java/index.js.map +1 -1
  549. package/dist/plugins/java/maven-crossmodule-parser.d.ts +9 -0
  550. package/dist/plugins/java/maven-crossmodule-parser.d.ts.map +1 -0
  551. package/dist/plugins/java/maven-crossmodule-parser.js +54 -0
  552. package/dist/plugins/java/maven-crossmodule-parser.js.map +1 -0
  553. package/dist/plugins/java/tree-sitter-bridge.d.ts +2 -0
  554. package/dist/plugins/java/tree-sitter-bridge.d.ts.map +1 -1
  555. package/dist/plugins/java/tree-sitter-bridge.js +70 -7
  556. package/dist/plugins/java/tree-sitter-bridge.js.map +1 -1
  557. package/dist/plugins/java/types.d.ts +7 -0
  558. package/dist/plugins/java/types.d.ts.map +1 -1
  559. package/dist/plugins/kotlin/archjson-mapper.d.ts +12 -0
  560. package/dist/plugins/kotlin/archjson-mapper.d.ts.map +1 -0
  561. package/dist/plugins/kotlin/archjson-mapper.js +157 -0
  562. package/dist/plugins/kotlin/archjson-mapper.js.map +1 -0
  563. package/dist/plugins/kotlin/builders/class-builder.d.ts +26 -0
  564. package/dist/plugins/kotlin/builders/class-builder.d.ts.map +1 -0
  565. package/dist/plugins/kotlin/builders/class-builder.js +366 -0
  566. package/dist/plugins/kotlin/builders/class-builder.js.map +1 -0
  567. package/dist/plugins/kotlin/builders/function-builder.d.ts +15 -0
  568. package/dist/plugins/kotlin/builders/function-builder.d.ts.map +1 -0
  569. package/dist/plugins/kotlin/builders/function-builder.js +172 -0
  570. package/dist/plugins/kotlin/builders/function-builder.js.map +1 -0
  571. package/dist/plugins/kotlin/builders/import-resolver.d.ts +5 -0
  572. package/dist/plugins/kotlin/builders/import-resolver.d.ts.map +1 -0
  573. package/dist/plugins/kotlin/builders/import-resolver.js +10 -0
  574. package/dist/plugins/kotlin/builders/import-resolver.js.map +1 -0
  575. package/dist/plugins/kotlin/dependency-extractor.d.ts +13 -0
  576. package/dist/plugins/kotlin/dependency-extractor.d.ts.map +1 -0
  577. package/dist/plugins/kotlin/dependency-extractor.js +104 -0
  578. package/dist/plugins/kotlin/dependency-extractor.js.map +1 -0
  579. package/dist/plugins/kotlin/index.d.ts +26 -0
  580. package/dist/plugins/kotlin/index.d.ts.map +1 -0
  581. package/dist/plugins/kotlin/index.js +238 -0
  582. package/dist/plugins/kotlin/index.js.map +1 -0
  583. package/dist/plugins/kotlin/kotlin-type-extractor.d.ts +7 -0
  584. package/dist/plugins/kotlin/kotlin-type-extractor.d.ts.map +1 -0
  585. package/dist/plugins/kotlin/kotlin-type-extractor.js +96 -0
  586. package/dist/plugins/kotlin/kotlin-type-extractor.js.map +1 -0
  587. package/dist/plugins/kotlin/tree-sitter-bridge.d.ts +15 -0
  588. package/dist/plugins/kotlin/tree-sitter-bridge.d.ts.map +1 -0
  589. package/dist/plugins/kotlin/tree-sitter-bridge.js +79 -0
  590. package/dist/plugins/kotlin/tree-sitter-bridge.js.map +1 -0
  591. package/dist/plugins/kotlin/types.d.ts +48 -0
  592. package/dist/plugins/kotlin/types.d.ts.map +1 -0
  593. package/dist/plugins/kotlin/types.js +2 -0
  594. package/dist/plugins/kotlin/types.js.map +1 -0
  595. package/dist/plugins/python/archjson-mapper.d.ts +7 -2
  596. package/dist/plugins/python/archjson-mapper.d.ts.map +1 -1
  597. package/dist/plugins/python/archjson-mapper.js +117 -10
  598. package/dist/plugins/python/archjson-mapper.js.map +1 -1
  599. package/dist/plugins/python/dependency-extractor.js +1 -1
  600. package/dist/plugins/python/dependency-extractor.js.map +1 -1
  601. package/dist/plugins/python/import-extractor.d.ts +11 -0
  602. package/dist/plugins/python/import-extractor.d.ts.map +1 -0
  603. package/dist/plugins/python/import-extractor.js +67 -0
  604. package/dist/plugins/python/import-extractor.js.map +1 -0
  605. package/dist/plugins/python/index.d.ts +4 -3
  606. package/dist/plugins/python/index.d.ts.map +1 -1
  607. package/dist/plugins/python/index.js +86 -11
  608. package/dist/plugins/python/index.js.map +1 -1
  609. package/dist/plugins/python/tree-sitter-bridge.d.ts +2 -0
  610. package/dist/plugins/python/tree-sitter-bridge.d.ts.map +1 -1
  611. package/dist/plugins/python/tree-sitter-bridge.js +67 -1
  612. package/dist/plugins/python/tree-sitter-bridge.js.map +1 -1
  613. package/dist/plugins/python/types.d.ts +6 -0
  614. package/dist/plugins/python/types.d.ts.map +1 -1
  615. package/dist/plugins/shared/mapper-utils.d.ts +1 -1
  616. package/dist/plugins/shared/mapper-utils.d.ts.map +1 -1
  617. package/dist/plugins/shared/mapper-utils.js.map +1 -1
  618. package/dist/plugins/typescript/builders/module-graph-builder.d.ts +2 -2
  619. package/dist/plugins/typescript/builders/module-graph-builder.d.ts.map +1 -1
  620. package/dist/plugins/typescript/builders/module-graph-builder.js +29 -8
  621. package/dist/plugins/typescript/builders/module-graph-builder.js.map +1 -1
  622. package/dist/plugins/typescript/index.d.ts +3 -2
  623. package/dist/plugins/typescript/index.d.ts.map +1 -1
  624. package/dist/plugins/typescript/index.js +116 -10
  625. package/dist/plugins/typescript/index.js.map +1 -1
  626. package/dist/plugins/typescript/typescript-analyzer.d.ts +2 -2
  627. package/dist/plugins/typescript/typescript-analyzer.d.ts.map +1 -1
  628. package/dist/plugins/typescript/typescript-analyzer.js +1 -1
  629. package/dist/plugins/typescript/typescript-analyzer.js.map +1 -1
  630. package/dist/types/cognitive-summary.d.ts +20 -0
  631. package/dist/types/cognitive-summary.d.ts.map +1 -0
  632. package/dist/types/cognitive-summary.js +2 -0
  633. package/dist/types/cognitive-summary.js.map +1 -0
  634. package/dist/types/config-cli.d.ts +4 -0
  635. package/dist/types/config-cli.d.ts.map +1 -1
  636. package/dist/types/config-global.d.ts +4 -0
  637. package/dist/types/config-global.d.ts.map +1 -1
  638. package/dist/types/{extensions.d.ts → extensions/go-atlas.d.ts} +5 -106
  639. package/dist/types/extensions/go-atlas.d.ts.map +1 -0
  640. package/dist/types/extensions/go-atlas.js +2 -0
  641. package/dist/types/extensions/go-atlas.js.map +1 -0
  642. package/dist/types/extensions/index.d.ts +15 -0
  643. package/dist/types/extensions/index.d.ts.map +1 -0
  644. package/dist/types/extensions/index.js +5 -0
  645. package/dist/types/extensions/index.js.map +1 -0
  646. package/dist/types/extensions/project-semantics.d.ts +55 -0
  647. package/dist/types/extensions/project-semantics.d.ts.map +1 -0
  648. package/dist/types/extensions/project-semantics.js +126 -0
  649. package/dist/types/extensions/project-semantics.js.map +1 -0
  650. package/dist/types/extensions/test-analysis.d.ts +68 -0
  651. package/dist/types/extensions/test-analysis.d.ts.map +1 -0
  652. package/dist/types/extensions/test-analysis.js +2 -0
  653. package/dist/types/extensions/test-analysis.js.map +1 -0
  654. package/dist/types/extensions/ts-analysis.d.ts +33 -0
  655. package/dist/types/extensions/ts-analysis.d.ts.map +1 -0
  656. package/dist/types/extensions/ts-analysis.js +2 -0
  657. package/dist/types/extensions/ts-analysis.js.map +1 -0
  658. package/dist/types/git-history.d.ts +68 -0
  659. package/dist/types/git-history.d.ts.map +1 -0
  660. package/dist/types/git-history.js +2 -0
  661. package/dist/types/git-history.js.map +1 -0
  662. package/dist/types/index.d.ts +38 -29
  663. package/dist/types/index.d.ts.map +1 -1
  664. package/dist/types/index.js +2 -1
  665. package/dist/types/index.js.map +1 -1
  666. package/dist/types/metric-vector.d.ts +17 -0
  667. package/dist/types/metric-vector.d.ts.map +1 -0
  668. package/dist/types/metric-vector.js +2 -0
  669. package/dist/types/metric-vector.js.map +1 -0
  670. package/dist/utils/cli-detector.js +2 -2
  671. package/dist/utils/cli-detector.js.map +1 -1
  672. package/dist/utils/tsconfig-finder.d.ts.map +1 -1
  673. package/dist/utils/tsconfig-finder.js +6 -1
  674. package/dist/utils/tsconfig-finder.js.map +1 -1
  675. package/node_modules/tree-sitter/prebuilds/linux-x64/node.napi.glibc.node +0 -0
  676. package/package.json +5 -2
  677. package/dist/cli/cache-manager.d.ts.map +0 -1
  678. package/dist/cli/cache-manager.js.map +0 -1
  679. package/dist/cli/error-handler.d.ts +0 -15
  680. package/dist/cli/error-handler.d.ts.map +0 -1
  681. package/dist/cli/error-handler.js.map +0 -1
  682. package/dist/cli/errors.d.ts.map +0 -1
  683. package/dist/cli/errors.js +0 -31
  684. package/dist/cli/errors.js.map +0 -1
  685. package/dist/cli/progress.d.ts.map +0 -1
  686. package/dist/cli/progress.js.map +0 -1
  687. package/dist/types/extensions.d.ts.map +0 -1
  688. package/dist/types/extensions.js +0 -4
  689. package/dist/types/extensions.js.map +0 -1
@@ -0,0 +1,87 @@
1
+ import { z } from 'zod';
2
+ import path from 'path';
3
+ import { resolveRoot } from '../mcp-server.js';
4
+ import { loadHistoryData, GitHistoryNotFoundError } from '../../git-history/history-loader.js';
5
+ import { HistoryQuery } from '../../git-history/history-query.js';
6
+ const NOT_ANALYZED_MSG = 'No git history data found. Run `archguard_analyze_git` first to collect history artifacts.';
7
+ function textResponse(text) {
8
+ return { content: [{ type: 'text', text }] };
9
+ }
10
+ function formatEvidencePack(pack) {
11
+ const lines = [];
12
+ lines.push('## Evidence Pack');
13
+ lines.push('');
14
+ if (pack.results.length === 0 && pack.notFound.length > 0) {
15
+ lines.push('No targets were found in git history data.');
16
+ lines.push('');
17
+ }
18
+ else {
19
+ lines.push('| target | type | riskScore | riskLevel | topFactor |');
20
+ lines.push('|--------|------|-----------|-----------|-----------|');
21
+ for (const entry of pack.results) {
22
+ lines.push(`| ${entry.target} | ${entry.targetType} | ${entry.riskScore.toFixed(3)} | ${entry.riskLevel} | ${entry.topFactor} |`);
23
+ }
24
+ lines.push('');
25
+ }
26
+ lines.push('## Hotspots');
27
+ lines.push('');
28
+ if (pack.hotspots.length === 0) {
29
+ lines.push('_No hotspots (no targets resolved)._');
30
+ }
31
+ else {
32
+ for (let i = 0; i < pack.hotspots.length; i++) {
33
+ const h = pack.hotspots[i];
34
+ lines.push(`${i + 1}. **${h.target}** (${h.targetType}) — riskScore: ${h.riskScore.toFixed(3)}, riskLevel: ${h.riskLevel}, topFactor: ${h.topFactor}`);
35
+ }
36
+ }
37
+ lines.push('');
38
+ if (pack.notFound.length > 0) {
39
+ lines.push('## Not Found');
40
+ lines.push('');
41
+ for (const nf of pack.notFound) {
42
+ lines.push(`- ${nf.target} (${nf.targetType}): ${nf.reason}`);
43
+ }
44
+ lines.push('');
45
+ }
46
+ lines.push('```json');
47
+ lines.push(JSON.stringify(pack, null, 2));
48
+ lines.push('```');
49
+ return lines.join('\n');
50
+ }
51
+ export function registerEvidencePackTool(server, defaultRoot) {
52
+ server.tool('archguard_get_evidence_pack', 'Return a gate-ready aggregated risk evidence pack for multiple files or packages. Each target returns riskScore, riskLevel, and topFactor. Response includes per-target details, top-3 hotspots sorted by risk, and any not-found targets. Use before dispatching tasks to inject structural risk context. Requires archguard_analyze_git.', {
53
+ projectRoot: z
54
+ .string()
55
+ .optional()
56
+ .describe('Root directory of the target project. Defaults to the MCP server startup cwd.'),
57
+ targets: z
58
+ .array(z.object({
59
+ targetType: z
60
+ .enum(['file', 'package'])
61
+ .describe('Whether the target is a file path or a package path.'),
62
+ target: z
63
+ .string()
64
+ .describe('File path or package path to query (e.g. "src/cli/mcp-server.ts" or "src/cli").'),
65
+ }))
66
+ .min(1)
67
+ .max(20)
68
+ .describe('List of targets to query (1–20 entries).'),
69
+ }, async (params) => {
70
+ const root = resolveRoot(params.projectRoot, defaultRoot);
71
+ const archguardDir = path.join(root, '.archguard');
72
+ try {
73
+ const data = await loadHistoryData(archguardDir);
74
+ const query = new HistoryQuery(data);
75
+ const pack = query.getEvidencePack(params.targets);
76
+ return textResponse(formatEvidencePack(pack));
77
+ }
78
+ catch (err) {
79
+ if (err instanceof GitHistoryNotFoundError) {
80
+ return textResponse(NOT_ANALYZED_MSG);
81
+ }
82
+ const message = err instanceof Error ? err.message : String(err);
83
+ return textResponse(`Evidence pack query failed: ${message}`);
84
+ }
85
+ });
86
+ }
87
+ //# sourceMappingURL=git-history-evidence-pack-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-history-evidence-pack-tool.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/git-history-evidence-pack-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerGitHistoryTools(server: McpServer, defaultRoot: string): void;
3
+ //# sourceMappingURL=git-history-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-history-tools.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/git-history-tools.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyBzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CA4JpF"}
@@ -0,0 +1,125 @@
1
+ import { z } from 'zod';
2
+ import path from 'path';
3
+ import { resolveRoot } from '../mcp-server.js';
4
+ import { loadHistoryData, GitHistoryNotFoundError } from '../../git-history/history-loader.js';
5
+ import { HistoryQuery } from '../../git-history/history-query.js';
6
+ const NOT_ANALYZED_MSG = 'No git history data found. Run `archguard_analyze_git` first to collect history artifacts.';
7
+ function textResponse(text) {
8
+ return { content: [{ type: 'text', text }] };
9
+ }
10
+ export function registerGitHistoryTools(server, defaultRoot) {
11
+ server.tool('archguard_get_change_context', 'Get change-context summary for a file or package before editing. Returns churn, ownership, top co-change neighbors, and risk hints. Requires archguard_analyze_git to have been run first. Results reflect the analyzed time window only; rename and entity-level tracking are not supported in v1.', {
12
+ projectRoot: z
13
+ .string()
14
+ .optional()
15
+ .describe('Root directory of the target project. Defaults to the MCP server startup cwd.'),
16
+ targetType: z
17
+ .enum(['package', 'file'])
18
+ .describe('Whether the target is a package path or a file path.'),
19
+ target: z
20
+ .string()
21
+ .describe('Package path or file path to query (e.g. "src/cli" or "src/cli/mcp/mcp-server.ts").'),
22
+ }, async (params) => {
23
+ const root = resolveRoot(params.projectRoot, defaultRoot);
24
+ const archguardDir = path.join(root, '.archguard');
25
+ try {
26
+ const data = await loadHistoryData(archguardDir);
27
+ const query = new HistoryQuery(data);
28
+ const result = query.getChangeContext(params.targetType, params.target);
29
+ return textResponse(JSON.stringify(result, null, 2));
30
+ }
31
+ catch (err) {
32
+ if (err instanceof GitHistoryNotFoundError) {
33
+ return textResponse(NOT_ANALYZED_MSG);
34
+ }
35
+ const message = err instanceof Error ? err.message : String(err);
36
+ return textResponse(`Target "${params.target}" not found in git history data. ${message}`);
37
+ }
38
+ });
39
+ server.tool('archguard_get_cochange', 'Return strongest co-change neighbors for a file or package. Co-change is an evolutionary signal only — it does not imply direct runtime or static dependency. Requires archguard_analyze_git.', {
40
+ projectRoot: z
41
+ .string()
42
+ .optional()
43
+ .describe('Root directory of the target project. Defaults to the MCP server startup cwd.'),
44
+ targetType: z
45
+ .enum(['package', 'file'])
46
+ .describe('Whether the target is a package path or a file path.'),
47
+ target: z.string().describe('Package path or file path to query.'),
48
+ topN: z.coerce
49
+ .number()
50
+ .min(1)
51
+ .max(20)
52
+ .default(10)
53
+ .describe('Maximum number of co-change neighbors to return (default: 10, max: 20).'),
54
+ }, async (params) => {
55
+ const root = resolveRoot(params.projectRoot, defaultRoot);
56
+ const archguardDir = path.join(root, '.archguard');
57
+ const topN = params.topN ?? 10;
58
+ try {
59
+ const data = await loadHistoryData(archguardDir);
60
+ const query = new HistoryQuery(data);
61
+ const result = query.getCochange(params.targetType, params.target, topN);
62
+ return textResponse(JSON.stringify(result, null, 2));
63
+ }
64
+ catch (err) {
65
+ if (err instanceof GitHistoryNotFoundError) {
66
+ return textResponse(NOT_ANALYZED_MSG);
67
+ }
68
+ const message = err instanceof Error ? err.message : String(err);
69
+ return textResponse(`Target "${params.target}" not found in git history data. ${message}`);
70
+ }
71
+ });
72
+ server.tool('archguard_get_change_risk', 'Return an explainable risk score for changing a file or package. Score is a heuristic based on churn, author count, ownership concentration, co-change breadth, and recent activity — not a predictive defect model. Requires archguard_analyze_git.', {
73
+ projectRoot: z
74
+ .string()
75
+ .optional()
76
+ .describe('Root directory of the target project. Defaults to the MCP server startup cwd.'),
77
+ targetType: z
78
+ .enum(['package', 'file'])
79
+ .describe('Whether the target is a package path or a file path.'),
80
+ target: z.string().describe('Package path or file path to query.'),
81
+ }, async (params) => {
82
+ const root = resolveRoot(params.projectRoot, defaultRoot);
83
+ const archguardDir = path.join(root, '.archguard');
84
+ try {
85
+ const data = await loadHistoryData(archguardDir);
86
+ const query = new HistoryQuery(data);
87
+ const result = query.getChangeRisk(params.targetType, params.target);
88
+ return textResponse(JSON.stringify(result, null, 2));
89
+ }
90
+ catch (err) {
91
+ if (err instanceof GitHistoryNotFoundError) {
92
+ return textResponse(NOT_ANALYZED_MSG);
93
+ }
94
+ const message = err instanceof Error ? err.message : String(err);
95
+ return textResponse(`Target "${params.target}" not found in git history data. ${message}`);
96
+ }
97
+ });
98
+ server.tool('archguard_get_ownership', 'Return maintainer concentration data for a file or package: contributors ranked by commit share, primary owner, active maintainers count, and bus-factor proxy. Requires archguard_analyze_git.', {
99
+ projectRoot: z
100
+ .string()
101
+ .optional()
102
+ .describe('Root directory of the target project. Defaults to the MCP server startup cwd.'),
103
+ targetType: z
104
+ .enum(['package', 'file'])
105
+ .describe('Whether the target is a package path or a file path.'),
106
+ target: z.string().describe('Package path or file path to query.'),
107
+ }, async (params) => {
108
+ const root = resolveRoot(params.projectRoot, defaultRoot);
109
+ const archguardDir = path.join(root, '.archguard');
110
+ try {
111
+ const data = await loadHistoryData(archguardDir);
112
+ const query = new HistoryQuery(data);
113
+ const result = query.getOwnership(params.targetType, params.target);
114
+ return textResponse(JSON.stringify(result, null, 2));
115
+ }
116
+ catch (err) {
117
+ if (err instanceof GitHistoryNotFoundError) {
118
+ return textResponse(NOT_ANALYZED_MSG);
119
+ }
120
+ const message = err instanceof Error ? err.message : String(err);
121
+ return textResponse(`Target "${params.target}" not found in git history data. ${message}`);
122
+ }
123
+ });
124
+ }
125
+ //# sourceMappingURL=git-history-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-history-tools.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/git-history-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { PackageMetricsSnapshot } from '../../metrics-history-writer.js';
3
+ export interface TrendSnapshot {
4
+ timestamp: string;
5
+ packages: PackageMetricsSnapshot[];
6
+ }
7
+ export declare function registerMetricTrendTools(server: McpServer, defaultRoot: string): void;
8
+ //# sourceMappingURL=metric-trend-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric-trend-tools.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/metric-trend-tools.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAQ9E,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAmDrF"}
@@ -0,0 +1,50 @@
1
+ import { z } from 'zod';
2
+ import path from 'path';
3
+ import { resolveRoot } from '../mcp-server.js';
4
+ import { readHistoryEntries } from '../../../analysis/metrics-history-reader.js';
5
+ function textResponse(text) {
6
+ return { content: [{ type: 'text', text }] };
7
+ }
8
+ export function registerMetricTrendTools(server, defaultRoot) {
9
+ server.tool('archguard_get_metric_trend', 'Return the historical time series of package-level structural metrics ' +
10
+ '(fan-in, fan-out, cycle count, entity count) recorded by each analyze run. ' +
11
+ 'Each snapshot corresponds to one analyze invocation. ' +
12
+ 'Use packageName to focus on a single package trend. ' +
13
+ 'Data is pure numeric — no semantic annotations or LLM-generated content.', {
14
+ projectRoot: z
15
+ .string()
16
+ .optional()
17
+ .describe('Root directory of the target project. Defaults to the MCP server startup cwd.'),
18
+ packageName: z
19
+ .string()
20
+ .optional()
21
+ .describe('Filter to a single package name. Omit to return all packages for each snapshot.'),
22
+ }, async ({ projectRoot, packageName }) => {
23
+ try {
24
+ const root = resolveRoot(projectRoot, defaultRoot);
25
+ const outputDir = path.join(root, '.archguard');
26
+ const allEntries = await readHistoryEntries(outputDir);
27
+ let snapshots;
28
+ if (packageName !== undefined) {
29
+ snapshots = allEntries
30
+ .map((entry) => ({
31
+ timestamp: entry.timestamp,
32
+ packages: entry.packages.filter((p) => p.name === packageName),
33
+ }))
34
+ .filter((s) => s.packages.length > 0);
35
+ }
36
+ else {
37
+ snapshots = allEntries.map((entry) => ({
38
+ timestamp: entry.timestamp,
39
+ packages: entry.packages,
40
+ }));
41
+ }
42
+ return textResponse(JSON.stringify({ snapshots }, null, 2));
43
+ }
44
+ catch (e) {
45
+ const msg = e instanceof Error ? e.message : String(e);
46
+ return textResponse(`Error: ${msg}`);
47
+ }
48
+ });
49
+ }
50
+ //# sourceMappingURL=metric-trend-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric-trend-tools.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/metric-trend-tools.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC;AAOD,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,WAAmB;IAC7E,MAAM,CAAC,IAAI,CAET,4BAA4B,EAC5B,wEAAwE;QACtE,6EAA6E;QAC7E,uDAAuD;QACvD,sDAAsD;QACtD,0EAA0E,EAC5E;QACE,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,+EAA+E,CAAC;QAC5F,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,iFAAiF,CAClF;KACJ,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAEvD,IAAI,SAA0B,CAAC;YAE/B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAE9B,SAAS,GAAG,UAAU;qBACnB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACf,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;iBAC/D,CAAC,CAAC;qBACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACrC,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC,CAAC,CAAC;YACN,CAAC;YAED,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,YAAY,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { extractPackageName, computePackageFanMetricsFromRelations, computeCycleMetrics } from '../../../analysis/package-metrics-analysis.js';
3
+ import type { PackageMetricsEntry } from '../../../analysis/package-metrics-analysis.js';
4
+ export type { PackageMetricsEntry };
5
+ export { extractPackageName, computePackageFanMetricsFromRelations, computeCycleMetrics };
6
+ export declare function registerPackageMetricsTools(server: McpServer, defaultRoot: string): void;
7
+ //# sourceMappingURL=package-metrics-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-metrics-tools.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/package-metrics-tools.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,EACL,kBAAkB,EAClB,qCAAqC,EACrC,mBAAmB,EACpB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAGlF,YAAY,EAAE,mBAAmB,EAAE,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,qCAAqC,EAAE,mBAAmB,EAAE,CAAC;AAU1F,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAuExF"}
@@ -0,0 +1,62 @@
1
+ import { z } from 'zod';
2
+ import path from 'path';
3
+ import { loadEngine } from '../../query/engine-loader.js';
4
+ import { resolveRoot } from '../mcp-server.js';
5
+ import { extractPackageName, computePackageFanMetricsFromRelations, computeCycleMetrics, } from '../../../analysis/package-metrics-analysis.js';
6
+ export { extractPackageName, computePackageFanMetricsFromRelations, computeCycleMetrics };
7
+ function textResponse(text) {
8
+ return { content: [{ type: 'text', text }] };
9
+ }
10
+ export function registerPackageMetricsTools(server, defaultRoot) {
11
+ server.tool('archguard_get_package_metrics', 'Aggregate fan-in, fan-out, and cycle count per package. ' +
12
+ 'fan-in = number of incoming cross-package relations; ' +
13
+ 'fan-out = number of outgoing cross-package relations; ' +
14
+ 'cycleCount = number of SCCs the package participates in; ' +
15
+ 'cyclesWith = entity names from co-cycling SCCs. ' +
16
+ 'Works for all languages (TypeScript, Go, Java, Python, C++, Kotlin).', {
17
+ projectRoot: z
18
+ .string()
19
+ .optional()
20
+ .describe('Root directory of the target project. Defaults to the MCP server startup cwd.'),
21
+ scope: z
22
+ .string()
23
+ .optional()
24
+ .describe('Query scope key. Omit to use manifest.globalScopeKey.'),
25
+ packageName: z
26
+ .string()
27
+ .optional()
28
+ .describe('Filter results to a single package name. Omit to return metrics for all packages.'),
29
+ }, async ({ projectRoot, scope, packageName }) => {
30
+ try {
31
+ const root = resolveRoot(projectRoot, defaultRoot);
32
+ const archDir = path.join(root, '.archguard');
33
+ const { engine, extensionAccessor } = await loadEngine(archDir, scope);
34
+ const entityIds = extensionAccessor.getEntityIds();
35
+ const allPackageNames = new Set(entityIds.map(extractPackageName));
36
+ const relations = extensionAccessor.getRelations();
37
+ const { fanIn, fanOut } = computePackageFanMetricsFromRelations(relations, allPackageNames);
38
+ const cycles = engine.getCycles();
39
+ const cycleMetrics = computeCycleMetrics(cycles, allPackageNames);
40
+ let packages = Array.from(allPackageNames).map((pkg) => {
41
+ const cm = cycleMetrics.get(pkg) ?? { cycleCount: 0, cyclesWith: [] };
42
+ return {
43
+ packageName: pkg,
44
+ fanIn: fanIn.get(pkg) ?? 0,
45
+ fanOut: fanOut.get(pkg) ?? 0,
46
+ cycleCount: cm.cycleCount,
47
+ cyclesWith: cm.cyclesWith,
48
+ };
49
+ });
50
+ if (packageName !== undefined) {
51
+ packages = packages.filter((p) => p.packageName === packageName);
52
+ }
53
+ packages.sort((a, b) => a.packageName.localeCompare(b.packageName));
54
+ return textResponse(JSON.stringify({ packages }, null, 2));
55
+ }
56
+ catch (e) {
57
+ const msg = e instanceof Error ? e.message : String(e);
58
+ return textResponse(`Error: ${msg}`);
59
+ }
60
+ });
61
+ }
62
+ //# sourceMappingURL=package-metrics-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-metrics-tools.js","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/package-metrics-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test-analysis-tools.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/test-analysis-tools.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsGzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAqKtF"}
1
+ {"version":3,"file":"test-analysis-tools.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/test-analysis-tools.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgEzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAgNtF"}
@@ -1,69 +1,31 @@
1
1
  import { z } from 'zod';
2
2
  import path from 'path';
3
- import { loadEngine } from '../../query/engine-loader.js';
3
+ import { loadEngine, readManifest } from '../../query/engine-loader.js';
4
4
  import { resolveRoot } from '../mcp-server.js';
5
- function buildSuggestedPatternConfig(frameworks) {
6
- const assertionPatterns = [];
7
- for (const fw of frameworks) {
8
- switch (fw) {
9
- case 'vitest':
10
- case 'jest':
11
- case 'mocha':
12
- case 'jasmine':
13
- if (!assertionPatterns.includes('\\bexpect\\s*\\('))
14
- assertionPatterns.push('\\bexpect\\s*\\(');
15
- break;
16
- case 'junit4':
17
- case 'junit5':
18
- assertionPatterns.push('\\bAssert\\.assert\\w+\\s*\\(', '\\bAssertions\\.assert\\w+\\s*\\(', '\\bassertEquals\\s*\\(', '\\bassertTrue\\s*\\(', '\\bassertFalse\\s*\\(', '\\bassertNotNull\\s*\\(', '\\bassertThat\\s*\\(');
19
- break;
20
- case 'testng':
21
- if (!assertionPatterns.includes('\\bassertEquals\\s*\\('))
22
- assertionPatterns.push('\\bassertEquals\\s*\\(', '\\bassertTrue\\s*\\(', '\\bassertNotNull\\s*\\(');
23
- break;
24
- case 'jmh':
25
- break;
26
- case 'assertj':
27
- if (!assertionPatterns.includes('\\bassertThat\\s*\\('))
28
- assertionPatterns.push('\\bassertThat\\s*\\(');
29
- break;
30
- case 'testify':
31
- assertionPatterns.push('\\b(?:assert|require)\\.\\w+\\s*\\(');
32
- break;
33
- case 'testing':
34
- assertionPatterns.push('\\bt\\.(?:Error|Errorf|Fatal|Fatalf|Fail|FailNow)\\s*\\(');
35
- break;
36
- case 'gtest':
37
- assertionPatterns.push('\\bEXPECT_\\w+\\s*\\(', '\\bASSERT_\\w+\\s*\\(');
38
- break;
39
- case 'catch2':
40
- case 'doctest':
41
- assertionPatterns.push('\\bREQUIRE\\s*\\(', '\\bCHECK\\s*\\(');
42
- break;
43
- case 'assert':
44
- assertionPatterns.push('\\bassert\\s*\\(', '\\bassert_\\w+\\s*\\(', '\\bt\\.assert_\\w+\\s*\\(', '\\bGGML_ASSERT\\s*\\(');
45
- break;
46
- case 'pytest':
47
- assertionPatterns.push('\\bassert\\b', '.assert');
48
- break;
49
- case 'unittest':
50
- assertionPatterns.push('\\bself\\.assert\\w+\\s*\\(');
51
- break;
52
- case 'playwright':
53
- case 'cypress':
54
- if (!assertionPatterns.includes('\\bexpect\\s*\\('))
55
- assertionPatterns.push('\\bexpect\\s*\\(');
56
- break;
57
- }
58
- }
59
- if (assertionPatterns.length === 0)
60
- return {};
61
- return { assertionPatterns: [...new Set(assertionPatterns)] };
62
- }
5
+ import { buildSuggestedPatternConfig } from '../../../analysis/test-pattern-advisor.js';
63
6
  const NOT_ANALYZED_MSG = 'No test analysis data found. Run `archguard_analyze` with `includeTests: true` first.';
64
7
  function textResponse(text) {
65
8
  return { content: [{ type: 'text', text }] };
66
9
  }
10
+ async function buildZeroTestsDiagnosticResponse(archDir) {
11
+ let availableScopes = '';
12
+ try {
13
+ const manifest = await readManifest(archDir);
14
+ availableScopes = manifest.scopes?.map((s) => `${s.key} (${s.label})`).join(', ') ?? '';
15
+ }
16
+ catch {
17
+ }
18
+ return textResponse(JSON.stringify({
19
+ error: 'No test files found in the analyzed scope.',
20
+ diagnosis: [
21
+ 'The current ArchJSON scope covers only source files (e.g. src/) and excludes tests/.',
22
+ 'Fix: Re-run archguard_analyze with --include-tests flag.',
23
+ availableScopes
24
+ ? `Available scopes: ${availableScopes}`
25
+ : 'Run archguard_analyze first to generate analysis data.',
26
+ ],
27
+ }, null, 2));
28
+ }
67
29
  const patternConfigSchema = z
68
30
  .object({
69
31
  assertionPatterns: z.array(z.string()).optional(),
@@ -80,21 +42,23 @@ const patternConfigSchema = z
80
42
  .optional();
81
43
  export function registerTestAnalysisTools(server, defaultRoot) {
82
44
  server.tool('archguard_detect_test_patterns', 'Pattern-First tool: call this FIRST before any other test analysis tool. Detects test frameworks and conventions in the project. Returns suggestedPatternConfig and notes. Review the notes and correct the config if needed before passing to other tools.', {
83
- projectRoot: z
45
+ projectRoot: z.string().optional().describe('Project root (default: server startup cwd)'),
46
+ scope: z
84
47
  .string()
85
48
  .optional()
86
- .describe('Project root (default: server startup cwd)'),
87
- }, async ({ projectRoot }) => {
49
+ .describe('Analysis scope key. Omit to use the widest available scope containing test data.'),
50
+ }, async ({ projectRoot, scope }) => {
88
51
  try {
89
52
  const root = resolveRoot(projectRoot, defaultRoot);
90
53
  const archDir = path.join(root, '.archguard');
91
- let engine = null;
54
+ let _engine = null;
55
+ let extensionAccessor = null;
92
56
  try {
93
- engine = await loadEngine(archDir);
57
+ ({ engine: _engine, extensionAccessor } = await loadEngine(archDir, scope));
94
58
  }
95
59
  catch {
96
60
  }
97
- if (!engine || !engine.hasTestAnalysis()) {
61
+ if (!extensionAccessor || !extensionAccessor.hasTestAnalysis()) {
98
62
  const frameworks = [];
99
63
  try {
100
64
  const fs = await import('fs-extra');
@@ -126,7 +90,10 @@ export function registerTestAnalysisTools(server, defaultRoot) {
126
90
  ],
127
91
  }, null, 2));
128
92
  }
129
- const analysis = engine.getTestAnalysis();
93
+ const analysis = extensionAccessor.getTestAnalysis();
94
+ if (analysis.metrics.totalTestFiles === 0) {
95
+ return buildZeroTestsDiagnosticResponse(archDir);
96
+ }
130
97
  const frameworks = [...new Set(analysis.testFiles.flatMap((f) => f.frameworks))];
131
98
  const suggestedPatternConfig = buildSuggestedPatternConfig(frameworks);
132
99
  return textResponse(JSON.stringify({
@@ -145,20 +112,29 @@ export function registerTestAnalysisTools(server, defaultRoot) {
145
112
  return textResponse(`Error: ${e.message}`);
146
113
  }
147
114
  });
148
- server.tool('archguard_get_test_issues', 'Get test quality issues for the analyzed project. IMPORTANT: Call archguard_detect_test_patterns first to get the correct patternConfig for this project.', {
115
+ server.tool('archguard_get_test_issues', 'Return static-analysis test quality issues (orphan_test, zero_assertion, skip_accumulation); ' +
116
+ 'orphan_test and zero_assertion results may include false positives when tests use import ' +
117
+ 'aliases, custom assertion helpers, or long setup blocks. Call archguard_detect_test_patterns first.', {
149
118
  projectRoot: z.string().optional().describe('Project root (default: server startup cwd)'),
150
- patternConfig: patternConfigSchema,
151
- severity: z
152
- .enum(['warning', 'info'])
119
+ scope: z
120
+ .string()
153
121
  .optional()
154
- .describe('Filter by severity'),
155
- }, async ({ projectRoot, severity }) => {
122
+ .describe('Analysis scope key. Omit to use the widest available scope containing test data.'),
123
+ patternConfig: patternConfigSchema.describe('Pattern config for detection (informational only analysis data was produced at ' +
124
+ 'archguard_analyze time; changing this field at query time does not re-analyze or ' +
125
+ 'alter the stored results).'),
126
+ severity: z.enum(['warning', 'info']).optional().describe('Filter by severity'),
127
+ }, async ({ projectRoot, scope, severity }) => {
156
128
  try {
157
129
  const root = resolveRoot(projectRoot, defaultRoot);
158
- const engine = await loadEngine(path.join(root, '.archguard'));
159
- if (!engine.hasTestAnalysis())
130
+ const archDir = path.join(root, '.archguard');
131
+ const { engine: _engine, extensionAccessor } = await loadEngine(archDir, scope);
132
+ if (!extensionAccessor.hasTestAnalysis())
160
133
  return textResponse(NOT_ANALYZED_MSG);
161
- const analysis = engine.getTestAnalysis();
134
+ const analysis = extensionAccessor.getTestAnalysis();
135
+ if (analysis.metrics.totalTestFiles === 0) {
136
+ return buildZeroTestsDiagnosticResponse(archDir);
137
+ }
162
138
  const issues = severity
163
139
  ? analysis.issues.filter((i) => i.severity === severity)
164
140
  : analysis.issues;
@@ -168,17 +144,32 @@ export function registerTestAnalysisTools(server, defaultRoot) {
168
144
  return textResponse(`Error: ${e.message}`);
169
145
  }
170
146
  });
171
- server.tool('archguard_get_test_metrics', 'Get test metrics summary for the analyzed project. IMPORTANT: Call archguard_detect_test_patterns first to get the correct patternConfig for this project.', {
147
+ server.tool('archguard_get_test_metrics', 'Return test metrics summary (coverage ratios, assertion density, test file counts); ' +
148
+ 'coverage is inferred from static import-path and filename matching, not runtime tracing — ' +
149
+ 'scores are an approximation. Call archguard_detect_test_patterns first.', {
172
150
  projectRoot: z.string().optional().describe('Project root (default: server startup cwd)'),
173
- patternConfig: patternConfigSchema,
174
- includePackageBreakdown: z.boolean().optional().describe('When true, includes per-package coverage breakdown sorted ascending by coverageRatio.'),
175
- }, async ({ projectRoot, includePackageBreakdown }) => {
151
+ scope: z
152
+ .string()
153
+ .optional()
154
+ .describe('Analysis scope key. Omit to use the widest available scope containing test data.'),
155
+ patternConfig: patternConfigSchema.describe('Pattern config for detection (informational only — analysis data was produced at ' +
156
+ 'archguard_analyze time; changing this field at query time does not re-analyze or ' +
157
+ 'alter the stored results).'),
158
+ includePackageBreakdown: z
159
+ .boolean()
160
+ .optional()
161
+ .describe('When true, includes per-package coverage breakdown sorted ascending by coverageRatio.'),
162
+ }, async ({ projectRoot, scope, includePackageBreakdown }) => {
176
163
  try {
177
164
  const root = resolveRoot(projectRoot, defaultRoot);
178
- const engine = await loadEngine(path.join(root, '.archguard'));
179
- if (!engine.hasTestAnalysis())
165
+ const archDir = path.join(root, '.archguard');
166
+ const { engine, extensionAccessor } = await loadEngine(archDir, scope);
167
+ if (!extensionAccessor.hasTestAnalysis())
180
168
  return textResponse(NOT_ANALYZED_MSG);
181
- const analysis = engine.getTestAnalysis();
169
+ const analysis = extensionAccessor.getTestAnalysis();
170
+ if (analysis.metrics.totalTestFiles === 0) {
171
+ return buildZeroTestsDiagnosticResponse(archDir);
172
+ }
182
173
  const result = { ...analysis.metrics };
183
174
  if (includePackageBreakdown) {
184
175
  result.packageCoverage = engine.getPackageCoverage();
@@ -203,8 +194,8 @@ export function registerTestAnalysisTools(server, defaultRoot) {
203
194
  }, async ({ projectRoot, entityId }) => {
204
195
  try {
205
196
  const root = resolveRoot(projectRoot, defaultRoot);
206
- const engine = await loadEngine(path.join(root, '.archguard'));
207
- if (!engine.hasTestAnalysis())
197
+ const { engine, extensionAccessor } = await loadEngine(path.join(root, '.archguard'));
198
+ if (!extensionAccessor.hasTestAnalysis())
208
199
  return textResponse(NOT_ANALYZED_MSG);
209
200
  const result = engine.getEntityCoverage(entityId);
210
201
  return textResponse(JSON.stringify(result, null, 2));