mta-mcp 1.8.1

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