mta-mcp 1.9.1 → 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 (106) hide show
  1. package/README.md +140 -2
  2. package/bin/mta.cjs +43 -0
  3. package/dist/index.cjs +4784 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +1 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.js +4769 -0
  8. package/dist/index.js.map +1 -0
  9. package/package.json +44 -16
  10. package/build/core/agentTemplate.d.ts +0 -33
  11. package/build/core/agentTemplate.d.ts.map +0 -1
  12. package/build/core/agentTemplate.js +0 -158
  13. package/build/core/agentTemplate.js.map +0 -1
  14. package/build/core/autoInitializer.d.ts +0 -34
  15. package/build/core/autoInitializer.d.ts.map +0 -1
  16. package/build/core/autoInitializer.js +0 -145
  17. package/build/core/autoInitializer.js.map +0 -1
  18. package/build/core/codeValidator.d.ts +0 -82
  19. package/build/core/codeValidator.d.ts.map +0 -1
  20. package/build/core/codeValidator.js +0 -287
  21. package/build/core/codeValidator.js.map +0 -1
  22. package/build/core/githubClient.d.ts +0 -26
  23. package/build/core/githubClient.d.ts.map +0 -1
  24. package/build/core/githubClient.js +0 -60
  25. package/build/core/githubClient.js.map +0 -1
  26. package/build/core/i18nDetector.d.ts +0 -47
  27. package/build/core/i18nDetector.d.ts.map +0 -1
  28. package/build/core/i18nDetector.js +0 -314
  29. package/build/core/i18nDetector.js.map +0 -1
  30. package/build/core/projectContextManager.d.ts +0 -39
  31. package/build/core/projectContextManager.d.ts.map +0 -1
  32. package/build/core/projectContextManager.js +0 -147
  33. package/build/core/projectContextManager.js.map +0 -1
  34. package/build/core/smartAgentMatcher.d.ts +0 -51
  35. package/build/core/smartAgentMatcher.d.ts.map +0 -1
  36. package/build/core/smartAgentMatcher.js +0 -493
  37. package/build/core/smartAgentMatcher.js.map +0 -1
  38. package/build/core/standardsManager.d.ts +0 -130
  39. package/build/core/standardsManager.d.ts.map +0 -1
  40. package/build/core/standardsManager.js +0 -600
  41. package/build/core/standardsManager.js.map +0 -1
  42. package/build/core/types.d.ts +0 -55
  43. package/build/core/types.d.ts.map +0 -1
  44. package/build/core/types.js +0 -21
  45. package/build/core/types.js.map +0 -1
  46. package/build/index.d.ts +0 -3
  47. package/build/index.d.ts.map +0 -1
  48. package/build/index.js +0 -463
  49. package/build/index.js.map +0 -1
  50. package/build/tools/analyzeProject.d.ts +0 -12
  51. package/build/tools/analyzeProject.d.ts.map +0 -1
  52. package/build/tools/analyzeProject.js +0 -85
  53. package/build/tools/analyzeProject.js.map +0 -1
  54. package/build/tools/autoSetup.d.ts +0 -15
  55. package/build/tools/autoSetup.d.ts.map +0 -1
  56. package/build/tools/autoSetup.js +0 -291
  57. package/build/tools/autoSetup.js.map +0 -1
  58. package/build/tools/generateConfig.d.ts +0 -16
  59. package/build/tools/generateConfig.d.ts.map +0 -1
  60. package/build/tools/generateConfig.js +0 -379
  61. package/build/tools/generateConfig.js.map +0 -1
  62. package/build/tools/generateProjectAgent.d.ts +0 -15
  63. package/build/tools/generateProjectAgent.d.ts.map +0 -1
  64. package/build/tools/generateProjectAgent.js +0 -348
  65. package/build/tools/generateProjectAgent.js.map +0 -1
  66. package/build/tools/getCompactStandards.d.ts +0 -20
  67. package/build/tools/getCompactStandards.d.ts.map +0 -1
  68. package/build/tools/getCompactStandards.js +0 -367
  69. package/build/tools/getCompactStandards.js.map +0 -1
  70. package/build/tools/getSmartStandards.d.ts +0 -17
  71. package/build/tools/getSmartStandards.d.ts.map +0 -1
  72. package/build/tools/getSmartStandards.js +0 -190
  73. package/build/tools/getSmartStandards.js.map +0 -1
  74. package/build/tools/healthCheck.d.ts +0 -14
  75. package/build/tools/healthCheck.d.ts.map +0 -1
  76. package/build/tools/healthCheck.js +0 -237
  77. package/build/tools/healthCheck.js.map +0 -1
  78. package/build/tools/listAgents.d.ts +0 -10
  79. package/build/tools/listAgents.d.ts.map +0 -1
  80. package/build/tools/listAgents.js +0 -79
  81. package/build/tools/listAgents.js.map +0 -1
  82. package/build/tools/matchAgents.d.ts +0 -14
  83. package/build/tools/matchAgents.d.ts.map +0 -1
  84. package/build/tools/matchAgents.js +0 -70
  85. package/build/tools/matchAgents.js.map +0 -1
  86. package/build/tools/usePreset.d.ts +0 -23
  87. package/build/tools/usePreset.d.ts.map +0 -1
  88. package/build/tools/usePreset.js +0 -163
  89. package/build/tools/usePreset.js.map +0 -1
  90. package/src/core/autoInitializer.ts +0 -170
  91. package/src/core/codeValidator.ts +0 -357
  92. package/src/core/githubClient.ts +0 -64
  93. package/src/core/i18nDetector.ts +0 -357
  94. package/src/core/smartAgentMatcher.ts +0 -490
  95. package/src/core/standardsManager.ts +0 -769
  96. package/src/core/types.ts +0 -72
  97. package/src/index.ts +0 -519
  98. package/src/tools/analyzeProject.ts +0 -94
  99. package/src/tools/autoSetup.ts +0 -312
  100. package/src/tools/generateConfig.ts +0 -429
  101. package/src/tools/getCompactStandards.ts +0 -413
  102. package/src/tools/getSmartStandards.ts +0 -214
  103. package/src/tools/healthCheck.ts +0 -261
  104. package/src/tools/listAgents.ts +0 -91
  105. package/src/tools/matchAgents.ts +0 -80
  106. package/src/tools/usePreset.ts +0 -180
