mta-mcp 2.2.0 → 2.3.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 (180) hide show
  1. package/bin/mta.cjs +43 -0
  2. package/dist/index.cjs +4784 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +1 -0
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.js +4769 -0
  7. package/dist/index.js.map +1 -0
  8. package/package.json +21 -10
  9. package/build/core/agentTemplate.d.ts +0 -33
  10. package/build/core/agentTemplate.d.ts.map +0 -1
  11. package/build/core/agentTemplate.js +0 -158
  12. package/build/core/agentTemplate.js.map +0 -1
  13. package/build/core/analyzers/eslint.d.ts +0 -51
  14. package/build/core/analyzers/eslint.d.ts.map +0 -1
  15. package/build/core/analyzers/eslint.js +0 -259
  16. package/build/core/analyzers/eslint.js.map +0 -1
  17. package/build/core/analyzers/index.d.ts +0 -9
  18. package/build/core/analyzers/index.d.ts.map +0 -1
  19. package/build/core/analyzers/index.js +0 -9
  20. package/build/core/analyzers/index.js.map +0 -1
  21. package/build/core/analyzers/registry.d.ts +0 -59
  22. package/build/core/analyzers/registry.d.ts.map +0 -1
  23. package/build/core/analyzers/registry.js +0 -241
  24. package/build/core/analyzers/registry.js.map +0 -1
  25. package/build/core/analyzers/tsconfig.d.ts +0 -45
  26. package/build/core/analyzers/tsconfig.d.ts.map +0 -1
  27. package/build/core/analyzers/tsconfig.js +0 -197
  28. package/build/core/analyzers/tsconfig.js.map +0 -1
  29. package/build/core/analyzers/types.d.ts +0 -176
  30. package/build/core/analyzers/types.d.ts.map +0 -1
  31. package/build/core/analyzers/types.js +0 -39
  32. package/build/core/analyzers/types.js.map +0 -1
  33. package/build/core/analyzers/vite.d.ts +0 -46
  34. package/build/core/analyzers/vite.d.ts.map +0 -1
  35. package/build/core/analyzers/vite.js +0 -211
  36. package/build/core/analyzers/vite.js.map +0 -1
  37. package/build/core/autoInitializer.d.ts +0 -34
  38. package/build/core/autoInitializer.d.ts.map +0 -1
  39. package/build/core/autoInitializer.js +0 -145
  40. package/build/core/autoInitializer.js.map +0 -1
  41. package/build/core/codeValidator.d.ts +0 -82
  42. package/build/core/codeValidator.d.ts.map +0 -1
  43. package/build/core/codeValidator.js +0 -287
  44. package/build/core/codeValidator.js.map +0 -1
  45. package/build/core/enhancedProjectAnalyzer.d.ts +0 -102
  46. package/build/core/enhancedProjectAnalyzer.d.ts.map +0 -1
  47. package/build/core/enhancedProjectAnalyzer.js +0 -312
  48. package/build/core/enhancedProjectAnalyzer.js.map +0 -1
  49. package/build/core/errors.d.ts +0 -84
  50. package/build/core/errors.d.ts.map +0 -1
  51. package/build/core/errors.js +0 -151
  52. package/build/core/errors.js.map +0 -1
  53. package/build/core/githubClient.d.ts +0 -26
  54. package/build/core/githubClient.d.ts.map +0 -1
  55. package/build/core/githubClient.js +0 -60
  56. package/build/core/githubClient.js.map +0 -1
  57. package/build/core/i18nDetector.d.ts +0 -47
  58. package/build/core/i18nDetector.d.ts.map +0 -1
  59. package/build/core/i18nDetector.js +0 -314
  60. package/build/core/i18nDetector.js.map +0 -1
  61. package/build/core/index.d.ts +0 -11
  62. package/build/core/index.d.ts.map +0 -1
  63. package/build/core/index.js +0 -14
  64. package/build/core/index.js.map +0 -1
  65. package/build/core/logger.d.ts +0 -91
  66. package/build/core/logger.d.ts.map +0 -1
  67. package/build/core/logger.js +0 -164
  68. package/build/core/logger.js.map +0 -1
  69. package/build/core/mappings/index.d.ts +0 -5
  70. package/build/core/mappings/index.d.ts.map +0 -1
  71. package/build/core/mappings/index.js +0 -5
  72. package/build/core/mappings/index.js.map +0 -1
  73. package/build/core/mappings/scenarioMappings.d.ts +0 -51
  74. package/build/core/mappings/scenarioMappings.d.ts.map +0 -1
  75. package/build/core/mappings/scenarioMappings.js +0 -105
  76. package/build/core/mappings/scenarioMappings.js.map +0 -1
  77. package/build/core/matching/index.d.ts +0 -8
  78. package/build/core/matching/index.d.ts.map +0 -1
  79. package/build/core/matching/index.js +0 -8
  80. package/build/core/matching/index.js.map +0 -1
  81. package/build/core/matching/intentAnalyzer.d.ts +0 -78
  82. package/build/core/matching/intentAnalyzer.d.ts.map +0 -1
  83. package/build/core/matching/intentAnalyzer.js +0 -255
  84. package/build/core/matching/intentAnalyzer.js.map +0 -1
  85. package/build/core/matching/standardMatcher.d.ts +0 -101
  86. package/build/core/matching/standardMatcher.d.ts.map +0 -1
  87. package/build/core/matching/standardMatcher.js +0 -299
  88. package/build/core/matching/standardMatcher.js.map +0 -1
  89. package/build/core/matching/weights.d.ts +0 -64
  90. package/build/core/matching/weights.d.ts.map +0 -1
  91. package/build/core/matching/weights.js +0 -334
  92. package/build/core/matching/weights.js.map +0 -1
  93. package/build/core/projectContextManager.d.ts +0 -39
  94. package/build/core/projectContextManager.d.ts.map +0 -1
  95. package/build/core/projectContextManager.js +0 -147
  96. package/build/core/projectContextManager.js.map +0 -1
  97. package/build/core/scenarioDetector.d.ts +0 -2
  98. package/build/core/scenarioDetector.d.ts.map +0 -1
  99. package/build/core/scenarioDetector.js +0 -2
  100. package/build/core/scenarioDetector.js.map +0 -1
  101. package/build/core/smartAgentMatcher.d.ts +0 -51
  102. package/build/core/smartAgentMatcher.d.ts.map +0 -1
  103. package/build/core/smartAgentMatcher.js +0 -493
  104. package/build/core/smartAgentMatcher.js.map +0 -1
  105. package/build/core/standardsManager.d.ts +0 -130
  106. package/build/core/standardsManager.d.ts.map +0 -1
  107. package/build/core/standardsManager.js +0 -600
  108. package/build/core/standardsManager.js.map +0 -1
  109. package/build/core/templates/discovery.d.ts +0 -41
  110. package/build/core/templates/discovery.d.ts.map +0 -1
  111. package/build/core/templates/discovery.js +0 -262
  112. package/build/core/templates/discovery.js.map +0 -1
  113. package/build/core/templates/types.d.ts +0 -80
  114. package/build/core/templates/types.d.ts.map +0 -1
  115. package/build/core/templates/types.js +0 -10
  116. package/build/core/templates/types.js.map +0 -1
  117. package/build/core/types.d.ts +0 -57
  118. package/build/core/types.d.ts.map +0 -1
  119. package/build/core/types.js +0 -22
  120. package/build/core/types.js.map +0 -1
  121. package/build/index.d.ts +0 -3
  122. package/build/index.d.ts.map +0 -1
  123. package/build/index.js +0 -576
  124. package/build/index.js.map +0 -1
  125. package/build/tools/analyzeProject.d.ts +0 -12
  126. package/build/tools/analyzeProject.d.ts.map +0 -1
  127. package/build/tools/analyzeProject.js +0 -85
  128. package/build/tools/analyzeProject.js.map +0 -1
  129. package/build/tools/autoSetup.d.ts +0 -15
  130. package/build/tools/autoSetup.d.ts.map +0 -1
  131. package/build/tools/autoSetup.js +0 -291
  132. package/build/tools/autoSetup.js.map +0 -1
  133. package/build/tools/generateConfig.d.ts +0 -16
  134. package/build/tools/generateConfig.d.ts.map +0 -1
  135. package/build/tools/generateConfig.js +0 -379
  136. package/build/tools/generateConfig.js.map +0 -1
  137. package/build/tools/generateProjectAgent.d.ts +0 -15
  138. package/build/tools/generateProjectAgent.d.ts.map +0 -1
  139. package/build/tools/generateProjectAgent.js +0 -348
  140. package/build/tools/generateProjectAgent.js.map +0 -1
  141. package/build/tools/getCompactStandards.d.ts +0 -20
  142. package/build/tools/getCompactStandards.d.ts.map +0 -1
  143. package/build/tools/getCompactStandards.js +0 -367
  144. package/build/tools/getCompactStandards.js.map +0 -1
  145. package/build/tools/getSmartStandards.d.ts +0 -15
  146. package/build/tools/getSmartStandards.d.ts.map +0 -1
  147. package/build/tools/getSmartStandards.js +0 -201
  148. package/build/tools/getSmartStandards.js.map +0 -1
  149. package/build/tools/getStandardById.d.ts +0 -42
  150. package/build/tools/getStandardById.d.ts.map +0 -1
  151. package/build/tools/getStandardById.js +0 -289
  152. package/build/tools/getStandardById.js.map +0 -1
  153. package/build/tools/getTemplate.d.ts +0 -37
  154. package/build/tools/getTemplate.d.ts.map +0 -1
  155. package/build/tools/getTemplate.js +0 -78
  156. package/build/tools/getTemplate.js.map +0 -1
  157. package/build/tools/healthCheck.d.ts +0 -14
  158. package/build/tools/healthCheck.d.ts.map +0 -1
  159. package/build/tools/healthCheck.js +0 -237
  160. package/build/tools/healthCheck.js.map +0 -1
  161. package/build/tools/listAgents.d.ts +0 -10
  162. package/build/tools/listAgents.d.ts.map +0 -1
  163. package/build/tools/listAgents.js +0 -79
  164. package/build/tools/listAgents.js.map +0 -1
  165. package/build/tools/listTemplates.d.ts +0 -41
  166. package/build/tools/listTemplates.d.ts.map +0 -1
  167. package/build/tools/listTemplates.js +0 -81
  168. package/build/tools/listTemplates.js.map +0 -1
  169. package/build/tools/matchAgents.d.ts +0 -14
  170. package/build/tools/matchAgents.d.ts.map +0 -1
  171. package/build/tools/matchAgents.js +0 -70
  172. package/build/tools/matchAgents.js.map +0 -1
  173. package/build/tools/queryMappings.d.ts +0 -55
  174. package/build/tools/queryMappings.d.ts.map +0 -1
  175. package/build/tools/queryMappings.js +0 -119
  176. package/build/tools/queryMappings.js.map +0 -1
  177. package/build/tools/usePreset.d.ts +0 -23
  178. package/build/tools/usePreset.d.ts.map +0 -1
  179. package/build/tools/usePreset.js +0 -163
  180. package/build/tools/usePreset.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"githubClient.js","sourceRoot":"","sources":["../../src/core/githubClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;GAEG;AACH,MAAM,OAAO,YAAY;IAOD;IANH,KAAK,GAAG,SAAS,CAAC;IAClB,IAAI,GAAG,iBAAiB,CAAC;IACzB,MAAM,GAAG,MAAM,CAAC;IAChB,OAAO,GAAG,wBAAwB,CAAC;IACnC,UAAU,GAAG,mCAAmC,CAAC;IAElE,YAAoB,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAEvC;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,OAAe;QACpC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,aAAa,OAAO,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QAEtG,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;gBAClC,OAAO,EAAE;oBACL,QAAQ,EAAE,gCAAgC;oBAC1C,YAAY,EAAE,4BAA4B;iBAC7C;aACJ,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;oBACrC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;iBAClB,CAAC,CAAC,CAAC;YACR,CAAC;YAED,OAAO,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;YACvC,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACnC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;QAEvF,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;gBAClC,OAAO,EAAE;oBACL,YAAY,EAAE,4BAA4B;iBAC7C;aACJ,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;YAC1C,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;CACJ"}
