mta-mcp 2.2.0 → 2.3.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 (180) hide show
  1. package/bin/mta.cjs +43 -0
  2. package/dist/index.cjs +4784 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +1 -0
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.js +4769 -0
  7. package/dist/index.js.map +1 -0
  8. package/package.json +21 -10
  9. package/build/core/agentTemplate.d.ts +0 -33
  10. package/build/core/agentTemplate.d.ts.map +0 -1
  11. package/build/core/agentTemplate.js +0 -158
  12. package/build/core/agentTemplate.js.map +0 -1
  13. package/build/core/analyzers/eslint.d.ts +0 -51
  14. package/build/core/analyzers/eslint.d.ts.map +0 -1
  15. package/build/core/analyzers/eslint.js +0 -259
  16. package/build/core/analyzers/eslint.js.map +0 -1
  17. package/build/core/analyzers/index.d.ts +0 -9
  18. package/build/core/analyzers/index.d.ts.map +0 -1
  19. package/build/core/analyzers/index.js +0 -9
  20. package/build/core/analyzers/index.js.map +0 -1
  21. package/build/core/analyzers/registry.d.ts +0 -59
  22. package/build/core/analyzers/registry.d.ts.map +0 -1
  23. package/build/core/analyzers/registry.js +0 -241
  24. package/build/core/analyzers/registry.js.map +0 -1
  25. package/build/core/analyzers/tsconfig.d.ts +0 -45
  26. package/build/core/analyzers/tsconfig.d.ts.map +0 -1
  27. package/build/core/analyzers/tsconfig.js +0 -197
  28. package/build/core/analyzers/tsconfig.js.map +0 -1
  29. package/build/core/analyzers/types.d.ts +0 -176
  30. package/build/core/analyzers/types.d.ts.map +0 -1
  31. package/build/core/analyzers/types.js +0 -39
  32. package/build/core/analyzers/types.js.map +0 -1
  33. package/build/core/analyzers/vite.d.ts +0 -46
  34. package/build/core/analyzers/vite.d.ts.map +0 -1
  35. package/build/core/analyzers/vite.js +0 -211
  36. package/build/core/analyzers/vite.js.map +0 -1
  37. package/build/core/autoInitializer.d.ts +0 -34
  38. package/build/core/autoInitializer.d.ts.map +0 -1
  39. package/build/core/autoInitializer.js +0 -145
  40. package/build/core/autoInitializer.js.map +0 -1
  41. package/build/core/codeValidator.d.ts +0 -82
  42. package/build/core/codeValidator.d.ts.map +0 -1
  43. package/build/core/codeValidator.js +0 -287
  44. package/build/core/codeValidator.js.map +0 -1
  45. package/build/core/enhancedProjectAnalyzer.d.ts +0 -102
  46. package/build/core/enhancedProjectAnalyzer.d.ts.map +0 -1
  47. package/build/core/enhancedProjectAnalyzer.js +0 -312
  48. package/build/core/enhancedProjectAnalyzer.js.map +0 -1
  49. package/build/core/errors.d.ts +0 -84
  50. package/build/core/errors.d.ts.map +0 -1
  51. package/build/core/errors.js +0 -151
  52. package/build/core/errors.js.map +0 -1
  53. package/build/core/githubClient.d.ts +0 -26
  54. package/build/core/githubClient.d.ts.map +0 -1
  55. package/build/core/githubClient.js +0 -60
  56. package/build/core/githubClient.js.map +0 -1
  57. package/build/core/i18nDetector.d.ts +0 -47
  58. package/build/core/i18nDetector.d.ts.map +0 -1
  59. package/build/core/i18nDetector.js +0 -314
  60. package/build/core/i18nDetector.js.map +0 -1
  61. package/build/core/index.d.ts +0 -11
  62. package/build/core/index.d.ts.map +0 -1
  63. package/build/core/index.js +0 -14
  64. package/build/core/index.js.map +0 -1
  65. package/build/core/logger.d.ts +0 -91
  66. package/build/core/logger.d.ts.map +0 -1
  67. package/build/core/logger.js +0 -164
  68. package/build/core/logger.js.map +0 -1
  69. package/build/core/mappings/index.d.ts +0 -5
  70. package/build/core/mappings/index.d.ts.map +0 -1
  71. package/build/core/mappings/index.js +0 -5
  72. package/build/core/mappings/index.js.map +0 -1
  73. package/build/core/mappings/scenarioMappings.d.ts +0 -51
  74. package/build/core/mappings/scenarioMappings.d.ts.map +0 -1
  75. package/build/core/mappings/scenarioMappings.js +0 -105
  76. package/build/core/mappings/scenarioMappings.js.map +0 -1
  77. package/build/core/matching/index.d.ts +0 -8
  78. package/build/core/matching/index.d.ts.map +0 -1
  79. package/build/core/matching/index.js +0 -8
  80. package/build/core/matching/index.js.map +0 -1
  81. package/build/core/matching/intentAnalyzer.d.ts +0 -78
  82. package/build/core/matching/intentAnalyzer.d.ts.map +0 -1
  83. package/build/core/matching/intentAnalyzer.js +0 -255
  84. package/build/core/matching/intentAnalyzer.js.map +0 -1
  85. package/build/core/matching/standardMatcher.d.ts +0 -101
  86. package/build/core/matching/standardMatcher.d.ts.map +0 -1
  87. package/build/core/matching/standardMatcher.js +0 -299
  88. package/build/core/matching/standardMatcher.js.map +0 -1
  89. package/build/core/matching/weights.d.ts +0 -64
  90. package/build/core/matching/weights.d.ts.map +0 -1
  91. package/build/core/matching/weights.js +0 -334
  92. package/build/core/matching/weights.js.map +0 -1
  93. package/build/core/projectContextManager.d.ts +0 -39
  94. package/build/core/projectContextManager.d.ts.map +0 -1
  95. package/build/core/projectContextManager.js +0 -147
  96. package/build/core/projectContextManager.js.map +0 -1
  97. package/build/core/scenarioDetector.d.ts +0 -2
  98. package/build/core/scenarioDetector.d.ts.map +0 -1
  99. package/build/core/scenarioDetector.js +0 -2
  100. package/build/core/scenarioDetector.js.map +0 -1
  101. package/build/core/smartAgentMatcher.d.ts +0 -51
  102. package/build/core/smartAgentMatcher.d.ts.map +0 -1
  103. package/build/core/smartAgentMatcher.js +0 -493
  104. package/build/core/smartAgentMatcher.js.map +0 -1
  105. package/build/core/standardsManager.d.ts +0 -130
  106. package/build/core/standardsManager.d.ts.map +0 -1
  107. package/build/core/standardsManager.js +0 -600
  108. package/build/core/standardsManager.js.map +0 -1
  109. package/build/core/templates/discovery.d.ts +0 -41
  110. package/build/core/templates/discovery.d.ts.map +0 -1
  111. package/build/core/templates/discovery.js +0 -262
  112. package/build/core/templates/discovery.js.map +0 -1
  113. package/build/core/templates/types.d.ts +0 -80
  114. package/build/core/templates/types.d.ts.map +0 -1
  115. package/build/core/templates/types.js +0 -10
  116. package/build/core/templates/types.js.map +0 -1
  117. package/build/core/types.d.ts +0 -57
  118. package/build/core/types.d.ts.map +0 -1
  119. package/build/core/types.js +0 -22
  120. package/build/core/types.js.map +0 -1
  121. package/build/index.d.ts +0 -3
  122. package/build/index.d.ts.map +0 -1
  123. package/build/index.js +0 -576
  124. package/build/index.js.map +0 -1
  125. package/build/tools/analyzeProject.d.ts +0 -12
  126. package/build/tools/analyzeProject.d.ts.map +0 -1
  127. package/build/tools/analyzeProject.js +0 -85
  128. package/build/tools/analyzeProject.js.map +0 -1
  129. package/build/tools/autoSetup.d.ts +0 -15
  130. package/build/tools/autoSetup.d.ts.map +0 -1
  131. package/build/tools/autoSetup.js +0 -291
  132. package/build/tools/autoSetup.js.map +0 -1
  133. package/build/tools/generateConfig.d.ts +0 -16
  134. package/build/tools/generateConfig.d.ts.map +0 -1
  135. package/build/tools/generateConfig.js +0 -379
  136. package/build/tools/generateConfig.js.map +0 -1
  137. package/build/tools/generateProjectAgent.d.ts +0 -15
  138. package/build/tools/generateProjectAgent.d.ts.map +0 -1
  139. package/build/tools/generateProjectAgent.js +0 -348
  140. package/build/tools/generateProjectAgent.js.map +0 -1
  141. package/build/tools/getCompactStandards.d.ts +0 -20
  142. package/build/tools/getCompactStandards.d.ts.map +0 -1
  143. package/build/tools/getCompactStandards.js +0 -367
  144. package/build/tools/getCompactStandards.js.map +0 -1
  145. package/build/tools/getSmartStandards.d.ts +0 -15
  146. package/build/tools/getSmartStandards.d.ts.map +0 -1
  147. package/build/tools/getSmartStandards.js +0 -201
  148. package/build/tools/getSmartStandards.js.map +0 -1
  149. package/build/tools/getStandardById.d.ts +0 -42
  150. package/build/tools/getStandardById.d.ts.map +0 -1
  151. package/build/tools/getStandardById.js +0 -289
  152. package/build/tools/getStandardById.js.map +0 -1
  153. package/build/tools/getTemplate.d.ts +0 -37
  154. package/build/tools/getTemplate.d.ts.map +0 -1
  155. package/build/tools/getTemplate.js +0 -78
  156. package/build/tools/getTemplate.js.map +0 -1
  157. package/build/tools/healthCheck.d.ts +0 -14
  158. package/build/tools/healthCheck.d.ts.map +0 -1
  159. package/build/tools/healthCheck.js +0 -237
  160. package/build/tools/healthCheck.js.map +0 -1
  161. package/build/tools/listAgents.d.ts +0 -10
  162. package/build/tools/listAgents.d.ts.map +0 -1
  163. package/build/tools/listAgents.js +0 -79
  164. package/build/tools/listAgents.js.map +0 -1
  165. package/build/tools/listTemplates.d.ts +0 -41
  166. package/build/tools/listTemplates.d.ts.map +0 -1
  167. package/build/tools/listTemplates.js +0 -81
  168. package/build/tools/listTemplates.js.map +0 -1
  169. package/build/tools/matchAgents.d.ts +0 -14
  170. package/build/tools/matchAgents.d.ts.map +0 -1
  171. package/build/tools/matchAgents.js +0 -70
  172. package/build/tools/matchAgents.js.map +0 -1
  173. package/build/tools/queryMappings.d.ts +0 -55
  174. package/build/tools/queryMappings.d.ts.map +0 -1
  175. package/build/tools/queryMappings.js +0 -119
  176. package/build/tools/queryMappings.js.map +0 -1
  177. package/build/tools/usePreset.d.ts +0 -23
  178. package/build/tools/usePreset.d.ts.map +0 -1
  179. package/build/tools/usePreset.js +0 -163
  180. package/build/tools/usePreset.js.map +0 -1
