harness-mcp-v2 3.2.7 → 3.2.9

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 (151) hide show
  1. package/README.md +10 -26
  2. package/build/data/schemas/v0/pipeline.d.ts.map +1 -1
  3. package/build/data/schemas/v0/pipeline.js +360 -0
  4. package/build/data/schemas/v0/pipeline.js.map +1 -1
  5. package/build/data/schemas/v0/template.d.ts.map +1 -1
  6. package/build/data/schemas/v0/template.js +457 -0
  7. package/build/data/schemas/v0/template.js.map +1 -1
  8. package/build/data/schemas/v1/pipeline.d.ts.map +1 -1
  9. package/build/data/schemas/v1/pipeline.js +121 -0
  10. package/build/data/schemas/v1/pipeline.js.map +1 -1
  11. package/build/data/schemas/v1/template.d.ts.map +1 -1
  12. package/build/data/schemas/v1/template.js +121 -0
  13. package/build/data/schemas/v1/template.js.map +1 -1
  14. package/build/prompts/index.d.ts.map +1 -1
  15. package/build/prompts/index.js +4 -0
  16. package/build/prompts/index.js.map +1 -1
  17. package/build/prompts/summarize-pipeline.d.ts +3 -0
  18. package/build/prompts/summarize-pipeline.d.ts.map +1 -0
  19. package/build/prompts/summarize-pipeline.js +64 -0
  20. package/build/prompts/summarize-pipeline.js.map +1 -0
  21. package/build/registry/index.d.ts.map +1 -1
  22. package/build/registry/index.js +0 -2
  23. package/build/registry/index.js.map +1 -1
  24. package/build/registry/toolsets/ansible.d.ts.map +1 -1
  25. package/build/registry/toolsets/ansible.js +2 -3
  26. package/build/registry/toolsets/ansible.js.map +1 -1
  27. package/build/registry/toolsets/ccm.d.ts.map +1 -1
  28. package/build/registry/toolsets/ccm.js +3 -3
  29. package/build/registry/toolsets/ccm.js.map +1 -1
  30. package/build/registry/toolsets/iacm.d.ts.map +1 -1
  31. package/build/registry/toolsets/iacm.js +2 -3
  32. package/build/registry/toolsets/iacm.js.map +1 -1
  33. package/build/registry/toolsets/pipelines.d.ts.map +1 -1
  34. package/build/registry/toolsets/pipelines.js +10 -2
  35. package/build/registry/toolsets/pipelines.js.map +1 -1
  36. package/build/registry/toolsets/sto.d.ts.map +1 -1
  37. package/build/registry/toolsets/sto.js +4 -8
  38. package/build/registry/toolsets/sto.js.map +1 -1
  39. package/build/registry/types.d.ts +11 -3
  40. package/build/registry/types.d.ts.map +1 -1
  41. package/build/registry/types.js.map +1 -1
  42. package/build/tools/diagnose/pipeline.d.ts.map +1 -1
  43. package/build/tools/diagnose/pipeline.js +17 -0
  44. package/build/tools/diagnose/pipeline.js.map +1 -1
  45. package/build/tools/harness-diagnose.d.ts.map +1 -1
  46. package/build/tools/harness-diagnose.js +2 -57
  47. package/build/tools/harness-diagnose.js.map +1 -1
  48. package/build/tools/harness-execute.d.ts.map +1 -1
  49. package/build/tools/harness-execute.js +56 -4
  50. package/build/tools/harness-execute.js.map +1 -1
  51. package/build/tools/harness-get.d.ts.map +1 -1
  52. package/build/tools/harness-get.js +1 -0
  53. package/build/tools/harness-get.js.map +1 -1
  54. package/build/tools/harness-list.d.ts.map +1 -1
  55. package/build/tools/harness-list.js +1 -23
  56. package/build/tools/harness-list.js.map +1 -1
  57. package/build/tools/harness-status.d.ts.map +1 -1
  58. package/build/tools/harness-status.js +1 -16
  59. package/build/tools/harness-status.js.map +1 -1
  60. package/build/tools/output-schemas.d.ts +0 -1
  61. package/build/tools/output-schemas.d.ts.map +1 -1
  62. package/build/tools/output-schemas.js +0 -1
  63. package/build/tools/output-schemas.js.map +1 -1
  64. package/build/utils/materialize-input-sets.d.ts +12 -0
  65. package/build/utils/materialize-input-sets.d.ts.map +1 -1
  66. package/build/utils/materialize-input-sets.js +8 -2
  67. package/build/utils/materialize-input-sets.js.map +1 -1
  68. package/build/utils/poll-execution.d.ts.map +1 -1
  69. package/build/utils/poll-execution.js +3 -0
  70. package/build/utils/poll-execution.js.map +1 -1
  71. package/build/utils/response-formatter.d.ts +0 -10
  72. package/build/utils/response-formatter.d.ts.map +1 -1
  73. package/build/utils/response-formatter.js +0 -21
  74. package/build/utils/response-formatter.js.map +1 -1
  75. package/package.json +1 -2
  76. package/build/registry/toolsets/visualizations.d.ts +0 -8
  77. package/build/registry/toolsets/visualizations.d.ts.map +0 -1
  78. package/build/registry/toolsets/visualizations.js +0 -116
  79. package/build/registry/toolsets/visualizations.js.map +0 -1
  80. package/build/utils/svg/architecture.d.ts +0 -40
  81. package/build/utils/svg/architecture.d.ts.map +0 -1
  82. package/build/utils/svg/architecture.js +0 -354
  83. package/build/utils/svg/architecture.js.map +0 -1
  84. package/build/utils/svg/charts/bar.d.ts +0 -11
  85. package/build/utils/svg/charts/bar.d.ts.map +0 -1
  86. package/build/utils/svg/charts/bar.js +0 -93
  87. package/build/utils/svg/charts/bar.js.map +0 -1
  88. package/build/utils/svg/charts/index.d.ts +0 -8
  89. package/build/utils/svg/charts/index.d.ts.map +0 -1
  90. package/build/utils/svg/charts/index.js +0 -4
  91. package/build/utils/svg/charts/index.js.map +0 -1
  92. package/build/utils/svg/charts/pie.d.ts +0 -10
  93. package/build/utils/svg/charts/pie.d.ts.map +0 -1
  94. package/build/utils/svg/charts/pie.js +0 -105
  95. package/build/utils/svg/charts/pie.js.map +0 -1
  96. package/build/utils/svg/charts/scatter.d.ts +0 -11
  97. package/build/utils/svg/charts/scatter.d.ts.map +0 -1
  98. package/build/utils/svg/charts/scatter.js +0 -101
  99. package/build/utils/svg/charts/scatter.js.map +0 -1
  100. package/build/utils/svg/charts/types.d.ts +0 -39
  101. package/build/utils/svg/charts/types.d.ts.map +0 -1
  102. package/build/utils/svg/charts/types.js +0 -5
  103. package/build/utils/svg/charts/types.js.map +0 -1
  104. package/build/utils/svg/colors.d.ts +0 -25
  105. package/build/utils/svg/colors.d.ts.map +0 -1
  106. package/build/utils/svg/colors.js +0 -66
  107. package/build/utils/svg/colors.js.map +0 -1
  108. package/build/utils/svg/escape.d.ts +0 -6
  109. package/build/utils/svg/escape.d.ts.map +0 -1
  110. package/build/utils/svg/escape.js +0 -20
  111. package/build/utils/svg/escape.js.map +0 -1
  112. package/build/utils/svg/executions-timeseries.d.ts +0 -12
  113. package/build/utils/svg/executions-timeseries.d.ts.map +0 -1
  114. package/build/utils/svg/executions-timeseries.js +0 -99
  115. package/build/utils/svg/executions-timeseries.js.map +0 -1
  116. package/build/utils/svg/index.d.ts +0 -15
  117. package/build/utils/svg/index.d.ts.map +0 -1
  118. package/build/utils/svg/index.js +0 -12
  119. package/build/utils/svg/index.js.map +0 -1
  120. package/build/utils/svg/list-visuals.d.ts +0 -15
  121. package/build/utils/svg/list-visuals.d.ts.map +0 -1
  122. package/build/utils/svg/list-visuals.js +0 -141
  123. package/build/utils/svg/list-visuals.js.map +0 -1
  124. package/build/utils/svg/mappers.d.ts +0 -16
  125. package/build/utils/svg/mappers.d.ts.map +0 -1
  126. package/build/utils/svg/mappers.js +0 -93
  127. package/build/utils/svg/mappers.js.map +0 -1
  128. package/build/utils/svg/render-png-child.d.ts +0 -2
  129. package/build/utils/svg/render-png-child.d.ts.map +0 -1
  130. package/build/utils/svg/render-png-child.js +0 -30
  131. package/build/utils/svg/render-png-child.js.map +0 -1
  132. package/build/utils/svg/render-png.d.ts +0 -17
  133. package/build/utils/svg/render-png.d.ts.map +0 -1
  134. package/build/utils/svg/render-png.js +0 -112
  135. package/build/utils/svg/render-png.js.map +0 -1
  136. package/build/utils/svg/stage-flow.d.ts +0 -11
  137. package/build/utils/svg/stage-flow.d.ts.map +0 -1
  138. package/build/utils/svg/stage-flow.js +0 -93
  139. package/build/utils/svg/stage-flow.js.map +0 -1
  140. package/build/utils/svg/status-summary.d.ts +0 -10
  141. package/build/utils/svg/status-summary.d.ts.map +0 -1
  142. package/build/utils/svg/status-summary.js +0 -73
  143. package/build/utils/svg/status-summary.js.map +0 -1
  144. package/build/utils/svg/timeline.d.ts +0 -12
  145. package/build/utils/svg/timeline.d.ts.map +0 -1
  146. package/build/utils/svg/timeline.js +0 -132
  147. package/build/utils/svg/timeline.js.map +0 -1
  148. package/build/utils/svg/types.d.ts +0 -63
  149. package/build/utils/svg/types.d.ts.map +0 -1
  150. package/build/utils/svg/types.js +0 -6
  151. package/build/utils/svg/types.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Harness MCP Server 2.0