@@ -1,314 +0,0 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import glob from 'fast-glob';
4
- /**
5
- * 国际化检测器
6
- * 支持检测 Vue、Flutter、React 等项目的国际化配置
7
- */
8
- export class I18nDetector {
9
- /**
10
- * 检测项目的国际化配置
11
- */
12
- static async detect(projectPath) {
13
- // 检测 package.json(前端项目)
14
- const packageJsonPath = path.join(projectPath, 'package.json');
15
- if (fs.existsSync(packageJsonPath)) {
16
- return this.detectFrontendI18n(projectPath, packageJsonPath);
17
- }
18
- // 检测 pubspec.yaml(Flutter 项目)
19
- const pubspecPath = path.join(projectPath, 'pubspec.yaml');
20
- if (fs.existsSync(pubspecPath)) {
21
- return this.detectFlutterI18n(projectPath, pubspecPath);
22
- }
23
- // 未检测到国际化
24
- return {
25
- enabled: false,
26
- type: 'none',
27
- configFiles: [],
28
- messageFiles: [],
29
- method: '',
30
- example: '',
31
- tips: ['项目未配置国际化,建议添加中英双语支持']
32
- };
33
- }
34
- /**
35
- * 检测前端项目的国际化配置(Vue/React)
36
- */
37
- static detectFrontendI18n(projectPath, packageJsonPath) {
38
- const content = fs.readFileSync(packageJsonPath, 'utf-8');
39
- const packageJson = JSON.parse(content);
40
- const allDeps = {
41
- ...packageJson.dependencies,
42
- ...packageJson.devDependencies
43
- };
44
- // 检测 vue-i18n
45
- if (allDeps['vue-i18n']) {
46
- return this.detectVueI18n(projectPath);
47
- }
48
- // 检测 react-i18next
49
- if (allDeps['react-i18next'] || allDeps['i18next']) {
50
- return this.detectReactI18n(projectPath);
51
- }
52
- // 检测 react-intl
53
- if (allDeps['react-intl']) {
54
- return this.detectReactIntl(projectPath);
55
- }
56
- // 检测自定义国际化方案
57
- return this.detectCustomI18n(projectPath);
58
- }
59
- /**
60
- * 检测 vue-i18n 配置
61
- */
62
- static detectVueI18n(projectPath) {
63
- const configFiles = [];
64
- const messageFiles = [];
65
- // 查找配置文件
66
- const possibleConfigPaths = [
67
- 'src/i18n/index.ts',
68
- 'src/i18n/index.js',
69
- 'src/locales/index.ts',
70
- 'src/locales/index.js',
71
- 'i18n.config.ts',
72
- 'i18n.config.js'
73
- ];
74
- for (const configPath of possibleConfigPaths) {
75
- const fullPath = path.join(projectPath, configPath);
76
- if (fs.existsSync(fullPath)) {
77
- configFiles.push(configPath);
78
- }
79
- }
80
- // 查找消息文件
81
- const possibleMessageDirs = ['src/i18n', 'src/locales', 'src/lang'];
82
- for (const dir of possibleMessageDirs) {
83
- const fullDir = path.join(projectPath, dir);
84
- if (fs.existsSync(fullDir)) {
85
- const files = fs.readdirSync(fullDir);
86
- for (const file of files) {
87
- if (/^(zh|en|ja|ko|fr|de|es).*\.(ts|js|json)$/.test(file)) {
88
- messageFiles.push(path.join(dir, file));
89
- }
90
- }
91
- }
92
- }
93
- return {
94
- enabled: true,
95
- type: 'vue-i18n',
96
- configFiles,
97
- messageFiles,
98
- method: '$t()',
99
- example: `{{ $t('common.save') }} 或 :label="$t('user.username')"`,
100
- tips: [
101
- '使用命名空间格式:$t("common.save")',
102
- '所有按钮、标签、提示文字必须使用 $t()',
103
- '表单验证规则的 message 也需要国际化',
104
- '确保 zh-CN.ts 和 en-US.ts 中的键名完全一致'
105
- ]
106
- };
107
- }
108
- /**
109
- * 检测 react-i18next 配置
110
- */
111
- static detectReactI18n(projectPath) {
112
- const configFiles = [];
113
- const messageFiles = [];
114
- // 查找配置文件
115
- const possibleConfigPaths = [
116
- 'src/i18n.ts',
117
- 'src/i18n.js',
118
- 'src/i18n/config.ts',
119
- 'src/i18n/config.js'
120
- ];
121
- for (const configPath of possibleConfigPaths) {
122
- const fullPath = path.join(projectPath, configPath);
123
- if (fs.existsSync(fullPath)) {
124
- configFiles.push(configPath);
125
- }
126
- }
127
- // 查找翻译文件
128
- const possibleMessageDirs = ['public/locales', 'src/locales', 'src/i18n'];
129
- for (const dir of possibleMessageDirs) {
130
- const fullDir = path.join(projectPath, dir);
131
- if (fs.existsSync(fullDir)) {
132
- const pattern = path.join(fullDir, '**/*.json');
133
- try {
134
- const files = glob.sync(pattern);
135
- messageFiles.push(...files.map(f => path.relative(projectPath, f)));
136
- }
137
- catch (e) {
138
- // 忽略错误
139
- }
140
- }
141
- }
142
- return {
143
- enabled: true,
144
- type: 'react-i18n',
145
- configFiles,
146
- messageFiles,
147
- method: 't() 或 useTranslation()',
148
- example: `{t('common.save')} 或 const { t } = useTranslation()`,
149
- tips: [
150
- '使用 useTranslation() hook 获取 t 函数',
151
- '命名空间格式:t("common.save")',
152
- '所有文案必须通过 t() 函数包裹',
153
- '确保所有语言的翻译文件同步更新'
154
- ]
155
- };
156
- }
157
- /**
158
- * 检测 react-intl 配置
159
- */
160
- static detectReactIntl(projectPath) {
161
- return {
162
- enabled: true,
163
- type: 'react-i18n',
164
- configFiles: [],
165
- messageFiles: [],
166
- method: 'formatMessage() 或 FormattedMessage',
167
- example: `<FormattedMessage id="common.save" /> 或 intl.formatMessage({ id: 'common.save' })`,
168
- tips: [
169
- '使用 FormattedMessage 组件或 formatMessage 方法',
170
- '消息 ID 格式:common.save',
171
- '所有文案必须定义在消息文件中',
172
- '确保多语言文件的消息 ID 保持一致'
173
- ]
174
- };
175
- }
176
- /**
177
- * 检测自定义国际化方案
178
- */
179
- static detectCustomI18n(projectPath) {
180
- const messageFiles = [];
181
- // 查找可能的消息文件
182
- const possibleDirs = ['src/locales', 'src/i18n', 'src/lang'];
183
- for (const dir of possibleDirs) {
184
- const fullDir = path.join(projectPath, dir);
185
- if (fs.existsSync(fullDir)) {
186
- const files = fs.readdirSync(fullDir);
187
- for (const file of files) {
188
- if (/messages?\.(ts|js)$/i.test(file)) {
189
- messageFiles.push(path.join(dir, file));
190
- // 读取文件检测格式
191
- const content = fs.readFileSync(path.join(fullDir, file), 'utf-8');
192
- // 检测是否是双语数组格式 [英文, 中文]
193
- if (content.includes('[') && content.includes('],')) {
194
- return {
195
- enabled: true,
196
- type: 'custom',
197
- configFiles: [],
198
- messageFiles,
199
- method: '$t()',
200
- example: `{{ $t('保存') }} 或 :label="$t('用户名')"`,
201
- tips: [
202
- '使用直接键名格式:$t("保存")',
203
- '所有按钮、标签、提示文字必须使用 $t()',
204
- '表单验证规则的 message 也需要国际化',
205
- '新增文案时需要同时添加中英文翻译'
206
- ]
207
- };
208
- }
209
- }
210
- }
211
- }
212
- }
213
- // 未检测到国际化配置
214
- if (messageFiles.length > 0) {
215
- return {
216
- enabled: true,
217
- type: 'custom',
218
- configFiles: [],
219
- messageFiles,
220
- method: '$t()',
221
- example: '请查看项目中现有页面的使用方式',
222
- tips: [
223
- '检测到国际化文件,但格式未知',
224
- '请查看现有页面确认使用方式',
225
- '确保所有新增文案都遵循项目规范'
226
- ]
227
- };
228
- }
229
- return {
230
- enabled: false,
231
- type: 'none',
232
- configFiles: [],
233
- messageFiles: [],
234
- method: '',
235
- example: '',
236
- tips: [
237
- '⚠️ 项目未配置国际化',
238
- '建议添加中英双语支持',
239
- '推荐使用 vue-i18n(Vue)或 react-i18next(React)'
240
- ]
241
- };
242
- }
243
- /**
244
- * 检测 Flutter 项目的国际化配置
245
- */
246
- static detectFlutterI18n(projectPath, pubspecPath) {
247
- const content = fs.readFileSync(pubspecPath, 'utf-8');
248
- // 检测是否配置了 flutter_localizations
249
- if (content.includes('flutter_localizations')) {
250
- const messageFiles = [];
251
- // 查找 .arb 文件
252
- const l10nDir = path.join(projectPath, 'lib', 'l10n');
253
- if (fs.existsSync(l10nDir)) {
254
- const files = fs.readdirSync(l10nDir);
255
- for (const file of files) {
256
- if (file.endsWith('.arb')) {
257
- messageFiles.push(`lib/l10n/${file}`);
258
- }
259
- }
260
- }
261
- // 检查是否有 l10n.yaml 配置文件
262
- const l10nConfigPath = path.join(projectPath, 'l10n.yaml');
263
- const configFiles = fs.existsSync(l10nConfigPath) ? ['l10n.yaml'] : [];
264
- return {
265
- enabled: true,
266
- type: 'flutter-intl',
267
- configFiles,
268
- messageFiles,
269
- method: 'AppLocalizations',
270
- example: `AppLocalizations.of(context)!.save 或 S.of(context).save`,
271
- tips: [
272
- '使用 AppLocalizations.of(context)!.key',
273
- '所有文本必须在 .arb 文件中定义',
274
- '确保 app_en.arb 和 app_zh.arb 的键名完全一致',
275
- '运行 flutter gen-l10n 生成代码'
276
- ]
277
- };
278
- }
279
- // 检测 easy_localization
280
- if (content.includes('easy_localization')) {
281
- return {
282
- enabled: true,
283
- type: 'flutter-intl',
284
- configFiles: [],
285
- messageFiles: [],
286
- method: 'tr()',
287
- example: `'save'.tr() 或 Text('save'.tr())`,
288
- tips: [
289
- '使用 .tr() 扩展方法',
290
- '翻译文件通常在 assets/translations/',
291
- '确保所有语言文件的键名一致'
292
- ]
293
- };
294
- }
295
- // 未检测到国际化配置
296
- return {
297
- enabled: false,
298
- type: 'none',
299
- configFiles: [],
300
- messageFiles: [],
301
- method: '',
302
- example: '',
303
- tips: [
304
- '⚠️ Flutter 项目未配置国际化',
305
- '建议添加 flutter_localizations',
306
- '在 pubspec.yaml 中添加:',
307
- ' flutter_localizations:',
308
- ' sdk: flutter',
309
- ' intl: any'
310
- ]
311
- };
312
- }
313
- }
314
- //# sourceMappingURL=i18nDetector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18nDetector.js","sourceRoot":"","sources":["../../src/core/i18nDetector.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- /**
2
- * 项目上下文信息
3
- */
4
- export interface ProjectContext {
5
- name: string;
6
- type: string;
7
- techStack: string[];
8
- rootPath: string;
9
- }
10
- /**
11
- * 项目上下文管理器
12
- * 负责识别和加载项目配置
13
- */
14
- export declare class ProjectContextManager {
15
- private contextCache;
16
- /**
17
- * 从文件路径检测项目上下文
18
- * @param filePath 当前编辑的文件路径
19
- * @returns 项目上下文,如果未找到返回 null
20
- */
21
- detectProjectContext(filePath: string): ProjectContext | null;
22
- /**
23
- * 查找项目根目录
24
- */
25
- private findProjectRoot;
26
- /**
27
- * 解析 copilot-project.md 文件
28
- */
29
- private parseProjectConfig;
30
- /**
31
- * 从其他配置文件推断项目信息
32
- */
33
- private inferProjectContext;
34
- /**
35
- * 清除缓存
36
- */
37
- clearCache(): void;
38
- }
39
- //# sourceMappingURL=projectContextManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projectContextManager.d.ts","sourceRoot":"","sources":["../../src/core/projectContextManager.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,YAAY,CAA0C;IAE9D;;;;OAIG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IA8B7D;;OAEG;IACH,OAAO,CAAC,eAAe;IAkCvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgD3B;;OAEG;IACH,UAAU,IAAI,IAAI;CAGnB"}
@@ -1,147 +0,0 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- /**
4
- * 项目上下文管理器
5
- * 负责识别和加载项目配置
6
- */
7
- export class ProjectContextManager {
8
- contextCache = new Map();
9
- /**
10
- * 从文件路径检测项目上下文
11
- * @param filePath 当前编辑的文件路径
12
- * @returns 项目上下文,如果未找到返回 null
13
- */
14
- detectProjectContext(filePath) {
15
- const projectRoot = this.findProjectRoot(filePath);
16
- if (!projectRoot) {
17
- return null;
18
- }
19
- // 检查缓存
20
- if (this.contextCache.has(projectRoot)) {
21
- return this.contextCache.get(projectRoot);
22
- }
23
- // 尝试读取 copilot-project.md
24
- const projectConfigPath = path.join(projectRoot, '.github', 'copilot-project.md');
25
- if (fs.existsSync(projectConfigPath)) {
26
- const context = this.parseProjectConfig(projectConfigPath, projectRoot);
27
- if (context) {
28
- this.contextCache.set(projectRoot, context);
29
- return context;
30
- }
31
- }
32
- // 回退:从 package.json 或其他配置推断
33
- const fallbackContext = this.inferProjectContext(projectRoot);
34
- if (fallbackContext) {
35
- this.contextCache.set(projectRoot, fallbackContext);
36
- }
37
- return fallbackContext;
38
- }
39
- /**
40
- * 查找项目根目录
41
- */
42
- findProjectRoot(filePath) {
43
- let currentDir = path.dirname(filePath);
44
- const maxDepth = 10; // 最多向上查找10层
45
- let depth = 0;
46
- while (depth < maxDepth) {
47
- // 检查是否是项目根目录的标志
48
- const markers = [
49
- 'package.json',
50
- 'pubspec.yaml',
51
- '.git',
52
- 'go.mod',
53
- 'Cargo.toml'
54
- ];
55
- for (const marker of markers) {
56
- if (fs.existsSync(path.join(currentDir, marker))) {
57
- return currentDir;
58
- }
59
- }
60
- const parentDir = path.dirname(currentDir);
61
- if (parentDir === currentDir) {
62
- // 已到达根目录
63
- break;
64
- }
65
- currentDir = parentDir;
66
- depth++;
67
- }
68
- return null;
69
- }
70
- /**
71
- * 解析 copilot-project.md 文件
72
- */
73
- parseProjectConfig(configPath, rootPath) {
74
- try {
75
- const content = fs.readFileSync(configPath, 'utf-8');
76
- // 简单的正则解析
77
- const nameMatch = content.match(/项目名称[::]\s*(.+)/);
78
- const typeMatch = content.match(/项目类型[::]\s*(.+)/);
79
- const techStackMatch = content.match(/技术栈[::]\s*(.+)/);
80
- if (!nameMatch || !typeMatch) {
81
- return null;
82
- }
83
- return {
84
- name: nameMatch[1].trim(),
85
- type: typeMatch[1].trim(),
86
- techStack: techStackMatch ? techStackMatch[1].split(/[,,]/).map(s => s.trim()) : [],
87
- rootPath
88
- };
89
- }
90
- catch (error) {
91
- return null;
92
- }
93
- }
94
- /**
95
- * 从其他配置文件推断项目信息
96
- */
97
- inferProjectContext(rootPath) {
98
- const projectName = path.basename(rootPath);
99
- // 检查 package.json
100
- const packageJsonPath = path.join(rootPath, 'package.json');
101
- if (fs.existsSync(packageJsonPath)) {
102
- try {
103
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
104
- const techStack = [];
105
- // 检测 Vue
106
- if (packageJson.dependencies?.vue || packageJson.devDependencies?.vue) {
107
- techStack.push('vue');
108
- }
109
- // 检测 React
110
- if (packageJson.dependencies?.react || packageJson.devDependencies?.react) {
111
- techStack.push('react');
112
- }
113
- // 检测 TypeScript
114
- if (packageJson.devDependencies?.typescript) {
115
- techStack.push('typescript');
116
- }
117
- return {
118
- name: packageJson.name || projectName,
119
- type: techStack.includes('vue') ? 'vue' : techStack.includes('react') ? 'react' : 'javascript',
120
- techStack,
121
- rootPath
122
- };
123
- }
124
- catch (error) {
125
- // 解析失败,继续尝试其他方式
126
- }
127
- }
128
- // 检查 pubspec.yaml (Flutter)
129
- const pubspecPath = path.join(rootPath, 'pubspec.yaml');
130
- if (fs.existsSync(pubspecPath)) {
131
- return {
132
- name: projectName,
133
- type: 'flutter',
134
- techStack: ['flutter', 'dart'],
135
- rootPath
136
- };
137
- }
138
- return null;
139
- }
140
- /**
141
- * 清除缓存
142
- */
143
- clearCache() {
144
- this.contextCache.clear();
145
- }
146
- }
147
- //# sourceMappingURL=projectContextManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projectContextManager.js","sourceRoot":"","sources":["../../src/core/projectContextManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAY7B;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACxB,YAAY,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE9D;;;;OAIG;IACH,oBAAoB,CAAC,QAAgB;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;QACP,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;QAC7C,CAAC;QAED,0BAA0B;QAC1B,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAClF,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;YACxE,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC5C,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,QAAgB;QACtC,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,YAAY;QACjC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,OAAO,KAAK,GAAG,QAAQ,EAAE,CAAC;YACxB,gBAAgB;YAChB,MAAM,OAAO,GAAG;gBACd,cAAc;gBACd,cAAc;gBACd,MAAM;gBACN,QAAQ;gBACR,YAAY;aACb,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;oBACjD,OAAO,UAAU,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,SAAS;gBACT,MAAM;YACR,CAAC;YAED,UAAU,GAAG,SAAS,CAAC;YACvB,KAAK,EAAE,CAAC;QACV,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,UAAkB,EAAE,QAAgB;QAC7D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAErD,UAAU;YACV,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACnD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACnD,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAEvD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACzB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACzB,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;gBACnF,QAAQ;aACT,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,QAAgB;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE5C,kBAAkB;QAClB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC5D,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1E,MAAM,SAAS,GAAa,EAAE,CAAC;gBAE/B,SAAS;gBACT,IAAI,WAAW,CAAC,YAAY,EAAE,GAAG,IAAI,WAAW,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC;oBACtE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC;gBACD,WAAW;gBACX,IAAI,WAAW,CAAC,YAAY,EAAE,KAAK,IAAI,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;oBAC1E,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC;gBACD,gBAAgB;gBAChB,IAAI,WAAW,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC;oBAC5C,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC/B,CAAC;gBAED,OAAO;oBACL,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,WAAW;oBACrC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY;oBAC9F,SAAS;oBACT,QAAQ;iBACT,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gBAAgB;YAClB,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACxD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;gBAC9B,QAAQ;aACT,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF"}
@@ -1,51 +0,0 @@
1
- import { ProjectFeatures, AgentMetadata, Logger } from './types.js';
2
- /**
3
- * 工作区文件夹接口(简化版)
4
- */
5
- interface WorkspaceFolder {
6
- uri: {
7
- fsPath: string;
8
- };
9
- name: string;
10
- }
11
- /**
12
- * 智能 Agent 匹配器
13
- * 根据项目特征自动推荐和应用合适的 Agents
14
- */
15
- export declare class SmartAgentMatcher {
16
- private logger?;
17
- constructor(logger?: Logger | undefined);
18
- /**
19
- * 分析项目特征
20
- */
21
- analyzeProject(workspaceFolder: WorkspaceFolder): Promise<ProjectFeatures>;
22
- /**
23
- * 分析 package.json
24
- */
25
- private analyzePackageJson;
26
- /**
27
- * 分析 pubspec.yaml (Flutter 项目)
28
- */
29
- private analyzePubspecYaml;
30
- /**
31
- * 分析文件结构
32
- */
33
- private analyzeFileStructure;
34
- /**
35
- * 匹配 Agents
36
- */
37
- matchAgents(features: ProjectFeatures, availableAgents: AgentMetadata[]): AgentMetadata[];
38
- /**
39
- * 计算匹配分数
40
- */
41
- private calculateMatchScore;
42
- /**
43
- * 解析 Agent 元数据
44
- */
45
- parseAgentMetadata(filePath: string, content: string): AgentMetadata;
46
- private mergeFeatures;
47
- private inferProjectType;
48
- private log;
49
- }
50
- export {};
51
- //# sourceMappingURL=smartAgentMatcher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smartAgentMatcher.d.ts","sourceRoot":"","sources":["../../src/core/smartAgentMatcher.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpE;;GAEG;AACH,UAAU,eAAe;IACrB,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IACd,OAAO,CAAC,MAAM,CAAC;gBAAP,MAAM,CAAC,EAAE,MAAM,YAAA;IAEnC;;OAEG;IACG,cAAc,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IA0ChF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsJ1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6C1B;;OAEG;YACW,oBAAoB;IA4DlC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE;IAWzF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiD3B;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa;IAmDpE,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,GAAG;CAGd"}