cloudcc-cli 2.2.3 → 2.2.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/.vscode/settings.json +3 -0
- package/README.md +35 -0
- package/bin/cc.js +11 -36
- package/bin/index.js +33 -0
- package/bin/mcp-svc.js +13 -0
- package/java/com/cloudcc/core/TriggerInvoker.java +17 -1
- package/package.json +3 -2
- package/pom.xml +1 -0
- package/prompt/DevelopmentEnvironmentConstruction.ts +133 -0
- package/prompt/ccdk.ts +1190 -0
- package/prompt/ccprompt.ts +8 -0
- package/prompt/cloudccdev.ts +109 -0
- package/prompt/index.ts +52 -0
- package/prompt/objectInfo.ts +94 -0
- package/prompt/objectList.ts +25 -0
- package/prompt/openapi.ts +310 -0
- package/prompt/system.ts +14 -0
- package/prompt/vscodeExtension.ts +27 -0
- package/src/approval/approve.js +105 -0
- package/src/approval/get.js +245 -0
- package/src/approval/index.js +11 -0
- package/src/approval/reject.js +105 -0
- package/src/brief/get.js +51 -0
- package/src/brief/index.js +7 -0
- package/src/config/get.js +1 -1
- package/src/fields/create.js +204 -0
- package/src/fields/fields/A.js +23 -0
- package/src/fields/fields/AD.js +25 -0
- package/src/fields/fields/B.js +28 -0
- package/src/fields/fields/C.js +28 -0
- package/src/fields/fields/D.js +27 -0
- package/src/fields/fields/E.js +28 -0
- package/src/fields/fields/ENC.js +28 -0
- package/src/fields/fields/ENCD.js +28 -0
- package/src/fields/fields/F.js +27 -0
- package/src/fields/fields/FL.js +25 -0
- package/src/fields/fields/H.js +27 -0
- package/src/fields/fields/IMG.js +27 -0
- package/src/fields/fields/J.js +26 -0
- package/src/fields/fields/L.js +32 -0
- package/src/fields/fields/LT.js +28 -0
- package/src/fields/fields/M.js +29 -0
- package/src/fields/fields/MR.js +24 -0
- package/src/fields/fields/N.js +30 -0
- package/src/fields/fields/P.js +28 -0
- package/src/fields/fields/Q.js +35 -0
- package/src/fields/fields/S.js +30 -0
- package/src/fields/fields/SCORE.js +24 -0
- package/src/fields/fields/T.js +27 -0
- package/src/fields/fields/U.js +28 -0
- package/src/fields/fields/X.js +28 -0
- package/src/fields/fields/Y.js +33 -0
- package/src/fields/get.js +36 -0
- package/src/fields/index.js +9 -0
- package/src/mcp/MCP/345/234/272/346/231/257/346/250/241/346/213/237.md +8 -0
- package/src/mcp/index-sse-svc.js +126 -0
- package/src/mcp/index-streamable-svc.js +180 -0
- package/src/mcp/index.js +519 -115
- package/src/mcp/readme.md +75 -70
- package/src/mcp/tools/Approval/handler.js +349 -0
- package/src/mcp/tools/Class Creator/handler.js +37 -0
- package/src/mcp/tools/Class Detail Retriever/handler.js +33 -0
- package/src/mcp/tools/Class Detail Retriever/prompt.js +37 -0
- package/src/mcp/tools/Class Editor Guide/handler.js +72 -0
- package/src/mcp/tools/Class Editor Guide/prompt.js +468 -0
- package/src/mcp/tools/Class List Retriever/handler.js +36 -0
- package/src/mcp/tools/Class Publisher/handler.js +29 -0
- package/src/mcp/tools/Class Publisher/prompt.js +40 -0
- package/src/mcp/tools/Class Puller/handler.js +86 -0
- package/src/mcp/tools/Class Puller/prompt.js +49 -0
- package/src/mcp/tools/Client Script Creator/handler.js +179 -0
- package/src/mcp/tools/Client Script Detail Retriever/handler.js +53 -0
- package/src/mcp/tools/Client Script Editor Guide/handler.js +633 -0
- package/src/mcp/tools/Client Script List Retriever/handler.js +68 -0
- package/src/mcp/tools/Client Script Publisher/handler.js +54 -0
- package/src/mcp/tools/Client Script Puller/handler.js +73 -0
- package/src/mcp/tools/CloudCC Development Overview/handler.js +48 -0
- package/src/mcp/tools/CloudCC Development Overview/prompt.js +870 -0
- package/src/mcp/tools/Component Creator/handler.js +44 -0
- package/src/mcp/tools/Component Detail Retriever/handler.js +38 -0
- package/src/mcp/tools/Component Editor Guide/handler.js +76 -0
- package/src/mcp/tools/Component Editor Guide/prompt.js +519 -0
- package/src/mcp/tools/Component List Retriever/handler.js +43 -0
- package/src/mcp/tools/Component Publisher/handler.js +18 -0
- package/src/mcp/tools/Component Puller/handler.js +63 -0
- package/src/mcp/tools/{dev-env/fetcher.js → Dev Environment Creator/fetcher.js } +8 -8
- package/src/mcp/tools/{dev-env/prompt.js → Dev Environment Creator/prompt.js } +19 -2
- package/src/mcp/tools/Dev Environment Validator/handler.js +88 -0
- package/src/mcp/tools/Dev Environment Validator/prompt.js +193 -0
- package/src/mcp/tools/{key-guide/fetcher.js → Developer Key Setup Guide/fetcher.js } +7 -7
- package/src/mcp/tools/{key-guide/prompt.js → Developer Key Setup Guide/prompt.js } +3 -3
- package/src/mcp/tools/Object Creator/handler.js +34 -0
- package/src/mcp/tools/Object Fields Creator/handler.js +64 -0
- package/src/mcp/tools/Object Fields Retriever/handler.js +37 -0
- package/src/mcp/tools/Object Fields Retriever/prompt.js +10 -0
- package/src/mcp/tools/Object List Retriever/handler.js +43 -0
- package/src/mcp/tools/Object List Retriever/prompt.js +10 -0
- package/src/mcp/tools/Scheduled Class Creator/handler.js +37 -0
- package/src/mcp/tools/Scheduled Class Detail Retriever/handler.js +34 -0
- package/src/mcp/tools/Scheduled Class List Retriever/handler.js +52 -0
- package/src/mcp/tools/Scheduled Class Publisher/handler.js +30 -0
- package/src/mcp/tools/Scheduled Class Puller/handler.js +92 -0
- package/src/mcp/tools/Trigger Creator/handler.js +53 -0
- package/src/mcp/tools/Trigger Detail Retriever/handler.js +33 -0
- package/src/mcp/tools/Trigger Editor Guide/handler.js +58 -0
- package/src/mcp/tools/Trigger List Retriever/handler.js +49 -0
- package/src/mcp/tools/Trigger Publisher/handler.js +34 -0
- package/src/mcp/tools/Trigger Puller/handler.js +40 -0
- package/src/mcp/tools/ccdk/fetcher.js +3 -3
- package/src/mcp/tools/ccdk/prompt.js +2 -2
- package/src/mcp/tools/index.js +23 -0
- package/src/object/create.js +105 -0
- package/src/object/get.js +43 -4
- package/src/object/index.js +2 -1
- package/src/plugin/create1.js +8 -7
- package/src/plugin/detail.js +91 -0
- package/src/plugin/get.js +79 -0
- package/src/plugin/index.js +4 -1
- package/src/plugin/publish.js +13 -13
- package/src/plugin/publish1.js +30 -22
- package/src/plugin/pull.js +173 -0
- package/src/project/create.js +9 -9
- package/src/project/create1.js +31 -17
- package/src/recordType/get.js +4 -2
- package/src/script/create.js +7 -7
- package/src/script/detail.js +95 -0
- package/src/script/get.js +4 -2
- package/src/script/index.js +1 -0
- package/src/script/publish.js +14 -14
- package/src/script/pull.js +12 -12
- package/src/script/pullList.js +5 -3
- package/src/timer/create.js +7 -7
- package/src/timer/detail.js +84 -0
- package/src/timer/get.js +6 -3
- package/src/timer/publish.js +7 -7
- package/src/timer/pull.js +8 -8
- package/src/timer/pullList.js +5 -3
- package/src/token/get.js +1 -1
- package/src/triggers/create.js +7 -7
- package/src/triggers/detail.js +90 -0
- package/src/triggers/get.js +4 -2
- package/src/triggers/index.js +1 -0
- package/src/triggers/publish.js +7 -7
- package/src/triggers/pull.js +8 -8
- package/src/triggers/pullList.js +5 -3
- package/src/version/get.js +3 -3
- package/target/ccopenapi-0.0.3-classes.jar +0 -0
- package/target/ccopenapi-0.0.3.jar +0 -0
- package/target/maven-archiver/pom.properties +3 -0
- package/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +18 -0
- package/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +19 -0
- package/template/Appvue +2 -2
- package/template/index.js +30 -19
- package/tool/branch/index.js +1 -1
- package/tool/checkLange/checkLang.js +6 -6
- package/tool/checkLange/clearLang.js +1 -1
- package/utils/accessClass.js +23 -0
- package/utils/checkVersion.js +22 -20
- package/utils/config.js +18 -3
- package/utils/http.js +10 -10
- package/utils/utils.js +97 -32
- package/java/com/cloudcc/core/CCTriggerDemo.java +0 -25
- package/src/classes/create.js +0 -66
- package/src/classes/get.js +0 -22
- package/src/classes/index.js +0 -11
- package/src/classes/publish.js +0 -51
- package/src/classes/pull.js +0 -55
- package/src/classes/pullList.js +0 -44
- package/src/mcp/tools/classes/handler.js +0 -358
- package/src/mcp/tools/classes/prompt.js +0 -1261
- package/src/mcp/tools/plugin/handler.js +0 -92
- /package/src/mcp/tools/{plugin → Component Publisher}/prompt.js +0 -0
- /package/src/mcp/tools/{dev-env → Dev Environment Creator}/handler.js +0 -0
- /package/src/mcp/tools/{key-guide → Developer Key Setup Guide}/handler.js +0 -0
package/src/mcp/index.js
CHANGED
|
@@ -12,216 +12,620 @@ const { z } = require("zod");
|
|
|
12
12
|
|
|
13
13
|
// 导入各个工具的处理器
|
|
14
14
|
const ccdkHandler = require("./tools/ccdk/handler.js");
|
|
15
|
-
const devEnvHandler = require("./tools/
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
|
|
15
|
+
const devEnvHandler = require("./tools/Dev Environment Creator/handler.js");
|
|
16
|
+
const keyGuideHandler = require("./tools/Developer Key Setup Guide/handler.js");
|
|
17
|
+
const devEnvValidatorHandler = require("./tools/Dev Environment Validator/handler.js");
|
|
18
|
+
// 对象相关工具处理器
|
|
19
|
+
const customObjectHandler = require('./tools/Object Creator/handler.js');
|
|
20
|
+
const objectListHandler = require('./tools/Object List Retriever/handler.js');
|
|
21
|
+
const objectFieldsHandler = require('./tools/Object Fields Retriever/handler.js');
|
|
22
|
+
const fieldCreatorHandler = require('./tools/Object Fields Creator/handler.js');
|
|
23
|
+
// 自定义类工具处理器
|
|
24
|
+
const classesHandler = require("./tools/Class List Retriever/handler.js");
|
|
25
|
+
const classCreatorHandler = require('./tools/Class Creator/handler.js');
|
|
26
|
+
const classPublisherHandler = require('./tools/Class Publisher/handler.js');
|
|
27
|
+
const classPullerHandler = require('./tools/Class Puller/handler.js');
|
|
28
|
+
const classDetailHandler = require('./tools/Class Detail Retriever/handler.js');
|
|
29
|
+
const classEditorGuideHandler = require('./tools/Class Editor Guide/handler.js');
|
|
30
|
+
// 定时类工具处理器
|
|
31
|
+
const scheduleCreatorHandler = require('./tools/Scheduled Class Creator/handler.js');
|
|
32
|
+
const scheduleListHandler = require('./tools/Scheduled Class List Retriever/handler.js');
|
|
33
|
+
const scheduleDetailHandler = require('./tools/Scheduled Class Detail Retriever/handler.js');
|
|
34
|
+
const schedulePullerHandler = require('./tools/Scheduled Class Puller/handler.js');
|
|
35
|
+
const schedulePublisherHandler = require('./tools/Scheduled Class Publisher/handler.js');
|
|
36
|
+
// 触发器工具处理器
|
|
37
|
+
const triggerCreatorHandler = require('./tools/Trigger Creator/handler.js');
|
|
38
|
+
const triggerListHandler = require('./tools/Trigger List Retriever/handler.js');
|
|
39
|
+
const triggerDetailHandler = require('./tools/Trigger Detail Retriever/handler.js');
|
|
40
|
+
const triggerPullerHandler = require('./tools/Trigger Puller/handler.js');
|
|
41
|
+
const triggerPublisherHandler = require('./tools/Trigger Publisher/handler.js');
|
|
42
|
+
const triggerEditorGuideHandler = require('./tools/Trigger Editor Guide/handler.js');
|
|
43
|
+
// 自定义组件工具处理器
|
|
44
|
+
const componentCreatorHandler = require("./tools/Component Creator/handler.js");
|
|
45
|
+
const componentListHandler = require('./tools/Component List Retriever/handler.js');
|
|
46
|
+
const componentDetailHandler = require('./tools/Component Detail Retriever/handler.js');
|
|
47
|
+
const componentEditorGuideHandler = require('./tools/Component Editor Guide/handler.js');
|
|
48
|
+
const componentPullerHandler = require('./tools/Component Puller/handler.js');
|
|
49
|
+
const componentPublisherHandler = require('./tools/Component Publisher/handler.js');
|
|
50
|
+
// 客户端脚本工具处理器
|
|
51
|
+
const clientScriptCreatorHandler = require('./tools/Client Script Creator/handler.js');
|
|
52
|
+
const clientScriptListHandler = require('./tools/Client Script List Retriever/handler.js');
|
|
53
|
+
const clientScriptDetailHandler = require('./tools/Client Script Detail Retriever/handler.js');
|
|
54
|
+
const clientScriptEditorGuideHandler = require('./tools/Client Script Editor Guide/handler.js');
|
|
55
|
+
const clientScriptPullerHandler = require('./tools/Client Script Puller/handler.js');
|
|
56
|
+
const clientScriptPublisherHandler = require('./tools/Client Script Publisher/handler.js');
|
|
57
|
+
// CloudCC 开发项目概要工具处理器
|
|
58
|
+
const cloudccOverviewHandler = require('./tools/CloudCC Development Overview/handler.js');
|
|
19
59
|
|
|
20
60
|
const mcpServer = new McpServer({
|
|
21
61
|
name: 'cctool',
|
|
22
62
|
version: '1.0.0'
|
|
23
63
|
});
|
|
24
64
|
|
|
25
|
-
// ====================
|
|
65
|
+
// ==================== Dev Environment Validator ====================
|
|
66
|
+
mcpServer.registerTool(
|
|
67
|
+
'get_dev_environment_validator',
|
|
68
|
+
{
|
|
69
|
+
description: '帮助开发者检查本地环境是否支持开发 CloudCC 应用(例如自定义组件、自定义类),并按步骤、关键词、平台或难度返回对应的操作或验证命令。',
|
|
70
|
+
inputSchema: z.object({
|
|
71
|
+
step: z.number().int().optional().describe('可选,按步骤号返回具体步骤'),
|
|
72
|
+
search: z.string().optional().describe('可选,按关键词搜索步骤'),
|
|
73
|
+
difficulty: z.enum(['easy', 'medium', 'hard']).optional().describe('可选,按难度过滤'),
|
|
74
|
+
platform: z.enum(['windows', 'macos', 'linux']).optional().describe('可选,按平台获取命令'),
|
|
75
|
+
command: z.boolean().optional().describe('可选,返回所有命令的汇总')
|
|
76
|
+
})
|
|
77
|
+
},
|
|
78
|
+
devEnvValidatorHandler.getDevEnvSetup
|
|
79
|
+
);
|
|
26
80
|
|
|
27
|
-
//
|
|
81
|
+
// ==================== Dev Environment Creator 工具 ====================
|
|
28
82
|
mcpServer.registerTool(
|
|
29
|
-
'
|
|
83
|
+
'get_dev_environment_creator',
|
|
30
84
|
{
|
|
31
|
-
description: '获取 CloudCC
|
|
32
|
-
inputSchema: {
|
|
33
|
-
|
|
34
|
-
|
|
85
|
+
description: '获取 CloudCC 开发环境搭建指南,帮助用户按步骤完成开发环境的安装与配置。',
|
|
86
|
+
inputSchema: z.object({
|
|
87
|
+
step: z.number().int().optional(),
|
|
88
|
+
search: z.string().optional(),
|
|
89
|
+
difficulty: z.enum(['easy', 'medium', 'hard']).optional(),
|
|
90
|
+
platform: z.enum(['windows', 'macos', 'linux']).optional(),
|
|
91
|
+
command: z.boolean().optional(),
|
|
92
|
+
})
|
|
35
93
|
},
|
|
36
|
-
|
|
94
|
+
devEnvHandler.getDevEnvSetup
|
|
37
95
|
);
|
|
38
96
|
|
|
39
|
-
//
|
|
97
|
+
// ==================== Developer Key Setup Guide 工具 ====================
|
|
40
98
|
mcpServer.registerTool(
|
|
41
|
-
'
|
|
99
|
+
'get_developer_key_setup_guide',
|
|
42
100
|
{
|
|
43
|
-
description: '
|
|
44
|
-
inputSchema: {
|
|
45
|
-
keyword: z.string().describe('搜索关键词'),
|
|
46
|
-
maxResults: z.number().optional().default(20)
|
|
47
|
-
}
|
|
101
|
+
description: '创建完CloudCC模版项目后,获取 CloudCC 安全标记(safetyMark)和开发者密钥(CloudCCDev)相关的完整指南,以及配置方法。',
|
|
102
|
+
inputSchema: z.object({})
|
|
48
103
|
},
|
|
49
|
-
|
|
104
|
+
keyGuideHandler.getKeyGuide
|
|
50
105
|
);
|
|
51
106
|
|
|
52
|
-
//
|
|
107
|
+
// ==================== Custom Object Creator ====================
|
|
53
108
|
mcpServer.registerTool(
|
|
54
|
-
'
|
|
109
|
+
'create_custom_object',
|
|
55
110
|
{
|
|
56
|
-
description: '
|
|
57
|
-
inputSchema: {
|
|
58
|
-
|
|
59
|
-
|
|
111
|
+
description: '在 CloudCC CRM 系统中创建一个自定义对象(Custom Object),相当于数据库的表。',
|
|
112
|
+
inputSchema: z.object({
|
|
113
|
+
label: z.string().min(1).describe('对象的显示标签(例如: 客户)'),
|
|
114
|
+
projectPath: z.string().describe('项目根路径,默认为当前工作目录')
|
|
115
|
+
})
|
|
60
116
|
},
|
|
61
|
-
|
|
117
|
+
customObjectHandler.createCustomObject
|
|
62
118
|
);
|
|
63
119
|
|
|
64
|
-
// ====================
|
|
120
|
+
// ==================== Object List Retriever ====================
|
|
121
|
+
mcpServer.registerTool(
|
|
122
|
+
'get_object_list',
|
|
123
|
+
{
|
|
124
|
+
description: '查询CloudCC CRM 对象列表(标准对象、自定义对象或两者)',
|
|
125
|
+
inputSchema: z.object({
|
|
126
|
+
type: z.enum(['standard', 'custom', 'both']).optional().default('both').describe('查询类型:standard、custom、both'),
|
|
127
|
+
projectPath: z.string().describe('项目根路径,默认为当前工作目录')
|
|
128
|
+
})
|
|
129
|
+
},
|
|
130
|
+
objectListHandler.listObjects
|
|
131
|
+
);
|
|
65
132
|
|
|
66
|
-
|
|
133
|
+
|
|
134
|
+
// ==================== Object Fields Retriever ====================
|
|
67
135
|
mcpServer.registerTool(
|
|
68
|
-
'
|
|
136
|
+
'get_object_fields',
|
|
69
137
|
{
|
|
70
|
-
description: '
|
|
138
|
+
description: '查询CloudCC CRM 某个对象的字段列表(通过对象前缀:objprefix,可通过 get_object_list 工具获取)',
|
|
71
139
|
inputSchema: z.object({
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
difficulty: z.enum(['easy', 'medium', 'hard']).optional(),
|
|
75
|
-
platform: z.enum(['windows', 'macos', 'linux']).optional(),
|
|
76
|
-
command: z.boolean().optional(),
|
|
140
|
+
objprefix: z.string().describe('对象前缀:objprefix,可通过 get_object_list 工具获取'),
|
|
141
|
+
projectPath: z.string().describe('项目根路径,默认为当前工作目录')
|
|
77
142
|
})
|
|
78
143
|
},
|
|
79
|
-
|
|
144
|
+
objectFieldsHandler.getFields
|
|
80
145
|
);
|
|
81
146
|
|
|
82
|
-
// ====================
|
|
147
|
+
// ==================== Object Fields Creator ====================
|
|
148
|
+
mcpServer.registerTool(
|
|
149
|
+
'create_object_field',
|
|
150
|
+
{
|
|
151
|
+
description: '在 CloudCC CRM 对象中创建新字段。支持多种字段类型:S(文本),U(URL),SCORE(评分),IMG(图片),P(百分比),C(币种),J(文本区-长,最长32000字符),H(电话),E(电子邮件),B(复选框),A(富文本),D(日期),F(日期/时间),T(时间),N(数字),ENC(加密文本-存储加密),ENCD(加密文本-显示加密),X(文本区,最多4000字符),L(选项列表-单选),Q(选项列表-多选),AD(地址),LT(地理定位,用于录入经纬度),FL(文件),Y(查找关系),MR(查找多选),M(主详信息关系)。',
|
|
152
|
+
inputSchema: z.object({
|
|
153
|
+
objid: z.string().min(1).describe('对象ID,可通过 get_object_list,create_custom_object,get_object_detail 工具获取,或手动输入ID'),
|
|
154
|
+
fieldType: z.enum(['S', 'U', 'SCORE', 'IMG', 'P', 'C', 'J', 'H', 'E', 'B', 'A', 'D', 'F', 'T', 'N', 'ENC', 'ENCD', 'X', 'L', 'Q', 'AD', 'LT', 'FL', 'Y', 'MR', 'M']).describe('字段类型:S(文本),U(URL),SCORE(评分),IMG(图片),P(百分比),C(币种),J(文本区-长,最长32000字符),H(电话),E(电子邮件),B(复选框),A(富文本),D(日期),F(日期/时间),T(时间),N(数字),ENC(加密文本-存储加密),ENCD(加密文本-显示加密),X(文本区,最多4000字符),L(选项列表-单选),Q(选项列表-多选),AD(地址),LT(地理定位,用于录入经纬度),FL(文件),Y(查找关系),MR(查找多选),M(主详信息关系)'),
|
|
155
|
+
nameLabel: z.string().min(1).describe('字段名称,必填字段'),
|
|
156
|
+
projectPath: z.string().optional().describe('项目根路径,默认为当前工作目录'),
|
|
157
|
+
ptext: z.string().optional().describe('选项列表文本,多个选项用\\r\\n分隔,当字段类型为L(选项列表-单选)或Q(选项列表-多选)时必填'),
|
|
158
|
+
lookupObj: z.string().optional().describe('查找关系对象ID,当字段类型为Y(查找关系)、MR(查找多选)或M(主详信息关系)时必填'),
|
|
159
|
+
})
|
|
160
|
+
},
|
|
161
|
+
fieldCreatorHandler.createObjectField
|
|
162
|
+
);
|
|
83
163
|
|
|
84
|
-
//
|
|
164
|
+
// ==================== Class List Retriever ====================
|
|
85
165
|
mcpServer.registerTool(
|
|
86
|
-
'
|
|
166
|
+
'get_custom_class_list',
|
|
87
167
|
{
|
|
88
|
-
description: '
|
|
168
|
+
description: '获取 CloudCC CRM 服务器上的自定义类列表',
|
|
89
169
|
inputSchema: {
|
|
90
|
-
className: z.string().min(1).describe('Java 类名,必须符合 Java 命名规范(字母开头,只能包含字母、数字和下划线)'),
|
|
91
170
|
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
92
171
|
}
|
|
93
172
|
},
|
|
94
|
-
classesHandler.
|
|
173
|
+
classesHandler.listClasses
|
|
95
174
|
);
|
|
96
175
|
|
|
97
|
-
//
|
|
176
|
+
// ==================== Class Detail Retriever 工具 ====================
|
|
98
177
|
mcpServer.registerTool(
|
|
99
|
-
'
|
|
178
|
+
'get_class_detail',
|
|
100
179
|
{
|
|
101
|
-
description: '
|
|
102
|
-
inputSchema: {
|
|
103
|
-
className: z.string().
|
|
180
|
+
description: '获取 CloudCC CRM 自定义类的详细信息(本地优先)。可以通过类名查询本地,也可以通过ID查询服务器。至少需要提供className或classId其中之一',
|
|
181
|
+
inputSchema: z.object({
|
|
182
|
+
className: z.string().optional().describe('类名(可选,优先从本地查询)'),
|
|
183
|
+
classId: z.string().optional().describe('类ID(可选,当没有className时从服务器查询)'),
|
|
104
184
|
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
105
|
-
}
|
|
185
|
+
})
|
|
106
186
|
},
|
|
107
|
-
|
|
187
|
+
classDetailHandler.getClassDetail
|
|
108
188
|
);
|
|
109
189
|
|
|
110
|
-
//
|
|
190
|
+
// ==================== Class Puller 工具 ====================
|
|
111
191
|
mcpServer.registerTool(
|
|
112
192
|
'pull_class',
|
|
113
193
|
{
|
|
114
|
-
description: '从 CloudCC 服务器拉取自定义类的最新代码,更新本地文件中 @SOURCE_CONTENT_START 和 @SOURCE_CONTENT_END
|
|
115
|
-
inputSchema: {
|
|
194
|
+
description: '从 CloudCC CRM 服务器拉取自定义类的最新代码,更新本地文件中 @SOURCE_CONTENT_START 和 @SOURCE_CONTENT_END 之间的内容。如果本地不存在该类,会自动从服务器创建',
|
|
195
|
+
inputSchema: z.object({
|
|
116
196
|
className: z.string().min(1).describe('要拉取的类名'),
|
|
117
197
|
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
118
|
-
}
|
|
198
|
+
})
|
|
119
199
|
},
|
|
120
|
-
|
|
200
|
+
classPullerHandler.pullClass
|
|
121
201
|
);
|
|
122
202
|
|
|
123
|
-
//
|
|
203
|
+
// ==================== Class Publisher 工具 ====================
|
|
124
204
|
mcpServer.registerTool(
|
|
125
|
-
'
|
|
205
|
+
'publish_class',
|
|
126
206
|
{
|
|
127
|
-
description: '
|
|
128
|
-
inputSchema: {
|
|
129
|
-
|
|
130
|
-
|
|
207
|
+
description: '将本地自定义类发布到 CloudCC CRM 服务器,只上传 @SOURCE_CONTENT_START 和 @SOURCE_CONTENT_END 之间的代码',
|
|
208
|
+
inputSchema: z.object({
|
|
209
|
+
className: z.string().min(1).describe('要发布的类名'),
|
|
210
|
+
projectPath: z.string().optional().describe('项目根目录路径,默认为当前工作目录')
|
|
211
|
+
})
|
|
212
|
+
},
|
|
213
|
+
classPublisherHandler.publishClass
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
// ==================== Class Creator 工具 ====================
|
|
217
|
+
mcpServer.registerTool(
|
|
218
|
+
'create_class',
|
|
219
|
+
{
|
|
220
|
+
description: '创建一个新的 CloudCC CRM 自定义类,会在 classes/{ClassName}/ 目录下生成 Java 类文件、测试文件和配置文件',
|
|
221
|
+
inputSchema: z.object({
|
|
222
|
+
className: z.string().min(1).describe('Java 类名,必须符合 Java 命名规范(字母开头,只能包含字母、数字和下划线)'),
|
|
223
|
+
projectPath: z.string().optional().describe('项目根目录路径,默认为当前工作目录')
|
|
224
|
+
})
|
|
225
|
+
},
|
|
226
|
+
classCreatorHandler.createClass
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
// ==================== Class Editor Guide 工具 ====================
|
|
230
|
+
mcpServer.registerTool(
|
|
231
|
+
'get_class_editor_guide',
|
|
232
|
+
{
|
|
233
|
+
description: '【必读】编辑/修改/优化 CloudCC 自定义类和定时类时的完整指南。默认返回规范、最佳实践和API概要,需要详细API时再指定topic查询。',
|
|
234
|
+
inputSchema: z.object({
|
|
235
|
+
topic: z.enum([
|
|
236
|
+
'overview', 'ccservice', 'object', 'email', 'time', 'user', 'logger', 'scenarios'
|
|
237
|
+
])
|
|
238
|
+
.optional()
|
|
239
|
+
.default('overview')
|
|
240
|
+
.describe(`编辑指南主题(建议先查看 overview):
|
|
241
|
+
- overview: 📋 规范 + 最佳实践 + 强制要求 + API概要(首选,包含所有重要信息)
|
|
242
|
+
- ccservice: 📖 CCService 数据操作详细API(查询、新增、更新、删除)
|
|
243
|
+
- object: 📖 CCObject 对象操作详细API
|
|
244
|
+
- email: 📖 SendEmail 邮件服务详细API
|
|
245
|
+
- time: 📖 TimeUtil 时间工具详细API
|
|
246
|
+
- user: 📖 UserInfo 用户信息详细API
|
|
247
|
+
- logger: 📖 DevLogger 日志输出详细API
|
|
248
|
+
- scenarios: 💡 常见编辑场景完整示例`)
|
|
249
|
+
})
|
|
250
|
+
},
|
|
251
|
+
classEditorGuideHandler.editClass
|
|
252
|
+
);
|
|
253
|
+
|
|
254
|
+
// ==================== Scheduled Class Creator 工具 ====================
|
|
255
|
+
mcpServer.registerTool(
|
|
256
|
+
'create_schedule',
|
|
257
|
+
{
|
|
258
|
+
description: '创建一个新的 CloudCC CRM 定时类,会在 schedule/{ScheduleName}/ 目录下生成继承 CCSchedule 的 Java 类文件和配置文件。定时类用于执行定时任务。',
|
|
259
|
+
inputSchema: z.object({
|
|
260
|
+
scheduleName: z.string().min(1).describe('定时类名,必须符合 Java 命名规范(字母开头,只能包含字母、数字和下划线)'),
|
|
261
|
+
projectPath: z.string().optional().describe('项目根目录路径,默认为当前工作目录')
|
|
262
|
+
})
|
|
263
|
+
},
|
|
264
|
+
scheduleCreatorHandler.createSchedule
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
// ==================== Scheduled Class List Retriever 工具 ====================
|
|
268
|
+
mcpServer.registerTool(
|
|
269
|
+
'get_schedule_list',
|
|
270
|
+
{
|
|
271
|
+
description: '获取 CloudCC CRM 服务器上的定时类列表',
|
|
272
|
+
inputSchema: z.object({
|
|
131
273
|
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
132
|
-
}
|
|
274
|
+
})
|
|
133
275
|
},
|
|
134
|
-
|
|
276
|
+
scheduleListHandler.listSchedules
|
|
135
277
|
);
|
|
136
278
|
|
|
137
|
-
//
|
|
279
|
+
// ==================== Scheduled Class Detail Retriever 工具 ====================
|
|
138
280
|
mcpServer.registerTool(
|
|
139
|
-
'
|
|
281
|
+
'get_schedule_detail',
|
|
140
282
|
{
|
|
141
|
-
description: '
|
|
142
|
-
inputSchema: {
|
|
143
|
-
|
|
283
|
+
description: '获取 CloudCC CRM 定时类的详细信息(本地优先)。可以通过定时类名查询本地,也可以通过ID查询服务器。至少需要提供scheduleName或scheduleId其中之一',
|
|
284
|
+
inputSchema: z.object({
|
|
285
|
+
scheduleName: z.string().optional().describe('定时类名(可选,优先从本地查询)'),
|
|
286
|
+
scheduleId: z.string().optional().describe('定时类ID(可选,当没有scheduleName时从服务器查询)'),
|
|
144
287
|
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
145
|
-
}
|
|
288
|
+
})
|
|
146
289
|
},
|
|
147
|
-
|
|
290
|
+
scheduleDetailHandler.getScheduleDetail
|
|
148
291
|
);
|
|
149
292
|
|
|
150
|
-
//
|
|
293
|
+
// ==================== Scheduled Class Puller 工具 ====================
|
|
151
294
|
mcpServer.registerTool(
|
|
152
|
-
'
|
|
295
|
+
'pull_schedule',
|
|
153
296
|
{
|
|
154
|
-
description: '
|
|
155
|
-
inputSchema: {
|
|
156
|
-
|
|
297
|
+
description: '从 CloudCC CRM 服务器拉取定时类的最新代码,更新本地文件中 @SOURCE_CONTENT_START 和 @SOURCE_CONTENT_END 之间的内容。如果本地不存在该定时类,会自动从服务器创建',
|
|
298
|
+
inputSchema: z.object({
|
|
299
|
+
scheduleName: z.string().min(1).describe('要拉取的定时类名'),
|
|
300
|
+
projectPath: z.string().optional().describe('项目根目录路径,默认为当前工作目录')
|
|
301
|
+
})
|
|
302
|
+
},
|
|
303
|
+
schedulePullerHandler.pullSchedule
|
|
304
|
+
);
|
|
305
|
+
|
|
306
|
+
// ==================== Scheduled Class Publisher 工具 ====================
|
|
307
|
+
mcpServer.registerTool(
|
|
308
|
+
'publish_schedule',
|
|
309
|
+
{
|
|
310
|
+
description: '将本地定时类发布到 CloudCC CRM 服务器,只上传 @SOURCE_CONTENT_START 和 @SOURCE_CONTENT_END 之间的代码',
|
|
311
|
+
inputSchema: z.object({
|
|
312
|
+
scheduleName: z.string().min(1).describe('要发布的定时类名'),
|
|
157
313
|
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
158
|
-
}
|
|
314
|
+
})
|
|
159
315
|
},
|
|
160
|
-
|
|
316
|
+
schedulePublisherHandler.publishSchedule
|
|
161
317
|
);
|
|
162
318
|
|
|
163
|
-
//
|
|
319
|
+
// ==================== Trigger Creator 工具 ====================
|
|
164
320
|
mcpServer.registerTool(
|
|
165
|
-
'
|
|
321
|
+
'create_trigger',
|
|
166
322
|
{
|
|
167
|
-
description: '
|
|
168
|
-
inputSchema: {
|
|
169
|
-
|
|
323
|
+
description: '创建一个新的 CloudCC CRM 触发器,会在 triggers/{objectName}/{triggerName}/ 目录下生成继承 CCTrigger 的 Java 类文件和配置文件。触发器用于在对象操作时执行特定逻辑。',
|
|
324
|
+
inputSchema: z.object({
|
|
325
|
+
triggerName: z.string().min(1).describe('触发器名称,必须符合 Java 命名规范(字母开头,只能包含字母、数字和下划线)'),
|
|
326
|
+
objectName: z.string().min(1).describe('对象名称(schemetableName),触发器关联的对象'),
|
|
327
|
+
targetObjectId: z.string().min(1).describe('目标对象ID'),
|
|
328
|
+
triggerTime: z.string().min(1).describe('触发时间(例如:beforeInsert, beforeUpdate, beforeUpsert, beforeDelete, afterInsert, afterUpdate, afterUpsert, afterDelete, afterInsertCommit, afterUpdateCommit, afterUpsertCommit, afterDeleteCommit, approval, beforeBatch, afterBatch, commitBatch)'),
|
|
329
|
+
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
330
|
+
})
|
|
331
|
+
},
|
|
332
|
+
triggerCreatorHandler.createTrigger
|
|
333
|
+
);
|
|
334
|
+
|
|
335
|
+
// ==================== Trigger List Retriever 工具 ====================
|
|
336
|
+
mcpServer.registerTool(
|
|
337
|
+
'get_trigger_list',
|
|
338
|
+
{
|
|
339
|
+
description: '获取 CloudCC CRM 服务器上的触发器列表,可选筛选条件',
|
|
340
|
+
inputSchema: z.object({
|
|
341
|
+
triggerName: z.string().optional().describe('可选,触发器名称(用于筛选)'),
|
|
342
|
+
targetObjectId: z.string().optional().describe('可选,目标对象ID(用于筛选)'),
|
|
343
|
+
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
344
|
+
})
|
|
345
|
+
},
|
|
346
|
+
triggerListHandler.listTriggers
|
|
347
|
+
);
|
|
348
|
+
|
|
349
|
+
// ==================== Trigger Detail Retriever 工具 ====================
|
|
350
|
+
mcpServer.registerTool(
|
|
351
|
+
'get_trigger_detail',
|
|
352
|
+
{
|
|
353
|
+
description: '获取 CloudCC CRM 触发器的详细信息(本地优先)。可以通过触发器路径查询本地,也可以通过ID查询服务器。至少需要提供triggerPath或triggerId其中之一',
|
|
354
|
+
inputSchema: z.object({
|
|
355
|
+
triggerPath: z.string().optional().describe('触发器路径 "objectName/triggerName"(可选,优先从本地查询)'),
|
|
356
|
+
triggerId: z.string().optional().describe('触发器ID(可选,当没有triggerPath时从服务器查询)'),
|
|
357
|
+
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
358
|
+
})
|
|
359
|
+
},
|
|
360
|
+
triggerDetailHandler.getTriggerDetail
|
|
361
|
+
);
|
|
362
|
+
|
|
363
|
+
// ==================== Trigger Puller 工具 ====================
|
|
364
|
+
mcpServer.registerTool(
|
|
365
|
+
'pull_trigger',
|
|
366
|
+
{
|
|
367
|
+
description: '从 CloudCC CRM 服务器拉取触发器的最新代码到本地,更新本地文件中 @SOURCE_CONTENT_START 和 @SOURCE_CONTENT_END 之间的内容。如果本地不存在该触发器,会自动从服务器创建',
|
|
368
|
+
inputSchema: z.object({
|
|
369
|
+
id: z.string().min(1).describe('要拉取的触发器ID'),
|
|
370
|
+
projectPath: z.string().optional().describe('项目根目录路径,默认为当前工作目录')
|
|
371
|
+
})
|
|
372
|
+
},
|
|
373
|
+
triggerPullerHandler.pullTrigger
|
|
374
|
+
);
|
|
375
|
+
|
|
376
|
+
// ==================== Trigger Publisher 工具 ====================
|
|
377
|
+
mcpServer.registerTool(
|
|
378
|
+
'publish_trigger',
|
|
379
|
+
{
|
|
380
|
+
description: '将本地触发器发布到 CloudCC CRM 服务器,只上传 @SOURCE_CONTENT_START 和 @SOURCE_CONTENT_END 之间的代码',
|
|
381
|
+
inputSchema: z.object({
|
|
382
|
+
triggerPath: z.string().min(1).describe('要发布的触发器路径 "objectName/triggerName"'),
|
|
383
|
+
projectPath: z.string().optional().describe('项目根目录路径,默认为当前工作目录')
|
|
384
|
+
})
|
|
385
|
+
},
|
|
386
|
+
triggerPublisherHandler.publishTrigger
|
|
387
|
+
);
|
|
388
|
+
|
|
389
|
+
// ==================== Trigger Editor Guide 工具 ====================
|
|
390
|
+
mcpServer.registerTool(
|
|
391
|
+
'get_trigger_editor_guide',
|
|
392
|
+
{
|
|
393
|
+
description: '【必读】编辑/修改/优化 CloudCC 触发器时的完整指南。触发器与自定义类、定时类共享相同的API。默认返回规范、最佳实践和API概要,需要详细API时再指定topic查询。',
|
|
394
|
+
inputSchema: z.object({
|
|
395
|
+
topic: z.enum([
|
|
396
|
+
'overview', 'ccservice', 'object', 'email', 'time', 'user', 'logger', 'scenarios'
|
|
397
|
+
])
|
|
170
398
|
.optional()
|
|
171
399
|
.default('overview')
|
|
172
|
-
.describe(
|
|
173
|
-
- overview:
|
|
174
|
-
- ccservice: CCService
|
|
175
|
-
- object: CCObject
|
|
176
|
-
- email: SendEmail
|
|
177
|
-
- time: TimeUtil
|
|
178
|
-
- user: UserInfo
|
|
179
|
-
- logger: DevLogger
|
|
180
|
-
- scenarios:
|
|
181
|
-
|
|
182
|
-
}
|
|
400
|
+
.describe(`编辑指南主题(建议先查看 overview):
|
|
401
|
+
- overview: 📋 规范 + 最佳实践 + 强制要求 + API概要(首选,包含所有重要信息)
|
|
402
|
+
- ccservice: 📖 CCService 数据操作详细API(查询、新增、更新、删除)
|
|
403
|
+
- object: 📖 CCObject 对象操作详细API
|
|
404
|
+
- email: 📖 SendEmail 邮件服务详细API
|
|
405
|
+
- time: 📖 TimeUtil 时间工具详细API
|
|
406
|
+
- user: 📖 UserInfo 用户信息详细API
|
|
407
|
+
- logger: 📖 DevLogger 日志输出详细API
|
|
408
|
+
- scenarios: 💡 常见编辑场景完整示例`)
|
|
409
|
+
})
|
|
183
410
|
},
|
|
184
|
-
|
|
411
|
+
triggerEditorGuideHandler.editTrigger
|
|
185
412
|
);
|
|
186
413
|
|
|
187
|
-
// ====================
|
|
414
|
+
// ==================== Component Creator 工具 ====================
|
|
415
|
+
mcpServer.registerTool(
|
|
416
|
+
'create_custom_component',
|
|
417
|
+
{
|
|
418
|
+
description: '创建一个新的 CloudCC Vue 自定义组件。基于vue2.x的组件创建,会生成主组件文件、子组件目录和配置文件',
|
|
419
|
+
inputSchema: z.object({
|
|
420
|
+
pluginName: z.string().min(1).describe('插件名称,用于创建目录和主文件,命名规范,必须符合dom-element-name规范'),
|
|
421
|
+
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
422
|
+
})
|
|
423
|
+
},
|
|
424
|
+
componentCreatorHandler.createCustomComponent
|
|
425
|
+
);
|
|
188
426
|
|
|
189
|
-
//
|
|
427
|
+
// ==================== Component Publisher 工具 ====================
|
|
190
428
|
mcpServer.registerTool(
|
|
191
|
-
'
|
|
429
|
+
'publish_custom_component',
|
|
192
430
|
{
|
|
193
|
-
description: '
|
|
194
|
-
inputSchema: z.object({
|
|
431
|
+
description: '将 Vue 自定义组件编译并发布到 CloudCC 服务器,必须使用返回的命令,在控制台执行',
|
|
432
|
+
inputSchema: z.object({
|
|
433
|
+
componentName: z.string().min(1).describe('要发布的组件名称'),
|
|
434
|
+
projectPath: z.string().optional().describe('项目根目录路径,默认为当前工作目录')
|
|
435
|
+
})
|
|
195
436
|
},
|
|
196
|
-
|
|
437
|
+
componentPublisherHandler.publishCustomComponent
|
|
197
438
|
);
|
|
198
439
|
|
|
199
|
-
// ====================
|
|
440
|
+
// ==================== Component List Retriever 工具 ====================
|
|
441
|
+
mcpServer.registerTool(
|
|
442
|
+
'get_custom_component_list',
|
|
443
|
+
{
|
|
444
|
+
description: '获取 CloudCC CRM 服务器上的自定义组件列表(本地和服务器)',
|
|
445
|
+
inputSchema: z.object({
|
|
446
|
+
projectPath: z.string().optional().describe('项目根目录路径,默认为当前工作目录')
|
|
447
|
+
})
|
|
448
|
+
},
|
|
449
|
+
componentListHandler.listCustomComponents
|
|
450
|
+
);
|
|
200
451
|
|
|
201
|
-
//
|
|
452
|
+
// ==================== Component Detail Retriever 工具 ====================
|
|
202
453
|
mcpServer.registerTool(
|
|
203
|
-
'
|
|
454
|
+
'get_custom_component_detail',
|
|
204
455
|
{
|
|
205
|
-
description: '
|
|
206
|
-
inputSchema: {
|
|
207
|
-
|
|
456
|
+
description: '获取 CloudCC CRM 自定义组件的详细信息(本地优先)。可以通过组件名查询本地,也可以通过ID查询服务器。至少需要提供componentName或componentId其中之一',
|
|
457
|
+
inputSchema: z.object({
|
|
458
|
+
componentName: z.string().optional().describe('组件名称(可选,优先从本地查询)'),
|
|
459
|
+
componentId: z.string().optional().describe('组件ID(可选,当没有componentName时从服务器查询)'),
|
|
208
460
|
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
209
|
-
}
|
|
461
|
+
})
|
|
210
462
|
},
|
|
211
|
-
|
|
463
|
+
componentDetailHandler.getCustomComponentDetail
|
|
212
464
|
);
|
|
213
465
|
|
|
214
|
-
//
|
|
466
|
+
// ==================== Component Editor Guide 工具 ====================
|
|
215
467
|
mcpServer.registerTool(
|
|
216
|
-
'
|
|
468
|
+
'get_component_editor_guide',
|
|
217
469
|
{
|
|
218
|
-
description: '
|
|
219
|
-
inputSchema: {
|
|
220
|
-
|
|
470
|
+
description: '【必读】编辑/修改/优化 CloudCC 自定义组件时的完整指南。默认返回规范、最佳实践和API概要,需要详细API时再指定topic查询。',
|
|
471
|
+
inputSchema: z.object({
|
|
472
|
+
topic: z.enum([
|
|
473
|
+
'overview', 'component-structure', 'config', 'data-structure',
|
|
474
|
+
'style-scoped', 'publish-workflow', 'dependency', 'project-config',
|
|
475
|
+
'api', 'bestpractices', 'faq'
|
|
476
|
+
])
|
|
477
|
+
.optional()
|
|
478
|
+
.default('overview')
|
|
479
|
+
.describe(`编辑指南主题(建议先查看 overview):
|
|
480
|
+
- overview: 📋 规范 + 最佳实践 + 强制要求 + API概要(首选,包含所有重要信息)
|
|
481
|
+
- component-structure: 📖 组件结构说明
|
|
482
|
+
- config: 📖 配置文件详解
|
|
483
|
+
- data-structure: 📖 数据结构规范
|
|
484
|
+
- style-scoped: 📖 样式作用域最佳实践
|
|
485
|
+
- publish-workflow: 📖 发布流程详解
|
|
486
|
+
- dependency: 📖 依赖收集机制
|
|
487
|
+
- project-config: 📖 项目配置文件
|
|
488
|
+
- api: 📖 API 参考文档
|
|
489
|
+
- bestpractices: 💡 最佳实践
|
|
490
|
+
- faq: ❓ 常见问题`)
|
|
491
|
+
})
|
|
492
|
+
},
|
|
493
|
+
componentEditorGuideHandler.editComponent
|
|
494
|
+
);
|
|
495
|
+
|
|
496
|
+
// ==================== Component Puller 工具 ====================
|
|
497
|
+
mcpServer.registerTool(
|
|
498
|
+
'pull_custom_component',
|
|
499
|
+
{
|
|
500
|
+
description: '从 CloudCC CRM 服务器拉取自定义组件的最新代码到本地。支持通过组件名或ID拉取:如果传入组件名且本地存在,会从 config.json 读取 id 后拉取;如果传入 ID,直接通过 ID 拉取',
|
|
501
|
+
inputSchema: z.object({
|
|
502
|
+
componentName: z.string().optional().describe('组件名称(可选,如果本地存在会从 config.json 读取 id)'),
|
|
503
|
+
componentId: z.string().optional().describe('组件ID(可选,直接通过 ID 拉取)'),
|
|
221
504
|
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
222
|
-
}
|
|
505
|
+
}).refine(data => data.componentName || data.componentId, {
|
|
506
|
+
message: '必须提供 componentName 或 componentId 其中之一'
|
|
507
|
+
})
|
|
508
|
+
},
|
|
509
|
+
componentPullerHandler.pullCustomComponent
|
|
510
|
+
);
|
|
511
|
+
|
|
512
|
+
// ==================== Client Script Creator 工具 ====================
|
|
513
|
+
// mcpServer.registerTool(
|
|
514
|
+
// 'create_client_script',
|
|
515
|
+
// {
|
|
516
|
+
// description: '创建一个新的 CloudCC 客户端脚本,会在 script/{objName}/{scriptName}/ 目录下生成脚本文件和配置文件。客户端脚本用于在页面加载、字段变更等事件时执行 JavaScript 代码。\n\npageId 选项:list (List View), detail (Detail View), edit (Edit View), add (New View)\nusageScenario 选项:"" (All), "PC", "H5", "App"\nevent 选择范围根据 pageId 决定:\n- list: onCreated, onLoad, onDestroy\n- detail: onLoad\n- edit: onCreated, onLoad, onDestroy, beforeSave, afterSave\n- add: onCreated, onLoad, onDestroy, beforeSave, afterSave',
|
|
517
|
+
// inputSchema: z.object({
|
|
518
|
+
// scriptName: z.string().min(1).describe('脚本名称,必须符合 JavaScript 命名规范(字母开头,只能包含字母、数字和下划线)'),
|
|
519
|
+
// scriptDesc: z.string().optional().describe('脚本描述(可选)'),
|
|
520
|
+
// objId: z.string().min(1).describe('对象ID,从对象列表获取'),
|
|
521
|
+
// objName: z.string().min(1).describe('对象名称,脚本关联的对象'),
|
|
522
|
+
// schemetableName: z.string().min(1).describe('对象表名,从对象列表获取'),
|
|
523
|
+
// recordTypeId: z.string().optional().describe('记录类型ID,通过对象的objprefix查询获取(可选)'),
|
|
524
|
+
// recordTypeName: z.string().optional().describe('记录类型名称,通过对象的objprefix查询获取(可选)'),
|
|
525
|
+
// pageId: z.enum(['list', 'detail', 'edit', 'add']).describe('页面ID:list (List View), detail (Detail View), edit (Edit View), add (New View)'),
|
|
526
|
+
// eventType: z.string().optional().default('pageType').describe('事件类型,默认为 pageType(可选)'),
|
|
527
|
+
// event: z.string().min(1).describe('事件名称,根据 pageId 决定可选值:list(onCreated/onLoad/onDestroy), detail(onLoad), edit/add(onCreated/onLoad/onDestroy/beforeSave/afterSave)'),
|
|
528
|
+
// fieldId: z.string().optional().describe('字段ID(可选)'),
|
|
529
|
+
// usageScenario: z.enum(['', 'PC', 'H5', 'App']).optional().default('').describe('使用场景:"" (All), "PC", "H5", "App"(可选)'),
|
|
530
|
+
// projectPath: z.string().optional().describe('项目根目录路径,默认为当前工作目录')
|
|
531
|
+
// })
|
|
532
|
+
// },
|
|
533
|
+
// clientScriptCreatorHandler.createClientScript
|
|
534
|
+
// );
|
|
535
|
+
|
|
536
|
+
// ==================== Client Script List Retriever 工具 ====================
|
|
537
|
+
mcpServer.registerTool(
|
|
538
|
+
'get_client_script_list',
|
|
539
|
+
{
|
|
540
|
+
description: '获取 CloudCC CRM 服务器上的客户端脚本列表',
|
|
541
|
+
inputSchema: z.object({
|
|
542
|
+
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录'),
|
|
543
|
+
condition: z.object({
|
|
544
|
+
id: z.string().optional().describe('脚本ID(用于筛选)'),
|
|
545
|
+
pageLabel: z.string().optional().describe('页面标签(用于筛选)'),
|
|
546
|
+
objName: z.string().optional().describe('对象名称(用于筛选)')
|
|
547
|
+
}).optional().describe('查询条件(可选)')
|
|
548
|
+
})
|
|
549
|
+
},
|
|
550
|
+
clientScriptListHandler.listClientScripts
|
|
551
|
+
);
|
|
552
|
+
|
|
553
|
+
// ==================== Client Script Detail Retriever 工具 ====================
|
|
554
|
+
mcpServer.registerTool(
|
|
555
|
+
'get_client_script_detail',
|
|
556
|
+
{
|
|
557
|
+
description: '获取 CloudCC CRM 客户端脚本的详细信息(本地优先)。可以通过脚本路径查询本地,也可以通过ID查询服务器。至少需要提供scriptPath或scriptId其中之一',
|
|
558
|
+
inputSchema: z.object({
|
|
559
|
+
scriptPath: z.string().optional().describe('脚本路径 "objName/scriptName"(可选,优先从本地查询)'),
|
|
560
|
+
scriptId: z.string().optional().describe('脚本ID(可选,当没有scriptPath时从服务器查询)'),
|
|
561
|
+
projectPath: z.string().optional().describe('项目根目录路径,默认为当前工作目录')
|
|
562
|
+
}).refine(data => data.scriptPath || data.scriptId, {
|
|
563
|
+
message: '必须提供 scriptPath 或 scriptId 其中之一'
|
|
564
|
+
})
|
|
565
|
+
},
|
|
566
|
+
clientScriptDetailHandler.getClientScriptDetail
|
|
567
|
+
);
|
|
568
|
+
|
|
569
|
+
// ==================== Client Script Editor Guide 工具 ====================
|
|
570
|
+
mcpServer.registerTool(
|
|
571
|
+
'get_client_script_editor_guide',
|
|
572
|
+
{
|
|
573
|
+
description: '【必读】编辑/修改/优化 CloudCC 客户端脚本时的完整指南。默认返回规范、最佳实践和API概要,需要详细API时再指定topic查询。使用CCDK知识库提供API参考。',
|
|
574
|
+
inputSchema: z.object({
|
|
575
|
+
topic: z.enum([
|
|
576
|
+
'overview', 'structure', 'config', 'ccdk-api', 'bestpractices', 'faq'
|
|
577
|
+
])
|
|
578
|
+
.optional()
|
|
579
|
+
.default('overview')
|
|
580
|
+
.describe(`编辑指南主题(建议先查看 overview):
|
|
581
|
+
- overview: 📋 规范 + 最佳实践 + 强制要求 + API概要(首选,包含所有重要信息)
|
|
582
|
+
- structure: 📖 脚本结构说明
|
|
583
|
+
- config: 📖 配置文件详解
|
|
584
|
+
- ccdk-api: 📖 CCDK API 参考文档
|
|
585
|
+
- bestpractices: 💡 最佳实践
|
|
586
|
+
- faq: ❓ 常见问题`)
|
|
587
|
+
})
|
|
588
|
+
},
|
|
589
|
+
clientScriptEditorGuideHandler.editClientScript
|
|
590
|
+
);
|
|
591
|
+
|
|
592
|
+
// ==================== Client Script Puller 工具 ====================
|
|
593
|
+
mcpServer.registerTool(
|
|
594
|
+
'pull_client_script',
|
|
595
|
+
{
|
|
596
|
+
description: '从 CloudCC CRM 服务器拉取客户端脚本的最新代码到本地。支持通过脚本路径或ID拉取:如果传入脚本路径且本地存在,会从 config.json 读取 id 后拉取;如果传入 ID,直接通过 ID 拉取并自动创建目录和文件',
|
|
597
|
+
inputSchema: z.object({
|
|
598
|
+
scriptPath: z.string().optional().describe('脚本路径 "objName/scriptName"(可选,如果本地存在会从 config.json 读取 id)'),
|
|
599
|
+
scriptId: z.string().optional().describe('脚本ID(可选,直接通过 ID 拉取,会自动创建目录和文件)'),
|
|
600
|
+
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
601
|
+
}).refine(data => data.scriptPath || data.scriptId, {
|
|
602
|
+
message: '必须提供 scriptPath 或 scriptId 其中之一'
|
|
603
|
+
})
|
|
604
|
+
},
|
|
605
|
+
clientScriptPullerHandler.pullClientScript
|
|
606
|
+
);
|
|
607
|
+
|
|
608
|
+
// ==================== Client Script Publisher 工具 ====================
|
|
609
|
+
mcpServer.registerTool(
|
|
610
|
+
'publish_client_script',
|
|
611
|
+
{
|
|
612
|
+
description: '将本地客户端脚本发布到 CloudCC CRM 服务器,只上传 function main($CCDK, obj) 函数体内的代码',
|
|
613
|
+
inputSchema: z.object({
|
|
614
|
+
scriptPath: z.string().min(1).describe('脚本路径 "objName/scriptName"'),
|
|
615
|
+
projectPath: z.string().describe('项目根目录路径,默认为当前工作目录')
|
|
616
|
+
})
|
|
617
|
+
},
|
|
618
|
+
clientScriptPublisherHandler.publishClientScript
|
|
619
|
+
);
|
|
620
|
+
|
|
621
|
+
// ==================== CloudCC Development Overview 工具 ====================
|
|
622
|
+
mcpServer.registerTool(
|
|
623
|
+
'get_cloudcc_development_overview',
|
|
624
|
+
{
|
|
625
|
+
description: 'CloudCC 开发项目概要信息,开始开发前必须查看,用于快速了解CloudCC开发平台',
|
|
626
|
+
inputSchema: z.object({})
|
|
223
627
|
},
|
|
224
|
-
|
|
628
|
+
cloudccOverviewHandler.getCloudCCDevelopmentOverview
|
|
225
629
|
);
|
|
226
630
|
|
|
227
631
|
module.exports = mcpServer;
|