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,237 +0,0 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import { fileURLToPath } from 'url';
4
- import { ConsoleLogger } from '../core/types.js';
5
- // ES 模块中获取 __dirname
6
- const __filename = fileURLToPath(import.meta.url);
7
- const __dirname = path.dirname(__filename);
8
- /**
9
- * 健康检查工具
10
- * 诊断 MCP 服务器配置和运行状态
11
- */
12
- export async function healthCheck(args) {
13
- const logger = new ConsoleLogger();
14
- const verbose = args.verbose ?? false;
15
- try {
16
- const checks = {
17
- server: { status: 'unknown', details: [] },
18
- configuration: { status: 'unknown', details: [] },
19
- dependencies: { status: 'unknown', details: [] },
20
- standards: { status: 'unknown', details: [] },
21
- workspace: { status: 'unknown', details: [] }
22
- };
23
- // Check 1: 服务器运行状态
24
- logger.log('🔍 检查服务器状态...');
25
- try {
26
- checks.server.status = 'healthy';
27
- checks.server.details.push('✅ MCP 服务器正在运行');
28
- checks.server.details.push(`📍 进程 PID: ${process.pid}`);
29
- checks.server.details.push(`🕐 运行时间: ${Math.floor(process.uptime())}秒`);
30
- }
31
- catch {
32
- checks.server.status = 'error';
33
- checks.server.details.push('❌ 服务器未响应');
34
- }
35
- // Check 2: 配置文件
36
- logger.log('🔍 检查配置文件...');
37
- const workspacePath = args.workspacePath || process.cwd();
38
- const vscodeDir = path.join(workspacePath, '.vscode');
39
- if (fs.existsSync(vscodeDir)) {
40
- checks.workspace.status = 'healthy';
41
- checks.workspace.details.push(`✅ 工作区路径: ${workspacePath}`);
42
- // mcp.json
43
- const mcpJsonPath = path.join(vscodeDir, 'mcp.json');
44
- if (fs.existsSync(mcpJsonPath)) {
45
- try {
46
- const config = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));
47
- // 检查新格式 (servers) 和旧格式 (mcpServers)
48
- const hasNewFormat = config.servers?.['copilot-prompts'];
49
- const hasOldFormat = config.mcpServers?.['copilot-prompts'];
50
- if (hasNewFormat) {
51
- checks.configuration.status = 'healthy';
52
- checks.configuration.details.push('✅ mcp.json 配置正确 (使用新格式)');
53
- const serverConfig = config.servers['copilot-prompts'];
54
- if (verbose) {
55
- checks.configuration.details.push(` Command: ${serverConfig.command}`);
56
- checks.configuration.details.push(` Args: ${serverConfig.args?.join(' ')}`);
57
- checks.configuration.details.push(` AutoStart: ${serverConfig.autoStart ?? 'undefined'}`);
58
- checks.configuration.details.push(` Env: ${JSON.stringify(serverConfig.env ?? {})}`);
59
- }
60
- // 检查是否包含推荐字段
61
- if (!serverConfig.env) {
62
- checks.configuration.details.push('💡 建议: 添加 "env": {} 字段');
63
- }
64
- if (!serverConfig.autoStart) {
65
- checks.configuration.details.push('💡 建议: 添加 "autoStart": true 字段');
66
- }
67
- }
68
- else if (hasOldFormat) {
69
- checks.configuration.status = 'warning';
70
- checks.configuration.details.push('⚠️ mcp.json 使用旧格式 (mcpServers)');
71
- checks.configuration.details.push('💡 建议: 运行 auto_setup 工具升级到新格式 (servers)');
72
- if (verbose) {
73
- const serverConfig = config.mcpServers['copilot-prompts'];
74
- checks.configuration.details.push(` Command: ${serverConfig.command}`);
75
- checks.configuration.details.push(` Args: ${serverConfig.args?.join(' ')}`);
76
- }
77
- }
78
- else {
79
- checks.configuration.status = 'warning';
80
- checks.configuration.details.push('⚠️ mcp.json 缺少 copilot-prompts 配置');
81
- checks.configuration.details.push('💡 建议: 运行 auto_setup 工具添加配置');
82
- }
83
- }
84
- catch (error) {
85
- checks.configuration.status = 'error';
86
- checks.configuration.details.push(`❌ mcp.json 格式错误: ${error}`);
87
- checks.configuration.details.push('💡 修复: 运行 auto_setup 工具重新生成配置');
88
- }
89
- }
90
- else {
91
- checks.configuration.status = 'warning';
92
- checks.configuration.details.push('⚠️ mcp.json 不存在');
93
- checks.configuration.details.push('💡 建议: 运行 auto_setup 工具自动配置');
94
- }
95
- // settings.json
96
- const settingsPath = path.join(vscodeDir, 'settings.json');
97
- if (fs.existsSync(settingsPath)) {
98
- try {
99
- const settings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
100
- if (settings['github.copilot.chat.mcp.enabled'] === true) {
101
- checks.configuration.details.push('✅ VS Code MCP 已启用');
102
- }
103
- else {
104
- checks.configuration.details.push('⚠️ VS Code MCP 未启用');
105
- }
106
- }
107
- catch {
108
- checks.configuration.details.push('⚠️ settings.json 格式错误');
109
- }
110
- }
111
- }
112
- else {
113
- checks.workspace.status = 'error';
114
- checks.workspace.details.push('❌ .vscode 目录不存在');
115
- }
116
- // Check 3: 依赖检查
117
- logger.log('🔍 检查依赖...');
118
- const serverRoot = path.resolve(__dirname, '../..');
119
- const packageJsonPath = path.join(serverRoot, 'package.json');
120
- if (fs.existsSync(packageJsonPath)) {
121
- try {
122
- const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
123
- checks.dependencies.status = 'healthy';
124
- checks.dependencies.details.push(`✅ 服务器版本: ${pkg.version}`);
125
- if (verbose && pkg.dependencies) {
126
- const deps = Object.entries(pkg.dependencies).slice(0, 3);
127
- deps.forEach(([name, version]) => {
128
- checks.dependencies.details.push(` ${name}: ${version}`);
129
- });
130
- }
131
- // 检查关键依赖
132
- const requiredDeps = ['@modelcontextprotocol/sdk'];
133
- const missing = requiredDeps.filter(dep => !pkg.dependencies?.[dep]);
134
- if (missing.length > 0) {
135
- checks.dependencies.status = 'error';
136
- checks.dependencies.details.push(`❌ 缺少依赖: ${missing.join(', ')}`);
137
- }
138
- }
139
- catch {
140
- checks.dependencies.status = 'error';
141
- checks.dependencies.details.push('❌ 无法读取 package.json');
142
- }
143
- }
144
- // Check 4: 规范文件
145
- logger.log('🔍 检查规范文件...');
146
- const standardsDir = path.join(serverRoot, 'standards');
147
- if (fs.existsSync(standardsDir)) {
148
- const categories = ['core', 'frameworks', 'libraries', 'patterns'];
149
- const foundStandards = [];
150
- for (const category of categories) {
151
- const categoryPath = path.join(standardsDir, category);
152
- if (fs.existsSync(categoryPath)) {
153
- const files = fs.readdirSync(categoryPath).filter(f => f.endsWith('.md'));
154
- foundStandards.push(...files.map(f => `${category}/${f}`));
155
- }
156
- }
157
- if (foundStandards.length > 0) {
158
- checks.standards.status = 'healthy';
159
- checks.standards.details.push(`✅ 找到 ${foundStandards.length} 个规范文件`);
160
- if (verbose) {
161
- foundStandards.slice(0, 5).forEach(s => {
162
- checks.standards.details.push(` 📄 ${s}`);
163
- });
164
- if (foundStandards.length > 5) {
165
- checks.standards.details.push(` ... 还有 ${foundStandards.length - 5} 个文件`);
166
- }
167
- }
168
- }
169
- else {
170
- checks.standards.status = 'warning';
171
- checks.standards.details.push('⚠️ 未找到规范文件');
172
- }
173
- }
174
- else {
175
- checks.standards.status = 'error';
176
- checks.standards.details.push('❌ standards 目录不存在');
177
- }
178
- // 生成总体健康状态
179
- const allStatuses = Object.values(checks).map(c => c.status);
180
- const overallStatus = allStatuses.includes('error') ? 'error'
181
- : allStatuses.includes('warning') ? 'warning'
182
- : 'healthy';
183
- const statusEmoji = {
184
- healthy: '✅',
185
- warning: '⚠️',
186
- error: '❌',
187
- unknown: '❓'
188
- };
189
- logger.log(`${statusEmoji[overallStatus]} 健康检查完成`);
190
- return {
191
- content: [{
192
- type: 'text',
193
- text: JSON.stringify({
194
- success: true,
195
- overallStatus,
196
- summary: `${statusEmoji[overallStatus]} MCP 服务器状态: ${overallStatus}`,
197
- checks,
198
- recommendations: generateRecommendations(checks)
199
- }, null, 2)
200
- }]
201
- };
202
- }
203
- catch (error) {
204
- logger.error(`健康检查失败: ${error}`);
205
- return {
206
- content: [{
207
- type: 'text',
208
- text: JSON.stringify({
209
- error: error instanceof Error ? error.message : String(error)
210
- }, null, 2)
211
- }]
212
- };
213
- }
214
- }
215
- /**
216
- * 根据检查结果生成建议
217
- */
218
- function generateRecommendations(checks) {
219
- const recommendations = [];
220
- if (checks.configuration.status !== 'healthy') {
221
- recommendations.push('🔧 运行 auto_setup 工具自动配置 MCP 服务器');
222
- }
223
- if (checks.workspace.status === 'error') {
224
- recommendations.push('📁 确保在正确的工作区目录中运行');
225
- }
226
- if (checks.dependencies.status === 'error') {
227
- recommendations.push('📦 运行 npm install 安装依赖');
228
- }
229
- if (checks.standards.status !== 'healthy') {
230
- recommendations.push('📚 检查 standards 目录是否存在规范文件');
231
- }
232
- if (recommendations.length === 0) {
233
- recommendations.push('🎉 一切正常!您可以开始使用 MCP 服务器了');
234
- }
235
- return recommendations;
236
- }
237
- //# sourceMappingURL=healthCheck.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"healthCheck.js","sourceRoot":"","sources":["../../src/tools/healthCheck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAqB;AACrB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAGjC;IAGG,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;IAEtC,IAAI,CAAC;QACD,MAAM,MAAM,GAAG;YACX,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAc,EAAE;YACtD,aAAa,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAc,EAAE;YAC7D,YAAY,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAc,EAAE;YAC5D,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAc,EAAE;YACzD,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAc,EAAE;SAC5D,CAAC;QAEF,mBAAmB;QACnB,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC5B,IAAI,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QAED,gBAAgB;QAChB,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAEtD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;YACpC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC,CAAC;YAE3D,WAAW;YACX,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACrD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;oBAEjE,oCAAoC;oBACpC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC;oBACzD,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,iBAAiB,CAAC,CAAC;oBAE5D,IAAI,YAAY,EAAE,CAAC;wBACf,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC;wBACxC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;wBAE7D,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;wBACvD,IAAI,OAAO,EAAE,CAAC;4BACV,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;4BACxE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;4BAC7E,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,YAAY,CAAC,SAAS,IAAI,WAAW,EAAE,CAAC,CAAC;4BAC3F,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;wBAC1F,CAAC;wBAED,aAAa;wBACb,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;4BACpB,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;wBAChE,CAAC;wBACD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;4BAC1B,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;wBACxE,CAAC;oBACL,CAAC;yBAAM,IAAI,YAAY,EAAE,CAAC;wBACtB,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC;wBACxC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;wBACrE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;wBAE7E,IAAI,OAAO,EAAE,CAAC;4BACV,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;4BAC1D,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;4BACxE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACjF,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACJ,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC;wBACxC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;wBACxE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;oBACrE,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC;oBACtC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;oBAC/D,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBACvE,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC;gBACxC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACtD,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACrE,CAAC;YAED,gBAAgB;YAChB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAC3D,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;oBACpE,IAAI,QAAQ,CAAC,iCAAiC,CAAC,KAAK,IAAI,EAAE,CAAC;wBACvD,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;oBAC3D,CAAC;yBAAM,CAAC;wBACJ,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBAC7D,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACL,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBAChE,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC;YAClC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrD,CAAC;QAED,gBAAgB;QAChB,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAE9D,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;gBAClE,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC;gBACvC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAE5D,IAAI,OAAO,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;oBAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;wBAC7B,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;oBAC9D,CAAC,CAAC,CAAC;gBACP,CAAC;gBAED,SAAS;gBACT,MAAM,YAAY,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC;oBACrC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtE,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC;gBACrC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;QAED,gBAAgB;QAChB,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAExD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;YACnE,MAAM,cAAc,GAAa,EAAE,CAAC;YAEpC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBACvD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC9B,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC1E,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/D,CAAC;YACL,CAAC;YAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;gBACpC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,cAAc,CAAC,MAAM,QAAQ,CAAC,CAAC;gBACrE,IAAI,OAAO,EAAE,CAAC;oBACV,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACnC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;oBACH,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,cAAc,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC/E,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;gBACpC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC;YAClC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACvD,CAAC;QAED,WAAW;QACX,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;YACzC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7C,CAAC,CAAC,SAAS,CAAC;QAEhC,MAAM,WAAW,GAAG;YAChB,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,GAAG;SACf,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAEnD,OAAO;YACH,OAAO,EAAE,CAAC;oBACN,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACjB,OAAO,EAAE,IAAI;wBACb,aAAa;wBACb,OAAO,EAAE,GAAG,WAAW,CAAC,aAAa,CAAC,eAAe,aAAa,EAAE;wBACpE,MAAM;wBACN,eAAe,EAAE,uBAAuB,CAAC,MAAM,CAAC;qBACnD,EAAE,IAAI,EAAE,CAAC,CAAC;iBACd,CAAC;SACL,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;QACjC,OAAO;YACH,OAAO,EAAE,CAAC;oBACN,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAChE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACd,CAAC;SACL,CAAC;IACN,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAW;IACxC,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5C,eAAe,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACtC,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACzC,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACxC,eAAe,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,eAAe,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,eAAe,CAAC;AAC3B,CAAC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * 列出所有可用的 Agents
3
- */
4
- export declare function listAvailableAgents(): Promise<{
5
- content: Array<{
6
- type: string;
7
- text: string;
8
- }>;
9
- }>;
10
- //# sourceMappingURL=listAgents.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"listAgents.d.ts","sourceRoot":"","sources":["../../src/tools/listAgents.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IACjD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD,CAAC,CAkFD"}
@@ -1,79 +0,0 @@
1
- import { GitHubClient } from '../core/githubClient.js';
2
- import { ConsoleLogger } from '../core/types.js';
3
- /**
4
- * 列出所有可用的 Agents
5
- */
6
- export async function listAvailableAgents() {
7
- const logger = new ConsoleLogger();
8
- try {
9
- const githubClient = new GitHubClient(logger);
10
- logger.log('正在从 GitHub 获取 Agents 列表...');
11
- const agentFiles = await githubClient.listDirectoryFiles('agents');
12
- const agents = agentFiles.filter(f => f.name.endsWith('.agent.md'));
13
- // 获取每个 Agent 的基本信息
14
- const agentList = await Promise.all(agents.map(async (file) => {
15
- try {
16
- const content = await githubClient.fetchFileContent(file.path);
17
- // 简单解析标题和描述
18
- const lines = content.split('\n');
19
- let title = file.name.replace('.agent.md', '');
20
- let description = '';
21
- // 尝试从 frontmatter 提取
22
- if (lines[0] === '---') {
23
- const endIndex = lines.slice(1).findIndex(l => l === '---');
24
- if (endIndex > 0) {
25
- const frontmatter = lines.slice(1, endIndex + 1).join('\n');
26
- const descMatch = frontmatter.match(/description:\s*['"](.+)['"]/);
27
- if (descMatch) {
28
- description = descMatch[1];
29
- }
30
- }
31
- }
32
- // 提取标题(第一个 # 开头的行)
33
- const titleLine = lines.find(l => l.startsWith('# '));
34
- if (titleLine) {
35
- title = titleLine.replace('# ', '').trim();
36
- }
37
- return {
38
- id: file.name.replace('.agent.md', ''),
39
- name: file.name,
40
- title,
41
- description: description || '暂无描述',
42
- path: file.path
43
- };
44
- }
45
- catch (error) {
46
- logger.error(`解析 ${file.name} 失败: ${error}`);
47
- return null;
48
- }
49
- }));
50
- const validAgents = agentList.filter(a => a !== null);
51
- return {
52
- content: [{
53
- type: 'text',
54
- text: JSON.stringify({
55
- success: true,
56
- total: validAgents.length,
57
- agents: validAgents,
58
- categories: {
59
- general: validAgents.filter(a => a.path.includes('common/')).length,
60
- frameworks: validAgents.filter(a => a.path.includes('vue/') || a.path.includes('react/')).length,
61
- agents: validAgents.filter(a => a.path.includes('agents/')).length
62
- }
63
- }, null, 2)
64
- }]
65
- };
66
- }
67
- catch (error) {
68
- logger.error(`获取 Agents 列表失败: ${error}`);
69
- return {
70
- content: [{
71
- type: 'text',
72
- text: JSON.stringify({
73
- error: error instanceof Error ? error.message : String(error)
74
- }, null, 2)
75
- }]
76
- };
77
- }
78
- }
79
- //# sourceMappingURL=listAgents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"listAgents.js","sourceRoot":"","sources":["../../src/tools/listAgents.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { ProjectFeatures } from '../core/types.js';
2
- /**
3
- * 匹配 Agents 工具
4
- */
5
- export declare function matchAgents(args: {
6
- projectFeatures: ProjectFeatures;
7
- limit?: number;
8
- }): Promise<{
9
- content: Array<{
10
- type: string;
11
- text: string;
12
- }>;
13
- }>;
14
- //# sourceMappingURL=matchAgents.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matchAgents.d.ts","sourceRoot":"","sources":["../../src/tools/matchAgents.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAgC,MAAM,kBAAkB,CAAC;AAEjF;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACpC,eAAe,EAAE,eAAe,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC;IACR,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD,CAAC,CAmED"}
@@ -1,70 +0,0 @@
1
- import { GitHubClient } from '../core/githubClient.js';
2
- import { SmartAgentMatcher } from '../core/smartAgentMatcher.js';
3
- import { ConsoleLogger } from '../core/types.js';
4
- /**
5
- * 匹配 Agents 工具
6
- */
7
- export async function matchAgents(args) {
8
- const logger = new ConsoleLogger();
9
- try {
10
- const matcher = new SmartAgentMatcher(logger);
11
- const githubClient = new GitHubClient(logger);
12
- logger.log('正在从 GitHub 获取可用 Agents...');
13
- // 获取所有可用的 Agents
14
- const availableAgents = [];
15
- try {
16
- const agentFiles = await githubClient.listDirectoryFiles('agents');
17
- for (const file of agentFiles) {
18
- if (file.name.endsWith('.agent.md')) {
19
- try {
20
- const content = await githubClient.fetchFileContent(file.path);
21
- const metadata = matcher.parseAgentMetadata(file.path, content);
22
- availableAgents.push(metadata);
23
- }
24
- catch (error) {
25
- logger.error(`解析 ${file.name} 失败: ${error}`);
26
- }
27
- }
28
- }
29
- }
30
- catch (error) {
31
- logger.error(`获取 Agents 失败: ${error}`);
32
- }
33
- // 匹配 Agents
34
- const matchedAgents = matcher.matchAgents(args.projectFeatures, availableAgents);
35
- // 限制返回数量
36
- const limit = args.limit || 10;
37
- const topAgents = matchedAgents.slice(0, limit);
38
- return {
39
- content: [{
40
- type: 'text',
41
- text: JSON.stringify({
42
- success: true,
43
- totalAvailable: availableAgents.length,
44
- matched: topAgents.length,
45
- agents: topAgents.map(agent => ({
46
- id: agent.id,
47
- title: agent.title,
48
- description: agent.description,
49
- score: agent.score,
50
- tags: agent.tags,
51
- path: agent.path
52
- })),
53
- recommendations: topAgents.slice(0, 5).map(a => a.title)
54
- }, null, 2)
55
- }]
56
- };
57
- }
58
- catch (error) {
59
- logger.error(`匹配 Agents 失败: ${error}`);
60
- return {
61
- content: [{
62
- type: 'text',
63
- text: JSON.stringify({
64
- error: error instanceof Error ? error.message : String(error)
65
- }, null, 2)
66
- }]
67
- };
68
- }
69
- }
70
- //# sourceMappingURL=matchAgents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matchAgents.js","sourceRoot":"","sources":["../../src/tools/matchAgents.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * 预设场景快捷工具
3
- * 使用预定义的场景配置快速获取规范
4
- */
5
- export declare function usePreset(args: {
6
- preset: string;
7
- customImports?: string[];
8
- }): Promise<{
9
- content: Array<{
10
- type: string;
11
- text: string;
12
- }>;
13
- }>;
14
- /**
15
- * 列出所有可用预设
16
- */
17
- export declare function listPresets(): Promise<{
18
- content: Array<{
19
- type: string;
20
- text: string;
21
- }>;
22
- }>;
23
- //# sourceMappingURL=usePreset.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePreset.d.ts","sourceRoot":"","sources":["../../src/tools/usePreset.ts"],"names":[],"mappings":"AAmEA;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,GAAG,OAAO,CAAC;IACR,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD,CAAC,CA2ED;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC;IACzC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD,CAAC,CAqBD"}
@@ -1,163 +0,0 @@
1
- import { StandardsManager } from '../core/standardsManager.js';
2
- import { ConsoleLogger } from '../core/types.js';
3
- /**
4
- * 预设场景定义
5
- */
6
- const PRESETS = {
7
- 'vue3-component': {
8
- name: 'Vue 3 组件开发',
9
- fileType: 'vue',
10
- imports: ['vue', 'element-plus'],
11
- scenario: '组件开发',
12
- description: '开发 Vue 3 单文件组件,包含 Composition API 和 Element Plus'
13
- },
14
- 'vue3-form': {
15
- name: 'Vue 3 表单开发',
16
- fileType: 'vue',
17
- imports: ['vue', 'element-plus'],
18
- scenario: '表单组件',
19
- description: 'Element Plus 表单组件开发,包含验证和国际化'
20
- },
21
- 'vue3-table': {
22
- name: 'Vue 3 表格开发',
23
- fileType: 'vue',
24
- imports: ['vue', 'element-plus'],
25
- scenario: '表格组件',
26
- description: 'Element Plus 表格组件开发,包含分页和操作'
27
- },
28
- 'pinia-store': {
29
- name: 'Pinia 状态管理',
30
- fileType: 'ts',
31
- imports: ['vue', 'pinia'],
32
- scenario: '状态管理',
33
- description: 'Pinia store 定义,包含 actions、getters 和持久化'
34
- },
35
- 'api-call': {
36
- name: 'API 调用层',
37
- fileType: 'ts',
38
- imports: ['axios'],
39
- scenario: 'API 调用',
40
- description: 'RESTful API 调用封装,包含错误处理和类型定义'
41
- },
42
- 'typescript-strict': {
43
- name: 'TypeScript 严格模式',
44
- fileType: 'ts',
45
- imports: [],
46
- scenario: '类型定义',
47
- description: 'TypeScript 严格类型定义和类型守卫'
48
- },
49
- 'i18n': {
50
- name: '国际化开发',
51
- fileType: 'vue',
52
- imports: ['vue', 'vue-i18n'],
53
- scenario: '国际化',
54
- description: 'Vue I18n 多语言支持,包含翻译文件管理'
55
- },
56
- 'composable': {
57
- name: 'Vue 3 Composable',
58
- fileType: 'ts',
59
- imports: ['vue'],
60
- scenario: '可组合函数',
61
- description: 'Vue 3 组合式函数开发,复用逻辑'
62
- }
63
- };
64
- /**
65
- * 预设场景快捷工具
66
- * 使用预定义的场景配置快速获取规范
67
- */
68
- export async function usePreset(args) {
69
- const logger = new ConsoleLogger();
70
- const manager = new StandardsManager();
71
- try {
72
- // 验证预设
73
- if (!(args.preset in PRESETS)) {
74
- return {
75
- content: [{
76
- type: 'text',
77
- text: JSON.stringify({
78
- error: `未知的预设: ${args.preset}`,
79
- availablePresets: Object.keys(PRESETS).map(id => ({
80
- id,
81
- name: PRESETS[id].name,
82
- description: PRESETS[id].description
83
- }))
84
- }, null, 2)
85
- }]
86
- };
87
- }
88
- const preset = PRESETS[args.preset];
89
- logger.log(`🎯 使用预设: ${preset.name}`);
90
- // 合并自定义导入
91
- const imports = args.customImports
92
- ? [...preset.imports, ...args.customImports]
93
- : [...preset.imports]; // 创建新数组避免只读问题
94
- // 获取相关规范
95
- const standards = manager.getRelevantStandards({
96
- fileType: preset.fileType,
97
- imports: imports.length > 0 ? imports : undefined,
98
- scenario: preset.scenario
99
- });
100
- const combinedContent = manager.combineStandards(standards);
101
- return {
102
- content: [{
103
- type: 'text',
104
- text: JSON.stringify({
105
- success: true,
106
- preset: {
107
- id: args.preset,
108
- name: preset.name,
109
- description: preset.description
110
- },
111
- applied: {
112
- fileType: preset.fileType,
113
- imports,
114
- scenario: preset.scenario
115
- },
116
- standards: standards,
117
- content: combinedContent,
118
- stats: {
119
- standardsCount: standards.length,
120
- contentLength: combinedContent.length,
121
- estimatedTokens: Math.ceil(combinedContent.length / 4)
122
- }
123
- }, null, 2)
124
- }]
125
- };
126
- }
127
- catch (error) {
128
- logger.error(`使用预设失败: ${error}`);
129
- return {
130
- content: [{
131
- type: 'text',
132
- text: JSON.stringify({
133
- error: error instanceof Error ? error.message : String(error)
134
- }, null, 2)
135
- }]
136
- };
137
- }
138
- }
139
- /**
140
- * 列出所有可用预设
141
- */
142
- export async function listPresets() {
143
- const presetList = Object.entries(PRESETS).map(([id, preset]) => ({
144
- id,
145
- name: preset.name,
146
- description: preset.description,
147
- fileType: preset.fileType,
148
- imports: preset.imports,
149
- scenario: preset.scenario
150
- }));
151
- return {
152
- content: [{
153
- type: 'text',
154
- text: JSON.stringify({
155
- success: true,
156
- total: presetList.length,
157
- presets: presetList,
158
- usage: '使用方式: 调用 use_preset 工具并指定 preset 参数'
159
- }, null, 2)
160
- }]
161
- };
162
- }
163
- //# sourceMappingURL=usePreset.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePreset.js","sourceRoot":"","sources":["../../src/tools/usePreset.ts"],"names":[],"mappings":"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"}