@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
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ArchGuard
2
2
 
3
- ArchGuard analyzes source code to extract architectural insights and generates **Mermaid diagrams** at multiple levels of detail. It supports TypeScript (stable), Go (stable), Java (beta), and Python (beta) through a plugin system, and exposes query and MCP workflows for architecture inspection.
3
+ ArchGuard analyzes source code to extract architectural insights and generates **Mermaid diagrams** at multiple levels of detail. It supports TypeScript (stable), Go (stable), Java (beta), Python (beta), C++ (beta), and Kotlin/Android (beta) through a plugin system, and exposes query and MCP workflows for architecture inspection.
4
4
 
5
5
  ## Screenshots
6
6
 
@@ -16,10 +16,11 @@ ArchGuard analyzes source code to extract architectural insights and generates *
16
16
  ## Features
17
17
 
18
18
  - **AI-Native MCP Interface**: Query architecture in natural language from Claude Code or Codex — analyze projects, trace dependencies, find implementers, detect cycles
19
- - **Multi-Language Support**: TypeScript, Go, Java, Python via plugin system
19
+ - **Multi-Language Support**: TypeScript, Go, Java, Python, C++, Kotlin/Android via plugin system
20
20
  - **Multi-Level Diagrams**: Package (high-level), Class (default), Method (low-level)
21
21
  - **Go Architecture Atlas**: 4-layer visualization — package graph, capability graph, goroutine topology, flow graph
22
- - **Static Test Analysis**: Test coverage mapping, assertion density, orphan detection, and quality issues — no test execution required
22
+ - **Kotlin/Android Support**: Auto-detect Kotlin projects, parse `build.gradle.kts` / `settings.gradle.kts`, and plan multi-module diagrams
23
+ - **Static Test Analysis**: Test coverage mapping, assertion density, orphan detection, and quality issues — no test execution required, including Kotlin/Android projects
23
24
  - **Parallel Processing**: High-performance parsing with configurable concurrency
24
25
  - **Smart Caching**: File-based caching with SHA-256 hashing for fast repeated runs
25
26
  - **Zero External Dependencies**: Local Mermaid rendering using isomorphic-mermaid
@@ -43,6 +44,24 @@ Register the MCP server (project scope):
43
44
  claude mcp add --scope project archguard -- archguard mcp
44
45
  ```
45
46
 
47
+ Or install it for Claude Code user scope, including the bundled repository
48
+ skills from this checkout:
49
+
50
+ ```bash
51
+ bash scripts/install-claude-user-scope.sh
52
+ ```
53
+
54
+ This installs the `archguard` binary globally for the current user, registers
55
+ `archguard mcp` in `~/.claude/mcp.json`, and syncs all skills from
56
+ `.agents/skills/` into `~/.claude/skills/`.
57
+
58
+ If you already have fresh `dist/` artifacts and only want to re-install the user
59
+ scope wiring, use:
60
+
61
+ ```bash
62
+ bash scripts/install-claude-user-scope.sh --skip-build
63
+ ```
64
+
46
65
  Then ask Claude to analyze any project:
47
66
 
48
67
  > Analyze the architecture of `/path/to/my-project` using archguard MCP.
@@ -99,7 +118,7 @@ Point archguard at any project path — no configuration file needed:
99
118
 
100
119
  > Analyze the architecture of `/home/user/work/my-project` using archguard MCP.
101
120
 
102
- Archguard auto-detects the language and project structure, generates diagrams under `<project>/.archguard/`, and builds the query index for follow-up queries.
121
+ Archguard auto-detects the language and project structure, generates diagrams under `<project>/.archguard/`, and builds the query index for follow-up queries. Kotlin/Android projects are detected from `build.gradle.kts`, `settings.gradle.kts`, `.kt`, and `.kts` markers and can be analyzed without forcing `--lang kotlin`.
103
122
 
104
123
  ### Standalone CLI
105
124
 
@@ -130,7 +149,7 @@ archguard analyze [options]
130
149
 
131
150
  - `-s, --sources <paths...>` - Source directories; triggers auto-detection and multi-diagram generation
132
151
  - `--diagrams <levels...>` - Filter by level: `package` | `class` | `method` (language-dependent)
133
- - `--lang <language>` - Language: `typescript` | `go` | `java` | `python` (auto-detected)
152
+ - `--lang <language>` - Language: `typescript` | `go` | `java` | `python` | `cpp` | `kotlin` (auto-detected)
134
153
  - `--config <path>` - Config file path (default: `archguard.config.json`)
135
154
 
136
155
  **Output:**
@@ -162,11 +181,6 @@ archguard analyze [options]
162
181
  - `--atlas-include-tests` - Include test packages in Atlas
163
182
  - `--atlas-protocols <protocols>` - Protocols included in flow graph
164
183
 
165
- **Claude CLI:**
166
-
167
- - `--cli-command <command>` - Claude CLI executable (default: `claude`)
168
- - `--cli-args <args>` - Additional Claude CLI arguments
169
-
170
184
  **Examples:**
171
185
 
172
186
  ```bash
