@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,152 @@
1
+ /**
2
+ * [META] since:2026-03 | owner:codemap-team | stable:false
3
+ * [WHY] @version 2.5
4
+ */
5
+ /**
6
+ * 工作流测试关联器
7
+ * 根据工作流阶段提供测试建议
8
+ *
9
+ * @module WorkflowTestLinker
10
+ * @version 2.5
11
+ *
12
+ * 设计参考: REFACTOR_TEST_LINKER_DESIGN.md §7.2
13
+ */
14
+ import type { WorkflowPhase } from './types.js';
15
+ import type { UnifiedResult } from '../types.js';
16
+ /**
17
+ * 测试策略
18
+ */
19
+ export interface TestStrategy {
20
+ /** 策略模式 */
21
+ mode: TestMode;
22
+ /** 包含模式 */
23
+ includePatterns: string[];
24
+ /** 排除模式 */
25
+ excludePatterns: string[];
26
+ /** 优先级(可选) */
27
+ priority?: TestPriority;
28
+ }
29
+ /**
30
+ * 测试模式
31
+ */
32
+ export type TestMode = 'find-similar' | 'find-affected' | 'focus-high-risk' | 'required-tests' | 'verify' | 'full-suite';
33
+ /**
34
+ * 测试优先级
35
+ */
36
+ export type TestPriority = 'high-risk-first' | 'relevance-first' | 'recent-first';
37
+ /**
38
+ * 测试建议
39
+ */
40
+ export interface TestSuggestion {
41
+ /** 测试文件路径 */
42
+ file: string;
43
+ /** 相关度分数 */
44
+ relevance: number;
45
+ /** 建议动作 */
46
+ action: string;
47
+ /** 优先级 */
48
+ priority: 'high' | 'medium' | 'low';
49
+ /** 关联的源文件 */
50
+ sourceFiles: string[];
51
+ /** 风险等级(如适用) */
52
+ riskLevel?: 'high' | 'medium' | 'low';
53
+ }
54
+ /**
55
+ * 测试配置
56
+ */
57
+ export interface TestConfig {
58
+ /** 测试框架 */
59
+ framework: 'jest' | 'vitest' | 'none';
60
+ /** 测试模式 */
61
+ patterns: {
62
+ testFile: string[];
63
+ testDir: string[];
64
+ };
65
+ /** 源文件到测试文件映射 */
66
+ sourceToTestMap: Map<string, string[]>;
67
+ }
68
+ export declare class WorkflowTestLinker {
69
+ private config;
70
+ private projectRoot;
71
+ constructor(projectRoot?: string);
72
+ /**
73
+ * 加载测试配置
74
+ * 自动检测 jest.config.js / vitest.config.ts
75
+ */
76
+ loadConfig(): Promise<TestConfig>;
77
+ /**
78
+ * 根据当前工作流阶段生成测试建议
79
+ *
80
+ * @param phase - 当前工作流阶段
81
+ * @param sourceFiles - 源文件列表
82
+ * @param analysisResults - 分析结果(用于风险分析)
83
+ * @returns 测试建议列表
84
+ */
85
+ getTestSuggestions(phase: WorkflowPhase, sourceFiles: string[], analysisResults?: UnifiedResult[]): Promise<TestSuggestion[]>;
86
+ /**
87
+ * 查找相关测试文件
88
+ */
89
+ private findRelatedTests;
90
+ /**
91
+ * 从源文件名推断测试文件
92
+ */
93
+ private inferTestFiles;
94
+ /**
95
+ * 查找目录级别的测试文件
96
+ */
97
+ private findDirLevelTests;
98
+ /**
99
+ * 计算测试文件的相关度
100
+ */
101
+ private calculateRelevance;
102
+ /**
103
+ * 获取建议动作
104
+ */
105
+ private getSuggestedAction;
106
+ /**
107
+ * 获取测试优先级
108
+ */
109
+ private getPriority;
110
+ /**
111
+ * 获取测试关联的源文件
112
+ */
113
+ private getSourceFilesForTest;
114
+ /**
115
+ * 获取测试的风险等级
116
+ */
117
+ private getRiskLevel;
118
+ /**
119
+ * 检查文件是否存在
120
+ */
121
+ private pathExists;
122
+ /**
123
+ * 解析 Vitest 配置
124
+ */
125
+ private parseVitestConfig;
126
+ /**
127
+ * 解析 Jest 配置
128
+ */
129
+ private parseJestConfig;
130
+ /**
131
+ * 构建源文件到测试文件的映射
132
+ */
133
+ buildMapping(sourceFiles: string[]): Promise<void>;
134
+ /**
135
+ * 获取当前阶段的测试策略
136
+ */
137
+ getPhaseStrategy(phase: WorkflowPhase): TestStrategy;
138
+ /**
139
+ * 获取所有阶段的测试策略
140
+ */
141
+ getAllStrategies(): Record<WorkflowPhase, TestStrategy>;
142
+ }
143
+ /**
144
+ * 创建工作流测试关联器实例
145
+ */
146
+ export declare function createWorkflowTestLinker(projectRoot?: string): WorkflowTestLinker;
147
+ /**
148
+ * 快速获取测试建议(便捷函数)
149
+ */
150
+ export declare function getTestSuggestions(phase: WorkflowPhase, sourceFiles: string[], projectRoot?: string, analysisResults?: UnifiedResult[]): Promise<TestSuggestion[]>;
151
+ export default WorkflowTestLinker;
152
+ //# sourceMappingURL=test-linker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-linker.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/workflow/test-linker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,342 @@
1
+ /**
2
+ * [META] since:2026-03 | owner:codemap-team | stable:false
3
+ * [WHY] @version 2.5
4
+ */
5
+ // ============================================
6
+ // 阶段测试策略配置
7
+ // ============================================
8
+ /**
9
+ * 工作流阶段与测试策略的映射
10
+ * 定义每个阶段应该采用什么样的测试策略
11
+ */
12
+ const PHASE_TEST_STRATEGY = {
13
+ 'reference': {
14
+ mode: 'find-similar',
15
+ includePatterns: ['**/*.test.ts', '**/*.spec.ts'],
16
+ excludePatterns: [],
17
+ },
18
+ 'impact': {
19
+ mode: 'find-affected',
20
+ includePatterns: ['**/*.test.ts', '**/*.spec.ts'],
21
+ excludePatterns: [],
22
+ },
23
+ 'risk': {
24
+ mode: 'focus-high-risk',
25
+ includePatterns: ['**/*.test.ts'],
26
+ excludePatterns: [],
27
+ priority: 'high-risk-first',
28
+ },
29
+ 'implementation': {
30
+ mode: 'required-tests',
31
+ includePatterns: ['**/*.test.ts', '**/*.spec.ts'],
32
+ excludePatterns: [],
33
+ },
34
+ 'commit': {
35
+ mode: 'verify',
36
+ includePatterns: ['**/*.test.ts', '**/*.spec.ts'],
37
+ excludePatterns: [],
38
+ },
39
+ 'ci': {
40
+ mode: 'full-suite',
41
+ includePatterns: ['**/*.test.ts', '**/*.spec.ts', '**/*.test.js'],
42
+ excludePatterns: [],
43
+ },
44
+ };
45
+ // ============================================
46
+ // WorkflowTestLinker 类
47
+ // ============================================
48
+ export class WorkflowTestLinker {
49
+ config = null;
50
+ projectRoot;
51
+ constructor(projectRoot = process.cwd()) {
52
+ this.projectRoot = projectRoot;
53
+ }
54
+ /**
55
+ * 加载测试配置
56
+ * 自动检测 jest.config.js / vitest.config.ts
57
+ */
58
+ async loadConfig() {
59
+ const fsPromises = await import('fs').then(m => m.promises);
60
+ const path = await import('path');
61
+ // 1. 尝试读取 vitest.config.ts
62
+ const vitestPath = path.join(this.projectRoot, 'vitest.config.ts');
63
+ if (await this.pathExists(vitestPath)) {
64
+ this.config = await this.parseVitestConfig(vitestPath);
65
+ return this.config;
66
+ }
67
+ // 2. 尝试读取 jest.config.js
68
+ const jestPath = path.join(this.projectRoot, 'jest.config.js');
69
+ if (await this.pathExists(jestPath)) {
70
+ this.config = await this.parseJestConfig(jestPath);
71
+ return this.config;
72
+ }
73
+ // 3. 使用默认配置 (Vitest)
74
+ this.config = {
75
+ framework: 'vitest',
76
+ patterns: {
77
+ testFile: ['**/*.test.ts', '**/*.spec.ts'],
78
+ testDir: ['__tests__', 'test', 'tests'],
79
+ },
80
+ sourceToTestMap: new Map(),
81
+ };
82
+ return this.config;
83
+ }
84
+ /**
85
+ * 根据当前工作流阶段生成测试建议
86
+ *
87
+ * @param phase - 当前工作流阶段
88
+ * @param sourceFiles - 源文件列表
89
+ * @param analysisResults - 分析结果(用于风险分析)
90
+ * @returns 测试建议列表
91
+ */
92
+ async getTestSuggestions(phase, sourceFiles, analysisResults) {
93
+ // 确保配置已加载
94
+ if (!this.config) {
95
+ await this.loadConfig();
96
+ }
97
+ const strategy = PHASE_TEST_STRATEGY[phase];
98
+ const testFiles = await this.findRelatedTests(sourceFiles, strategy);
99
+ return testFiles.map((testFile) => ({
100
+ file: testFile,
101
+ relevance: this.calculateRelevance(testFile, sourceFiles),
102
+ action: this.getSuggestedAction(phase, testFile),
103
+ priority: this.getPriority(phase, testFile, analysisResults),
104
+ sourceFiles: this.getSourceFilesForTest(testFile, sourceFiles),
105
+ riskLevel: this.getRiskLevel(testFile, analysisResults),
106
+ }));
107
+ }
108
+ /**
109
+ * 查找相关测试文件
110
+ */
111
+ async findRelatedTests(sourceFiles, strategy) {
112
+ if (!this.config)
113
+ return [];
114
+ const relatedTests = new Set();
115
+ for (const sourceFile of sourceFiles) {
116
+ // 1. 直接映射查找
117
+ const directTests = this.config.sourceToTestMap.get(sourceFile) || [];
118
+ directTests.forEach((t) => relatedTests.add(t));
119
+ // 2. 文件名推断
120
+ const inferredTests = this.inferTestFiles(sourceFile);
121
+ inferredTests.forEach((t) => relatedTests.add(t));
122
+ // 3. 目录级别匹配
123
+ const dirTests = await this.findDirLevelTests(sourceFile);
124
+ dirTests.forEach((t) => relatedTests.add(t));
125
+ }
126
+ return Array.from(relatedTests);
127
+ }
128
+ /**
129
+ * 从源文件名推断测试文件
130
+ */
131
+ inferTestFiles(sourceFile) {
132
+ if (!this.config)
133
+ return [];
134
+ const tests = [];
135
+ const normalized = sourceFile.replace(/\\/g, '/');
136
+ // 移除 .ts 后缀,添加测试后缀
137
+ const basePath = normalized.replace(/\.ts$/, '');
138
+ for (const pattern of this.config.patterns.testFile) {
139
+ if (pattern.includes('.test.')) {
140
+ tests.push(`${basePath}.test.ts`);
141
+ }
142
+ if (pattern.includes('.spec.')) {
143
+ tests.push(`${basePath}.spec.ts`);
144
+ }
145
+ }
146
+ return tests;
147
+ }
148
+ /**
149
+ * 查找目录级别的测试文件
150
+ */
151
+ async findDirLevelTests(sourceFile) {
152
+ if (!this.config)
153
+ return [];
154
+ const fs = await import('fs');
155
+ const path = await import('path');
156
+ const tests = [];
157
+ const normalized = sourceFile.replace(/\\/g, '/');
158
+ const dir = path.dirname(normalized);
159
+ for (const testDir of this.config.patterns.testDir) {
160
+ const testDirPath = path.join(dir, testDir);
161
+ try {
162
+ if (fs.existsSync(testDirPath)) {
163
+ const files = fs.readdirSync(testDirPath);
164
+ for (const file of files) {
165
+ if (file.endsWith('.test.ts') || file.endsWith('.spec.ts')) {
166
+ tests.push(path.join(testDirPath, file));
167
+ }
168
+ }
169
+ }
170
+ }
171
+ catch {
172
+ // 目录不存在或无法读取,跳过
173
+ }
174
+ }
175
+ return tests;
176
+ }
177
+ /**
178
+ * 计算测试文件的相关度
179
+ */
180
+ calculateRelevance(testFile, sourceFiles) {
181
+ let relevance = 0.5; // 基础相关度
182
+ const normalizedTest = testFile.replace(/\\/g, '/');
183
+ for (const sourceFile of sourceFiles) {
184
+ const normalizedSource = sourceFile.replace(/\\/g, '/');
185
+ const sourceBase = normalizedSource.replace(/\.ts$/, '').split('/').pop();
186
+ const testBase = normalizedTest.replace(/\.(test|spec)\.ts$/, '').split('/').pop();
187
+ // 文件名匹配度
188
+ if (sourceBase && testBase && sourceBase === testBase) {
189
+ relevance += 0.3;
190
+ }
191
+ // 目录匹配度
192
+ const sourceDir = normalizedSource.split('/').slice(0, -1).join('/');
193
+ const testDir = normalizedTest.split('/').slice(0, -1).join('/');
194
+ if (sourceDir && testDir && testDir.includes(sourceDir)) {
195
+ relevance += 0.2;
196
+ }
197
+ }
198
+ return Math.min(1, relevance);
199
+ }
200
+ /**
201
+ * 获取建议动作
202
+ */
203
+ getSuggestedAction(phase, testFile) {
204
+ const actions = {
205
+ 'reference': '参考此测试的实现模式',
206
+ 'impact': '修改后需运行此测试',
207
+ 'risk': '重点关注此测试,确保通过',
208
+ 'implementation': '实现完成后运行此测试',
209
+ 'commit': '提交前确保此测试通过',
210
+ 'ci': 'CI 会自动运行此测试',
211
+ };
212
+ return actions[phase] || '运行此测试';
213
+ }
214
+ /**
215
+ * 获取测试优先级
216
+ */
217
+ getPriority(phase, testFile, analysisResults) {
218
+ if (phase === 'risk') {
219
+ // 风险阶段:基于分析结果判断
220
+ const riskResult = analysisResults?.find((r) => r.file === testFile || testFile.includes(r.file));
221
+ if (riskResult?.metadata?.riskLevel === 'high')
222
+ return 'high';
223
+ if (riskResult?.metadata?.riskLevel === 'medium')
224
+ return 'medium';
225
+ }
226
+ if (phase === 'implementation') {
227
+ return 'high';
228
+ }
229
+ // 根据文件名判断
230
+ if (testFile.includes('e2e') || testFile.includes('integration')) {
231
+ return 'medium';
232
+ }
233
+ return 'low';
234
+ }
235
+ /**
236
+ * 获取测试关联的源文件
237
+ */
238
+ getSourceFilesForTest(testFile, sourceFiles) {
239
+ const normalizedTest = testFile.replace(/\\/g, '/');
240
+ const testBase = normalizedTest.replace(/\.(test|spec)\.ts$/, '');
241
+ return sourceFiles.filter((sourceFile) => {
242
+ const normalizedSource = sourceFile.replace(/\\/g, '/');
243
+ const sourceBase = normalizedSource.replace(/\.ts$/, '');
244
+ return testBase.includes(sourceBase) || sourceBase.includes(testBase);
245
+ });
246
+ }
247
+ /**
248
+ * 获取测试的风险等级
249
+ */
250
+ getRiskLevel(testFile, analysisResults) {
251
+ const result = analysisResults?.find((r) => r.file === testFile || testFile.includes(r.file));
252
+ return result?.metadata?.riskLevel;
253
+ }
254
+ /**
255
+ * 检查文件是否存在
256
+ */
257
+ async pathExists(filePath) {
258
+ const fsPromises = await import('fs').then((m) => m.promises);
259
+ try {
260
+ await fsPromises.access(filePath);
261
+ return true;
262
+ }
263
+ catch {
264
+ return false;
265
+ }
266
+ }
267
+ /**
268
+ * 解析 Vitest 配置
269
+ */
270
+ async parseVitestConfig(configPath) {
271
+ // 简化实现:返回默认 Vitest 配置
272
+ // 实际项目中可以解析配置文件内容
273
+ return {
274
+ framework: 'vitest',
275
+ patterns: {
276
+ testFile: ['**/*.test.ts', '**/*.spec.ts'],
277
+ testDir: ['__tests__', 'test', 'tests'],
278
+ },
279
+ sourceToTestMap: new Map(),
280
+ };
281
+ }
282
+ /**
283
+ * 解析 Jest 配置
284
+ */
285
+ async parseJestConfig(configPath) {
286
+ // 简化实现:返回默认 Jest 配置
287
+ return {
288
+ framework: 'jest',
289
+ patterns: {
290
+ testFile: ['**/*.test.ts', '**/*.spec.ts'],
291
+ testDir: ['__tests__', 'test', 'tests'],
292
+ },
293
+ sourceToTestMap: new Map(),
294
+ };
295
+ }
296
+ /**
297
+ * 构建源文件到测试文件的映射
298
+ */
299
+ async buildMapping(sourceFiles) {
300
+ if (!this.config) {
301
+ await this.loadConfig();
302
+ }
303
+ for (const sourceFile of sourceFiles) {
304
+ const tests = await this.findRelatedTests([sourceFile], {
305
+ mode: 'find-affected',
306
+ includePatterns: this.config.patterns.testFile,
307
+ excludePatterns: [],
308
+ });
309
+ this.config.sourceToTestMap.set(sourceFile, tests);
310
+ }
311
+ }
312
+ /**
313
+ * 获取当前阶段的测试策略
314
+ */
315
+ getPhaseStrategy(phase) {
316
+ return PHASE_TEST_STRATEGY[phase];
317
+ }
318
+ /**
319
+ * 获取所有阶段的测试策略
320
+ */
321
+ getAllStrategies() {
322
+ return { ...PHASE_TEST_STRATEGY };
323
+ }
324
+ }
325
+ // ============================================
326
+ // 便捷函数
327
+ // ============================================
328
+ /**
329
+ * 创建工作流测试关联器实例
330
+ */
331
+ export function createWorkflowTestLinker(projectRoot) {
332
+ return new WorkflowTestLinker(projectRoot);
333
+ }
334
+ /**
335
+ * 快速获取测试建议(便捷函数)
336
+ */
337
+ export async function getTestSuggestions(phase, sourceFiles, projectRoot, analysisResults) {
338
+ const linker = createWorkflowTestLinker(projectRoot);
339
+ return linker.getTestSuggestions(phase, sourceFiles, analysisResults);
340
+ }
341
+ export default WorkflowTestLinker;
342
+ //# sourceMappingURL=test-linker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-linker.js","sourceRoot":"","sources":["../../../src/orchestrator/workflow/test-linker.ts"],"names":[],"mappings":"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"}