@catchmexz/fedin-vibe-mcp-server 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/LICENSE +202 -0
  2. package/dist/common/errors.js +69 -0
  3. package/dist/common/modularTemplates.js +483 -0
  4. package/dist/common/pipelineTemplates.js +19 -0
  5. package/dist/common/types.js +42 -0
  6. package/dist/common/utils.js +347 -0
  7. package/dist/common/version.js +1 -0
  8. package/dist/index.js +217 -0
  9. package/dist/operations/appstack/appOrchestrations.js +235 -0
  10. package/dist/operations/appstack/appTags.js +147 -0
  11. package/dist/operations/appstack/appTemplates.js +67 -0
  12. package/dist/operations/appstack/applications.js +154 -0
  13. package/dist/operations/appstack/changeOrders.js +293 -0
  14. package/dist/operations/appstack/changeRequests.js +263 -0
  15. package/dist/operations/appstack/deploymentResources.js +265 -0
  16. package/dist/operations/appstack/globalVars.js +200 -0
  17. package/dist/operations/appstack/releaseWorkflows.js +178 -0
  18. package/dist/operations/appstack/variableGroups.js +216 -0
  19. package/dist/operations/codeup/branches.js +144 -0
  20. package/dist/operations/codeup/changeRequestComments.js +89 -0
  21. package/dist/operations/codeup/changeRequests.js +203 -0
  22. package/dist/operations/codeup/compare.js +26 -0
  23. package/dist/operations/codeup/files.js +483 -0
  24. package/dist/operations/codeup/repositories.js +83 -0
  25. package/dist/operations/codeup/types.js +372 -0
  26. package/dist/operations/flow/hostGroup.js +48 -0
  27. package/dist/operations/flow/pipeline.js +530 -0
  28. package/dist/operations/flow/pipelineJob.js +113 -0
  29. package/dist/operations/flow/serviceConnection.js +23 -0
  30. package/dist/operations/flow/types.js +377 -0
  31. package/dist/operations/git/git-repository.js +334 -0
  32. package/dist/operations/git/index.js +210 -0
  33. package/dist/operations/organization/members.js +94 -0
  34. package/dist/operations/organization/organization.js +73 -0
  35. package/dist/operations/organization/types.js +111 -0
  36. package/dist/operations/packages/artifacts.js +64 -0
  37. package/dist/operations/packages/repositories.js +35 -0
  38. package/dist/operations/packages/types.js +56 -0
  39. package/dist/operations/projex/project.js +206 -0
  40. package/dist/operations/projex/sprint.js +90 -0
  41. package/dist/operations/projex/types.js +390 -0
  42. package/dist/operations/projex/workitem.js +452 -0
  43. package/dist/tool-handlers/appstack-change-orders.js +55 -0
  44. package/dist/tool-handlers/appstack-change-requests.js +49 -0
  45. package/dist/tool-handlers/appstack-deployment-resources.js +43 -0
  46. package/dist/tool-handlers/appstack-global-vars.js +43 -0
  47. package/dist/tool-handlers/appstack-orchestrations.js +49 -0
  48. package/dist/tool-handlers/appstack-tags.js +43 -0
  49. package/dist/tool-handlers/appstack-templates.js +19 -0
  50. package/dist/tool-handlers/appstack-variable-groups.js +55 -0
  51. package/dist/tool-handlers/appstack.js +37 -0
  52. package/dist/tool-handlers/code-management.js +174 -0
  53. package/dist/tool-handlers/git/branch-operations.js +1 -0
  54. package/dist/tool-handlers/git/clone-repository.js +36 -0
  55. package/dist/tool-handlers/git/create-branch.js +26 -0
  56. package/dist/tool-handlers/git/get-repository-status.js +33 -0
  57. package/dist/tool-handlers/git/pull-repository.js +27 -0
  58. package/dist/tool-handlers/git/push-repository.js +37 -0
  59. package/dist/tool-handlers/git/switch-branch.js +25 -0
  60. package/dist/tool-handlers/index.js +43 -0
  61. package/dist/tool-handlers/organization.js +90 -0
  62. package/dist/tool-handlers/packages.js +32 -0
  63. package/dist/tool-handlers/pipeline.js +272 -0
  64. package/dist/tool-handlers/project-management.js +152 -0
  65. package/dist/tool-handlers/service-connections.js +16 -0
  66. package/dist/tool-registry/appstack-change-orders.js +40 -0
  67. package/dist/tool-registry/appstack-change-requests.js +35 -0
  68. package/dist/tool-registry/appstack-deployment-resources.js +30 -0
  69. package/dist/tool-registry/appstack-global-vars.js +30 -0
  70. package/dist/tool-registry/appstack-orchestrations.js +35 -0
  71. package/dist/tool-registry/appstack-tags.js +30 -0
  72. package/dist/tool-registry/appstack-templates.js +10 -0
  73. package/dist/tool-registry/appstack-variable-groups.js +40 -0
  74. package/dist/tool-registry/appstack.js +25 -0
  75. package/dist/tool-registry/code-management.js +89 -0
  76. package/dist/tool-registry/git-repository.js +41 -0
  77. package/dist/tool-registry/index.js +6 -0
  78. package/dist/tool-registry/organization.js +65 -0
  79. package/dist/tool-registry/packages.js +21 -0
  80. package/dist/tool-registry/pipeline.js +157 -0
  81. package/dist/tool-registry/project-management.js +108 -0
  82. package/dist/tool-registry/service-connections.js +10 -0
  83. package/package.json +39 -0
