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,600 +0,0 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import { fileURLToPath } from 'url';
4
- const __filename = fileURLToPath(import.meta.url);
5
- const __dirname = path.dirname(__filename);
6
- /**
7
- * 规范资源管理器(Phase 3 增强)
8
- */
9
- export class StandardsManager {
10
- standardsPath;
11
- // v1.2.0: 底层必须加载的核心规范
12
- MANDATORY_CORE_STANDARDS = [
13
- 'standards://core/code-style', // 代码风格规范(命名、格式等)
14
- 'standards://core/typescript-base', // TypeScript基础规范
15
- 'standards://core/code-generation' // 代码生成规范(注释、文档等)
16
- ];
17
- // Phase 3: 缓存系统
18
- contentCache = new Map();
19
- CACHE_DURATION = 30 * 60 * 1000; // 30分钟
20
- MAX_CACHE_SIZE = 50; // 最多缓存50个条目
21
- // Phase 3: 使用统计
22
- stats = {
23
- standardCombinations: new Map(),
24
- individualStandards: new Map(),
25
- averageTokens: 0,
26
- totalCalls: 0
27
- };
28
- // Phase 3: 性能指标
29
- metrics = {
30
- totalCalls: 0,
31
- cacheHits: 0,
32
- cacheMisses: 0,
33
- averageResponseTime: 0,
34
- totalTokensSaved: 0
35
- };
36
- constructor() {
37
- // 标准规范目录路径
38
- // 开发环境: mcp-server/build/core -> copilot-prompts/standards
39
- // npm 包环境: node_modules/mta-mcp/build/core -> node_modules/mta-mcp/standards
40
- const devPath = path.resolve(__dirname, '../../../standards');
41
- const npmPath = path.resolve(__dirname, '../../standards');
42
- // 优先使用 npm 包内的路径,如果不存在则使用开发路径
43
- this.standardsPath = fs.existsSync(npmPath) ? npmPath : devPath;
44
- }
45
- /**
46
- * 获取所有可用的规范资源
47
- */
48
- getAvailableStandards() {
49
- const standards = [];
50
- const categories = [
51
- { dir: 'core', name: '核心规范' },
52
- { dir: 'frameworks', name: '框架规范' },
53
- { dir: 'libraries', name: '库规范' },
54
- { dir: 'patterns', name: '设计模式' }
55
- ];
56
- categories.forEach(({ dir, name: categoryName }) => {
57
- const categoryPath = path.join(this.standardsPath, dir);
58
- if (!fs.existsSync(categoryPath)) {
59
- return;
60
- }
61
- const files = fs.readdirSync(categoryPath)
62
- .filter(file => file.endsWith('.md'));
63
- files.forEach(file => {
64
- const standardId = file.replace('.md', '');
65
- standards.push({
66
- uri: `standards://${dir}/${standardId}`,
67
- name: this.getStandardName(dir, standardId),
68
- description: `${categoryName} - ${this.getStandardDescription(dir, standardId)}`,
69
- category: dir
70
- });
71
- });
72
- });
73
- return standards;
74
- }
75
- /**
76
- * 读取特定规范内容(Phase 3: 带缓存)
77
- */
78
- readStandard(uri) {
79
- const startTime = Date.now();
80
- // 检查缓存
81
- const cached = this.contentCache.get(uri);
82
- if (cached && (Date.now() - cached.timestamp) < this.CACHE_DURATION) {
83
- cached.accessCount++;
84
- this.metrics.cacheHits++;
85
- return cached.content;
86
- }
87
- this.metrics.cacheMisses++;
88
- // 解析 URI: standards://category/standard-name
89
- const match = uri.match(/^standards:\/\/([^/]+)\/(.+)$/);
90
- if (!match) {
91
- throw new Error(`Invalid standards URI: ${uri}`);
92
- }
93
- const [, category, standardId] = match;
94
- const filePath = path.join(this.standardsPath, category, `${standardId}.md`);
95
- if (!fs.existsSync(filePath)) {
96
- throw new Error(`Standard not found: ${uri}`);
97
- }
98
- const content = fs.readFileSync(filePath, 'utf-8');
99
- // 更新缓存
100
- this.updateCache(uri, content);
101
- // 更新统计
102
- this.stats.individualStandards.set(uri, (this.stats.individualStandards.get(uri) || 0) + 1);
103
- // 记录响应时间
104
- const responseTime = Date.now() - startTime;
105
- this.updateAverageResponseTime(responseTime);
106
- return content;
107
- }
108
- /**
109
- * 更新缓存
110
- */
111
- updateCache(uri, content) {
112
- // 如果缓存已满,移除最少使用的条目
113
- if (this.contentCache.size >= this.MAX_CACHE_SIZE) {
114
- let minAccessCount = Infinity;
115
- let lruKey = null;
116
- this.contentCache.forEach((entry, key) => {
117
- if (entry.accessCount < minAccessCount) {
118
- minAccessCount = entry.accessCount;
119
- lruKey = key;
120
- }
121
- });
122
- if (lruKey) {
123
- this.contentCache.delete(lruKey);
124
- }
125
- }
126
- this.contentCache.set(uri, {
127
- content,
128
- timestamp: Date.now(),
129
- accessCount: 1
130
- });
131
- }
132
- /**
133
- * 根据技术栈获取相关规范(增强版 - Phase 2)
134
- */
135
- getRelevantStandards(context) {
136
- const standardScores = new Map();
137
- // 权重系统
138
- const WEIGHTS = {
139
- CORE: 100, // 核心规范始终包含
140
- FILE_TYPE: 50, // 文件类型匹配
141
- IMPORT_DIRECT: 40, // 直接导入匹配
142
- IMPORT_RELATED: 20, // 相关导入匹配
143
- SCENARIO: 30, // 场景匹配
144
- CONTENT: 15, // 内容关键词匹配
145
- THRESHOLD: 10 // 最低阈值
146
- };
147
- // v1.2.0: 始终包含底层必须加载的核心规范
148
- this.MANDATORY_CORE_STANDARDS.forEach(standard => {
149
- standardScores.set(standard, WEIGHTS.CORE);
150
- });
151
- // 自动检测导入(如果提供了文件内容)
152
- let detectedImports = context.imports || [];
153
- if (context.fileContent && !context.imports) {
154
- detectedImports = this.detectImports(context.fileContent);
155
- }
156
- // 根据文件类型评分
157
- if (context.fileType) {
158
- this.scoreByFileType(context.fileType, standardScores, WEIGHTS);
159
- }
160
- // 根据导入评分
161
- if (detectedImports.length > 0) {
162
- this.scoreByImports(detectedImports, standardScores, WEIGHTS);
163
- }
164
- // 根据场景评分
165
- if (context.scenario) {
166
- this.scoreByScenario(context.scenario, standardScores, WEIGHTS);
167
- }
168
- // 根据内容关键词评分
169
- if (context.fileContent) {
170
- this.scoreByContent(context.fileContent, standardScores, WEIGHTS);
171
- }
172
- // 过滤并排序
173
- const sortedStandards = Array.from(standardScores.entries())
174
- .filter(([_, score]) => score >= WEIGHTS.THRESHOLD)
175
- .sort((a, b) => b[1] - a[1])
176
- .map(([uri]) => uri);
177
- // Phase 3: 记录使用统计
178
- this.stats.totalCalls++;
179
- const combinationKey = sortedStandards.join('|');
180
- this.stats.standardCombinations.set(combinationKey, (this.stats.standardCombinations.get(combinationKey) || 0) + 1);
181
- return sortedStandards;
182
- }
183
- /**
184
- * 自动检测文件中的导入语句
185
- */
186
- detectImports(content) {
187
- const imports = [];
188
- // 匹配 ES6 import 语句
189
- const importRegex = /import\s+(?:(?:{[^}]*}|\*\s+as\s+\w+|\w+)\s+from\s+)?['"]([^'"]+)['"]/g;
190
- let match;
191
- while ((match = importRegex.exec(content)) !== null) {
192
- imports.push(match[1]);
193
- }
194
- // 匹配 require 语句
195
- const requireRegex = /require\(['"]([^'"]+)['"]\)/g;
196
- while ((match = requireRegex.exec(content)) !== null) {
197
- imports.push(match[1]);
198
- }
199
- return imports;
200
- }
201
- /**
202
- * 根据文件类型评分
203
- */
204
- scoreByFileType(fileType, scores, weights) {
205
- const type = fileType.toLowerCase();
206
- if (type === 'vue' || type.endsWith('.vue')) {
207
- this.addScore(scores, 'standards://frameworks/vue3-composition', weights.FILE_TYPE);
208
- this.addScore(scores, 'standards://patterns/component-design', weights.FILE_TYPE * 0.6);
209
- }
210
- // 微信小程序文件类型
211
- if (type === 'wxml' || type.endsWith('.wxml') ||
212
- type === 'wxss' || type.endsWith('.wxss') ||
213
- type === 'wxs' || type.endsWith('.wxs')) {
214
- this.addScore(scores, 'standards://frameworks/wechat-miniprogram', weights.FILE_TYPE);
215
- }
216
- if (type === 'ts' || type === 'typescript' || type.endsWith('.ts')) {
217
- // TypeScript 文件,略微提升 TS 规范权重
218
- this.addScore(scores, 'standards://core/typescript-base', weights.FILE_TYPE * 0.3);
219
- }
220
- // Flutter/Dart 文件类型
221
- if (type === 'dart' || type.endsWith('.dart')) {
222
- this.addScore(scores, 'standards://frameworks/flutter', weights.FILE_TYPE);
223
- this.addScore(scores, 'standards://frameworks/flutter-ui-system', weights.FILE_TYPE);
224
- this.addScore(scores, 'standards://core/dart-base', weights.FILE_TYPE * 0.5);
225
- }
226
- }
227
- /**
228
- * 根据导入评分
229
- */
230
- scoreByImports(imports, scores, weights) {
231
- imports.forEach(imp => {
232
- const normalized = imp.toLowerCase();
233
- // Vue 生态
234
- if (normalized === 'vue' || normalized.startsWith('vue/')) {
235
- this.addScore(scores, 'standards://frameworks/vue3-composition', weights.IMPORT_DIRECT);
236
- }
237
- else if (normalized.includes('vue')) {
238
- this.addScore(scores, 'standards://frameworks/vue3-composition', weights.IMPORT_RELATED);
239
- }
240
- // Pinia
241
- if (normalized === 'pinia' || normalized.startsWith('pinia/')) {
242
- this.addScore(scores, 'standards://frameworks/pinia', weights.IMPORT_DIRECT);
243
- }
244
- // Element Plus
245
- if (normalized === 'element-plus' || normalized.startsWith('element-plus/')) {
246
- this.addScore(scores, 'standards://libraries/element-plus', weights.IMPORT_DIRECT);
247
- }
248
- else if (normalized.includes('element')) {
249
- this.addScore(scores, 'standards://libraries/element-plus', weights.IMPORT_RELATED);
250
- }
251
- // i18n
252
- if (normalized === 'vue-i18n' || normalized.includes('i18n')) {
253
- this.addScore(scores, 'standards://libraries/i18n', weights.IMPORT_DIRECT);
254
- }
255
- // 微信小程序
256
- if (normalized === 'wx' || normalized.includes('weixin') ||
257
- normalized.includes('miniprogram')) {
258
- this.addScore(scores, 'standards://frameworks/wechat-miniprogram', weights.IMPORT_DIRECT);
259
- }
260
- // Axios / API 相关
261
- if (normalized === 'axios' || normalized.includes('axios')) {
262
- this.addScore(scores, 'standards://patterns/api-layer', weights.IMPORT_DIRECT);
263
- }
264
- // 通用组件库导入提示组件设计
265
- if (normalized.includes('component') || normalized.startsWith('./components/')) {
266
- this.addScore(scores, 'standards://patterns/component-design', weights.IMPORT_RELATED);
267
- }
268
- // Flutter 相关
269
- if (normalized === 'flutter' || normalized.startsWith('flutter/') ||
270
- normalized.startsWith('package:flutter')) {
271
- this.addScore(scores, 'standards://frameworks/flutter', weights.IMPORT_DIRECT);
272
- this.addScore(scores, 'standards://frameworks/flutter-ui-system', weights.IMPORT_DIRECT);
273
- }
274
- // GetX 状态管理
275
- if (normalized === 'get' || normalized.startsWith('get/') ||
276
- normalized.startsWith('package:get')) {
277
- this.addScore(scores, 'standards://frameworks/flutter', weights.IMPORT_DIRECT);
278
- }
279
- });
280
- }
281
- /**
282
- * 根据场景评分
283
- */
284
- scoreByScenario(scenario, scores, weights) {
285
- const normalized = scenario.toLowerCase();
286
- // API 相关场景
287
- if (normalized.includes('api') || normalized.includes('request') ||
288
- normalized.includes('fetch') || normalized.includes('axios')) {
289
- this.addScore(scores, 'standards://patterns/api-layer', weights.SCENARIO);
290
- }
291
- // 组件相关场景
292
- if (normalized.includes('component') || normalized.includes('组件') ||
293
- normalized.includes('widget') || normalized.includes('封装')) {
294
- this.addScore(scores, 'standards://patterns/component-design', weights.SCENARIO);
295
- }
296
- // 表单场景
297
- if (normalized.includes('form') || normalized.includes('表单') ||
298
- normalized.includes('input') || normalized.includes('validation')) {
299
- this.addScore(scores, 'standards://libraries/element-plus', weights.SCENARIO);
300
- this.addScore(scores, 'standards://patterns/component-design', weights.SCENARIO * 0.5);
301
- }
302
- // 状态管理场景
303
- if (normalized.includes('store') || normalized.includes('state') ||
304
- normalized.includes('状态') || normalized.includes('pinia')) {
305
- this.addScore(scores, 'standards://frameworks/pinia', weights.SCENARIO);
306
- }
307
- // 国际化场景
308
- if (normalized.includes('i18n') || normalized.includes('translate') ||
309
- normalized.includes('国际化') || normalized.includes('翻译') ||
310
- normalized.includes('locale') || normalized.includes('多语言') ||
311
- normalized.includes('messages.ts') || normalized.includes('$t(')) {
312
- this.addScore(scores, 'standards://libraries/i18n', weights.SCENARIO);
313
- }
314
- // Vue CSS 嵌套场景
315
- if (normalized.includes('css') || normalized.includes('样式') ||
316
- normalized.includes('style') || normalized.includes('scoped') ||
317
- normalized.includes('嵌套') || normalized.includes('nesting') ||
318
- normalized.includes('内联') || normalized.includes('inline') ||
319
- normalized.includes('工具类') || normalized.includes('utilities') ||
320
- normalized.includes('.ml_') || normalized.includes('.mr_') ||
321
- normalized.includes('.mt_') || normalized.includes('.mb_') ||
322
- normalized.includes('.w_') || normalized.includes(':deep(')) {
323
- this.addScore(scores, 'standards://patterns/vue-css-nesting', weights.SCENARIO);
324
- }
325
- // 微信小程序场景
326
- if (normalized.includes('小程序') || normalized.includes('miniprogram') ||
327
- normalized.includes('wechat') || normalized.includes('微信') ||
328
- normalized.includes('wx.') || normalized.includes('page(') ||
329
- normalized.includes('component(') || normalized.includes('云开发') ||
330
- normalized.includes('云函数') || normalized.includes('云数据库') ||
331
- normalized.includes('云存储')) {
332
- this.addScore(scores, 'standards://frameworks/wechat-miniprogram', weights.SCENARIO);
333
- }
334
- // Flutter UI 系统场景
335
- if (normalized.includes('flutter') || normalized.includes('dart') ||
336
- normalized.includes('widget') || normalized.includes('ui系统') ||
337
- normalized.includes('ui 系统') || normalized.includes('flutter ui') ||
338
- normalized.includes('design token') || normalized.includes('token') ||
339
- normalized.includes('主题') || normalized.includes('theme')) {
340
- this.addScore(scores, 'standards://frameworks/flutter', weights.SCENARIO);
341
- this.addScore(scores, 'standards://frameworks/flutter-ui-system', weights.SCENARIO);
342
- }
343
- // Flex 组件场景
344
- if (normalized.includes('flexbutton') || normalized.includes('flexcard') ||
345
- normalized.includes('flexinput') || normalized.includes('flex组件') ||
346
- normalized.includes('$c') || normalized.includes('$s') ||
347
- normalized.includes('$t') || normalized.includes('$r')) {
348
- this.addScore(scores, 'standards://frameworks/flutter-ui-system', weights.SCENARIO * 1.5);
349
- }
350
- }
351
- /**
352
- * 根据文件内容关键词评分
353
- */
354
- scoreByContent(content, scores, weights) {
355
- const normalized = content.toLowerCase();
356
- // Vue Composition API 关键词
357
- if (normalized.includes('defineprops') || normalized.includes('defineemits') ||
358
- normalized.includes('ref(') || normalized.includes('computed(') ||
359
- normalized.includes('watch(') || normalized.includes('onmounted')) {
360
- this.addScore(scores, 'standards://frameworks/vue3-composition', weights.CONTENT);
361
- }
362
- // Pinia 关键词
363
- if (normalized.includes('definestore') || normalized.includes('usestore') ||
364
- normalized.includes('$patch') || normalized.includes('$subscribe')) {
365
- this.addScore(scores, 'standards://frameworks/pinia', weights.CONTENT);
366
- }
367
- // Element Plus 关键词
368
- if (normalized.includes('el-form') || normalized.includes('el-table') ||
369
- normalized.includes('el-dialog') || normalized.includes('elmessage')) {
370
- this.addScore(scores, 'standards://libraries/element-plus', weights.CONTENT);
371
- }
372
- // i18n 关键词
373
- if (normalized.includes('$t(') || normalized.includes('t(\'') ||
374
- normalized.includes('usei18n') || normalized.includes('locale') ||
375
- normalized.includes('messages.ts') || normalized.includes('localestore') ||
376
- normalized.includes('setlocale') || normalized.includes('togglelocale')) {
377
- this.addScore(scores, 'standards://libraries/i18n', weights.CONTENT);
378
- }
379
- // Vue CSS 嵌套关键词
380
- if (normalized.includes('<style scoped>') || normalized.includes('&:hover') ||
381
- normalized.includes('&.active') || normalized.includes('&::before') ||
382
- normalized.includes(':deep(') || normalized.includes(':global(') ||
383
- normalized.includes('style="') || normalized.includes('class="ml_') ||
384
- normalized.includes('class="mr_') || normalized.includes('class="mt_') ||
385
- normalized.includes('class="w_')) {
386
- this.addScore(scores, 'standards://patterns/vue-css-nesting', weights.CONTENT);
387
- }
388
- // 微信小程序关键词
389
- if (normalized.includes('wx.') || normalized.includes('page({') ||
390
- normalized.includes('component({') || normalized.includes('setdata') ||
391
- normalized.includes('onload') || normalized.includes('onshow') ||
392
- normalized.includes('wx:for') || normalized.includes('wx:if') ||
393
- normalized.includes('wx.cloud') || normalized.includes('cloudfunctions') ||
394
- normalized.includes('callfunction') || normalized.includes('wx-server-sdk') ||
395
- normalized.includes('cloud.init') || normalized.includes('exports.main')) {
396
- this.addScore(scores, 'standards://frameworks/wechat-miniprogram', weights.CONTENT);
397
- }
398
- // API 层关键词
399
- if (normalized.includes('axios.') || normalized.includes('.get(') ||
400
- normalized.includes('.post(') || normalized.includes('interceptor')) {
401
- this.addScore(scores, 'standards://patterns/api-layer', weights.CONTENT);
402
- }
403
- // Flutter Widget 关键词
404
- if (normalized.includes('statelesswidget') || normalized.includes('statefulwidget') ||
405
- normalized.includes('buildcontext') || normalized.includes('@override') ||
406
- normalized.includes('widget build(') || normalized.includes('getx') ||
407
- normalized.includes('get.find') || normalized.includes('obx(')) {
408
- this.addScore(scores, 'standards://frameworks/flutter', weights.CONTENT);
409
- }
410
- // Flutter UI Token 系统关键词
411
- if (normalized.includes('$c.') || normalized.includes('$s.') ||
412
- normalized.includes('$t.') || normalized.includes('$r.') ||
413
- normalized.includes('$shadow.') || normalized.includes('$b.') ||
414
- normalized.includes('flexbutton') || normalized.includes('flexcard') ||
415
- normalized.includes('flexinput') || normalized.includes('flexbox') ||
416
- normalized.includes('tokenmanager') || normalized.includes('designtokens') ||
417
- normalized.includes('thememanager') || normalized.includes('gap(')) {
418
- this.addScore(scores, 'standards://frameworks/flutter-ui-system', weights.CONTENT * 2);
419
- }
420
- }
421
- /**
422
- * 添加分数(累加)
423
- */
424
- addScore(scores, uri, points) {
425
- const current = scores.get(uri) || 0;
426
- scores.set(uri, current + points);
427
- }
428
- /**
429
- * 组合多个规范内容(Phase 3: 优化去重与顺序)
430
- */
431
- combineStandards(uris) {
432
- const startTime = Date.now();
433
- // 去重(保持顺序)
434
- const uniqueUris = Array.from(new Set(uris));
435
- // 优化顺序:核心规范放在最前面
436
- const coreUris = uniqueUris.filter(uri => uri.startsWith('standards://core/'));
437
- const otherUris = uniqueUris.filter(uri => !uri.startsWith('standards://core/'));
438
- const sortedUris = [...coreUris, ...otherUris];
439
- const contents = [];
440
- let totalSize = 0;
441
- sortedUris.forEach(uri => {
442
- try {
443
- const content = this.readStandard(uri);
444
- const standardName = this.extractStandardName(uri);
445
- const section = `\n## 📚 ${standardName}\n\n${content}\n`;
446
- contents.push(section);
447
- totalSize += section.length;
448
- }
449
- catch (error) {
450
- console.error(`Failed to read standard ${uri}:`, error);
451
- }
452
- });
453
- const combined = contents.join('\n---\n');
454
- // 计算 token 节省(假设完整规范 ~10000 tokens)
455
- const estimatedTokens = Math.ceil(combined.length / 4);
456
- const baselineTokens = 10000;
457
- const tokensSaved = baselineTokens - estimatedTokens;
458
- this.metrics.totalTokensSaved += Math.max(0, tokensSaved);
459
- // 记录处理时间
460
- const processingTime = Date.now() - startTime;
461
- console.log(`[StandardsManager] Combined ${sortedUris.length} standards in ${processingTime}ms, ~${estimatedTokens} tokens (saved ${tokensSaved})`);
462
- return combined;
463
- }
464
- /**
465
- * 提取规范名称
466
- */
467
- extractStandardName(uri) {
468
- const match = uri.match(/^standards:\/\/([^/]+)\/(.+)$/);
469
- if (match) {
470
- const [, category, standardId] = match;
471
- return this.getStandardName(category, standardId);
472
- }
473
- return uri;
474
- }
475
- /**
476
- * 获取规范显示名称
477
- */
478
- getStandardName(category, standardId) {
479
- const nameMap = {
480
- core: {
481
- 'code-style': '代码风格规范',
482
- 'typescript-base': 'TypeScript 基础',
483
- 'dart-base': 'Dart 基础'
484
- },
485
- frameworks: {
486
- 'vue3-composition': 'Vue 3 Composition API',
487
- 'pinia': 'Pinia 状态管理',
488
- 'flutter': 'Flutter 开发规范',
489
- 'flutter-ui-system': 'Flutter UI 系统规范',
490
- 'wechat-miniprogram': '微信小程序开发'
491
- },
492
- libraries: {
493
- 'element-plus': 'Element Plus 组件库',
494
- 'i18n': '国际化 (i18n)'
495
- },
496
- patterns: {
497
- 'api-layer': 'API 层设计',
498
- 'component-design': '组件设计模式',
499
- 'vue-css-nesting': 'Vue CSS 嵌套写法',
500
- 'vue-api-mock-layer': 'Vue API Mock 层'
501
- }
502
- };
503
- return nameMap[category]?.[standardId] || standardId;
504
- }
505
- /**
506
- * 获取规范描述
507
- */
508
- getStandardDescription(category, standardId) {
509
- const descMap = {
510
- core: {
511
- 'code-style': '命名规范、代码组织、注释规范',
512
- 'typescript-base': '基础类型、函数、泛型使用',
513
- 'dart-base': '空安全、异步编程、类和对象'
514
- },
515
- frameworks: {
516
- 'vue3-composition': 'Props、Emits、生命周期、Composables',
517
- 'pinia': 'Store 定义、状态管理、持久化',
518
- 'flutter': 'Widget 设计、状态管理、性能优化',
519
- 'flutter-ui-system': 'Design Token、Flex组件、主题系统、$快捷方式',
520
- 'wechat-miniprogram': 'Page/Component、网络请求、性能优化'
521
- },
522
- libraries: {
523
- 'element-plus': '表单、表格、对话框、消息提示',
524
- 'i18n': '翻译文件、组件使用、参数化'
525
- },
526
- patterns: {
527
- 'api-layer': 'Axios 配置、API 模块化、错误处理',
528
- 'component-design': '组件通信、Props 验证、性能优化',
529
- 'vue-css-nesting': '原生嵌套语法、伪类伪元素、深度选择器',
530
- 'vue-api-mock-layer': 'Axios封装、Mock数据、模块化API'
531
- }
532
- };
533
- return descMap[category]?.[standardId] || '';
534
- }
535
- /**
536
- * 更新平均响应时间
537
- */
538
- updateAverageResponseTime(responseTime) {
539
- const { totalCalls, averageResponseTime } = this.metrics;
540
- this.metrics.totalCalls++;
541
- this.metrics.averageResponseTime =
542
- (averageResponseTime * totalCalls + responseTime) / this.metrics.totalCalls;
543
- }
544
- /**
545
- * 获取性能指标
546
- */
547
- getPerformanceMetrics() {
548
- return {
549
- ...this.metrics,
550
- cacheHitRate: this.metrics.totalCalls > 0
551
- ? (this.metrics.cacheHits / this.metrics.totalCalls * 100).toFixed(2) + '%'
552
- : '0%'
553
- };
554
- }
555
- /**
556
- * 获取使用统计
557
- */
558
- getUsageStats() {
559
- // 获取最常用的规范组合(Top 5)
560
- const topCombinations = Array.from(this.stats.standardCombinations.entries())
561
- .sort((a, b) => b[1] - a[1])
562
- .slice(0, 5)
563
- .map(([combination, count]) => ({ combination, count }));
564
- // 获取最常用的单个规范(Top 5)
565
- const topStandards = Array.from(this.stats.individualStandards.entries())
566
- .sort((a, b) => b[1] - a[1])
567
- .slice(0, 5)
568
- .map(([standard, count]) => ({ standard, count }));
569
- return {
570
- topCombinations,
571
- topStandards,
572
- totalCalls: this.stats.totalCalls
573
- };
574
- }
575
- /**
576
- * 清除缓存
577
- */
578
- clearCache() {
579
- this.contentCache.clear();
580
- console.log('[StandardsManager] Cache cleared');
581
- }
582
- /**
583
- * 获取缓存统计
584
- */
585
- getCacheStats() {
586
- const entries = Array.from(this.contentCache.entries())
587
- .map(([uri, entry]) => ({
588
- uri,
589
- accessCount: entry.accessCount,
590
- age: Math.floor((Date.now() - entry.timestamp) / 1000) // 秒
591
- }))
592
- .sort((a, b) => b.accessCount - a.accessCount);
593
- return {
594
- size: this.contentCache.size,
595
- maxSize: this.MAX_CACHE_SIZE,
596
- entries
597
- };
598
- }
599
- }
600
- //# sourceMappingURL=standardsManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"standardsManager.js","sourceRoot":"","sources":["../../src/core/standardsManager.ts"],"names":[],"mappings":"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"}