@mycodemap/mycodemap 0.1.0

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 (329) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +21 -0
  3. package/README.md +559 -0
  4. package/dist/ai/claude.d.ts +38 -0
  5. package/dist/ai/claude.d.ts.map +1 -0
  6. package/dist/ai/claude.js +169 -0
  7. package/dist/ai/claude.js.map +1 -0
  8. package/dist/ai/codex.d.ts +38 -0
  9. package/dist/ai/codex.d.ts.map +1 -0
  10. package/dist/ai/codex.js +169 -0
  11. package/dist/ai/codex.js.map +1 -0
  12. package/dist/ai/factory.d.ts +48 -0
  13. package/dist/ai/factory.d.ts.map +1 -0
  14. package/dist/ai/factory.js +95 -0
  15. package/dist/ai/factory.js.map +1 -0
  16. package/dist/ai/index.d.ts +12 -0
  17. package/dist/ai/index.d.ts.map +1 -0
  18. package/dist/ai/index.js +29 -0
  19. package/dist/ai/index.js.map +1 -0
  20. package/dist/ai/provider.d.ts +70 -0
  21. package/dist/ai/provider.d.ts.map +1 -0
  22. package/dist/ai/provider.js +31 -0
  23. package/dist/ai/provider.js.map +1 -0
  24. package/dist/ai/subagent-caller.d.ts +90 -0
  25. package/dist/ai/subagent-caller.d.ts.map +1 -0
  26. package/dist/ai/subagent-caller.js +280 -0
  27. package/dist/ai/subagent-caller.js.map +1 -0
  28. package/dist/ai/types.d.ts +70 -0
  29. package/dist/ai/types.d.ts.map +1 -0
  30. package/dist/ai/types.js +5 -0
  31. package/dist/ai/types.js.map +1 -0
  32. package/dist/cache/file-hash-cache.d.ts +76 -0
  33. package/dist/cache/file-hash-cache.d.ts.map +1 -0
  34. package/dist/cache/file-hash-cache.js +159 -0
  35. package/dist/cache/file-hash-cache.js.map +1 -0
  36. package/dist/cache/index.d.ts +151 -0
  37. package/dist/cache/index.d.ts.map +1 -0
  38. package/dist/cache/index.js +303 -0
  39. package/dist/cache/index.js.map +1 -0
  40. package/dist/cache/lru-cache.d.ts +93 -0
  41. package/dist/cache/lru-cache.d.ts.map +1 -0
  42. package/dist/cache/lru-cache.js +194 -0
  43. package/dist/cache/lru-cache.js.map +1 -0
  44. package/dist/cache/parse-cache.d.ts +68 -0
  45. package/dist/cache/parse-cache.d.ts.map +1 -0
  46. package/dist/cache/parse-cache.js +173 -0
  47. package/dist/cache/parse-cache.js.map +1 -0
  48. package/dist/cli/commands/analyze.d.ts +96 -0
  49. package/dist/cli/commands/analyze.d.ts.map +1 -0
  50. package/dist/cli/commands/analyze.js +567 -0
  51. package/dist/cli/commands/analyze.js.map +1 -0
  52. package/dist/cli/commands/ci.d.ts +25 -0
  53. package/dist/cli/commands/ci.d.ts.map +1 -0
  54. package/dist/cli/commands/ci.js +481 -0
  55. package/dist/cli/commands/ci.js.map +1 -0
  56. package/dist/cli/commands/complexity.d.ts +70 -0
  57. package/dist/cli/commands/complexity.d.ts.map +1 -0
  58. package/dist/cli/commands/complexity.js +479 -0
  59. package/dist/cli/commands/complexity.js.map +1 -0
  60. package/dist/cli/commands/cycles.d.ts +10 -0
  61. package/dist/cli/commands/cycles.d.ts.map +1 -0
  62. package/dist/cli/commands/cycles.js +202 -0
  63. package/dist/cli/commands/cycles.js.map +1 -0
  64. package/dist/cli/commands/deps.d.ts +61 -0
  65. package/dist/cli/commands/deps.d.ts.map +1 -0
  66. package/dist/cli/commands/deps.js +340 -0
  67. package/dist/cli/commands/deps.js.map +1 -0
  68. package/dist/cli/commands/generate.d.ts +8 -0
  69. package/dist/cli/commands/generate.d.ts.map +1 -0
  70. package/dist/cli/commands/generate.js +61 -0
  71. package/dist/cli/commands/generate.js.map +1 -0
  72. package/dist/cli/commands/impact.d.ts +55 -0
  73. package/dist/cli/commands/impact.d.ts.map +1 -0
  74. package/dist/cli/commands/impact.js +455 -0
  75. package/dist/cli/commands/impact.js.map +1 -0
  76. package/dist/cli/commands/init.d.ts +4 -0
  77. package/dist/cli/commands/init.d.ts.map +1 -0
  78. package/dist/cli/commands/init.js +50 -0
  79. package/dist/cli/commands/init.js.map +1 -0
  80. package/dist/cli/commands/query.d.ts +22 -0
  81. package/dist/cli/commands/query.d.ts.map +1 -0
  82. package/dist/cli/commands/query.js +718 -0
  83. package/dist/cli/commands/query.js.map +1 -0
  84. package/dist/cli/commands/watch-foreground.d.ts +9 -0
  85. package/dist/cli/commands/watch-foreground.d.ts.map +1 -0
  86. package/dist/cli/commands/watch-foreground.js +67 -0
  87. package/dist/cli/commands/watch-foreground.js.map +1 -0
  88. package/dist/cli/commands/watch.d.ts +12 -0
  89. package/dist/cli/commands/watch.d.ts.map +1 -0
  90. package/dist/cli/commands/watch.js +114 -0
  91. package/dist/cli/commands/watch.js.map +1 -0
  92. package/dist/cli/commands/workflow.d.ts +25 -0
  93. package/dist/cli/commands/workflow.d.ts.map +1 -0
  94. package/dist/cli/commands/workflow.js +488 -0
  95. package/dist/cli/commands/workflow.js.map +1 -0
  96. package/dist/cli/index.d.ts +3 -0
  97. package/dist/cli/index.d.ts.map +1 -0
  98. package/dist/cli/index.js +115 -0
  99. package/dist/cli/index.js.map +1 -0
  100. package/dist/cli/paths.d.ts +90 -0
  101. package/dist/cli/paths.d.ts.map +1 -0
  102. package/dist/cli/paths.js +136 -0
  103. package/dist/cli/paths.js.map +1 -0
  104. package/dist/cli/runtime-logger.d.ts +13 -0
  105. package/dist/cli/runtime-logger.d.ts.map +1 -0
  106. package/dist/cli/runtime-logger.js +213 -0
  107. package/dist/cli/runtime-logger.js.map +1 -0
  108. package/dist/core/analyzer.d.ts +3 -0
  109. package/dist/core/analyzer.d.ts.map +1 -0
  110. package/dist/core/analyzer.js +359 -0
  111. package/dist/core/analyzer.js.map +1 -0
  112. package/dist/core/ast-complexity-analyzer.d.ts +40 -0
  113. package/dist/core/ast-complexity-analyzer.d.ts.map +1 -0
  114. package/dist/core/ast-complexity-analyzer.js +279 -0
  115. package/dist/core/ast-complexity-analyzer.js.map +1 -0
  116. package/dist/core/global-index.d.ts +69 -0
  117. package/dist/core/global-index.d.ts.map +1 -0
  118. package/dist/core/global-index.js +388 -0
  119. package/dist/core/global-index.js.map +1 -0
  120. package/dist/generator/ai-overview.d.ts +51 -0
  121. package/dist/generator/ai-overview.d.ts.map +1 -0
  122. package/dist/generator/ai-overview.js +160 -0
  123. package/dist/generator/ai-overview.js.map +1 -0
  124. package/dist/generator/context.d.ts +5 -0
  125. package/dist/generator/context.d.ts.map +1 -0
  126. package/dist/generator/context.js +514 -0
  127. package/dist/generator/context.js.map +1 -0
  128. package/dist/generator/file-describer.d.ts +93 -0
  129. package/dist/generator/file-describer.d.ts.map +1 -0
  130. package/dist/generator/file-describer.js +375 -0
  131. package/dist/generator/file-describer.js.map +1 -0
  132. package/dist/generator/index.d.ts +8 -0
  133. package/dist/generator/index.d.ts.map +1 -0
  134. package/dist/generator/index.js +259 -0
  135. package/dist/generator/index.js.map +1 -0
  136. package/dist/index.d.ts +5 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +6 -0
  139. package/dist/index.js.map +1 -0
  140. package/dist/orchestrator/adapters/ast-grep-adapter.d.ts +75 -0
  141. package/dist/orchestrator/adapters/ast-grep-adapter.d.ts.map +1 -0
  142. package/dist/orchestrator/adapters/ast-grep-adapter.js +242 -0
  143. package/dist/orchestrator/adapters/ast-grep-adapter.js.map +1 -0
  144. package/dist/orchestrator/adapters/base-adapter.d.ts +24 -0
  145. package/dist/orchestrator/adapters/base-adapter.d.ts.map +1 -0
  146. package/dist/orchestrator/adapters/base-adapter.js +2 -0
  147. package/dist/orchestrator/adapters/base-adapter.js.map +1 -0
  148. package/dist/orchestrator/adapters/codemap-adapter.d.ts +56 -0
  149. package/dist/orchestrator/adapters/codemap-adapter.d.ts.map +1 -0
  150. package/dist/orchestrator/adapters/codemap-adapter.js +163 -0
  151. package/dist/orchestrator/adapters/codemap-adapter.js.map +1 -0
  152. package/dist/orchestrator/adapters/index.d.ts +10 -0
  153. package/dist/orchestrator/adapters/index.d.ts.map +1 -0
  154. package/dist/orchestrator/adapters/index.js +3 -0
  155. package/dist/orchestrator/adapters/index.js.map +1 -0
  156. package/dist/orchestrator/ai-feed-generator.d.ts +210 -0
  157. package/dist/orchestrator/ai-feed-generator.d.ts.map +1 -0
  158. package/dist/orchestrator/ai-feed-generator.js +377 -0
  159. package/dist/orchestrator/ai-feed-generator.js.map +1 -0
  160. package/dist/orchestrator/commit-validator.d.ts +30 -0
  161. package/dist/orchestrator/commit-validator.d.ts.map +1 -0
  162. package/dist/orchestrator/commit-validator.js +87 -0
  163. package/dist/orchestrator/commit-validator.js.map +1 -0
  164. package/dist/orchestrator/confidence.d.ts +25 -0
  165. package/dist/orchestrator/confidence.d.ts.map +1 -0
  166. package/dist/orchestrator/confidence.js +138 -0
  167. package/dist/orchestrator/confidence.js.map +1 -0
  168. package/dist/orchestrator/file-header-scanner.d.ts +48 -0
  169. package/dist/orchestrator/file-header-scanner.d.ts.map +1 -0
  170. package/dist/orchestrator/file-header-scanner.js +158 -0
  171. package/dist/orchestrator/file-header-scanner.js.map +1 -0
  172. package/dist/orchestrator/git-analyzer.d.ts +192 -0
  173. package/dist/orchestrator/git-analyzer.d.ts.map +1 -0
  174. package/dist/orchestrator/git-analyzer.js +539 -0
  175. package/dist/orchestrator/git-analyzer.js.map +1 -0
  176. package/dist/orchestrator/index.d.ts +20 -0
  177. package/dist/orchestrator/index.d.ts.map +1 -0
  178. package/dist/orchestrator/index.js +16 -0
  179. package/dist/orchestrator/index.js.map +1 -0
  180. package/dist/orchestrator/intent-router.d.ts +41 -0
  181. package/dist/orchestrator/intent-router.d.ts.map +1 -0
  182. package/dist/orchestrator/intent-router.js +98 -0
  183. package/dist/orchestrator/intent-router.js.map +1 -0
  184. package/dist/orchestrator/result-fusion.d.ts +114 -0
  185. package/dist/orchestrator/result-fusion.d.ts.map +1 -0
  186. package/dist/orchestrator/result-fusion.js +332 -0
  187. package/dist/orchestrator/result-fusion.js.map +1 -0
  188. package/dist/orchestrator/test-linker.d.ts +166 -0
  189. package/dist/orchestrator/test-linker.d.ts.map +1 -0
  190. package/dist/orchestrator/test-linker.js +570 -0
  191. package/dist/orchestrator/test-linker.js.map +1 -0
  192. package/dist/orchestrator/tool-orchestrator.d.ts +108 -0
  193. package/dist/orchestrator/tool-orchestrator.d.ts.map +1 -0
  194. package/dist/orchestrator/tool-orchestrator.js +247 -0
  195. package/dist/orchestrator/tool-orchestrator.js.map +1 -0
  196. package/dist/orchestrator/types.d.ts +162 -0
  197. package/dist/orchestrator/types.d.ts.map +1 -0
  198. package/dist/orchestrator/types.js +39 -0
  199. package/dist/orchestrator/types.js.map +1 -0
  200. package/dist/orchestrator/workflow/ci-executor.d.ts +157 -0
  201. package/dist/orchestrator/workflow/ci-executor.d.ts.map +1 -0
  202. package/dist/orchestrator/workflow/ci-executor.js +423 -0
  203. package/dist/orchestrator/workflow/ci-executor.js.map +1 -0
  204. package/dist/orchestrator/workflow/config.d.ts +97 -0
  205. package/dist/orchestrator/workflow/config.d.ts.map +1 -0
  206. package/dist/orchestrator/workflow/config.js +115 -0
  207. package/dist/orchestrator/workflow/config.js.map +1 -0
  208. package/dist/orchestrator/workflow/git-analyzer.d.ts +173 -0
  209. package/dist/orchestrator/workflow/git-analyzer.d.ts.map +1 -0
  210. package/dist/orchestrator/workflow/git-analyzer.js +473 -0
  211. package/dist/orchestrator/workflow/git-analyzer.js.map +1 -0
  212. package/dist/orchestrator/workflow/index.d.ts +21 -0
  213. package/dist/orchestrator/workflow/index.d.ts.map +1 -0
  214. package/dist/orchestrator/workflow/index.js +21 -0
  215. package/dist/orchestrator/workflow/index.js.map +1 -0
  216. package/dist/orchestrator/workflow/phase-checkpoint.d.ts +38 -0
  217. package/dist/orchestrator/workflow/phase-checkpoint.d.ts.map +1 -0
  218. package/dist/orchestrator/workflow/phase-checkpoint.js +75 -0
  219. package/dist/orchestrator/workflow/phase-checkpoint.js.map +1 -0
  220. package/dist/orchestrator/workflow/phase-inheritance.d.ts +128 -0
  221. package/dist/orchestrator/workflow/phase-inheritance.d.ts.map +1 -0
  222. package/dist/orchestrator/workflow/phase-inheritance.js +266 -0
  223. package/dist/orchestrator/workflow/phase-inheritance.js.map +1 -0
  224. package/dist/orchestrator/workflow/result-fusion.d.ts +117 -0
  225. package/dist/orchestrator/workflow/result-fusion.d.ts.map +1 -0
  226. package/dist/orchestrator/workflow/result-fusion.js +246 -0
  227. package/dist/orchestrator/workflow/result-fusion.js.map +1 -0
  228. package/dist/orchestrator/workflow/templates.d.ts +116 -0
  229. package/dist/orchestrator/workflow/templates.d.ts.map +1 -0
  230. package/dist/orchestrator/workflow/templates.js +546 -0
  231. package/dist/orchestrator/workflow/templates.js.map +1 -0
  232. package/dist/orchestrator/workflow/test-linker.d.ts +152 -0
  233. package/dist/orchestrator/workflow/test-linker.d.ts.map +1 -0
  234. package/dist/orchestrator/workflow/test-linker.js +342 -0
  235. package/dist/orchestrator/workflow/test-linker.js.map +1 -0
  236. package/dist/orchestrator/workflow/types.d.ts +202 -0
  237. package/dist/orchestrator/workflow/types.d.ts.map +1 -0
  238. package/dist/orchestrator/workflow/types.js +4 -0
  239. package/dist/orchestrator/workflow/types.js.map +1 -0
  240. package/dist/orchestrator/workflow/visualizer.d.ts +56 -0
  241. package/dist/orchestrator/workflow/visualizer.d.ts.map +1 -0
  242. package/dist/orchestrator/workflow/visualizer.js +300 -0
  243. package/dist/orchestrator/workflow/visualizer.js.map +1 -0
  244. package/dist/orchestrator/workflow/workflow-context.d.ts +50 -0
  245. package/dist/orchestrator/workflow/workflow-context.d.ts.map +1 -0
  246. package/dist/orchestrator/workflow/workflow-context.js +105 -0
  247. package/dist/orchestrator/workflow/workflow-context.js.map +1 -0
  248. package/dist/orchestrator/workflow/workflow-orchestrator.d.ts +126 -0
  249. package/dist/orchestrator/workflow/workflow-orchestrator.d.ts.map +1 -0
  250. package/dist/orchestrator/workflow/workflow-orchestrator.js +489 -0
  251. package/dist/orchestrator/workflow/workflow-orchestrator.js.map +1 -0
  252. package/dist/orchestrator/workflow/workflow-persistence.d.ts +38 -0
  253. package/dist/orchestrator/workflow/workflow-persistence.d.ts.map +1 -0
  254. package/dist/orchestrator/workflow/workflow-persistence.js +166 -0
  255. package/dist/orchestrator/workflow/workflow-persistence.js.map +1 -0
  256. package/dist/parser/implementations/fast-parser.d.ts +65 -0
  257. package/dist/parser/implementations/fast-parser.d.ts.map +1 -0
  258. package/dist/parser/implementations/fast-parser.js +299 -0
  259. package/dist/parser/implementations/fast-parser.js.map +1 -0
  260. package/dist/parser/implementations/smart-parser.d.ts +220 -0
  261. package/dist/parser/implementations/smart-parser.d.ts.map +1 -0
  262. package/dist/parser/implementations/smart-parser.js +1536 -0
  263. package/dist/parser/implementations/smart-parser.js.map +1 -0
  264. package/dist/parser/implementations/tree-sitter-parser.d.ts +57 -0
  265. package/dist/parser/implementations/tree-sitter-parser.d.ts.map +1 -0
  266. package/dist/parser/implementations/tree-sitter-parser.js +375 -0
  267. package/dist/parser/implementations/tree-sitter-parser.js.map +1 -0
  268. package/dist/parser/index.d.ts +19 -0
  269. package/dist/parser/index.d.ts.map +1 -0
  270. package/dist/parser/index.js +449 -0
  271. package/dist/parser/index.js.map +1 -0
  272. package/dist/parser/interfaces/IParser.d.ts +218 -0
  273. package/dist/parser/interfaces/IParser.d.ts.map +1 -0
  274. package/dist/parser/interfaces/IParser.js +22 -0
  275. package/dist/parser/interfaces/IParser.js.map +1 -0
  276. package/dist/plugins/built-in/call-graph.d.ts +38 -0
  277. package/dist/plugins/built-in/call-graph.d.ts.map +1 -0
  278. package/dist/plugins/built-in/call-graph.js +135 -0
  279. package/dist/plugins/built-in/call-graph.js.map +1 -0
  280. package/dist/plugins/built-in/complexity-analyzer.d.ts +45 -0
  281. package/dist/plugins/built-in/complexity-analyzer.d.ts.map +1 -0
  282. package/dist/plugins/built-in/complexity-analyzer.js +155 -0
  283. package/dist/plugins/built-in/complexity-analyzer.js.map +1 -0
  284. package/dist/plugins/index.d.ts +34 -0
  285. package/dist/plugins/index.d.ts.map +1 -0
  286. package/dist/plugins/index.js +103 -0
  287. package/dist/plugins/index.js.map +1 -0
  288. package/dist/plugins/plugin-loader.d.ts +22 -0
  289. package/dist/plugins/plugin-loader.d.ts.map +1 -0
  290. package/dist/plugins/plugin-loader.js +200 -0
  291. package/dist/plugins/plugin-loader.js.map +1 -0
  292. package/dist/plugins/plugin-registry.d.ts +20 -0
  293. package/dist/plugins/plugin-registry.d.ts.map +1 -0
  294. package/dist/plugins/plugin-registry.js +143 -0
  295. package/dist/plugins/plugin-registry.js.map +1 -0
  296. package/dist/plugins/types.d.ts +72 -0
  297. package/dist/plugins/types.d.ts.map +1 -0
  298. package/dist/plugins/types.js +5 -0
  299. package/dist/plugins/types.js.map +1 -0
  300. package/dist/types/index.d.ts +373 -0
  301. package/dist/types/index.d.ts.map +1 -0
  302. package/dist/types/index.js +7 -0
  303. package/dist/types/index.js.map +1 -0
  304. package/dist/watcher/daemon.d.ts +64 -0
  305. package/dist/watcher/daemon.d.ts.map +1 -0
  306. package/dist/watcher/daemon.js +189 -0
  307. package/dist/watcher/daemon.js.map +1 -0
  308. package/dist/watcher/file-watcher.d.ts +70 -0
  309. package/dist/watcher/file-watcher.d.ts.map +1 -0
  310. package/dist/watcher/file-watcher.js +127 -0
  311. package/dist/watcher/file-watcher.js.map +1 -0
  312. package/dist/watcher/index.d.ts +5 -0
  313. package/dist/watcher/index.d.ts.map +1 -0
  314. package/dist/watcher/index.js +6 -0
  315. package/dist/watcher/index.js.map +1 -0
  316. package/dist/watcher/watch-worker.d.ts +2 -0
  317. package/dist/watcher/watch-worker.d.ts.map +1 -0
  318. package/dist/watcher/watch-worker.js +57 -0
  319. package/dist/watcher/watch-worker.js.map +1 -0
  320. package/dist/worker/index.d.ts +76 -0
  321. package/dist/worker/index.d.ts.map +1 -0
  322. package/dist/worker/index.js +155 -0
  323. package/dist/worker/index.js.map +1 -0
  324. package/dist/worker/parse-worker.d.ts +2 -0
  325. package/dist/worker/parse-worker.d.ts.map +1 -0
  326. package/dist/worker/parse-worker.js +202 -0
  327. package/dist/worker/parse-worker.js.map +1 -0
  328. package/mycodemap.config.schema.json +42 -0
  329. package/package.json +69 -0