@@ -199,6 +213,9 @@ archguard analyze --include-tests
199
213
 
200
214
  # Refresh test report only, skip re-parsing source (faster)
201
215
  archguard analyze --tests-only
216
+
217
+ # Kotlin/Android project (explicit language selection is optional)
218
+ archguard analyze -s ./app/src/main/java --lang kotlin
202
219
  ```
203
220
 
204
221
  ### `query`
@@ -277,7 +294,17 @@ Test analysis (requires `archguard_analyze(includeTests: true)` first):
277
294
  | `archguard_detect_test_patterns` | Detect test frameworks and return suggested pattern config — call this first |
278
295
  | `archguard_get_test_metrics` | Summary: file counts, entity coverage ratio, assertion density, issue counts |
279
296
  | `archguard_get_test_issues` | Per-file issues: `zero_assertion`, `orphan_test`, `assertion_poverty`, `skip_accumulation` |
280
- | `archguard_get_test_coverage` | Per-entity coverage map with confidence scores |
297
+ | `archguard_get_entity_coverage` | Per-entity coverage map with confidence scores |
298
+
299
+ Git history analysis:
300
+
301
+ | Tool | Purpose |
302
+ |------|---------|
303
+ | `archguard_analyze_git` | Index git history for change-based queries |
304
+ | `archguard_get_change_context` | Commits and changed files for an entity |
305
+ | `archguard_get_cochange` | Files that frequently change together |
306
+ | `archguard_get_change_risk` | Change risk score based on churn and coupling |
307
+ | `archguard_get_ownership` | Author ownership breakdown per file or entity |
281
308
 
282
309
  See [MCP Usage Guide](docs/user-guide/mcp-usage.md) for setup, tool reference, and usage patterns.
283
310
 
@@ -301,12 +328,14 @@ archguard cache path # Show cache directory
301
328
 
302
329
  ## Language Support
303
330
 
304
- | Language | Status | Parser | Features |
305
- |------------|--------|---------------------------|----------------------------------------------------|
306
- | TypeScript | Stable | ts-morph (AST) | Classes, interfaces, enums, dependencies, path aliases |
307
- | Go | Stable | tree-sitter + gopls | Structs, interfaces, goroutines, Architecture Atlas |
308
- | Java | Beta | tree-sitter | Classes, interfaces, Maven/Gradle deps |
309
- | Python | Beta | tree-sitter | Classes, functions, pip/Poetry deps |
331
+ | Language | Status | Parser | Features |
332
+ |----------------|--------|---------------------------|----------------------------------------------------|
333
+ | TypeScript | Stable | ts-morph (AST) | Classes, interfaces, enums, dependencies, path aliases |
334
+ | Go | Stable | tree-sitter + gopls | Structs, interfaces, goroutines, Architecture Atlas |
335
+ | Java | Beta | tree-sitter | Classes, interfaces, Maven/Gradle deps |
336
+ | Python | Beta | tree-sitter | Classes, functions, pip/Poetry deps |
337
+ | C++ | Beta | tree-sitter | Structs, classes, inheritance, CMake deps |
338
+ | Kotlin/Android | Beta | tree-sitter | Classes, interfaces, top-level functions, `build.gradle.kts` deps, `settings.gradle.kts` multi-module planning, static test analysis |
310
339
 
311
340
  ### Go Architecture Atlas
312
341
 
@@ -410,8 +439,34 @@ archguard analyze --diagrams class method
410
439
  | `cache.enabled` | boolean | `true` | Enable file-based caching |
411
440
  | `mermaid.theme` | string | `default` | Diagram theme |
412
441
  | `mermaid.transparentBackground` | boolean | `true` | Transparent PNG background |
413
- | `cli.command` | string | `claude` | Claude CLI executable |
414
- | `cli.timeout` | number | `60000` | Claude CLI timeout (ms) |
442
+ | `projectSemantics` | object | | Skill-authored project knowledge consumed during analysis |
443
+
444
+ ## Skill-Authored Project Semantics
445
+
446
+ ArchGuard does not discover project semantics at runtime. Skills or users write project knowledge, and ArchGuard loads, validates, merges, and consumes it during analysis.
447
+
448
+ Authoritative locations and priority:
449
+
450
+ 1. `archguard.config.json.projectSemantics`
451
+ 2. `.archguard/project-semantics.json`
452
+ 3. built-in defaults
453
+
454
+ The sidecar file uses the same shape as `archguard.config.json.projectSemantics`.
455
+
456
+ ```json
457
+ {
458
+ "additionalTestPatterns": ["tests/**/*.ts"],
459
+ "customAssertionPatterns": ["expect[A-Z]\\w+"],
460
+ "architecturalLayers": {
461
+ "src/analysis": "analysis",
462
+ "src/cli": "cli",
463
+ "src/rendering": "rendering"
464
+ },
465
+ "suggestedDepth": 2
466
+ }
467
+ ```
468
+
469
+ If either the config `projectSemantics` block or `.archguard/project-semantics.json` is malformed, ArchGuard fails fast during configuration load or analysis startup instead of silently ignoring the knowledge.
415
470
 
416
471
  ## Output Formats
417
472
 
@@ -515,7 +570,9 @@ archguard/
515
570
  │ │ ├── golang/ # Stable (tree-sitter + gopls + Atlas)
516
571
  │ │ │ └── atlas/ # package, capability, goroutine, flow builders
517
572
  │ │ ├── java/ # Beta
518
- │ │ └── python/ # Beta
573
+ │ │ ├── python/ # Beta
574
+ │ │ ├── cpp/ # Beta (tree-sitter + CMake)
575
+ │ │ └── kotlin/ # Beta (tree-sitter + build.gradle.kts)
519
576
  │ └── types/ # Core types (config, ArchJSON, extensions)
520
577
  ├── tests/
521
578
  │ ├── unit/ # Unit tests
@@ -594,11 +651,11 @@ npm run build
594
651
  # Analyze ArchGuard itself
595
652
  node dist/cli/index.js analyze -v
596
653
 
597
- # Package-level overview
598
- node dist/cli/index.js analyze -l package -n overview
654
+ # Package-level overview only
655
+ node dist/cli/index.js analyze --diagrams package
599
656
 
600
657
  # Method-level detail for a module
601
- node dist/cli/index.js analyze -s ./src/cli -l method -n cli-module
658
+ node dist/cli/index.js analyze -s ./src/cli --diagrams method
602
659
  ```
