mta-mcp 2.2.0 → 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.
- package/bin/mta.cjs +43 -0
- package/dist/index.cjs +4784 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4769 -0
- package/dist/index.js.map +1 -0
- package/package.json +21 -10
- package/build/core/agentTemplate.d.ts +0 -33
- package/build/core/agentTemplate.d.ts.map +0 -1
- package/build/core/agentTemplate.js +0 -158
- package/build/core/agentTemplate.js.map +0 -1
- package/build/core/analyzers/eslint.d.ts +0 -51
- package/build/core/analyzers/eslint.d.ts.map +0 -1
- package/build/core/analyzers/eslint.js +0 -259
- package/build/core/analyzers/eslint.js.map +0 -1
- package/build/core/analyzers/index.d.ts +0 -9
- package/build/core/analyzers/index.d.ts.map +0 -1
- package/build/core/analyzers/index.js +0 -9
- package/build/core/analyzers/index.js.map +0 -1
- package/build/core/analyzers/registry.d.ts +0 -59
- package/build/core/analyzers/registry.d.ts.map +0 -1
- package/build/core/analyzers/registry.js +0 -241
- package/build/core/analyzers/registry.js.map +0 -1
- package/build/core/analyzers/tsconfig.d.ts +0 -45
- package/build/core/analyzers/tsconfig.d.ts.map +0 -1
- package/build/core/analyzers/tsconfig.js +0 -197
- package/build/core/analyzers/tsconfig.js.map +0 -1
- package/build/core/analyzers/types.d.ts +0 -176
- package/build/core/analyzers/types.d.ts.map +0 -1
- package/build/core/analyzers/types.js +0 -39
- package/build/core/analyzers/types.js.map +0 -1
- package/build/core/analyzers/vite.d.ts +0 -46
- package/build/core/analyzers/vite.d.ts.map +0 -1
- package/build/core/analyzers/vite.js +0 -211
- package/build/core/analyzers/vite.js.map +0 -1
- package/build/core/autoInitializer.d.ts +0 -34
- package/build/core/autoInitializer.d.ts.map +0 -1
- package/build/core/autoInitializer.js +0 -145
- package/build/core/autoInitializer.js.map +0 -1
- package/build/core/codeValidator.d.ts +0 -82
- package/build/core/codeValidator.d.ts.map +0 -1
- package/build/core/codeValidator.js +0 -287
- package/build/core/codeValidator.js.map +0 -1
- package/build/core/enhancedProjectAnalyzer.d.ts +0 -102
- package/build/core/enhancedProjectAnalyzer.d.ts.map +0 -1
- package/build/core/enhancedProjectAnalyzer.js +0 -312
- package/build/core/enhancedProjectAnalyzer.js.map +0 -1
- package/build/core/errors.d.ts +0 -84
- package/build/core/errors.d.ts.map +0 -1
- package/build/core/errors.js +0 -151
- package/build/core/errors.js.map +0 -1
- package/build/core/githubClient.d.ts +0 -26
- package/build/core/githubClient.d.ts.map +0 -1
- package/build/core/githubClient.js +0 -60
- package/build/core/githubClient.js.map +0 -1
- package/build/core/i18nDetector.d.ts +0 -47
- package/build/core/i18nDetector.d.ts.map +0 -1
- package/build/core/i18nDetector.js +0 -314
- package/build/core/i18nDetector.js.map +0 -1
- package/build/core/index.d.ts +0 -11
- package/build/core/index.d.ts.map +0 -1
- package/build/core/index.js +0 -14
- package/build/core/index.js.map +0 -1
- package/build/core/logger.d.ts +0 -91
- package/build/core/logger.d.ts.map +0 -1
- package/build/core/logger.js +0 -164
- package/build/core/logger.js.map +0 -1
- package/build/core/mappings/index.d.ts +0 -5
- package/build/core/mappings/index.d.ts.map +0 -1
- package/build/core/mappings/index.js +0 -5
- package/build/core/mappings/index.js.map +0 -1
- package/build/core/mappings/scenarioMappings.d.ts +0 -51
- package/build/core/mappings/scenarioMappings.d.ts.map +0 -1
- package/build/core/mappings/scenarioMappings.js +0 -105
- package/build/core/mappings/scenarioMappings.js.map +0 -1
- package/build/core/matching/index.d.ts +0 -8
- package/build/core/matching/index.d.ts.map +0 -1
- package/build/core/matching/index.js +0 -8
- package/build/core/matching/index.js.map +0 -1
- package/build/core/matching/intentAnalyzer.d.ts +0 -78
- package/build/core/matching/intentAnalyzer.d.ts.map +0 -1
- package/build/core/matching/intentAnalyzer.js +0 -255
- package/build/core/matching/intentAnalyzer.js.map +0 -1
- package/build/core/matching/standardMatcher.d.ts +0 -101
- package/build/core/matching/standardMatcher.d.ts.map +0 -1
- package/build/core/matching/standardMatcher.js +0 -299
- package/build/core/matching/standardMatcher.js.map +0 -1
- package/build/core/matching/weights.d.ts +0 -64
- package/build/core/matching/weights.d.ts.map +0 -1
- package/build/core/matching/weights.js +0 -334
- package/build/core/matching/weights.js.map +0 -1
- package/build/core/projectContextManager.d.ts +0 -39
- package/build/core/projectContextManager.d.ts.map +0 -1
- package/build/core/projectContextManager.js +0 -147
- package/build/core/projectContextManager.js.map +0 -1
- package/build/core/scenarioDetector.d.ts +0 -2
- package/build/core/scenarioDetector.d.ts.map +0 -1
- package/build/core/scenarioDetector.js +0 -2
- package/build/core/scenarioDetector.js.map +0 -1
- package/build/core/smartAgentMatcher.d.ts +0 -51
- package/build/core/smartAgentMatcher.d.ts.map +0 -1
- package/build/core/smartAgentMatcher.js +0 -493
- package/build/core/smartAgentMatcher.js.map +0 -1
- package/build/core/standardsManager.d.ts +0 -130
- package/build/core/standardsManager.d.ts.map +0 -1
- package/build/core/standardsManager.js +0 -600
- package/build/core/standardsManager.js.map +0 -1
- package/build/core/templates/discovery.d.ts +0 -41
- package/build/core/templates/discovery.d.ts.map +0 -1
- package/build/core/templates/discovery.js +0 -262
- package/build/core/templates/discovery.js.map +0 -1
- package/build/core/templates/types.d.ts +0 -80
- package/build/core/templates/types.d.ts.map +0 -1
- package/build/core/templates/types.js +0 -10
- package/build/core/templates/types.js.map +0 -1
- package/build/core/types.d.ts +0 -57
- package/build/core/types.d.ts.map +0 -1
- package/build/core/types.js +0 -22
- package/build/core/types.js.map +0 -1
- package/build/index.d.ts +0 -3
- package/build/index.d.ts.map +0 -1
- package/build/index.js +0 -576
- package/build/index.js.map +0 -1
- package/build/tools/analyzeProject.d.ts +0 -12
- package/build/tools/analyzeProject.d.ts.map +0 -1
- package/build/tools/analyzeProject.js +0 -85
- package/build/tools/analyzeProject.js.map +0 -1
- package/build/tools/autoSetup.d.ts +0 -15
- package/build/tools/autoSetup.d.ts.map +0 -1
- package/build/tools/autoSetup.js +0 -291
- package/build/tools/autoSetup.js.map +0 -1
- package/build/tools/generateConfig.d.ts +0 -16
- package/build/tools/generateConfig.d.ts.map +0 -1
- package/build/tools/generateConfig.js +0 -379
- package/build/tools/generateConfig.js.map +0 -1
- package/build/tools/generateProjectAgent.d.ts +0 -15
- package/build/tools/generateProjectAgent.d.ts.map +0 -1
- package/build/tools/generateProjectAgent.js +0 -348
- package/build/tools/generateProjectAgent.js.map +0 -1
- package/build/tools/getCompactStandards.d.ts +0 -20
- package/build/tools/getCompactStandards.d.ts.map +0 -1
- package/build/tools/getCompactStandards.js +0 -367
- package/build/tools/getCompactStandards.js.map +0 -1
- package/build/tools/getSmartStandards.d.ts +0 -15
- package/build/tools/getSmartStandards.d.ts.map +0 -1
- package/build/tools/getSmartStandards.js +0 -201
- package/build/tools/getSmartStandards.js.map +0 -1
- package/build/tools/getStandardById.d.ts +0 -42
- package/build/tools/getStandardById.d.ts.map +0 -1
- package/build/tools/getStandardById.js +0 -289
- package/build/tools/getStandardById.js.map +0 -1
- package/build/tools/getTemplate.d.ts +0 -37
- package/build/tools/getTemplate.d.ts.map +0 -1
- package/build/tools/getTemplate.js +0 -78
- package/build/tools/getTemplate.js.map +0 -1
- package/build/tools/healthCheck.d.ts +0 -14
- package/build/tools/healthCheck.d.ts.map +0 -1
- package/build/tools/healthCheck.js +0 -237
- package/build/tools/healthCheck.js.map +0 -1
- package/build/tools/listAgents.d.ts +0 -10
- package/build/tools/listAgents.d.ts.map +0 -1
- package/build/tools/listAgents.js +0 -79
- package/build/tools/listAgents.js.map +0 -1
- package/build/tools/listTemplates.d.ts +0 -41
- package/build/tools/listTemplates.d.ts.map +0 -1
- package/build/tools/listTemplates.js +0 -81
- package/build/tools/listTemplates.js.map +0 -1
- package/build/tools/matchAgents.d.ts +0 -14
- package/build/tools/matchAgents.d.ts.map +0 -1
- package/build/tools/matchAgents.js +0 -70
- package/build/tools/matchAgents.js.map +0 -1
- package/build/tools/queryMappings.d.ts +0 -55
- package/build/tools/queryMappings.d.ts.map +0 -1
- package/build/tools/queryMappings.js +0 -119
- package/build/tools/queryMappings.js.map +0 -1
- package/build/tools/usePreset.d.ts +0 -23
- package/build/tools/usePreset.d.ts.map +0 -1
- package/build/tools/usePreset.js +0 -163
- package/build/tools/usePreset.js.map +0 -1
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 分析器类型定义
|
|
3
|
-
*
|
|
4
|
-
* 设计原则:
|
|
5
|
-
* 1. 扩展而非替换现有 ProjectFeatures 接口
|
|
6
|
-
* 2. 所有新增字段都是可选的
|
|
7
|
-
* 3. 提供转换函数保持向后兼容
|
|
8
|
-
*/
|
|
9
|
-
import { ProjectFeatures } from '../types.js';
|
|
10
|
-
/**
|
|
11
|
-
* 项目类型枚举
|
|
12
|
-
*/
|
|
13
|
-
export type ProjectType = 'vue3' | 'vue2' | 'react' | 'angular' | 'svelte' | 'solid' | 'nextjs' | 'nuxtjs' | 'remix' | 'astro' | 'flutter' | 'react-native' | 'ionic' | 'electron' | 'tauri' | 'express' | 'nestjs' | 'koa' | 'fastify' | 'miniprogram' | 'uniapp' | 'taro' | 'typescript' | 'javascript' | 'python' | 'java' | 'go' | 'monorepo' | 'library' | 'cli' | 'unknown';
|
|
14
|
-
/**
|
|
15
|
-
* 框架详细信息
|
|
16
|
-
*/
|
|
17
|
-
export interface FrameworkInfo {
|
|
18
|
-
name: string;
|
|
19
|
-
version?: string;
|
|
20
|
-
confidence: number;
|
|
21
|
-
source: 'package.json' | 'config' | 'code' | 'structure';
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* 语言详细信息
|
|
25
|
-
*/
|
|
26
|
-
export interface LanguageInfo {
|
|
27
|
-
name: string;
|
|
28
|
-
version?: string;
|
|
29
|
-
isPrimary: boolean;
|
|
30
|
-
fileCount?: number;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* 工具详细信息
|
|
34
|
-
*/
|
|
35
|
-
export interface ToolInfo {
|
|
36
|
-
name: string;
|
|
37
|
-
category: 'build' | 'ui' | 'style' | 'test' | 'lint' | 'other';
|
|
38
|
-
version?: string;
|
|
39
|
-
config?: Record<string, unknown>;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* 检测元数据
|
|
43
|
-
*/
|
|
44
|
-
export interface AnalysisMetadata {
|
|
45
|
-
analyzedAt: Date;
|
|
46
|
-
analyzers: string[];
|
|
47
|
-
duration: number;
|
|
48
|
-
cacheHit?: boolean;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* 项目特征(增强版)
|
|
52
|
-
* 继承自现有 ProjectFeatures,保持向后兼容
|
|
53
|
-
*/
|
|
54
|
-
export interface ProjectFeaturesExtended extends ProjectFeatures {
|
|
55
|
-
projectName?: string;
|
|
56
|
-
projectPath?: string;
|
|
57
|
-
frameworksDetail?: FrameworkInfo[];
|
|
58
|
-
languagesDetail?: LanguageInfo[];
|
|
59
|
-
toolsDetail?: ToolInfo[];
|
|
60
|
-
confidence?: number;
|
|
61
|
-
metadata?: AnalysisMetadata;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* 转换为基础类型(兼容现有代码)
|
|
65
|
-
*/
|
|
66
|
-
export declare function toBasicFeatures(extended: ProjectFeaturesExtended): ProjectFeatures;
|
|
67
|
-
/**
|
|
68
|
-
* 分析结果
|
|
69
|
-
*/
|
|
70
|
-
export interface AnalyzerResult {
|
|
71
|
-
features: Partial<ProjectFeaturesExtended>;
|
|
72
|
-
confidence: number;
|
|
73
|
-
analyzerName: string;
|
|
74
|
-
duration: number;
|
|
75
|
-
error?: string;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* 配置文件分析器接口
|
|
79
|
-
*/
|
|
80
|
-
export interface ConfigAnalyzer {
|
|
81
|
-
/**
|
|
82
|
-
* 分析器名称
|
|
83
|
-
*/
|
|
84
|
-
readonly name: string;
|
|
85
|
-
/**
|
|
86
|
-
* 支持的配置文件名列表
|
|
87
|
-
*/
|
|
88
|
-
readonly supportedFiles: string[];
|
|
89
|
-
/**
|
|
90
|
-
* 检查是否支持指定文件
|
|
91
|
-
*/
|
|
92
|
-
supports(fileName: string): boolean;
|
|
93
|
-
/**
|
|
94
|
-
* 分析配置文件
|
|
95
|
-
* @param filePath 配置文件绝对路径
|
|
96
|
-
* @param content 文件内容(可选,避免重复读取)
|
|
97
|
-
*/
|
|
98
|
-
analyze(filePath: string, content?: string): Promise<AnalyzerResult>;
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* 分析器优先级
|
|
102
|
-
*/
|
|
103
|
-
export interface AnalyzerPriority {
|
|
104
|
-
analyzer: ConfigAnalyzer;
|
|
105
|
-
priority: number;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* 匹配权重配置
|
|
109
|
-
*/
|
|
110
|
-
export interface MatchWeights {
|
|
111
|
-
framework: number;
|
|
112
|
-
tool: number;
|
|
113
|
-
language: number;
|
|
114
|
-
keyword: number;
|
|
115
|
-
tag: number;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* 默认权重(与现有保持一致)
|
|
119
|
-
*/
|
|
120
|
-
export declare const DEFAULT_WEIGHTS: MatchWeights;
|
|
121
|
-
/**
|
|
122
|
-
* 场景权重因子
|
|
123
|
-
*/
|
|
124
|
-
export interface ScenarioWeightFactors {
|
|
125
|
-
scenario: string;
|
|
126
|
-
factors: Partial<MatchWeights>;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* 项目类型权重因子
|
|
130
|
-
*/
|
|
131
|
-
export interface ProjectTypeWeightFactors {
|
|
132
|
-
projectType: ProjectType;
|
|
133
|
-
factors: Partial<MatchWeights>;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* 匹配详情
|
|
137
|
-
*/
|
|
138
|
-
export interface MatchDetails {
|
|
139
|
-
frameworkMatches: string[];
|
|
140
|
-
toolMatches: string[];
|
|
141
|
-
languageMatches: string[];
|
|
142
|
-
keywordMatches: string[];
|
|
143
|
-
tagMatches: string[];
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* 匹配结果
|
|
147
|
-
*/
|
|
148
|
-
export interface MatchResult {
|
|
149
|
-
agentId: string;
|
|
150
|
-
score: number;
|
|
151
|
-
confidence: number;
|
|
152
|
-
matchDetails: MatchDetails;
|
|
153
|
-
recommendation: 'high' | 'medium' | 'low';
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* 缓存条目
|
|
157
|
-
*/
|
|
158
|
-
export interface CacheEntry<T> {
|
|
159
|
-
data: T;
|
|
160
|
-
hash: string;
|
|
161
|
-
timestamp: number;
|
|
162
|
-
accessCount: number;
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* 缓存配置
|
|
166
|
-
*/
|
|
167
|
-
export interface CacheConfig {
|
|
168
|
-
maxSize: number;
|
|
169
|
-
ttlMs: number;
|
|
170
|
-
enableHashValidation: boolean;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* 默认缓存配置
|
|
174
|
-
*/
|
|
175
|
-
export declare const DEFAULT_CACHE_CONFIG: CacheConfig;
|
|
176
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/analyzers/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 分析器类型定义
|
|
3
|
-
*
|
|
4
|
-
* 设计原则:
|
|
5
|
-
* 1. 扩展而非替换现有 ProjectFeatures 接口
|
|
6
|
-
* 2. 所有新增字段都是可选的
|
|
7
|
-
* 3. 提供转换函数保持向后兼容
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* 转换为基础类型(兼容现有代码)
|
|
11
|
-
*/
|
|
12
|
-
export function toBasicFeatures(extended) {
|
|
13
|
-
return {
|
|
14
|
-
frameworks: extended.frameworks,
|
|
15
|
-
languages: extended.languages,
|
|
16
|
-
tools: extended.tools,
|
|
17
|
-
keywords: extended.keywords,
|
|
18
|
-
projectType: extended.projectType
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* 默认权重(与现有保持一致)
|
|
23
|
-
*/
|
|
24
|
-
export const DEFAULT_WEIGHTS = {
|
|
25
|
-
framework: 10,
|
|
26
|
-
tool: 8,
|
|
27
|
-
language: 5,
|
|
28
|
-
keyword: 3,
|
|
29
|
-
tag: 2
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* 默认缓存配置
|
|
33
|
-
*/
|
|
34
|
-
export const DEFAULT_CACHE_CONFIG = {
|
|
35
|
-
maxSize: 50,
|
|
36
|
-
ttlMs: 30 * 60 * 1000, // 30分钟
|
|
37
|
-
enableHashValidation: true
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/analyzers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA0FH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAiC;IAC7D,OAAO;QACH,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;KACpC,CAAC;AACN,CAAC;AAwED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAiB;IACzC,SAAS,EAAE,EAAE;IACb,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,CAAC;IACV,GAAG,EAAE,CAAC;CACT,CAAC;AA+DF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC7C,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAG,OAAO;IAC/B,oBAAoB,EAAE,IAAI;CAC7B,CAAC"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Vite 配置文件分析器
|
|
3
|
-
*
|
|
4
|
-
* 解析 vite.config.ts/js 文件,提取:
|
|
5
|
-
* - 使用的插件(vue, react 等)
|
|
6
|
-
* - 路径别名配置
|
|
7
|
-
* - 构建配置
|
|
8
|
-
*/
|
|
9
|
-
import { ConfigAnalyzer, AnalyzerResult } from './types.js';
|
|
10
|
-
/**
|
|
11
|
-
* Vite 配置分析器
|
|
12
|
-
*/
|
|
13
|
-
export declare class ViteConfigAnalyzer implements ConfigAnalyzer {
|
|
14
|
-
readonly name = "ViteConfigAnalyzer";
|
|
15
|
-
readonly supportedFiles: string[];
|
|
16
|
-
private readonly PLUGIN_MAPPINGS;
|
|
17
|
-
/**
|
|
18
|
-
* 检查是否支持指定文件
|
|
19
|
-
*/
|
|
20
|
-
supports(fileName: string): boolean;
|
|
21
|
-
/**
|
|
22
|
-
* 分析 Vite 配置文件
|
|
23
|
-
*/
|
|
24
|
-
analyze(filePath: string, content?: string): Promise<AnalyzerResult>;
|
|
25
|
-
/**
|
|
26
|
-
* 分析插件导入语句
|
|
27
|
-
*/
|
|
28
|
-
private analyzePluginImports;
|
|
29
|
-
/**
|
|
30
|
-
* 分析插件配置部分
|
|
31
|
-
*/
|
|
32
|
-
private analyzePluginConfig;
|
|
33
|
-
/**
|
|
34
|
-
* 分析路径别名配置
|
|
35
|
-
*/
|
|
36
|
-
private analyzeAliasConfig;
|
|
37
|
-
/**
|
|
38
|
-
* 分析开发服务器配置
|
|
39
|
-
*/
|
|
40
|
-
private analyzeServerConfig;
|
|
41
|
-
/**
|
|
42
|
-
* 分析构建配置
|
|
43
|
-
*/
|
|
44
|
-
private analyzeBuildConfig;
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=vite.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../../../src/core/analyzers/vite.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAqC,MAAM,YAAY,CAAC;AAE/F;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACrD,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,cAAc,WAKrB;IAGF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAoB9B;IAEF;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAmD1E;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkD5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAmB7B"}
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Vite 配置文件分析器
|
|
3
|
-
*
|
|
4
|
-
* 解析 vite.config.ts/js 文件,提取:
|
|
5
|
-
* - 使用的插件(vue, react 等)
|
|
6
|
-
* - 路径别名配置
|
|
7
|
-
* - 构建配置
|
|
8
|
-
*/
|
|
9
|
-
import * as fs from 'fs';
|
|
10
|
-
/**
|
|
11
|
-
* Vite 配置分析器
|
|
12
|
-
*/
|
|
13
|
-
export class ViteConfigAnalyzer {
|
|
14
|
-
name = 'ViteConfigAnalyzer';
|
|
15
|
-
supportedFiles = [
|
|
16
|
-
'vite.config.ts',
|
|
17
|
-
'vite.config.js',
|
|
18
|
-
'vite.config.mts',
|
|
19
|
-
'vite.config.mjs'
|
|
20
|
-
];
|
|
21
|
-
// 插件名称到框架/工具的映射
|
|
22
|
-
PLUGIN_MAPPINGS = {
|
|
23
|
-
'@vitejs/plugin-vue': { type: 'framework', name: 'Vue 3' },
|
|
24
|
-
'@vitejs/plugin-vue-jsx': { type: 'tool', name: 'Vue JSX' },
|
|
25
|
-
'@vitejs/plugin-react': { type: 'framework', name: 'React' },
|
|
26
|
-
'@vitejs/plugin-react-swc': { type: 'framework', name: 'React' },
|
|
27
|
-
'@vitejs/plugin-legacy': { type: 'tool', name: 'Legacy Browser Support' },
|
|
28
|
-
'vite-plugin-vue2': { type: 'framework', name: 'Vue 2' },
|
|
29
|
-
'unplugin-vue-components': { type: 'tool', name: 'Auto Components' },
|
|
30
|
-
'unplugin-auto-import': { type: 'tool', name: 'Auto Import' },
|
|
31
|
-
'vite-plugin-pages': { type: 'tool', name: 'File-based Routing' },
|
|
32
|
-
'vite-plugin-vue-layouts': { type: 'tool', name: 'Vue Layouts' },
|
|
33
|
-
'vite-plugin-pwa': { type: 'tool', name: 'PWA' },
|
|
34
|
-
'vite-plugin-compression': { type: 'tool', name: 'Compression' },
|
|
35
|
-
'vite-plugin-svg-icons': { type: 'tool', name: 'SVG Icons' },
|
|
36
|
-
'unocss': { type: 'tool', name: 'UnoCSS' },
|
|
37
|
-
'@unocss/vite': { type: 'tool', name: 'UnoCSS' },
|
|
38
|
-
'vite-plugin-windicss': { type: 'tool', name: 'WindiCSS' },
|
|
39
|
-
'vite-plugin-mock': { type: 'tool', name: 'Mock Server' },
|
|
40
|
-
'vite-plugin-html': { type: 'tool', name: 'HTML Transform' },
|
|
41
|
-
'rollup-plugin-visualizer': { type: 'tool', name: 'Bundle Analyzer' },
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* 检查是否支持指定文件
|
|
45
|
-
*/
|
|
46
|
-
supports(fileName) {
|
|
47
|
-
return this.supportedFiles.includes(fileName);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* 分析 Vite 配置文件
|
|
51
|
-
*/
|
|
52
|
-
async analyze(filePath, content) {
|
|
53
|
-
const startTime = Date.now();
|
|
54
|
-
try {
|
|
55
|
-
// 读取文件内容
|
|
56
|
-
const fileContent = content ?? fs.readFileSync(filePath, 'utf-8');
|
|
57
|
-
const features = {
|
|
58
|
-
frameworks: [],
|
|
59
|
-
tools: ['Vite'],
|
|
60
|
-
toolsDetail: [{
|
|
61
|
-
name: 'Vite',
|
|
62
|
-
category: 'build',
|
|
63
|
-
config: {}
|
|
64
|
-
}],
|
|
65
|
-
keywords: []
|
|
66
|
-
};
|
|
67
|
-
// 分析导入的插件
|
|
68
|
-
this.analyzePluginImports(fileContent, features);
|
|
69
|
-
// 分析插件配置
|
|
70
|
-
this.analyzePluginConfig(fileContent, features);
|
|
71
|
-
// 分析 resolve.alias
|
|
72
|
-
this.analyzeAliasConfig(fileContent, features);
|
|
73
|
-
// 分析 server 配置
|
|
74
|
-
this.analyzeServerConfig(fileContent, features);
|
|
75
|
-
// 分析 build 配置
|
|
76
|
-
this.analyzeBuildConfig(fileContent, features);
|
|
77
|
-
return {
|
|
78
|
-
features,
|
|
79
|
-
confidence: 0.9,
|
|
80
|
-
analyzerName: this.name,
|
|
81
|
-
duration: Date.now() - startTime
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
86
|
-
return {
|
|
87
|
-
features: {},
|
|
88
|
-
confidence: 0,
|
|
89
|
-
analyzerName: this.name,
|
|
90
|
-
duration: Date.now() - startTime,
|
|
91
|
-
error: `分析 Vite 配置失败: ${message}`
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* 分析插件导入语句
|
|
97
|
-
*/
|
|
98
|
-
analyzePluginImports(content, features) {
|
|
99
|
-
// 匹配 import 语句
|
|
100
|
-
const importRegex = /import\s+.*?\s+from\s+['"]([^'"]+)['"]/g;
|
|
101
|
-
let match;
|
|
102
|
-
while ((match = importRegex.exec(content)) !== null) {
|
|
103
|
-
const packageName = match[1];
|
|
104
|
-
const mapping = this.PLUGIN_MAPPINGS[packageName];
|
|
105
|
-
if (mapping) {
|
|
106
|
-
if (mapping.type === 'framework') {
|
|
107
|
-
if (!features.frameworks.includes(mapping.name)) {
|
|
108
|
-
features.frameworks.push(mapping.name);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
if (!features.tools.includes(mapping.name)) {
|
|
113
|
-
features.tools.push(mapping.name);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
// 检测 ElementPlus 自动导入
|
|
119
|
-
if (content.includes('ElementPlusResolver') ||
|
|
120
|
-
content.includes('element-plus')) {
|
|
121
|
-
if (!features.tools.includes('Element Plus')) {
|
|
122
|
-
features.tools.push('Element Plus');
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
// 检测 Ant Design Vue
|
|
126
|
-
if (content.includes('AntDesignVueResolver') ||
|
|
127
|
-
content.includes('ant-design-vue')) {
|
|
128
|
-
if (!features.tools.includes('Ant Design Vue')) {
|
|
129
|
-
features.tools.push('Ant Design Vue');
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
// 检测 Naive UI
|
|
133
|
-
if (content.includes('NaiveUiResolver') ||
|
|
134
|
-
content.includes('naive-ui')) {
|
|
135
|
-
if (!features.tools.includes('Naive UI')) {
|
|
136
|
-
features.tools.push('Naive UI');
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* 分析插件配置部分
|
|
142
|
-
*/
|
|
143
|
-
analyzePluginConfig(content, features) {
|
|
144
|
-
// 检测 Vue I18n
|
|
145
|
-
if (content.includes('VueI18nPlugin') ||
|
|
146
|
-
content.includes('@intlify/unplugin-vue-i18n')) {
|
|
147
|
-
features.keywords.push('i18n');
|
|
148
|
-
if (!features.tools.includes('Vue I18n')) {
|
|
149
|
-
features.tools.push('Vue I18n');
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
// 检测 Mock
|
|
153
|
-
if (content.includes('viteMockServe') ||
|
|
154
|
-
content.includes('vite-plugin-mock')) {
|
|
155
|
-
features.keywords.push('mock');
|
|
156
|
-
}
|
|
157
|
-
// 检测 PWA
|
|
158
|
-
if (content.includes('VitePWA') ||
|
|
159
|
-
content.includes('vite-plugin-pwa')) {
|
|
160
|
-
features.keywords.push('pwa');
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* 分析路径别名配置
|
|
165
|
-
*/
|
|
166
|
-
analyzeAliasConfig(content, features) {
|
|
167
|
-
// 检测 @ 别名配置
|
|
168
|
-
if (content.includes("'@'") || content.includes('"@"')) {
|
|
169
|
-
features.keywords.push('path-alias');
|
|
170
|
-
}
|
|
171
|
-
// 检测 src 目录结构
|
|
172
|
-
const srcDirs = ['@/components', '@/views', '@/store', '@/api', '@/utils'];
|
|
173
|
-
for (const dir of srcDirs) {
|
|
174
|
-
if (content.includes(dir)) {
|
|
175
|
-
features.keywords.push('standard-structure');
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* 分析开发服务器配置
|
|
182
|
-
*/
|
|
183
|
-
analyzeServerConfig(content, features) {
|
|
184
|
-
// 检测代理配置
|
|
185
|
-
if (content.includes('proxy:') || content.includes('proxy :')) {
|
|
186
|
-
features.keywords.push('api-proxy');
|
|
187
|
-
}
|
|
188
|
-
// 检测 HTTPS
|
|
189
|
-
if (content.includes('https:') && content.includes('true')) {
|
|
190
|
-
features.keywords.push('https');
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* 分析构建配置
|
|
195
|
-
*/
|
|
196
|
-
analyzeBuildConfig(content, features) {
|
|
197
|
-
// 检测代码分割
|
|
198
|
-
if (content.includes('manualChunks')) {
|
|
199
|
-
features.keywords.push('code-splitting');
|
|
200
|
-
}
|
|
201
|
-
// 检测 Rollup 选项
|
|
202
|
-
if (content.includes('rollupOptions')) {
|
|
203
|
-
features.keywords.push('rollup-config');
|
|
204
|
-
}
|
|
205
|
-
// 检测源码映射
|
|
206
|
-
if (content.includes('sourcemap')) {
|
|
207
|
-
features.keywords.push('sourcemap');
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
//# sourceMappingURL=vite.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../../../src/core/analyzers/vite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Logger } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* 自动初始化器
|
|
4
|
-
* 在工具调用前检查项目配置,如果不存在则自动生成
|
|
5
|
-
*/
|
|
6
|
-
export declare class AutoInitializer {
|
|
7
|
-
private logger?;
|
|
8
|
-
private initialized;
|
|
9
|
-
constructor(logger?: Logger | undefined);
|
|
10
|
-
/**
|
|
11
|
-
* 检查并初始化项目配置
|
|
12
|
-
* @param workspacePath 工作区路径
|
|
13
|
-
* @returns 是否需要初始化(返回 true 表示已执行初始化)
|
|
14
|
-
*/
|
|
15
|
-
ensureProjectConfig(workspacePath?: string): Promise<{
|
|
16
|
-
needsInit: boolean;
|
|
17
|
-
initialized: boolean;
|
|
18
|
-
message: string;
|
|
19
|
-
}>;
|
|
20
|
-
/**
|
|
21
|
-
* 检测工作区路径
|
|
22
|
-
*/
|
|
23
|
-
private detectWorkspacePath;
|
|
24
|
-
/**
|
|
25
|
-
* 判断是否是有效的项目目录
|
|
26
|
-
*/
|
|
27
|
-
private isValidProject;
|
|
28
|
-
/**
|
|
29
|
-
* 重置初始化状态(用于测试)
|
|
30
|
-
*/
|
|
31
|
-
reset(): void;
|
|
32
|
-
private log;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=autoInitializer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autoInitializer.d.ts","sourceRoot":"","sources":["../../src/core/autoInitializer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC;;;GAGG;AACH,qBAAa,eAAe;IAGZ,OAAO,CAAC,MAAM,CAAC;IAF3B,OAAO,CAAC,WAAW,CAAmC;gBAElC,MAAM,CAAC,EAAE,MAAM,YAAA;IAEnC;;;;OAIG;IACG,mBAAmB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACvD,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;IA8EF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,GAAG;CAOd"}
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { analyzeProject } from '../tools/analyzeProject.js';
|
|
4
|
-
import { generateConfig } from '../tools/generateConfig.js';
|
|
5
|
-
/**
|
|
6
|
-
* 自动初始化器
|
|
7
|
-
* 在工具调用前检查项目配置,如果不存在则自动生成
|
|
8
|
-
*/
|
|
9
|
-
export class AutoInitializer {
|
|
10
|
-
logger;
|
|
11
|
-
initialized = new Map();
|
|
12
|
-
constructor(logger) {
|
|
13
|
-
this.logger = logger;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* 检查并初始化项目配置
|
|
17
|
-
* @param workspacePath 工作区路径
|
|
18
|
-
* @returns 是否需要初始化(返回 true 表示已执行初始化)
|
|
19
|
-
*/
|
|
20
|
-
async ensureProjectConfig(workspacePath) {
|
|
21
|
-
// 检测工作区路径
|
|
22
|
-
const projectPath = workspacePath || this.detectWorkspacePath();
|
|
23
|
-
if (!projectPath) {
|
|
24
|
-
return {
|
|
25
|
-
needsInit: false,
|
|
26
|
-
initialized: false,
|
|
27
|
-
message: '未检测到工作区路径'
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
// 检查是否已经初始化过(避免重复)
|
|
31
|
-
if (this.initialized.get(projectPath)) {
|
|
32
|
-
return {
|
|
33
|
-
needsInit: false,
|
|
34
|
-
initialized: true,
|
|
35
|
-
message: `项目已配置: ${path.basename(projectPath)}`
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
// 检查是否存在配置文件
|
|
39
|
-
const configPath = path.join(projectPath, '.github', 'copilot-instructions.md');
|
|
40
|
-
const hasConfig = fs.existsSync(configPath);
|
|
41
|
-
if (hasConfig) {
|
|
42
|
-
this.initialized.set(projectPath, true);
|
|
43
|
-
return {
|
|
44
|
-
needsInit: false,
|
|
45
|
-
initialized: true,
|
|
46
|
-
message: `项目已有配置: ${path.basename(projectPath)}`
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
// 需要初始化
|
|
50
|
-
this.log(`🔍 检测到项目未配置,开始自动分析和生成配置...`);
|
|
51
|
-
this.log(`📁 项目路径: ${projectPath}`);
|
|
52
|
-
try {
|
|
53
|
-
// 1. 分析项目
|
|
54
|
-
this.log('1️⃣ 分析项目技术栈...');
|
|
55
|
-
const analysisResult = await analyzeProject({ projectPath });
|
|
56
|
-
if (analysisResult.content?.[0]?.text) {
|
|
57
|
-
const analysis = JSON.parse(analysisResult.content[0].text);
|
|
58
|
-
this.log(`✅ 检测到: ${analysis.frameworks?.join(', ') || '未知技术栈'}`);
|
|
59
|
-
// 2. 生成配置
|
|
60
|
-
this.log('2️⃣ 生成项目配置文件...');
|
|
61
|
-
await generateConfig({
|
|
62
|
-
projectPath,
|
|
63
|
-
autoMatch: true
|
|
64
|
-
});
|
|
65
|
-
this.initialized.set(projectPath, true);
|
|
66
|
-
return {
|
|
67
|
-
needsInit: true,
|
|
68
|
-
initialized: true,
|
|
69
|
-
message: `✅ 项目配置已自动生成\n📁 路径: ${configPath}\n🎯 技术栈: ${analysis.frameworks?.join(', ')}`
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
this.log(`❌ 自动初始化失败: ${error}`);
|
|
75
|
-
return {
|
|
76
|
-
needsInit: true,
|
|
77
|
-
initialized: false,
|
|
78
|
-
message: `⚠️ 自动初始化失败: ${error instanceof Error ? error.message : String(error)}`
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
return {
|
|
82
|
-
needsInit: true,
|
|
83
|
-
initialized: false,
|
|
84
|
-
message: '⚠️ 无法完成自动初始化'
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* 检测工作区路径
|
|
89
|
-
*/
|
|
90
|
-
detectWorkspacePath() {
|
|
91
|
-
// 优先级 1: 环境变量
|
|
92
|
-
if (process.env.WORKSPACE_PATH) {
|
|
93
|
-
return process.env.WORKSPACE_PATH;
|
|
94
|
-
}
|
|
95
|
-
// 优先级 2: 当前工作目录
|
|
96
|
-
const cwd = process.cwd();
|
|
97
|
-
if (this.isValidProject(cwd)) {
|
|
98
|
-
return cwd;
|
|
99
|
-
}
|
|
100
|
-
// 优先级 3: 尝试从常见位置检测
|
|
101
|
-
const possiblePaths = [
|
|
102
|
-
path.join(cwd, '..'),
|
|
103
|
-
path.join(cwd, '../..'),
|
|
104
|
-
];
|
|
105
|
-
for (const possiblePath of possiblePaths) {
|
|
106
|
-
if (this.isValidProject(possiblePath)) {
|
|
107
|
-
return possiblePath;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return null;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* 判断是否是有效的项目目录
|
|
114
|
-
*/
|
|
115
|
-
isValidProject(dirPath) {
|
|
116
|
-
if (!fs.existsSync(dirPath)) {
|
|
117
|
-
return false;
|
|
118
|
-
}
|
|
119
|
-
// 检查是否有项目标志文件
|
|
120
|
-
const markers = [
|
|
121
|
-
'package.json',
|
|
122
|
-
'pubspec.yaml',
|
|
123
|
-
'pom.xml',
|
|
124
|
-
'go.mod',
|
|
125
|
-
'Cargo.toml',
|
|
126
|
-
'.git'
|
|
127
|
-
];
|
|
128
|
-
return markers.some(marker => fs.existsSync(path.join(dirPath, marker)));
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* 重置初始化状态(用于测试)
|
|
132
|
-
*/
|
|
133
|
-
reset() {
|
|
134
|
-
this.initialized.clear();
|
|
135
|
-
}
|
|
136
|
-
log(message) {
|
|
137
|
-
if (this.logger) {
|
|
138
|
-
this.logger.log(message);
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
console.error(`[AutoInit] ${message}`);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=autoInitializer.js.map
|