mta-mcp 1.9.1 → 2.2.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 (121) hide show
  1. package/README.md +140 -2
  2. package/build/core/analyzers/eslint.d.ts +51 -0
  3. package/build/core/analyzers/eslint.d.ts.map +1 -0
  4. package/build/core/analyzers/eslint.js +259 -0
  5. package/build/core/analyzers/eslint.js.map +1 -0
  6. package/build/core/analyzers/index.d.ts +9 -0
  7. package/build/core/analyzers/index.d.ts.map +1 -0
  8. package/build/core/analyzers/index.js +9 -0
  9. package/build/core/analyzers/index.js.map +1 -0
  10. package/build/core/analyzers/registry.d.ts +59 -0
  11. package/build/core/analyzers/registry.d.ts.map +1 -0
  12. package/build/core/analyzers/registry.js +241 -0
  13. package/build/core/analyzers/registry.js.map +1 -0
  14. package/build/core/analyzers/tsconfig.d.ts +45 -0
  15. package/build/core/analyzers/tsconfig.d.ts.map +1 -0
  16. package/build/core/analyzers/tsconfig.js +197 -0
  17. package/build/core/analyzers/tsconfig.js.map +1 -0
  18. package/build/core/analyzers/types.d.ts +176 -0
  19. package/build/core/analyzers/types.d.ts.map +1 -0
  20. package/build/core/analyzers/types.js +39 -0
  21. package/build/core/analyzers/types.js.map +1 -0
  22. package/build/core/analyzers/vite.d.ts +46 -0
  23. package/build/core/analyzers/vite.d.ts.map +1 -0
  24. package/build/core/analyzers/vite.js +211 -0
  25. package/build/core/analyzers/vite.js.map +1 -0
  26. package/build/core/enhancedProjectAnalyzer.d.ts +102 -0
  27. package/build/core/enhancedProjectAnalyzer.d.ts.map +1 -0
  28. package/build/core/enhancedProjectAnalyzer.js +312 -0
  29. package/build/core/enhancedProjectAnalyzer.js.map +1 -0
  30. package/build/core/errors.d.ts +84 -0
  31. package/build/core/errors.d.ts.map +1 -0
  32. package/build/core/errors.js +151 -0
  33. package/build/core/errors.js.map +1 -0
  34. package/build/core/index.d.ts +11 -0
  35. package/build/core/index.d.ts.map +1 -0
  36. package/build/core/index.js +14 -0
  37. package/build/core/index.js.map +1 -0
  38. package/build/core/logger.d.ts +91 -0
  39. package/build/core/logger.d.ts.map +1 -0
  40. package/build/core/logger.js +164 -0
  41. package/build/core/logger.js.map +1 -0
  42. package/build/core/mappings/index.d.ts +5 -0
  43. package/build/core/mappings/index.d.ts.map +1 -0
  44. package/build/core/mappings/index.js +5 -0
  45. package/build/core/mappings/index.js.map +1 -0
  46. package/build/core/mappings/scenarioMappings.d.ts +51 -0
  47. package/build/core/mappings/scenarioMappings.d.ts.map +1 -0
  48. package/build/core/mappings/scenarioMappings.js +105 -0
  49. package/build/core/mappings/scenarioMappings.js.map +1 -0
  50. package/build/core/matching/index.d.ts +8 -0
  51. package/build/core/matching/index.d.ts.map +1 -0
  52. package/build/core/matching/index.js +8 -0
  53. package/build/core/matching/index.js.map +1 -0
  54. package/build/core/matching/intentAnalyzer.d.ts +78 -0
  55. package/build/core/matching/intentAnalyzer.d.ts.map +1 -0
  56. package/build/core/matching/intentAnalyzer.js +255 -0
  57. package/build/core/matching/intentAnalyzer.js.map +1 -0
  58. package/build/core/matching/standardMatcher.d.ts +101 -0
  59. package/build/core/matching/standardMatcher.d.ts.map +1 -0
  60. package/build/core/matching/standardMatcher.js +299 -0
  61. package/build/core/matching/standardMatcher.js.map +1 -0
  62. package/build/core/matching/weights.d.ts +64 -0
  63. package/build/core/matching/weights.d.ts.map +1 -0
  64. package/build/core/matching/weights.js +334 -0
  65. package/build/core/matching/weights.js.map +1 -0
  66. package/build/core/scenarioDetector.d.ts +2 -0
  67. package/build/core/scenarioDetector.d.ts.map +1 -0
  68. package/build/core/scenarioDetector.js +2 -0
  69. package/build/core/scenarioDetector.js.map +1 -0
  70. package/build/core/templates/discovery.d.ts +41 -0
  71. package/build/core/templates/discovery.d.ts.map +1 -0
  72. package/build/core/templates/discovery.js +262 -0
  73. package/build/core/templates/discovery.js.map +1 -0
  74. package/build/core/templates/types.d.ts +80 -0
  75. package/build/core/templates/types.d.ts.map +1 -0
  76. package/build/core/templates/types.js +10 -0
  77. package/build/core/templates/types.js.map +1 -0
  78. package/build/core/types.d.ts +2 -0
  79. package/build/core/types.d.ts.map +1 -1
  80. package/build/core/types.js +4 -3
  81. package/build/core/types.js.map +1 -1
  82. package/build/index.js +136 -23
  83. package/build/index.js.map +1 -1
  84. package/build/tools/getSmartStandards.d.ts +0 -2
  85. package/build/tools/getSmartStandards.d.ts.map +1 -1
  86. package/build/tools/getSmartStandards.js +39 -28
  87. package/build/tools/getSmartStandards.js.map +1 -1
  88. package/build/tools/getStandardById.d.ts +42 -0
  89. package/build/tools/getStandardById.d.ts.map +1 -0
  90. package/build/tools/getStandardById.js +289 -0
  91. package/build/tools/getStandardById.js.map +1 -0
  92. package/build/tools/getTemplate.d.ts +37 -0
  93. package/build/tools/getTemplate.d.ts.map +1 -0
  94. package/build/tools/getTemplate.js +78 -0
  95. package/build/tools/getTemplate.js.map +1 -0
  96. package/build/tools/listTemplates.d.ts +41 -0
  97. package/build/tools/listTemplates.d.ts.map +1 -0
  98. package/build/tools/listTemplates.js +81 -0
  99. package/build/tools/listTemplates.js.map +1 -0
  100. package/build/tools/queryMappings.d.ts +55 -0
  101. package/build/tools/queryMappings.d.ts.map +1 -0
  102. package/build/tools/queryMappings.js +119 -0
  103. package/build/tools/queryMappings.js.map +1 -0
  104. package/package.json +25 -8
  105. package/src/core/autoInitializer.ts +0 -170
  106. package/src/core/codeValidator.ts +0 -357
  107. package/src/core/githubClient.ts +0 -64
  108. package/src/core/i18nDetector.ts +0 -357
  109. package/src/core/smartAgentMatcher.ts +0 -490
  110. package/src/core/standardsManager.ts +0 -769
  111. package/src/core/types.ts +0 -72
  112. package/src/index.ts +0 -519
  113. package/src/tools/analyzeProject.ts +0 -94
  114. package/src/tools/autoSetup.ts +0 -312
  115. package/src/tools/generateConfig.ts +0 -429
  116. package/src/tools/getCompactStandards.ts +0 -413
  117. package/src/tools/getSmartStandards.ts +0 -214
  118. package/src/tools/healthCheck.ts +0 -261
  119. package/src/tools/listAgents.ts +0 -91
  120. package/src/tools/matchAgents.ts +0 -80
  121. package/src/tools/usePreset.ts +0 -180