603
660
 
604
661
  ## Technology Stack
@@ -0,0 +1,11 @@
1
+ import type { PackageGraph, PackageNode } from '../types/extensions/go-atlas.js';
2
+ export interface EnrichedPackageNode extends PackageNode {
3
+ fanIn: number;
4
+ fanOut: number;
5
+ }
6
+ export declare function computePackageFanMetrics(graph: PackageGraph): {
7
+ fanIn: Map<string, number>;
8
+ fanOut: Map<string, number>;
9
+ };
10
+ export declare function enrichPackageNodes(nodes: PackageNode[], fanIn: Map<string, number>, fanOut: Map<string, number>): EnrichedPackageNode[];
11
+ //# sourceMappingURL=atlas-metrics-analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atlas-metrics-analysis.d.ts","sourceRoot":"","sources":["../../src/analysis/atlas-metrics-analysis.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAEhF,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAQD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,GAAG;IAC7D,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B,CAUA;AAMD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAAE,EACpB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,mBAAmB,EAAE,CAMvB"}
@@ -0,0 +1,17 @@
1
+ export function computePackageFanMetrics(graph) {
2
+ const fanIn = new Map();
3
+ const fanOut = new Map();
4
+ for (const edge of graph.edges) {
5
+ fanIn.set(edge.target, (fanIn.get(edge.target) ?? 0) + 1);
6
+ fanOut.set(edge.source, (fanOut.get(edge.source) ?? 0) + 1);
7
+ }
8
+ return { fanIn, fanOut };
9
+ }
10
+ export function enrichPackageNodes(nodes, fanIn, fanOut) {
11
+ return nodes.map((node) => ({
12
+ ...node,
13
+ fanIn: fanIn.get(node.id) ?? 0,
14
+ fanOut: fanOut.get(node.id) ?? 0,
15
+ }));
16
+ }
17
+ //# sourceMappingURL=atlas-metrics-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atlas-metrics-analysis.js","sourceRoot":"","sources":["../../src/analysis/atlas-metrics-analysis.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,wBAAwB,CAAC,KAAmB;IAI1D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAMD,MAAM,UAAU,kBAAkB,CAChC,KAAoB,EACpB,KAA0B,EAC1B,MAA2B;IAE3B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,GAAG,IAAI;QACP,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;KACjC,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DependencyConstraintRule, RuleResult } from './rule-types.js';
2
+ import type { Relation } from '../../types/index.js';
3
+ export declare function checkDependencyConstraint(rule: DependencyConstraintRule, relations: Relation[]): RuleResult;
4
+ //# sourceMappingURL=dependency-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-checker.d.ts","sourceRoot":"","sources":["../../../src/analysis/fitness/dependency-checker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,wBAAwB,EAC9B,SAAS,EAAE,QAAQ,EAAE,GACpB,UAAU,CAaZ"}
@@ -0,0 +1,16 @@
1
+ import micromatch from 'micromatch';
2
+ export function checkDependencyConstraint(rule, relations) {
3
+ for (const relation of relations) {
4
+ const sourceMatches = micromatch.isMatch(relation.source, rule.from);
5
+ const targetMatches = micromatch.isMatch(relation.target, rule.to);
6
+ if (sourceMatches && targetMatches) {
7
+ return {
8
+ rule,
9
+ passed: false,
10
+ detail: `Forbidden dependency: ${relation.source} → ${relation.target}. ${rule.message}`,
11
+ };
12
+ }
13
+ }
14
+ return { rule, passed: true };
15
+ }
16
+ //# sourceMappingURL=dependency-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-checker.js","sourceRoot":"","sources":["../../../src/analysis/fitness/dependency-checker.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAIpC,MAAM,UAAU,yBAAyB,CACvC,IAA8B,EAC9B,SAAqB;IAErB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,IAAI,aAAa,IAAI,aAAa,EAAE,CAAC;YACnC,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,yBAAyB,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE;aACzF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { MetricThresholdRule, FitnessRule, RuleResult } from './rule-types.js';
2
+ import type { MetricVector } from '../../types/metric-vector.js';
3
+ import type { Relation } from '../../types/index.js';
4
+ export declare function evaluateMetricRule(rule: MetricThresholdRule, vector: MetricVector): RuleResult;
5
+ export declare function evaluateAllRules(rules: FitnessRule[], vector: MetricVector, relations: Relation[]): RuleResult[];
6
+ //# sourceMappingURL=rule-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-evaluator.d.ts","sourceRoot":"","sources":["../../../src/analysis/fitness/rule-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAmCjD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAsB9F;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAAE,EACpB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,QAAQ,EAAE,GACpB,UAAU,EAAE,CAUd"}
@@ -0,0 +1,64 @@
1
+ import { evaluateGimLossRule } from '../gim/gim-loss-evaluator.js';
2
+ import { checkDependencyConstraint } from './dependency-checker.js';
3
+ const KNOWN_METRIC_KEYS = new Set([
4
+ 'schemaVersion',
5
+ 'totalEntities',
6
+ 'totalRelations',
7
+ 'inferredRelationRatio',
8
+ 'sccCount',
9
+ 'maxInDegree',
10
+ 'maxOutDegree',
11
+ 'maxPackageSize',
12
+ 'giniInDegree',
13
+ 'giniPackageSize',
14
+ 'packageCount',
15
+ 'entityCoverageRatio',
16
+ ]);
17
+ function compare(actual, op, threshold) {
18
+ switch (op) {
19
+ case '<':
20
+ return actual < threshold;
21
+ case '<=':
22
+ return actual <= threshold;
23
+ case '>':
24
+ return actual > threshold;
25
+ case '>=':
26
+ return actual >= threshold;
27
+ case '==':
28
+ return actual === threshold;
29
+ case '!=':
30
+ return actual !== threshold;
31
+ }
32
+ }
33
+ export function evaluateMetricRule(rule, vector) {
34
+ if (!KNOWN_METRIC_KEYS.has(rule.metric)) {
35
+ return {
36
+ rule,
37
+ passed: false,
38
+ detail: `Unknown metric: '${rule.metric}'`,
39
+ };
40
+ }
41
+ const raw = vector[rule.metric];
42
+ if (raw === null || raw === undefined) {
43
+ return {
44
+ rule,
45
+ passed: false,
46
+ detail: `Metric '${rule.metric}' is not available (did you run with --include-tests?)`,
47
+ };
48
+ }
49
+ const actual = raw;
50
+ const passed = compare(actual, rule.op, rule.value);
51
+ return { rule, passed, actual };
52
+ }
53
+ export function evaluateAllRules(rules, vector, relations) {
54
+ return rules.map((rule) => {
55
+ if (rule.type === 'no-dependency') {
56
+ return checkDependencyConstraint(rule, relations);
57
+ }
58
+ if (rule.type === 'gim-loss') {
59
+ return evaluateGimLossRule(rule, vector);
60
+ }
61
+ return evaluateMetricRule(rule, vector);
62
+ });
63
+ }
64
+ //# sourceMappingURL=rule-evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-evaluator.js","sourceRoot":"","sources":["../../../src/analysis/fitness/rule-evaluator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS;IACxC,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,uBAAuB;IACvB,UAAU;IACV,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,iBAAiB;IACjB,cAAc;IACd,qBAAqB;CACtB,CAAC,CAAC;AAEH,SAAS,OAAO,CAAC,MAAc,EAAE,EAA6B,EAAE,SAAiB;IAC/E,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,GAAG;YACN,OAAO,MAAM,GAAG,SAAS,CAAC;QAC5B,KAAK,IAAI;YACP,OAAO,MAAM,IAAI,SAAS,CAAC;QAC7B,KAAK,GAAG;YACN,OAAO,MAAM,GAAG,SAAS,CAAC;QAC5B,KAAK,IAAI;YACP,OAAO,MAAM,IAAI,SAAS,CAAC;QAC7B,KAAK,IAAI;YACP,OAAO,MAAM,KAAK,SAAS,CAAC;QAC9B,KAAK,IAAI;YACP,OAAO,MAAM,KAAK,SAAS,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAyB,EAAE,MAAoB;IAChF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,oBAAoB,IAAI,CAAC,MAAM,GAAG;SAC3C,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAI,MAA6C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAExE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,WAAW,IAAI,CAAC,MAAM,wDAAwD;SACvF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,GAAa,CAAC;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAAoB,EACpB,MAAoB,EACpB,SAAqB;IAErB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,OAAO,yBAAyB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,34 @@
1
+ export type ComparisonOp = '<' | '<=' | '>' | '>=' | '==' | '!=';
2
+ export interface MetricThresholdRule {
3
+ type?: 'metric';
4
+ metric: string;
5
+ op: ComparisonOp;
6
+ value: number;
7
+ message: string;
8
+ }
9
+ export interface DependencyConstraintRule {
10
+ type: 'no-dependency';
11
+ from: string;
12
+ to: string;
13
+ message: string;
14
+ }
15
+ export type GimLossType = 'feasibility' | 'consistency' | 'description-length' | 'generation-alignment';
16
+ export interface GimLossRule {
17
+ type: 'gim-loss';
18
+ loss: GimLossType;
19
+ op: ComparisonOp;
20
+ value: number;
21
+ message: string;
22
+ }
23
+ export type FitnessRule = MetricThresholdRule | DependencyConstraintRule | GimLossRule;
24
+ export interface FitnessConfig {
25
+ rules: FitnessRule[];
26
+ failOnViolation: boolean;
27
+ }
28
+ export interface RuleResult {
29
+ rule: FitnessRule;
30
+ passed: boolean;
31
+ actual?: number | string;
32
+ detail?: string;
33
+ }
34
+ //# sourceMappingURL=rule-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-types.d.ts","sourceRoot":"","sources":["../../../src/analysis/fitness/rule-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;AAExG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,WAAW,CAAC;AAEvF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rule-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-types.js","sourceRoot":"","sources":["../../../src/analysis/fitness/rule-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import type { MetricSnapshot } from '../snapshot-store.js';
2
+ export type DirectionType = 'expansion' | 'contraction' | 'stable' | 'insufficient_data';
3
+ export type ConfidenceLevel = 'low' | 'medium';
4
+ export interface DirectionSignal {
5
+ metric: string;
6
+ direction: 'expansion' | 'contraction' | 'neutral';
7
+ delta: number | null;
8
+ percentChange: number | null;
9
+ }
10
+ export interface DirectionHint {
11
+ direction: DirectionType;
12
+ confidence: ConfidenceLevel | null;
13
+ signals: DirectionSignal[];
14
+ caveat: string;
15
+ recommendation: string;
16
+ }
17
+ export declare function computeDirectionHint(snapshots: MetricSnapshot[]): DirectionHint;
18
+ //# sourceMappingURL=direction-hint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direction-hint.d.ts","sourceRoot":"","sources":["../../../src/analysis/gim/direction-hint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,mBAAmB,CAAC;AACzF,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;IACnD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAgCD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,aAAa,CAqD/E"}
@@ -0,0 +1,76 @@
1
+ import { diffSnapshots } from '../snapshot-diff.js';
2
+ const EXPANSION_ON_INCREASE = new Set(['totalEntities', 'totalRelations', 'packageCount', 'sccCount', 'giniInDegree']);
3
+ const THRESHOLD_PCT = 5;
4
+ function signalDirection(metric, percentChange, delta) {
5
+ if (delta === null)
6
+ return 'neutral';
7
+ if (metric === 'sccCount') {
8
+ if (delta > 0)
9
+ return 'expansion';
10
+ if (delta < 0)
11
+ return 'contraction';
12
+ return 'neutral';
13
+ }
14
+ if (percentChange === null || Math.abs(percentChange) < THRESHOLD_PCT)
15
+ return 'neutral';
16
+ const increasing = delta > 0;
17
+ const expansionOnIncrease = EXPANSION_ON_INCREASE.has(metric);
18
+ if (increasing)
19
+ return expansionOnIncrease ? 'expansion' : 'contraction';
20
+ return expansionOnIncrease ? 'contraction' : 'expansion';
21
+ }
22
+ const RECOMMENDATION = {
23
+ expansion: 'System is in expansion phase. Consider scheduling contraction/refactor work to prevent structural debt from accumulating.',
24
+ contraction: 'System is in contraction phase. Good time to stabilize interfaces and consolidate responsibilities.',
25
+ stable: 'System is stable. Monitor key metrics (sccCount, giniInDegree) to catch early phase transitions.',
26
+ insufficient_data: 'Not enough snapshots to determine direction. Run archguard analyze to generate a second snapshot.',
27
+ };
28
+ export function computeDirectionHint(snapshots) {
29
+ const CAVEAT = 'Based on 2-point comparison only. Direction may flip between consecutive snapshots. Treat as a weak signal, not a definitive trend.';
30
+ if (snapshots.length < 2) {
31
+ return {
32
+ direction: 'insufficient_data',
33
+ confidence: null,
34
+ signals: [],
35
+ caveat: CAVEAT,
36
+ recommendation: RECOMMENDATION.insufficient_data,
37
+ };
38
+ }
39
+ const newer = snapshots[0];
40
+ const older = snapshots[1];
41
+ const diff = diffSnapshots(older, newer);
42
+ const trackedMetrics = ['totalEntities', 'totalRelations', 'packageCount', 'sccCount', 'giniInDegree'];
43
+ const signals = trackedMetrics.map((metric) => {
44
+ const entry = diff.entries.find((e) => e.metric === metric);
45
+ const dir = entry
46
+ ? signalDirection(metric, entry.percentChange, entry.delta)
47
+ : 'neutral';
48
+ return {
49
+ metric,
50
+ direction: dir,
51
+ delta: entry?.delta ?? null,
52
+ percentChange: entry?.percentChange ?? null,
53
+ };
54
+ });
55
+ const expansionCount = signals.filter((s) => s.direction === 'expansion').length;
56
+ const contractionCount = signals.filter((s) => s.direction === 'contraction').length;
57
+ let direction;
58
+ if (expansionCount > contractionCount && expansionCount > signals.length / 2) {
59
+ direction = 'expansion';
60
+ }
61
+ else if (contractionCount > expansionCount && contractionCount > signals.length / 2) {
62
+ direction = 'contraction';
63
+ }
64
+ else {
65
+ direction = 'stable';
66
+ }
67
+ const confidence = snapshots.length >= 3 ? 'medium' : 'low';
68
+ return {
69
+ direction,
70
+ confidence,
71
+ signals,
72
+ caveat: CAVEAT,
73
+ recommendation: RECOMMENDATION[direction],
74
+ };
75
+ }
76
+ //# sourceMappingURL=direction-hint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direction-hint.js","sourceRoot":"","sources":["../../../src/analysis/gim/direction-hint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { GimLossRule } from '../fitness/rule-types.js';
2
+ import type { RuleResult } from '../fitness/rule-types.js';
3
+ import type { MetricVector } from '../../types/metric-vector.js';
4
+ export interface LossStatus {
5
+ value: number;
6
+ status: 'healthy' | 'warning' | 'info';
7
+ detail: string;
8
+ proxy: true;
9
+ }
10
+ type LossName = GimLossRule['loss'];
11
+ export declare function evaluateGimLossRule(rule: GimLossRule, vector: MetricVector): RuleResult;
12
+ export declare function computeAllLosses(vector: MetricVector): Record<LossName, LossStatus>;
13
+ export {};
14
+ //# sourceMappingURL=gim-loss-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gim-loss-evaluator.d.ts","sourceRoot":"","sources":["../../../src/analysis/gim/gim-loss-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,IAAI,CAAC;CACb;AAED,KAAK,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAmCpC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAiBvF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAgCnF"}
@@ -0,0 +1,80 @@
1
+ function resolveProxy(loss, vector) {
2
+ switch (loss) {
3
+ case 'feasibility':
4
+ return vector.sccCount;
5
+ case 'consistency':
6
+ return vector.inferredRelationRatio;
7
+ case 'description-length':
8
+ return vector.totalEntities + vector.totalRelations;
9
+ case 'generation-alignment':
10
+ return vector.giniInDegree;
11
+ default:
12
+ return null;
13
+ }
14
+ }
15
+ function compare(actual, op, threshold) {
16
+ switch (op) {
17
+ case '<': return actual < threshold;
18
+ case '<=': return actual <= threshold;
19
+ case '>': return actual > threshold;
20
+ case '>=': return actual >= threshold;
21
+ case '==': return actual === threshold;
22
+ case '!=': return actual !== threshold;
23
+ }
24
+ }
25
+ const PROXY_LABELS = {
26
+ feasibility: 'sccCount (proxy for ℒ_F)',
27
+ consistency: 'inferredRelationRatio (proxy for ℒ_C)',
28
+ 'description-length': 'totalEntities + totalRelations (proxy for ℒ_D)',
29
+ 'generation-alignment': 'giniInDegree (proxy for ℒ_A)',
30
+ };
31
+ export function evaluateGimLossRule(rule, vector) {
32
+ const proxyValue = resolveProxy(rule.loss, vector);
33
+ if (proxyValue === null) {
34
+ return {
35
+ rule,
36
+ passed: false,
37
+ detail: `Unknown GIM loss type: '${rule.loss}'`,
38
+ };
39
+ }
40
+ const passed = compare(proxyValue, rule.op, rule.value);
41
+ return {
42
+ rule,
43
+ passed,
44
+ actual: proxyValue,
45
+ detail: `${PROXY_LABELS[rule.loss]} = ${proxyValue}`,
46
+ };
47
+ }
48
+ export function computeAllLosses(vector) {
49
+ const feasibilityVal = vector.sccCount;
50
+ const consistencyVal = vector.inferredRelationRatio;
51
+ const descLengthVal = vector.totalEntities + vector.totalRelations;
52
+ const alignmentVal = vector.giniInDegree;
53
+ return {
54
+ feasibility: {
55
+ value: feasibilityVal,
56
+ status: feasibilityVal === 0 ? 'healthy' : 'warning',
57
+ detail: `sccCount=${feasibilityVal}. Proxy for structural feasibility loss ℒ_F. Zero cycles = minimum feasibility loss.`,
58
+ proxy: true,
59
+ },
60
+ consistency: {
61
+ value: consistencyVal,
62
+ status: consistencyVal <= 0.3 ? 'healthy' : 'warning',
63
+ detail: `inferredRelationRatio=${consistencyVal.toFixed(3)}. Proxy for consistency loss ℒ_C. High ratio = many unresolved type dependencies.`,
64
+ proxy: true,
65
+ },
66
+ 'description-length': {
67
+ value: descLengthVal,
68
+ status: 'info',
69
+ detail: `totalEntities(${vector.totalEntities}) + totalRelations(${vector.totalRelations}) = ${descLengthVal}. Proxy for description-length loss ℒ_D. Smaller = easier to describe.`,
70
+ proxy: true,
71
+ },
72
+ 'generation-alignment': {
73
+ value: alignmentVal,
74
+ status: alignmentVal <= 0.5 ? 'healthy' : 'warning',
75
+ detail: `giniInDegree=${alignmentVal.toFixed(3)}. Proxy for generation-alignment loss ℒ_A. High gini = few nodes dominate dependency graph.`,
76
+ proxy: true,
77
+ },
78
+ };
79
+ }
80
+ //# sourceMappingURL=gim-loss-evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gim-loss-evaluator.js","sourceRoot":"","sources":["../../../src/analysis/gim/gim-loss-evaluator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function giniCoefficient(values: number[]): number;
2
+ //# sourceMappingURL=gini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gini.d.ts","sourceRoot":"","sources":["../../src/analysis/gini.ts"],"names":[],"mappings":"AASA,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAaxD"}
@@ -0,0 +1,12 @@
1
+ export function giniCoefficient(values) {
2
+ const n = values.length;
3
+ if (n === 0)
4
+ return 0;
5
+ const sorted = [...values].sort((a, b) => a - b);
6
+ const sum = sorted.reduce((acc, v) => acc + v, 0);
7
+ if (sum === 0)
8
+ return 0;
9
+ const weightedSum = sorted.reduce((acc, v, idx) => acc + (idx + 1) * v, 0);
10
+ return (2 * weightedSum) / (n * sum) - (n + 1) / n;
11
+ }
12
+ //# sourceMappingURL=gini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gini.js","sourceRoot":"","sources":["../../src/analysis/gini.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,eAAe,CAAC,MAAgB;IAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEtB,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAElD,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAGxB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3E,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACrD,CAAC"}