devops-mcp-server-extension 1.0.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 (102) hide show
  1. package/LICENSE +218 -0
  2. package/README.md +527 -0
  3. package/README.zh-cn.md +503 -0
  4. package/dist/common/errors.js +77 -0
  5. package/dist/common/modularTemplates.js +483 -0
  6. package/dist/common/pipelineTemplates.js +19 -0
  7. package/dist/common/toolsetManager.js +123 -0
  8. package/dist/common/toolsets.js +23 -0
  9. package/dist/common/types.js +60 -0
  10. package/dist/common/utils.js +381 -0
  11. package/dist/common/version.js +1 -0
  12. package/dist/index.js +225 -0
  13. package/dist/operations/appstack/appOrchestrations.js +260 -0
  14. package/dist/operations/appstack/appTags.js +168 -0
  15. package/dist/operations/appstack/appTemplates.js +72 -0
  16. package/dist/operations/appstack/applications.js +171 -0
  17. package/dist/operations/appstack/changeOrders.js +320 -0
  18. package/dist/operations/appstack/changeRequests.js +288 -0
  19. package/dist/operations/appstack/deploymentResources.js +286 -0
  20. package/dist/operations/appstack/globalVars.js +221 -0
  21. package/dist/operations/appstack/releaseWorkflows.js +695 -0
  22. package/dist/operations/appstack/variableGroups.js +245 -0
  23. package/dist/operations/codeup/branches.js +157 -0
  24. package/dist/operations/codeup/changeRequestComments.js +140 -0
  25. package/dist/operations/codeup/changeRequests.js +230 -0
  26. package/dist/operations/codeup/commits.js +121 -0
  27. package/dist/operations/codeup/compare.js +30 -0
  28. package/dist/operations/codeup/files.js +249 -0
  29. package/dist/operations/codeup/repositories.js +71 -0
  30. package/dist/operations/codeup/types.js +414 -0
  31. package/dist/operations/flow/hostGroup.js +52 -0
  32. package/dist/operations/flow/pipeline.js +609 -0
  33. package/dist/operations/flow/pipelineJob.js +126 -0
  34. package/dist/operations/flow/resourceMember.js +137 -0
  35. package/dist/operations/flow/serviceConnection.js +27 -0
  36. package/dist/operations/flow/tag.js +191 -0
  37. package/dist/operations/flow/types.js +523 -0
  38. package/dist/operations/flow/vmDeployOrder.js +171 -0
  39. package/dist/operations/organization/members.js +106 -0
  40. package/dist/operations/organization/organization.js +110 -0
  41. package/dist/operations/organization/types.js +111 -0
  42. package/dist/operations/packages/artifacts.js +71 -0
  43. package/dist/operations/packages/repositories.js +39 -0
  44. package/dist/operations/packages/types.js +56 -0
  45. package/dist/operations/projex/effort.js +122 -0
  46. package/dist/operations/projex/project.js +243 -0
  47. package/dist/operations/projex/sprint.js +103 -0
  48. package/dist/operations/projex/types.js +618 -0
  49. package/dist/operations/projex/workitem.js +826 -0
  50. package/dist/operations/testhub/testcases.js +240 -0
  51. package/dist/operations/testhub/testplans.js +128 -0
  52. package/dist/tool-handlers/appstack-app-release-workflows.js +103 -0
  53. package/dist/tool-handlers/appstack-change-orders.js +55 -0
  54. package/dist/tool-handlers/appstack-change-requests.js +49 -0
  55. package/dist/tool-handlers/appstack-deployment-resources.js +31 -0
  56. package/dist/tool-handlers/appstack-global-vars.js +37 -0
  57. package/dist/tool-handlers/appstack-orchestrations.js +49 -0
  58. package/dist/tool-handlers/appstack-release-workflows.js +37 -0
  59. package/dist/tool-handlers/appstack-tags.js +37 -0
  60. package/dist/tool-handlers/appstack-templates.js +19 -0
  61. package/dist/tool-handlers/appstack-variable-groups.js +55 -0
  62. package/dist/tool-handlers/appstack.js +37 -0
  63. package/dist/tool-handlers/base.js +25 -0
  64. package/dist/tool-handlers/code-management.js +150 -0
  65. package/dist/tool-handlers/commit.js +31 -0
  66. package/dist/tool-handlers/effort.js +103 -0
  67. package/dist/tool-handlers/index.js +119 -0
  68. package/dist/tool-handlers/organization.js +72 -0
  69. package/dist/tool-handlers/packages.js +32 -0
  70. package/dist/tool-handlers/pipeline.js +289 -0
  71. package/dist/tool-handlers/project-management.js +201 -0
  72. package/dist/tool-handlers/resourceMember.js +43 -0
  73. package/dist/tool-handlers/service-connections.js +16 -0
  74. package/dist/tool-handlers/tag.js +64 -0
  75. package/dist/tool-handlers/test-management.js +74 -0
  76. package/dist/tool-handlers/vmDeployOrder.js +50 -0
  77. package/dist/tool-registry/appstack-app-release-workflows.js +80 -0
  78. package/dist/tool-registry/appstack-change-orders.js +40 -0
  79. package/dist/tool-registry/appstack-change-requests.js +35 -0
  80. package/dist/tool-registry/appstack-deployment-resources.js +20 -0
  81. package/dist/tool-registry/appstack-global-vars.js +25 -0
  82. package/dist/tool-registry/appstack-orchestrations.js +35 -0
  83. package/dist/tool-registry/appstack-release-workflows.js +25 -0
  84. package/dist/tool-registry/appstack-tags.js +25 -0
  85. package/dist/tool-registry/appstack-templates.js +10 -0
  86. package/dist/tool-registry/appstack-variable-groups.js +40 -0
  87. package/dist/tool-registry/appstack.js +25 -0
  88. package/dist/tool-registry/base.js +19 -0
  89. package/dist/tool-registry/code-management.js +109 -0
  90. package/dist/tool-registry/commit.js +20 -0
  91. package/dist/tool-registry/effort.js +39 -0
  92. package/dist/tool-registry/index.js +7 -0
  93. package/dist/tool-registry/organization.js +65 -0
  94. package/dist/tool-registry/packages.js +21 -0
  95. package/dist/tool-registry/pipeline.js +190 -0
  96. package/dist/tool-registry/project-management.js +143 -0
  97. package/dist/tool-registry/resourceMember.js +29 -0
  98. package/dist/tool-registry/service-connections.js +10 -0
  99. package/dist/tool-registry/tag.js +44 -0
  100. package/dist/tool-registry/test-management.js +59 -0
  101. package/dist/tool-registry/vmDeployOrder.js +34 -0
  102. package/package.json +52 -0