@@ -0,0 +1,265 @@
1
+ import { z } from 'zod';
2
+ import { yunxiaoRequest, buildUrl } from '../../common/utils.js';
3
+ // Define the referenced schemas based on their definitions in appstack.swagger.json
4
+ const DeployMachineLogSchema = z.object({
5
+ aliyunRegion: z.string().optional(),
6
+ deployBeginTime: z.number().optional(),
7
+ deployEndTime: z.number().optional(),
8
+ deployLog: z.string().optional(),
9
+ deployLogPath: z.string().optional(),
10
+ }).describe("主机部署日志");
11
+ const ResourceClaimSchema = z.object({
12
+ instanceName: z.string().describe("所引用的资源示例唯一名"),
13
+ itemSnList: z.array(z.string()).describe("资源子项序列号列表"),
14
+ refId: z.string().optional().describe("外部系统封装过的云资源唯一标识"),
15
+ refType: z.enum(["FLOW"]).optional().describe("外部系统封装过的云资源类型"),
16
+ sn: z.string().optional().describe("资源申请对象序列号"),
17
+ specMap: z.record(z.object({}).passthrough()).describe("资源申请详情数据"),
18
+ type: z.string().describe("资源子类型"),
19
+ }).describe("资源申请模型");
20
+ // Schema for the GetMachineDeployLog API
21
+ export const GetMachineDeployLogRequestSchema = z.object({
22
+ organizationId: z.string().describe("组织ID"),
23
+ tunnelId: z.number().describe("隧道ID"),
24
+ machineSn: z.string().describe("主机序列号"),
25
+ });
26
+ export const GetMachineDeployLogResponseSchema = z.object({
27
+ data: DeployMachineLogSchema.optional(),
28
+ errorAdvice: z.string().optional(),
29
+ errorCode: z.string().optional(),
30
+ errorMap: z.record(z.object({}).passthrough()).optional(),
31
+ errorMessage: z.string().optional(),
32
+ showType: z.number().optional(),
33
+ success: z.boolean().optional(),
34
+ traceId: z.string().optional(),
35
+ });
36
+ // Schema for the AddHostListToHostGroup API
37
+ export const AddHostListToHostGroupRequestSchema = z.object({
38
+ organizationId: z.string().describe("组织ID"),
39
+ instanceName: z.string().describe("主机集群名称(非主机集群显示名)"),
40
+ hostSns: z.array(z.string()).describe("ecs主机实例id列表(主机类型暂只支持ecs)"),
41
+ });
42
+ export const AddHostListToHostGroupResponseSchema = z.boolean().describe("是否成功");
43
+ // Schema for the AddHostListToDeployGroup API
44
+ export const AddHostListToDeployGroupRequestSchema = z.object({
45
+ organizationId: z.string().describe("组织ID"),
46
+ instanceName: z.string().describe("主机集群名称(非主机集群显示名)"),
47
+ groupName: z.string().describe("部署组名称(非部署组显示名)"),
48
+ hostSns: z.array(z.string()).describe("ecs主机实例id列表(主机类型暂只支持ecs)"),
49
+ });
50
+ export const AddHostListToDeployGroupResponseSchema = z.boolean().describe("是否成功");
51
+ // Schema for the DeleteHostListFromDeployGroup API
52
+ export const DeleteHostListFromDeployGroupRequestSchema = z.object({
53
+ organizationId: z.string().describe("组织ID"),
54
+ instanceName: z.string().describe("主机集群名称(非主机集群显示名)"),
55
+ groupName: z.string().describe("部署组名称(非部署组显示名)"),
56
+ hostSns: z.array(z.string()).describe("ecs主机实例id列表(主机类型暂只支持ecs)"),
57
+ });
58
+ export const DeleteHostListFromDeployGroupResponseSchema = z.boolean().describe("是否成功");
59
+ // Schema for the DeleteHostListFromHostGroup API
60
+ export const DeleteHostListFromHostGroupRequestSchema = z.object({
61
+ organizationId: z.string().describe("组织ID"),
62
+ instanceName: z.string().describe("主机集群名称(非主机集群显示名)"),
63
+ hostSns: z.array(z.string()).describe("ecs主机实例id列表(主机类型暂只支持ecs)"),
64
+ });
65
+ export const DeleteHostListFromHostGroupResponseSchema = z.boolean().describe("是否成功");
66
+ // Schema for the GetDeployGroup API
67
+ export const GetDeployGroupRequestSchema = z.object({
68
+ organizationId: z.string().describe("组织ID"),
69
+ poolName: z.string().describe("资源池名称"),
70
+ deployGroupName: z.string().describe("部署组名称"),
71
+ });
72
+ export const GetDeployGroupResponseSchema = z.object({
73
+ claimList: z.array(ResourceClaimSchema).optional().describe("部署组下辖的资源申请详情列表"),
74
+ creatorId: z.string().optional().describe("资源实例创建者 ID"),
75
+ description: z.string().optional().describe("部署组描述"),
76
+ displayName: z.string().optional().describe("部署组的展示名"),
77
+ name: z.string().optional().describe("部署组的唯一名,仅允许包含小写字母、中划线和数字,且开头、结尾均为小写字母或数字"),
78
+ poolName: z.string().optional().describe("隶属资源池的唯一名"),
79
+ });
80
+ // Schema for the ListResourceInstances API
81
+ export const ListResourceInstancesRequestSchema = z.object({
82
+ organizationId: z.string().describe("组织ID"),
83
+ poolName: z.string().describe("资源池名称"),
84
+ pagination: z.enum(["keyset"]).optional().describe("分页模式参数,目前只支持键集分页 keyset 模式"),
85
+ perPage: z.number().min(1).max(100).default(20).optional().describe("分页尺寸参数,决定一页最多返回多少对象"),
86
+ orderBy: z.enum(["id", "gmtCreate"]).optional().describe("分页排序属性,决定根据何种属性进行记录排序;推荐在实现严格遍历时,使用 id 属性"),
87
+ sort: z.enum(["asc", "desc"]).optional().describe("分页排序升降序,asc 为升序,desc 为降序;推荐在实现严格遍历时,使用升序"),
88
+ nextToken: z.string().optional().describe("键集分页 token,获取第一页数据时无需传入,否则需要传入前一页查询结果中的 nextToken 字段"),
89
+ page: z.number().default(1).optional().describe("页码分页时使用,用于获取下一页内容"),
90
+ });
91
+ export const ListResourceInstancesResponseSchema = z.object({
92
+ current: z.number().optional().describe("页码分页时存在该字段,表示当前页"),
93
+ data: z.array(z.object({
94
+ category: z.enum(["COMPUTE"]).optional().describe("资源类别(如计算、存储、网络等)"),
95
+ cloudMetadata: z.string().optional().describe("云产品元数据"),
96
+ cloudProvider: z.string().optional().describe("云产品提供方"),
97
+ contextMap: z.record(z.string()).optional().describe("资源详情数据"),
98
+ creatorId: z.string().optional().describe("资源实例创建者 ID"),
99
+ description: z.string().optional().describe("资源描述"),
100
+ displayName: z.string().optional().describe("资源展示名"),
101
+ gmtCreate: z.string().optional().describe("使用本地时区呈现的应用创建时间"),
102
+ name: z.string().optional().describe("资源实例的唯一名,仅允许包含小写字母、中划线和数字,且开头、结尾均为小写字母或数字"),
103
+ poolName: z.string().optional().describe("资源池唯一名"),
104
+ region: z.string().optional().describe("资源所处区域"),
105
+ resourceGroupId: z.string().optional().describe("云产品提供方所使用的资源唯一 ID"),
106
+ type: z.string().optional().describe("资源子类型"),
107
+ })).optional().describe("分页结果数据"),
108
+ nextToken: z.string().optional().describe("采用键值分页时存在该字段,用于传给分页接口,迭代获取下一页数据"),
109
+ pages: z.number().optional().describe("页码分页时存在该字段,表示总页数"),
110
+ perPage: z.number().optional().describe("页码分页时存在该字段,表示每页大小"),
111
+ total: z.number().optional().describe("页码分页时存在该字段,表示结果总数"),
112
+ });
113
+ // Schema for the GetResourceInstance API
114
+ export const GetResourceInstanceRequestSchema = z.object({
115
+ organizationId: z.string().describe("组织ID"),
116
+ poolName: z.string().describe("资源池名称"),
117
+ instanceName: z.string().describe("资源实例名称"),
118
+ });
119
+ export const GetResourceInstanceResponseSchema = z.object({
120
+ category: z.enum(["COMPUTE"]).optional().describe("资源类别(如计算、存储、网络等)"),
121
+ cloudMetadata: z.string().optional().describe("云产品元数据"),
122
+ cloudProvider: z.string().optional().describe("云产品提供方"),
123
+ contextMap: z.record(z.string()).optional().describe("资源详情数据"),
124
+ creatorId: z.string().optional().describe("资源实例创建者 ID"),
125
+ description: z.string().optional().describe("资源描述"),
126
+ displayName: z.string().optional().describe("资源展示名"),
127
+ gmtCreate: z.string().optional().describe("使用本地时区呈现的应用创建时间"),
128
+ name: z.string().optional().describe("资源实例的唯一名,仅允许包含小写字母、中划线和数字,且开头、结尾均为小写字母或数字"),
129
+ poolName: z.string().optional().describe("资源池唯一名"),
130
+ region: z.string().optional().describe("资源所处区域"),
131
+ resourceGroupId: z.string().optional().describe("云产品提供方所使用的资源唯一 ID"),
132
+ type: z.string().optional().describe("资源子类型"),
133
+ });
134
+ // Schema for the UpdateResourceInstance API
135
+ export const UpdateResourceInstanceRequestSchema = z.object({
136
+ organizationId: z.string().describe("组织ID"),
137
+ name: z.string().describe("资源实例的唯一名,仅允许包含小写字母、中划线和数字,且开头、结尾均为小写字母或数字"),
138
+ kubeconfig: z.string().describe("kubeconfig配置"),
139
+ });
140
+ export const UpdateResourceInstanceResponseSchema = z.object({
141
+ data: z.object({
142
+ instanceId: z.string().optional().describe("资源实例 ID"),
143
+ name: z.string().optional().describe("资源实例的唯一名,仅允许包含小写字母、中划线和数字,且开头、结尾均为小写字母或数字"),
144
+ displayName: z.string().optional().describe("资源展示名"),
145
+ poolName: z.string().optional().describe("资源池唯一名"),
146
+ category: z.enum(["COMPUTE"]).optional().describe("资源类别(如计算、存储、网络等)"),
147
+ type: z.string().optional().describe("资源子类型"),
148
+ cloudMetadata: z.string().optional().describe("云产品元数据"),
149
+ cloudProvider: z.string().optional().describe("云产品提供方"),
150
+ contextMap: z.record(z.string()).optional().describe("资源详情数据"),
151
+ description: z.string().optional().describe("资源描述"),
152
+ region: z.string().optional().describe("资源所处区域"),
153
+ resourceItemList: z.array(z.object({}).passthrough()).optional().describe("资源项列表"),
154
+ k8s: z.boolean().optional().describe("是否k8s"),
155
+ host: z.boolean().optional().describe(""),
156
+ }).optional().describe("资源实例"),
157
+ errorAdvice: z.string().optional(),
158
+ errorCode: z.string().optional(),
159
+ errorMap: z.record(z.object({}).passthrough()).optional(),
160
+ errorMessage: z.string().optional(),
161
+ showType: z.number().optional(),
162
+ success: z.boolean().optional(),
163
+ traceId: z.string().optional(),
164
+ });
165
+ /**
166
+ * Get machine deployment log
167
+ *
168
+ * @param params - The request parameters
169
+ * @returns The deployment log
170
+ */
171
+ export async function getMachineDeployLog(params) {
172
+ const { organizationId, tunnelId, machineSn } = params;
173
+ // Build query string properly
174
+ const query = {};
175
+ if (tunnelId)
176
+ query.tunnelId = tunnelId;
177
+ if (machineSn)
178
+ query.machineSn = machineSn;
179
+ try {
180
+ const url = buildUrl(`/oapi/v1/appstack/organizations/${organizationId}/host/deployLog`, query);
181
+ const response = await yunxiaoRequest(url, {
182
+ method: 'GET',
183
+ });
184
+ return GetMachineDeployLogResponseSchema.parse(response);
185
+ }
186
+ catch (error) {
187
+ throw error;
188
+ }
189
+ }
190
+ /**
191
+ * Add host list to host group
192
+ *
193
+ * @param params - The request parameters
194
+ * @returns Whether the operation was successful
195
+ */
196
+ export async function addHostListToHostGroup(params) {
197
+ const { organizationId, instanceName, ...body } = params;
198
+ try {
199
+ const response = await yunxiaoRequest(`/oapi/v1/appstack/organizations/${organizationId}/pools/instances/${instanceName}/addHostList`, {
200
+ method: 'PUT',
201
+ body: body,
202
+ });
203
+ return AddHostListToHostGroupResponseSchema.parse(response);
204
+ }
205
+ catch (error) {
206
+ throw error;
207
+ }
208
+ }
209
+ /**
210
+ * Add host list to deploy group
211
+ *
212
+ * @param params - The request parameters
213
+ * @returns Whether the operation was successful
214
+ */
215
+ export async function addHostListToDeployGroup(params) {
216
+ const { organizationId, instanceName, groupName, ...body } = params;
217
+ try {
218
+ const response = await yunxiaoRequest(`/oapi/v1/appstack/organizations/${organizationId}/pools/instances/${instanceName}/deployGroup/${groupName}/addHostList`, {
219
+ method: 'PUT',
220
+ body: body,
221
+ });
222
+ return AddHostListToDeployGroupResponseSchema.parse(response);
223
+ }
224
+ catch (error) {
225
+ throw error;
226
+ }
227
+ }
228
+ /**
229
+ * Delete host list from deploy group
230
+ *
231
+ * @param params - The request parameters
232
+ * @returns Whether the operation was successful
233
+ */
234
+ export async function deleteHostListFromDeployGroup(params) {
235
+ const { organizationId, instanceName, groupName, ...body } = params;
236
+ try {
237
+ const response = await yunxiaoRequest(`/oapi/v1/appstack/organizations/${organizationId}/pools/instances/${instanceName}/deployGroup/${groupName}/removeHostList`, {
238
+ method: 'PUT',
239
+ body: body,
240
+ });
241
+ return DeleteHostListFromDeployGroupResponseSchema.parse(response);
242
+ }
243
+ catch (error) {
244
+ throw error;
245
+ }
246
+ }
247
+ /**
248
+ * Delete host list from host group
249
+ *
250
+ * @param params - The request parameters
251
+ * @returns Whether the operation was successful
252
+ */
253
+ export async function deleteHostListFromHostGroup(params) {
254
+ const { organizationId, instanceName, ...body } = params;
255
+ try {
256
+ const response = await yunxiaoRequest(`/oapi/v1/appstack/organizations/${organizationId}/pools/instances/${instanceName}/removeHostList`, {
257
+ method: 'PUT',
258
+ body: body,
259
+ });
260
+ return DeleteHostListFromHostGroupResponseSchema.parse(response);
261
+ }
262
+ catch (error) {
263
+ throw error;
264
+ }
265
+ }
@@ -0,0 +1,200 @@
1
+ import { z } from 'zod';
2
+ import { yunxiaoRequest, buildUrl } from '../../common/utils.js';
3
+ // Define the referenced schemas based on their usage
4
+ const VariableSchema = z.object({
5
+ key: z.string().optional().describe("变量键"),
6
+ value: z.string().optional().describe("变量值"),
7
+ description: z.string().optional().describe("变量描述"),
8
+ }).describe("变量");
9
+ const RevisionSchema = z.object({
10
+ author: z.string().optional().describe("提交人"),
11
+ commitTime: z.number().optional().describe("提交时间"),
12
+ message: z.string().optional().describe("版本提交信息"),
13
+ refs: z.array(z.string()).optional().describe("关联信息"),
14
+ sha: z.string().optional().describe("版本sha值"),
15
+ }).describe("版本信息");
16
+ const GlobalVarVOSchema = z.object({
17
+ name: z.string().optional().describe("全局变量组名称"),
18
+ displayName: z.string().optional().describe("全局变量组显示名称"),
19
+ creator: z.string().optional().describe("全局变量组创建者"),
20
+ gmtCreate: z.string().optional().describe("全局变量组创建时间"),
21
+ gmtModified: z.string().optional().describe("全局变量组修改时间"),
22
+ modifier: z.string().optional().describe("全局变量组修改者"),
23
+ }).describe("全局变量组VO");
24
+ // Schema for the CreateGlobalVar API
25
+ export const CreateGlobalVarRequestSchema = z.object({
26
+ organizationId: z.string().describe("组织ID"),
27
+ displayName: z.string().describe("全局变量组显示名称"),
28
+ name: z.string().describe("全局变量组名称"),
29
+ content: z.array(VariableSchema).optional().describe("变量列表"),
30
+ message: z.string().optional().describe("全局变量组信息"),
31
+ ownerId: z.string().optional().describe("全局变量组拥有者"),
32
+ });
33
+ export const CreateGlobalVarResponseSchema = z.object({
34
+ content: z.array(VariableSchema).optional().describe("全局变量组变量列表"),
35
+ creator: z.string().optional().describe("全局变量组创建者"),
36
+ displayName: z.string().optional().describe("全局变量组显示名称"),
37
+ gmtCreate: z.string().optional().describe("全局变量组创建时间"),
38
+ gmtModified: z.string().optional().describe("全局变量组修改时间"),
39
+ modifier: z.string().optional().describe("全局变量组修改者"),
40
+ name: z.string().optional().describe("全局变量组名称"),
41
+ revision: RevisionSchema.optional().describe("版本信息"),
42
+ });
43
+ // Schema for the DeleteGlobalVar API
44
+ export const DeleteGlobalVarRequestSchema = z.object({
45
+ organizationId: z.string().describe("组织ID"),
46
+ name: z.string().describe("全局变量组名称"),
47
+ });
48
+ export const DeleteGlobalVarResponseSchema = z.boolean().describe("调用是否成功");
49
+ // Schema for the GetGlobalVar API
50
+ export const GetGlobalVarRequestSchema = z.object({
51
+ organizationId: z.string().describe("组织ID"),
52
+ name: z.string().describe("全局变量组名称"),
53
+ revisionSha: z.string().optional().describe("全局变量组版本"),
54
+ });
55
+ export const GetGlobalVarResponseSchema = z.object({
56
+ content: z.array(VariableSchema).optional().describe("全局变量组变量列表"),
57
+ creator: z.string().optional().describe("全局变量组创建者"),
58
+ displayName: z.string().optional().describe("全局变量组显示名称"),
59
+ gmtCreate: z.string().optional().describe("全局变量组创建时间"),
60
+ gmtModified: z.string().optional().describe("全局变量组修改时间"),
61
+ modifier: z.string().optional().describe("全局变量组修改者"),
62
+ name: z.string().optional().describe("全局变量组名称"),
63
+ revision: RevisionSchema.optional().describe("版本信息"),
64
+ });
65
+ // Schema for the UpdateGlobalVar API
66
+ export const UpdateGlobalVarRequestSchema = z.object({
67
+ organizationId: z.string().describe("组织ID"),
68
+ name: z.string().describe("全局变量组名称"),
69
+ content: z.array(VariableSchema).describe("变量列表"),
70
+ fromRevisionSha: z.string().describe("更新源版本信息"),
71
+ message: z.string().optional().describe("全局变量组信息"),
72
+ });
73
+ export const UpdateGlobalVarResponseSchema = z.object({
74
+ content: z.array(VariableSchema).optional().describe("全局变量组变量列表"),
75
+ creator: z.string().optional().describe("全局变量组创建者"),
76
+ displayName: z.string().optional().describe("全局变量组显示名称"),
77
+ gmtCreate: z.string().optional().describe("全局变量组创建时间"),
78
+ gmtModified: z.string().optional().describe("全局变量组修改时间"),
79
+ modifier: z.string().optional().describe("全局变量组修改者"),
80
+ name: z.string().optional().describe("全局变量组名称"),
81
+ revision: RevisionSchema.optional().describe("版本信息"),
82
+ });
83
+ // Schema for the ListGlobalVars API
84
+ export const ListGlobalVarsRequestSchema = z.object({
85
+ organizationId: z.string().describe("组织ID"),
86
+ current: z.number().describe("当前页码"),
87
+ pageSize: z.number().describe("每页大小"),
88
+ search: z.string().optional().describe("查询关键字"),
89
+ });
90
+ export const ListGlobalVarsResponseSchema = z.object({
91
+ current: z.number().describe("当前页数"),
92
+ pageSize: z.number().describe("每页大小"),
93
+ pages: z.number().describe("总页数"),
94
+ records: z.array(GlobalVarVOSchema).describe("数据列表"),
95
+ total: z.number().describe("总数"),
96
+ });
97
+ /**
98
+ * Create a global variable group
99
+ *
100
+ * @param params - The request parameters
101
+ * @returns The created global variable group
102
+ */
103
+ export async function createGlobalVar(params) {
104
+ const { organizationId, ...body } = params;
105
+ try {
106
+ const response = await yunxiaoRequest(`/oapi/v1/appstack/organizations/${organizationId}/globalVars`, {
107
+ method: 'POST',
108
+ body: body,
109
+ });
110
+ return CreateGlobalVarResponseSchema.parse(response);
111
+ }
112
+ catch (error) {
113
+ throw error;
114
+ }
115
+ }
116
+ /**
117
+ * Delete a global variable group
118
+ *
119
+ * @param params - The request parameters
120
+ * @returns Whether the deletion was successful
121
+ */
122
+ export async function deleteGlobalVar(params) {
123
+ const { organizationId, name } = params;
124
+ try {
125
+ const response = await yunxiaoRequest(`/oapi/v1/appstack/organizations/${organizationId}/globalVars/${name}`, {
126
+ method: 'DELETE',
127
+ });
128
+ return DeleteGlobalVarResponseSchema.parse(response);
129
+ }
130
+ catch (error) {
131
+ throw error;
132
+ }
133
+ }
134
+ /**
135
+ * Get a global variable group
136
+ *
137
+ * @param params - The request parameters
138
+ * @returns The global variable group
139
+ */
140
+ export async function getGlobalVar(params) {
141
+ const { organizationId, name, revisionSha } = params;
142
+ // Build query string properly
143
+ const query = {};
144
+ if (revisionSha)
145
+ query.revisionSha = revisionSha;
146
+ try {
147
+ const url = buildUrl(`/oapi/v1/appstack/organizations/${organizationId}/globalVars/${name}`, query);
148
+ const response = await yunxiaoRequest(url, {
149
+ method: 'GET',
150
+ });
151
+ return GetGlobalVarResponseSchema.parse(response);
152
+ }
153
+ catch (error) {
154
+ throw error;
155
+ }
156
+ }
157
+ /**
158
+ * Update a global variable group
159
+ *
160
+ * @param params - The request parameters
161
+ * @returns The updated global variable group
162
+ */
163
+ export async function updateGlobalVar(params) {
164
+ const { organizationId, name, ...body } = params;
165
+ try {
166
+ const response = await yunxiaoRequest(`/oapi/v1/appstack/organizations/${organizationId}/globalVars/${name}`, {
167
+ method: 'PUT',
168
+ body: body,
169
+ });
170
+ return UpdateGlobalVarResponseSchema.parse(response);
171
+ }
172
+ catch (error) {
173
+ throw error;
174
+ }
175
+ }
176
+ /**
177
+ * List global variable groups
178
+ *
179
+ * @param params - The request parameters
180
+ * @returns The list of global variable groups
181
+ */
182
+ export async function listGlobalVars(params) {
183
+ const { organizationId, current, pageSize, search } = params;
184
+ // Build query string properly
185
+ const query = {
186
+ current: current,
187
+ pageSize: pageSize
188
+ };
189
+ try {
190
+ const url = buildUrl(`/oapi/v1/appstack/organizations/${organizationId}/globalVars:search`, query);
191
+ const response = await yunxiaoRequest(url, {
192
+ method: 'POST',
193
+ body: { search },
194
+ });
195
+ return ListGlobalVarsResponseSchema.parse(response);
196
+ }
197
+ catch (error) {
198
+ throw error;
199
+ }
200
+ }
@@ -0,0 +1,178 @@
1
+ import { z } from 'zod';
2
+ import { yunxiaoRequest } from '../../common/utils.js';
3
+ // Schema for Label
4
+ export const LabelSchema = z.object({
5
+ // Based on the reference in the swagger, we'll define a basic structure
6
+ // You may need to update this with the actual fields from Label
7
+ key: z.string().optional().describe("标签键"),
8
+ value: z.string().optional().describe("标签值"),
9
+ });
10
+ // Schema for VariableGroup
11
+ export const VariableGroupSchema = z.object({
12
+ // Based on the reference in the swagger, we'll define a basic structure
13
+ // You may need to update this with the actual fields from VariableGroup
14
+ name: z.string().optional().describe("变量组名称"),
15
+ variables: z.record(z.string()).optional().describe("变量映射"),
16
+ });
17
+ // Schema for FlowV1Pipeline
18
+ export const FlowV1PipelineSchema = z.object({
19
+ // Based on the reference in the swagger, we'll define a basic structure
20
+ // You may need to update this with the actual fields from FlowV1Pipeline
21
+ id: z.number().optional().describe("流水线ID"),
22
+ name: z.string().optional().describe("流水线名称"),
23
+ });
24
+ // Schema for FlowV2Pipeline
25
+ export const FlowV2PipelineSchema = z.object({
26
+ // Based on the reference in the swagger, we'll define a basic structure
27
+ // You may need to update this with the actual fields from FlowV2Pipeline
28
+ id: z.number().optional().describe("流水线ID"),
29
+ name: z.string().optional().describe("流水线名称"),
30
+ });
31
+ // Schema for ReleaseStage
32
+ export const ReleaseStageSchema = z.object({
33
+ appName: z.string().optional().describe("应用名"),
34
+ labels: z.array(LabelSchema).describe("标签列表"),
35
+ name: z.string().optional().describe("名称"),
36
+ order: z.string().optional().describe("阶段顺序"),
37
+ pipeline: z.union([FlowV1PipelineSchema, FlowV2PipelineSchema]).optional(),
38
+ releaseWorkflowSn: z.string().optional().describe("所属的流程sn"),
39
+ sn: z.string().optional().describe("唯一序列号"),
40
+ variableGroups: z.array(VariableGroupSchema).describe("变量组列表"),
41
+ });
42
+ // Schema for ReleaseWorkflow
43
+ export const ReleaseWorkflowSchema = z.object({
44
+ appName: z.string().optional().describe("应用名"),
45
+ name: z.string().optional().describe("名称"),
46
+ note: z.string().optional().describe("公告"),
47
+ order: z.string().optional().describe("排序"),
48
+ releaseStages: z.array(ReleaseStageSchema).describe("研发阶段列表"),
49
+ sn: z.string().optional().describe("唯一标识sn"),
50
+ type: z.enum(["CR", "APP_RELEASE"]).optional().describe("研发流程类型"),
51
+ });
52
+ // Schema for ListSystemAllReleaseWorkflows API
53
+ export const ListSystemAllReleaseWorkflowsRequestSchema = z.object({
54
+ organizationId: z.string().describe("组织ID"),
55
+ systemName: z.string().describe("系统名"),
56
+ });
57
+ export const ListSystemAllReleaseWorkflowsResponseSchema = z.array(ReleaseWorkflowSchema);
58
+ // Schema for CreateSystemReleaseWorkflows API
59
+ export const CreateReleaseWorkflowRequestSchema = z.object({
60
+ name: z.string(),
61
+ note: z.string().optional(),
62
+ templateSn: z.string().optional(),
63
+ });
64
+ export const CreateSystemReleaseWorkflowsRequestSchema = z.object({
65
+ organizationId: z.string().describe("组织ID"),
66
+ systemName: z.string().describe("系统名"),
67
+ workflow: CreateReleaseWorkflowRequestSchema,
68
+ });
69
+ export const CreateSystemReleaseWorkflowsResponseSchema = ReleaseWorkflowSchema;
70
+ // Schema for UpdateSystemReleaseStage API
71
+ export const UpdateReleaseStageRequestSchema = z.object({
72
+ commitMessage: z.string().optional().describe("版本commit信息"),
73
+ labelList: z.array(LabelSchema).describe("标签列表"),
74
+ name: z.string().optional().describe("名称"),
75
+ order: z.string().optional().describe("排序"),
76
+ variableGroups: z.array(VariableGroupSchema).describe("变量组列表"),
77
+ });
78
+ export const UpdateSystemReleaseStageRequestSchema = z.object({
79
+ organizationId: z.string().describe("组织ID"),
80
+ systemName: z.string().describe("系统名"),
81
+ releaseWorkflowSn: z.string().describe("发布流程SN"),
82
+ releaseStageSn: z.string().describe("发布阶段SN"),
83
+ stage: UpdateReleaseStageRequestSchema,
84
+ });
85
+ export const UpdateSystemReleaseStageResponseSchema = ReleaseStageSchema;
86
+ // Schema for ExecuteReleaseStage API
87
+ export const ExecuteReleaseStagePipelineNgRequestSchema = z.object({
88
+ appReleaseSn: z.string().optional().describe("发布sn"),
89
+ params: z.record(z.any()).optional().describe("运行流水线参数"),
90
+ });
91
+ export const ExecuteReleaseStageRequestSchema = z.object({
92
+ organizationId: z.string().describe("组织ID"),
93
+ systemName: z.string().describe("系统名"),
94
+ releaseWorkflowSn: z.string().describe("发布流程SN"),
95
+ releaseStageSn: z.string().describe("发布阶段SN"),
96
+ execution: ExecuteReleaseStagePipelineNgRequestSchema,
97
+ });
98
+ export const ExecutePipelineResultSchema = z.object({
99
+ object: z.number().describe("流水线对象"),
100
+ pipelineId: z.number().describe("流水线ID"),
101
+ pipelineRunId: z.number().describe("流水线运行ID"),
102
+ });
103
+ export const ExecuteReleaseStageResponseSchema = ExecutePipelineResultSchema;
104
+ /**
105
+ * List all release workflows for a system
106
+ *
107
+ * @param params - The request parameters
108
+ * @returns The list of release workflows
109
+ */
110
+ export async function listSystemAllReleaseWorkflows(params) {
111
+ const { organizationId, systemName } = params;
112
+ try {
113
+ const response = await yunxiaoRequest(`/oapi/v1/appstack/organizations/${organizationId}/systems/${systemName}/releaseWorkflows`, {
114
+ method: 'GET',
115
+ });
116
+ return ListSystemAllReleaseWorkflowsResponseSchema.parse(response);
117
+ }
118
+ catch (error) {
119
+ throw error;
120
+ }
121
+ }
122
+ /**
123
+ * Create a release workflow for a system
124
+ *
125
+ * @param params - The request parameters
126
+ * @returns The created release workflow
127
+ */
128
+ export async function createSystemReleaseWorkflows(params) {
129
+ const { organizationId, systemName, workflow } = params;
130
+ try {
131
+ const response = await yunxiaoRequest(`/oapi/v1/appstack/organizations/${organizationId}/systems/${systemName}/releaseWorkflows`, {
132
+ method: 'POST',
133
+ body: workflow,
134
+ });
135
+ return CreateSystemReleaseWorkflowsResponseSchema.parse(response);
136
+ }
137
+ catch (error) {
138
+ throw error;
139
+ }
140
+ }
141
+ /**
142
+ * Update a release stage
143
+ *
144
+ * @param params - The request parameters
145
+ * @returns The updated release stage
146
+ */
147
+ export async function updateSystemReleaseStage(params) {
148
+ const { organizationId, systemName, releaseWorkflowSn, releaseStageSn, stage } = params;
149
+ try {
150
+ const response = await yunxiaoRequest(`/oapi/v1/appstack/organizations/${organizationId}/systems/${systemName}/releaseWorkflows/${releaseWorkflowSn}/releaseStages/${releaseStageSn}`, {
151
+ method: 'PUT',
152
+ body: stage,
153
+ });
154
+ return UpdateSystemReleaseStageResponseSchema.parse(response);
155
+ }
156
+ catch (error) {
157
+ throw error;
158
+ }
159
+ }
160
+ /**
161
+ * Execute a release stage
162
+ *
163
+ * @param params - The request parameters
164
+ * @returns The execution result
165
+ */
166
+ export async function executeReleaseStage(params) {
167
+ const { organizationId, systemName, releaseWorkflowSn, releaseStageSn, execution } = params;
168
+ try {
169
+ const response = await yunxiaoRequest(`/oapi/v1/appstack/organizations/${organizationId}/systems/${systemName}/releaseWorkflows/${releaseWorkflowSn}/releaseStages/${releaseStageSn}:execute`, {
170
+ method: 'POST',
171
+ body: execution,
172
+ });
173
+ return ExecuteReleaseStageResponseSchema.parse(response);
174
+ }
175
+ catch (error) {
176
+ throw error;
177
+ }
178
+ }