@@ -1,47 +0,0 @@
1
- /**
2
- * 国际化配置信息
3
- */
4
- export interface I18nConfig {
5
- enabled: boolean;
6
- type: 'vue-i18n' | 'flutter-intl' | 'react-i18n' | 'custom' | 'none';
7
- configFiles: string[];
8
- messageFiles: string[];
9
- method: string;
10
- example: string;
11
- tips: string[];
12
- }
13
- /**
14
- * 国际化检测器
15
- * 支持检测 Vue、Flutter、React 等项目的国际化配置
16
- */
17
- export declare class I18nDetector {
18
- /**
19
- * 检测项目的国际化配置
20
- */
21
- static detect(projectPath: string): Promise<I18nConfig>;
22
- /**
23
- * 检测前端项目的国际化配置(Vue/React)
24
- */
25
- private static detectFrontendI18n;
26
- /**
27
- * 检测 vue-i18n 配置
28
- */
29
- private static detectVueI18n;
30
- /**
31
- * 检测 react-i18next 配置
32
- */
33
- private static detectReactI18n;
34
- /**
35
- * 检测 react-intl 配置
36
- */
37
- private static detectReactIntl;
38
- /**
39
- * 检测自定义国际化方案
40
- */
41
- private static detectCustomI18n;
42
- /**
43
- * 检测 Flutter 项目的国际化配置
44
- */
45
- private static detectFlutterI18n;
46
- }
47
- //# sourceMappingURL=i18nDetector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18nDetector.d.ts","sourceRoot":"","sources":["../../src/core/i18nDetector.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACrB;;OAEG;WACU,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAyB7D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA2BjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAmD5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAkD9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAiB9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAsE/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAyEnC"}
@@ -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,11 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,14 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,91 +0,0 @@
1
- /**
2
- * MCP 日志模块
3
- *
4
- * 统一的日志接口,支持不同级别和格式化输出
5
- * MCP 服务器通过 stderr 输出日志,避免污染 stdout
6
- *
7
- * @module core/logger
8
- */
9
- /**
10
- * 日志级别
11
- */
12
- export declare enum LogLevel {
13
- DEBUG = 0,
14
- INFO = 1,
15
- WARN = 2,
16
- ERROR = 3,
17
- SILENT = 4
18
- }
19
- /**
20
- * 日志配置
21
- */
22
- interface LoggerConfig {
23
- /** 最小日志级别 */
24
- level: LogLevel;
25
- /** 是否显示时间戳 */
26
- timestamp: boolean;
27
- /** 前缀 */
28
- prefix: string;
29
- }
30
- /**
31
- * Logger 类
32
- */
33
- export declare class Logger {
34
- private readonly name;
35
- private readonly config;
36
- constructor(name?: string, config?: Partial<LoggerConfig>);
37
- /**
38
- * 格式化日志消息
39
- */
40
- private format;
41
- /**
42
- * 检查日志级别是否应该输出
43
- */
44
- private shouldLog;
45
- /**
46
- * 调试日志
47
- */
48
- debug(message: string, ...args: unknown[]): void;
49
- /**
50
- * 信息日志
51
- */
52
- info(message: string, ...args: unknown[]): void;
53
- /**
54
- * 简化的 log 方法(等同于 info)
55
- */
56
- log(message: string, ...args: unknown[]): void;
57
- /**
58
- * 警告日志
59
- */
60
- warn(message: string, ...args: unknown[]): void;
61
- /**
62
- * 错误日志
63
- */
64
- error(message: string, ...args: unknown[]): void;
65
- /**
66
- * 创建子 Logger
67
- */
68
- child(name: string): Logger;
69
- }
70
- /**
71
- * 配置全局日志
72
- */
73
- export declare function configureLogger(config: Partial<LoggerConfig>): void;
74
- /**
75
- * 设置日志级别
76
- */
77
- export declare function setLogLevel(level: LogLevel): void;
78
- /**
79
- * 默认 Logger 实例
80
- */
81
- export declare const logger: Logger;
82
- /**
83
- * 创建带名称的 Logger
84
- */
85
- export declare function createLogger(name: string): Logger;
86
- /**
87
- * 工具函数:计时日志
88
- */
89
- export declare function createTimer(logger: Logger, operation: string): () => void;
90
- export {};
91
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,oBAAY,QAAQ;IAChB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,MAAM,IAAI;CACb;AAaD;;GAEG;AACH,UAAU,YAAY;IAClB,aAAa;IACb,KAAK,EAAE,QAAQ,CAAC;IAChB,cAAc;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS;IACT,MAAM,EAAE,MAAM,CAAC;CAClB;AAWD;;GAEG;AACH,qBAAa,MAAM;IACf,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAKzD;;OAEG;IACH,OAAO,CAAC,MAAM;IAkCd;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAMhD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/C;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAMhD;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAI9B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAEnE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,QAAe,CAAC;AAEnC;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,IAAI,CAQzE"}
@@ -1,164 +0,0 @@
1
- /**
2
- * MCP 日志模块
3
- *
4
- * 统一的日志接口,支持不同级别和格式化输出
5
- * MCP 服务器通过 stderr 输出日志,避免污染 stdout
6
- *
7
- * @module core/logger
8
- */
9
- /**
10
- * 日志级别
11
- */
12
- export var LogLevel;
13
- (function (LogLevel) {
14
- LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
15
- LogLevel[LogLevel["INFO"] = 1] = "INFO";
16
- LogLevel[LogLevel["WARN"] = 2] = "WARN";
17
- LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
18
- LogLevel[LogLevel["SILENT"] = 4] = "SILENT";
19
- })(LogLevel || (LogLevel = {}));
20
- /**
21
- * 日志级别名称
22
- */
23
- const LOG_LEVEL_NAMES = {
24
- [LogLevel.DEBUG]: 'DEBUG',
25
- [LogLevel.INFO]: 'INFO',
26
- [LogLevel.WARN]: 'WARN',
27
- [LogLevel.ERROR]: 'ERROR',
28
- [LogLevel.SILENT]: 'SILENT'
29
- };
30
- /**
31
- * 全局日志配置
32
- */
33
- let globalConfig = {
34
- level: process.env.DEBUG ? LogLevel.DEBUG : LogLevel.INFO,
35
- timestamp: false,
36
- prefix: '[MCP]'
37
- };
38
- /**
39
- * Logger 类
40
- */
41
- export class Logger {
42
- name;
43
- config;
44
- constructor(name, config) {
45
- this.name = name || '';
46
- this.config = { ...globalConfig, ...config };
47
- }
48
- /**
49
- * 格式化日志消息
50
- */
51
- format(level, message, ...args) {
52
- const parts = [];
53
- if (this.config.timestamp) {
54
- parts.push(new Date().toISOString());
55
- }
56
- parts.push(this.config.prefix);
57
- if (this.name) {
58
- parts.push(`[${this.name}]`);
59
- }
60
- parts.push(`[${LOG_LEVEL_NAMES[level]}]`);
61
- parts.push(message);
62
- // 处理额外参数
63
- if (args.length > 0) {
64
- const formatted = args.map(arg => {
65
- if (typeof arg === 'object') {
66
- try {
67
- return JSON.stringify(arg, null, 2);
68
- }
69
- catch {
70
- return String(arg);
71
- }
72
- }
73
- return String(arg);
74
- });
75
- parts.push(...formatted);
76
- }
77
- return parts.join(' ');
78
- }
79
- /**
80
- * 检查日志级别是否应该输出
81
- */
82
- shouldLog(level) {
83
- return level >= this.config.level;
84
- }
85
- /**
86
- * 调试日志
87
- */
88
- debug(message, ...args) {
89
- if (this.shouldLog(LogLevel.DEBUG)) {
90
- console.error(this.format(LogLevel.DEBUG, message, ...args));
91
- }
92
- }
93
- /**
94
- * 信息日志
95
- */
96
- info(message, ...args) {
97
- if (this.shouldLog(LogLevel.INFO)) {
98
- console.error(this.format(LogLevel.INFO, message, ...args));
99
- }
100
- }
101
- /**
102
- * 简化的 log 方法(等同于 info)
103
- */
104
- log(message, ...args) {
105
- this.info(message, ...args);
106
- }
107
- /**
108
- * 警告日志
109
- */
110
- warn(message, ...args) {
111
- if (this.shouldLog(LogLevel.WARN)) {
112
- console.error(this.format(LogLevel.WARN, message, ...args));
113
- }
114
- }
115
- /**
116
- * 错误日志
117
- */
118
- error(message, ...args) {
119
- if (this.shouldLog(LogLevel.ERROR)) {
120
- console.error(this.format(LogLevel.ERROR, message, ...args));
121
- }
122
- }
123
- /**
124
- * 创建子 Logger
125
- */
126
- child(name) {
127
- const childName = this.name ? `${this.name}:${name}` : name;
128
- return new Logger(childName, this.config);
129
- }
130
- }
131
- /**
132
- * 配置全局日志
133
- */
134
- export function configureLogger(config) {
135
- globalConfig = { ...globalConfig, ...config };
136
- }
137
- /**
138
- * 设置日志级别
139
- */
140
- export function setLogLevel(level) {
141
- globalConfig.level = level;
142
- }
143
- /**
144
- * 默认 Logger 实例
145
- */
146
- export const logger = new Logger();
147
- /**
148
- * 创建带名称的 Logger
149
- */
150
- export function createLogger(name) {
151
- return new Logger(name);
152
- }
153
- /**
154
- * 工具函数:计时日志
155
- */
156
- export function createTimer(logger, operation) {
157
- const start = Date.now();
158
- logger.debug(`开始: ${operation}`);
159
- return () => {
160
- const duration = Date.now() - start;
161
- logger.debug(`完成: ${operation} (${duration}ms)`);
162
- };
163
- }
164
- //# sourceMappingURL=logger.js.map