@@ -0,0 +1,523 @@
1
+ import { z } from "zod";
2
+ // Flow Pipeline related schemas
3
+ export const PipelineConfigSourceSchema = z.object({
4
+ data: z.object({
5
+ branch: z.string().nullable().optional().describe("Default branch"),
6
+ cloneDepth: z.number().int().nullable().optional().describe("Clone depth"),
7
+ credentialId: z.number().int().nullable().optional().describe("Credential ID"),
8
+ credentialLabel: z.string().nullable().optional().describe("Credential label"),
9
+ credentialType: z.string().nullable().optional().describe("Credential type"),
10
+ events: z.array(z.string()).nullable().optional().describe("Trigger events"),
11
+ isBranchMode: z.boolean().nullable().optional().describe("Whether branch mode is enabled"),
12
+ isCloneDepth: z.boolean().nullable().optional().describe("Whether clone depth is enabled"),
13
+ isSubmodule: z.boolean().nullable().optional().describe("Whether submodule is enabled"),
14
+ isTrigger: z.boolean().nullable().optional().describe("Whether commit trigger is enabled"),
15
+ label: z.string().nullable().optional().describe("Display name"),
16
+ namespace: z.string().nullable().optional().describe("Namespace"),
17
+ repo: z.string().nullable().optional().describe("Repository URL"),
18
+ serviceConnectionId: z.number().int().nullable().optional().describe("Service connection ID"),
19
+ triggerFilter: z.string().nullable().optional().describe("Trigger filter condition"),
20
+ webhook: z.string().nullable().optional().describe("Webhook URL"),
21
+ }),
22
+ sign: z.string().nullable().optional().describe("Code source identifier"),
23
+ type: z.string().nullable().optional().describe("Code source type"),
24
+ });
25
+ export const PipelineTagSchema = z.object({
26
+ id: z.number().int().nullable().optional().describe("Tag ID"),
27
+ name: z.string().nullable().optional().describe("Tag name"),
28
+ });
29
+ export const PipelineConfigSchema = z.object({
30
+ flow: z.string().nullable().optional().describe("Flow configuration"),
31
+ settings: z.string().nullable().optional().describe("Pipeline settings"),
32
+ sources: z.array(PipelineConfigSourceSchema).nullable().optional().describe("Code source configurations"),
33
+ });
34
+ // Flow Pipeline detail schema
35
+ export const PipelineDetailSchema = z.object({
36
+ createTime: z.number().int().nullable().optional().describe("Creation time in milliseconds"),
37
+ creatorAccountId: z.string().nullable().optional().describe("Creator account ID"),
38
+ envId: z.number().int().nullable().optional().describe("Environment ID: 0-Daily 1-Pre-release 2-Production"),
39
+ envName: z.string().nullable().optional().describe("Environment name"),
40
+ groupId: z.number().int().nullable().optional().describe("Pipeline group ID"),
41
+ modifierAccountId: z.string().nullable().optional().describe("Last modifier account ID"),
42
+ name: z.string().nullable().optional().describe("Pipeline name"),
43
+ pipelineConfig: PipelineConfigSchema.nullable().optional().describe("Pipeline configuration"),
44
+ tagList: z.array(PipelineTagSchema).nullable().optional().describe("Tag list"),
45
+ updateTime: z.number().int().nullable().optional().describe("Update time"),
46
+ });
47
+ // Flow Get pipeline schema
48
+ export const GetPipelineSchema = z.object({
49
+ organizationId: z.string().describe("Organization ID, can be found in the basic information page of the organization admin console"),
50
+ pipelineId: z.string().describe("Pipeline ID"),
51
+ });
52
+ // Flow Create pipeline schema
53
+ export const CreatePipelineSchema = z.object({
54
+ organizationId: z.string().describe("Organization ID, can be found in the basic information page of the organization admin console"),
55
+ name: z.string().max(60).describe("Pipeline name, maximum 60 characters"),
56
+ content: z.string().describe("Pipeline YAML description, refer to YAML pipeline documentation for writing. This should be a complete YAML configuration including sources, stages, jobs, and steps."),
57
+ });
58
+ // Flow Create pipeline with structured options schema
59
+ export const CreatePipelineWithStructuredOptionsSchema = z.object({
60
+ organizationId: z.string().describe("Organization ID, can be found in the basic information page of the organization admin console"),
61
+ name: z.string().max(60).describe("Pipeline name (required). LLM should generate a meaningful name based on user's request"),
62
+ // 技术栈参数(必需,由大模型从IDE上下文和用户描述中提取)
63
+ buildLanguage: z.enum(['java', 'nodejs', 'python', 'go', 'dotnet']).describe("Programming language (REQUIRED). LLM should detect from project files: pom.xml→java, package.json→nodejs, requirements.txt→python, go.mod→go, *.csproj→dotnet"),
64
+ buildTool: z.enum(['maven', 'gradle', 'npm', 'yarn', 'pip', 'go', 'dotnet']).describe("Build tool (REQUIRED). LLM should infer from buildLanguage and project files: java+pom.xml→maven, java+build.gradle→gradle, nodejs+package-lock.json→npm, nodejs+yarn.lock→yarn, python→pip, go→go, dotnet→dotnet"),
65
+ deployTarget: z.enum(['vm', 'k8s', 'none']).optional().describe("Deployment target from user description. vm: Virtual Machine/Host deployment, k8s: Kubernetes deployment, none: Build only without deployment. Default: none"),
66
+ // 代码源相关参数(由大模型从IDE上下文中获取)
67
+ repoUrl: z.string().optional().describe("Repository URL (LLM should get from 'git config --get remote.origin.url')"),
68
+ branch: z.string().optional().describe("Git branch (LLM should get from 'git branch --show-current')"),
69
+ serviceName: z.string().optional().describe("Service name (LLM can derive from repository name or project directory name)"),
70
+ serviceConnectionId: z.string().optional().describe("Service connection UUID for repository access"),
71
+ // 版本相关参数(大模型应该从项目文件中提取)
72
+ jdkVersion: z.string().optional().describe("JDK version for Java projects (LLM should read from pom.xml or gradle.properties). Options: 1.6, 1.7, 1.8, 11, 17, 21. Default: 1.8"),
73
+ mavenVersion: z.string().optional().describe("Maven version for Java projects. Options: 3.6.1, 3.6.3, 3.8.4, 3.9.3. Default: 3.6.3"),
74
+ nodeVersion: z.string().optional().describe("Node.js version for Node projects (LLM should read from package.json engines.node or .nvmrc). Options: 16.8, 18.12, 20. Default: 18.12"),
75
+ pythonVersion: z.string().optional().describe("Python version for Python projects (LLM should read from .python-version or pyproject.toml). Options: 3.9, 3.12. Default: 3.12"),
76
+ goVersion: z.string().optional().describe("Go version for Go projects (LLM should read from go.mod). Options: 1.19.x, 1.20.x, 1.21.x. Default: 1.21.x"),
77
+ kubectlVersion: z.string().optional().describe("Kubectl version for Kubernetes apply. Options: 1.25.16, 1.26.12, 1.27.9. Default: 1.27.9"),
78
+ // 构建配置
79
+ buildCommand: z.string().optional().describe("Custom build command to override default"),
80
+ testCommand: z.string().optional().describe("Custom test command to override default"),
81
+ // 构建物上传相关参数
82
+ uploadType: z.enum(['flowPublic', 'packages']).optional().describe("Artifact upload type. flowPublic: Yunxiao public storage space, packages: Organization private generic package repository. Default: packages"),
83
+ artifactName: z.string().optional().describe("Custom artifact name. Default: 'Artifacts_${PIPELINE_ID}'"),
84
+ artifactVersion: z.string().optional().describe("Artifact version number, required when uploadType is packages. Default: '1.0'"),
85
+ packagesServiceConnection: z.string().optional().describe("Packages service connection UUID, required when uploadType is packages"),
86
+ packagesRepoId: z.string().optional().describe("Packages generic repository ID, required when uploadType is packages. Default: 'flow_generic_repo'"),
87
+ includePathInArtifact: z.boolean().optional().describe("Whether to include full path in artifact. Default: false"),
88
+ // VM部署相关参数(当deployTarget为'vm'时)
89
+ machineGroupId: z.string().optional().describe("Machine group UUID for VM deployment (required when deployTarget=vm)"),
90
+ executeUser: z.string().optional().describe("User for executing deployment scripts (root, admin). Default: root"),
91
+ artifactDownloadPath: z.string().optional().describe("Path to download artifacts on target machine for VM deployment. Default: /home/admin/app/package.tgz"),
92
+ deployCommand: z.string().optional().describe("Custom deploy command for VM deployment"),
93
+ pauseStrategy: z.enum(['firstBatchPause', 'noPause', 'eachBatchPause']).optional().describe("Pause strategy for VM deployment. firstBatchPause: The first batch is paused. noPause: No pause. eachBatchPause: Pause each batch. Default: firstBatchPause"),
94
+ batchNumber: z.number().int().optional().describe("Number of batches for VM deployment. Default: 2"),
95
+ // Kubernetes部署相关参数(当deployTarget为'k8s'时)
96
+ kubernetesClusterId: z.string().optional().describe("Kubernetes cluster ID for K8s deployment (required when deployTarget=k8s)"),
97
+ namespace: z.string().optional().describe("Kubernetes namespace for K8s deployment"),
98
+ dockerImage: z.string().optional().describe("Docker image name for container deployment"),
99
+ yamlPath: z.string().optional().describe("Path to Kubernetes YAML file for K8s deployment"),
100
+ });
101
+ // 兼容性:保留原有的schema名称,但指向新的schema
102
+ export const CreatePipelineFromDescriptionSchema = CreatePipelineWithStructuredOptionsSchema;
103
+ // Flow List pipelines schema
104
+ export const ListPipelinesSchema = z.object({
105
+ organizationId: z.string().describe("Organization ID, can be found in the basic information page of the organization admin console"),
106
+ createStartTime: z.number().int().optional().describe("Creation start time in milliseconds timestamp format (e.g., 1729178040000). For filtering pipelines created after this time."),
107
+ createEndTime: z.number().int().optional().describe("Creation end time in milliseconds timestamp format (e.g., 1729178040000). For filtering pipelines created before this time."),
108
+ executeStartTime: z.number().int().optional().describe("Execution start time in milliseconds timestamp format (e.g., 1729178040000). For filtering pipelines executed after this time."),
109
+ executeEndTime: z.number().int().optional().describe("Execution end time in milliseconds timestamp format (e.g., 1729178040000). For filtering pipelines executed before this time."),
110
+ pipelineName: z.string().optional().describe("Pipeline name for filtering"),
111
+ statusList: z.string().optional().describe("Pipeline status list, comma separated (SUCCESS,RUNNING,FAIL,CANCELED,WAITING)"),
112
+ perPage: z.number().int().min(1).max(30).default(10).optional().describe("Number of items per page, default 10, max 30"),
113
+ page: z.number().int().min(1).default(1).optional().describe("Page number, default 1"),
114
+ });
115
+ // Flow Pipeline list item schema
116
+ export const PipelineListItemSchema = z.object({
117
+ pipelineName: z.string().nullable().optional().describe("Pipeline name"),
118
+ pipelineId: z.number().int().nullable().optional().describe("Pipeline ID"),
119
+ createAccountId: z.string().nullable().optional().describe("Creator account ID"),
120
+ createTime: z.number().int().nullable().optional().describe("Creation time in milliseconds"),
121
+ });
122
+ // Flow Create pipeline run schema
123
+ export const CreatePipelineRunSchema = z.object({
124
+ organizationId: z.string().describe("Organization ID, can be found in the basic information page of the organization admin console"),
125
+ pipelineId: z.string().describe("Pipeline ID to run"),
126
+ // ========== 高级参数(兼容原有方式)==========
127
+ params: z.string().optional().describe("[Advanced] Raw pipeline run parameters in JSON string format. If provided, this will override other parameters. Example: {\"branchModeBranchs\":[\"main\"],\"envs\":{\"key\":\"value\"},\"runningBranchs\":{\"https://codeup.aliyun.com/org/repo.git\":\"dev\"}}"),
128
+ // ========== 简化参数(推荐使用)==========
129
+ // 分支/标签相关
130
+ branch: z.string().optional().describe("[Simple] Branch name to run the pipeline with. When user says 'run pipeline with XX branch', use this parameter. This is the most common use case."),
131
+ tag: z.string().optional().describe("[Simple] Tag name to run the pipeline with. When user says 'run pipeline with XX tag', use this parameter. Will automatically fetch repo URLs from pipeline config."),
132
+ branches: z.array(z.string()).optional().describe("[Simple] Multiple branches for branch mode. Use when user wants to run pipeline in branch mode with specific branches."),
133
+ branchMode: z.boolean().optional().describe("[Simple] Enable branch mode to run pipeline with multiple branches simultaneously"),
134
+ // 仓库特定配置
135
+ repositories: z.array(z.object({
136
+ url: z.string().describe("Repository URL, e.g., https://codeup.aliyun.com/org/repo.git"),
137
+ branch: z.string().optional().describe("Branch name for this specific repository"),
138
+ tag: z.string().optional().describe("Tag name for this specific repository")
139
+ })).optional().describe("[Simple] Specific branch or tag configurations for different repositories in the pipeline"),
140
+ // 环境变量
141
+ environmentVariables: z.record(z.string()).optional().describe("[Simple] Environment variables to pass to the pipeline, e.g., {\"ENV\":\"production\",\"VERSION\":\"1.0.0\"}"),
142
+ // 制品相关
143
+ pipelineArtifacts: z.record(z.string()).optional().describe("[Simple] Pipeline artifacts to use, key is artifact ID, value is version"),
144
+ acrArtifacts: z.record(z.string()).optional().describe("[Simple] ACR (Alibaba Cloud Container Registry) artifacts to use, key is image address, value is image tag"),
145
+ packagesArtifacts: z.record(z.string()).optional().describe("[Simple] Package repository artifacts to use, key is artifact path, value is version"),
146
+ // Release分支相关
147
+ releaseBranch: z.string().optional().describe("[Simple] Specific release branch name"),
148
+ createReleaseBranch: z.boolean().optional().describe("[Simple] Whether to create a new release branch"),
149
+ // 备注
150
+ comment: z.string().optional().describe("[Simple] Comment or note for this pipeline run"),
151
+ // 自然语言描述(辅助参数)
152
+ description: z.string().optional().describe("[Optional] Natural language description of how to run the pipeline, the system will try to parse it automatically")
153
+ });
154
+ // Flow Pipeline run related schemas
155
+ export const PipelineRunActionSchema = z.object({
156
+ data: z.string().nullable().optional().describe("Action data"),
157
+ disable: z.boolean().nullable().optional().describe("Whether the action is disabled"),
158
+ displayType: z.string().nullable().optional().describe("Display type of the action"),
159
+ name: z.string().nullable().optional().describe("Action name"),
160
+ order: z.number().int().nullable().optional().describe("Order of the action"),
161
+ params: z.record(z.any()).nullable().optional().describe("Action parameters"),
162
+ title: z.string().nullable().optional().describe("Action title"),
163
+ type: z.string().nullable().optional().describe("Action type")
164
+ });
165
+ export const PipelineRunJobSchema = z.object({
166
+ id: z.number().int().nullable().optional().describe("Job ID"),
167
+ name: z.string().nullable().optional().describe("Job name"),
168
+ startTime: z.number().int().nullable().optional().describe("Start time of the job in milliseconds"),
169
+ endTime: z.number().int().nullable().optional().describe("End time of the job in milliseconds"),
170
+ status: z.string().nullable().optional().describe("Job status: FAIL, SUCCESS, RUNNING"),
171
+ params: z.string().nullable().optional().describe("Job parameters in JSON string format"),
172
+ jobSign: z.string().nullable().optional().describe("Job unique identifier"),
173
+ result: z.string().nullable().optional().describe("Job result data in JSON string format"),
174
+ actions: z.array(PipelineRunActionSchema).nullable().optional().describe("Available actions for the job"),
175
+ });
176
+ export const PipelineStageInfoSchema = z.object({
177
+ startTime: z.number().int().nullable().optional().describe("Start time of the stage in milliseconds"),
178
+ endTime: z.number().int().nullable().optional().describe("End time of the stage in milliseconds"),
179
+ name: z.string().nullable().optional().describe("Stage name"),
180
+ status: z.string().nullable().optional().describe("Stage status: FAIL, SUCCESS, RUNNING"),
181
+ id: z.number().int().nullable().optional().describe("Stage ID"),
182
+ jobs: z.array(PipelineRunJobSchema).nullable().optional().describe("Jobs in this stage"),
183
+ });
184
+ export const PipelineStageSchema = z.object({
185
+ index: z.string().nullable().optional().describe("Stage index"),
186
+ name: z.string().nullable().optional().describe("Stage name"),
187
+ stageInfo: PipelineStageInfoSchema.nullable().optional().describe("Stage detailed information")
188
+ });
189
+ export const PipelineRunSourceSchema = z.object({
190
+ data: z.record(z.any()).optional().describe("Source configuration data"),
191
+ name: z.string().nullable().optional().describe("Source name"),
192
+ sign: z.string().nullable().optional().describe("Source identifier"),
193
+ type: z.string().nullable().optional().describe("Source type"),
194
+ label: z.string().nullable().optional().describe("Source label"),
195
+ });
196
+ export const PipelineRunGlobalParamSchema = z.object({
197
+ key: z.string().nullable().optional().describe("Parameter key"),
198
+ value: z.string().nullable().optional().describe("Parameter value"),
199
+ masked: z.boolean().nullable().optional().describe("Whether the parameter is masked"),
200
+ runningConfig: z.boolean().nullable().optional().describe("Whether the parameter is running configuration"),
201
+ encrypted: z.boolean().nullable().optional().describe("Whether the parameter is encrypted"),
202
+ metaData: z.string().nullable().optional().describe("Parameter metadata"),
203
+ type: z.string().nullable().optional().describe("Parameter type"),
204
+ description: z.string().nullable().optional().describe("Parameter description"),
205
+ optionType: z.string().nullable().optional().describe("Parameter option type"),
206
+ });
207
+ export const PipelineRunGroupSchema = z.object({
208
+ id: z.number().int().nullable().optional().describe("Group ID"),
209
+ name: z.string().nullable().optional().describe("Group name")
210
+ });
211
+ export const PipelineRunSchema = z.object({
212
+ updateTime: z.number().int().nullable().optional().describe("Last update time in milliseconds"),
213
+ pipelineConfigId: z.number().int().nullable().optional().describe("Pipeline configuration ID"),
214
+ createTime: z.number().int().nullable().optional().describe("Creation time of the run in milliseconds"),
215
+ pipelineId: z.number().int().nullable().optional().describe("Pipeline ID"),
216
+ pipelineRunId: z.number().int().nullable().optional().describe("Pipeline run ID"),
217
+ status: z.string().optional().nullable().describe("Pipeline run status: FAIL, SUCCESS, RUNNING"),
218
+ triggerMode: z.number().int().nullable().optional().describe("Trigger mode: 1-Manual, 2-Scheduled, 3-Code commit, 5-Pipeline, 6-Webhook"),
219
+ stageGroup: z.array(z.array(z.string())).nullable().optional().describe("Stage groups"),
220
+ groups: z.array(PipelineRunGroupSchema).nullable().optional().describe("Pipeline groups"),
221
+ pipelineType: z.string().nullable().optional().describe("Pipeline type"),
222
+ creatorAccountId: z.string().nullable().optional().describe("Creator account ID"),
223
+ modifierAccountId: z.string().optional().describe("Last modifier account ID"),
224
+ stages: z.array(PipelineStageSchema).nullable().optional().describe("Pipeline stages"),
225
+ sources: z.array(PipelineRunSourceSchema).nullable().optional().describe("Code sources used in this run"),
226
+ creator: z.string().nullable().optional().describe("Creator"),
227
+ modifier: z.string().nullable().optional().describe("Last modifier"),
228
+ globalParams: z.array(PipelineRunGlobalParamSchema).nullable().optional().describe("Global parameters"),
229
+ });
230
+ // Flow Get latest pipeline run schema
231
+ export const GetLatestPipelineRunSchema = z.object({
232
+ organizationId: z.string().describe("Organization ID, can be found in the basic information page of the organization admin console"),
233
+ pipelineId: z.string().describe("Pipeline ID to get the latest run information"),
234
+ });
235
+ // Flow Get pipeline run schema
236
+ export const GetPipelineRunSchema = z.object({
237
+ organizationId: z.string().describe("Organization ID, can be found in the basic information page of the organization admin console"),
238
+ pipelineId: z.string().describe("Pipeline ID"),
239
+ pipelineRunId: z.string().describe("Pipeline run ID to retrieve details for"),
240
+ });
241
+ // Flow Pipeline run list item schema
242
+ export const PipelineRunListItemSchema = z.object({
243
+ status: z.string().nullable().optional().describe("Pipeline run status: FAIL, SUCCESS, RUNNING"),
244
+ startTime: z.number().int().nullable().optional().describe("Start time of the run in milliseconds"),
245
+ triggerMode: z.number().int().nullable().optional().describe("Trigger mode: 1-Manual, 2-Scheduled, 3-Code commit, 5-Pipeline, 6-Webhook"),
246
+ pipelineRunId: z.number().int().nullable().optional().describe("Pipeline run ID"),
247
+ pipelineId: z.number().int().nullable().optional().describe("Pipeline ID"),
248
+ endTime: z.number().int().nullable().optional().describe("End time of the run in milliseconds"),
249
+ creator: z.string().nullable().optional().describe("Creator"),
250
+ creatorAccountId: z.string().nullable().optional().describe("Creator account ID"),
251
+ });
252
+ // Flow List pipeline runs schema
253
+ export const ListPipelineRunsSchema = z.object({
254
+ organizationId: z.string().describe("Organization ID, can be found in the basic information page of the organization admin console"),
255
+ pipelineId: z.string().describe("Pipeline ID to list runs for"),
256
+ perPage: z.number().int().min(1).max(30).default(10).optional().describe("Number of items per page, default 10, max 30"),
257
+ page: z.number().int().min(1).default(1).optional().describe("Page number, default 1"),
258
+ startTime: z.number().int().optional().describe("Execution start time filter in milliseconds timestamp format"),
259
+ endTime: z.number().int().optional().describe("Execution end time filter in milliseconds timestamp format"),
260
+ status: z.string().optional().describe("Run status filter: FAIL, SUCCESS, or RUNNING"),
261
+ triggerMode: z.number().int().optional().describe("Trigger mode filter: 1-Manual, 2-Scheduled, 3-Code commit, 5-Pipeline, 6-Webhook")
262
+ });
263
+ // Flow Pipeline job related schemas
264
+ export const ListPipelineJobsByCategorySchema = z.object({
265
+ organizationId: z.string().describe("Organization ID, can be found in the basic information page of the organization admin console"),
266
+ pipelineId: z.string().describe("Pipeline ID"),
267
+ category: z.string().describe("Task category, currently only supports DEPLOY")
268
+ });
269
+ export const PipelineJobItemSchema = z.object({
270
+ identifier: z.string().nullable().optional().describe("Task identifier"),
271
+ jobName: z.string().nullable().optional().describe("Task name"),
272
+ lastJobId: z.number().int().nullable().optional().describe("ID of the last executed task"),
273
+ lastJobParams: z.string().nullable().optional().describe("Parameters of the last executed task in JSON format")
274
+ });
275
+ // Flow Pipeline job history related schemas
276
+ export const ListPipelineJobHistorysSchema = z.object({
277
+ organizationId: z.string().describe("Organization ID, can be found in the basic information page of the organization admin console"),
278
+ pipelineId: z.string().describe("Pipeline ID"),
279
+ category: z.string().describe("Task category, currently only supports DEPLOY"),
280
+ identifier: z.string().describe("Task identifier"),
281
+ perPage: z.number().int().min(1).max(30).default(10).optional().describe("Number of items per page, default 10, max 30"),
282
+ page: z.number().int().min(1).default(1).optional().describe("Page number, default 1")
283
+ });
284
+ export const PipelineJobHistoryItemSchema = z.object({
285
+ executeNumber: z.number().int().nullable().optional().describe("Task execution number"),
286
+ identifier: z.string().nullable().optional().describe("Task identifier"),
287
+ jobId: z.number().int().nullable().optional().describe("Job ID"),
288
+ jobName: z.string().nullable().optional().describe("Job name"),
289
+ operatorAccountId: z.string().nullable().optional().describe("Operator account ID"),
290
+ pipelineId: z.number().int().nullable().optional().describe("Pipeline ID"),
291
+ pipelineRunId: z.number().int().nullable().optional().describe("Pipeline run instance ID"),
292
+ sources: z.string().nullable().optional().describe("Code source information for the job run, in JSON format"),
293
+ status: z.string().nullable().optional().describe("Job execution status")
294
+ });
295
+ // Flow Execute pipeline job run schema
296
+ export const ExecutePipelineJobRunSchema = z.object({
297
+ organizationId: z.string().describe("Organization ID, can be found in the basic information page of the organization admin console"),
298
+ pipelineId: z.string().describe("Pipeline ID"),
299
+ pipelineRunId: z.string().describe("Pipeline run instance ID"),
300
+ jobId: z.string().describe("Job ID for the pipeline run task")
301
+ });
302
+ // Flow Get pipeline job run log schema
303
+ export const GetPipelineJobRunLogSchema = z.object({
304
+ organizationId: z.string().describe("Organization ID, can be found in the basic information page of the organization admin console"),
305
+ pipelineId: z.string().describe("Pipeline ID"),
306
+ pipelineRunId: z.string().describe("Pipeline run instance ID"),
307
+ jobId: z.string().describe("Job ID of the pipeline run task")
308
+ });
309
+ export const PipelineJobRunLogSchema = z.object({
310
+ content: z.string().nullable().optional().describe("Log content"),
311
+ last: z.number().int().nullable().optional().describe("Last log line number"),
312
+ more: z.boolean().nullable().optional().describe("Whether there are more logs available")
313
+ });
314
+ // Resource member schemas
315
+ export const ResourceMemberSchema = z.object({
316
+ username: z.string().nullable().optional().describe("用户名"),
317
+ userId: z.string().nullable().optional().describe("用户id"),
318
+ role: z.string().nullable().optional().describe("用户角色"),
319
+ });
320
+ export const ResourceMemberBaseSchema = z.object({
321
+ organizationId: z.string().describe("企业Id"),
322
+ resourceType: z.string().describe("资源类型 pipeline 流水线 hostGroup 主机组"),
323
+ resourceId: z.string().describe("资源Id"),
324
+ });
325
+ export const DeleteResourceMemberSchema = ResourceMemberBaseSchema.extend({
326
+ userId: z.string().describe("用户Id"),
327
+ });
328
+ export const UpdateResourceMemberSchema = ResourceMemberBaseSchema.extend({
329
+ roleName: z.string().describe("角色部署组 hostGroup: user(成员,使用权限) admin(管理员,使用编辑权限) 流水线 pipeline: admin(管理员,查看、运行、编辑权限) member(运行权限) viewer(查看权限)"),
330
+ userId: z.string().describe("用户id"),
331
+ });
332
+ export const CreateResourceMemberSchema = ResourceMemberBaseSchema.extend({
333
+ roleName: z.string().describe("角色部署组 hostGroup: user(成员,使用权限) admin(管理员,使用编辑权限) owner(拥有者,所有权限) 流水线 pipeline: owner(拥有者,所有权限) admin(管理员,查看、运行、编辑权限) member(运行权限) viewer(查看权限)"),
334
+ userId: z.string().describe("用户id"),
335
+ });
336
+ export const UpdateResourceOwnerSchema = ResourceMemberBaseSchema.extend({
337
+ newOwnerId: z.string().describe("新拥有者用户Id"),
338
+ });
339
+ // Flow Update pipeline schema
340
+ export const UpdatePipelineSchema = z.object({
341
+ organizationId: z.string().describe("Organization ID"),
342
+ pipelineId: z.string().describe("Pipeline ID"),
343
+ content: z.string().describe("Pipeline YAML content"),
344
+ name: z.string().max(60).describe("Pipeline name, max 60 chars")
345
+ });
346
+ // Service Connection related types
347
+ export const ServiceConnectionSchema = z.object({
348
+ createTime: z.number().int().nullable().optional().describe("创建时间 (毫秒时间戳)"),
349
+ id: z.number().int().nullable().optional().describe("服务连接ID"),
350
+ name: z.string().nullable().optional().describe("服务连接名称"),
351
+ ownerAccountId: z.union([z.string(), z.number().int()]).nullable().optional().describe("拥有者阿里云账号ID"),
352
+ type: z.string().nullable().optional().describe("服务连接类型"),
353
+ uuid: z.string().nullable().optional().describe("UUID"),
354
+ });
355
+ export const ListServiceConnectionsSchema = z.object({
356
+ organizationId: z.string().describe("组织ID,可在组织管理后台的基本信息页面获取"),
357
+ serviceConnectionType: z.enum([
358
+ "aliyun_code",
359
+ "codeup",
360
+ "gitee",
361
+ "github",
362
+ "ack",
363
+ "docker_register_aliyun",
364
+ "ecs",
365
+ "edas",
366
+ "emas",
367
+ "fc",
368
+ "kubernetes",
369
+ "oss",
370
+ "packages",
371
+ "ros",
372
+ "sae"
373
+ ]).describe("服务连接类型: aliyun_code-阿里云代码, codeup-Codeup, gitee-码云, github-Github, ack-容器服务Kubernetes(ACK), docker_register_aliyun-容器镜像服务(ACR), ecs-ECS主机, edas-企业级分布式应用(EDAS), emas-移动研发平台(EMAS), fc-阿里云函数计算(FC), kubernetes-自建k8s集群, oss-对象存储(OSS), packages-制品仓库, ros-资源编排服务(ROS), sae-Serverless应用引擎(SAE)"),
374
+ });
375
+ // Host Group related types
376
+ export const HostInfoSchema = z.object({
377
+ aliyunRegion: z.string().nullable().optional().describe("阿里云区域"),
378
+ createTime: z.number().int().nullable().optional().describe("创建时间 (毫秒时间戳)"),
379
+ creatorAccountId: z.string().nullable().optional().describe("创建者阿里云账号"),
380
+ instanceName: z.string().nullable().optional().describe("主机名"),
381
+ ip: z.string().nullable().optional().describe("机器IP"),
382
+ machineSn: z.string().nullable().optional().describe("机器SN"),
383
+ modiferAccountId: z.string().nullable().optional().describe("修改者阿里云账号"),
384
+ objectType: z.string().nullable().optional().describe("对象类型,固定为MachineInfo"),
385
+ updateTime: z.number().int().nullable().optional().describe("更新时间"),
386
+ });
387
+ export const HostGroupSchema = z.object({
388
+ aliyunRegion: z.string().nullable().optional().describe("阿里云区域"),
389
+ createTime: z.number().int().nullable().optional().describe("创建时间 (毫秒时间戳)"),
390
+ creatorAccountId: z.string().nullable().optional().describe("创建人"),
391
+ description: z.string().nullable().optional().describe("主机组描述"),
392
+ ecsLabelKey: z.string().nullable().optional().describe("ECS标签Key"),
393
+ ecsLabelValue: z.string().nullable().optional().describe("ECS标签Value"),
394
+ ecsType: z.string().nullable().optional().describe("ECS类型,暂只支持ECS_ALIYUN"),
395
+ hostInfos: z.array(HostInfoSchema).nullable().optional().describe("主机信息列表"),
396
+ hostNum: z.number().int().nullable().optional().describe("主机数"),
397
+ id: z.number().int().nullable().optional().describe("主机组ID"),
398
+ uuid: z.string().nullable().optional().describe("主机组UUID"),
399
+ modiferAccountId: z.string().nullable().optional().describe("更新人"),
400
+ name: z.string().nullable().optional().describe("主机组名称"),
401
+ serviceConnectionId: z.number().int().nullable().optional().describe("服务连接ID"),
402
+ type: z.string().nullable().optional().describe("主机组类型"),
403
+ updateTime: z.number().int().nullable().optional().describe("更新时间 (毫秒时间戳)"),
404
+ });
405
+ export const ListHostGroupsSchema = z.object({
406
+ organizationId: z.string().describe("组织ID,可在组织管理后台的基本信息页面获取"),
407
+ ids: z.string().optional().describe("主机组ID,多个逗号分割"),
408
+ name: z.string().optional().describe("主机组名称"),
409
+ createStartTime: z.number().int().optional().describe("主机组创建开始时间"),
410
+ createEndTime: z.number().int().optional().describe("主机组创建结束时间"),
411
+ creatorAccountIds: z.string().optional().describe("创建阿里云账号ID,多个逗号分割"),
412
+ perPage: z.number().int().min(1).max(30).default(10).optional().describe("每页数据条数,默认10,最大支持30"),
413
+ page: z.number().int().min(1).default(1).optional().describe("当前页,默认1"),
414
+ pageSort: z.string().optional().describe("排序条件ID"),
415
+ pageOrder: z.enum(["DESC", "ASC"]).default("DESC").optional().describe("排序顺序 DESC 降序 ASC 升序"),
416
+ });
417
+ // Tag schemas
418
+ export const TagGroupSchema = z.object({
419
+ id: z.number().int().nullable().optional().describe("标签分类 id"),
420
+ name: z.string().nullable().optional().describe("标签分类名称"),
421
+ creatorAccountId: z.string().nullable().optional().describe("创建人"),
422
+ modifierAccountId: z.string().nullable().optional().describe("更新人"),
423
+ });
424
+ export const TagSchema = z.object({
425
+ id: z.number().int().nullable().optional().describe("标签 id"),
426
+ name: z.string().nullable().optional().describe("标签名称"),
427
+ color: z.string().nullable().optional().describe("标签颜色"),
428
+ creatorAccountId: z.string().nullable().optional().describe("创建人"),
429
+ modifierAccountId: z.string().nullable().optional().describe("更新人"),
430
+ });
431
+ export const TagGroupWithTagsSchema = TagGroupSchema.extend({
432
+ flowTagList: z.array(TagSchema).nullable().optional().describe("标签列表"),
433
+ });
434
+ // Define base schema for common parameters
435
+ export const BaseTagSchema = z.object({
436
+ organizationId: z.string().describe("企业Id"),
437
+ });
438
+ export const CreateTagSchema = BaseTagSchema.extend({
439
+ name: z.string().describe("标签名称"),
440
+ color: z.string().describe("#1F9AEF 蓝色; #E63A3A 红色; #FA8C15 黄色; #15AD31 绿色; #7978E5 紫色; #8C8C8C 灰色"),
441
+ flowTagGroupId: z.number().int().describe("标签分类 id"),
442
+ });
443
+ export const CreateTagGroupSchema = BaseTagSchema.extend({
444
+ name: z.string().describe("标签分类名称"),
445
+ });
446
+ export const DeleteTagGroupSchema = BaseTagSchema.extend({
447
+ id: z.number().int().describe("标签分类 id"),
448
+ });
449
+ export const UpdateTagGroupSchema = DeleteTagGroupSchema.extend({
450
+ name: z.string().describe("标签分类名称"),
451
+ });
452
+ export const DeleteTagSchema = BaseTagSchema.extend({
453
+ id: z.number().int().describe("标签 id"),
454
+ });
455
+ export const UpdateTagSchema = DeleteTagSchema.extend({
456
+ name: z.string().describe("标签名称"),
457
+ color: z.string().describe("#1F9AEF 蓝色; #E63A3A 红色; #FA8C15 黄色; #15AD31 绿色; #7978E5 紫色; #8C8C8C 灰色"),
458
+ flowTagGroupId: z.number().int().describe("标签分类 id"),
459
+ });
460
+ export const GetTagGroupSchema = DeleteTagGroupSchema;
461
+ // VM Deploy Order schemas
462
+ export const DeployOrderMachineActionSchema = z.object({
463
+ type: z.string().nullable().optional().describe("类型 RetryVMDeployMachine重试机器部署 SkipVMDeployMachine跳过机器部署 LogVMDeployMachine查看机器部署日志"),
464
+ disable: z.boolean().nullable().optional().describe("当前用户是否有权限进行后续 action"),
465
+ params: z.object({}).nullable().optional().describe("参数"),
466
+ });
467
+ export const DeployOrderMachineSchema = z.object({
468
+ createTime: z.number().int().nullable().optional().describe("创建时间"),
469
+ updateTime: z.number().int().nullable().optional().describe("更新时间"),
470
+ status: z.string().nullable().optional().describe("状态 Success成功 Pending待部署 Running部署中 Cancelled取消 Queued部署等待中 Failed失败 Skipped已跳过"),
471
+ machineSn: z.string().nullable().optional().describe("机器sn"),
472
+ clientStatus: z.string().nullable().optional().describe("机器状态 ok(正常) error(连接失败)"),
473
+ ip: z.string().nullable().optional().describe("机器ip"),
474
+ batchNum: z.number().int().nullable().optional().describe("部署批次"),
475
+ actions: z.array(DeployOrderMachineActionSchema).nullable().optional().describe("操作列表"),
476
+ });
477
+ export const DeployOrderDeployMachinesSchema = z.object({
478
+ hostGroupId: z.number().int().nullable().optional().describe("主机组Id"),
479
+ batchNum: z.number().int().nullable().optional().describe("发布批次"),
480
+ deployMachines: z.array(DeployOrderMachineSchema).nullable().optional().describe("部署机器列表"),
481
+ });
482
+ export const DeployOrderActionSchema = z.object({
483
+ type: z.string().nullable().optional().describe("类型 StopVMDeployOrder 取消部署单 ResumeVMDeployOrder 继续部署单运行"),
484
+ disable: z.boolean().nullable().optional().describe("当前用户是否有权限进行后续 action"),
485
+ params: z.object({}).nullable().optional().describe("参数"),
486
+ });
487
+ export const DeployOrderSchema = z.object({
488
+ deployOrderId: z.number().int().nullable().optional().describe("部署单id"),
489
+ createTime: z.number().int().nullable().optional().describe("创建时间"),
490
+ updateTime: z.number().int().nullable().optional().describe("更新时间"),
491
+ creator: z.string().nullable().optional().describe("创建人"),
492
+ currentBatch: z.number().int().nullable().optional().describe("当前发布批次"),
493
+ totalBatch: z.number().int().nullable().optional().describe("总发布批次"),
494
+ status: z.string().nullable().optional().describe("发布状态 Waiting暂停 Running部署中 Cancelled已取消 Success成功"),
495
+ exceptionCode: z.string().nullable().optional().describe("错误码"),
496
+ actions: z.array(DeployOrderActionSchema).nullable().optional().describe("操作列表"),
497
+ deployMachineInfo: DeployOrderDeployMachinesSchema.nullable().optional().describe("部署机器信息"),
498
+ });
499
+ export const DeployOrderLogSchema = z.object({
500
+ deployLog: z.string().nullable().optional().describe("部署日志"),
501
+ aliyunRegion: z.string().nullable().optional().describe("部署地域"),
502
+ deployLogPath: z.string().nullable().optional().describe("部署日志路径"),
503
+ deployBeginTime: z.string().nullable().optional().describe("部署开始时间"),
504
+ deployEndTime: z.string().nullable().optional().describe("部署结束时间"),
505
+ });
506
+ // Define base schema for common parameters
507
+ export const BaseVMDeployOrderSchema = z.object({
508
+ organizationId: z.string().describe("企业Id"),
509
+ pipelineId: z.string().describe("流水线Id"),
510
+ deployOrderId: z.string().describe("部署单Id"),
511
+ });
512
+ export const StopVMDeployOrderSchema = BaseVMDeployOrderSchema;
513
+ export const SkipVMDeployMachineSchema = BaseVMDeployOrderSchema.extend({
514
+ machineSn: z.string().describe("机器sn"),
515
+ });
516
+ export const RetryVMDeployMachineSchema = BaseVMDeployOrderSchema.extend({
517
+ machineSn: z.string().describe("机器sn"),
518
+ });
519
+ export const ResumeVMDeployOrderSchema = BaseVMDeployOrderSchema;
520
+ export const GetVMDeployOrderSchema = BaseVMDeployOrderSchema;
521
+ export const GetVMDeployMachineLogSchema = BaseVMDeployOrderSchema.extend({
522
+ machineSn: z.string().describe("机器sn"),
523
+ });