@@ -0,0 +1,312 @@
1
+ /**
2
+ * 增强版项目分析器(简化版)
3
+ *
4
+ * 设计理念:只提供项目信息给 AI,不做决策
5
+ * 整合模块化分析器,提供更精准的项目检测能力
6
+ *
7
+ * @module core/enhancedProjectAnalyzer
8
+ */
9
+ import * as fs from 'fs';
10
+ import * as path from 'path';
11
+ import * as crypto from 'crypto';
12
+ import glob from 'fast-glob';
13
+ import { toBasicFeatures } from './analyzers/types.js';
14
+ import { AnalyzerRegistry } from './analyzers/registry.js';
15
+ /**
16
+ * 增强版项目分析器
17
+ */
18
+ export class EnhancedProjectAnalyzer {
19
+ logger;
20
+ registry;
21
+ cache = new Map();
22
+ cacheMaxAge = 5 * 60 * 1000; // 5 分钟
23
+ constructor(logger) {
24
+ this.logger = logger;
25
+ this.registry = new AnalyzerRegistry();
26
+ }
27
+ /**
28
+ * 分析项目
29
+ */
30
+ async analyze(workspaceFolder, options = {}) {
31
+ const rootPath = workspaceFolder.uri.fsPath;
32
+ const cacheKey = rootPath;
33
+ this.log(`🔍 开始增强分析项目: ${workspaceFolder.name}`);
34
+ // 检查缓存
35
+ if (options.useCache !== false) {
36
+ const cached = this.getCachedResult(cacheKey, rootPath);
37
+ if (cached) {
38
+ this.log(`📦 使用缓存结果`);
39
+ return {
40
+ features: cached,
41
+ basicFeatures: toBasicFeatures(cached),
42
+ fromCache: true
43
+ };
44
+ }
45
+ }
46
+ // 执行分析
47
+ const features = await this.analyzeProjectFeatures(rootPath);
48
+ // 更新缓存
49
+ this.updateCache(cacheKey, rootPath, features);
50
+ this.log(`✅ 增强分析完成: ${features.projectType}`);
51
+ return {
52
+ features,
53
+ basicFeatures: toBasicFeatures(features),
54
+ fromCache: false
55
+ };
56
+ }
57
+ /**
58
+ * 分析项目特征
59
+ */
60
+ async analyzeProjectFeatures(rootPath) {
61
+ // 初始化特征
62
+ const features = {
63
+ frameworks: [],
64
+ languages: [],
65
+ tools: [],
66
+ keywords: [],
67
+ projectType: 'unknown'
68
+ };
69
+ // 1. 优先检测 Flutter 项目
70
+ const pubspecPath = path.join(rootPath, 'pubspec.yaml');
71
+ if (fs.existsSync(pubspecPath)) {
72
+ this.analyzeFlutterProject(pubspecPath, features);
73
+ features.projectType = 'flutter';
74
+ return features;
75
+ }
76
+ // 2. 分析 package.json
77
+ const packageJsonPath = path.join(rootPath, 'package.json');
78
+ if (fs.existsSync(packageJsonPath)) {
79
+ this.analyzePackageJson(packageJsonPath, features);
80
+ }
81
+ // 3. 分析项目结构
82
+ await this.analyzeProjectStructure(rootPath, features);
83
+ // 4. 推断项目类型
84
+ features.projectType = this.inferProjectType(features);
85
+ return features;
86
+ }
87
+ /**
88
+ * 分析 Flutter 项目
89
+ */
90
+ analyzeFlutterProject(pubspecPath, features) {
91
+ features.frameworks.push('Flutter');
92
+ features.languages.push('Dart');
93
+ try {
94
+ const content = fs.readFileSync(pubspecPath, 'utf-8');
95
+ // 状态管理
96
+ if (content.includes('provider:'))
97
+ features.keywords.push('state-management');
98
+ if (content.includes('riverpod:'))
99
+ features.keywords.push('state-management');
100
+ if (content.includes('bloc:') || content.includes('flutter_bloc:'))
101
+ features.keywords.push('state-management');
102
+ // 国际化
103
+ if (content.includes('flutter_localizations:') || content.includes('intl:')) {
104
+ features.keywords.push('i18n');
105
+ }
106
+ // 路由
107
+ if (content.includes('go_router:'))
108
+ features.tools.push('GoRouter');
109
+ // 网络
110
+ if (content.includes('dio:'))
111
+ features.tools.push('Dio');
112
+ }
113
+ catch (error) {
114
+ this.log(`解析 pubspec.yaml 失败: ${error}`);
115
+ }
116
+ }
117
+ /**
118
+ * 分析 package.json
119
+ */
120
+ analyzePackageJson(packageJsonPath, features) {
121
+ try {
122
+ const content = fs.readFileSync(packageJsonPath, 'utf-8');
123
+ const pkg = JSON.parse(content);
124
+ const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
125
+ // 前端框架
126
+ if (allDeps['vue'])
127
+ features.frameworks.push('Vue 3');
128
+ if (allDeps['react'])
129
+ features.frameworks.push('React');
130
+ if (allDeps['@angular/core'])
131
+ features.frameworks.push('Angular');
132
+ if (allDeps['next'])
133
+ features.frameworks.push('Next.js');
134
+ if (allDeps['nuxt'])
135
+ features.frameworks.push('Nuxt.js');
136
+ // UI 库
137
+ if (allDeps['element-plus'])
138
+ features.tools.push('Element Plus');
139
+ if (allDeps['ant-design-vue'])
140
+ features.tools.push('Ant Design Vue');
141
+ if (allDeps['antd'])
142
+ features.tools.push('Ant Design');
143
+ // 构建工具
144
+ if (allDeps['vite'])
145
+ features.tools.push('Vite');
146
+ if (allDeps['webpack'])
147
+ features.tools.push('Webpack');
148
+ // 语言
149
+ if (allDeps['typescript'])
150
+ features.languages.push('TypeScript');
151
+ // 状态管理
152
+ if (allDeps['pinia'])
153
+ features.keywords.push('state-management');
154
+ if (allDeps['vuex'])
155
+ features.keywords.push('state-management');
156
+ if (allDeps['redux'])
157
+ features.keywords.push('state-management');
158
+ // 国际化
159
+ if (allDeps['vue-i18n'] || allDeps['i18next'])
160
+ features.keywords.push('i18n');
161
+ // 其他工具
162
+ if (allDeps['@logicflow/core'])
163
+ features.tools.push('LogicFlow');
164
+ if (allDeps['axios'])
165
+ features.keywords.push('data-fetching');
166
+ }
167
+ catch (error) {
168
+ this.log(`解析 package.json 失败: ${error}`);
169
+ }
170
+ }
171
+ /**
172
+ * 分析项目结构
173
+ */
174
+ async analyzeProjectStructure(rootPath, features) {
175
+ try {
176
+ const patterns = ['**/*.{vue,tsx,ts,js,jsx}'];
177
+ const files = await glob(patterns, {
178
+ cwd: rootPath,
179
+ ignore: ['**/node_modules/**', '**/dist/**', '**/build/**'],
180
+ onlyFiles: true
181
+ });
182
+ // 检测文件类型
183
+ if (files.some(f => f.endsWith('.vue'))) {
184
+ if (!features.frameworks.includes('Vue 3') && !features.frameworks.includes('Vue')) {
185
+ features.frameworks.push('Vue');
186
+ }
187
+ }
188
+ if (files.some(f => f.endsWith('.tsx'))) {
189
+ if (!features.frameworks.includes('React')) {
190
+ features.frameworks.push('React');
191
+ }
192
+ }
193
+ if (files.some(f => f.endsWith('.ts') || f.endsWith('.tsx'))) {
194
+ if (!features.languages.includes('TypeScript')) {
195
+ features.languages.push('TypeScript');
196
+ }
197
+ }
198
+ // 检测国际化
199
+ if (files.some(f => f.includes('/locales/') || f.includes('/i18n/'))) {
200
+ if (!features.keywords.includes('i18n')) {
201
+ features.keywords.push('i18n');
202
+ }
203
+ }
204
+ }
205
+ catch (error) {
206
+ this.log(`分析项目结构失败: ${error}`);
207
+ }
208
+ }
209
+ /**
210
+ * 推断项目类型
211
+ */
212
+ inferProjectType(features) {
213
+ const frameworks = features.frameworks.map(f => f.toLowerCase());
214
+ if (frameworks.some(f => f.includes('nuxt')))
215
+ return 'nuxt-app';
216
+ if (frameworks.some(f => f.includes('vue')))
217
+ return 'vue-app';
218
+ if (frameworks.some(f => f.includes('next')))
219
+ return 'next-app';
220
+ if (frameworks.some(f => f.includes('react')))
221
+ return 'react-app';
222
+ if (frameworks.some(f => f.includes('flutter')))
223
+ return 'flutter-app';
224
+ if (features.languages.includes('TypeScript'))
225
+ return 'typescript-project';
226
+ return 'unknown';
227
+ }
228
+ // ==================== 缓存 ====================
229
+ /**
230
+ * 获取缓存结果
231
+ */
232
+ getCachedResult(cacheKey, rootPath) {
233
+ const entry = this.cache.get(cacheKey);
234
+ if (!entry)
235
+ return null;
236
+ // 检查过期
237
+ if (Date.now() - entry.timestamp > this.cacheMaxAge) {
238
+ this.cache.delete(cacheKey);
239
+ return null;
240
+ }
241
+ // 检查文件变化
242
+ if (this.checkFilesChanged(rootPath, entry.fileHashes)) {
243
+ this.cache.delete(cacheKey);
244
+ return null;
245
+ }
246
+ return entry.features;
247
+ }
248
+ /**
249
+ * 更新缓存
250
+ */
251
+ updateCache(cacheKey, rootPath, features) {
252
+ const fileHashes = this.calculateFileHashes(rootPath);
253
+ this.cache.set(cacheKey, {
254
+ features,
255
+ fileHashes,
256
+ timestamp: Date.now()
257
+ });
258
+ }
259
+ /**
260
+ * 计算关键文件哈希
261
+ */
262
+ calculateFileHashes(rootPath) {
263
+ const hashes = new Map();
264
+ const keyFiles = ['package.json', 'pubspec.yaml', 'tsconfig.json'];
265
+ for (const file of keyFiles) {
266
+ const filePath = path.join(rootPath, file);
267
+ if (fs.existsSync(filePath)) {
268
+ try {
269
+ const content = fs.readFileSync(filePath);
270
+ const hash = crypto.createHash('md5').update(content).digest('hex');
271
+ hashes.set(file, hash);
272
+ }
273
+ catch {
274
+ // 忽略读取错误
275
+ }
276
+ }
277
+ }
278
+ return hashes;
279
+ }
280
+ /**
281
+ * 检查文件是否变化
282
+ */
283
+ checkFilesChanged(rootPath, oldHashes) {
284
+ const newHashes = this.calculateFileHashes(rootPath);
285
+ if (newHashes.size !== oldHashes.size)
286
+ return true;
287
+ for (const [file, hash] of newHashes) {
288
+ if (oldHashes.get(file) !== hash)
289
+ return true;
290
+ }
291
+ return false;
292
+ }
293
+ /**
294
+ * 清除缓存
295
+ */
296
+ clearCache() {
297
+ this.cache.clear();
298
+ }
299
+ /**
300
+ * 日志
301
+ */
302
+ log(message) {
303
+ this.logger?.log(message);
304
+ }
305
+ }
306
+ /**
307
+ * 获取默认分析器实例
308
+ */
309
+ export function getDefaultAnalyzer(logger) {
310
+ return new EnhancedProjectAnalyzer(logger);
311
+ }
312
+ //# sourceMappingURL=enhancedProjectAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhancedProjectAnalyzer.js","sourceRoot":"","sources":["../../src/core/enhancedProjectAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * MCP 错误处理模块
3
+ *
4
+ * 提供统一的错误类型、错误码和错误响应格式
5
+ *
6
+ * @module core/errors
7
+ */
8
+ /**
9
+ * 错误码枚举
10
+ */
11
+ export declare enum ErrorCode {
12
+ UNKNOWN = 1000,
13
+ INVALID_PARAMETER = 1001,
14
+ NOT_FOUND = 1002,
15
+ PERMISSION_DENIED = 1003,
16
+ PROJECT_NOT_FOUND = 2001,
17
+ PROJECT_PARSE_ERROR = 2002,
18
+ CONFIG_READ_ERROR = 2003,
19
+ STANDARD_NOT_FOUND = 3001,
20
+ STANDARD_LOAD_ERROR = 3002,
21
+ PRESET_NOT_FOUND = 3003,
22
+ TEMPLATE_NOT_FOUND = 4001,
23
+ TEMPLATE_PARSE_ERROR = 4002,
24
+ AGENT_NOT_FOUND = 5001,
25
+ AGENT_LOAD_ERROR = 5002,
26
+ CONFIG_GENERATE_ERROR = 6001,
27
+ FILE_WRITE_ERROR = 6002
28
+ }
29
+ /**
30
+ * MCP 统一错误类
31
+ */
32
+ export declare class MCPError extends Error {
33
+ /** 错误码 */
34
+ readonly code: ErrorCode;
35
+ /** 原始错误 */
36
+ readonly cause?: Error;
37
+ /** 错误上下文 */
38
+ readonly context?: Record<string, unknown>;
39
+ constructor(code: ErrorCode, message?: string, options?: {
40
+ cause?: Error;
41
+ context?: Record<string, unknown>;
42
+ });
43
+ /**
44
+ * 转换为 JSON 格式(用于 MCP 响应)
45
+ */
46
+ toJSON(): Record<string, unknown>;
47
+ /**
48
+ * 转换为 MCP 响应格式
49
+ */
50
+ toResponse(): {
51
+ content: Array<{
52
+ type: string;
53
+ text: string;
54
+ }>;
55
+ };
56
+ }
57
+ /**
58
+ * 便捷错误创建函数
59
+ */
60
+ export declare const Errors: {
61
+ invalidParam: (param: string, reason?: string) => MCPError;
62
+ notFound: (resource: string, id?: string) => MCPError;
63
+ projectNotFound: (path: string) => MCPError;
64
+ standardNotFound: (id: string) => MCPError;
65
+ presetNotFound: (preset: string) => MCPError;
66
+ templateNotFound: (id: string) => MCPError;
67
+ agentNotFound: (id: string) => MCPError;
68
+ fileWriteError: (path: string, cause?: Error) => MCPError;
69
+ wrap: (error: unknown, code?: ErrorCode) => MCPError;
70
+ };
71
+ /**
72
+ * 安全执行函数,捕获错误并转换为 MCPError
73
+ */
74
+ export declare function safeExecute<T>(fn: () => Promise<T>, errorCode?: ErrorCode): Promise<T>;
75
+ /**
76
+ * 创建标准的错误响应
77
+ */
78
+ export declare function errorResponse(error: unknown): {
79
+ content: Array<{
80
+ type: string;
81
+ text: string;
82
+ }>;
83
+ };
84
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,oBAAY,SAAS;IAEjB,OAAO,OAAO;IACd,iBAAiB,OAAO;IACxB,SAAS,OAAO;IAChB,iBAAiB,OAAO;IAGxB,iBAAiB,OAAO;IACxB,mBAAmB,OAAO;IAC1B,iBAAiB,OAAO;IAGxB,kBAAkB,OAAO;IACzB,mBAAmB,OAAO;IAC1B,gBAAgB,OAAO;IAGvB,kBAAkB,OAAO;IACzB,oBAAoB,OAAO;IAG3B,eAAe,OAAO;IACtB,gBAAgB,OAAO;IAGvB,qBAAqB,OAAO;IAC5B,gBAAgB,OAAO;CAC1B;AA6BD;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAC/B,UAAU;IACV,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,WAAW;IACX,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,YAAY;IACZ,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAGvC,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC;IAcL;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASjC;;OAEG;IACH,UAAU,IAAI;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;CAQnE;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;0BACO,MAAM,WAAW,MAAM;yBAMxB,MAAM,OAAO,MAAM;4BAMhB,MAAM;2BAMP,MAAM;6BAMJ,MAAM;2BAMR,MAAM;wBAMT,MAAM;2BAMH,MAAM,UAAU,KAAK;kBAM9B,OAAO,SAAQ,SAAS;CAQzC,CAAC;AAEF;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,SAAS,GAAE,SAA6B,GACzC,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAgBhG"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * MCP 错误处理模块
3
+ *
4
+ * 提供统一的错误类型、错误码和错误响应格式
5
+ *
6
+ * @module core/errors
7
+ */
8
+ /**
9
+ * 错误码枚举
10
+ */
11
+ export var ErrorCode;
12
+ (function (ErrorCode) {
13
+ // 通用错误 1xxx
14
+ ErrorCode[ErrorCode["UNKNOWN"] = 1000] = "UNKNOWN";
15
+ ErrorCode[ErrorCode["INVALID_PARAMETER"] = 1001] = "INVALID_PARAMETER";
16
+ ErrorCode[ErrorCode["NOT_FOUND"] = 1002] = "NOT_FOUND";
17
+ ErrorCode[ErrorCode["PERMISSION_DENIED"] = 1003] = "PERMISSION_DENIED";
18
+ // 项目分析错误 2xxx
19
+ ErrorCode[ErrorCode["PROJECT_NOT_FOUND"] = 2001] = "PROJECT_NOT_FOUND";
20
+ ErrorCode[ErrorCode["PROJECT_PARSE_ERROR"] = 2002] = "PROJECT_PARSE_ERROR";
21
+ ErrorCode[ErrorCode["CONFIG_READ_ERROR"] = 2003] = "CONFIG_READ_ERROR";
22
+ // 规范相关错误 3xxx
23
+ ErrorCode[ErrorCode["STANDARD_NOT_FOUND"] = 3001] = "STANDARD_NOT_FOUND";
24
+ ErrorCode[ErrorCode["STANDARD_LOAD_ERROR"] = 3002] = "STANDARD_LOAD_ERROR";
25
+ ErrorCode[ErrorCode["PRESET_NOT_FOUND"] = 3003] = "PRESET_NOT_FOUND";
26
+ // 模板相关错误 4xxx
27
+ ErrorCode[ErrorCode["TEMPLATE_NOT_FOUND"] = 4001] = "TEMPLATE_NOT_FOUND";
28
+ ErrorCode[ErrorCode["TEMPLATE_PARSE_ERROR"] = 4002] = "TEMPLATE_PARSE_ERROR";
29
+ // Agent 相关错误 5xxx
30
+ ErrorCode[ErrorCode["AGENT_NOT_FOUND"] = 5001] = "AGENT_NOT_FOUND";
31
+ ErrorCode[ErrorCode["AGENT_LOAD_ERROR"] = 5002] = "AGENT_LOAD_ERROR";
32
+ // 配置生成错误 6xxx
33
+ ErrorCode[ErrorCode["CONFIG_GENERATE_ERROR"] = 6001] = "CONFIG_GENERATE_ERROR";
34
+ ErrorCode[ErrorCode["FILE_WRITE_ERROR"] = 6002] = "FILE_WRITE_ERROR";
35
+ })(ErrorCode || (ErrorCode = {}));
36
+ /**
37
+ * 错误码到消息的映射
38
+ */
39
+ const ERROR_MESSAGES = {
40
+ [ErrorCode.UNKNOWN]: '未知错误',
41
+ [ErrorCode.INVALID_PARAMETER]: '参数无效',
42
+ [ErrorCode.NOT_FOUND]: '资源未找到',
43
+ [ErrorCode.PERMISSION_DENIED]: '权限不足',
44
+ [ErrorCode.PROJECT_NOT_FOUND]: '项目目录不存在',
45
+ [ErrorCode.PROJECT_PARSE_ERROR]: '项目解析失败',
46
+ [ErrorCode.CONFIG_READ_ERROR]: '配置文件读取失败',
47
+ [ErrorCode.STANDARD_NOT_FOUND]: '规范未找到',
48
+ [ErrorCode.STANDARD_LOAD_ERROR]: '规范加载失败',
49
+ [ErrorCode.PRESET_NOT_FOUND]: '预设未找到',
50
+ [ErrorCode.TEMPLATE_NOT_FOUND]: '模板未找到',
51
+ [ErrorCode.TEMPLATE_PARSE_ERROR]: '模板解析失败',
52
+ [ErrorCode.AGENT_NOT_FOUND]: 'Agent 未找到',
53
+ [ErrorCode.AGENT_LOAD_ERROR]: 'Agent 加载失败',
54
+ [ErrorCode.CONFIG_GENERATE_ERROR]: '配置生成失败',
55
+ [ErrorCode.FILE_WRITE_ERROR]: '文件写入失败',
56
+ };
57
+ /**
58
+ * MCP 统一错误类
59
+ */
60
+ export class MCPError extends Error {
61
+ /** 错误码 */
62
+ code;
63
+ /** 原始错误 */
64
+ cause;
65
+ /** 错误上下文 */
66
+ context;
67
+ constructor(code, message, options) {
68
+ const defaultMessage = ERROR_MESSAGES[code] || '未知错误';
69
+ super(message || defaultMessage);
70
+ this.name = 'MCPError';
71
+ this.code = code;
72
+ this.cause = options?.cause;
73
+ this.context = options?.context;
74
+ // 保持正确的原型链
75
+ Object.setPrototypeOf(this, MCPError.prototype);
76
+ }
77
+ /**
78
+ * 转换为 JSON 格式(用于 MCP 响应)
79
+ */
80
+ toJSON() {
81
+ return {
82
+ error: true,
83
+ code: this.code,
84
+ message: this.message,
85
+ ...(this.context && { context: this.context }),
86
+ };
87
+ }
88
+ /**
89
+ * 转换为 MCP 响应格式
90
+ */
91
+ toResponse() {
92
+ return {
93
+ content: [{
94
+ type: 'text',
95
+ text: JSON.stringify(this.toJSON(), null, 2)
96
+ }]
97
+ };
98
+ }
99
+ }
100
+ /**
101
+ * 便捷错误创建函数
102
+ */
103
+ export const Errors = {
104
+ invalidParam: (param, reason) => new MCPError(ErrorCode.INVALID_PARAMETER, `参数 "${param}" 无效${reason ? `: ${reason}` : ''}`, { context: { param } }),
105
+ notFound: (resource, id) => new MCPError(ErrorCode.NOT_FOUND, `${resource}${id ? ` "${id}"` : ''} 未找到`, { context: { resource, id } }),
106
+ projectNotFound: (path) => new MCPError(ErrorCode.PROJECT_NOT_FOUND, `项目目录不存在: ${path}`, { context: { path } }),
107
+ standardNotFound: (id) => new MCPError(ErrorCode.STANDARD_NOT_FOUND, `规范 "${id}" 未找到`, { context: { standardId: id } }),
108
+ presetNotFound: (preset) => new MCPError(ErrorCode.PRESET_NOT_FOUND, `预设 "${preset}" 未找到`, { context: { preset } }),
109
+ templateNotFound: (id) => new MCPError(ErrorCode.TEMPLATE_NOT_FOUND, `模板 "${id}" 未找到`, { context: { templateId: id } }),
110
+ agentNotFound: (id) => new MCPError(ErrorCode.AGENT_NOT_FOUND, `Agent "${id}" 未找到`, { context: { agentId: id } }),
111
+ fileWriteError: (path, cause) => new MCPError(ErrorCode.FILE_WRITE_ERROR, `文件写入失败: ${path}`, { cause, context: { path } }),
112
+ wrap: (error, code = ErrorCode.UNKNOWN) => {
113
+ if (error instanceof MCPError)
114
+ return error;
115
+ const message = error instanceof Error ? error.message : String(error);
116
+ return new MCPError(code, message, {
117
+ cause: error instanceof Error ? error : undefined
118
+ });
119
+ }
120
+ };
121
+ /**
122
+ * 安全执行函数,捕获错误并转换为 MCPError
123
+ */
124
+ export async function safeExecute(fn, errorCode = ErrorCode.UNKNOWN) {
125
+ try {
126
+ return await fn();
127
+ }
128
+ catch (error) {
129
+ throw Errors.wrap(error, errorCode);
130
+ }
131
+ }
132
+ /**
133
+ * 创建标准的错误响应
134
+ */
135
+ export function errorResponse(error) {
136
+ if (error instanceof MCPError) {
137
+ return error.toResponse();
138
+ }
139
+ const message = error instanceof Error ? error.message : String(error);
140
+ return {
141
+ content: [{
142
+ type: 'text',
143
+ text: JSON.stringify({
144
+ error: true,
145
+ code: ErrorCode.UNKNOWN,
146
+ message
147
+ }, null, 2)
148
+ }]
149
+ };
150
+ }
151
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Core 模块统一导出
3
+ *
4
+ * 提供错误处理、日志、类型等核心功能的统一入口
5
+ *
6
+ * @module core/index
7
+ */
8
+ export { MCPError, ErrorCode, Errors, errorResponse, safeExecute } from './errors.js';
9
+ export { Logger, LogLevel, logger, createLogger, configureLogger, setLogLevel, createTimer } from './logger.js';
10
+ export { ProjectFeatures, AgentMetadata, GenerationResult, ConsoleLogger } from './types.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACH,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAa,EACb,WAAW,EACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EACH,MAAM,EACN,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,EACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EACH,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,aAAa,EAChB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Core 模块统一导出
3
+ *
4
+ * 提供错误处理、日志、类型等核心功能的统一入口
5
+ *
6
+ * @module core/index
7
+ */
8
+ // 错误处理
9
+ export { MCPError, ErrorCode, Errors, errorResponse, safeExecute } from './errors.js';
10
+ // 日志
11
+ export { Logger, LogLevel, logger, createLogger, configureLogger, setLogLevel, createTimer } from './logger.js';
12
+ // 类型(保持兼容性)
13
+ export { ConsoleLogger } from './types.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO;AACP,OAAO,EACH,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAa,EACb,WAAW,EACd,MAAM,aAAa,CAAC;AAErB,KAAK;AACL,OAAO,EACH,MAAM,EACN,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,EACd,MAAM,aAAa,CAAC;AAErB,YAAY;AACZ,OAAO,EAIH,aAAa,EAChB,MAAM,YAAY,CAAC"}