@@ -0,0 +1,202 @@
1
+ import chalk from 'chalk';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { resolveDataPath } from '../paths.js';
5
+ /**
6
+ * 加载代码地图数据
7
+ */
8
+ function loadCodeMap(rootDir) {
9
+ const codemapPath = resolveDataPath(rootDir);
10
+ if (!fs.existsSync(codemapPath)) {
11
+ console.log(chalk.red('❌ 代码地图不存在,请先运行 codemap generate'));
12
+ return null;
13
+ }
14
+ try {
15
+ const data = fs.readFileSync(codemapPath, 'utf-8');
16
+ return JSON.parse(data);
17
+ }
18
+ catch (error) {
19
+ console.log(chalk.red('❌ 读取代码地图失败:', error instanceof Error ? error.message : String(error)));
20
+ return null;
21
+ }
22
+ }
23
+ /**
24
+ * 构建依赖图
25
+ */
26
+ function buildDependencyGraph(codeMap) {
27
+ const graph = new Map();
28
+ for (const module of codeMap.modules) {
29
+ const deps = new Set();
30
+ for (const dep of module.dependencies) {
31
+ // 找到对应的模块
32
+ const targetModule = codeMap.modules.find(m => m.absolutePath.includes(dep) ||
33
+ path.relative(codeMap.project.rootDir, m.absolutePath).includes(dep) ||
34
+ m.id === dep);
35
+ if (targetModule) {
36
+ deps.add(targetModule.id);
37
+ }
38
+ }
39
+ graph.set(module.id, deps);
40
+ }
41
+ return graph;
42
+ }
43
+ /**
44
+ * Tarjan 算法找强连通分量
45
+ */
46
+ function findStronglyConnectedComponents(graph) {
47
+ const indexCounter = { value: 0 };
48
+ const stack = [];
49
+ const lowlinks = new Map();
50
+ const index = new Map();
51
+ const onStack = new Map();
52
+ const stronglyConnectedComponents = [];
53
+ function strongconnect(node) {
54
+ index.set(node, indexCounter.value);
55
+ lowlinks.set(node, indexCounter.value);
56
+ indexCounter.value++;
57
+ stack.push(node);
58
+ onStack.set(node, true);
59
+ // 遍历邻居
60
+ const neighbors = graph.get(node) || new Set();
61
+ for (const neighbor of neighbors) {
62
+ if (!index.has(neighbor)) {
63
+ strongconnect(neighbor);
64
+ lowlinks.set(node, Math.min(lowlinks.get(node), lowlinks.get(neighbor)));
65
+ }
66
+ else if (onStack.get(neighbor)) {
67
+ lowlinks.set(node, Math.min(lowlinks.get(node), index.get(neighbor)));
68
+ }
69
+ }
70
+ // 如果是强连通分量的根
71
+ if (lowlinks.get(node) === index.get(node)) {
72
+ const component = [];
73
+ let stackNode;
74
+ do {
75
+ stackNode = stack.pop();
76
+ onStack.set(stackNode, false);
77
+ component.push(stackNode);
78
+ } while (stackNode !== node);
79
+ if (component.length > 1) {
80
+ stronglyConnectedComponents.push(component);
81
+ }
82
+ }
83
+ }
84
+ for (const node of graph.keys()) {
85
+ if (!index.has(node)) {
86
+ strongconnect(node);
87
+ }
88
+ }
89
+ return stronglyConnectedComponents;
90
+ }
91
+ /**
92
+ * 深度优先搜索找指定深度的循环
93
+ */
94
+ function findCyclesWithDepth(graph, maxDepth) {
95
+ const cycles = [];
96
+ const visited = new Set();
97
+ function dfs(node, path, depth) {
98
+ if (depth > maxDepth)
99
+ return;
100
+ visited.add(node);
101
+ path.push(node);
102
+ const neighbors = graph.get(node) || new Set();
103
+ for (const neighbor of neighbors) {
104
+ if (neighbor === path[0] && path.length > 1) {
105
+ // 找到循环
106
+ cycles.push([...path]);
107
+ }
108
+ else if (!visited.has(neighbor)) {
109
+ dfs(neighbor, [...path], depth + 1);
110
+ }
111
+ }
112
+ visited.delete(node);
113
+ }
114
+ for (const node of graph.keys()) {
115
+ if (!visited.has(node)) {
116
+ dfs(node, [], 1);
117
+ }
118
+ }
119
+ return cycles;
120
+ }
121
+ /**
122
+ * 获取模块的相对路径
123
+ */
124
+ function getModuleRelPath(codeMap, moduleId) {
125
+ const module = codeMap.modules.find(m => m.id === moduleId);
126
+ if (!module)
127
+ return moduleId;
128
+ return path.relative(codeMap.project.rootDir, module.absolutePath);
129
+ }
130
+ /**
131
+ * 格式化循环依赖输出
132
+ */
133
+ function formatCycles(codeMap, cycles, maxDepth, options) {
134
+ if (options.json) {
135
+ const output = {
136
+ hasCycles: cycles.length > 0,
137
+ cycleCount: cycles.length,
138
+ maxDepth,
139
+ cycles: cycles.map(cycle => cycle.map(id => getModuleRelPath(codeMap, id)))
140
+ };
141
+ console.log(JSON.stringify(output, null, 2));
142
+ return;
143
+ }
144
+ console.log(chalk.cyan('\n🔄 循环依赖检测'));
145
+ console.log(chalk.gray('─'.repeat(50)));
146
+ if (cycles.length === 0) {
147
+ console.log(chalk.green('\n✅ 未检测到循环依赖!'));
148
+ }
149
+ else {
150
+ console.log(chalk.red(`\n⚠️ 发现 ${cycles.length} 个循环依赖:\n`));
151
+ for (let i = 0; i < cycles.length; i++) {
152
+ const cycle = cycles[i];
153
+ console.log(chalk.yellow(` 循环 ${i + 1}:`));
154
+ for (let j = 0; j < cycle.length; j++) {
155
+ const moduleId = cycle[j];
156
+ const relPath = getModuleRelPath(codeMap, moduleId);
157
+ if (j === cycle.length - 1) {
158
+ console.log(chalk.red(` └─► ${relPath}`));
159
+ }
160
+ else {
161
+ console.log(chalk.red(` ├─► ${relPath}`));
162
+ }
163
+ }
164
+ console.log('');
165
+ }
166
+ // 分析循环依赖的影响
167
+ const affectedModules = new Set();
168
+ for (const cycle of cycles) {
169
+ for (const id of cycle) {
170
+ affectedModules.add(id);
171
+ }
172
+ }
173
+ console.log(chalk.gray('─'.repeat(50)));
174
+ console.log(chalk.cyan(` 受影响的模块数: ${affectedModules.size}`));
175
+ console.log(chalk.cyan(` 检测深度: ${maxDepth}`));
176
+ }
177
+ console.log('');
178
+ }
179
+ /**
180
+ * Cycles 命令实现
181
+ */
182
+ export async function cyclesCommand(options) {
183
+ const rootDir = process.cwd();
184
+ const maxDepth = options.depth || 5;
185
+ // 加载代码地图
186
+ const codeMap = loadCodeMap(rootDir);
187
+ if (!codeMap) {
188
+ process.exit(1);
189
+ }
190
+ // 构建依赖图
191
+ const graph = buildDependencyGraph(codeMap);
192
+ // 找强连通分量
193
+ const stronglyConnected = findStronglyConnectedComponents(graph);
194
+ // 根据深度限制找循环
195
+ const cycles = findCyclesWithDepth(graph, maxDepth);
196
+ // 合并结果(去重)
197
+ const allCycles = [...stronglyConnected, ...cycles];
198
+ const uniqueCycles = allCycles.map(c => [...c].sort()).sort();
199
+ // 输出结果
200
+ formatCycles(codeMap, uniqueCycles, maxDepth, options);
201
+ }
202
+ //# sourceMappingURL=cycles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycles.js","sourceRoot":"","sources":["../../../src/cli/commands/cycles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { UnifiedResult } from '../../orchestrator/types.js';
2
+ interface DepsOptions {
3
+ module?: string;
4
+ json?: boolean;
5
+ structured?: boolean;
6
+ }
7
+ interface DepsArgs {
8
+ targets: string[];
9
+ }
10
+ interface DepsModuleInfo {
11
+ path: string;
12
+ relativePath: string;
13
+ dependencies: string[];
14
+ dependents: string[];
15
+ dependentsMap?: Array<{
16
+ id: string;
17
+ path: string;
18
+ }>;
19
+ }
20
+ interface DepsResult {
21
+ modules: DepsModuleInfo[];
22
+ allDependencies?: Array<{
23
+ path: string;
24
+ count: number;
25
+ type: string;
26
+ }>;
27
+ }
28
+ /**
29
+ * Deps 命令实现 - 保持向后兼容
30
+ */
31
+ export declare function depsCommand(options: DepsOptions): Promise<void>;
32
+ /**
33
+ * DepsCommand 类 - 供 ToolOrchestrator 调用
34
+ */
35
+ export declare class DepsCommand {
36
+ private codeMap;
37
+ /**
38
+ * 加载代码地图
39
+ */
40
+ private loadCodeMap;
41
+ /**
42
+ * 执行依赖分析
43
+ * @param args 分析参数
44
+ * @returns 依赖分析结果
45
+ */
46
+ run(args: DepsArgs): Promise<DepsResult>;
47
+ /**
48
+ * 执行增强依赖分析,返回 UnifiedResult 格式
49
+ * @param args 分析参数
50
+ * @returns UnifiedResult 数组
51
+ */
52
+ runEnhanced(args: DepsArgs): Promise<UnifiedResult[]>;
53
+ /**
54
+ * 将 DepsResult 转换为 UnifiedResult 数组
55
+ * @param result 依赖分析结果
56
+ * @returns UnifiedResult 数组
57
+ */
58
+ private toUnifiedResults;
59
+ }
60
+ export type { DepsArgs, DepsResult, DepsModuleInfo };
61
+ //# sourceMappingURL=deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deps.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,6BAA6B,CAAC;AAE5E,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,QAAQ;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,aAAa,CAAC,EAAE,KAAK,CAAC;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,KAAK,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AA+OD;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBA4BrD;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAwB;IAEvC;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;;;OAIG;IACG,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAgB9C;;;;OAIG;IACG,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAK3D;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CA8DzB;AAGD,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,340 @@
1
+ // [META] since:2026-03-03 | owner:orchestrator-team | stable:true
2
+ // [WHY] 提供依赖分析命令,添加 dependentsMap 解决 ID 到路径映射
3
+ import chalk from 'chalk';
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ import { resolveDataPath } from '../paths.js';
7
+ /**
8
+ * 加载代码地图数据
9
+ */
10
+ function loadCodeMap(rootDir) {
11
+ const codemapPath = resolveDataPath(rootDir);
12
+ if (!fs.existsSync(codemapPath)) {
13
+ console.log(chalk.red('❌ 代码地图不存在,请先运行 codemap generate'));
14
+ return null;
15
+ }
16
+ try {
17
+ const data = fs.readFileSync(codemapPath, 'utf-8');
18
+ return JSON.parse(data);
19
+ }
20
+ catch (error) {
21
+ console.log(chalk.red('❌ 读取代码地图失败:', error instanceof Error ? error.message : String(error)));
22
+ return null;
23
+ }
24
+ }
25
+ /**
26
+ * 获取模块的依赖关系
27
+ */
28
+ function getModuleDependencies(codeMap, modulePath) {
29
+ const module = codeMap.modules.find(m => m.absolutePath.includes(modulePath) ||
30
+ path.relative(codeMap.project.rootDir, m.absolutePath).includes(modulePath));
31
+ if (!module) {
32
+ return { module: undefined, dependencies: [], dependents: [] };
33
+ }
34
+ return {
35
+ module,
36
+ dependencies: module.dependencies,
37
+ dependents: module.dependents
38
+ };
39
+ }
40
+ /**
41
+ * 构建 dependents ID 到路径的映射
42
+ */
43
+ function buildDependentsMap(dependents, codeMap) {
44
+ return dependents.map(id => {
45
+ const depModule = codeMap.modules.find(m => m.id === id);
46
+ return {
47
+ id,
48
+ path: depModule
49
+ ? path.relative(codeMap.project.rootDir, depModule.absolutePath)
50
+ : id
51
+ };
52
+ });
53
+ }
54
+ /**
55
+ * 构建 SourceLocation 对象
56
+ */
57
+ function buildLocation(filePath, line = 1, column = 1) {
58
+ return {
59
+ file: filePath,
60
+ line,
61
+ column,
62
+ };
63
+ }
64
+ /**
65
+ * 分析依赖关系 - 纯逻辑函数
66
+ * @param codeMap 代码地图数据
67
+ * @param modulePaths 目标模块路径列表(可选,为空则分析所有模块)
68
+ * @returns 依赖分析结果
69
+ */
70
+ function analyzeDeps(codeMap, modulePaths) {
71
+ const modules = [];
72
+ const allDependencies = [];
73
+ if (modulePaths && modulePaths.length > 0) {
74
+ // 分析指定模块
75
+ for (const modulePath of modulePaths) {
76
+ const result = getModuleDependencies(codeMap, modulePath);
77
+ if (result.module) {
78
+ const dependentsMap = buildDependentsMap(result.module.dependents, codeMap);
79
+ modules.push({
80
+ path: result.module.absolutePath,
81
+ relativePath: path.relative(codeMap.project.rootDir, result.module.absolutePath),
82
+ dependencies: result.dependencies,
83
+ dependents: result.dependents,
84
+ dependentsMap
85
+ });
86
+ }
87
+ }
88
+ }
89
+ else {
90
+ // 分析所有模块
91
+ for (const module of codeMap.modules) {
92
+ const dependentsMap = buildDependentsMap(module.dependents, codeMap);
93
+ modules.push({
94
+ path: module.absolutePath,
95
+ relativePath: path.relative(codeMap.project.rootDir, module.absolutePath),
96
+ dependencies: module.dependencies,
97
+ dependents: module.dependents,
98
+ dependentsMap
99
+ });
100
+ allDependencies.push({
101
+ path: module.absolutePath,
102
+ count: module.dependencies.length,
103
+ type: module.type
104
+ });
105
+ }
106
+ // 按依赖数量排序
107
+ allDependencies.sort((a, b) => b.count - a.count);
108
+ }
109
+ return {
110
+ modules,
111
+ allDependencies: allDependencies.length > 0 ? allDependencies : undefined
112
+ };
113
+ }
114
+ /**
115
+ * 格式化依赖输出
116
+ */
117
+ function formatDependencies(codeMap, targetModule, allDependencies, options) {
118
+ if (options.json) {
119
+ const output = {};
120
+ if (options.module && targetModule) {
121
+ const dependentsMap = buildDependentsMap(targetModule.dependents, codeMap);
122
+ const location = buildLocation(path.relative(codeMap.project.rootDir, targetModule.absolutePath));
123
+ output.module = {
124
+ path: targetModule.absolutePath,
125
+ relativePath: path.relative(codeMap.project.rootDir, targetModule.absolutePath),
126
+ location, // 新增:结构化位置信息
127
+ dependencies: targetModule.dependencies,
128
+ dependents: targetModule.dependents,
129
+ dependentsMap
130
+ };
131
+ }
132
+ else {
133
+ output.allDependencies = Object.fromEntries(allDependencies);
134
+ output.modules = Array.from(allDependencies.entries()).map(([modulePath, info]) => ({
135
+ path: modulePath,
136
+ relativePath: path.relative(codeMap.project.rootDir, modulePath),
137
+ location: buildLocation(path.relative(codeMap.project.rootDir, modulePath)),
138
+ ...info
139
+ }));
140
+ }
141
+ console.log(JSON.stringify(output, null, 2));
142
+ return;
143
+ }
144
+ if (options.module && targetModule) {
145
+ // 输出指定模块的依赖
146
+ console.log(chalk.cyan(`\n📦 模块: ${path.relative(codeMap.project.rootDir, targetModule.absolutePath)}`));
147
+ console.log(chalk.gray('─'.repeat(50)));
148
+ // 直接依赖
149
+ console.log(chalk.yellow('\n⬇️ 直接依赖 (dependencies):'));
150
+ if (targetModule.dependencies.length === 0) {
151
+ console.log(chalk.gray(' 无'));
152
+ }
153
+ else {
154
+ for (const dep of targetModule.dependencies) {
155
+ const depModule = codeMap.modules.find(m => m.dependencies.includes(dep) || m.absolutePath.includes(dep));
156
+ const depType = depModule?.type || 'unknown';
157
+ console.log(chalk.green(` • ${dep}`), chalk.gray(`[${depType}]`));
158
+ }
159
+ }
160
+ // 依赖者(反向依赖)
161
+ console.log(chalk.yellow('\n⬆️ 被依赖 (dependents):'));
162
+ if (targetModule.dependents.length === 0) {
163
+ console.log(chalk.gray(' 无'));
164
+ }
165
+ else {
166
+ for (const dep of targetModule.dependents) {
167
+ const depModule = codeMap.modules.find(m => m.id === dep);
168
+ const relPath = depModule
169
+ ? path.relative(codeMap.project.rootDir, depModule.absolutePath)
170
+ : dep;
171
+ console.log(chalk.green(` • ${relPath}`));
172
+ }
173
+ }
174
+ // 统计
175
+ console.log(chalk.gray('─'.repeat(50)));
176
+ console.log(chalk.cyan(` 依赖数量: ${targetModule.dependencies.length}`));
177
+ console.log(chalk.cyan(` 被依赖数量: ${targetModule.dependents.length}`));
178
+ }
179
+ else {
180
+ // 输出所有模块的依赖统计
181
+ console.log(chalk.cyan('\n📊 项目依赖分析'));
182
+ console.log(chalk.gray('─'.repeat(50)));
183
+ // 按依赖数量排序
184
+ const sortedDeps = Array.from(allDependencies.entries())
185
+ .sort((a, b) => b[1].count - a[1].count);
186
+ console.log(chalk.yellow('\n📦 模块依赖排名 (Top 20):'));
187
+ let rank = 1;
188
+ for (const [modulePath, info] of sortedDeps.slice(0, 20)) {
189
+ const relPath = modulePath.replace(codeMap.project.rootDir + '/', '');
190
+ console.log(chalk.green(` ${rank}. ${relPath}`));
191
+ console.log(chalk.gray(` 依赖: ${info.count}, 类型: ${info.type}`));
192
+ rank++;
193
+ }
194
+ // 统计
195
+ const totalDeps = allDependencies.size;
196
+ const totalDepCount = Array.from(allDependencies.values()).reduce((sum, v) => sum + v.count, 0);
197
+ console.log(chalk.gray('─'.repeat(50)));
198
+ console.log(chalk.cyan(` 总模块数: ${codeMap.modules.length}`));
199
+ console.log(chalk.cyan(` 有依赖的模块: ${totalDeps}`));
200
+ console.log(chalk.cyan(` 总依赖关系: ${totalDepCount}`));
201
+ }
202
+ console.log('');
203
+ }
204
+ /**
205
+ * Deps 命令实现 - 保持向后兼容
206
+ */
207
+ export async function depsCommand(options) {
208
+ const rootDir = process.cwd();
209
+ // 加载代码地图
210
+ const codeMap = loadCodeMap(rootDir);
211
+ if (!codeMap) {
212
+ process.exit(1);
213
+ }
214
+ // 获取目标模块
215
+ let targetModule;
216
+ const allDependencies = new Map();
217
+ if (options.module) {
218
+ const result = getModuleDependencies(codeMap, options.module);
219
+ targetModule = result.module;
220
+ }
221
+ else {
222
+ // 统计所有模块的依赖
223
+ for (const module of codeMap.modules) {
224
+ allDependencies.set(module.absolutePath, {
225
+ type: module.type,
226
+ count: module.dependencies.length
227
+ });
228
+ }
229
+ }
230
+ // 输出结果
231
+ formatDependencies(codeMap, targetModule, allDependencies, options);
232
+ }
233
+ /**
234
+ * DepsCommand 类 - 供 ToolOrchestrator 调用
235
+ */
236
+ export class DepsCommand {
237
+ codeMap = null;
238
+ /**
239
+ * 加载代码地图
240
+ */
241
+ loadCodeMap(rootDir) {
242
+ const codemapPath = resolveDataPath(rootDir);
243
+ if (!fs.existsSync(codemapPath)) {
244
+ return null;
245
+ }
246
+ try {
247
+ const data = fs.readFileSync(codemapPath, 'utf-8');
248
+ return JSON.parse(data);
249
+ }
250
+ catch {
251
+ return null;
252
+ }
253
+ }
254
+ /**
255
+ * 执行依赖分析
256
+ * @param args 分析参数
257
+ * @returns 依赖分析结果
258
+ */
259
+ async run(args) {
260
+ const rootDir = process.cwd();
261
+ // 加载代码地图
262
+ if (!this.codeMap) {
263
+ this.codeMap = this.loadCodeMap(rootDir);
264
+ }
265
+ if (!this.codeMap) {
266
+ throw new Error('代码地图不存在,请先运行 codemap generate');
267
+ }
268
+ // 执行分析
269
+ return analyzeDeps(this.codeMap, args.targets.length > 0 ? args.targets : undefined);
270
+ }
271
+ /**
272
+ * 执行增强依赖分析,返回 UnifiedResult 格式
273
+ * @param args 分析参数
274
+ * @returns UnifiedResult 数组
275
+ */
276
+ async runEnhanced(args) {
277
+ const result = await this.run(args);
278
+ return this.toUnifiedResults(result);
279
+ }
280
+ /**
281
+ * 将 DepsResult 转换为 UnifiedResult 数组
282
+ * @param result 依赖分析结果
283
+ * @returns UnifiedResult 数组
284
+ */
285
+ toUnifiedResults(result) {
286
+ const unifiedResults = [];
287
+ for (const module of result.modules) {
288
+ // 生成唯一ID
289
+ const fileName = path.basename(module.path);
290
+ const id = `codemap-${fileName}-0`;
291
+ // 构建人类可读内容
292
+ const depCount = module.dependencies.length;
293
+ const dependentCount = module.dependents.length;
294
+ const content = `依赖 ${depCount} 个模块,被 ${dependentCount} 个模块依赖`;
295
+ // 计算依赖复杂度评分 (gravity)
296
+ // 基于依赖数量和被依赖数量的加权计算
297
+ const gravity = Math.min(1.0, (depCount + dependentCount * 2) / 20);
298
+ // 构建热度评分对象
299
+ const heatScore = {
300
+ freq30d: 0, // 依赖分析不涉及提交历史
301
+ lastType: 'dependency',
302
+ lastDate: null,
303
+ stability: true
304
+ };
305
+ // 构建元数据
306
+ const metadata = {
307
+ symbolType: 'class',
308
+ dependencies: module.dependencies,
309
+ testFile: '',
310
+ commitCount: 0,
311
+ gravity,
312
+ heatScore,
313
+ impactCount: dependentCount,
314
+ stability: dependentCount === 0 || dependentCount > 5, // 无依赖或多依赖视为稳定
315
+ riskLevel: gravity > 0.7 ? 'high' : gravity > 0.4 ? 'medium' : 'low'
316
+ };
317
+ // 构建 location
318
+ const location = {
319
+ file: module.relativePath,
320
+ line: 1,
321
+ column: 1,
322
+ };
323
+ unifiedResults.push({
324
+ id,
325
+ source: 'codemap',
326
+ toolScore: 0.9,
327
+ type: 'file',
328
+ file: module.path,
329
+ line: 1,
330
+ location, // 新增:结构化位置信息
331
+ content,
332
+ relevance: 0.8,
333
+ keywords: [],
334
+ metadata
335
+ });
336
+ }
337
+ return unifiedResults;
338
+ }
339
+ }
340
+ //# sourceMappingURL=deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.js","sourceRoot":"","sources":["../../../src/cli/commands/deps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function generateCommand(options: {
2
+ mode?: string;
3
+ output?: string;
4
+ watch?: boolean;
5
+ ai?: boolean;
6
+ 'ai-context'?: boolean;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AASA,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,iBA+DA"}