@yeepay/coderocket-mcp 1.0.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.
- package/.eslintrc.cjs +36 -0
- package/CHANGELOG +111 -0
- package/LICENSE +201 -0
- package/README.md +400 -0
- package/bin/coderocket-mcp +108 -0
- package/dist/coderocket.d.ts +88 -0
- package/dist/coderocket.d.ts.map +1 -0
- package/dist/coderocket.js +528 -0
- package/dist/coderocket.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +167 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +71 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +204 -0
- package/dist/logger.js.map +1 -0
- package/dist/test.d.ts +9 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +108 -0
- package/dist/test.js.map +1 -0
- package/dist/types.d.ts +211 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +85 -0
- package/dist/types.js.map +1 -0
- package/eslint.config.ts +9 -0
- package/package.json +71 -0
- package/scripts/prepare-release.sh +150 -0
package/dist/types.d.ts
ADDED
@@ -0,0 +1,211 @@
|
|
1
|
+
import { z } from 'zod';
|
2
|
+
export declare const AIServiceSchema: z.ZodEnum<["gemini", "opencode", "claudecode"]>;
|
3
|
+
export type AIService = z.infer<typeof AIServiceSchema>;
|
4
|
+
export declare const ReviewStatusSchema: z.ZodEnum<["✅", "⚠️", "❌", "🔍"]>;
|
5
|
+
export type ReviewStatus = z.infer<typeof ReviewStatusSchema>;
|
6
|
+
export declare const ConfigScopeSchema: z.ZodEnum<["project", "global"]>;
|
7
|
+
export type ConfigScope = z.infer<typeof ConfigScopeSchema>;
|
8
|
+
export declare const ReviewCodeRequestSchema: z.ZodObject<{
|
9
|
+
code: z.ZodString;
|
10
|
+
language: z.ZodOptional<z.ZodString>;
|
11
|
+
context: z.ZodOptional<z.ZodString>;
|
12
|
+
ai_service: z.ZodOptional<z.ZodEnum<["gemini", "opencode", "claudecode"]>>;
|
13
|
+
custom_prompt: z.ZodOptional<z.ZodString>;
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
15
|
+
code: string;
|
16
|
+
language?: string | undefined;
|
17
|
+
context?: string | undefined;
|
18
|
+
ai_service?: "gemini" | "opencode" | "claudecode" | undefined;
|
19
|
+
custom_prompt?: string | undefined;
|
20
|
+
}, {
|
21
|
+
code: string;
|
22
|
+
language?: string | undefined;
|
23
|
+
context?: string | undefined;
|
24
|
+
ai_service?: "gemini" | "opencode" | "claudecode" | undefined;
|
25
|
+
custom_prompt?: string | undefined;
|
26
|
+
}>;
|
27
|
+
export type ReviewCodeRequest = z.infer<typeof ReviewCodeRequestSchema>;
|
28
|
+
export declare const ReviewCommitRequestSchema: z.ZodObject<{
|
29
|
+
commit_hash: z.ZodOptional<z.ZodString>;
|
30
|
+
repository_path: z.ZodOptional<z.ZodString>;
|
31
|
+
ai_service: z.ZodOptional<z.ZodEnum<["gemini", "opencode", "claudecode"]>>;
|
32
|
+
custom_prompt: z.ZodOptional<z.ZodString>;
|
33
|
+
}, "strip", z.ZodTypeAny, {
|
34
|
+
ai_service?: "gemini" | "opencode" | "claudecode" | undefined;
|
35
|
+
custom_prompt?: string | undefined;
|
36
|
+
commit_hash?: string | undefined;
|
37
|
+
repository_path?: string | undefined;
|
38
|
+
}, {
|
39
|
+
ai_service?: "gemini" | "opencode" | "claudecode" | undefined;
|
40
|
+
custom_prompt?: string | undefined;
|
41
|
+
commit_hash?: string | undefined;
|
42
|
+
repository_path?: string | undefined;
|
43
|
+
}>;
|
44
|
+
export type ReviewCommitRequest = z.infer<typeof ReviewCommitRequestSchema>;
|
45
|
+
export declare const ReviewFilesRequestSchema: z.ZodObject<{
|
46
|
+
files: z.ZodArray<z.ZodString, "many">;
|
47
|
+
repository_path: z.ZodOptional<z.ZodString>;
|
48
|
+
ai_service: z.ZodOptional<z.ZodEnum<["gemini", "opencode", "claudecode"]>>;
|
49
|
+
custom_prompt: z.ZodOptional<z.ZodString>;
|
50
|
+
}, "strip", z.ZodTypeAny, {
|
51
|
+
files: string[];
|
52
|
+
ai_service?: "gemini" | "opencode" | "claudecode" | undefined;
|
53
|
+
custom_prompt?: string | undefined;
|
54
|
+
repository_path?: string | undefined;
|
55
|
+
}, {
|
56
|
+
files: string[];
|
57
|
+
ai_service?: "gemini" | "opencode" | "claudecode" | undefined;
|
58
|
+
custom_prompt?: string | undefined;
|
59
|
+
repository_path?: string | undefined;
|
60
|
+
}>;
|
61
|
+
export type ReviewFilesRequest = z.infer<typeof ReviewFilesRequestSchema>;
|
62
|
+
export declare const ConfigureAIServiceRequestSchema: z.ZodObject<{
|
63
|
+
service: z.ZodEnum<["gemini", "opencode", "claudecode"]>;
|
64
|
+
scope: z.ZodDefault<z.ZodOptional<z.ZodEnum<["project", "global"]>>>;
|
65
|
+
api_key: z.ZodOptional<z.ZodString>;
|
66
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
67
|
+
max_retries: z.ZodOptional<z.ZodNumber>;
|
68
|
+
}, "strip", z.ZodTypeAny, {
|
69
|
+
service: "gemini" | "opencode" | "claudecode";
|
70
|
+
scope: "project" | "global";
|
71
|
+
api_key?: string | undefined;
|
72
|
+
timeout?: number | undefined;
|
73
|
+
max_retries?: number | undefined;
|
74
|
+
}, {
|
75
|
+
service: "gemini" | "opencode" | "claudecode";
|
76
|
+
scope?: "project" | "global" | undefined;
|
77
|
+
api_key?: string | undefined;
|
78
|
+
timeout?: number | undefined;
|
79
|
+
max_retries?: number | undefined;
|
80
|
+
}>;
|
81
|
+
export type ConfigureAIServiceRequest = z.infer<typeof ConfigureAIServiceRequestSchema>;
|
82
|
+
export declare const ReviewResultSchema: z.ZodObject<{
|
83
|
+
status: z.ZodEnum<["✅", "⚠️", "❌", "🔍"]>;
|
84
|
+
summary: z.ZodString;
|
85
|
+
details: z.ZodString;
|
86
|
+
ai_service_used: z.ZodEnum<["gemini", "opencode", "claudecode"]>;
|
87
|
+
timestamp: z.ZodString;
|
88
|
+
report_file: z.ZodOptional<z.ZodString>;
|
89
|
+
}, "strip", z.ZodTypeAny, {
|
90
|
+
status: "✅" | "⚠️" | "❌" | "🔍";
|
91
|
+
summary: string;
|
92
|
+
details: string;
|
93
|
+
ai_service_used: "gemini" | "opencode" | "claudecode";
|
94
|
+
timestamp: string;
|
95
|
+
report_file?: string | undefined;
|
96
|
+
}, {
|
97
|
+
status: "✅" | "⚠️" | "❌" | "🔍";
|
98
|
+
summary: string;
|
99
|
+
details: string;
|
100
|
+
ai_service_used: "gemini" | "opencode" | "claudecode";
|
101
|
+
timestamp: string;
|
102
|
+
report_file?: string | undefined;
|
103
|
+
}>;
|
104
|
+
export type ReviewResult = z.infer<typeof ReviewResultSchema>;
|
105
|
+
export declare const AIServiceStatusSchema: z.ZodObject<{
|
106
|
+
service: z.ZodEnum<["gemini", "opencode", "claudecode"]>;
|
107
|
+
available: z.ZodBoolean;
|
108
|
+
configured: z.ZodBoolean;
|
109
|
+
install_command: z.ZodOptional<z.ZodString>;
|
110
|
+
config_command: z.ZodOptional<z.ZodString>;
|
111
|
+
error_message: z.ZodOptional<z.ZodString>;
|
112
|
+
}, "strip", z.ZodTypeAny, {
|
113
|
+
service: "gemini" | "opencode" | "claudecode";
|
114
|
+
available: boolean;
|
115
|
+
configured: boolean;
|
116
|
+
install_command?: string | undefined;
|
117
|
+
config_command?: string | undefined;
|
118
|
+
error_message?: string | undefined;
|
119
|
+
}, {
|
120
|
+
service: "gemini" | "opencode" | "claudecode";
|
121
|
+
available: boolean;
|
122
|
+
configured: boolean;
|
123
|
+
install_command?: string | undefined;
|
124
|
+
config_command?: string | undefined;
|
125
|
+
error_message?: string | undefined;
|
126
|
+
}>;
|
127
|
+
export type AIServiceStatus = z.infer<typeof AIServiceStatusSchema>;
|
128
|
+
export declare const ServiceStatusResponseSchema: z.ZodObject<{
|
129
|
+
current_service: z.ZodEnum<["gemini", "opencode", "claudecode"]>;
|
130
|
+
services: z.ZodArray<z.ZodObject<{
|
131
|
+
service: z.ZodEnum<["gemini", "opencode", "claudecode"]>;
|
132
|
+
available: z.ZodBoolean;
|
133
|
+
configured: z.ZodBoolean;
|
134
|
+
install_command: z.ZodOptional<z.ZodString>;
|
135
|
+
config_command: z.ZodOptional<z.ZodString>;
|
136
|
+
error_message: z.ZodOptional<z.ZodString>;
|
137
|
+
}, "strip", z.ZodTypeAny, {
|
138
|
+
service: "gemini" | "opencode" | "claudecode";
|
139
|
+
available: boolean;
|
140
|
+
configured: boolean;
|
141
|
+
install_command?: string | undefined;
|
142
|
+
config_command?: string | undefined;
|
143
|
+
error_message?: string | undefined;
|
144
|
+
}, {
|
145
|
+
service: "gemini" | "opencode" | "claudecode";
|
146
|
+
available: boolean;
|
147
|
+
configured: boolean;
|
148
|
+
install_command?: string | undefined;
|
149
|
+
config_command?: string | undefined;
|
150
|
+
error_message?: string | undefined;
|
151
|
+
}>, "many">;
|
152
|
+
auto_switch_enabled: z.ZodBoolean;
|
153
|
+
global_config_path: z.ZodOptional<z.ZodString>;
|
154
|
+
project_config_path: z.ZodOptional<z.ZodString>;
|
155
|
+
}, "strip", z.ZodTypeAny, {
|
156
|
+
current_service: "gemini" | "opencode" | "claudecode";
|
157
|
+
services: {
|
158
|
+
service: "gemini" | "opencode" | "claudecode";
|
159
|
+
available: boolean;
|
160
|
+
configured: boolean;
|
161
|
+
install_command?: string | undefined;
|
162
|
+
config_command?: string | undefined;
|
163
|
+
error_message?: string | undefined;
|
164
|
+
}[];
|
165
|
+
auto_switch_enabled: boolean;
|
166
|
+
global_config_path?: string | undefined;
|
167
|
+
project_config_path?: string | undefined;
|
168
|
+
}, {
|
169
|
+
current_service: "gemini" | "opencode" | "claudecode";
|
170
|
+
services: {
|
171
|
+
service: "gemini" | "opencode" | "claudecode";
|
172
|
+
available: boolean;
|
173
|
+
configured: boolean;
|
174
|
+
install_command?: string | undefined;
|
175
|
+
config_command?: string | undefined;
|
176
|
+
error_message?: string | undefined;
|
177
|
+
}[];
|
178
|
+
auto_switch_enabled: boolean;
|
179
|
+
global_config_path?: string | undefined;
|
180
|
+
project_config_path?: string | undefined;
|
181
|
+
}>;
|
182
|
+
export type ServiceStatusResponse = z.infer<typeof ServiceStatusResponseSchema>;
|
183
|
+
export declare const ErrorResponseSchema: z.ZodObject<{
|
184
|
+
error: z.ZodString;
|
185
|
+
error_code: z.ZodOptional<z.ZodString>;
|
186
|
+
suggestions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
187
|
+
}, "strip", z.ZodTypeAny, {
|
188
|
+
error: string;
|
189
|
+
error_code?: string | undefined;
|
190
|
+
suggestions?: string[] | undefined;
|
191
|
+
}, {
|
192
|
+
error: string;
|
193
|
+
error_code?: string | undefined;
|
194
|
+
suggestions?: string[] | undefined;
|
195
|
+
}>;
|
196
|
+
export type ErrorResponse = z.infer<typeof ErrorResponseSchema>;
|
197
|
+
export declare const SuccessResponseSchema: z.ZodObject<{
|
198
|
+
success: z.ZodBoolean;
|
199
|
+
message: z.ZodString;
|
200
|
+
data: z.ZodOptional<z.ZodAny>;
|
201
|
+
}, "strip", z.ZodTypeAny, {
|
202
|
+
message: string;
|
203
|
+
success: boolean;
|
204
|
+
data?: any;
|
205
|
+
}, {
|
206
|
+
message: string;
|
207
|
+
success: boolean;
|
208
|
+
data?: any;
|
209
|
+
}>;
|
210
|
+
export type SuccessResponse = z.infer<typeof SuccessResponseSchema>;
|
211
|
+
//# sourceMappingURL=types.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,eAAe,iDAA+C,CAAC;AAC5E,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAGxD,eAAO,MAAM,kBAAkB,mCAAiC,CAAC;AACjE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,eAAO,MAAM,iBAAiB,kCAAgC,CAAC;AAC/D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;EAMlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGxE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAWpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAG5E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAQnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAG1E,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;EAM1C,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AAGF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;EAO7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;EAOhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAGpE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAGhF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAI9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAIhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
package/dist/types.js
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
import { z } from 'zod';
|
2
|
+
// AI服务类型
|
3
|
+
export const AIServiceSchema = z.enum(['gemini', 'opencode', 'claudecode']);
|
4
|
+
// 审查状态
|
5
|
+
export const ReviewStatusSchema = z.enum(['✅', '⚠️', '❌', '🔍']);
|
6
|
+
// 配置范围
|
7
|
+
export const ConfigScopeSchema = z.enum(['project', 'global']);
|
8
|
+
// 代码审查请求
|
9
|
+
export const ReviewCodeRequestSchema = z.object({
|
10
|
+
code: z.string().describe('要审查的代码内容'),
|
11
|
+
language: z.string().optional().describe('代码语言(可选,用于更好的分析)'),
|
12
|
+
context: z.string().optional().describe('代码上下文信息(可选)'),
|
13
|
+
ai_service: AIServiceSchema.optional().describe('指定使用的AI服务(可选)'),
|
14
|
+
custom_prompt: z.string().optional().describe('自定义审查提示词(可选)'),
|
15
|
+
});
|
16
|
+
// Git提交审查请求
|
17
|
+
export const ReviewCommitRequestSchema = z.object({
|
18
|
+
commit_hash: z
|
19
|
+
.string()
|
20
|
+
.optional()
|
21
|
+
.describe('提交哈希(可选,默认为最新提交)'),
|
22
|
+
repository_path: z
|
23
|
+
.string()
|
24
|
+
.optional()
|
25
|
+
.describe('Git仓库路径(可选,默认为当前目录)'),
|
26
|
+
ai_service: AIServiceSchema.optional().describe('指定使用的AI服务(可选)'),
|
27
|
+
custom_prompt: z.string().optional().describe('自定义审查提示词(可选)'),
|
28
|
+
});
|
29
|
+
// 文件审查请求
|
30
|
+
export const ReviewFilesRequestSchema = z.object({
|
31
|
+
files: z.array(z.string()).describe('要审查的文件路径列表'),
|
32
|
+
repository_path: z
|
33
|
+
.string()
|
34
|
+
.optional()
|
35
|
+
.describe('Git仓库路径(可选,默认为当前目录)'),
|
36
|
+
ai_service: AIServiceSchema.optional().describe('指定使用的AI服务(可选)'),
|
37
|
+
custom_prompt: z.string().optional().describe('自定义审查提示词(可选)'),
|
38
|
+
});
|
39
|
+
// AI服务配置请求
|
40
|
+
export const ConfigureAIServiceRequestSchema = z.object({
|
41
|
+
service: AIServiceSchema.describe('要配置的AI服务'),
|
42
|
+
scope: ConfigScopeSchema.optional().default('project').describe('配置范围'),
|
43
|
+
api_key: z.string().optional().describe('API密钥(可选)'),
|
44
|
+
timeout: z.number().optional().describe('超时时间(秒)'),
|
45
|
+
max_retries: z.number().optional().describe('最大重试次数'),
|
46
|
+
});
|
47
|
+
// 审查结果
|
48
|
+
export const ReviewResultSchema = z.object({
|
49
|
+
status: ReviewStatusSchema.describe('审查状态'),
|
50
|
+
summary: z.string().describe('审查摘要'),
|
51
|
+
details: z.string().describe('详细审查内容'),
|
52
|
+
ai_service_used: AIServiceSchema.describe('使用的AI服务'),
|
53
|
+
timestamp: z.string().describe('审查时间'),
|
54
|
+
report_file: z.string().optional().describe('生成的报告文件路径(如果有)'),
|
55
|
+
});
|
56
|
+
// AI服务状态
|
57
|
+
export const AIServiceStatusSchema = z.object({
|
58
|
+
service: AIServiceSchema.describe('AI服务名称'),
|
59
|
+
available: z.boolean().describe('是否可用'),
|
60
|
+
configured: z.boolean().describe('是否已配置'),
|
61
|
+
install_command: z.string().optional().describe('安装命令(如果未安装)'),
|
62
|
+
config_command: z.string().optional().describe('配置命令(如果未配置)'),
|
63
|
+
error_message: z.string().optional().describe('错误信息(如果有)'),
|
64
|
+
});
|
65
|
+
// 服务状态响应
|
66
|
+
export const ServiceStatusResponseSchema = z.object({
|
67
|
+
current_service: AIServiceSchema.describe('当前使用的AI服务'),
|
68
|
+
services: z.array(AIServiceStatusSchema).describe('所有AI服务的状态'),
|
69
|
+
auto_switch_enabled: z.boolean().describe('是否启用自动切换'),
|
70
|
+
global_config_path: z.string().optional().describe('全局配置文件路径'),
|
71
|
+
project_config_path: z.string().optional().describe('项目配置文件路径'),
|
72
|
+
});
|
73
|
+
// 错误响应
|
74
|
+
export const ErrorResponseSchema = z.object({
|
75
|
+
error: z.string().describe('错误信息'),
|
76
|
+
error_code: z.string().optional().describe('错误代码'),
|
77
|
+
suggestions: z.array(z.string()).optional().describe('解决建议'),
|
78
|
+
});
|
79
|
+
// 成功响应
|
80
|
+
export const SuccessResponseSchema = z.object({
|
81
|
+
success: z.boolean().describe('操作是否成功'),
|
82
|
+
message: z.string().describe('成功信息'),
|
83
|
+
data: z.any().optional().describe('返回数据'),
|
84
|
+
});
|
85
|
+
//# sourceMappingURL=types.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,SAAS;AACT,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;AAG5E,OAAO;AACP,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAGjE,OAAO;AACP,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG/D,SAAS;AACT,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC5D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IACtD,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAChE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CAC9D,CAAC,CAAC;AAGH,YAAY;AACZ,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kBAAkB,CAAC;IAC/B,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,qBAAqB,CAAC;IAClC,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAChE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CAC9D,CAAC,CAAC;AAGH,SAAS;AACT,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;IACjD,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,qBAAqB,CAAC;IAClC,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAChE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CAC9D,CAAC,CAAC;AAGH,WAAW;AACX,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC7C,KAAK,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACpD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;IAClD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;CACtD,CAAC,CAAC;AAKH,OAAO;AACP,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACtC,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;IACpD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CAC9D,CAAC,CAAC;AAGH,SAAS;AACT,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC9D,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC7D,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;CAC3D,CAAC,CAAC;AAGH,SAAS;AACT,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC;IACtD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC9D,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;IACrD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC9D,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;CAChE,CAAC,CAAC;AAGH,OAAO;AACP,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;IAClD,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;CAC7D,CAAC,CAAC;AAGH,OAAO;AACP,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;CAC1C,CAAC,CAAC"}
|
package/eslint.config.ts
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
import js from "@eslint/js";
|
2
|
+
import globals from "globals";
|
3
|
+
import tseslint from "typescript-eslint";
|
4
|
+
import { defineConfig } from "eslint/config";
|
5
|
+
|
6
|
+
export default defineConfig([
|
7
|
+
{ files: ["**/*.{js,mjs,cjs,ts,mts,cts}"], plugins: { js }, extends: ["js/recommended"], languageOptions: { globals: globals.node } },
|
8
|
+
tseslint.configs.recommended,
|
9
|
+
]);
|
package/package.json
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
{
|
2
|
+
"name": "@yeepay/coderocket-mcp",
|
3
|
+
"version": "1.0.1",
|
4
|
+
"description": "CodeRocket MCP - AI-powered code review server for Model Context Protocol",
|
5
|
+
"main": "dist/index.js",
|
6
|
+
"type": "module",
|
7
|
+
"bin": {
|
8
|
+
"coderocket-mcp": "./bin/coderocket-mcp"
|
9
|
+
},
|
10
|
+
"scripts": {
|
11
|
+
"build": "tsc",
|
12
|
+
"start": "node dist/index.js",
|
13
|
+
"dev": "tsx src/index.ts",
|
14
|
+
"test": "node dist/test.js",
|
15
|
+
"test:mcp": "npm run build && node bin/coderocket-mcp test",
|
16
|
+
"lint": "eslint src/**/*.ts",
|
17
|
+
"format": "prettier --write src/**/*.ts",
|
18
|
+
"prepare": "npm run build",
|
19
|
+
"prepublishOnly": "npm run build && npm test",
|
20
|
+
"preversion": "npm run build",
|
21
|
+
"version": "npm run format && git add -A src",
|
22
|
+
"postversion": "git push && git push --tags"
|
23
|
+
},
|
24
|
+
"keywords": [
|
25
|
+
"mcp",
|
26
|
+
"model-context-protocol",
|
27
|
+
"code-review",
|
28
|
+
"ai",
|
29
|
+
"gemini",
|
30
|
+
"opencode",
|
31
|
+
"claudecode",
|
32
|
+
"typescript",
|
33
|
+
"code-analysis",
|
34
|
+
"git",
|
35
|
+
"programming-tools",
|
36
|
+
"automation",
|
37
|
+
"claude",
|
38
|
+
"ai-tools"
|
39
|
+
],
|
40
|
+
"author": "dreambt <dreambt@gmail.com>",
|
41
|
+
"license": "Apache-2.0",
|
42
|
+
"dependencies": {
|
43
|
+
"@modelcontextprotocol/sdk": "^0.5.0",
|
44
|
+
"zod": "^3.22.4"
|
45
|
+
},
|
46
|
+
"devDependencies": {
|
47
|
+
"@eslint/js": "^9.32.0",
|
48
|
+
"@types/node": "^20.0.0",
|
49
|
+
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
50
|
+
"@typescript-eslint/parser": "^6.0.0",
|
51
|
+
"eslint": "^8.57.1",
|
52
|
+
"globals": "^16.3.0",
|
53
|
+
"jest": "^29.0.0",
|
54
|
+
"prettier": "^3.0.0",
|
55
|
+
"tsx": "^4.0.0",
|
56
|
+
"typescript": "^5.0.0",
|
57
|
+
"typescript-eslint": "^8.38.0"
|
58
|
+
},
|
59
|
+
"engines": {
|
60
|
+
"node": ">=18.0.0"
|
61
|
+
},
|
62
|
+
"repository": {
|
63
|
+
"type": "git",
|
64
|
+
"url": "https://github.com/im47cn/coderocket-mcp.git",
|
65
|
+
"directory": "coderocket-mcp"
|
66
|
+
},
|
67
|
+
"bugs": {
|
68
|
+
"url": "https://github.com/im47cn/coderocket-mcp/issues"
|
69
|
+
},
|
70
|
+
"homepage": "https://github.com/im47cn/coderocket-mcp#readme"
|
71
|
+
}
|
@@ -0,0 +1,150 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# CodeRocket MCP 发布准备脚本
|
4
|
+
|
5
|
+
set -e
|
6
|
+
|
7
|
+
# 颜色定义
|
8
|
+
RED='\033[0;31m'
|
9
|
+
GREEN='\033[0;32m'
|
10
|
+
YELLOW='\033[1;33m'
|
11
|
+
BLUE='\033[0;34m'
|
12
|
+
NC='\033[0m' # No Color
|
13
|
+
|
14
|
+
echo -e "${BLUE}🚀 准备发布 CodeRocket MCP...${NC}"
|
15
|
+
echo ""
|
16
|
+
|
17
|
+
# 检查是否在正确的目录
|
18
|
+
if [ ! -f "package.json" ]; then
|
19
|
+
echo -e "${RED}❌ 错误:请在coderocket-mcp目录中运行此脚本${NC}"
|
20
|
+
exit 1
|
21
|
+
fi
|
22
|
+
|
23
|
+
# 检查Git状态
|
24
|
+
if [ -n "$(git status --porcelain)" ]; then
|
25
|
+
echo -e "${YELLOW}⚠️ 警告:工作目录有未提交的更改${NC}"
|
26
|
+
echo "请先提交所有更改后再发布"
|
27
|
+
git status --short
|
28
|
+
exit 1
|
29
|
+
fi
|
30
|
+
|
31
|
+
# 检查当前分支
|
32
|
+
CURRENT_BRANCH=$(git branch --show-current)
|
33
|
+
if [ "$CURRENT_BRANCH" != "main" ] && [ "$CURRENT_BRANCH" != "master" ]; then
|
34
|
+
echo -e "${YELLOW}⚠️ 警告:当前不在主分支 (当前: $CURRENT_BRANCH)${NC}"
|
35
|
+
read -p "是否继续?(y/N): " -n 1 -r
|
36
|
+
echo
|
37
|
+
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
38
|
+
exit 1
|
39
|
+
fi
|
40
|
+
fi
|
41
|
+
|
42
|
+
# 获取当前版本
|
43
|
+
CURRENT_VERSION=$(node -p "require('./package.json').version")
|
44
|
+
echo -e "${BLUE}📋 当前版本: $CURRENT_VERSION${NC}"
|
45
|
+
|
46
|
+
# 询问新版本
|
47
|
+
echo ""
|
48
|
+
echo "选择版本类型:"
|
49
|
+
echo "1) patch (修复版本): $CURRENT_VERSION -> 修复版本"
|
50
|
+
echo "2) minor (功能版本): $CURRENT_VERSION -> 功能版本"
|
51
|
+
echo "3) major (重大版本): $CURRENT_VERSION -> 重大版本"
|
52
|
+
echo "4) 自定义版本"
|
53
|
+
echo ""
|
54
|
+
|
55
|
+
read -p "请选择 (1-4): " CHOICE
|
56
|
+
echo ""
|
57
|
+
|
58
|
+
case $CHOICE in
|
59
|
+
1)
|
60
|
+
VERSION_TYPE="patch"
|
61
|
+
;;
|
62
|
+
2)
|
63
|
+
VERSION_TYPE="minor"
|
64
|
+
;;
|
65
|
+
3)
|
66
|
+
VERSION_TYPE="major"
|
67
|
+
;;
|
68
|
+
4)
|
69
|
+
read -p "请输入版本号 (例如: 1.2.3): " CUSTOM_VERSION
|
70
|
+
if [[ ! $CUSTOM_VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
71
|
+
echo -e "${RED}❌ 错误:版本号格式不正确${NC}"
|
72
|
+
exit 1
|
73
|
+
fi
|
74
|
+
VERSION_TYPE=$CUSTOM_VERSION
|
75
|
+
;;
|
76
|
+
"")
|
77
|
+
echo -e "${RED}❌ 错误:请选择一个选项${NC}"
|
78
|
+
exit 1
|
79
|
+
;;
|
80
|
+
*)
|
81
|
+
echo -e "${RED}❌ 错误:无效选择 '$CHOICE'${NC}"
|
82
|
+
exit 1
|
83
|
+
;;
|
84
|
+
esac
|
85
|
+
|
86
|
+
echo -e "${BLUE}🔍 运行预发布检查...${NC}"
|
87
|
+
|
88
|
+
# 安装依赖
|
89
|
+
echo "📦 安装依赖..."
|
90
|
+
npm ci
|
91
|
+
|
92
|
+
# 代码检查(跳过,因为需要额外的TypeScript ESLint配置)
|
93
|
+
echo "🔍 代码检查..."
|
94
|
+
echo "⚠️ 跳过ESLint检查(需要完整的TypeScript ESLint配置)"
|
95
|
+
|
96
|
+
# 构建项目
|
97
|
+
echo "🔨 构建项目..."
|
98
|
+
npm run build
|
99
|
+
|
100
|
+
# 运行测试
|
101
|
+
echo "🧪 运行测试..."
|
102
|
+
npm test
|
103
|
+
|
104
|
+
echo -e "${GREEN}✅ 所有检查通过!${NC}"
|
105
|
+
echo ""
|
106
|
+
|
107
|
+
# 确认发布
|
108
|
+
NEW_VERSION=$(npm version $VERSION_TYPE --dry-run | cut -d'v' -f2)
|
109
|
+
echo -e "${YELLOW}📋 准备发布版本: $NEW_VERSION${NC}"
|
110
|
+
echo ""
|
111
|
+
echo "发布内容预览:"
|
112
|
+
echo "- 包名: @yeepay/coderocket-mcp"
|
113
|
+
echo "- 版本: $NEW_VERSION"
|
114
|
+
echo "- 描述: $(node -p "require('./package.json').description")"
|
115
|
+
echo "- 主要文件: dist/, bin/, README.md, package.json"
|
116
|
+
echo ""
|
117
|
+
|
118
|
+
read -p "确认发布到npm?(y/N): " -n 1 -r
|
119
|
+
echo ""
|
120
|
+
|
121
|
+
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
122
|
+
echo -e "${YELLOW}❌ 发布已取消${NC}"
|
123
|
+
exit 0
|
124
|
+
fi
|
125
|
+
|
126
|
+
echo -e "${BLUE}🚀 开始发布...${NC}"
|
127
|
+
|
128
|
+
# 更新版本号
|
129
|
+
npm version $VERSION_TYPE
|
130
|
+
|
131
|
+
# 发布到npm
|
132
|
+
npm publish
|
133
|
+
|
134
|
+
echo ""
|
135
|
+
echo -e "${GREEN}🎉 发布成功!${NC}"
|
136
|
+
echo ""
|
137
|
+
echo "📋 发布信息:"
|
138
|
+
echo "- 包名: @yeepay/coderocket-mcp"
|
139
|
+
echo "- 版本: $NEW_VERSION"
|
140
|
+
echo "- npm链接: https://www.npmjs.com/package/@yeepay/coderocket-mcp"
|
141
|
+
echo ""
|
142
|
+
echo "📖 用户现在可以通过以下命令安装和使用:"
|
143
|
+
echo " npm install -g @yeepay/coderocket-mcp"
|
144
|
+
echo " npx -y @yeepay/coderocket-mcp --version"
|
145
|
+
echo ""
|
146
|
+
echo "🔗 下一步:"
|
147
|
+
echo "1. 更新项目文档"
|
148
|
+
echo "2. 发布Release Notes"
|
149
|
+
echo "3. 通知用户更新"
|
150
|
+
echo ""
|