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.
Files changed (174) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/README.md +35 -0
  3. package/bin/cc.js +11 -36
  4. package/bin/index.js +33 -0
  5. package/bin/mcp-svc.js +13 -0
  6. package/java/com/cloudcc/core/TriggerInvoker.java +17 -1
  7. package/package.json +3 -2
  8. package/pom.xml +1 -0
  9. package/prompt/DevelopmentEnvironmentConstruction.ts +133 -0
  10. package/prompt/ccdk.ts +1190 -0
  11. package/prompt/ccprompt.ts +8 -0
  12. package/prompt/cloudccdev.ts +109 -0
  13. package/prompt/index.ts +52 -0
  14. package/prompt/objectInfo.ts +94 -0
  15. package/prompt/objectList.ts +25 -0
  16. package/prompt/openapi.ts +310 -0
  17. package/prompt/system.ts +14 -0
  18. package/prompt/vscodeExtension.ts +27 -0
  19. package/src/approval/approve.js +105 -0
  20. package/src/approval/get.js +245 -0
  21. package/src/approval/index.js +11 -0
  22. package/src/approval/reject.js +105 -0
  23. package/src/brief/get.js +51 -0
  24. package/src/brief/index.js +7 -0
  25. package/src/config/get.js +1 -1
  26. package/src/fields/create.js +204 -0
  27. package/src/fields/fields/A.js +23 -0
  28. package/src/fields/fields/AD.js +25 -0
  29. package/src/fields/fields/B.js +28 -0
  30. package/src/fields/fields/C.js +28 -0
  31. package/src/fields/fields/D.js +27 -0
  32. package/src/fields/fields/E.js +28 -0
  33. package/src/fields/fields/ENC.js +28 -0
  34. package/src/fields/fields/ENCD.js +28 -0
  35. package/src/fields/fields/F.js +27 -0
  36. package/src/fields/fields/FL.js +25 -0
  37. package/src/fields/fields/H.js +27 -0
  38. package/src/fields/fields/IMG.js +27 -0
  39. package/src/fields/fields/J.js +26 -0
  40. package/src/fields/fields/L.js +32 -0
  41. package/src/fields/fields/LT.js +28 -0
  42. package/src/fields/fields/M.js +29 -0
  43. package/src/fields/fields/MR.js +24 -0
  44. package/src/fields/fields/N.js +30 -0
  45. package/src/fields/fields/P.js +28 -0
  46. package/src/fields/fields/Q.js +35 -0
  47. package/src/fields/fields/S.js +30 -0
  48. package/src/fields/fields/SCORE.js +24 -0
  49. package/src/fields/fields/T.js +27 -0
  50. package/src/fields/fields/U.js +28 -0
  51. package/src/fields/fields/X.js +28 -0
  52. package/src/fields/fields/Y.js +33 -0
  53. package/src/fields/get.js +36 -0
  54. package/src/fields/index.js +9 -0
  55. package/src/mcp/MCP/345/234/272/346/231/257/346/250/241/346/213/237.md +8 -0
  56. package/src/mcp/index-sse-svc.js +126 -0
  57. package/src/mcp/index-streamable-svc.js +180 -0
  58. package/src/mcp/index.js +519 -115
  59. package/src/mcp/readme.md +75 -70
  60. package/src/mcp/tools/Approval/handler.js +349 -0
  61. package/src/mcp/tools/Class Creator/handler.js +37 -0
  62. package/src/mcp/tools/Class Detail Retriever/handler.js +33 -0
  63. package/src/mcp/tools/Class Detail Retriever/prompt.js +37 -0
  64. package/src/mcp/tools/Class Editor Guide/handler.js +72 -0
  65. package/src/mcp/tools/Class Editor Guide/prompt.js +468 -0
  66. package/src/mcp/tools/Class List Retriever/handler.js +36 -0
  67. package/src/mcp/tools/Class Publisher/handler.js +29 -0
  68. package/src/mcp/tools/Class Publisher/prompt.js +40 -0
  69. package/src/mcp/tools/Class Puller/handler.js +86 -0
  70. package/src/mcp/tools/Class Puller/prompt.js +49 -0
  71. package/src/mcp/tools/Client Script Creator/handler.js +179 -0
  72. package/src/mcp/tools/Client Script Detail Retriever/handler.js +53 -0
  73. package/src/mcp/tools/Client Script Editor Guide/handler.js +633 -0
  74. package/src/mcp/tools/Client Script List Retriever/handler.js +68 -0
  75. package/src/mcp/tools/Client Script Publisher/handler.js +54 -0
  76. package/src/mcp/tools/Client Script Puller/handler.js +73 -0
  77. package/src/mcp/tools/CloudCC Development Overview/handler.js +48 -0
  78. package/src/mcp/tools/CloudCC Development Overview/prompt.js +870 -0
  79. package/src/mcp/tools/Component Creator/handler.js +44 -0
  80. package/src/mcp/tools/Component Detail Retriever/handler.js +38 -0
  81. package/src/mcp/tools/Component Editor Guide/handler.js +76 -0
  82. package/src/mcp/tools/Component Editor Guide/prompt.js +519 -0
  83. package/src/mcp/tools/Component List Retriever/handler.js +43 -0
  84. package/src/mcp/tools/Component Publisher/handler.js +18 -0
  85. package/src/mcp/tools/Component Puller/handler.js +63 -0
  86. package/src/mcp/tools/{dev-env/fetcher.js → Dev Environment Creator/fetcher.js } +8 -8
  87. package/src/mcp/tools/{dev-env/prompt.js → Dev Environment Creator/prompt.js } +19 -2
  88. package/src/mcp/tools/Dev Environment Validator/handler.js +88 -0
  89. package/src/mcp/tools/Dev Environment Validator/prompt.js +193 -0
  90. package/src/mcp/tools/{key-guide/fetcher.js → Developer Key Setup Guide/fetcher.js } +7 -7
  91. package/src/mcp/tools/{key-guide/prompt.js → Developer Key Setup Guide/prompt.js } +3 -3
  92. package/src/mcp/tools/Object Creator/handler.js +34 -0
  93. package/src/mcp/tools/Object Fields Creator/handler.js +64 -0
  94. package/src/mcp/tools/Object Fields Retriever/handler.js +37 -0
  95. package/src/mcp/tools/Object Fields Retriever/prompt.js +10 -0
  96. package/src/mcp/tools/Object List Retriever/handler.js +43 -0
  97. package/src/mcp/tools/Object List Retriever/prompt.js +10 -0
  98. package/src/mcp/tools/Scheduled Class Creator/handler.js +37 -0
  99. package/src/mcp/tools/Scheduled Class Detail Retriever/handler.js +34 -0
  100. package/src/mcp/tools/Scheduled Class List Retriever/handler.js +52 -0
  101. package/src/mcp/tools/Scheduled Class Publisher/handler.js +30 -0
  102. package/src/mcp/tools/Scheduled Class Puller/handler.js +92 -0
  103. package/src/mcp/tools/Trigger Creator/handler.js +53 -0
  104. package/src/mcp/tools/Trigger Detail Retriever/handler.js +33 -0
  105. package/src/mcp/tools/Trigger Editor Guide/handler.js +58 -0
  106. package/src/mcp/tools/Trigger List Retriever/handler.js +49 -0
  107. package/src/mcp/tools/Trigger Publisher/handler.js +34 -0
  108. package/src/mcp/tools/Trigger Puller/handler.js +40 -0
  109. package/src/mcp/tools/ccdk/fetcher.js +3 -3
  110. package/src/mcp/tools/ccdk/prompt.js +2 -2
  111. package/src/mcp/tools/index.js +23 -0
  112. package/src/object/create.js +105 -0
  113. package/src/object/get.js +43 -4
  114. package/src/object/index.js +2 -1
  115. package/src/plugin/create1.js +8 -7
  116. package/src/plugin/detail.js +91 -0
  117. package/src/plugin/get.js +79 -0
  118. package/src/plugin/index.js +4 -1
  119. package/src/plugin/publish.js +13 -13
  120. package/src/plugin/publish1.js +30 -22
  121. package/src/plugin/pull.js +173 -0
  122. package/src/project/create.js +9 -9
  123. package/src/project/create1.js +31 -17
  124. package/src/recordType/get.js +4 -2
  125. package/src/script/create.js +7 -7
  126. package/src/script/detail.js +95 -0
  127. package/src/script/get.js +4 -2
  128. package/src/script/index.js +1 -0
  129. package/src/script/publish.js +14 -14
  130. package/src/script/pull.js +12 -12
  131. package/src/script/pullList.js +5 -3
  132. package/src/timer/create.js +7 -7
  133. package/src/timer/detail.js +84 -0
  134. package/src/timer/get.js +6 -3
  135. package/src/timer/publish.js +7 -7
  136. package/src/timer/pull.js +8 -8
  137. package/src/timer/pullList.js +5 -3
  138. package/src/token/get.js +1 -1
  139. package/src/triggers/create.js +7 -7
  140. package/src/triggers/detail.js +90 -0
  141. package/src/triggers/get.js +4 -2
  142. package/src/triggers/index.js +1 -0
  143. package/src/triggers/publish.js +7 -7
  144. package/src/triggers/pull.js +8 -8
  145. package/src/triggers/pullList.js +5 -3
  146. package/src/version/get.js +3 -3
  147. package/target/ccopenapi-0.0.3-classes.jar +0 -0
  148. package/target/ccopenapi-0.0.3.jar +0 -0
  149. package/target/maven-archiver/pom.properties +3 -0
  150. package/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +18 -0
  151. package/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +19 -0
  152. package/template/Appvue +2 -2
  153. package/template/index.js +30 -19
  154. package/tool/branch/index.js +1 -1
  155. package/tool/checkLange/checkLang.js +6 -6
  156. package/tool/checkLange/clearLang.js +1 -1
  157. package/utils/accessClass.js +23 -0
  158. package/utils/checkVersion.js +22 -20
  159. package/utils/config.js +18 -3
  160. package/utils/http.js +10 -10
  161. package/utils/utils.js +97 -32
  162. package/java/com/cloudcc/core/CCTriggerDemo.java +0 -25
  163. package/src/classes/create.js +0 -66
  164. package/src/classes/get.js +0 -22
  165. package/src/classes/index.js +0 -11
  166. package/src/classes/publish.js +0 -51
  167. package/src/classes/pull.js +0 -55
  168. package/src/classes/pullList.js +0 -44
  169. package/src/mcp/tools/classes/handler.js +0 -358
  170. package/src/mcp/tools/classes/prompt.js +0 -1261
  171. package/src/mcp/tools/plugin/handler.js +0 -92
  172. /package/src/mcp/tools/{plugin → Component Publisher}/prompt.js +0 -0
  173. /package/src/mcp/tools/{dev-env → Dev Environment Creator}/handler.js +0 -0
  174. /package/src/mcp/tools/{key-guide → Developer Key Setup Guide}/handler.js +0 -0
