bmall-mcp 1.1.2 → 1.1.4
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/.kiro/settings/mcp.json +4 -0
- package/README.md +39 -45
- package/dist/server/handlers.d.ts.map +1 -1
- package/dist/server/handlers.js +8 -1
- package/dist/server/handlers.js.map +1 -1
- package/dist/server/tools.d.ts +7 -3
- package/dist/server/tools.d.ts.map +1 -1
- package/dist/server/tools.js +8 -1
- package/dist/server/tools.js.map +1 -1
- package/dist/tools/rules/push.d.ts +1 -1
- package/dist/tools/rules/push.d.ts.map +1 -1
- package/dist/tools/rules/push.js +4 -5
- package/dist/tools/rules/push.js.map +1 -1
- package/package.json +1 -1
- package/src/server/handlers.ts +8 -1
- package/src/server/tools.ts +8 -1
- package/src/tools/rules/push.ts +4 -5
package/README.md
CHANGED
|
@@ -38,81 +38,75 @@ npx -y bmall-mcp
|
|
|
38
38
|
|
|
39
39
|
### 可用工具
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
| 工具 | 说明 | 示例 |
|
|
42
|
+
|------|------|------|
|
|
43
|
+
| `pull_rules` | 下载 Rules 到 IDE | `同步 bmall iOS 的 rules` |
|
|
44
|
+
| `push_rules` | 上传本地 Rules 到 Git | `上传修改的 iOS rules` |
|
|
45
|
+
| `standard_git_commit` | 规范化 Git 提交 | `提交代码,需求名称是语音转写SDK` |
|
|
46
|
+
| `mta_read` | 从流式平台提取埋点需求 | `提取埋点需求 https://stream.jd.com/ddrx/#/requirement/29582` |
|
|
47
|
+
| `mta_implementation` | 生成埋点管理类代码 | `生成埋点代码 34747` |
|
|
48
|
+
| `mta_integration` | 埋点业务集成指导 | `集成埋点 34747` |
|
|
42
49
|
|
|
43
|
-
|
|
50
|
+
### 工具详情
|
|
44
51
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
同步 bmall common rules
|
|
48
|
-
```
|
|
52
|
+
<details>
|
|
53
|
+
<summary><b>pull_rules</b> - 下载 Rules</summary>
|
|
49
54
|
|
|
50
|
-
|
|
51
|
-
- `ide`: 目标 IDE(可选,默认自动检测)
|
|
52
|
-
- `kiro` | `cursor` | `windsurf` | `joycode`
|
|
53
|
-
- `rulesType`: Rules 类型(可选,默认自动检测)
|
|
54
|
-
- `ios` | `android` | `common`
|
|
55
|
+
从 Git 仓库下载 bmall Rules 到 IDE 目录。
|
|
55
56
|
|
|
56
|
-
|
|
57
|
+
**参数:**
|
|
58
|
+
- `ide`: 目标 IDE(可选,自动检测)- `kiro` | `cursor` | `windsurf` | `joycode`
|
|
59
|
+
- `rulesType`: Rules 类型(可选,自动检测)- `ios` | `android` | `common`
|
|
60
|
+
</details>
|
|
57
61
|
|
|
58
|
-
|
|
62
|
+
<details>
|
|
63
|
+
<summary><b>push_rules</b> - 上传 Rules</summary>
|
|
59
64
|
|
|
60
|
-
|
|
61
|
-
上传修改的 iOS rules
|
|
62
|
-
```
|
|
65
|
+
将本地修改的 Rules 上传到 Git 仓库。会自动创建以项目名命名的分支。
|
|
63
66
|
|
|
64
|
-
|
|
67
|
+
**参数:**
|
|
65
68
|
- `message`: 提交信息(可选)
|
|
66
|
-
- `rulesType`: Rules
|
|
69
|
+
- `rulesType`: Rules 类型(可选,自动检测)
|
|
70
|
+
</details>
|
|
67
71
|
|
|
68
|
-
|
|
72
|
+
<details>
|
|
73
|
+
<summary><b>standard_git_commit</b> - 规范化提交</summary>
|
|
69
74
|
|
|
70
75
|
自动分析改动内容,生成符合约定式提交规范的 commit message 并推送。
|
|
71
76
|
|
|
72
|
-
|
|
73
|
-
提交代码,需求名称是语音转写SDK
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
参数:
|
|
77
|
+
**参数:**
|
|
77
78
|
- `scope`: 需求名称(必填),如:语音转写SDK、购物车、登录模块
|
|
79
|
+
</details>
|
|
78
80
|
|
|
79
|
-
|
|
81
|
+
<details>
|
|
82
|
+
<summary><b>mta_read</b> - 埋点文档生成</summary>
|
|
80
83
|
|
|
81
84
|
从京东流式平台提取埋点需求,生成结构化埋点文档。
|
|
82
85
|
|
|
83
|
-
|
|
84
|
-
提取埋点需求 https://stream.jd.com/ddrx/#/requirement/29582
|
|
85
|
-
提取 iOS 端埋点 https://stream.jd.com/ddrx/#/requirement/29582
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
参数:
|
|
86
|
+
**参数:**
|
|
89
87
|
- `requirementUrl`: 埋点需求文档URL(必填)
|
|
90
|
-
- `platform`:
|
|
91
|
-
|
|
88
|
+
- `platform`: 目标端(可选,自动检测)- `iOS` | `Android` | `H5` | `Web` | `鸿蒙`
|
|
89
|
+
</details>
|
|
92
90
|
|
|
93
|
-
|
|
91
|
+
<details>
|
|
92
|
+
<summary><b>mta_implementation</b> - 埋点代码生成</summary>
|
|
94
93
|
|
|
95
94
|
根据埋点需求文档生成埋点管理类代码。
|
|
96
95
|
|
|
97
|
-
|
|
98
|
-
生成埋点代码 34747
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
参数:
|
|
96
|
+
**参数:**
|
|
102
97
|
- `requirementId`: 埋点需求ID(必填)
|
|
103
98
|
- `moduleName`: 模块名称(可选)
|
|
99
|
+
</details>
|
|
104
100
|
|
|
105
|
-
|
|
101
|
+
<details>
|
|
102
|
+
<summary><b>mta_integration</b> - 埋点业务集成</summary>
|
|
106
103
|
|
|
107
104
|
指导在业务代码中集成埋点调用。
|
|
108
105
|
|
|
109
|
-
|
|
110
|
-
集成埋点 34747
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
参数:
|
|
106
|
+
**参数:**
|
|
114
107
|
- `requirementId`: 埋点需求ID(必填)
|
|
115
108
|
- `businessCodePath`: 业务代码路径(可选)
|
|
109
|
+
</details>
|
|
116
110
|
|
|
117
111
|
## 项目架构
|
|
118
112
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/server/handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/server/handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsFH;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;GAO9B"}
|
package/dist/server/handlers.js
CHANGED
|
@@ -20,14 +20,21 @@ function errorResponse(message) {
|
|
|
20
20
|
const handlers = {
|
|
21
21
|
pull_rules: async (args) => {
|
|
22
22
|
const ide = args.ide;
|
|
23
|
+
if (!ide) {
|
|
24
|
+
return errorResponse("请指定当前使用的 IDE: kiro / cursor / windsurf / joycode");
|
|
25
|
+
}
|
|
23
26
|
const rulesType = args.rulesType;
|
|
24
27
|
const result = await pullRules(ide, rulesType);
|
|
25
28
|
return textResponse(result);
|
|
26
29
|
},
|
|
27
30
|
push_rules: async (args) => {
|
|
31
|
+
const ide = args.ide;
|
|
32
|
+
if (!ide) {
|
|
33
|
+
return errorResponse("请指定当前使用的 IDE: kiro / cursor / windsurf / joycode");
|
|
34
|
+
}
|
|
28
35
|
const message = args.message;
|
|
29
36
|
const rulesType = args.rulesType;
|
|
30
|
-
const result = await pushRules(message, rulesType);
|
|
37
|
+
const result = await pushRules(ide, message, rulesType);
|
|
31
38
|
return textResponse(result);
|
|
32
39
|
},
|
|
33
40
|
standard_git_commit: async (args) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/server/handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,SAAS;AACT,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS;AACT,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO,YAAY,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;AACtC,CAAC;AAKD,MAAM,QAAQ,GAAgC;IAC5C,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAyB,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,SAA+B,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/C,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAA6B,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAA+B,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/server/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/server/tools.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export declare const toolDefinitions: ({
|
|
|
25
25
|
moduleName?: undefined;
|
|
26
26
|
businessCodePath?: undefined;
|
|
27
27
|
};
|
|
28
|
-
required
|
|
28
|
+
required: string[];
|
|
29
29
|
};
|
|
30
30
|
} | {
|
|
31
31
|
name: string;
|
|
@@ -33,6 +33,11 @@ export declare const toolDefinitions: ({
|
|
|
33
33
|
inputSchema: {
|
|
34
34
|
type: string;
|
|
35
35
|
properties: {
|
|
36
|
+
ide: {
|
|
37
|
+
type: string;
|
|
38
|
+
enum: string[];
|
|
39
|
+
description: string;
|
|
40
|
+
};
|
|
36
41
|
message: {
|
|
37
42
|
type: string;
|
|
38
43
|
description: string;
|
|
@@ -42,7 +47,6 @@ export declare const toolDefinitions: ({
|
|
|
42
47
|
enum: string[];
|
|
43
48
|
description: string;
|
|
44
49
|
};
|
|
45
|
-
ide?: undefined;
|
|
46
50
|
scope?: undefined;
|
|
47
51
|
requirementUrl?: undefined;
|
|
48
52
|
platform?: undefined;
|
|
@@ -50,7 +54,7 @@ export declare const toolDefinitions: ({
|
|
|
50
54
|
moduleName?: undefined;
|
|
51
55
|
businessCodePath?: undefined;
|
|
52
56
|
};
|
|
53
|
-
required
|
|
57
|
+
required: string[];
|
|
54
58
|
};
|
|
55
59
|
} | {
|
|
56
60
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/server/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/server/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkH3B,CAAC"}
|
package/dist/server/tools.js
CHANGED
|
@@ -11,7 +11,7 @@ export const toolDefinitions = [
|
|
|
11
11
|
ide: {
|
|
12
12
|
type: "string",
|
|
13
13
|
enum: ["kiro", "cursor", "windsurf", "joycode"],
|
|
14
|
-
description: "
|
|
14
|
+
description: "当前使用的 IDE",
|
|
15
15
|
},
|
|
16
16
|
rulesType: {
|
|
17
17
|
type: "string",
|
|
@@ -19,6 +19,7 @@ export const toolDefinitions = [
|
|
|
19
19
|
description: "Rules 类型 (可选,默认自动检测)",
|
|
20
20
|
},
|
|
21
21
|
},
|
|
22
|
+
required: ["ide"],
|
|
22
23
|
},
|
|
23
24
|
},
|
|
24
25
|
{
|
|
@@ -27,6 +28,11 @@ export const toolDefinitions = [
|
|
|
27
28
|
inputSchema: {
|
|
28
29
|
type: "object",
|
|
29
30
|
properties: {
|
|
31
|
+
ide: {
|
|
32
|
+
type: "string",
|
|
33
|
+
enum: ["kiro", "cursor", "windsurf", "joycode"],
|
|
34
|
+
description: "当前使用的 IDE",
|
|
35
|
+
},
|
|
30
36
|
message: {
|
|
31
37
|
type: "string",
|
|
32
38
|
description: "提交信息 (可选)",
|
|
@@ -37,6 +43,7 @@ export const toolDefinitions = [
|
|
|
37
43
|
description: "Rules 类型 (可选,默认自动检测)",
|
|
38
44
|
},
|
|
39
45
|
},
|
|
46
|
+
required: ["ide"],
|
|
40
47
|
},
|
|
41
48
|
},
|
|
42
49
|
{
|
package/dist/server/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/server/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,kCAAkC;QAC/C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC;oBAC/C,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/server/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function pushRules(message?: string, rulesType?: string): Promise<string>;
|
|
1
|
+
export declare function pushRules(ide: string, message?: string, rulesType?: string): Promise<string>;
|
|
2
2
|
//# sourceMappingURL=push.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/tools/rules/push.ts"],"names":[],"mappings":"AAiBA,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/tools/rules/push.ts"],"names":[],"mappings":"AAiBA,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2GlG"}
|
package/dist/tools/rules/push.js
CHANGED
|
@@ -3,7 +3,7 @@ import * as path from "path";
|
|
|
3
3
|
import { execSync } from "child_process";
|
|
4
4
|
import { log } from "../utils.js";
|
|
5
5
|
import { GIT_BRANCH, RULES_CACHE_DIR, IDE_PATHS, validateAndGetRulesType, detectProjectName, getGitRulesDir, copyMarkdownFiles, initializeGitCache, setupSparseCheckout, checkoutOrCreateBranch, } from "./utils.js";
|
|
6
|
-
export async function pushRules(message, rulesType) {
|
|
6
|
+
export async function pushRules(ide, message, rulesType) {
|
|
7
7
|
try {
|
|
8
8
|
// 验证并获取 Rules 类型
|
|
9
9
|
const typeResult = validateAndGetRulesType(rulesType);
|
|
@@ -11,11 +11,10 @@ export async function pushRules(message, rulesType) {
|
|
|
11
11
|
return typeResult.error;
|
|
12
12
|
}
|
|
13
13
|
const projectType = typeResult.type;
|
|
14
|
-
// 验证并获取 IDE
|
|
15
|
-
const
|
|
16
|
-
const localRulesPath = IDE_PATHS[targetIDE];
|
|
14
|
+
// 验证并获取 IDE
|
|
15
|
+
const localRulesPath = IDE_PATHS[ide];
|
|
17
16
|
if (!localRulesPath) {
|
|
18
|
-
return `❌ 不支持的 IDE: ${
|
|
17
|
+
return `❌ 不支持的 IDE: ${ide}`;
|
|
19
18
|
}
|
|
20
19
|
// 检测项目名称,用于创建项目级分支
|
|
21
20
|
const projectName = detectProjectName();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/tools/rules/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EACL,UAAU,EACV,eAAe,EACf,SAAS,EACT,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAgB,EAAE,SAAkB;
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/tools/rules/push.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/server/handlers.ts
CHANGED
|
@@ -27,15 +27,22 @@ type ToolHandler = (args: Record<string, unknown>) => Promise<ReturnType<typeof
|
|
|
27
27
|
const handlers: Record<string, ToolHandler> = {
|
|
28
28
|
pull_rules: async (args) => {
|
|
29
29
|
const ide = args.ide as string | undefined;
|
|
30
|
+
if (!ide) {
|
|
31
|
+
return errorResponse("请指定当前使用的 IDE: kiro / cursor / windsurf / joycode");
|
|
32
|
+
}
|
|
30
33
|
const rulesType = args.rulesType as string | undefined;
|
|
31
34
|
const result = await pullRules(ide, rulesType);
|
|
32
35
|
return textResponse(result);
|
|
33
36
|
},
|
|
34
37
|
|
|
35
38
|
push_rules: async (args) => {
|
|
39
|
+
const ide = args.ide as string | undefined;
|
|
40
|
+
if (!ide) {
|
|
41
|
+
return errorResponse("请指定当前使用的 IDE: kiro / cursor / windsurf / joycode");
|
|
42
|
+
}
|
|
36
43
|
const message = args.message as string | undefined;
|
|
37
44
|
const rulesType = args.rulesType as string | undefined;
|
|
38
|
-
const result = await pushRules(message, rulesType);
|
|
45
|
+
const result = await pushRules(ide, message, rulesType);
|
|
39
46
|
return textResponse(result);
|
|
40
47
|
},
|
|
41
48
|
|
package/src/server/tools.ts
CHANGED
|
@@ -12,7 +12,7 @@ export const toolDefinitions = [
|
|
|
12
12
|
ide: {
|
|
13
13
|
type: "string",
|
|
14
14
|
enum: ["kiro", "cursor", "windsurf", "joycode"],
|
|
15
|
-
description: "
|
|
15
|
+
description: "当前使用的 IDE",
|
|
16
16
|
},
|
|
17
17
|
rulesType: {
|
|
18
18
|
type: "string",
|
|
@@ -20,6 +20,7 @@ export const toolDefinitions = [
|
|
|
20
20
|
description: "Rules 类型 (可选,默认自动检测)",
|
|
21
21
|
},
|
|
22
22
|
},
|
|
23
|
+
required: ["ide"],
|
|
23
24
|
},
|
|
24
25
|
},
|
|
25
26
|
{
|
|
@@ -28,6 +29,11 @@ export const toolDefinitions = [
|
|
|
28
29
|
inputSchema: {
|
|
29
30
|
type: "object",
|
|
30
31
|
properties: {
|
|
32
|
+
ide: {
|
|
33
|
+
type: "string",
|
|
34
|
+
enum: ["kiro", "cursor", "windsurf", "joycode"],
|
|
35
|
+
description: "当前使用的 IDE",
|
|
36
|
+
},
|
|
31
37
|
message: {
|
|
32
38
|
type: "string",
|
|
33
39
|
description: "提交信息 (可选)",
|
|
@@ -38,6 +44,7 @@ export const toolDefinitions = [
|
|
|
38
44
|
description: "Rules 类型 (可选,默认自动检测)",
|
|
39
45
|
},
|
|
40
46
|
},
|
|
47
|
+
required: ["ide"],
|
|
41
48
|
},
|
|
42
49
|
},
|
|
43
50
|
{
|
package/src/tools/rules/push.ts
CHANGED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
checkoutOrCreateBranch,
|
|
16
16
|
} from "./utils.js";
|
|
17
17
|
|
|
18
|
-
export async function pushRules(message?: string, rulesType?: string): Promise<string> {
|
|
18
|
+
export async function pushRules(ide: string, message?: string, rulesType?: string): Promise<string> {
|
|
19
19
|
try {
|
|
20
20
|
// 验证并获取 Rules 类型
|
|
21
21
|
const typeResult = validateAndGetRulesType(rulesType);
|
|
@@ -24,11 +24,10 @@ export async function pushRules(message?: string, rulesType?: string): Promise<s
|
|
|
24
24
|
}
|
|
25
25
|
const projectType = typeResult.type;
|
|
26
26
|
|
|
27
|
-
// 验证并获取 IDE
|
|
28
|
-
const
|
|
29
|
-
const localRulesPath = IDE_PATHS[targetIDE];
|
|
27
|
+
// 验证并获取 IDE
|
|
28
|
+
const localRulesPath = IDE_PATHS[ide];
|
|
30
29
|
if (!localRulesPath) {
|
|
31
|
-
return `❌ 不支持的 IDE: ${
|
|
30
|
+
return `❌ 不支持的 IDE: ${ide}`;
|
|
32
31
|
}
|
|
33
32
|
|
|
34
33
|
// 检测项目名称,用于创建项目级分支
|