2
2
 
3
- An MCP (Model Context Protocol) server that gives AI agents full access to the Harness.io platform through 11 consolidated tools and 219 resource types.
3
+ An MCP (Model Context Protocol) server that gives AI agents full access to the Harness.io platform through 11 consolidated tools and 212 resource types.
4
4
 
5
5
  ## Why Use This MCP Server
6
6
 
@@ -8,10 +8,10 @@ Most MCP servers map one tool per API endpoint. For a platform as broad as Harne
8
8
 
9
9
  This server is built differently:
10
10
 
11
- - **11 tools, 219 resource types.** A registry-based dispatch system routes `harness_list`, `harness_get`, `harness_create`, etc. to any Harness resource — pipelines, services, environments, orgs, projects, feature flags, cost data, and more. The LLM picks from 11 tools instead of hundreds.
12
- - **Full platform coverage.** 38 default toolsets spanning CI/CD, GitOps, Feature Flags, Cloud Cost Management, Security Testing, Chaos Engineering, Database DevOps, Internal Developer Portal, Software Supply Chain, Infrastructure as Code Management, Governance, Service Overrides, Knowledge Graph, Visualizations, and more. Opt-in Ansible coverage is available when you need inventory and playbook data.
11
+ - **11 tools, 212 resource types.** A registry-based dispatch system routes `harness_list`, `harness_get`, `harness_create`, etc. to any Harness resource — pipelines, services, environments, orgs, projects, feature flags, cost data, and more. The LLM picks from 11 tools instead of hundreds.
12
+ - **Full platform coverage.** 37 default toolsets spanning CI/CD, GitOps, Feature Flags, Cloud Cost Management, Security Testing, Chaos Engineering, Database DevOps, Internal Developer Portal, Software Supply Chain, Infrastructure as Code Management, Governance, Service Overrides, Knowledge Graph, and more. Opt-in Ansible coverage is available when you need inventory and playbook data.
13
13
  - **Multi-project workflows out of the box.** Agents discover organizations and projects dynamically — no hardcoded env vars needed. Ask "show failed executions across all projects" and the agent can navigate the full account hierarchy.
