@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,388 @@
1
+ // ============================================
2
+ // Global Symbol Index - 全局符号索引
3
+ // 支持跨文件调用链分析
4
+ // ============================================
5
+ import * as path from 'path';
6
+ /**
7
+ * 全局符号索引构建器
8
+ *
9
+ * 功能:
10
+ * 1. 收集所有文件的导出符号
11
+ * 2. 建立 import -> export 映射
12
+ * 3. 解析跨文件调用关系
13
+ * 4. 构建调用链
14
+ */
15
+ export class GlobalSymbolIndexBuilder {
16
+ index;
17
+ rootDir;
18
+ constructor(rootDir) {
19
+ this.rootDir = rootDir;
20
+ this.index = {
21
+ symbols: new Map(),
22
+ files: new Map()
23
+ };
24
+ }
25
+ /**
26
+ * 从解析结果构建全局索引
27
+ */
28
+ build(results) {
29
+ // 第1步:为每个文件建立本地符号索引
30
+ for (const result of results) {
31
+ this.buildFileIndex(result);
32
+ }
33
+ // 第2步:解析跨文件调用
34
+ for (const result of results) {
35
+ this.resolveCrossFileCalls(result);
36
+ }
37
+ // 第3步:构建全局符号表
38
+ this.buildGlobalSymbolTable();
39
+ return this.index;
40
+ }
41
+ /**
42
+ * 为单个文件建立符号索引
43
+ */
44
+ buildFileIndex(result) {
45
+ const filePath = result.path;
46
+ const relativePath = path.relative(this.rootDir, filePath);
47
+ const fileIndex = {
48
+ filePath: relativePath,
49
+ imports: new Map(),
50
+ exports: new Map(),
51
+ localSymbols: new Map(),
52
+ crossFileCalls: []
53
+ };
54
+ // 索引导入
55
+ for (const imp of result.imports) {
56
+ const key = this.getImportKey(imp);
57
+ fileIndex.imports.set(key, imp);
58
+ }
59
+ // 索引导出符号
60
+ for (const exp of result.exports) {
61
+ const symbolInfo = {
62
+ name: exp.name,
63
+ kind: exp.kind,
64
+ filePath: relativePath,
65
+ line: 0, // 从 symbols 中查找
66
+ column: 0,
67
+ isExported: true,
68
+ isDefault: exp.isDefault
69
+ };
70
+ // 查找符号的详细位置
71
+ const matchingSymbol = result.symbols.find(s => s.name === exp.name);
72
+ if (matchingSymbol) {
73
+ symbolInfo.line = matchingSymbol.location.line;
74
+ symbolInfo.column = matchingSymbol.location.column;
75
+ }
76
+ fileIndex.exports.set(exp.name, symbolInfo);
77
+ }
78
+ // 索引本地符号
79
+ for (const sym of result.symbols) {
80
+ const symbolInfo = {
81
+ name: sym.name,
82
+ kind: sym.kind,
83
+ filePath: relativePath,
84
+ line: sym.location.line,
85
+ column: sym.location.column,
86
+ isExported: result.exports.some(e => e.name === sym.name)
87
+ };
88
+ fileIndex.localSymbols.set(sym.name, symbolInfo);
89
+ }
90
+ this.index.files.set(relativePath, fileIndex);
91
+ }
92
+ /**
93
+ * 解析跨文件调用
94
+ */
95
+ resolveCrossFileCalls(result) {
96
+ const filePath = result.path;
97
+ const relativePath = path.relative(this.rootDir, filePath);
98
+ const fileIndex = this.index.files.get(relativePath);
99
+ if (!fileIndex || !result.callGraph)
100
+ return;
101
+ for (const call of result.callGraph.calls) {
102
+ const calleeName = call.callee;
103
+ // 检查是否是本地调用
104
+ if (fileIndex.localSymbols.has(calleeName)) {
105
+ continue; // 本地调用,无需处理
106
+ }
107
+ // 尝试解析为跨文件调用
108
+ const resolved = this.resolveCallee(calleeName, fileIndex);
109
+ if (resolved) {
110
+ fileIndex.crossFileCalls.push({
111
+ callee: calleeName,
112
+ calleeLocation: resolved.location,
113
+ callerLocation: {
114
+ file: relativePath,
115
+ line: call.line,
116
+ column: 0
117
+ },
118
+ importPath: resolved.importPath,
119
+ resolved: true
120
+ });
121
+ }
122
+ else {
123
+ // 未解析的调用(可能是外部库)
124
+ fileIndex.crossFileCalls.push({
125
+ callee: calleeName,
126
+ calleeLocation: { file: '', line: 0, column: 0 },
127
+ callerLocation: {
128
+ file: relativePath,
129
+ line: call.line,
130
+ column: 0
131
+ },
132
+ resolved: false
133
+ });
134
+ }
135
+ }
136
+ }
137
+ /**
138
+ * 解析被调用者位置
139
+ */
140
+ resolveCallee(calleeName, fileIndex) {
141
+ // 1. 检查是否是命名导入
142
+ for (const [alias, imp] of fileIndex.imports) {
143
+ // 检查是否是默认导入 (import name from './module')
144
+ // 默认导入通常是单个导入且没有花括号
145
+ const isDefaultImport = imp.specifiers.length === 1 &&
146
+ alias === imp.specifiers[0].name;
147
+ if (isDefaultImport && calleeName === alias) {
148
+ // 查找导入来源的导出符号
149
+ const targetFile = this.findFileByImport(imp.source);
150
+ if (targetFile) {
151
+ const targetIndex = this.index.files.get(targetFile);
152
+ if (targetIndex) {
153
+ const defaultExport = [...targetIndex.exports.values()].find(e => e.isDefault);
154
+ if (defaultExport) {
155
+ return {
156
+ location: {
157
+ file: targetFile,
158
+ line: defaultExport.line,
159
+ column: defaultExport.column
160
+ },
161
+ importPath: imp.source
162
+ };
163
+ }
164
+ }
165
+ }
166
+ }
167
+ // 检查命名导入
168
+ for (const spec of imp.specifiers) {
169
+ if (spec.name === calleeName || spec.alias === calleeName) {
170
+ const searchName = spec.alias || spec.name;
171
+ const targetFile = this.findFileByImport(imp.source);
172
+ if (targetFile) {
173
+ const targetIndex = this.index.files.get(targetFile);
174
+ if (targetIndex) {
175
+ const targetSymbol = targetIndex.exports.get(searchName) ||
176
+ targetIndex.localSymbols.get(searchName);
177
+ if (targetSymbol) {
178
+ return {
179
+ location: {
180
+ file: targetFile,
181
+ line: targetSymbol.line,
182
+ column: targetSymbol.column
183
+ },
184
+ importPath: imp.source
185
+ };
186
+ }
187
+ }
188
+ }
189
+ }
190
+ }
191
+ }
192
+ // 2. 检查是否是路径导入(如 import * as foo from './bar')
193
+ const parts = calleeName.split('.');
194
+ if (parts.length > 1) {
195
+ const namespace = parts[0];
196
+ const memberName = parts[1];
197
+ for (const [alias, imp] of fileIndex.imports) {
198
+ if (alias === namespace) {
199
+ const targetFile = this.findFileByImport(imp.source);
200
+ if (targetFile) {
201
+ const targetIndex = this.index.files.get(targetFile);
202
+ if (targetIndex) {
203
+ const targetSymbol = targetIndex.exports.get(memberName) ||
204
+ targetIndex.localSymbols.get(memberName);
205
+ if (targetSymbol) {
206
+ return {
207
+ location: {
208
+ file: targetFile,
209
+ line: targetSymbol.line,
210
+ column: targetSymbol.column
211
+ },
212
+ importPath: imp.source
213
+ };
214
+ }
215
+ }
216
+ }
217
+ }
218
+ }
219
+ }
220
+ return null;
221
+ }
222
+ /**
223
+ * 根据导入路径查找文件
224
+ */
225
+ findFileByImport(importPath) {
226
+ // 处理相对路径
227
+ if (importPath.startsWith('./') || importPath.startsWith('../')) {
228
+ // 尝试直接匹配
229
+ for (const filePath of this.index.files.keys()) {
230
+ // 移除 .ts 扩展名进行比较
231
+ const normalizedFile = filePath.replace(/\.ts$/, '');
232
+ const normalizedImport = importPath.replace(/\.ts$/, '');
233
+ if (normalizedFile.endsWith(normalizedImport) ||
234
+ normalizedFile.includes('/' + normalizedImport) ||
235
+ normalizedFile === normalizedImport) {
236
+ return filePath;
237
+ }
238
+ }
239
+ }
240
+ // 处理路径别名(简化版,实际应该解析 tsconfig paths)
241
+ // TODO: 从 tsconfig.json 解析路径映射
242
+ return null;
243
+ }
244
+ /**
245
+ * 构建全局符号表
246
+ */
247
+ buildGlobalSymbolTable() {
248
+ for (const fileIndex of this.index.files.values()) {
249
+ // 添加导出符号到全局表
250
+ for (const [name, symbol] of fileIndex.exports) {
251
+ const existing = this.index.symbols.get(name) || [];
252
+ existing.push(symbol);
253
+ this.index.symbols.set(name, existing);
254
+ }
255
+ // 添加本地符号到全局表(用于查找)
256
+ for (const [name, symbol] of fileIndex.localSymbols) {
257
+ if (!fileIndex.exports.has(name)) {
258
+ const existing = this.index.symbols.get(name) || [];
259
+ existing.push(symbol);
260
+ this.index.symbols.set(name, existing);
261
+ }
262
+ }
263
+ }
264
+ }
265
+ /**
266
+ * 获取导入的键
267
+ */
268
+ getImportKey(imp) {
269
+ // 如果有命名导入,使用第一个作为键
270
+ if (imp.specifiers.length > 0) {
271
+ return imp.specifiers[0].alias || imp.specifiers[0].name;
272
+ }
273
+ return imp.source;
274
+ }
275
+ /**
276
+ * 查找符号的定义位置
277
+ */
278
+ findSymbol(name) {
279
+ return this.index.symbols.get(name) || [];
280
+ }
281
+ /**
282
+ * 获取文件的跨文件调用
283
+ */
284
+ getCrossFileCalls(filePath) {
285
+ const fileIndex = this.index.files.get(filePath);
286
+ return fileIndex?.crossFileCalls || [];
287
+ }
288
+ /**
289
+ * 构建调用链
290
+ */
291
+ buildCallChain(startSymbol, maxDepth = 5) {
292
+ const entries = [];
293
+ const visited = new Set();
294
+ const buildChain = (symbolName, depth, sourceFile) => {
295
+ if (depth > maxDepth || visited.has(symbolName))
296
+ return;
297
+ visited.add(symbolName);
298
+ // 查找符号信息
299
+ const symbols = this.findSymbol(symbolName);
300
+ if (symbols.length === 0)
301
+ return;
302
+ // 使用第一个匹配
303
+ const symbol = symbols.find(s => s.filePath === sourceFile) || symbols[0];
304
+ entries.push({
305
+ file: symbol.filePath,
306
+ symbol: symbol.name,
307
+ line: symbol.line,
308
+ column: symbol.column,
309
+ callType: symbol.filePath === sourceFile ? 'local' : 'cross-file'
310
+ });
311
+ // 查找该符号的调用
312
+ const fileIndex = this.index.files.get(symbol.filePath);
313
+ if (!fileIndex)
314
+ return;
315
+ for (const call of fileIndex.crossFileCalls) {
316
+ if (call.callerLocation.file === symbol.filePath &&
317
+ call.callerLocation.line === symbol.line) {
318
+ buildChain(call.callee, depth + 1, symbol.filePath);
319
+ }
320
+ }
321
+ };
322
+ // 从所有文件查找起始符号
323
+ for (const [filePath, fileIndex] of this.index.files) {
324
+ if (fileIndex.localSymbols.has(startSymbol) ||
325
+ fileIndex.exports.has(startSymbol)) {
326
+ buildChain(startSymbol, 0, filePath);
327
+ break;
328
+ }
329
+ }
330
+ return {
331
+ entries,
332
+ depth: entries.length
333
+ };
334
+ }
335
+ /**
336
+ * 获取模块的依赖图
337
+ */
338
+ getModuleDependencyGraph() {
339
+ const graph = new Map();
340
+ for (const [filePath, fileIndex] of this.index.files) {
341
+ const deps = new Set();
342
+ // 从导入收集依赖
343
+ for (const imp of fileIndex.imports.values()) {
344
+ if (imp.source.startsWith('./') || imp.source.startsWith('../')) {
345
+ const targetFile = this.findFileByImport(imp.source);
346
+ if (targetFile) {
347
+ deps.add(targetFile);
348
+ }
349
+ }
350
+ }
351
+ // 从跨文件调用收集依赖
352
+ for (const call of fileIndex.crossFileCalls) {
353
+ if (call.resolved && call.calleeLocation.file) {
354
+ deps.add(call.calleeLocation.file);
355
+ }
356
+ }
357
+ graph.set(filePath, deps);
358
+ }
359
+ return graph;
360
+ }
361
+ }
362
+ /**
363
+ * 创建全局符号索引
364
+ */
365
+ export function createGlobalIndex(results, rootDir) {
366
+ const builder = new GlobalSymbolIndexBuilder(rootDir);
367
+ return builder.build(results);
368
+ }
369
+ /**
370
+ * 查找符号定义
371
+ */
372
+ export function findSymbolDefinition(index, name, currentFile) {
373
+ const symbols = index.symbols.get(name);
374
+ if (!symbols || symbols.length === 0)
375
+ return undefined;
376
+ // 优先返回当前文件的符号
377
+ if (currentFile) {
378
+ const local = symbols.find(s => s.filePath === currentFile);
379
+ if (local)
380
+ return local;
381
+ }
382
+ // 优先返回导出的符号
383
+ const exported = symbols.find(s => s.isExported);
384
+ if (exported)
385
+ return exported;
386
+ return symbols[0];
387
+ }
388
+ //# sourceMappingURL=global-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-index.js","sourceRoot":"","sources":["../../src/core/global-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { CodeMap } from '../types/index.js';
2
+ import type { SubagentOutput } from '../ai/subagent-caller.js';
3
+ /**
4
+ * AI Overview Generator 配置
5
+ */
6
+ export interface AIOverviewConfig {
7
+ /** 输出目录 */
8
+ outputDir: string;
9
+ /** 是否启用 AI 生成 */
10
+ enabled?: boolean;
11
+ /** 输出文件名 */
12
+ filename?: string;
13
+ }
14
+ /**
15
+ * AI Overview Generator - 生成并保存 AI 概述
16
+ */
17
+ export declare class AIOverviewGenerator {
18
+ private outputDir;
19
+ private enabled;
20
+ private filename;
21
+ constructor(config: AIOverviewConfig);
22
+ /**
23
+ * 生成并保存 AI 概述
24
+ */
25
+ generate(codeMap: CodeMap, aiOutput: SubagentOutput): Promise<string>;
26
+ /**
27
+ * 构建 Markdown 内容
28
+ */
29
+ private buildMarkdown;
30
+ /**
31
+ * 读取已保存的概述
32
+ */
33
+ read(): Promise<string | null>;
34
+ /**
35
+ * 检查概述是否存在
36
+ */
37
+ exists(): Promise<boolean>;
38
+ /**
39
+ * 获取输出文件路径
40
+ */
41
+ getOutputPath(): string;
42
+ /**
43
+ * 是否启用
44
+ */
45
+ isEnabled(): boolean;
46
+ }
47
+ /**
48
+ * 创建 AI Overview Generator 实例
49
+ */
50
+ export declare function createAIOverviewGenerator(config: AIOverviewConfig): AIOverviewGenerator;
51
+ //# sourceMappingURL=ai-overview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-overview.d.ts","sourceRoot":"","sources":["../../src/generator/ai-overview.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,gBAAgB;IAMpC;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAe3E;;OAEG;IACH,OAAO,CAAC,aAAa;IAgGrB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUpC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAWhC;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,GAAG,mBAAmB,CAEvF"}
@@ -0,0 +1,160 @@
1
+ // ============================================
2
+ // AI Overview Generator - AI 概述生成与保存
3
+ // ============================================
4
+ import * as fs from 'fs/promises';
5
+ import * as path from 'path';
6
+ /**
7
+ * AI Overview Generator - 生成并保存 AI 概述
8
+ */
9
+ export class AIOverviewGenerator {
10
+ outputDir;
11
+ enabled;
12
+ filename;
13
+ constructor(config) {
14
+ this.outputDir = config.outputDir;
15
+ this.enabled = config.enabled ?? true;
16
+ this.filename = config.filename || 'AI_OVERVIEW.md';
17
+ }
18
+ /**
19
+ * 生成并保存 AI 概述
20
+ */
21
+ async generate(codeMap, aiOutput) {
22
+ const outputPath = path.join(this.outputDir, this.filename);
23
+ // 构建 Markdown 内容
24
+ const content = this.buildMarkdown(codeMap, aiOutput);
25
+ // 确保输出目录存在
26
+ await fs.mkdir(this.outputDir, { recursive: true });
27
+ // 写入文件
28
+ await fs.writeFile(outputPath, content, 'utf-8');
29
+ return outputPath;
30
+ }
31
+ /**
32
+ * 构建 Markdown 内容
33
+ */
34
+ buildMarkdown(codeMap, aiOutput) {
35
+ const lines = [];
36
+ // 标题
37
+ lines.push('# ' + aiOutput.title);
38
+ lines.push('');
39
+ // 元数据
40
+ lines.push('<!-- AI Generated Overview -->');
41
+ lines.push(`- **生成时间**: ${new Date(aiOutput.metadata.generatedAt).toLocaleString('zh-CN')}`);
42
+ lines.push(`- **模型**: ${aiOutput.metadata.model}`);
43
+ lines.push('');
44
+ // 项目统计
45
+ lines.push('## 项目统计');
46
+ lines.push('');
47
+ lines.push(`| 指标 | 数值 |`);
48
+ lines.push(`|------|------|`);
49
+ lines.push(`| 文件总数 | ${codeMap.summary.totalFiles} |`);
50
+ lines.push(`| 代码行数 | ${codeMap.summary.totalLines} |`);
51
+ lines.push(`| 模块数量 | ${codeMap.summary.totalModules} |`);
52
+ lines.push(`| 导出符号 | ${codeMap.summary.totalExports} |`);
53
+ lines.push(`| 类型定义 | ${codeMap.summary.totalTypes} |`);
54
+ lines.push('');
55
+ // 架构信息
56
+ if (aiOutput.architecture) {
57
+ lines.push('## 架构分析');
58
+ lines.push('');
59
+ lines.push(`- **架构模式**: ${aiOutput.architecture.pattern || '未识别'}`);
60
+ lines.push('');
61
+ if (aiOutput.architecture.layers && aiOutput.architecture.layers.length > 0) {
62
+ lines.push('### 分层结构');
63
+ lines.push('');
64
+ for (const layer of aiOutput.architecture.layers) {
65
+ lines.push(`#### ${layer.name}`);
66
+ lines.push(`- **职责**: ${layer.responsibility}`);
67
+ if (layer.modules.length > 0) {
68
+ lines.push(`- **模块**: ${layer.modules.join(', ')}`);
69
+ }
70
+ lines.push('');
71
+ }
72
+ }
73
+ if (aiOutput.architecture.metrics) {
74
+ lines.push('### 架构指标');
75
+ lines.push('');
76
+ lines.push(`- **耦合度**: ${aiOutput.architecture.metrics.coupling}`);
77
+ lines.push(`- **内聚度**: ${aiOutput.architecture.metrics.cohesion}`);
78
+ lines.push(`- **复杂度**: ${aiOutput.architecture.metrics.complexity}`);
79
+ lines.push('');
80
+ }
81
+ }
82
+ // AI 生成的内容
83
+ lines.push('## 项目概述');
84
+ lines.push('');
85
+ lines.push(aiOutput.content);
86
+ lines.push('');
87
+ // 亮点模块
88
+ if (aiOutput.highlights.length > 0) {
89
+ lines.push('## 亮点模块');
90
+ lines.push('');
91
+ for (const highlight of aiOutput.highlights) {
92
+ lines.push(`- ${highlight}`);
93
+ }
94
+ lines.push('');
95
+ }
96
+ // 模块列表(简要)
97
+ lines.push('## 模块列表');
98
+ lines.push('');
99
+ lines.push('| 模块路径 | 导出数 | 依赖数 |');
100
+ lines.push('|----------|--------|--------|');
101
+ for (const mod of codeMap.modules.slice(0, 20)) {
102
+ const exportsCount = mod.exports.length;
103
+ const depsCount = mod.dependencies.length;
104
+ const relPath = path.relative(codeMap.project.rootDir, mod.path);
105
+ lines.push(`| ${relPath} | ${exportsCount} | ${depsCount} |`);
106
+ }
107
+ if (codeMap.modules.length > 20) {
108
+ lines.push(`| ... | ... | ... |`);
109
+ }
110
+ lines.push('');
111
+ lines.push('---');
112
+ lines.push('');
113
+ lines.push('*由 CodeMap AI Generator 生成*');
114
+ return lines.join('\n');
115
+ }
116
+ /**
117
+ * 读取已保存的概述
118
+ */
119
+ async read() {
120
+ const outputPath = path.join(this.outputDir, this.filename);
121
+ try {
122
+ return await fs.readFile(outputPath, 'utf-8');
123
+ }
124
+ catch {
125
+ return null;
126
+ }
127
+ }
128
+ /**
129
+ * 检查概述是否存在
130
+ */
131
+ async exists() {
132
+ const outputPath = path.join(this.outputDir, this.filename);
133
+ try {
134
+ await fs.access(outputPath);
135
+ return true;
136
+ }
137
+ catch {
138
+ return false;
139
+ }
140
+ }
141
+ /**
142
+ * 获取输出文件路径
143
+ */
144
+ getOutputPath() {
145
+ return path.join(this.outputDir, this.filename);
146
+ }
147
+ /**
148
+ * 是否启用
149
+ */
150
+ isEnabled() {
151
+ return this.enabled;
152
+ }
153
+ }
154
+ /**
155
+ * 创建 AI Overview Generator 实例
156
+ */
157
+ export function createAIOverviewGenerator(config) {
158
+ return new AIOverviewGenerator(config);
159
+ }
160
+ //# sourceMappingURL=ai-overview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-overview.js","sourceRoot":"","sources":["../../src/generator/ai-overview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ModuleInfo } from '../types/index.js';
2
+ import type { FileDescription } from './file-describer.js';
3
+ export declare function generateContext(module: ModuleInfo, rootDir: string, allModules: ModuleInfo[], aiDescription?: FileDescription): Promise<string>;
4
+ export declare function generateAllContexts(modules: ModuleInfo[], rootDir: string, outputDir: string, aiDescriptions?: Map<string, FileDescription>): Promise<void>;
5
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/generator/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAA4E,MAAM,mBAAmB,CAAC;AAC9H,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,wBAAsB,eAAe,CACnC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EAAE,EACxB,aAAa,CAAC,EAAE,eAAe,GAC9B,OAAO,CAAC,MAAM,CAAC,CA2MjB;AAiVD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,CAwBf"}