harness-mcp-v2 3.2.20 → 3.2.21

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 (75) hide show
  1. package/README.md +75 -36
  2. package/build/client/harness-client.d.ts.map +1 -1
  3. package/build/client/harness-client.js +32 -6
  4. package/build/client/harness-client.js.map +1 -1
  5. package/build/config.d.ts +10 -0
  6. package/build/config.d.ts.map +1 -1
  7. package/build/config.js +15 -0
  8. package/build/config.js.map +1 -1
  9. package/build/data/schemas/v0/pipeline.d.ts.map +1 -1
  10. package/build/data/schemas/v0/pipeline.js +545 -272
  11. package/build/data/schemas/v0/pipeline.js.map +1 -1
  12. package/build/data/schemas/v0/template.d.ts.map +1 -1
  13. package/build/data/schemas/v0/template.js +275 -2
  14. package/build/data/schemas/v0/template.js.map +1 -1
  15. package/build/data/schemas/v1/pipeline.d.ts.map +1 -1
  16. package/build/data/schemas/v1/pipeline.js +43 -29
  17. package/build/data/schemas/v1/pipeline.js.map +1 -1
  18. package/build/data/schemas/v1/template.d.ts.map +1 -1
  19. package/build/data/schemas/v1/template.js +43 -29
  20. package/build/data/schemas/v1/template.js.map +1 -1
  21. package/build/prompts/deploy-ai-agent.d.ts +3 -0
  22. package/build/prompts/deploy-ai-agent.d.ts.map +1 -0
  23. package/build/prompts/deploy-ai-agent.js +300 -0
  24. package/build/prompts/deploy-ai-agent.js.map +1 -0
  25. package/build/prompts/feature-flag-rollout.js +2 -2
  26. package/build/prompts/feature-flag-rollout.js.map +1 -1
  27. package/build/prompts/index.d.ts.map +1 -1
  28. package/build/prompts/index.js +2 -0
  29. package/build/prompts/index.js.map +1 -1
  30. package/build/registry/extractors.d.ts +69 -0
  31. package/build/registry/extractors.d.ts.map +1 -1
  32. package/build/registry/extractors.js +326 -0
  33. package/build/registry/extractors.js.map +1 -1
  34. package/build/registry/index.d.ts.map +1 -1
  35. package/build/registry/index.js +6 -2
  36. package/build/registry/index.js.map +1 -1
  37. package/build/registry/toolsets/feature-flags.d.ts.map +1 -1
  38. package/build/registry/toolsets/feature-flags.js +236 -30
  39. package/build/registry/toolsets/feature-flags.js.map +1 -1
  40. package/build/registry/toolsets/iacm.d.ts.map +1 -1
  41. package/build/registry/toolsets/iacm.js +194 -2
  42. package/build/registry/toolsets/iacm.js.map +1 -1
  43. package/build/registry/toolsets/pipelines.d.ts.map +1 -1
  44. package/build/registry/toolsets/pipelines.js +208 -5
  45. package/build/registry/toolsets/pipelines.js.map +1 -1
  46. package/build/registry/toolsets/release-management.d.ts +8 -0
  47. package/build/registry/toolsets/release-management.d.ts.map +1 -0
  48. package/build/registry/toolsets/release-management.js +783 -0
  49. package/build/registry/toolsets/release-management.js.map +1 -0
  50. package/build/registry/types.d.ts +2 -2
  51. package/build/registry/types.d.ts.map +1 -1
  52. package/build/resources/harness-schema.d.ts.map +1 -1
  53. package/build/resources/harness-schema.js +2 -1
  54. package/build/resources/harness-schema.js.map +1 -1
  55. package/build/tools/entity-schema/live.d.ts +6 -5
  56. package/build/tools/entity-schema/live.d.ts.map +1 -1
  57. package/build/tools/entity-schema/live.js +114 -10
  58. package/build/tools/entity-schema/live.js.map +1 -1
  59. package/build/tools/entity-schema/types.d.ts +7 -1
  60. package/build/tools/entity-schema/types.d.ts.map +1 -1
  61. package/build/tools/harness-list.d.ts.map +1 -1
  62. package/build/tools/harness-list.js +12 -0
  63. package/build/tools/harness-list.js.map +1 -1
  64. package/build/tools/harness-schema.d.ts +2 -1
  65. package/build/tools/harness-schema.d.ts.map +1 -1
  66. package/build/tools/harness-schema.js +10 -8
  67. package/build/tools/harness-schema.js.map +1 -1
  68. package/build/tools/index.js +1 -1
  69. package/build/tools/index.js.map +1 -1
  70. package/build/utils/url-parser.d.ts +2 -0
  71. package/build/utils/url-parser.d.ts.map +1 -1
  72. package/build/utils/url-parser.js +33 -0
  73. package/build/utils/url-parser.js.map +1 -1
  74. package/npm-shrinkwrap.json +2 -2
  75. package/package.json +1 -1