14
- - **32 prompt templates.** Pre-built prompts for common workflows: build & deploy apps end-to-end, debug failed pipelines, review DORA metrics, triage vulnerabilities, optimize cloud costs, audit access control, plan feature flag rollouts, review pull requests, approve pending pipelines, and more.
14
+ - **33 prompt templates.** Pre-built prompts for common workflows: build & deploy apps end-to-end, debug failed pipelines, review DORA metrics, triage vulnerabilities, optimize cloud costs, audit access control, plan feature flag rollouts, review pull requests, approve pending pipelines, and more.
15
15
  - **Works everywhere.** Stdio transport for local clients (Claude Desktop, Cursor, Devin Desktop), HTTP transport for remote/shared deployments, Docker and Kubernetes ready.
16
16
  - **Zero-config start.** Just provide a Harness API key. Account ID is auto-extracted from PAT and SAT tokens, org/project defaults are optional, and toolset filtering lets you expose only what you need.
17
17
  - **Extensible by design.** Adding a new Harness resource means adding a declarative data file — no new tool registration, no schema changes, no prompt updates.
@@ -1197,7 +1197,7 @@ Harness pipelines can be stored in three ways:
1197
1197
 
1198
1198
  ## Resource Types
1199
1199
 
1200
- 219 resource types organized across 38 toolsets. Each resource type supports a subset of CRUD operations and optional execute actions.
1200
+ 212 resource types organized across 37 toolsets. Each resource type supports a subset of CRUD operations and optional execute actions.
1201
1201
 