@@ -1,176 +0,0 @@
1
- /**
2
- * 分析器类型定义
3
- *
4
- * 设计原则:
5
- * 1. 扩展而非替换现有 ProjectFeatures 接口
6
- * 2. 所有新增字段都是可选的
7
- * 3. 提供转换函数保持向后兼容
8
- */
9
- import { ProjectFeatures } from '../types.js';
10
- /**
11
- * 项目类型枚举
12
- */
13
- export type ProjectType = 'vue3' | 'vue2' | 'react' | 'angular' | 'svelte' | 'solid' | 'nextjs' | 'nuxtjs' | 'remix' | 'astro' | 'flutter' | 'react-native' | 'ionic' | 'electron' | 'tauri' | 'express' | 'nestjs' | 'koa' | 'fastify' | 'miniprogram' | 'uniapp' | 'taro' | 'typescript' | 'javascript' | 'python' | 'java' | 'go' | 'monorepo' | 'library' | 'cli' | 'unknown';
14
- /**
15
- * 框架详细信息
16
- */
17
- export interface FrameworkInfo {
18
- name: string;
19
- version?: string;
20
- confidence: number;
21
- source: 'package.json' | 'config' | 'code' | 'structure';
22
- }
23
- /**
24
- * 语言详细信息
25
- */
26
- export interface LanguageInfo {
27
- name: string;
28
- version?: string;
29
- isPrimary: boolean;
30
- fileCount?: number;
31
- }
32
- /**
33
- * 工具详细信息
34
- */
35
- export interface ToolInfo {
36
- name: string;
37
- category: 'build' | 'ui' | 'style' | 'test' | 'lint' | 'other';
38
- version?: string;
39
- config?: Record<string, unknown>;
40
- }
41
- /**
42
- * 检测元数据
43
- */
44
- export interface AnalysisMetadata {
45
- analyzedAt: Date;
46
- analyzers: string[];
47
- duration: number;
48
- cacheHit?: boolean;
49
- }
50
- /**
51
- * 项目特征(增强版)
52
- * 继承自现有 ProjectFeatures,保持向后兼容
53
- */
54
- export interface ProjectFeaturesExtended extends ProjectFeatures {
55
- projectName?: string;
56
- projectPath?: string;
57
- frameworksDetail?: FrameworkInfo[];
58
- languagesDetail?: LanguageInfo[];
59
- toolsDetail?: ToolInfo[];
60
- confidence?: number;
61
- metadata?: AnalysisMetadata;
62
- }
63
- /**
64
- * 转换为基础类型(兼容现有代码)
65
- */
66
- export declare function toBasicFeatures(extended: ProjectFeaturesExtended): ProjectFeatures;
67
- /**
68
- * 分析结果
69
- */
70
- export interface AnalyzerResult {
71
- features: Partial<ProjectFeaturesExtended>;
72
- confidence: number;
73
- analyzerName: string;
74
- duration: number;
75
- error?: string;
76
- }
77
- /**
78
- * 配置文件分析器接口
79
- */
80
- export interface ConfigAnalyzer {
81
- /**
82
- * 分析器名称
83
- */
84
- readonly name: string;
85
- /**
86
- * 支持的配置文件名列表
87
- */
88
- readonly supportedFiles: string[];
89
- /**
90
- * 检查是否支持指定文件
91
- */
92
- supports(fileName: string): boolean;
93
- /**
94
- * 分析配置文件
95
- * @param filePath 配置文件绝对路径
96
- * @param content 文件内容(可选,避免重复读取)
97
- */
98
- analyze(filePath: string, content?: string): Promise<AnalyzerResult>;
99
- }
100
- /**
101
- * 分析器优先级
102
- */
103
- export interface AnalyzerPriority {
104
- analyzer: ConfigAnalyzer;
105
- priority: number;
106
- }
107
- /**
108
- * 匹配权重配置
109
- */
110
- export interface MatchWeights {
111
- framework: number;
112
- tool: number;
113
- language: number;
114
- keyword: number;
115
- tag: number;
116
- }
117
- /**
118
- * 默认权重(与现有保持一致)
119
- */
120
- export declare const DEFAULT_WEIGHTS: MatchWeights;
121
- /**
122
- * 场景权重因子
123
- */
124
- export interface ScenarioWeightFactors {
125
- scenario: string;
126
- factors: Partial<MatchWeights>;
127
- }
128
- /**
129
- * 项目类型权重因子
130
- */
131
- export interface ProjectTypeWeightFactors {
132
- projectType: ProjectType;
133
- factors: Partial<MatchWeights>;
134
- }
135
- /**
136
- * 匹配详情
137
- */
138
- export interface MatchDetails {
139
- frameworkMatches: string[];
140
- toolMatches: string[];
141
- languageMatches: string[];
142
- keywordMatches: string[];
143
- tagMatches: string[];
144
- }
145
- /**
146
- * 匹配结果
147
- */
148
- export interface MatchResult {
149
- agentId: string;
150
- score: number;
151
- confidence: number;
152
- matchDetails: MatchDetails;
153
- recommendation: 'high' | 'medium' | 'low';
154
- }
155
- /**
156
- * 缓存条目
157
- */
158
- export interface CacheEntry<T> {
159
- data: T;
160
- hash: string;
161
- timestamp: number;
162
- accessCount: number;
163
- }
164
- /**
165
- * 缓存配置
166
- */
167
- export interface CacheConfig {
168
- maxSize: number;
169
- ttlMs: number;
170
- enableHashValidation: boolean;
171
- }
172
- /**
173
- * 默认缓存配置
174
- */
175
- export declare const DEFAULT_CACHE_CONFIG: CacheConfig;
176
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/analyzers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C;;GAEG;AACH,MAAM,MAAM,WAAW,GACjB,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAC1D,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GACvC,SAAS,GAAG,cAAc,GAAG,OAAO,GACpC,UAAU,GAAG,OAAO,GACpB,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GACxC,aAAa,GAAG,QAAQ,GAAG,MAAM,GACjC,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GACtD,UAAU,GAAG,SAAS,GAAG,KAAK,GAC9B,SAAS,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAW5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC;IACnC,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC;IAGzB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,uBAAuB,GAAG,eAAe,CAQlF;AAID;;GAEG;AACH,MAAM,WAAW,cAAc;IAE3B,QAAQ,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAG3C,UAAU,EAAE,MAAM,CAAC;IAGnB,YAAY,EAAE,MAAM,CAAC;IAGrB,QAAQ,EAAE,MAAM,CAAC;IAGjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAEpC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACxE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAID;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,YAM7B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAClC;AAID;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CAC7C;AAID;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,EAAE,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAIlC,CAAC"}
@@ -1,39 +0,0 @@
1
- /**
2
- * 分析器类型定义
3
- *
4
- * 设计原则:
5
- * 1. 扩展而非替换现有 ProjectFeatures 接口
6
- * 2. 所有新增字段都是可选的
7
- * 3. 提供转换函数保持向后兼容
8
- */
9
- /**
10
- * 转换为基础类型(兼容现有代码)
11
- */
12
- export function toBasicFeatures(extended) {
13
- return {
14
- frameworks: extended.frameworks,
15
- languages: extended.languages,
16
- tools: extended.tools,
17
- keywords: extended.keywords,
18
- projectType: extended.projectType
19
- };
20
- }
21
- /**
22
- * 默认权重(与现有保持一致)
23
- */
24
- export const DEFAULT_WEIGHTS = {
25
- framework: 10,
26
- tool: 8,
27
- language: 5,
28
- keyword: 3,
29
- tag: 2
30
- };
31
- /**
32
- * 默认缓存配置
33
- */
34
- export const DEFAULT_CACHE_CONFIG = {
35
- maxSize: 50,
36
- ttlMs: 30 * 60 * 1000, // 30分钟
37
- enableHashValidation: true
38
- };
39
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/analyzers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA0FH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAiC;IAC7D,OAAO;QACH,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;KACpC,CAAC;AACN,CAAC;AAwED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAiB;IACzC,SAAS,EAAE,EAAE;IACb,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,CAAC;IACV,GAAG,EAAE,CAAC;CACT,CAAC;AA+DF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC7C,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAG,OAAO;IAC/B,oBAAoB,EAAE,IAAI;CAC7B,CAAC"}
@@ -1,46 +0,0 @@
1
- /**
2
- * Vite 配置文件分析器
3
- *
4
- * 解析 vite.config.ts/js 文件,提取:
5
- * - 使用的插件(vue, react 等)
6
- * - 路径别名配置
7
- * - 构建配置
8
- */
9
- import { ConfigAnalyzer, AnalyzerResult } from './types.js';
10
- /**
11
- * Vite 配置分析器
12
- */
13
- export declare class ViteConfigAnalyzer implements ConfigAnalyzer {
14
- readonly name = "ViteConfigAnalyzer";
15
- readonly supportedFiles: string[];
16
- private readonly PLUGIN_MAPPINGS;
17
- /**
18
- * 检查是否支持指定文件
19
- */
20
- supports(fileName: string): boolean;
21
- /**
22
- * 分析 Vite 配置文件
23
- */
24
- analyze(filePath: string, content?: string): Promise<AnalyzerResult>;
25
- /**
26
- * 分析插件导入语句
27
- */
28
- private analyzePluginImports;
29
- /**
30
- * 分析插件配置部分
31
- */
32
- private analyzePluginConfig;
33
- /**
34
- * 分析路径别名配置
35
- */
36
- private analyzeAliasConfig;
37
- /**
38
- * 分析开发服务器配置
39
- */
40
- private analyzeServerConfig;
41
- /**
42
- * 分析构建配置
43
- */
44
- private analyzeBuildConfig;
45
- }
46
- //# sourceMappingURL=vite.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../../../src/core/analyzers/vite.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAqC,MAAM,YAAY,CAAC;AAE/F;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACrD,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,cAAc,WAKrB;IAGF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAoB9B;IAEF;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAmD1E;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkD5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAmB7B"}
@@ -1,211 +0,0 @@
1
- /**
2
- * Vite 配置文件分析器
3
- *
4
- * 解析 vite.config.ts/js 文件,提取:
5
- * - 使用的插件(vue, react 等)
6
- * - 路径别名配置
7
- * - 构建配置
8
- */
9
- import * as fs from 'fs';
10
- /**
11
- * Vite 配置分析器
12
- */
13
- export class ViteConfigAnalyzer {
14
- name = 'ViteConfigAnalyzer';
15
- supportedFiles = [
16
- 'vite.config.ts',
17
- 'vite.config.js',
18
- 'vite.config.mts',
19
- 'vite.config.mjs'
20
- ];
21
- // 插件名称到框架/工具的映射
22
- PLUGIN_MAPPINGS = {
23
- '@vitejs/plugin-vue': { type: 'framework', name: 'Vue 3' },
24
- '@vitejs/plugin-vue-jsx': { type: 'tool', name: 'Vue JSX' },
25
- '@vitejs/plugin-react': { type: 'framework', name: 'React' },
26
- '@vitejs/plugin-react-swc': { type: 'framework', name: 'React' },
27
- '@vitejs/plugin-legacy': { type: 'tool', name: 'Legacy Browser Support' },
28
- 'vite-plugin-vue2': { type: 'framework', name: 'Vue 2' },
29
- 'unplugin-vue-components': { type: 'tool', name: 'Auto Components' },
30
- 'unplugin-auto-import': { type: 'tool', name: 'Auto Import' },
31
- 'vite-plugin-pages': { type: 'tool', name: 'File-based Routing' },
32
- 'vite-plugin-vue-layouts': { type: 'tool', name: 'Vue Layouts' },
33
- 'vite-plugin-pwa': { type: 'tool', name: 'PWA' },
34
- 'vite-plugin-compression': { type: 'tool', name: 'Compression' },
35
- 'vite-plugin-svg-icons': { type: 'tool', name: 'SVG Icons' },
36
- 'unocss': { type: 'tool', name: 'UnoCSS' },
37
- '@unocss/vite': { type: 'tool', name: 'UnoCSS' },
38
- 'vite-plugin-windicss': { type: 'tool', name: 'WindiCSS' },
39
- 'vite-plugin-mock': { type: 'tool', name: 'Mock Server' },
40
- 'vite-plugin-html': { type: 'tool', name: 'HTML Transform' },
41
- 'rollup-plugin-visualizer': { type: 'tool', name: 'Bundle Analyzer' },
42
- };
43
- /**
44
- * 检查是否支持指定文件
45
- */
46
- supports(fileName) {
47
- return this.supportedFiles.includes(fileName);
48
- }
49
- /**
50
- * 分析 Vite 配置文件
51
- */
52
- async analyze(filePath, content) {
53
- const startTime = Date.now();
54
- try {
55
- // 读取文件内容
56
- const fileContent = content ?? fs.readFileSync(filePath, 'utf-8');
57
- const features = {
58
- frameworks: [],
59
- tools: ['Vite'],
60
- toolsDetail: [{
61
- name: 'Vite',
62
- category: 'build',
63
- config: {}
64
- }],
65
- keywords: []
66
- };
67
- // 分析导入的插件
68
- this.analyzePluginImports(fileContent, features);
69
- // 分析插件配置
70
- this.analyzePluginConfig(fileContent, features);
71
- // 分析 resolve.alias
72
- this.analyzeAliasConfig(fileContent, features);
73
- // 分析 server 配置
74
- this.analyzeServerConfig(fileContent, features);
75
- // 分析 build 配置
76
- this.analyzeBuildConfig(fileContent, features);
77
- return {
78
- features,
79
- confidence: 0.9,
80
- analyzerName: this.name,
81
- duration: Date.now() - startTime
82
- };
83
- }
84
- catch (error) {
85
- const message = error instanceof Error ? error.message : String(error);
86
- return {
87
- features: {},
88
- confidence: 0,
89
- analyzerName: this.name,
90
- duration: Date.now() - startTime,
91
- error: `分析 Vite 配置失败: ${message}`
92
- };
93
- }
94
- }
95
- /**
96
- * 分析插件导入语句
97
- */
98
- analyzePluginImports(content, features) {
99
- // 匹配 import 语句
100
- const importRegex = /import\s+.*?\s+from\s+['"]([^'"]+)['"]/g;
101
- let match;
102
- while ((match = importRegex.exec(content)) !== null) {
103
- const packageName = match[1];
104
- const mapping = this.PLUGIN_MAPPINGS[packageName];
105
- if (mapping) {
106
- if (mapping.type === 'framework') {
107
- if (!features.frameworks.includes(mapping.name)) {
108
- features.frameworks.push(mapping.name);
109
- }
110
- }
111
- else {
112
- if (!features.tools.includes(mapping.name)) {
113
- features.tools.push(mapping.name);
114
- }
115
- }
116
- }
117
- }
118
- // 检测 ElementPlus 自动导入
119
- if (content.includes('ElementPlusResolver') ||
120
- content.includes('element-plus')) {
121
- if (!features.tools.includes('Element Plus')) {
122
- features.tools.push('Element Plus');
123
- }
124
- }
125
- // 检测 Ant Design Vue
126
- if (content.includes('AntDesignVueResolver') ||
127
- content.includes('ant-design-vue')) {
128
- if (!features.tools.includes('Ant Design Vue')) {
129
- features.tools.push('Ant Design Vue');
130
- }
131
- }
132
- // 检测 Naive UI
133
- if (content.includes('NaiveUiResolver') ||
134
- content.includes('naive-ui')) {
135
- if (!features.tools.includes('Naive UI')) {
136
- features.tools.push('Naive UI');
137
- }
138
- }
139
- }
140
- /**
141
- * 分析插件配置部分
142
- */
143
- analyzePluginConfig(content, features) {
144
- // 检测 Vue I18n
145
- if (content.includes('VueI18nPlugin') ||
146
- content.includes('@intlify/unplugin-vue-i18n')) {
147
- features.keywords.push('i18n');
148
- if (!features.tools.includes('Vue I18n')) {
149
- features.tools.push('Vue I18n');
150
- }
151
- }
152
- // 检测 Mock
153
- if (content.includes('viteMockServe') ||
154
- content.includes('vite-plugin-mock')) {
155
- features.keywords.push('mock');
156
- }
157
- // 检测 PWA
158
- if (content.includes('VitePWA') ||
159
- content.includes('vite-plugin-pwa')) {
160
- features.keywords.push('pwa');
161
- }
162
- }
163
- /**
164
- * 分析路径别名配置
165
- */
166
- analyzeAliasConfig(content, features) {
167
- // 检测 @ 别名配置
168
- if (content.includes("'@'") || content.includes('"@"')) {
169
- features.keywords.push('path-alias');
170
- }
171
- // 检测 src 目录结构
172
- const srcDirs = ['@/components', '@/views', '@/store', '@/api', '@/utils'];
173
- for (const dir of srcDirs) {
174
- if (content.includes(dir)) {
175
- features.keywords.push('standard-structure');
176
- break;
177
- }
178
- }
179
- }
180
- /**
181
- * 分析开发服务器配置
182
- */
183
- analyzeServerConfig(content, features) {
184
- // 检测代理配置
185
- if (content.includes('proxy:') || content.includes('proxy :')) {
186
- features.keywords.push('api-proxy');
187
- }
188
- // 检测 HTTPS
189
- if (content.includes('https:') && content.includes('true')) {
190
- features.keywords.push('https');
191
- }
192
- }
193
- /**
194
- * 分析构建配置
195
- */
196
- analyzeBuildConfig(content, features) {
197
- // 检测代码分割
198
- if (content.includes('manualChunks')) {
199
- features.keywords.push('code-splitting');
200
- }
201
- // 检测 Rollup 选项
202
- if (content.includes('rollupOptions')) {
203
- features.keywords.push('rollup-config');
204
- }
205
- // 检测源码映射
206
- if (content.includes('sourcemap')) {
207
- features.keywords.push('sourcemap');
208
- }
209
- }
210
- }
211
- //# sourceMappingURL=vite.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vite.js","sourceRoot":"","sources":["../../../src/core/analyzers/vite.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { Logger } from './types.js';
2
- /**
3
- * 自动初始化器
4
- * 在工具调用前检查项目配置,如果不存在则自动生成
5
- */
6
- export declare class AutoInitializer {
7
- private logger?;
8
- private initialized;
9
- constructor(logger?: Logger | undefined);
10
- /**
11
- * 检查并初始化项目配置
12
- * @param workspacePath 工作区路径
13
- * @returns 是否需要初始化(返回 true 表示已执行初始化)
14
- */
15
- ensureProjectConfig(workspacePath?: string): Promise<{
16
- needsInit: boolean;
17
- initialized: boolean;
18
- message: string;
19
- }>;
20
- /**
21
- * 检测工作区路径
22
- */
23
- private detectWorkspacePath;
24
- /**
25
- * 判断是否是有效的项目目录
26
- */
27
- private isValidProject;
28
- /**
29
- * 重置初始化状态(用于测试)
30
- */
31
- reset(): void;
32
- private log;
33
- }
34
- //# sourceMappingURL=autoInitializer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"autoInitializer.d.ts","sourceRoot":"","sources":["../../src/core/autoInitializer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC;;;GAGG;AACH,qBAAa,eAAe;IAGZ,OAAO,CAAC,MAAM,CAAC;IAF3B,OAAO,CAAC,WAAW,CAAmC;gBAElC,MAAM,CAAC,EAAE,MAAM,YAAA;IAEnC;;;;OAIG;IACG,mBAAmB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACvD,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;IA8EF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,GAAG;CAOd"}
@@ -1,145 +0,0 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import { analyzeProject } from '../tools/analyzeProject.js';
4
- import { generateConfig } from '../tools/generateConfig.js';
5
- /**
6
- * 自动初始化器
7
- * 在工具调用前检查项目配置,如果不存在则自动生成
8
- */
9
- export class AutoInitializer {
10
- logger;
11
- initialized = new Map();
12
- constructor(logger) {
13
- this.logger = logger;
14
- }
15
- /**
16
- * 检查并初始化项目配置
17
- * @param workspacePath 工作区路径
18
- * @returns 是否需要初始化(返回 true 表示已执行初始化)
19
- */
20
- async ensureProjectConfig(workspacePath) {
21
- // 检测工作区路径
22
- const projectPath = workspacePath || this.detectWorkspacePath();
23
- if (!projectPath) {
24
- return {
25
- needsInit: false,
26
- initialized: false,
27
- message: '未检测到工作区路径'
28
- };
29
- }
30
- // 检查是否已经初始化过(避免重复)
31
- if (this.initialized.get(projectPath)) {
32
- return {
33
- needsInit: false,
34
- initialized: true,
35
- message: `项目已配置: ${path.basename(projectPath)}`
36
- };
37
- }
38
- // 检查是否存在配置文件
39
- const configPath = path.join(projectPath, '.github', 'copilot-instructions.md');
40
- const hasConfig = fs.existsSync(configPath);
41
- if (hasConfig) {
42
- this.initialized.set(projectPath, true);
43
- return {
44
- needsInit: false,
45
- initialized: true,
46
- message: `项目已有配置: ${path.basename(projectPath)}`
47
- };
48
- }
49
- // 需要初始化
50
- this.log(`🔍 检测到项目未配置,开始自动分析和生成配置...`);
51
- this.log(`📁 项目路径: ${projectPath}`);
52
- try {
53
- // 1. 分析项目
54
- this.log('1️⃣ 分析项目技术栈...');
55
- const analysisResult = await analyzeProject({ projectPath });
56
- if (analysisResult.content?.[0]?.text) {
57
- const analysis = JSON.parse(analysisResult.content[0].text);
58
- this.log(`✅ 检测到: ${analysis.frameworks?.join(', ') || '未知技术栈'}`);
59
- // 2. 生成配置
60
- this.log('2️⃣ 生成项目配置文件...');
61
- await generateConfig({
62
- projectPath,
63
- autoMatch: true
64
- });
65
- this.initialized.set(projectPath, true);
66
- return {
67
- needsInit: true,
68
- initialized: true,
69
- message: `✅ 项目配置已自动生成\n📁 路径: ${configPath}\n🎯 技术栈: ${analysis.frameworks?.join(', ')}`
70
- };
71
- }
72
- }
73
- catch (error) {
74
- this.log(`❌ 自动初始化失败: ${error}`);
75
- return {
76
- needsInit: true,
77
- initialized: false,
78
- message: `⚠️ 自动初始化失败: ${error instanceof Error ? error.message : String(error)}`
79
- };
80
- }
81
- return {
82
- needsInit: true,
83
- initialized: false,
84
- message: '⚠️ 无法完成自动初始化'
85
- };
86
- }
87
- /**
88
- * 检测工作区路径
89
- */
90
- detectWorkspacePath() {
91
- // 优先级 1: 环境变量
92
- if (process.env.WORKSPACE_PATH) {
93
- return process.env.WORKSPACE_PATH;
94
- }
95
- // 优先级 2: 当前工作目录
96
- const cwd = process.cwd();
97
- if (this.isValidProject(cwd)) {
98
- return cwd;
99
- }
100
- // 优先级 3: 尝试从常见位置检测
101
- const possiblePaths = [
102
- path.join(cwd, '..'),
103
- path.join(cwd, '../..'),
104
- ];
105
- for (const possiblePath of possiblePaths) {
106
- if (this.isValidProject(possiblePath)) {
107
- return possiblePath;
108
- }
109
- }
110
- return null;
111
- }
112
- /**
113
- * 判断是否是有效的项目目录
114
- */
115
- isValidProject(dirPath) {
116
- if (!fs.existsSync(dirPath)) {
117
- return false;
118
- }
119
- // 检查是否有项目标志文件
120
- const markers = [
121
- 'package.json',
122
- 'pubspec.yaml',
123
- 'pom.xml',
124
- 'go.mod',
125
- 'Cargo.toml',
126
- '.git'
127
- ];
128
- return markers.some(marker => fs.existsSync(path.join(dirPath, marker)));
129
- }
130
- /**
131
- * 重置初始化状态(用于测试)
132
- */
133
- reset() {
134
- this.initialized.clear();
135
- }
136
- log(message) {
137
- if (this.logger) {
138
- this.logger.log(message);
139
- }
140
- else {
141
- console.error(`[AutoInit] ${message}`);
142
- }
143
- }
144
- }
145
- //# sourceMappingURL=autoInitializer.js.map