@@ -0,0 +1,783 @@
1
+ import { normalizeReleaseActivityExecutionInput, normalizeReleaseTaskLimit, releaseActivityExecutionListExtract, releaseActivityInputGetExtract, releaseActivityOutputGetExtract, releaseExecutionActivityOutputPath, releaseExecutionPhaseInputPath, releaseExecutionPhaseOutputPath, releaseFillScopeFromConfig, releaseGetExtract, releaseInputGetExtract, releaseListBody, releaseListExtract, releaseListPreflight, releasePhaseInputGetExtract, releasePhaseListExtract, releasePhaseOutputGetExtract, releaseTaskListExtract, rmgYamlEntityDeleteExtract, rmgYamlEntityExtract, RMG_DEFAULT_DAYS_BACK, RMG_DAYS_FORWARD, RMG_DEFAULT_TASK_LIMIT, RMG_MAX_DAYS_BACK, RMG_MAX_TASK_LIMIT, springPageExtract, yamlWriteBody, } from "../extractors.js";
2
+ const RMG = "/api";
3
+ const RELEASE_STATUSES = ["Running", "Success", "Failed", "Scheduled", "Paused", "Aborted"];
4
+ const TASK_STATUSES = ["TODO", "IN_PROGRESS", "SUCCEEDED", "FAILED", "BLOCKED"];
5
+ const ACTIVITY_EXECUTION_STATUSES = [
6
+ "RUNNING",
7
+ "SUCCEEDED",
8
+ "FAILED",
9
+ "ABORTED",
10
+ "QUEUED",
11
+ "SCHEDULED",
12
+ "ON_HOLD",
13
+ "OUTPUT_WAITING",
14
+ "RETRIED",
15
+ "IGNORED",
16
+ "SKIPPED",
17
+ ];
18
+ const ACTIVITY_EXECUTION_TYPES = ["PIPELINE", "SUBPROCESS", "MANUAL"];
19
+ const ACTIVITY_SORT_FIELDS = [
20
+ "start_ts",
21
+ "end_ts",
22
+ "created_at",
23
+ "last_updated_at",
24
+ "name",
25
+ "identifier",
26
+ "status",
27
+ "type",
28
+ ];
29
+ const releaseExecutionPhaseOutputParamsSchema = {
30
+ fields: [
31
+ {
32
+ name: "phase_identifier",
33
+ required: true,
34
+ description: "Phase identifier from harness_list resource_type=release_execution_phase (each phase has an `identifier` field)",
35
+ },
36
+ {
37
+ name: "phase_execution_id",
38
+ required: false,
39
+ description: "Optional phase execution UUID when multiple phase execution records exist",
40
+ },
41
+ ],
42
+ };
43
+ const releaseExecutionActivityOutputParamsSchema = {
44
+ fields: [
45
+ {
46
+ name: "phase_identifier",
47
+ required: true,
48
+ description: "Phase identifier containing the activity",
49
+ },
50
+ {
51
+ name: "activity_identifier",
52
+ required: true,
53
+ description: "Activity identifier from harness_list resource_type=release_execution_activity (each item has an `identifier` field)",
54
+ },
55
+ {
56
+ name: "activity_execution_id",
57
+ required: false,
58
+ description: "Optional activity execution UUID to pin a specific runtime activity row",
59
+ },
60
+ ],
61
+ };
62
+ const yamlBodySchema = {
63
+ description: "YAML definition for create/update. Pass body.yaml (required). Optional body.git_details for remote/git-backed entities. " +
64
+ "Use harness_schema(resource_type='release_process'|'release_activity') for the full JSON Schema.",
65
+ fields: [
66
+ {
67
+ name: "yaml",
68
+ type: "yaml",
69
+ required: true,
70
+ description: "Full orchestration YAML string for the process or activity",
71
+ },
72
+ {
73
+ name: "git_details",
74
+ type: "object",
75
+ required: false,
76
+ description: "Git metadata when store is remote: store_type, repo, path, connector_ref, branch, commit_msg, is_new_branch, base_branch",
77
+ },
78
+ ],
79
+ };
80
+ const gitBranchGetParams = {
81
+ fields: [
82
+ {
83
+ name: "git_branch",
84
+ required: false,
85
+ description: "Optional git branch for remote/git-backed YAML. Pass via params on harness_get.",
86
+ },
87
+ ],
88
+ };
89
+ export const releaseManagementToolset = {
90
+ name: "release-management",
91
+ displayName: "Release Management",
92
+ description: "Harness Release Management (RMG) — orchestration definitions (process/activity YAML) and release execution " +
93
+ "monitoring (search releases, get release details, list phases/tasks/activity executions, get outputs). " +
94
+ "Definitions: list/get/create/update/delete. " +
95
+ "Execution: harness_list resource_type=release (org/project scoped), harness_get release by id/slug, " +
96
+ "harness_list release_execution_phase/release_execution_task/release_execution_activity (release_id required), " +
97
+ "harness_get release_input|release_execution_phase_input|release_execution_phase_output|release_execution_activity_output|release_execution_activity_input. " +
98
+ "YAML JSON Schema: harness_schema(resource_type='release_process'|'release_activity') or GET {rmgBase}/api/yamlSchema?entityType=PROCESS|ACTIVITY.",
99
+ optIn: false,
100
+ resources: [
101
+ {
102
+ resourceType: "release_process",
103
+ displayName: "Release Process",
104
+ description: "Orchestration process definition (RMG). A process is a multi-phase release plan composed of activities. " +
105
+ "Use harness_list to discover processes, harness_get for YAML, harness_create/update with body.yaml. " +
106
+ "Search aliases: orchestration process, RMG process, release plan.",
107
+ toolset: "release-management",
108
+ scope: "project",
109
+ supportedScopes: ["account", "org", "project"],
110
+ scopeOptional: true,
111
+ headerBasedScoping: true,
112
+ baseUrlOverride: "rmg",
113
+ identifierFields: ["process_id"],
114
+ searchAliases: ["orchestration process", "rmg process", "release plan", "process yaml"],
115
+ listFilterFields: [
116
+ { name: "search_term", description: "Filter processes by name or identifier substring" },
117
+ { name: "sort", description: "Sort expression (API sort query param)" },
118
+ ],
119
+ relatedResources: [
120
+ {
121
+ resourceType: "release_activity",
122
+ relationship: "composed_of",
123
+ description: "Processes reference activities as phase steps",
124
+ },
125
+ ],
126
+ operations: {
127
+ list: {
128
+ method: "GET",
129
+ path: `${RMG}/orchestration/process/summary`,
130
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
131
+ preflight: releaseFillScopeFromConfig,
132
+ queryParams: {
133
+ search_term: "searchTerm",
134
+ sort: "sort",
135
+ page: "page",
136
+ size: "size",
137
+ },
138
+ responseExtractor: springPageExtract,
139
+ description: "List orchestration processes (paginated summary metadata)",
140
+ },
141
+ get: {
142
+ method: "GET",
143
+ path: `${RMG}/orchestration/process/{identifier}`,
144
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
145
+ preflight: releaseFillScopeFromConfig,
146
+ pathParams: { process_id: "identifier" },
147
+ queryParams: { git_branch: "git_branch" },
148
+ paramsSchema: gitBranchGetParams,
149
+ responseExtractor: rmgYamlEntityExtract,
150
+ description: "Get orchestration process YAML and identifier by process_id",
151
+ },
152
+ create: {
153
+ method: "POST",
154
+ path: `${RMG}/orchestration/process`,
155
+ operationPolicy: { risk: "medium_write", retryPolicy: "do_not_retry" },
156
+ preflight: releaseFillScopeFromConfig,
157
+ bodyBuilder: yamlWriteBody,
158
+ bodySchema: yamlBodySchema,
159
+ responseExtractor: rmgYamlEntityExtract,
160
+ description: "Create an orchestration process from YAML",
161
+ },
162
+ update: {
163
+ method: "PUT",
164
+ path: `${RMG}/orchestration/process/{identifier}`,
165
+ operationPolicy: { risk: "medium_write", retryPolicy: "do_not_retry" },
166
+ preflight: releaseFillScopeFromConfig,
167
+ pathParams: { process_id: "identifier" },
168
+ bodyBuilder: yamlWriteBody,
169
+ bodySchema: yamlBodySchema,
170
+ responseExtractor: rmgYamlEntityExtract,
171
+ description: "Update an orchestration process YAML (full replacement)",
172
+ },
173
+ delete: {
174
+ method: "DELETE",
175
+ path: `${RMG}/orchestration/process/{identifier}`,
176
+ operationPolicy: { risk: "destructive", retryPolicy: "do_not_retry" },
177
+ preflight: releaseFillScopeFromConfig,
178
+ pathParams: { process_id: "identifier" },
179
+ responseExtractor: rmgYamlEntityDeleteExtract,
180
+ description: "Delete an orchestration process by process_id",
181
+ },
182
+ },
183
+ },
184
+ {
185
+ resourceType: "release_activity",
186
+ displayName: "Release Activity",
187
+ description: "Orchestration activity definition (RMG) — a reusable step (pipeline, subprocess, or manual) " +
188
+ "referenced by release processes. Use harness_list/get/create/update/delete with body.yaml. " +
189
+ "Use harness_schema(resource_type='release_activity') for the full JSON Schema. " +
190
+ "Search aliases: orchestration activity, RMG activity, release step.",
191
+ toolset: "release-management",
192
+ scope: "project",
193
+ supportedScopes: ["account", "org", "project"],
194
+ scopeOptional: true,
195
+ headerBasedScoping: true,
196
+ baseUrlOverride: "rmg",
197
+ identifierFields: ["activity_id"],
198
+ searchAliases: ["orchestration activity", "rmg activity", "release step", "activity yaml"],
199
+ listFilterFields: [
200
+ { name: "search_term", description: "Filter activities by name or identifier substring" },
201
+ { name: "sort", description: "Sort expression (API sort query param)" },
202
+ ],
203
+ relatedResources: [
204
+ {
205
+ resourceType: "release_process",
206
+ relationship: "used_by",
207
+ description: "Activities are composed into release processes",
208
+ },
209
+ ],
210
+ operations: {
211
+ list: {
212
+ method: "GET",
213
+ path: `${RMG}/orchestration/activity/summary`,
214
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
215
+ preflight: releaseFillScopeFromConfig,
216
+ queryParams: {
217
+ search_term: "searchTerm",
218
+ sort: "sort",
219
+ page: "page",
220
+ size: "size",
221
+ },
222
+ responseExtractor: springPageExtract,
223
+ description: "List orchestration activities (paginated summary metadata)",
224
+ },
225
+ get: {
226
+ method: "GET",
227
+ path: `${RMG}/orchestration/activity/{identifier}`,
228
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
229
+ preflight: releaseFillScopeFromConfig,
230
+ pathParams: { activity_id: "identifier" },
231
+ queryParams: { git_branch: "git_branch" },
232
+ paramsSchema: gitBranchGetParams,
233
+ responseExtractor: rmgYamlEntityExtract,
234
+ description: "Get orchestration activity YAML and identifier by activity_id",
235
+ },
236
+ create: {
237
+ method: "POST",
238
+ path: `${RMG}/orchestration/activity`,
239
+ operationPolicy: { risk: "medium_write", retryPolicy: "do_not_retry" },
240
+ preflight: releaseFillScopeFromConfig,
241
+ bodyBuilder: yamlWriteBody,
242
+ bodySchema: yamlBodySchema,
243
+ responseExtractor: rmgYamlEntityExtract,
244
+ description: "Create an orchestration activity from YAML",
245
+ },
246
+ update: {
247
+ method: "PUT",
248
+ path: `${RMG}/orchestration/activity/{identifier}`,
249
+ operationPolicy: { risk: "medium_write", retryPolicy: "do_not_retry" },
250
+ preflight: releaseFillScopeFromConfig,
251
+ pathParams: { activity_id: "identifier" },
252
+ bodyBuilder: yamlWriteBody,
253
+ bodySchema: yamlBodySchema,
254
+ responseExtractor: rmgYamlEntityExtract,
255
+ description: "Update an orchestration activity YAML (full replacement)",
256
+ },
257
+ delete: {
258
+ method: "DELETE",
259
+ path: `${RMG}/orchestration/activity/{identifier}`,
260
+ operationPolicy: { risk: "destructive", retryPolicy: "do_not_retry" },
261
+ preflight: releaseFillScopeFromConfig,
262
+ pathParams: { activity_id: "identifier" },
263
+ responseExtractor: rmgYamlEntityDeleteExtract,
264
+ description: "Delete an orchestration activity by activity_id",
265
+ },
266
+ },
267
+ },
268
+ {
269
+ resourceType: "release",
270
+ displayName: "Release Execution",
271
+ description: "A running or completed release instance (orchestration execution). harness_list returns releases in the " +
272
+ `current org/project whose expected start falls in the last ${RMG_DEFAULT_DAYS_BACK} days (override with days_back, ` +
273
+ "or start_ts/end_ts); narrow further with search_term and status. " +
274
+ "The list item `id` field or UI URL slug (e.g. identifier-1.0.0-abc) can be used as release_id. " +
275
+ "Search aliases: active release, release execution, RMG release.",
276
+ toolset: "release-management",
277
+ scope: "project",
278
+ supportedScopes: ["account", "org", "project"],
279
+ scopeOptional: true,
280
+ headerBasedScoping: true,
281
+ baseUrlOverride: "rmg",
282
+ identifierFields: ["release_id"],
283
+ searchAliases: ["active release", "release execution", "rmg release", "running release"],
284
+ listFilterFields: [
285
+ {
286
+ name: "search_term",
287
+ description: "Search by release name or identifier (substring match)",
288
+ },
289
+ {
290
+ name: "status",
291
+ description: "Filter by release status (applied client-side on the current page only; the endpoint has no status param). " +
292
+ "Empty results can still exist on other pages — keep paging with the same size.",
293
+ enum: [...RELEASE_STATUSES],
294
+ },
295
+ {
296
+ name: "days_back",
297
+ type: "number",
298
+ description: `Days of history to search (default ${RMG_DEFAULT_DAYS_BACK}, max ${RMG_MAX_DAYS_BACK}; includes ${RMG_DAYS_FORWARD} days forward). Ignored when start_ts/end_ts are set.`,
299
+ },
300
+ {
301
+ name: "start_ts",
302
+ type: "number",
303
+ description: "Window start as expected start timestamp (epoch ms) — overrides days_back",
304
+ },
305
+ {
306
+ name: "end_ts",
307
+ type: "number",
308
+ description: "Window end as expected start timestamp (epoch ms) — overrides days_back",
309
+ },
310
+ ],
311
+ relatedResources: [
312
+ {
313
+ resourceType: "release_execution_phase",
314
+ relationship: "has_phases",
315
+ description: "List execution phases via harness_list(resource_type=release_execution_phase, filters={ release_id })",
316
+ },
317
+ {
318
+ resourceType: "release_execution_task",
319
+ relationship: "has_tasks",
320
+ description: "List manual execution tasks via harness_list(resource_type=release_execution_task, filters={ release_id })",
321
+ },
322
+ {
323
+ resourceType: "release_execution_activity",
324
+ relationship: "has_activity_executions",
325
+ description: "List activity executions via harness_list(resource_type=release_execution_activity, filters={ release_id })",
326
+ },
327
+ {
328
+ resourceType: "release_execution_phase_input",
329
+ relationship: "has_phase_inputs",
330
+ description: "Get phase inputs via harness_get resource_type=release_execution_phase_input",
331
+ },
332
+ {
333
+ resourceType: "release_execution_phase_output",
334
+ relationship: "has_phase_outputs",
335
+ description: "Get phase outputs via harness_get resource_type=release_execution_phase_output",
336
+ },
337
+ {
338
+ resourceType: "release_execution_activity_output",
339
+ relationship: "has_activity_outputs",
340
+ description: "Get activity outputs via harness_get resource_type=release_execution_activity_output",
341
+ },
342
+ {
343
+ resourceType: "release_input",
344
+ relationship: "has_release_input",
345
+ description: "Get release input YAML via harness_get resource_type=release_input",
346
+ },
347
+ {
348
+ resourceType: "release_process",
349
+ relationship: "defined_by",
350
+ description: "Release processes define the orchestration plan executed as releases",
351
+ },
352
+ ],
353
+ operations: {
354
+ list: {
355
+ method: "POST",
356
+ path: `${RMG}/release/list`,
357
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
358
+ queryParams: {
359
+ page: "page",
360
+ size: "size",
361
+ search_term: "searchTerm",
362
+ start_ts: "expectedStartTs",
363
+ end_ts: "expectedEndTs",
364
+ },
365
+ staticQueryParams: { type: "Orchestration" },
366
+ skipScopeBodyInjection: true,
367
+ preflight: releaseListPreflight,
368
+ bodyBuilder: releaseListBody,
369
+ responseExtractor: releaseListExtract,
370
+ description: "List releases for the current scope within an expected-start time window, " +
371
+ "optionally filtered by search_term and status. Status matching is client-side on the current page; " +
372
+ "when status is set the response includes _hint and a page-local total.",
373
+ },
374
+ get: {
375
+ method: "GET",
376
+ path: `${RMG}/release/{releaseId}`,
377
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
378
+ pathParams: { release_id: "releaseId" },
379
+ responseExtractor: releaseGetExtract,
380
+ description: "Get release details by release_id (UUID from harness_list, or UI URL slug like identifier-1.0.0-abc)",
381
+ },
382
+ },
383
+ },
384
+ {
385
+ resourceType: "release_execution_phase",
386
+ displayName: "Release Execution Phase",
387
+ description: "An execution phase within a release (status, activity progress, timestamps). Requires release_id " +
388
+ "(from harness_list release `id`, UI URL slug, or filters.release_id). Paste an RMG phases URL to auto-fill.",
389
+ toolset: "release-management",
390
+ scope: "project",
391
+ supportedScopes: ["account", "org", "project"],
392
+ scopeOptional: true,
393
+ headerBasedScoping: true,
394
+ baseUrlOverride: "rmg",
395
+ identifierFields: [],
396
+ searchAliases: ["release phase", "execution phase", "rmg phase"],
397
+ listFilterFields: [
398
+ {
399
+ name: "release_id",
400
+ required: true,
401
+ description: "Release id or UI slug (from harness_list `id` or RMG URL path segment)",
402
+ },
403
+ {
404
+ name: "status",
405
+ description: "Optional filter by phase status",
406
+ },
407
+ ],
408
+ relatedResources: [
409
+ {
410
+ resourceType: "release",
411
+ relationship: "belongs_to",
412
+ description: "Parent release instance",
413
+ },
414
+ {
415
+ resourceType: "release_execution_phase_input",
416
+ relationship: "consumes_inputs",
417
+ description: "Get phase inputs via harness_get resource_type=release_execution_phase_input",
418
+ },
419
+ {
420
+ resourceType: "release_execution_phase_output",
421
+ relationship: "produces_outputs",
422
+ description: "Get phase outputs via harness_get resource_type=release_execution_phase_output",
423
+ },
424
+ ],
425
+ operations: {
426
+ list: {
427
+ method: "GET",
428
+ path: `${RMG}/orchestration/execution/{releaseId}/phases`,
429
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
430
+ pathParams: { release_id: "releaseId" },
431
+ queryParams: { status: "status" },
432
+ responseExtractor: releasePhaseListExtract,
433
+ description: "List execution phases for a release (requires release_id)",
434
+ },
435
+ },
436
+ },
437
+ {
438
+ resourceType: "release_execution_task",
439
+ displayName: "Release Execution Task",
440
+ description: "Manual execution tasks for a release (TODO, IN_PROGRESS, SUCCEEDED, FAILED, BLOCKED). Requires release_id " +
441
+ "(UUID from harness_list release). Use harness_list with filters.release_id; optional status and limit filters.",
442
+ toolset: "release-management",
443
+ scope: "project",
444
+ supportedScopes: ["account", "org", "project"],
445
+ scopeOptional: true,
446
+ headerBasedScoping: true,
447
+ baseUrlOverride: "rmg",
448
+ identifierFields: ["release_id"],
449
+ searchAliases: ["release task", "manual task", "execution task"],
450
+ listFilterFields: [
451
+ {
452
+ name: "release_id",
453
+ required: true,
454
+ description: "Release id or UI slug (from harness_list `id` or RMG URL path segment)",
455
+ },
456
+ {
457
+ name: "status",
458
+ description: "Filter tasks by status",
459
+ enum: [...TASK_STATUSES],
460
+ },
461
+ {
462
+ name: "limit",
463
+ type: "number",
464
+ description: `Max tasks to return (default ${RMG_DEFAULT_TASK_LIMIT}, max ${RMG_MAX_TASK_LIMIT}; harness_list size also accepted)`,
465
+ },
466
+ {
467
+ name: "cursor",
468
+ description: "Cursor for the next page (from previous response pagination.next_cursor)",
469
+ },
470
+ ],
471
+ relatedResources: [
472
+ {
473
+ resourceType: "release",
474
+ relationship: "belongs_to",
475
+ description: "Parent release instance",
476
+ },
477
+ ],
478
+ operations: {
479
+ list: {
480
+ method: "GET",
481
+ path: `${RMG}/release/{releaseId}/tasks`,
482
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
483
+ pathParams: { release_id: "releaseId" },
484
+ queryParams: {
485
+ limit: "limit",
486
+ status: "status",
487
+ cursor: "cursor",
488
+ },
489
+ preflight: async ({ input }) => {
490
+ normalizeReleaseTaskLimit(input);
491
+ },
492
+ responseExtractor: releaseTaskListExtract,
493
+ description: "List manual tasks for a release (requires release_id)",
494
+ },
495
+ },
496
+ },
497
+ {
498
+ resourceType: "release_execution_activity",
499
+ displayName: "Release Activity Execution",
500
+ description: "Runtime activity executions within a release (pipeline, subprocess, or manual steps). Requires release_id. " +
501
+ "Supports pagination and filters: status (comma-separated OR), activity_type, phase_identifier, time range. " +
502
+ "Default sort: start_ts desc. Search aliases: release activity run, execution activity.",
503
+ toolset: "release-management",
504
+ scope: "project",
505
+ supportedScopes: ["account", "org", "project"],
506
+ scopeOptional: true,
507
+ headerBasedScoping: true,
508
+ baseUrlOverride: "rmg",
509
+ identifierFields: ["release_id"],
510
+ searchAliases: ["release activity execution", "execution activity", "activity run"],
511
+ listFilterFields: [
512
+ {
513
+ name: "release_id",
514
+ required: true,
515
+ description: "Release id or UI slug (from harness_list `id` or RMG URL path segment)",
516
+ },
517
+ {
518
+ name: "status",
519
+ description: "Comma-separated statuses (OR logic)",
520
+ enum: [...ACTIVITY_EXECUTION_STATUSES],
521
+ },
522
+ {
523
+ name: "activity_type",
524
+ description: "Comma-separated activity types",
525
+ enum: [...ACTIVITY_EXECUTION_TYPES],
526
+ },
527
+ {
528
+ name: "phase_identifier",
529
+ description: "Filter to activities in a specific phase",
530
+ },
531
+ {
532
+ name: "sort_field",
533
+ description: "Sort field",
534
+ enum: [...ACTIVITY_SORT_FIELDS],
535
+ },
536
+ {
537
+ name: "sort_direction",
538
+ description: "Sort direction",
539
+ enum: ["asc", "desc"],
540
+ },
541
+ {
542
+ name: "start_ts",
543
+ type: "number",
544
+ description: "Include activities with start_ts >= this value (epoch ms)",
545
+ },
546
+ {
547
+ name: "end_ts",
548
+ type: "number",
549
+ description: "Include activities with start_ts <= this value (epoch ms)",
550
+ },
551
+ ],
552
+ relatedResources: [
553
+ {
554
+ resourceType: "release",
555
+ relationship: "belongs_to",
556
+ description: "Parent release instance",
557
+ },
558
+ {
559
+ resourceType: "release_execution_phase",
560
+ relationship: "in_phase",
561
+ description: "Filter by phase_identifier from release_execution_phase list",
562
+ },
563
+ {
564
+ resourceType: "release_execution_activity_output",
565
+ relationship: "produces_outputs",
566
+ description: "Get activity outputs via harness_get resource_type=release_execution_activity_output",
567
+ },
568
+ {
569
+ resourceType: "release_execution_activity_input",
570
+ relationship: "consumes_inputs",
571
+ description: "Get activity inputs via harness_get resource_type=release_execution_activity_input " +
572
+ "(requires activityExecutionId from list item, not YAML activity identifier)",
573
+ },
574
+ ],
575
+ operations: {
576
+ list: {
577
+ method: "GET",
578
+ path: `${RMG}/release/{releaseId}/execution/activities`,
579
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
580
+ pathParams: { release_id: "releaseId" },
581
+ queryParams: {
582
+ page: "page",
583
+ size: "size",
584
+ sort: "sort",
585
+ status: "status",
586
+ activity_type: "type",
587
+ phase_identifier: "phaseIdentifier",
588
+ start_ts: "startTs",
589
+ end_ts: "endTs",
590
+ },
591
+ preflight: async ({ input }) => {
592
+ normalizeReleaseActivityExecutionInput(input);
593
+ },
594
+ responseExtractor: releaseActivityExecutionListExtract,
595
+ description: "List paginated activity executions for a release. Default page=0, size=20, sort=start_ts desc.",
596
+ },
597
+ },
598
+ },
599
+ {
600
+ resourceType: "release_execution_phase_output",
601
+ displayName: "Release Execution Phase Output",
602
+ description: "Execution outputs (variables, artifacts, runtime data) for a release phase. " +
603
+ "Use harness_get with resource_id=release id/slug and params.phase_identifier.",
604
+ toolset: "release-management",
605
+ scope: "project",
606
+ supportedScopes: ["account", "org", "project"],
607
+ scopeOptional: true,
608
+ headerBasedScoping: true,
609
+ baseUrlOverride: "rmg",
610
+ identifierFields: ["release_id"],
611
+ searchAliases: ["release phase output", "phase output", "execution variable"],
612
+ relatedResources: [
613
+ {
614
+ resourceType: "release",
615
+ relationship: "belongs_to",
616
+ description: "Parent release instance",
617
+ },
618
+ {
619
+ resourceType: "release_execution_phase",
620
+ relationship: "from_phase",
621
+ description: "phase_identifier comes from release_execution_phase list",
622
+ },
623
+ ],
624
+ operations: {
625
+ get: {
626
+ method: "GET",
627
+ path: `${RMG}/orchestration/execution/release/{releaseId}/phase/{phaseIdentifier}/output`,
628
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
629
+ pathBuilder: (input) => releaseExecutionPhaseOutputPath(input),
630
+ queryParams: { phase_execution_id: "phaseExecutionId" },
631
+ paramsSchema: releaseExecutionPhaseOutputParamsSchema,
632
+ responseExtractor: releasePhaseOutputGetExtract,
633
+ description: "Get execution outputs for a phase. resource_id=release id/slug; params.phase_identifier required. " +
634
+ "Optional params.phase_execution_id disambiguates multiple phase execution records.",
635
+ },
636
+ },
637
+ },
638
+ {
639
+ resourceType: "release_execution_phase_input",
640
+ displayName: "Release Execution Phase Input",
641
+ description: "Runtime input values for a release phase execution. Use harness_get with resource_id=release id/slug " +
642
+ "and params.phase_identifier (YAML identifier from harness_list release_execution_phase). " +
643
+ "Optional params.phase_execution_id pins a specific phase execution row.",
644
+ toolset: "release-management",
645
+ scope: "project",
646
+ supportedScopes: ["account", "org", "project"],
647
+ scopeOptional: true,
648
+ headerBasedScoping: true,
649
+ baseUrlOverride: "rmg",
650
+ identifierFields: ["release_id"],
651
+ searchAliases: ["release phase input", "phase input", "execution input"],
652
+ relatedResources: [
653
+ {
654
+ resourceType: "release",
655
+ relationship: "belongs_to",
656
+ description: "Parent release instance",
657
+ },
658
+ {
659
+ resourceType: "release_execution_phase",
660
+ relationship: "from_phase",
661
+ description: "phase_identifier comes from release_execution_phase list",
662
+ },
663
+ ],
664
+ operations: {
665
+ get: {
666
+ method: "GET",
667
+ path: `${RMG}/orchestration/execution/release/{releaseId}/phase/{phaseIdentifier}/input`,
668
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
669
+ pathBuilder: (input) => releaseExecutionPhaseInputPath(input),
670
+ queryParams: { phase_execution_id: "phaseExecutionId" },
671
+ paramsSchema: releaseExecutionPhaseOutputParamsSchema,
672
+ responseExtractor: releasePhaseInputGetExtract,
673
+ description: "Get execution inputs for a phase. resource_id=release id/slug; params.phase_identifier required. " +
674
+ "Optional params.phase_execution_id disambiguates multiple phase execution records.",
675
+ },
676
+ },
677
+ },
678
+ {
679
+ resourceType: "release_execution_activity_output",
680
+ displayName: "Release Execution Activity Output",
681
+ description: "Execution outputs for a specific activity within a release phase. " +
682
+ "Use harness_get with resource_id=release id/slug, params.phase_identifier, and params.activity_identifier " +
683
+ "(YAML identifiers from release_execution_activity list).",
684
+ toolset: "release-management",
685
+ scope: "project",
686
+ supportedScopes: ["account", "org", "project"],
687
+ scopeOptional: true,
688
+ headerBasedScoping: true,
689
+ baseUrlOverride: "rmg",
690
+ identifierFields: ["release_id"],
691
+ searchAliases: ["release activity output", "activity output", "execution variable"],
692
+ relatedResources: [
693
+ {
694
+ resourceType: "release",
695
+ relationship: "belongs_to",
696
+ description: "Parent release instance",
697
+ },
698
+ {
699
+ resourceType: "release_execution_activity",
700
+ relationship: "from_activity",
701
+ description: "activity_identifier comes from release_execution_activity list",
702
+ },
703
+ ],
704
+ operations: {
705
+ get: {
706
+ method: "GET",
707
+ path: `${RMG}/orchestration/execution/release/{releaseId}/phase/{phaseIdentifier}/activity/{activityIdentifier}/output`,
708
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
709
+ pathBuilder: (input) => releaseExecutionActivityOutputPath(input),
710
+ queryParams: { activity_execution_id: "activityExecutionId" },
711
+ paramsSchema: releaseExecutionActivityOutputParamsSchema,
712
+ responseExtractor: releaseActivityOutputGetExtract,
713
+ description: "Get execution outputs for an activity. resource_id=release id/slug; " +
714
+ "params.phase_identifier and params.activity_identifier required. " +
715
+ "Optional params.activity_execution_id pins a specific runtime activity row.",
716
+ },
717
+ },
718
+ },
719
+ {
720
+ resourceType: "release_input",
721
+ displayName: "Release Execution Input",
722
+ description: "Latest release input YAML for a release (global inputs). For per-phase runtime inputs use " +
723
+ "harness_get resource_type=release_execution_phase_input with release id/slug and params.phase_identifier.",
724
+ toolset: "release-management",
725
+ scope: "project",
726
+ supportedScopes: ["account", "org", "project"],
727
+ scopeOptional: true,
728
+ headerBasedScoping: true,
729
+ baseUrlOverride: "rmg",
730
+ identifierFields: ["release_id"],
731
+ searchAliases: ["release input", "release input yaml", "execution input"],
732
+ relatedResources: [
733
+ {
734
+ resourceType: "release",
735
+ relationship: "belongs_to",
736
+ description: "Parent release instance",
737
+ },
738
+ ],
739
+ operations: {
740
+ get: {
741
+ method: "GET",
742
+ path: `${RMG}/orchestration/execution/releaseInput/{releaseId}`,
743
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
744
+ pathParams: { release_id: "releaseId" },
745
+ responseExtractor: releaseInputGetExtract,
746
+ description: "Get latest release input YAML. resource_id=release id/slug. Returns release_id, process_execution_id, yaml.",
747
+ },
748
+ },
749
+ },
750
+ {
751
+ resourceType: "release_execution_activity_input",
752
+ displayName: "Release Execution Activity Input",
753
+ description: "Runtime input values for an activity execution. Requires activityExecutionId (UUID) from " +
754
+ "harness_list release_execution_activity — not the YAML activity identifier.",
755
+ toolset: "release-management",
756
+ scope: "project",
757
+ supportedScopes: ["account", "org", "project"],
758
+ scopeOptional: true,
759
+ headerBasedScoping: true,
760
+ baseUrlOverride: "rmg",
761
+ identifierFields: ["activity_execution_id"],
762
+ searchAliases: ["release activity input", "activity input", "execution input"],
763
+ relatedResources: [
764
+ {
765
+ resourceType: "release_execution_activity",
766
+ relationship: "from_activity",
767
+ description: "activityExecutionId comes from release_execution_activity list item",
768
+ },
769
+ ],
770
+ operations: {
771
+ get: {
772
+ method: "GET",
773
+ path: `${RMG}/orchestration/execution/activity/{activityExecutionId}/input`,
774
+ operationPolicy: { risk: "read", retryPolicy: "safe" },
775
+ pathParams: { activity_execution_id: "activityExecutionId" },
776
+ responseExtractor: releaseActivityInputGetExtract,
777
+ description: "Get activity execution inputs. resource_id=activityExecutionId from list item field activityExecutionId.",
778
+ },
779
+ },
780
+ },
781
+ ],
782
+ };
783
+ //# sourceMappingURL=release-management.js.map