1202
1202
  ### Platform
1203
1203
 
@@ -1664,22 +1664,6 @@ Security exemption execute workflow:
1664
1664
  | `setting` | x | | | | | |
1665
1665
 
1666
1666
 
1667
- ### Visualizations
1668
-
1669
- Inline PNG chart visualizations rendered from Harness data. These are metadata-only resource types with no API operations — they exist so the LLM can discover available chart types via `harness_describe`. Use `include_visual=true` on supported tools (`harness_diagnose`, `harness_list`, `harness_status`) to generate charts.
1670
-
1671
-
1672
- | Resource Type | Description | How to Generate |
1673
- | ------------------------- | --------------------------------------------------- | ----------------------------------------------------- |
1674
- | `visual_timeline` | Gantt chart of pipeline stage execution over time | `harness_diagnose` with `visual_type: "timeline"` |
1675
- | `visual_stage_flow` | DAG flowchart of pipeline stages and steps | `harness_diagnose` with `visual_type: "flow"` |
1676
- | `visual_health_dashboard` | Project health overview with status indicators | `harness_status` with `include_visual: true` |
1677
- | `visual_pie_chart` | Donut chart of execution status breakdown | `harness_list` with `visual_type: "pie"` |
1678
- | `visual_bar_chart` | Bar chart of execution counts by pipeline | `harness_list` with `visual_type: "bar"` |
1679
- | `visual_timeseries` | Daily execution trend over 30 days | `harness_list` with `visual_type: "timeseries"` |
1680
- | `visual_architecture` | Pipeline YAML architecture diagram (stages → steps) | `harness_diagnose` with `visual_type: "architecture"` |
1681
-
1682
-
1683
1667
  ## MCP Prompts
1684
1668
 
1685
1669
  ### DevOps
@@ -1689,6 +1673,7 @@ Inline PNG chart visualizations rendered from Harness data. These are metadata-o
1689
1673
  | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
1690
1674
  | `build-deploy-app` | End-to-end CI/CD workflow: scan a git repo, generate CI pipeline (build & push Docker image), discover or generate K8s manifests, create CD pipeline, and deploy — with auto-retry on CI failures (up to 5 attempts) and CD failures (up to 3 attempts with user permission). On exhausted retries, provides Harness UI deep links to all created resources for manual investigation. | `repoUrl` (required), `imageName` (required), `projectId` (optional), `namespace` (optional) |
1691
1675
  | `debug-pipeline-failure` | Analyze a failed execution: accepts an execution ID, pipeline ID, or Harness URL. Gets stage/step breakdown, failure details, delegate info, and failed step logs via `harness_diagnose`, then provides root cause analysis and suggested fixes. Automatically follows chained pipeline failures. | `executionId` (optional), `projectId` (optional) |
1676
+ | `summarize-pipeline` | Summarize an entire pipeline execution — all steps, statuses, durations, and logs (not just failures). Uses `harness_diagnose` with `include_logs: true` for the full stage/step tree and selectively fetches additional logs for slowest and key output steps. Provides execution overview, step table, and optimization observations. | `executionId` (optional), `projectId` (optional) |
1692
1677
  | `create-pipeline` | Generate a new pipeline YAML from natural language requirements, reviewing existing resources for context | `description` (required), `projectId` (optional) |
1693
1678
  | `create-agent` | Interactively build a Harness AI agent — check existing agents, gather requirements, generate agent YAML spec using the agent-pipeline schema, confirm with user, then create or update via `harness_create`/`harness_update` | `agent_name` (required), `task_description` (required), `org_id` (optional), `project_id` (optional) |
1694
1679
  | `onboard-service` | Walk through onboarding a new service with environments and a deployment pipeline | `serviceName` (required), `projectId` (optional) |
@@ -1755,7 +1740,7 @@ Inline PNG chart visualizations rendered from Harness data. These are metadata-o
1755
1740
 
1756
1741
  ## Toolset Filtering
1757
1742
 
1758
- By default, 38 of 39 toolsets are enabled. One toolset is opt-in and excluded from the defaults:
1743
+ By default, 37 of 38 toolsets are enabled. One toolset is opt-in and excluded from the defaults:
1759
1744
 
1760
1745
  - **`ansible`** — Harness Ansible (inventories, playbooks, hosts, activity). Opt-in because it is project-scoped and adds concepts many users do not need.
1761
1746
 
@@ -1829,7 +1814,6 @@ Available toolset names:
1829
1814
  | `freeze` | freeze_window, global_freeze |