@@ -1,55 +0,0 @@
1
- const { checkUpdate } = require("../../utils/checkVersion")
2
- const fs = require("fs");
3
- const path = require("path")
4
- const chalk = require("chalk")
5
-
6
- const { javaContentRegular } = require("../../utils/utils")
7
-
8
- const { getPackageJson } = require("../../utils/config")
9
- const { postClass } = require("../../utils/http")
10
-
11
- async function pull(name) {
12
- let res = await checkUpdate();
13
- if (!res) {
14
- console.log();
15
- const now = new Date();
16
- const timeStr = now.getFullYear() + '-' + String(now.getMonth() + 1).padStart(2, '0') + '-' + String(now.getDate()).padStart(2, '0') + ' ' + String(now.getHours()).padStart(2, '0') + ':' + String(now.getMinutes()).padStart(2, '0') + ':' + String(now.getSeconds()).padStart(2, '0');
17
- console.log(chalk.green(timeStr));
18
- console.log(chalk.green('Pulling, please wait...'));
19
- console.log();
20
- const classPath = path.join(process.cwd(), `classes/${name}/`);
21
- let configContent = JSON.parse(fs.readFileSync(classPath + "config.json", 'utf8'));
22
- if (!configContent.id) {
23
- console.log(chalk.red('Class ID is not exist, please publish first!'));
24
- throw new Error('Class ID is not exist, please publish first!');
25
- }
26
- let body = {
27
- "id": configContent.id,
28
- }
29
- let config = await getPackageJson();
30
- let res = await postClass(config.setupSvc + "/api/ccfag/detail", body, config.accessToken)
31
- if (res.result) {
32
- console.log(chalk.green('Success!'));
33
- console.log();
34
-
35
- let fullContent = fs.readFileSync(classPath + `${name}.java`, 'utf8');
36
-
37
- let newContent = '';
38
- if (fullContent.includes("@SOURCE_CONTENT_START")) {
39
- newContent = fullContent.replace(
40
- javaContentRegular,
41
- `// @SOURCE_CONTENT_START\n${res.data.trigger.source}\n// @SOURCE_CONTENT_END`
42
- );
43
- } else {
44
- newContent = res.data.trigger.source;
45
- }
46
-
47
- fs.writeFileSync(classPath + `${name}.java`, newContent, 'utf8');
48
-
49
- } else {
50
- console.log(chalk.red('Pull Class Failed:' + res.returnInfo));
51
- throw new Error('Pull Class Failed: ' + res.returnInfo);
52
- }
53
- }
54
- }
55
- module.exports = pull;
@@ -1,44 +0,0 @@
1
- const fs = require("fs");
2
- const path = require("path")
3
- const { getPackageJson } = require("../../utils/config");
4
- const { postClass } = require("../../utils/http");
5
-
6
- /**
7
- * Batch pull class details and generate local files
8
- * @param class id
9
- */
10
- async function pullList(id, url) {
11
- let config = await getPackageJson(url);
12
- const body = { id };
13
- const res = await postClass(config.setupSvc + "/api/ccfag/detail", body, config.accessToken);
14
- try {
15
- const data = res.data;
16
- const trigger = data.trigger;
17
- const className = trigger.name;
18
- const folderPath = path.join(url, `classes/${trigger.name}`);
19
- // 3. Check and create folder
20
- if (!fs.existsSync(folderPath)) {
21
- fs.mkdirSync(folderPath, { recursive: true });
22
- }
23
- // 4. Create class file
24
- const javaFile = path.join(folderPath, `${className}.java`);
25
- const javaContent = `package classes.${className};\n\nimport com.cloudcc.core.*;\n// @SOURCE_CONTENT_START\n${trigger.source}\n// @SOURCE_CONTENT_END\n`;
26
- fs.writeFileSync(javaFile, javaContent, "utf8");
27
- // 5. Create config.json
28
- const configJson = {
29
- name: trigger.name,
30
- version: "2",
31
- id: trigger.id || id
32
- };
33
- fs.writeFileSync(path.join(folderPath, "config.json"), JSON.stringify(configJson, null, 4), "utf8");
34
- // 6. Create test class
35
- const testClassName = `${className}Test`;
36
- const testContent = `package classes.${className};\n\nimport com.cloudcc.core.*;\n\npublic class ${testClassName} {\n public static void main(String[] args) {\n System.out.println(\"name:\");\n }\n}\n`;
37
- fs.writeFileSync(path.join(folderPath, `${testClassName}.java`), testContent, "utf8");
38
- console.log("true");
39
- } catch (e) {
40
- console.log(`Error occurred while processing class id: ${id}, message: ${e.message}`);
41
- }
42
- }
43
-
44
- module.exports = pullList;
@@ -1,358 +0,0 @@
1
- /**
2
- * Classes 工具处理器
3
- * 提供自定义类的创建、发布、拉取、查询等功能
4
- */
5
-
6
- const fs = require('fs');
7
- const path = require('path');
8
- const createClassModule = require('../../../classes/create');
9
- const publishClassModule = require('../../../classes/publish');
10
- const pullClassModule = require('../../../classes/pull');
11
- const getClassModule = require('../../../classes/get');
12
- const pullListModule = require('../../../classes/pullList');
13
-
14
- /**
15
- * 创建自定义类
16
- */
17
- async function createClass({ className, projectPath = process.cwd() }) {
18
- try {
19
- // 临时改变工作目录以兼容原有模块
20
- const originalCwd = process.cwd();
21
- process.chdir(projectPath);
22
-
23
- try {
24
- await createClassModule(className);
25
- const classPath = path.join(projectPath, `classes/${className}`);
26
- return {
27
- content: [{
28
- type: 'text',
29
- text: `✓ 创建成功!\n\n类路径: ${classPath}\n生成的文件:\n - ${className}.java (主类文件)\n - ${className}Test.java (测试类文件)\n - config.json (配置文件)`
30
- }]
31
- };
32
- } finally {
33
- process.chdir(originalCwd);
34
- }
35
- } catch (error) {
36
- return { content: [{ type: 'text', text: `✗ 创建失败: ${error.message}` }] };
37
- }
38
- }
39
-
40
- /**
41
- * 发布类到服务器
42
- */
43
- async function publishClass({ className, projectPath = process.cwd() }) {
44
- try {
45
- const originalCwd = process.cwd();
46
- process.chdir(projectPath);
47
-
48
- try {
49
- await publishClassModule(className);
50
- return { content: [{ type: 'text', text: `✓ 发布成功!类 ${className} 已发布到服务器` }] };
51
- } finally {
52
- process.chdir(originalCwd);
53
- }
54
- } catch (error) {
55
- return { content: [{ type: 'text', text: `✗ 发布失败: ${error.message}` }] };
56
- }
57
- }
58
-
59
- /**
60
- * 从服务器拉取类
61
- */
62
- async function pullClass({ className, projectPath = process.cwd() }) {
63
- try {
64
- const classPath = path.join(projectPath, `classes/${className}`);
65
- const configPath = path.join(classPath, 'config.json');
66
-
67
- // 检查本地是否存在该类
68
- if (!fs.existsSync(configPath)) {
69
- // 本地不存在,查询服务器
70
- try {
71
- const queryString = encodeURI(JSON.stringify({
72
- name: className
73
- }));
74
- const classList = await getClassModule(queryString, projectPath);
75
-
76
- if (!classList || classList.length === 0) {
77
- return {
78
- content: [{
79
- type: 'text',
80
- text: `✗ 拉取失败: 服务器上不存在类 ${className}`
81
- }]
82
- };
83
- }
84
-
85
- // 找到匹配的类
86
- const targetClass = classList.find(item => item.name === className || item.apiname === className);
87
- if (!targetClass) {
88
- return {
89
- content: [{
90
- type: 'text',
91
- text: `✗ 拉取失败: 服务器上未找到类 ${className}`
92
- }]
93
- };
94
- }
95
-
96
- // 使用 ID 从服务器拉取并在本地创建
97
- const originalCwd = process.cwd();
98
- process.chdir(projectPath);
99
-
100
- try {
101
- await pullListModule(targetClass.id, projectPath);
102
- return {
103
- content: [{
104
- type: 'text',
105
- text: `✓ 拉取成功!已从服务器拉取类 ${className} 并在本地创建\n\n本地路径: classes/${className}/`
106
- }]
107
- };
108
- } finally {
109
- process.chdir(originalCwd);
110
- }
111
- } catch (error) {
112
- return { content: [{ type: 'text', text: `✗ 拉取失败: ${error.message}` }] };
113
- }
114
- }
115
-
116
- // 本地存在,直接更新
117
- const originalCwd = process.cwd();
118
- process.chdir(projectPath);
119
-
120
- try {
121
- await pullClassModule(className);
122
- return { content: [{ type: 'text', text: `✓ 拉取成功!本地文件已更新: classes/${className}/${className}.java` }] };
123
- } finally {
124
- process.chdir(originalCwd);
125
- }
126
- } catch (error) {
127
- return { content: [{ type: 'text', text: `✗ 拉取失败: ${error.message}` }] };
128
- }
129
- }
130
-
131
- /**
132
- * 获取类列表
133
- */
134
- async function listClasses({ queryParams = {}, limit = 20, projectPath = process.cwd() }) {
135
- try {
136
- const queryString = encodeURI(JSON.stringify(queryParams));
137
- const originalCwd = process.cwd();
138
- process.chdir(projectPath);
139
-
140
- let classList;
141
- try {
142
- classList = await getClassModule(queryString, projectPath);
143
- } finally {
144
- process.chdir(originalCwd);
145
- }
146
-
147
- if (!classList || classList.length === 0) {
148
- return { content: [{ type: 'text', text: '未找到任何类' }] };
149
- }
150
-
151
- const limitedList = classList.slice(0, limit);
152
- let result = `## 类列表\n\n找到 ${classList.length} 个类,显示前 ${limitedList.length} 个\n\n`;
153
-
154
- limitedList.forEach((item, index) => {
155
- result += `### ${index + 1}. ${item.name || item.apiname}\n`;
156
- result += `- **ID**: ${item.id}\n`;
157
- result += `- **API名称**: ${item.apiname || 'N/A'}\n\n`;
158
- });
159
-
160
- if (classList.length > limit) {
161
- result += `\n提示:还有 ${classList.length - limit} 个类未显示`;
162
- }
163
-
164
- return { content: [{ type: 'text', text: result }] };
165
- } catch (error) {
166
- return { content: [{ type: 'text', text: `✗ 查询失败: ${error.message}` }] };
167
- }
168
- }
169
-
170
- /**
171
- * 获取类详细信息
172
- */
173
- async function getClassDetail({ className, projectPath = process.cwd() }) {
174
- try {
175
- const configPath = path.join(projectPath, `classes/${className}/config.json`);
176
- const javaFilePath = path.join(projectPath, `classes/${className}/${className}.java`);
177
-
178
- if (!fs.existsSync(configPath)) {
179
- return { content: [{ type: 'text', text: `✗ 类 ${className} 不存在` }] };
180
- }
181
-
182
- const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
183
- const javaContent = fs.readFileSync(javaFilePath, 'utf8');
184
- const lines = javaContent.split('\n');
185
-
186
- let result = `## 类信息: ${className}\n\n`;
187
- result += `### 配置信息\n`;
188
- result += `- **名称**: ${config.name}\n`;
189
- result += `- **版本**: ${config.version}\n`;
190
- result += `- **服务器ID**: ${config.id || '未发布'}\n\n`;
191
- result += `### 文件信息\n`;
192
- result += `- **路径**: classes/${className}/${className}.java\n`;
193
- result += `- **总行数**: ${lines.length}\n\n`;
194
- result += `### 源码预览(前50行)\n\`\`\`java\n`;
195
- result += lines.slice(0, 50).join('\n');
196
- if (lines.length > 50) {
197
- result += `\n...\n(还有 ${lines.length - 50} 行未显示)`;
198
- }
199
- result += `\n\`\`\``;
200
-
201
- return { content: [{ type: 'text', text: result }] };
202
- } catch (error) {
203
- return { content: [{ type: 'text', text: `✗ 获取失败: ${error.message}` }] };
204
- }
205
- }
206
-
207
- /**
208
- * 批量拉取多个类
209
- */
210
- async function pullMultipleClasses({ classIds, projectPath = process.cwd() }) {
211
- const results = { success: [], failed: [] };
212
-
213
- try {
214
- const originalCwd = process.cwd();
215
- process.chdir(projectPath);
216
-
217
- try {
218
- for (let i = 0; i < classIds.length; i++) {
219
- const classId = classIds[i];
220
- try {
221
- await pullListModule(classId, projectPath);
222
- results.success.push(classId);
223
- } catch (error) {
224
- results.failed.push({ id: classId, error: error.message });
225
- }
226
- }
227
- } finally {
228
- process.chdir(originalCwd);
229
- }
230
-
231
- let result = `## 批量拉取完成\n\n`;
232
- result += `- **成功**: ${results.success.length} 个\n`;
233
- result += `- **失败**: ${results.failed.length} 个\n\n`;
234
-
235
- if (results.success.length > 0) {
236
- result += `### 成功的类\n${results.success.map(id => `- ${id}`).join('\n')}\n\n`;
237
- }
238
-
239
- if (results.failed.length > 0) {
240
- result += `### 失败的类\n${results.failed.map(({ id, error }) => `- **${id}**: ${error}`).join('\n')}`;
241
- }
242
-
243
- return { content: [{ type: 'text', text: result }] };
244
- } catch (error) {
245
- return { content: [{ type: 'text', text: `✗ 批量拉取失败: ${error.message}` }] };
246
- }
247
- }
248
-
249
- /**
250
- * 查看创建指南 - 使用 javaClassTemplate、configStructure、usageGuide
251
- */
252
- async function viewCreateGuide() {
253
- try {
254
- const prompt = require('./prompt');
255
- let result = `## ${prompt.javaClassTemplate.name}\n\n`;
256
- result += `${prompt.javaClassTemplate.description}\n\n`;
257
- result += `### 代码模板\n\`\`\`java\n${prompt.javaClassTemplate.example}\n\`\`\`\n\n`;
258
- result += `### 重要提示\n`;
259
- prompt.javaClassTemplate.notes.forEach(note => {
260
- result += `- ${note}\n`;
261
- });
262
-
263
- result += `\n## ${prompt.configStructure.name}\n\n`;
264
- result += `${prompt.configStructure.description}\n\n`;
265
- result += `### 配置字段\n`;
266
- for (const [key, field] of Object.entries(prompt.configStructure.fields)) {
267
- result += `- **${key}** (${field.type}${field.required ? ', 必需' : ''}): ${field.description}\n`;
268
- if (field.default) result += ` 默认值: ${field.default}\n`;
269
- }
270
- result += `\n### 示例\n\`\`\`json\n${JSON.stringify(prompt.configStructure.example, null, 2)}\n\`\`\`\n`;
271
-
272
- result += `\n## 工作流\n`;
273
- prompt.usageGuide.workflow.forEach(step => {
274
- result += `${step}\n`;
275
- });
276
-
277
- result += `\n## 最佳实践\n`;
278
- prompt.usageGuide.bestPractices.forEach(practice => {
279
- result += `- ${practice}\n`;
280
- });
281
- return { content: [{ type: 'text', text: result }] };
282
- } catch (error) {
283
- return { content: [{ type: 'text', text: `✗ 获取创建指南失败: ${error.message}` }] };
284
- }
285
- }
286
-
287
- /**
288
- * 查看 API 文档 - 使用 ccServiceApis
289
- */
290
- async function viewApiDocs() {
291
- try {
292
- const prompt = require('./prompt');
293
- const api = prompt.ccServiceApis;
294
- let result = `## ${api.name}\n\n${api.description}\n\n`;
295
-
296
- for (const [key, method] of Object.entries(api.apis)) {
297
- result += `### ${method.description}\n`;
298
- result += `**签名**: \`${method.signature}\`\n\n`;
299
- result += `**示例**:\n\`\`\`java\n${method.example}\n\`\`\`\n\n`;
300
- }
301
-
302
- return { content: [{ type: 'text', text: result }] };
303
- } catch (error) {
304
- return { content: [{ type: 'text', text: `✗ 获取 API 文档失败: ${error.message}` }] };
305
- }
306
- }
307
-
308
- /**
309
- * 查看常见问题 - 使用 faq、errorMessages
310
- */
311
- async function viewFAQ() {
312
- try {
313
- const prompt = require('./prompt');
314
- let result = `## 常见问题\n\n`;
315
-
316
- prompt.faq.forEach((item, index) => {
317
- result += `### ${index + 1}. ${item.question}\n`;
318
- result += `${item.answer}\n\n`;
319
- });
320
-
321
- result += `## 错误信息\n\n`;
322
- for (const [code, error] of Object.entries(prompt.errorMessages)) {
323
- result += `### ${code}\n`;
324
- result += `**错误**: ${error.message}\n`;
325
- result += `**解决方案**: ${error.solution}\n\n`;
326
- }
327
-
328
- return { content: [{ type: 'text', text: result }] };
329
- } catch (error) {
330
- return { content: [{ type: 'text', text: `✗ 获取常见问题失败: ${error.message}` }] };
331
- }
332
- }
333
-
334
- /**
335
- * 编辑类 - 提供编辑时需要的知识库和代码示例
336
- */
337
- async function editClass({ topic = 'ccservice' }) {
338
- try {
339
- const prompt = require('./prompt');
340
- const result = prompt.getEditGuide(topic);
341
- return { content: [{ type: 'text', text: result }] };
342
- } catch (error) {
343
- return { content: [{ type: 'text', text: `✗ 获取编辑指南失败: ${error.message}` }] };
344
- }
345
- }
346
-
347
- module.exports = {
348
- createClass,
349
- publishClass,
350
- pullClass,
351
- listClasses,
352
- getClassDetail,
353
- pullMultipleClasses,
354
- viewCreateGuide,
355
- viewApiDocs,
356
- viewFAQ,
357
- editClass
358
- };