@yeepay/coderocket-mcp 1.3.2 → 1.4.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/.crush/crush.db +0 -0
- package/.crush/crush.db-shm +0 -0
- package/.crush/crush.db-wal +0 -0
- package/CHANGELOG.md +24 -8
- package/README.md +1 -1
- package/debug.js +33 -0
- package/dist/ai/SmartAIManager.d.ts +72 -0
- package/dist/ai/SmartAIManager.d.ts.map +1 -0
- package/dist/ai/SmartAIManager.js +232 -0
- package/dist/ai/SmartAIManager.js.map +1 -0
- package/dist/coderocket.d.ts +8 -166
- package/dist/coderocket.d.ts.map +1 -1
- package/dist/coderocket.js +18 -1122
- package/dist/coderocket.js.map +1 -1
- package/dist/config/ConfigManager.d.ts +83 -0
- package/dist/config/ConfigManager.d.ts.map +1 -0
- package/dist/config/ConfigManager.js +215 -0
- package/dist/config/ConfigManager.js.map +1 -0
- package/dist/index.js +48 -54
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +10 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +33 -14
- package/dist/logger.js.map +1 -1
- package/dist/prompts/PromptManager.d.ts +76 -0
- package/dist/prompts/PromptManager.d.ts.map +1 -0
- package/dist/prompts/PromptManager.js +263 -0
- package/dist/prompts/PromptManager.js.map +1 -0
- package/dist/services/CodeRocketService.d.ts +113 -0
- package/dist/services/CodeRocketService.d.ts.map +1 -0
- package/dist/services/CodeRocketService.js +651 -0
- package/dist/services/CodeRocketService.js.map +1 -0
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +195 -44
- package/dist/test.js.map +1 -1
- package/dist/toolDefinitions.d.ts.map +1 -1
- package/dist/toolDefinitions.js +56 -1
- package/dist/toolDefinitions.js.map +1 -1
- package/dist/types.d.ts +172 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +53 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/prompts/code-review-prompt.md +101 -0
- package/prompts/file-review-prompt.md +165 -0
- package/prompts/git-changes-review-prompt.md +122 -0
- package/prompts/git-commit-review-prompt.md +314 -0
- package/simple-test.js +56 -0
- package/AI_SERVICE_SETUP.md +0 -62
- package/dist/banner.d.ts +0 -56
- package/dist/banner.d.ts.map +0 -1
- package/dist/banner.js +0 -138
- package/dist/banner.js.map +0 -1
package/.crush/crush.db
CHANGED
Binary file
|
package/.crush/crush.db-shm
CHANGED
Binary file
|
package/.crush/crush.db-wal
CHANGED
Binary file
|
package/CHANGELOG.md
CHANGED
@@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
7
|
|
8
|
+
## [1.4.0] - 2025-08-02
|
9
|
+
|
10
|
+
### 🎯 统一提示词架构优化
|
11
|
+
|
12
|
+
#### Changed
|
13
|
+
- **重大优化**:实现真正的统一提示词设计,所有审查功能统一使用 `git-commit-review-prompt.md`
|
14
|
+
- **架构简化**:移除冗余的提示词文件映射,实现"一套提示词,四种审查方式"
|
15
|
+
- **一致性保证**:确保所有审查结果使用相同的专业标准和输出格式
|
16
|
+
|
17
|
+
#### Fixed
|
18
|
+
- **启动警告修复**:彻底解决了启动时的提示词文件缺失警告
|
19
|
+
- **文件管理优化**:清理了不必要的重复提示词文件
|
20
|
+
|
21
|
+
#### Technical Improvements
|
22
|
+
- 优化了 PromptManager 的文件映射逻辑,所有功能统一映射到单一提示词文件
|
23
|
+
- 更新了文档以反映统一提示词的设计理念
|
24
|
+
- 简化了提示词维护流程,降低了系统复杂度
|
25
|
+
|
26
|
+
#### Benefits
|
27
|
+
- **维护性**:只需维护一个高质量的提示词文件
|
28
|
+
- **一致性**:所有审查功能使用相同的专业标准
|
29
|
+
- **可预测性**:审查结果风格和格式保持一致
|
30
|
+
- **简洁性**:避免了重复文件和不必要的复杂性
|
31
|
+
|
8
32
|
## [1.2.7] - 2025-08-01
|
9
33
|
|
10
34
|
### 🔧 关键修复:ConfigManager 初始化时序
|
@@ -263,13 +287,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
263
287
|
|
264
288
|
### 🧹 Service Cleanup & Test Enhancement
|
265
289
|
|
266
|
-
#### ✨ Removed
|
267
|
-
|
268
|
-
- **OpenCode Service**: Removed expired OpenCode service integration
|
269
|
-
- Removed from type definitions and service configurations
|
270
|
-
- Updated AI service manager to only support Gemini and ClaudeCode
|
271
|
-
- Cleaned up documentation and environment variable references
|
272
|
-
|
273
290
|
#### 🐛 Critical Bug Fixes
|
274
291
|
|
275
292
|
- **Version Display Issue**: Fixed version command always showing hardcoded fallback
|
@@ -327,7 +344,6 @@ This release marks a major milestone: **CodeRocket MCP is now completely indepen
|
|
327
344
|
- **Direct AI Service Integration**: Native API implementations for:
|
328
345
|
- **Gemini**: Using `@google/generative-ai` SDK with `gemini-1.5-flash` model
|
329
346
|
- **ClaudeCode**: Using `@anthropic-ai/sdk` for direct API calls
|
330
|
-
- **OpenCode**: HTTP-based API integration with axios
|
331
347
|
|
332
348
|
- **Intelligent AI Manager**: New `AIManager` class with:
|
333
349
|
- Smart service selection and failover
|
package/README.md
CHANGED
package/debug.js
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
import { ConfigManager } from './dist/config/ConfigManager.js';
|
2
|
+
|
3
|
+
async function debug() {
|
4
|
+
console.log('开始调试ConfigManager...');
|
5
|
+
|
6
|
+
try {
|
7
|
+
await ConfigManager.initialize();
|
8
|
+
console.log('ConfigManager初始化成功');
|
9
|
+
|
10
|
+
const timeout = ConfigManager.get('AI_TIMEOUT');
|
11
|
+
console.log('AI_TIMEOUT值:', timeout, '类型:', typeof timeout);
|
12
|
+
console.log('AI_TIMEOUT === "30":', timeout === '30');
|
13
|
+
|
14
|
+
const service = ConfigManager.get('AI_SERVICE');
|
15
|
+
console.log('AI_SERVICE值:', service, '类型:', typeof service);
|
16
|
+
console.log('AI_SERVICE === "gemini":', service === 'gemini');
|
17
|
+
|
18
|
+
const autoSwitch = ConfigManager.get('AI_AUTO_SWITCH');
|
19
|
+
console.log('AI_AUTO_SWITCH值:', autoSwitch, '类型:', typeof autoSwitch);
|
20
|
+
console.log('AI_AUTO_SWITCH === "true":', autoSwitch === 'true');
|
21
|
+
|
22
|
+
// 测试getTimeout方法
|
23
|
+
const timeoutNumber = ConfigManager.getTimeout();
|
24
|
+
console.log('getTimeout()返回值:', timeoutNumber, '类型:', typeof timeoutNumber);
|
25
|
+
console.log('timeoutNumber === 30:', timeoutNumber === 30);
|
26
|
+
console.log('timeoutNumber > 0:', timeoutNumber > 0);
|
27
|
+
|
28
|
+
} catch (error) {
|
29
|
+
console.error('调试失败:', error.message);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
debug();
|
@@ -0,0 +1,72 @@
|
|
1
|
+
import { AIService } from '../types.js';
|
2
|
+
/**
|
3
|
+
* 智能AI服务管理器
|
4
|
+
*
|
5
|
+
* 功能:
|
6
|
+
* 1. 多AI服务支持(Gemini、ClaudeCode)
|
7
|
+
* 2. 智能故障转移
|
8
|
+
* 3. 自动重试机制
|
9
|
+
* 4. 服务状态监控
|
10
|
+
*/
|
11
|
+
export declare class SmartAIManager {
|
12
|
+
private geminiClient?;
|
13
|
+
private claudeClient?;
|
14
|
+
private serviceStatus;
|
15
|
+
constructor();
|
16
|
+
/**
|
17
|
+
* 初始化AI客户端
|
18
|
+
*/
|
19
|
+
private initializeClients;
|
20
|
+
/**
|
21
|
+
* 智能调用AI服务(带故障转移)
|
22
|
+
*/
|
23
|
+
intelligentCall(primaryService: AIService, prompt: string): Promise<{
|
24
|
+
result: string;
|
25
|
+
usedService: AIService;
|
26
|
+
}>;
|
27
|
+
/**
|
28
|
+
* 带超时的AI服务调用
|
29
|
+
*/
|
30
|
+
private callWithTimeout;
|
31
|
+
/**
|
32
|
+
* 调用指定的AI服务
|
33
|
+
*/
|
34
|
+
private callAIService;
|
35
|
+
/**
|
36
|
+
* 调用 Gemini API
|
37
|
+
*/
|
38
|
+
private callGemini;
|
39
|
+
/**
|
40
|
+
* 调用 Claude API
|
41
|
+
*/
|
42
|
+
private callClaude;
|
43
|
+
/**
|
44
|
+
* 获取备用服务
|
45
|
+
*/
|
46
|
+
private getFallbackService;
|
47
|
+
/**
|
48
|
+
* 检查服务是否可用
|
49
|
+
*/
|
50
|
+
isServiceAvailable(service: AIService): boolean;
|
51
|
+
/**
|
52
|
+
* 获取所有服务状态
|
53
|
+
*/
|
54
|
+
getServiceStatus(): Record<AIService, boolean>;
|
55
|
+
/**
|
56
|
+
* 测试服务连接
|
57
|
+
*/
|
58
|
+
testService(service: AIService): Promise<boolean>;
|
59
|
+
/**
|
60
|
+
* 刷新所有服务状态
|
61
|
+
*/
|
62
|
+
refreshServiceStatus(): Promise<void>;
|
63
|
+
/**
|
64
|
+
* 获取可用的服务列表
|
65
|
+
*/
|
66
|
+
getAvailableServices(): AIService[];
|
67
|
+
/**
|
68
|
+
* 重新初始化客户端(用于配置更新后)
|
69
|
+
*/
|
70
|
+
reinitialize(): void;
|
71
|
+
}
|
72
|
+
//# sourceMappingURL=SmartAIManager.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SmartAIManager.d.ts","sourceRoot":"","sources":["../../src/ai/SmartAIManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAC,CAAqB;IAC1C,OAAO,CAAC,YAAY,CAAC,CAAY;IACjC,OAAO,CAAC,aAAa,CAAsC;;IAM3D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgCzB;;OAEG;IACG,eAAe,CACnB,cAAc,EAAE,SAAS,EACzB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,SAAS,CAAA;KAAE,CAAC;IAwCtD;;OAEG;YACW,eAAe;IAqB7B;;OAEG;YACW,aAAa;IAe3B;;OAEG;YACW,UAAU;IAwBxB;;OAEG;YACW,UAAU;IAuBxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO;IAI/C;;OAEG;IACH,gBAAgB,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;IAI9C;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAYvD;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3C;;OAEG;IACH,oBAAoB,IAAI,SAAS,EAAE;IAMnC;;OAEG;IACH,YAAY,IAAI,IAAI;CAGrB"}
|
@@ -0,0 +1,232 @@
|
|
1
|
+
import { GoogleGenerativeAI } from '@google/generative-ai';
|
2
|
+
import Anthropic from '@anthropic-ai/sdk';
|
3
|
+
import { ConfigManager } from '../config/ConfigManager.js';
|
4
|
+
import { AIServiceError, logger } from '../logger.js';
|
5
|
+
/**
|
6
|
+
* 智能AI服务管理器
|
7
|
+
*
|
8
|
+
* 功能:
|
9
|
+
* 1. 多AI服务支持(Gemini、ClaudeCode)
|
10
|
+
* 2. 智能故障转移
|
11
|
+
* 3. 自动重试机制
|
12
|
+
* 4. 服务状态监控
|
13
|
+
*/
|
14
|
+
export class SmartAIManager {
|
15
|
+
geminiClient;
|
16
|
+
claudeClient;
|
17
|
+
serviceStatus = new Map();
|
18
|
+
constructor() {
|
19
|
+
this.initializeClients();
|
20
|
+
}
|
21
|
+
/**
|
22
|
+
* 初始化AI客户端
|
23
|
+
*/
|
24
|
+
initializeClients() {
|
25
|
+
// 初始化 Gemini 客户端
|
26
|
+
const geminiKey = ConfigManager.getAPIKey('gemini');
|
27
|
+
if (geminiKey) {
|
28
|
+
try {
|
29
|
+
this.geminiClient = new GoogleGenerativeAI(geminiKey);
|
30
|
+
this.serviceStatus.set('gemini', true);
|
31
|
+
logger.debug('Gemini 客户端初始化成功');
|
32
|
+
}
|
33
|
+
catch (error) {
|
34
|
+
logger.warn('Gemini 客户端初始化失败', { error: error instanceof Error ? error.message : String(error) });
|
35
|
+
this.serviceStatus.set('gemini', false);
|
36
|
+
}
|
37
|
+
}
|
38
|
+
else {
|
39
|
+
this.serviceStatus.set('gemini', false);
|
40
|
+
}
|
41
|
+
// 初始化 Claude 客户端
|
42
|
+
const claudeKey = ConfigManager.getAPIKey('claudecode');
|
43
|
+
if (claudeKey) {
|
44
|
+
try {
|
45
|
+
this.claudeClient = new Anthropic({ apiKey: claudeKey });
|
46
|
+
this.serviceStatus.set('claudecode', true);
|
47
|
+
logger.debug('Claude 客户端初始化成功');
|
48
|
+
}
|
49
|
+
catch (error) {
|
50
|
+
logger.warn('Claude 客户端初始化失败', { error: error instanceof Error ? error.message : String(error) });
|
51
|
+
this.serviceStatus.set('claudecode', false);
|
52
|
+
}
|
53
|
+
}
|
54
|
+
else {
|
55
|
+
this.serviceStatus.set('claudecode', false);
|
56
|
+
}
|
57
|
+
}
|
58
|
+
/**
|
59
|
+
* 智能调用AI服务(带故障转移)
|
60
|
+
*/
|
61
|
+
async intelligentCall(primaryService, prompt) {
|
62
|
+
const maxRetries = ConfigManager.getMaxRetries();
|
63
|
+
const timeout = ConfigManager.getTimeout() * 1000; // 转换为毫秒
|
64
|
+
const autoSwitch = ConfigManager.isAutoSwitchEnabled();
|
65
|
+
// 首先尝试主要服务
|
66
|
+
try {
|
67
|
+
const result = await this.callWithTimeout(primaryService, prompt, timeout);
|
68
|
+
return { result, usedService: primaryService };
|
69
|
+
}
|
70
|
+
catch (error) {
|
71
|
+
logger.warn(`主要AI服务 ${primaryService} 调用失败`, {
|
72
|
+
error: error instanceof Error ? error.message : String(error),
|
73
|
+
});
|
74
|
+
// 如果启用自动切换,尝试备用服务
|
75
|
+
if (autoSwitch) {
|
76
|
+
const fallbackService = this.getFallbackService(primaryService);
|
77
|
+
if (fallbackService && this.isServiceAvailable(fallbackService)) {
|
78
|
+
try {
|
79
|
+
logger.info(`切换到备用AI服务: ${fallbackService}`);
|
80
|
+
const result = await this.callWithTimeout(fallbackService, prompt, timeout);
|
81
|
+
return { result, usedService: fallbackService };
|
82
|
+
}
|
83
|
+
catch (fallbackError) {
|
84
|
+
logger.error(`备用AI服务 ${fallbackService} 也失败`, fallbackError instanceof Error ? fallbackError : new Error(String(fallbackError)));
|
85
|
+
}
|
86
|
+
}
|
87
|
+
}
|
88
|
+
// 如果所有服务都失败,抛出错误
|
89
|
+
throw new AIServiceError(`所有AI服务都不可用。主要服务 ${primaryService} 错误: ${error instanceof Error ? error.message : String(error)}`, primaryService);
|
90
|
+
}
|
91
|
+
}
|
92
|
+
/**
|
93
|
+
* 带超时的AI服务调用
|
94
|
+
*/
|
95
|
+
async callWithTimeout(service, prompt, timeout) {
|
96
|
+
return new Promise(async (resolve, reject) => {
|
97
|
+
const timeoutId = setTimeout(() => {
|
98
|
+
reject(new AIServiceError(`AI服务调用超时 (${timeout}ms)`, service));
|
99
|
+
}, timeout);
|
100
|
+
try {
|
101
|
+
const result = await this.callAIService(service, prompt);
|
102
|
+
clearTimeout(timeoutId);
|
103
|
+
resolve(result);
|
104
|
+
}
|
105
|
+
catch (error) {
|
106
|
+
clearTimeout(timeoutId);
|
107
|
+
reject(error);
|
108
|
+
}
|
109
|
+
});
|
110
|
+
}
|
111
|
+
/**
|
112
|
+
* 调用指定的AI服务
|
113
|
+
*/
|
114
|
+
async callAIService(service, prompt) {
|
115
|
+
if (!this.isServiceAvailable(service)) {
|
116
|
+
throw new AIServiceError(`AI服务 ${service} 不可用`, service);
|
117
|
+
}
|
118
|
+
switch (service) {
|
119
|
+
case 'gemini':
|
120
|
+
return await this.callGemini(prompt);
|
121
|
+
case 'claudecode':
|
122
|
+
return await this.callClaude(prompt);
|
123
|
+
default:
|
124
|
+
throw new AIServiceError(`不支持的AI服务: ${service}`, service);
|
125
|
+
}
|
126
|
+
}
|
127
|
+
/**
|
128
|
+
* 调用 Gemini API
|
129
|
+
*/
|
130
|
+
async callGemini(prompt) {
|
131
|
+
if (!this.geminiClient) {
|
132
|
+
throw new AIServiceError('Gemini 客户端未初始化', 'gemini');
|
133
|
+
}
|
134
|
+
try {
|
135
|
+
const model = this.geminiClient.getGenerativeModel({
|
136
|
+
model: ConfigManager.get('GEMINI_MODEL', 'gemini-1.5-flash'),
|
137
|
+
});
|
138
|
+
const result = await model.generateContent(prompt);
|
139
|
+
const response = await result.response;
|
140
|
+
const text = response.text();
|
141
|
+
if (!text) {
|
142
|
+
throw new AIServiceError('Gemini 返回空响应', 'gemini');
|
143
|
+
}
|
144
|
+
return text;
|
145
|
+
}
|
146
|
+
catch (error) {
|
147
|
+
throw new AIServiceError(`Gemini API 调用失败: ${error instanceof Error ? error.message : String(error)}`, 'gemini');
|
148
|
+
}
|
149
|
+
}
|
150
|
+
/**
|
151
|
+
* 调用 Claude API
|
152
|
+
*/
|
153
|
+
async callClaude(prompt) {
|
154
|
+
if (!this.claudeClient) {
|
155
|
+
throw new AIServiceError('Claude 客户端未初始化', 'claudecode');
|
156
|
+
}
|
157
|
+
try {
|
158
|
+
const response = await this.claudeClient.messages.create({
|
159
|
+
model: ConfigManager.get('CLAUDE_MODEL', 'claude-3-sonnet-20240229'),
|
160
|
+
max_tokens: 4000,
|
161
|
+
messages: [{ role: 'user', content: prompt }],
|
162
|
+
});
|
163
|
+
const content = response.content[0];
|
164
|
+
if (content.type !== 'text') {
|
165
|
+
throw new AIServiceError('Claude 返回非文本响应', 'claudecode');
|
166
|
+
}
|
167
|
+
return content.text;
|
168
|
+
}
|
169
|
+
catch (error) {
|
170
|
+
throw new AIServiceError(`Claude API 调用失败: ${error instanceof Error ? error.message : String(error)}`, 'claudecode');
|
171
|
+
}
|
172
|
+
}
|
173
|
+
/**
|
174
|
+
* 获取备用服务
|
175
|
+
*/
|
176
|
+
getFallbackService(primaryService) {
|
177
|
+
const fallbackMap = {
|
178
|
+
gemini: 'claudecode',
|
179
|
+
claudecode: 'gemini',
|
180
|
+
};
|
181
|
+
return fallbackMap[primaryService] || null;
|
182
|
+
}
|
183
|
+
/**
|
184
|
+
* 检查服务是否可用
|
185
|
+
*/
|
186
|
+
isServiceAvailable(service) {
|
187
|
+
return this.serviceStatus.get(service) === true;
|
188
|
+
}
|
189
|
+
/**
|
190
|
+
* 获取所有服务状态
|
191
|
+
*/
|
192
|
+
getServiceStatus() {
|
193
|
+
return Object.fromEntries(this.serviceStatus);
|
194
|
+
}
|
195
|
+
/**
|
196
|
+
* 测试服务连接
|
197
|
+
*/
|
198
|
+
async testService(service) {
|
199
|
+
try {
|
200
|
+
await this.callAIService(service, '测试连接,请回复"连接成功"');
|
201
|
+
this.serviceStatus.set(service, true);
|
202
|
+
return true;
|
203
|
+
}
|
204
|
+
catch (error) {
|
205
|
+
this.serviceStatus.set(service, false);
|
206
|
+
logger.warn(`AI服务 ${service} 连接测试失败`, { error: error instanceof Error ? error.message : String(error) });
|
207
|
+
return false;
|
208
|
+
}
|
209
|
+
}
|
210
|
+
/**
|
211
|
+
* 刷新所有服务状态
|
212
|
+
*/
|
213
|
+
async refreshServiceStatus() {
|
214
|
+
const services = ['gemini', 'claudecode'];
|
215
|
+
await Promise.all(services.map(service => this.testService(service)));
|
216
|
+
}
|
217
|
+
/**
|
218
|
+
* 获取可用的服务列表
|
219
|
+
*/
|
220
|
+
getAvailableServices() {
|
221
|
+
return Array.from(this.serviceStatus.entries())
|
222
|
+
.filter(([, available]) => available)
|
223
|
+
.map(([service]) => service);
|
224
|
+
}
|
225
|
+
/**
|
226
|
+
* 重新初始化客户端(用于配置更新后)
|
227
|
+
*/
|
228
|
+
reinitialize() {
|
229
|
+
this.initializeClients();
|
230
|
+
}
|
231
|
+
}
|
232
|
+
//# sourceMappingURL=SmartAIManager.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SmartAIManager.js","sourceRoot":"","sources":["../../src/ai/SmartAIManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAc;IACjB,YAAY,CAAsB;IAClC,YAAY,CAAa;IACzB,aAAa,GAA4B,IAAI,GAAG,EAAE,CAAC;IAE3D;QACE,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,iBAAiB;QACjB,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,CAAC,YAAY,GAAG,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBACtD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACvC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,iBAAiB;QACjB,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,CAAC,YAAY,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACzD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC3C,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,cAAyB,EACzB,MAAc;QAEd,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ;QAC3D,MAAM,UAAU,GAAG,aAAa,CAAC,mBAAmB,EAAE,CAAC;QAEvD,WAAW;QACX,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,UAAU,cAAc,OAAO,EAAE;gBAC3C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;YAEH,kBAAkB;YAClB,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBAChE,IAAI,eAAe,IAAI,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,CAAC;oBAChE,IAAI,CAAC;wBACH,MAAM,CAAC,IAAI,CAAC,cAAc,eAAe,EAAE,CAAC,CAAC;wBAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CACvC,eAAe,EACf,MAAM,EACN,OAAO,CACR,CAAC;wBACF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;oBAClD,CAAC;oBAAC,OAAO,aAAa,EAAE,CAAC;wBACvB,MAAM,CAAC,KAAK,CAAC,UAAU,eAAe,MAAM,EAAE,aAAa,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACnI,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iBAAiB;YACjB,MAAM,IAAI,cAAc,CACtB,mBAAmB,cAAc,QAAQ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACjG,cAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAC3B,OAAkB,EAClB,MAAc,EACd,OAAe;QAEf,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,MAAM,CAAC,IAAI,cAAc,CAAC,aAAa,OAAO,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YACjE,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACzD,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,OAAkB,EAAE,MAAc;QAC5D,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,cAAc,CAAC,QAAQ,OAAO,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;QAED,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,QAAQ;gBACX,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvC,KAAK,YAAY;gBACf,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvC;gBACE,MAAM,IAAI,cAAc,CAAC,aAAa,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,MAAc;QACrC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,cAAc,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;gBACjD,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;aAC7D,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE7B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,cAAc,CAAC,oBAAoB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACnH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,MAAc;QACrC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,cAAc,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACvD,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,0BAA0B,CAAC;gBACpE,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;aAC9C,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC5B,MAAM,IAAI,cAAc,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,cAAc,CAAC,oBAAoB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACvH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,cAAyB;QAClD,MAAM,WAAW,GAAiC;YAChD,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,QAAQ;SACrB,CAAC;QACF,OAAO,WAAW,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAkB;QACnC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAA+B,CAAC;IAC9E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAkB;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACpD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,QAAQ,OAAO,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzG,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACxB,MAAM,QAAQ,GAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;aAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;CACF"}
|
package/dist/coderocket.d.ts
CHANGED
@@ -1,170 +1,12 @@
|
|
1
|
-
|
1
|
+
export { ConfigManager } from './config/ConfigManager.js';
|
2
|
+
export { PromptManager } from './prompts/PromptManager.js';
|
3
|
+
export { SmartAIManager } from './ai/SmartAIManager.js';
|
4
|
+
export { CodeRocketService } from './services/CodeRocketService.js';
|
2
5
|
/**
|
3
|
-
*
|
6
|
+
* 初始化所有系统组件
|
4
7
|
*
|
5
|
-
*
|
6
|
-
*
|
7
|
-
* 2. 项目级 .env 文件
|
8
|
-
* 3. 全局 ~/.coderocket/env 文件
|
9
|
-
* 4. 默认值(最低优先级)
|
8
|
+
* 这个函数确保所有必要的系统组件都被正确初始化
|
9
|
+
* 保持向后兼容性
|
10
10
|
*/
|
11
|
-
export declare
|
12
|
-
private static config;
|
13
|
-
private static initialized;
|
14
|
-
/**
|
15
|
-
* 初始化配置系统
|
16
|
-
*/
|
17
|
-
static initialize(): Promise<void>;
|
18
|
-
/**
|
19
|
-
* 加载默认配置
|
20
|
-
*/
|
21
|
-
private static loadDefaults;
|
22
|
-
/**
|
23
|
-
* 加载全局配置文件 ~/.coderocket/env
|
24
|
-
*/
|
25
|
-
private static loadGlobalConfig;
|
26
|
-
/**
|
27
|
-
* 加载项目配置文件 .env
|
28
|
-
*/
|
29
|
-
private static loadProjectConfig;
|
30
|
-
/**
|
31
|
-
* 加载环境变量(最高优先级)
|
32
|
-
*/
|
33
|
-
private static loadEnvironmentVariables;
|
34
|
-
/**
|
35
|
-
* 解析 .env 文件内容
|
36
|
-
*/
|
37
|
-
private static parseEnvContent;
|
38
|
-
/**
|
39
|
-
* 获取配置值
|
40
|
-
*/
|
41
|
-
static get(key: string, defaultValue?: any): any;
|
42
|
-
/**
|
43
|
-
* 获取API密钥环境变量名
|
44
|
-
*/
|
45
|
-
static getAPIKeyEnvVar(service: AIService): string;
|
46
|
-
/**
|
47
|
-
* 获取API密钥
|
48
|
-
*/
|
49
|
-
static getAPIKey(service: AIService): string;
|
50
|
-
/**
|
51
|
-
* 获取AI服务配置
|
52
|
-
*/
|
53
|
-
static getAIService(): AIService;
|
54
|
-
/**
|
55
|
-
* 获取超时配置
|
56
|
-
*/
|
57
|
-
static getTimeout(): number;
|
58
|
-
/**
|
59
|
-
* 获取最大重试次数
|
60
|
-
*/
|
61
|
-
static getMaxRetries(): number;
|
62
|
-
/**
|
63
|
-
* 是否启用自动切换
|
64
|
-
*/
|
65
|
-
static isAutoSwitchEnabled(): boolean;
|
66
|
-
/**
|
67
|
-
* 获取AI服务语言设置
|
68
|
-
*/
|
69
|
-
static getAILanguage(): string;
|
70
|
-
/**
|
71
|
-
* 获取安全的配置信息(隐藏敏感信息)
|
72
|
-
*/
|
73
|
-
private static getSafeConfig;
|
74
|
-
/**
|
75
|
-
* 获取配置文件路径(保持向后兼容)
|
76
|
-
*/
|
77
|
-
static getConfigPath(scope: string): {
|
78
|
-
dir: string;
|
79
|
-
file: string;
|
80
|
-
};
|
81
|
-
}
|
82
|
-
/**
|
83
|
-
* 独立提示词管理类
|
84
|
-
*
|
85
|
-
* 支持多层级提示词加载:
|
86
|
-
* 1. 项目级 prompts/ 目录(优先级高)
|
87
|
-
* 2. 全局 ~/.coderocket/prompts/ 目录(优先级低)
|
88
|
-
*/
|
89
|
-
export declare class PromptManager {
|
90
|
-
private static promptCache;
|
91
|
-
/**
|
92
|
-
* 加载提示词文件
|
93
|
-
*/
|
94
|
-
static loadPrompt(name: string): Promise<string>;
|
95
|
-
/**
|
96
|
-
* 获取内置默认提示词
|
97
|
-
*/
|
98
|
-
private static getDefaultPrompt;
|
99
|
-
/**
|
100
|
-
* 清除提示词缓存
|
101
|
-
*/
|
102
|
-
static clearCache(): void;
|
103
|
-
/**
|
104
|
-
* 预加载常用提示词
|
105
|
-
*/
|
106
|
-
static preloadCommonPrompts(): Promise<void>;
|
107
|
-
}
|
108
|
-
/**
|
109
|
-
* 独立 CodeRocket 服务类
|
110
|
-
*
|
111
|
-
* 提供完全独立的代码审查和AI服务管理功能,不依赖 coderocket-cli
|
112
|
-
*/
|
113
|
-
export declare class CodeRocketService {
|
114
|
-
private aiManager;
|
115
|
-
private initialized;
|
116
|
-
constructor();
|
117
|
-
/**
|
118
|
-
* 初始化服务
|
119
|
-
*/
|
120
|
-
private ensureInitialized;
|
121
|
-
/**
|
122
|
-
* 执行AI审查的通用方法
|
123
|
-
*/
|
124
|
-
private executeAIReview;
|
125
|
-
/**
|
126
|
-
* 解析审查结果
|
127
|
-
*/
|
128
|
-
private parseReviewResult;
|
129
|
-
/**
|
130
|
-
* 审查代码片段
|
131
|
-
*/
|
132
|
-
reviewCode(request: ReviewCodeRequest): Promise<ReviewResult>;
|
133
|
-
/**
|
134
|
-
* 审查Git变更(自动检测未提交的变更)
|
135
|
-
*/
|
136
|
-
reviewChanges(request: ReviewChangesRequest): Promise<ReviewResult>;
|
137
|
-
/**
|
138
|
-
* 检查是否为Git仓库
|
139
|
-
*/
|
140
|
-
private checkGitRepository;
|
141
|
-
/**
|
142
|
-
* 获取Git变更信息
|
143
|
-
*/
|
144
|
-
private getGitChanges;
|
145
|
-
/**
|
146
|
-
* 解析Git状态输出
|
147
|
-
*/
|
148
|
-
private parseGitStatus;
|
149
|
-
/**
|
150
|
-
* 获取Git状态描述
|
151
|
-
*/
|
152
|
-
private getGitStatusDescription;
|
153
|
-
/**
|
154
|
-
* 构建变更审查提示词
|
155
|
-
*/
|
156
|
-
private buildChangesReviewPrompt;
|
157
|
-
/**
|
158
|
-
* 根据语言获取文件扩展名
|
159
|
-
*/
|
160
|
-
private getFileExtension;
|
161
|
-
/**
|
162
|
-
* 审查Git提交
|
163
|
-
*/
|
164
|
-
reviewCommit(request: ReviewCommitRequest): Promise<ReviewResult>;
|
165
|
-
/**
|
166
|
-
* 审查文件列表
|
167
|
-
*/
|
168
|
-
reviewFiles(request: ReviewFilesRequest): Promise<ReviewResult>;
|
169
|
-
}
|
11
|
+
export declare function initializeCodeRocket(): Promise<void>;
|
170
12
|
//# sourceMappingURL=coderocket.d.ts.map
|
package/dist/coderocket.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"coderocket.d.ts","sourceRoot":"","sources":["../src/coderocket.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"coderocket.d.ts","sourceRoot":"","sources":["../src/coderocket.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAMpE;;;;;GAKG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAM1D"}
|