1830
1815
  | `overrides` | service_override |
1831
1816
  | `settings` | setting |
1832
- | `visualizations` | visual_timeline, visual_stage_flow, visual_health_dashboard, visual_pie_chart, visual_bar_chart, visual_timeseries, visual_architecture |
1833
1817
  | `knowledge-graph` | kg_queryable_type_summary, kg_grammar, hql_query |
1834
1818
  | `semantic-layer` | kg_type, kg_related_type |
1835
1819
  | `ai-evals` | eval_dataset, eval_dataset_item, evaluation, eval_run, eval_run_item, eval_run_by_eval, eval_metric, eval_metric_set, eval_metric_set_entry, eval_suite, eval_suite_evaluation, eval_suite_run, eval_target, eval_annotation, eval_analytics, eval_git_settings, eval_registry_item, eval_git_registration, online_eval |
@@ -1852,8 +1836,8 @@ Available toolset names:
1852
1836
  |
1853
1837
  +--------v---------+
1854
1838
  | Registry | <-- Declarative resource definitions
1855
- | 38 Toolsets | (data files, not code)
1856
- | 219 Resource Types|
1839
+ | 37 Toolsets | (data files, not code)
1840
+ | 212 Resource Types|
1857
1841
  +--------+---------+
1858
1842
  |
1859
1843
  +--------v---------+
@@ -2155,7 +2139,7 @@ The Harness MCP server pairs well with **[Harness Skills](https://github.com/har
2155
2139
  | Pipeline CI shorthand (`branch`, `tag`, `pr_number`, `commit_sha`) did not apply | `inputs.build` was already provided, so shorthand expansion was intentionally skipped | Remove `inputs.build` to use shorthand expansion, or keep full explicit `build` structure |
2156
2140
  | Pipeline run loaded the wrong YAML revision | The pipeline definition is stored in Git and the run did not specify the desired pipeline branch | Pass `params.pipeline_branch` on the `run` action; this maps to Harness `pipelineBranchName` |
2157
2141
  | `wait: true` returned `_wait.error` | The pipeline trigger succeeded, but server-side polling failed | Recheck the `execution_id` with `harness_get(resource_type="execution", ...)` before deciding whether to rerun |
2158
- | `wait: true` returned `execution_timed_out: true` | The execution did not reach a terminal status before `wait_timeout_seconds` | Use the returned `execution_id` to recheck status or diagnose the still-running execution |
2142
+ | `wait: true` returned `execution_timed_out: true` | The execution did not reach a terminal status before `wait_timeout_seconds` | Use the returned `execution_id` to recheck status; wait for a terminal status before running `harness_diagnose` |
2159
2143
  | Execution logs are empty or blob downloads return 403 | Harness-hosted log blob URLs require the configured Harness client/auth path, especially for internal or self-managed hosts | Keep `HARNESS_BASE_URL` pointed at the target Harness host and use `harness_get(resource_type="execution_log", ...)` or `harness_diagnose(..., include_logs=true)` rather than bypassing the MCP client |
2160
2144
  | `Operation declined by user` / `Operation cancelled by user` | User declined or cancelled the elicitation confirmation dialog — authoritative | Verify operation details with the user; `confirm: true` does **not** bypass an explicit decline. The user must accept the prompt |
2161
2145
  | `Operation blocked: the client could not surface a usable confirmation prompt` | Client lacks elicitation support, `elicitInput` failed, or returned a degenerate accept | Retry with `confirm: true` for non-interactive automation, or use a client that supports elicitation |
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/data/schemas/v0/pipeline.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAi2rH/B,CAAC;AACF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/data/schemas/v0/pipeline.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAyssH/B,CAAC;AACF,eAAe,MAAM,CAAC"}
@@ -466,6 +466,9 @@ const schema = {
466
466
  "type": "string",
467
467
  "pattern": "^[a-zA-Z_][0-9a-zA-Z_]{0,127}$"
468
468
  },
469
+ "identities": {
470
+ "$ref": "#/definitions/pipeline/common/IdentitiesConfig"
471
+ },
469
472
  "name": {
470
473
  "type": "string",
471
474
  "pattern": "^[a-zA-Z_0-9-.][-0-9a-zA-Z_\\s.]{0,127}$"
@@ -83444,6 +83447,18 @@ const schema = {
83444
83447
  }
83445
83448
  ]
83446
83449
  },
