@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,90 @@
1
+ /**
2
+ * 新旧路径常量
3
+ */
4
+ export declare const DEFAULT_OUTPUT_DIR_NEW = ".mycodemap";
5
+ export declare const DEFAULT_OUTPUT_DIR_OLD = ".codemap";
6
+ export declare const CONFIG_FILE_NEW = "mycodemap.config.json";
7
+ export declare const CONFIG_FILE_OLD = "codemap.config.json";
8
+ export declare const DATA_FILE = "codemap.json";
9
+ /**
10
+ * 路径解析结果
11
+ */
12
+ export interface ResolvePathsResult {
13
+ /** 实际使用的输出目录 */
14
+ outputDir: string;
15
+ /** 是否使用了旧路径(用于显示迁移提示) */
16
+ isLegacy: boolean;
17
+ /** 配置文件完整路径 */
18
+ configPath: string;
19
+ /** 数据文件完整路径 */
20
+ dataPath: string;
21
+ }
22
+ /**
23
+ * 解析输出目录
24
+ * - 优先使用新路径 .mycodemap
25
+ * - 不存在则回退旧路径 .codemap
26
+ * - 如果显式指定了 output 则使用指定的路径
27
+ *
28
+ * @param customOutput - 用户显式指定的输出目录
29
+ * @param rootDir - 项目根目录(默认为 cwd)
30
+ * @returns 解析结果(默认返回绝对路径)
31
+ */
32
+ export declare function resolveOutputDir(customOutput?: string, rootDir?: string): ResolvePathsResult;
33
+ /**
34
+ * 解析配置文件路径(读取时使用)
35
+ * - 优先检查新配置 mycodemap.config.json
36
+ * - 不存在则回退旧配置 codemap.config.json
37
+ *
38
+ * @param rootDir - 项目根目录(默认为 cwd)
39
+ * @returns 配置文件路径和是否使用旧配置
40
+ */
41
+ export declare function resolveConfigPath(rootDir?: string): {
42
+ path: string;
43
+ isLegacy: boolean;
44
+ };
45
+ /**
46
+ * 解析数据文件路径
47
+ * P0 保持 codemap.json 不变
48
+ *
49
+ * @param rootDir - 项目根目录
50
+ * @param outputDir - 输出目录(可选,默认使用 resolveOutputDir)
51
+ * @returns 数据文件路径
52
+ */
53
+ export declare function resolveDataPath(rootDir?: string, outputDir?: string): string;
54
+ /**
55
+ * 获取日志目录路径
56
+ *
57
+ * @param rootDir - 项目根目录
58
+ * @returns 日志目录路径
59
+ */
60
+ export declare function resolveLogDir(rootDir?: string): string;
61
+ /**
62
+ * 获取 workflow 目录路径
63
+ *
64
+ * @param rootDir - 项目根目录
65
+ * @param outputDir - 输出目录(可选)
66
+ * @returns workflow 目录路径
67
+ */
68
+ export declare function resolveWorkflowDir(rootDir?: string, outputDir?: string): string;
69
+ /**
70
+ * 获取 workflow 特定文件路径
71
+ *
72
+ * @param name - 文件名(不含路径)
73
+ * @param rootDir - 项目根目录
74
+ * @param outputDir - 输出目录(可选)
75
+ * @returns 文件完整路径
76
+ */
77
+ export declare function resolveWorkflowFile(name: string, rootDir?: string, outputDir?: string): string;
78
+ /**
79
+ * 获取模板目录路径
80
+ *
81
+ * @param rootDir - 项目根目录
82
+ * @param outputDir - 输出目录(可选)
83
+ * @returns 模板目录路径
84
+ */
85
+ export declare function resolveTemplatesDir(rootDir?: string, outputDir?: string): string;
86
+ /**
87
+ * 输出迁移提示(当检测到使用旧路径时)
88
+ */
89
+ export declare function printMigrationWarning(): void;
90
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/cli/paths.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,eAAO,MAAM,eAAe,0BAA0B,CAAC;AACvD,eAAO,MAAM,eAAe,wBAAwB,CAAC;AACrD,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,GAAG,kBAAkB,CAyBnG;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,MAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAa9F;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,MAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAGnF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,MAAc,GAAG,MAAM,CAG7D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,MAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAErG;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,MAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAQ5C"}
@@ -0,0 +1,136 @@
1
+ // [META] since:2026-03-04 | owner:cli-team | stable:false
2
+ // [WHY] 提供统一的路径解析工具,处理新旧目录/配置文件名的兼容逻辑
3
+ import { existsSync } from 'node:fs';
4
+ import { join, isAbsolute } from 'node:path';
5
+ import { cwd } from 'node:process';
6
+ /**
7
+ * 新旧路径常量
8
+ */
9
+ export const DEFAULT_OUTPUT_DIR_NEW = '.mycodemap';
10
+ export const DEFAULT_OUTPUT_DIR_OLD = '.codemap';
11
+ export const CONFIG_FILE_NEW = 'mycodemap.config.json';
12
+ export const CONFIG_FILE_OLD = 'codemap.config.json';
13
+ export const DATA_FILE = 'codemap.json'; // P0 保持不变
14
+ /**
15
+ * 解析输出目录
16
+ * - 优先使用新路径 .mycodemap
17
+ * - 不存在则回退旧路径 .codemap
18
+ * - 如果显式指定了 output 则使用指定的路径
19
+ *
20
+ * @param customOutput - 用户显式指定的输出目录
21
+ * @param rootDir - 项目根目录(默认为 cwd)
22
+ * @returns 解析结果(默认返回绝对路径)
23
+ */
24
+ export function resolveOutputDir(customOutput, rootDir = cwd()) {
25
+ let resolvedPath;
26
+ // 如果用户显式指定了输出目录,直接使用
27
+ if (customOutput) {
28
+ resolvedPath = isAbsolute(customOutput) ? customOutput : join(rootDir, customOutput);
29
+ }
30
+ else {
31
+ // 优先检查新路径
32
+ const newPath = join(rootDir, DEFAULT_OUTPUT_DIR_NEW);
33
+ if (existsSync(newPath) || !existsSync(join(rootDir, DEFAULT_OUTPUT_DIR_OLD))) {
34
+ resolvedPath = newPath;
35
+ }
36
+ else {
37
+ // 回退到旧路径
38
+ resolvedPath = join(rootDir, DEFAULT_OUTPUT_DIR_OLD);
39
+ }
40
+ }
41
+ const isLegacy = resolvedPath.includes(DEFAULT_OUTPUT_DIR_OLD);
42
+ return {
43
+ outputDir: resolvedPath,
44
+ isLegacy,
45
+ configPath: join(resolvedPath, isLegacy ? CONFIG_FILE_OLD : CONFIG_FILE_NEW),
46
+ dataPath: join(resolvedPath, DATA_FILE),
47
+ };
48
+ }
49
+ /**
50
+ * 解析配置文件路径(读取时使用)
51
+ * - 优先检查新配置 mycodemap.config.json
52
+ * - 不存在则回退旧配置 codemap.config.json
53
+ *
54
+ * @param rootDir - 项目根目录(默认为 cwd)
55
+ * @returns 配置文件路径和是否使用旧配置
56
+ */
57
+ export function resolveConfigPath(rootDir = cwd()) {
58
+ const newPath = join(rootDir, CONFIG_FILE_NEW);
59
+ if (existsSync(newPath)) {
60
+ return { path: newPath, isLegacy: false };
61
+ }
62
+ const oldPath = join(rootDir, CONFIG_FILE_OLD);
63
+ if (existsSync(oldPath)) {
64
+ return { path: oldPath, isLegacy: true };
65
+ }
66
+ // 都不存在,返回新路径(用于创建)
67
+ return { path: newPath, isLegacy: false };
68
+ }
69
+ /**
70
+ * 解析数据文件路径
71
+ * P0 保持 codemap.json 不变
72
+ *
73
+ * @param rootDir - 项目根目录
74
+ * @param outputDir - 输出目录(可选,默认使用 resolveOutputDir)
75
+ * @returns 数据文件路径
76
+ */
77
+ export function resolveDataPath(rootDir = cwd(), outputDir) {
78
+ const resolved = resolveOutputDir(outputDir, rootDir);
79
+ return resolved.dataPath;
80
+ }
81
+ /**
82
+ * 获取日志目录路径
83
+ *
84
+ * @param rootDir - 项目根目录
85
+ * @returns 日志目录路径
86
+ */
87
+ export function resolveLogDir(rootDir = cwd()) {
88
+ const resolved = resolveOutputDir(undefined, rootDir);
89
+ return join(resolved.outputDir, 'logs');
90
+ }
91
+ /**
92
+ * 获取 workflow 目录路径
93
+ *
94
+ * @param rootDir - 项目根目录
95
+ * @param outputDir - 输出目录(可选)
96
+ * @returns workflow 目录路径
97
+ */
98
+ export function resolveWorkflowDir(rootDir = cwd(), outputDir) {
99
+ const dir = outputDir || resolveOutputDir(undefined, rootDir).outputDir;
100
+ return join(dir, 'workflow');
101
+ }
102
+ /**
103
+ * 获取 workflow 特定文件路径
104
+ *
105
+ * @param name - 文件名(不含路径)
106
+ * @param rootDir - 项目根目录
107
+ * @param outputDir - 输出目录(可选)
108
+ * @returns 文件完整路径
109
+ */
110
+ export function resolveWorkflowFile(name, rootDir = cwd(), outputDir) {
111
+ return join(resolveWorkflowDir(rootDir, outputDir), name);
112
+ }
113
+ /**
114
+ * 获取模板目录路径
115
+ *
116
+ * @param rootDir - 项目根目录
117
+ * @param outputDir - 输出目录(可选)
118
+ * @returns 模板目录路径
119
+ */
120
+ export function resolveTemplatesDir(rootDir = cwd(), outputDir) {
121
+ const dir = outputDir || resolveOutputDir(undefined, rootDir).outputDir;
122
+ return join(dir, 'templates');
123
+ }
124
+ /**
125
+ * 输出迁移提示(当检测到使用旧路径时)
126
+ */
127
+ export function printMigrationWarning() {
128
+ const { isLegacy } = resolveOutputDir();
129
+ if (isLegacy) {
130
+ console.warn('');
131
+ console.warn('\x1b[33m⚠️ 检测到使用旧目录 .codemap,新版本将使用 .mycodemap\x1b[0m');
132
+ console.warn('\x1b[33m 请迁移您的数据:mv .codemap .mycodemap\x1b[0m');
133
+ console.warn('');
134
+ }
135
+ }
136
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/cli/paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface RuntimeLogConfig {
2
+ enabled: boolean;
3
+ logDir: string;
4
+ logFilePath: string;
5
+ retentionDays: number;
6
+ maxFiles: number;
7
+ maxFileSizeBytes: number;
8
+ }
9
+ export declare function appendRuntimeLog(logFilePath: string, line: string, maxFileSizeBytes: number): void;
10
+ export declare function resolveRuntimeLogConfig(cwd: string, env?: NodeJS.ProcessEnv, now?: Date): RuntimeLogConfig;
11
+ export declare function cleanupRuntimeLogs(logDir: string, retentionDays: number, maxFiles: number, now?: Date): void;
12
+ export declare function setupRuntimeLogging(argv: string[], cwd?: string, env?: NodeJS.ProcessEnv): RuntimeLogConfig | null;
13
+ //# sourceMappingURL=runtime-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-logger.d.ts","sourceRoot":"","sources":["../../src/cli/runtime-logger.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAoGD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAQlG;AAwBD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,GAAG,OAAa,GACf,gBAAgB,CA6BlB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,GAAG,OAAa,GACf,IAAI,CAyCN;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,SAAgB,EACnB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,gBAAgB,GAAG,IAAI,CAgDzB"}
@@ -0,0 +1,213 @@
1
+ // [META] since:2026-03 | owner:orchestrator-team | stable:false
2
+ // [WHY] 为 codemap CLI 提供运行日志落盘与保留策略,便于问题追踪与离线排查
3
+ import fs from 'node:fs';
4
+ import os from 'node:os';
5
+ import path from 'node:path';
6
+ import util from 'node:util';
7
+ import zlib from 'node:zlib';
8
+ const DEFAULT_LOG_DIR = '.mycodemap/logs';
9
+ const DEFAULT_RETENTION_DAYS = 14;
10
+ const DEFAULT_MAX_FILES = 30;
11
+ const DEFAULT_MAX_SIZE_MB = 10;
12
+ const LOG_FILE_PREFIX = 'codemap-';
13
+ const LOG_FILE_EXT = '.log';
14
+ const LOG_FILE_NAME_PATTERN = /^codemap-\d{4}-\d{2}-\d{2}\.log(?:\.\d+)?(?:\.gz)?$/;
15
+ function parsePositiveInt(value, fallback) {
16
+ if (!value) {
17
+ return fallback;
18
+ }
19
+ const parsed = Number.parseInt(value, 10);
20
+ if (!Number.isFinite(parsed) || parsed <= 0) {
21
+ return fallback;
22
+ }
23
+ return parsed;
24
+ }
25
+ function shouldEnableRuntimeLog(value) {
26
+ if (!value) {
27
+ return true;
28
+ }
29
+ return value.toLowerCase() !== 'false';
30
+ }
31
+ function getLogFilePath(logDir, now) {
32
+ const date = now.toISOString().slice(0, 10);
33
+ return path.join(logDir, `${LOG_FILE_PREFIX}${date}${LOG_FILE_EXT}`);
34
+ }
35
+ function isRuntimeLogFile(fileName) {
36
+ return LOG_FILE_NAME_PATTERN.test(fileName);
37
+ }
38
+ function formatLogLine(level, message, now = new Date()) {
39
+ return `[${now.toISOString()}] [${level}] ${message}\n`;
40
+ }
41
+ function formatConsoleArgs(args) {
42
+ return args
43
+ .map((arg) => {
44
+ if (arg instanceof Error) {
45
+ return arg.stack || `${arg.name}: ${arg.message}`;
46
+ }
47
+ if (typeof arg === 'string') {
48
+ return arg;
49
+ }
50
+ return util.inspect(arg, { depth: 4, breakLength: 120 });
51
+ })
52
+ .join(' ');
53
+ }
54
+ function getNextRotationIndex(logFilePath) {
55
+ const dir = path.dirname(logFilePath);
56
+ const baseName = path.basename(logFilePath);
57
+ const escaped = baseName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
58
+ const rotationPattern = new RegExp(`^${escaped}\\.(\\d+)(?:\\.gz)?$`);
59
+ let maxIndex = 0;
60
+ for (const name of fs.readdirSync(dir)) {
61
+ const match = name.match(rotationPattern);
62
+ if (!match) {
63
+ continue;
64
+ }
65
+ const index = Number.parseInt(match[1], 10);
66
+ if (Number.isFinite(index) && index > maxIndex) {
67
+ maxIndex = index;
68
+ }
69
+ }
70
+ return maxIndex + 1;
71
+ }
72
+ function maybeRotateLog(logFilePath, maxFileSizeBytes, pendingBytes) {
73
+ if (maxFileSizeBytes <= 0 || !fs.existsSync(logFilePath)) {
74
+ return;
75
+ }
76
+ const stat = fs.statSync(logFilePath);
77
+ if (stat.size === 0 || stat.size + pendingBytes <= maxFileSizeBytes) {
78
+ return;
79
+ }
80
+ const nextIndex = getNextRotationIndex(logFilePath);
81
+ const rotatedPath = `${logFilePath}.${nextIndex}`;
82
+ fs.renameSync(logFilePath, rotatedPath);
83
+ try {
84
+ const gzPath = `${rotatedPath}.gz`;
85
+ const raw = fs.readFileSync(rotatedPath);
86
+ fs.writeFileSync(gzPath, zlib.gzipSync(raw));
87
+ fs.unlinkSync(rotatedPath);
88
+ }
89
+ catch {
90
+ // 压缩失败时保留未压缩轮转文件
91
+ }
92
+ }
93
+ export function appendRuntimeLog(logFilePath, line, maxFileSizeBytes) {
94
+ try {
95
+ const pendingBytes = Buffer.byteLength(line, 'utf-8');
96
+ maybeRotateLog(logFilePath, maxFileSizeBytes, pendingBytes);
97
+ fs.appendFileSync(logFilePath, line, 'utf-8');
98
+ }
99
+ catch {
100
+ // 日志写入失败不应影响 CLI 主流程
101
+ }
102
+ }
103
+ let _deprecatedWarningPrinted = false;
104
+ function getEnvWithFallback(newKey, oldKey, env) {
105
+ const newValue = env[newKey];
106
+ if (newValue !== undefined) {
107
+ return newValue;
108
+ }
109
+ const oldValue = env[oldKey];
110
+ if (oldValue !== undefined) {
111
+ if (!_deprecatedWarningPrinted) {
112
+ _deprecatedWarningPrinted = true;
113
+ console.warn(`[DEPRECATION] "${oldKey}" is deprecated. Please use "${newKey}" instead.`);
114
+ }
115
+ return oldValue;
116
+ }
117
+ return undefined;
118
+ }
119
+ export function resolveRuntimeLogConfig(cwd, env = process.env, now = new Date()) {
120
+ const enabled = shouldEnableRuntimeLog(getEnvWithFallback('MYCODEMAP_RUNTIME_LOG_ENABLED', 'CODEMAP_RUNTIME_LOG_ENABLED', env));
121
+ const logDir = path.resolve(cwd, getEnvWithFallback('MYCODEMAP_RUNTIME_LOG_DIR', 'CODEMAP_RUNTIME_LOG_DIR', env) || DEFAULT_LOG_DIR);
122
+ const retentionDays = parsePositiveInt(getEnvWithFallback('MYCODEMAP_RUNTIME_LOG_RETENTION_DAYS', 'CODEMAP_RUNTIME_LOG_RETENTION_DAYS', env), DEFAULT_RETENTION_DAYS);
123
+ const maxFiles = parsePositiveInt(getEnvWithFallback('MYCODEMAP_RUNTIME_LOG_MAX_FILES', 'CODEMAP_RUNTIME_LOG_MAX_FILES', env), DEFAULT_MAX_FILES);
124
+ const maxFileSizeMb = parsePositiveInt(getEnvWithFallback('MYCODEMAP_RUNTIME_LOG_MAX_SIZE_MB', 'CODEMAP_RUNTIME_LOG_MAX_SIZE_MB', env), DEFAULT_MAX_SIZE_MB);
125
+ return {
126
+ enabled,
127
+ logDir,
128
+ logFilePath: getLogFilePath(logDir, now),
129
+ retentionDays,
130
+ maxFiles,
131
+ maxFileSizeBytes: maxFileSizeMb * 1024 * 1024,
132
+ };
133
+ }
134
+ export function cleanupRuntimeLogs(logDir, retentionDays, maxFiles, now = new Date()) {
135
+ if (!fs.existsSync(logDir)) {
136
+ return;
137
+ }
138
+ const entries = fs.readdirSync(logDir)
139
+ .filter(isRuntimeLogFile)
140
+ .map((name) => {
141
+ const filePath = path.join(logDir, name);
142
+ const stat = fs.statSync(filePath);
143
+ return { name, filePath, mtimeMs: stat.mtimeMs };
144
+ })
145
+ .sort((a, b) => a.mtimeMs - b.mtimeMs);
146
+ const retentionMs = retentionDays * 24 * 60 * 60 * 1000;
147
+ const expired = entries.filter((entry) => now.getTime() - entry.mtimeMs > retentionMs);
148
+ for (const entry of expired) {
149
+ try {
150
+ fs.unlinkSync(entry.filePath);
151
+ }
152
+ catch {
153
+ // ignore
154
+ }
155
+ }
156
+ const remaining = fs.readdirSync(logDir)
157
+ .filter(isRuntimeLogFile)
158
+ .map((name) => {
159
+ const filePath = path.join(logDir, name);
160
+ const stat = fs.statSync(filePath);
161
+ return { filePath, mtimeMs: stat.mtimeMs };
162
+ })
163
+ .sort((a, b) => a.mtimeMs - b.mtimeMs);
164
+ const overflow = Math.max(0, remaining.length - maxFiles);
165
+ for (let i = 0; i < overflow; i++) {
166
+ try {
167
+ fs.unlinkSync(remaining[i].filePath);
168
+ }
169
+ catch {
170
+ // ignore
171
+ }
172
+ }
173
+ }
174
+ export function setupRuntimeLogging(argv, cwd = process.cwd(), env = process.env) {
175
+ const config = resolveRuntimeLogConfig(cwd, env);
176
+ if (!config.enabled) {
177
+ return null;
178
+ }
179
+ try {
180
+ fs.mkdirSync(config.logDir, { recursive: true });
181
+ cleanupRuntimeLogs(config.logDir, config.retentionDays, config.maxFiles);
182
+ }
183
+ catch {
184
+ return null;
185
+ }
186
+ const command = argv.join(' ').trim() || '(no args)';
187
+ appendRuntimeLog(config.logFilePath, formatLogLine('INFO', `session.start pid=${process.pid} cwd=${cwd} cmd="${command}"`), config.maxFileSizeBytes);
188
+ appendRuntimeLog(config.logFilePath, formatLogLine('INFO', `runtime node=${process.version} platform=${os.platform()} arch=${os.arch()}`), config.maxFileSizeBytes);
189
+ const originalConsole = {
190
+ log: console.log.bind(console),
191
+ info: console.info.bind(console),
192
+ warn: console.warn.bind(console),
193
+ error: console.error.bind(console),
194
+ debug: console.debug.bind(console),
195
+ };
196
+ const wrapMethod = (method, level) => {
197
+ const original = originalConsole[method];
198
+ console[method] = ((...args) => {
199
+ appendRuntimeLog(config.logFilePath, formatLogLine(level, formatConsoleArgs(args)), config.maxFileSizeBytes);
200
+ original(...args);
201
+ });
202
+ };
203
+ wrapMethod('log', 'INFO');
204
+ wrapMethod('info', 'INFO');
205
+ wrapMethod('warn', 'WARN');
206
+ wrapMethod('error', 'ERROR');
207
+ wrapMethod('debug', 'DEBUG');
208
+ process.on('exit', (code) => {
209
+ appendRuntimeLog(config.logFilePath, formatLogLine('INFO', `session.end code=${code}`), config.maxFileSizeBytes);
210
+ });
211
+ return config;
212
+ }
213
+ //# sourceMappingURL=runtime-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-logger.js","sourceRoot":"","sources":["../../src/cli/runtime-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CodeMap, AnalysisOptions } from '../types/index.js';
2
+ export declare function analyze(options: AnalysisOptions): Promise<CodeMap>;
3
+ //# sourceMappingURL=analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/core/analyzer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAA4D,MAAM,mBAAmB,CAAC;AA+B5H,wBAAsB,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CA0GxE"}