83450
+ "skipPipelineVariables": {
83451
+ "oneOf": [
83452
+ {
83453
+ "type": "boolean"
83454
+ },
83455
+ {
83456
+ "type": "string",
83457
+ "pattern": "(<\\+.+>.*)",
83458
+ "minLength": 1
83459
+ }
83460
+ ]
83461
+ },
83447
83462
  "waitForMerge": {
83448
83463
  "oneOf": [
83449
83464
  {
@@ -91702,6 +91717,278 @@ const schema = {
91702
91717
  }
91703
91718
  }
91704
91719
  },
91720
+ "DeployAwsAgentCoreRevisionStepNode": {
91721
+ "title": "DeployAwsAgentCoreRevisionStepNode",
91722
+ "type": "object",
91723
+ "required": [
91724
+ "identifier",
91725
+ "name",
91726
+ "type"
91727
+ ],
91728
+ "properties": {
91729
+ "description": {
91730
+ "type": "string",
91731
+ "desc": "This is the description for DeployAwsAgentCoreRevisionStepNode"
91732
+ },
91733
+ "enforce": {
91734
+ "$ref": "#/definitions/pipeline/common/PolicyConfig"
91735
+ },
91736
+ "failureStrategies": {
91737
+ "oneOf": [
91738
+ {
91739
+ "type": "array",
91740
+ "items": {
91741
+ "$ref": "#/definitions/pipeline/common/FailureStrategyConfig"
91742
+ }
91743
+ },
91744
+ {
91745
+ "type": "string",
91746
+ "pattern": "^<\\+input>$",
91747
+ "minLength": 1
91748
+ }
91749
+ ]
91750
+ },
91751
+ "identifier": {
91752
+ "type": "string",
91753
+ "pattern": "^[a-zA-Z_][0-9a-zA-Z_]{0,127}$"
91754
+ },
91755
+ "name": {
91756
+ "type": "string",
91757
+ "pattern": "^[a-zA-Z_0-9-.][-0-9a-zA-Z_\\s.]{0,127}$"
91758
+ },
91759
+ "strategy": {
91760
+ "oneOf": [
91761
+ {
91762
+ "$ref": "#/definitions/pipeline/common/StrategyConfig"
91763
+ },
91764
+ {
91765
+ "type": "string",
91766
+ "pattern": "^<\\+input>$",
91767
+ "minLength": 1
91768
+ }
91769
+ ]
91770
+ },
91771
+ "timeout": {
91772
+ "type": "string",
91773
+ "pattern": "^(([1-9])+\\d+[s])|(((([1-9])+\\d*[mhwd])+([\\s]?\\d+[smhwd])*)|(.*<\\+.*>(?!.*\\.executionInput\\(\\)).*)|(^$))$"
91774
+ },
91775
+ "type": {
91776
+ "type": "string",
91777
+ "enum": [
91778
+ "DeployAwsAgentCoreRevision"
91779
+ ]
91780
+ },
91781
+ "when": {
91782
+ "oneOf": [
91783
+ {
91784
+ "$ref": "#/definitions/pipeline/common/StepWhenCondition"
91785
+ },
91786
+ {
91787
+ "type": "string",
91788
+ "pattern": "^<\\+input>$",
91789
+ "minLength": 1
91790
+ }
91791
+ ]
91792
+ }
91793
+ },
91794
+ "$schema": "http://json-schema.org/draft-07/schema#",
91795
+ "allOf": [
91796
+ {
91797
+ "if": {
91798
+ "properties": {
91799
+ "type": {
91800
+ "const": "DeployAwsAgentCoreRevision"
91801
+ }
91802
+ }
91803
+ },
91804
+ "then": {
91805
+ "properties": {
91806
+ "spec": {
91807
+ "$ref": "#/definitions/pipeline/steps/cd/DeployAwsAgentCoreRevisionStepInfo"
91808
+ }
91809
+ }
91810
+ }
91811
+ }
91812
+ ]
91813
+ },
91814
+ "DeployAwsAgentCoreRevisionStepInfo": {
91815
+ "title": "DeployAwsAgentCoreRevisionStepInfo",
91816
+ "allOf": [
91817
+ {
91818
+ "$ref": "#/definitions/pipeline/common/StepSpecType"
91819
+ },
91820
+ {
91821
+ "type": "object",
91822
+ "properties": {
91823
+ "connectorRef": {
91824
+ "type": "string"
91825
+ },
91826
+ "delegateSelectors": {
91827
+ "oneOf": [
91828
+ {
91829
+ "type": "array",
91830
+ "items": {
91831
+ "type": "string"
91832
+ }
91833
+ },
91834
+ {
91835
+ "type": "string",
91836
+ "pattern": "(<\\+.+>.*)",
91837
+ "minLength": 1
91838
+ }
91839
+ ]
91840
+ },
91841
+ "image": {
91842
+ "type": "string"
91843
+ },
91844
+ "imagePullPolicy": {
91845
+ "oneOf": [
91846
+ {
91847
+ "type": "string",
91848
+ "enum": [
91849
+ "Always",
91850
+ "Never",
91851
+ "IfNotPresent"
91852
+ ]
91853
+ },
91854
+ {
91855
+ "type": "string",
91856
+ "pattern": "(<\\+.+>.*)",
91857
+ "minLength": 1
91858
+ }
91859
+ ]
91860
+ },
91861
+ "privileged": {
91862
+ "oneOf": [
91863
+ {
91864
+ "type": "boolean"
91865
+ },
91866
+ {
91867
+ "type": "string",
91868
+ "pattern": "^<\\+input>((\\.)((executionInput\\(\\))|(allowedValues|selectOneFrom|selectManyFrom|default|regex)\\(.+?\\)))*$",
91869
+ "minLength": 1
91870
+ }
91871
+ ]
91872
+ },
91873
+ "resources": {
91874
+ "$ref": "#/definitions/pipeline/common/ContainerResource"
91875
+ },
91876
+ "runAsUser": {
91877
+ "oneOf": [
91878
+ {
91879
+ "type": "integer",
91880
+ "format": "int32"
91881
+ },
91882
+ {
91883
+ "type": "string"
91884
+ }
91885
+ ]
91886
+ },
91887
+ "preExecution": {
91888
+ "type": "string"
91889
+ },
91890
+ "waitReady": {
91891
+ "oneOf": [
91892
+ {
91893
+ "type": "boolean"
91894
+ },
91895
+ {
91896
+ "type": "string",
91897
+ "pattern": "(<\\+.+>.*)",
91898
+ "minLength": 1
91899
+ }
91900
+ ]
91901
+ }
91902
+ }
91903
+ }
91904
+ ],
91905
+ "$schema": "http://json-schema.org/draft-07/schema#",
91906
+ "type": "object",
91907
+ "properties": {
91908
+ "connectorRef": {
91909
+ "type": "string"
91910
+ },
91911
+ "delegateSelectors": {
91912
+ "oneOf": [
91913
+ {
91914
+ "type": "array",
91915
+ "items": {
91916
+ "type": "string"
91917
+ }
91918
+ },
91919
+ {
91920
+ "type": "string",
91921
+ "pattern": "(<\\+.+>.*)",
91922
+ "minLength": 1
91923
+ }
91924
+ ]
91925
+ },
91926
+ "image": {
91927
+ "type": "string"
91928
+ },
91929
+ "imagePullPolicy": {
91930
+ "oneOf": [
91931
+ {
91932
+ "type": "string",
91933
+ "enum": [
91934
+ "Always",
91935
+ "Never",
91936
+ "IfNotPresent"
91937
+ ]
91938
+ },
91939
+ {
91940
+ "type": "string",
91941
+ "pattern": "(<\\+.+>.*)",
91942
+ "minLength": 1
91943
+ }
91944
+ ]
91945
+ },
91946
+ "privileged": {
91947
+ "oneOf": [
91948
+ {
91949
+ "type": "boolean"
91950
+ },
91951
+ {
91952
+ "type": "string",
91953
+ "pattern": "^<\\+input>((\\.)((executionInput\\(\\))|(allowedValues|selectOneFrom|selectManyFrom|default|regex)\\(.+?\\)))*$",
91954
+ "minLength": 1
91955
+ }
91956
+ ]
91957
+ },
91958
+ "resources": {
91959
+ "$ref": "#/definitions/pipeline/common/ContainerResource"
91960
+ },
91961
+ "runAsUser": {
91962
+ "oneOf": [
91963
+ {
91964
+ "type": "integer",
91965
+ "format": "int32"
91966
+ },
91967
+ {
91968
+ "type": "string"
91969
+ }
91970
+ ]
91971
+ },
91972
+ "preExecution": {
91973
+ "type": "string"
91974
+ },
91975
+ "waitReady": {
91976
+ "oneOf": [
91977
+ {
91978
+ "type": "boolean"
91979
+ },
91980
+ {
91981
+ "type": "string",
91982
+ "pattern": "(<\\+.+>.*)",
91983
+ "minLength": 1
91984
+ }
91985
+ ]
91986
+ },
91987
+ "description": {
91988
+ "desc": "This is the description for DeployAwsAgentCoreRevisionStepInfo"
91989
+ }
91990
+ }
91991
+ },
91705
91992
  "GoogleCloudRunTrafficShiftStepNode": {
91706
91993
  "title": "GoogleCloudRunTrafficShiftStepNode",
91707
91994
  "type": "object",
@@ -103776,6 +104063,73 @@ const schema = {
103776
104063
  },
103777
104064
  "$schema": "http://json-schema.org/draft-07/schema#"
103778
104065
  },
104066
+ "IdentitiesConfig": {
104067
+ "title": "IdentitiesConfig",
104068
+ "type": "object",
104069
+ "description": "Map of named identities. Each key is a user-defined identity name that doubles as the\nenvironment variable injected into the step, and each value is an IdentitySpec.\nReserved names (HARNESS_*, PATH, HOME, AWS_*/GOOGLE_*/AZURE_*) are not allowed, and a\nstep may declare at most 10 identities.\n",
104070
+ "maxProperties": 10,
104071
+ "propertyNames": {
104072
+ "pattern": "^(?!HARNESS_)(?!AWS_)(?!GOOGLE_)(?!AZURE_)(?!PATH$)(?!HOME$)[A-Za-z_][A-Za-z0-9_]*$"
104073
+ },
104074
+ "additionalProperties": {
104075
+ "$ref": "#/definitions/pipeline/common/IdentitySpec"
104076
+ },
104077
+ "$schema": "http://json-schema.org/draft-07/schema#"
104078
+ },
104079
+ "IdentitySpec": {
104080
+ "title": "IdentitySpec",
104081
+ "type": "object",
104082
+ "description": "Definition of a single named identity that produces an independent OIDC ID_TOKEN.\nThe identity name (the map key under identities) doubles as the environment variable\nthe step receives at runtime.\n",
104083
+ "properties": {
104084
+ "audience": {
104085
+ "description": "Audience (aud) the minted ID_TOKEN is issued for.",
104086
+ "type": "string",
104087
+ "minLength": 1
104088
+ },
104089
+ "subjectTemplate": {
104090
+ "description": "Template for the sub claim. Supports literals and allowlisted Harness expressions\n(e.g. <+account.identifier>, <+pipeline.identifier>, <+step.identifier>).\n",
104091
+ "type": "string"
104092
+ },
104093
+ "customClaims": {
104094
+ "description": "Additional custom claims stamped on this identity's token.",
104095
+ "type": "object",
104096
+ "additionalProperties": {
104097
+ "type": "string"
104098
+ }
104099
+ },
104100
+ "scope": {
104101
+ "description": "Visibility scope of the identity. Step-level entries default to STEP.",
104102
+ "type": "string",
104103
+ "enum": [
104104
+ "STEP",
104105
+ "STAGE",
104106
+ "PIPELINE"
104107
+ ]
104108
+ },
104109
+ "disabled": {
104110
+ "description": "When true, suppresses this identity (not generated, not injected).",
104111
+ "oneOf": [
104112
+ {
104113
+ "type": "boolean"
104114
+ },
104115
+ {
104116
+ "type": "string",
104117
+ "pattern": "^<\\+input>$",
104118
+ "minLength": 1
104119
+ }
104120
+ ]
104121
+ },
104122
+ "tokenMode": {
104123
+ "description": "Token exchange mode for this identity.",
104124
+ "type": "string",
104125
+ "enum": [
104126
+ "STANDARD",
104127
+ "CLIENT_ASSERTION"
104128
+ ]
104129
+ }
104130
+ },
104131
+ "$schema": "http://json-schema.org/draft-07/schema#"
104132
+ },
103779
104133
  "Timeout": {
103780
104134
  "title": "Timeout",
103781
104135
  "type": "string",
@@ -106913,6 +107267,9 @@ const schema = {
106913
107267
  {
106914
107268
  "$ref": "#/definitions/pipeline/steps/cd/RollbackGoogleAgentRuntimeRevisionStepNode"
106915
107269
  },
107270
+ {
107271
+ "$ref": "#/definitions/pipeline/steps/cd/DeployAwsAgentCoreRevisionStepNode"
107272
+ },
106916
107273
  {
106917
107274
  "$ref": "#/definitions/pipeline/steps/cd/GoogleCloudRunTrafficShiftStepNode"
106918
107275
  },
@@ -118963,6 +119320,9 @@ const schema = {
118963
119320
  {
118964
119321
  "$ref": "#/definitions/pipeline/steps/cd/RollbackGoogleAgentRuntimeRevisionStepNode"
118965
119322
  },
119323
+ {
119324
+ "$ref": "#/definitions/pipeline/steps/cd/DeployAwsAgentCoreRevisionStepNode"
119325
+ },
118966
119326
  {
118967
119327
  "$ref": "#/definitions/pipeline/steps/cd/GoogleCloudRunTrafficShiftStepNode"
118968
119328
  },