harness-mcp-v2 3.0.2 → 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +89 -25
  2. package/build/config.d.ts +18 -6
  3. package/build/config.d.ts.map +1 -1
  4. package/build/config.js +22 -5
  5. package/build/config.js.map +1 -1
  6. package/build/data/schemas/v0/pipeline.d.ts.map +1 -1
  7. package/build/data/schemas/v0/pipeline.js +159 -66
  8. package/build/data/schemas/v0/pipeline.js.map +1 -1
  9. package/build/data/schemas/v0/template.d.ts.map +1 -1
  10. package/build/data/schemas/v0/template.js +159 -66
  11. package/build/data/schemas/v0/template.js.map +1 -1
  12. package/build/index.js +30 -11
  13. package/build/index.js.map +1 -1
  14. package/build/prompts/bulk-exemption-create.d.ts +3 -0
  15. package/build/prompts/bulk-exemption-create.d.ts.map +1 -0
  16. package/build/prompts/bulk-exemption-create.js +132 -0
  17. package/build/prompts/bulk-exemption-create.js.map +1 -0
  18. package/build/prompts/create-eval-suite.js +1 -1
  19. package/build/prompts/index.d.ts.map +1 -1
  20. package/build/prompts/index.js +2 -0
  21. package/build/prompts/index.js.map +1 -1
  22. package/build/prompts/run-evaluation.d.ts.map +1 -1
  23. package/build/prompts/run-evaluation.js +3 -1
  24. package/build/prompts/run-evaluation.js.map +1 -1
  25. package/build/registry/toolsets/ai-evals.d.ts.map +1 -1
  26. package/build/registry/toolsets/ai-evals.js +131 -43
  27. package/build/registry/toolsets/ai-evals.js.map +1 -1
  28. package/build/registry/toolsets/repositories.d.ts.map +1 -1
  29. package/build/registry/toolsets/repositories.js +23 -1
  30. package/build/registry/toolsets/repositories.js.map +1 -1
  31. package/build/registry/toolsets/sto.d.ts.map +1 -1
  32. package/build/registry/toolsets/sto.js +55 -0
  33. package/build/registry/toolsets/sto.js.map +1 -1
  34. package/build/registry/toolsets/templates.d.ts.map +1 -1
  35. package/build/registry/toolsets/templates.js +11 -77
  36. package/build/registry/toolsets/templates.js.map +1 -1
  37. package/build/tools/harness-create.d.ts.map +1 -1
  38. package/build/tools/harness-create.js +2 -0
  39. package/build/tools/harness-create.js.map +1 -1
  40. package/build/tools/harness-delete.d.ts.map +1 -1
  41. package/build/tools/harness-delete.js +2 -0
  42. package/build/tools/harness-delete.js.map +1 -1
  43. package/build/tools/harness-describe.d.ts.map +1 -1
  44. package/build/tools/harness-describe.js +4 -0
  45. package/build/tools/harness-describe.js.map +1 -1
  46. package/build/tools/harness-diagnose.d.ts.map +1 -1
  47. package/build/tools/harness-diagnose.js +3 -0
  48. package/build/tools/harness-diagnose.js.map +1 -1
  49. package/build/tools/harness-execute.d.ts.map +1 -1
  50. package/build/tools/harness-execute.js +134 -14
  51. package/build/tools/harness-execute.js.map +1 -1
  52. package/build/tools/harness-get.d.ts.map +1 -1
  53. package/build/tools/harness-get.js +3 -0
  54. package/build/tools/harness-get.js.map +1 -1
  55. package/build/tools/harness-list.d.ts.map +1 -1
  56. package/build/tools/harness-list.js +3 -0
  57. package/build/tools/harness-list.js.map +1 -1
  58. package/build/tools/harness-schema.d.ts.map +1 -1
  59. package/build/tools/harness-schema.js +5 -1
  60. package/build/tools/harness-schema.js.map +1 -1
  61. package/build/tools/harness-search.d.ts.map +1 -1
  62. package/build/tools/harness-search.js +3 -0
  63. package/build/tools/harness-search.js.map +1 -1
  64. package/build/tools/harness-status.d.ts.map +1 -1
  65. package/build/tools/harness-status.js +3 -0
  66. package/build/tools/harness-status.js.map +1 -1
  67. package/build/tools/harness-update.d.ts.map +1 -1
  68. package/build/tools/harness-update.js +2 -0
  69. package/build/tools/harness-update.js.map +1 -1
  70. package/build/tools/output-schemas.d.ts +50 -0
  71. package/build/tools/output-schemas.d.ts.map +1 -0
  72. package/build/tools/output-schemas.js +59 -0
  73. package/build/tools/output-schemas.js.map +1 -0
  74. package/build/utils/http-auth.d.ts +10 -0
  75. package/build/utils/http-auth.d.ts.map +1 -0
  76. package/build/utils/http-auth.js +51 -0
  77. package/build/utils/http-auth.js.map +1 -0
  78. package/build/utils/log-resolver.d.ts.map +1 -1
  79. package/build/utils/log-resolver.js +41 -11
  80. package/build/utils/log-resolver.js.map +1 -1
  81. package/build/utils/poll-execution.d.ts +76 -0
  82. package/build/utils/poll-execution.d.ts.map +1 -0
  83. package/build/utils/poll-execution.js +187 -0
  84. package/build/utils/poll-execution.js.map +1 -0
  85. package/build/utils/response-formatter.d.ts +1 -0
  86. package/build/utils/response-formatter.d.ts.map +1 -1
  87. package/build/utils/response-formatter.js +8 -0
  88. package/build/utils/response-formatter.js.map +1 -1
  89. package/build/utils/session-headers.d.ts +11 -0
  90. package/build/utils/session-headers.d.ts.map +1 -1
  91. package/build/utils/session-headers.js +65 -2
  92. package/build/utils/session-headers.js.map +1 -1
  93. package/package.json +1 -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 169 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 187 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, 169 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.** 31 toolsets spanning CI/CD, GitOps, Feature Flags, Cloud Cost Management, Security Testing, Chaos Engineering, Database DevOps, Internal Developer Portal, Software Supply Chain, Governance, Service Overrides, Visualizations, and more. Not just pipelines — the entire Harness platform.
11
+ - **11 tools, 187 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.** 32 toolsets spanning CI/CD, GitOps, Feature Flags, Cloud Cost Management, Security Testing, Chaos Engineering, Database DevOps, Internal Developer Portal, Software Supply Chain, Governance, Service Overrides, Visualizations, and more. Not just pipelines — the entire Harness platform.
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
- - **30 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
+ - **31 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, Windsurf), 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 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.
@@ -125,6 +125,8 @@ The HTTP transport runs in **session-based mode**. A new MCP session is created
125
125
 
126
126
  Operational constraints in HTTP mode:
127
127
 
128
+ - Set `HARNESS_MCP_AUTH_TOKEN` for any shared or remotely reachable deployment. When set, every `POST`, `GET`, and `DELETE` request to `/mcp` must include `Authorization: Bearer <token>`.
129
+ - Non-loopback binds require `HARNESS_MCP_AUTH_TOKEN` by default. To run unauthenticated on a non-loopback interface anyway, set `HARNESS_MCP_ALLOW_UNAUTHENTICATED_HTTP=true` explicitly.
128
130
  - `POST /mcp` without `mcp-session-id` must be an `initialize` request.
129
131
  - `POST /mcp`, `GET /mcp`, and `DELETE /mcp` for existing sessions require the `mcp-session-id` header.
130
132
  - `GET /mcp` is used for SSE notifications (progress updates and elicitation prompts).
@@ -132,27 +134,48 @@ Operational constraints in HTTP mode:
132
134
  - `GET /health` is the only non-MCP endpoint.
133
135
  - Request body size is capped by `HARNESS_MAX_BODY_SIZE_MB` (default `10` MB).
134
136
  - Set `x-harness-pipeline-version: 0` or `1` on the `initialize` request to select V0 or V1 pipeline resources for that HTTP session.
137
+ - Set `x-harness-auto-approve-risk: none|low_write|medium_write|high_write|all` on the `initialize` request to choose a stricter per-session auto-approval threshold. The server caps this value at the deployment-level `HARNESS_AUTO_APPROVE_RISK`, so a session can reduce but not expand the configured approval ceiling.
138
+
139
+ #### Multi-User Mode
140
+
141
+ Set `HARNESS_MCP_MODE=multi-user` for shared HTTP deployments where each client authenticates as a different Harness user. In this mode:
142
+
143
+ - `HARNESS_API_KEY` must **not** be set in the server config — the server holds no Harness credentials.
144
+ - Each session must provide `x-harness-api-key` and `x-harness-account-id` headers on the `initialize` request. Sessions without these headers are rejected with a 401.
145
+ - Sessions may also provide `x-harness-org` and `x-harness-project` headers to set default scope for that session.
146
+ - The Harness API key flows through to every Harness API call for that session, so the audit trail in Harness reflects the real user.
147
+ - `HARNESS_MCP_AUTH_TOKEN` is independent and can still be used as an additional transport-layer gate.
135
148
 
136
149
  ```bash
137
150
  # Health check
138
151
  curl http://localhost:3000/health
139
152
 
140
153
  # MCP initialize request (capture mcp-session-id response header)
154
+ # In multi-user mode, x-harness-api-key and x-harness-account-id are required on initialize.
141
155
  curl -i -X POST http://localhost:3000/mcp \
142
156
  -H "Content-Type: application/json" \
157
+ -H "Accept: application/json, text/event-stream" \
158
+ -H "Authorization: Bearer $HARNESS_MCP_AUTH_TOKEN" \
159
+ -H "x-harness-api-key: $HARNESS_API_KEY" \
160
+ -H "x-harness-account-id: $HARNESS_ACCOUNT_ID" \
143
161
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
144
162
 
145
163
  # Subsequent MCP request (use returned session ID)
146
164
  curl -X POST http://localhost:3000/mcp \
147
165
  -H "Content-Type: application/json" \
166
+ -H "Accept: application/json, text/event-stream" \
167
+ -H "Authorization: Bearer $HARNESS_MCP_AUTH_TOKEN" \
148
168
  -H "mcp-session-id: <session-id>" \
149
169
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
150
170
 
151
171
  # Terminate session
152
172
  curl -X DELETE http://localhost:3000/mcp \
173
+ -H "Authorization: Bearer $HARNESS_MCP_AUTH_TOKEN" \
153
174
  -H "mcp-session-id: <session-id>"
154
175
  ```
155
176
 
177
+ `HARNESS_MCP_ALLOWED_HOSTS` controls Host-header validation for DNS-rebinding protection, and CORS limits browser origins. Neither is authentication; use `HARNESS_MCP_AUTH_TOKEN` or an authenticated gateway/reverse proxy for access control.
178
+
156
179
  ### Client Configuration
157
180
 
158
181
  > **Note:** `HARNESS_ORG` and `HARNESS_PROJECT` are optional. They set the org ID and project ID used when not specified per tool call. Agents can discover orgs and projects dynamically using `harness_list(resource_type="organization")` and `harness_list(resource_type="project")`. The deprecated names `HARNESS_DEFAULT_ORG_ID` and `HARNESS_DEFAULT_PROJECT_ID` are still accepted for backward compatibility.
@@ -494,8 +517,9 @@ The server automatically loads environment variables from a `.env` file in the p
494
517
 
495
518
  | Variable | Required | Default | Description |
496
519
  | --------------------------- | -------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
497
- | `HARNESS_API_KEY` | Yes | -- | Harness personal access token or service account token |
498
- | `HARNESS_ACCOUNT_ID` | No | *(from PAT)* | Harness account identifier. Auto-extracted from PAT tokens; only needed for non-PAT API keys |
520
+ | `HARNESS_MCP_MODE` | No | `single-user` | Deployment mode: `single-user` (API key in config, used for all sessions) or `multi-user` (HTTP only, per-session credentials via `x-harness-api-key` and `x-harness-account-id` headers) |
521
+ | `HARNESS_API_KEY` | Yes* | -- | Harness personal access token or service account token. Required in `single-user` mode. Must NOT be set in `multi-user` mode |
522
+ | `HARNESS_ACCOUNT_ID` | No | *(from PAT)* | Harness account identifier. Auto-extracted from PAT tokens in single-user mode; sessions provide their own via `x-harness-account-id` in multi-user mode |
499
523
  | `HARNESS_BASE_URL` | No | `https://app.harness.io` | Harness API/UI base URL for local stdio or self-hosted HTTP deployments. Set this to environments such as `https://harness0.harness.io` when running the server yourself. It does not affect the managed `https://mcp.harness.io/mcp` hosted endpoint |
500
524
  | `HARNESS_ORG` | No | -- | Organization ID. Used when `org_id` is not specified per tool call. If omitted, `org_id` must be provided explicitly. Agents can also discover orgs dynamically via `harness_list(resource_type="organization")` |
501
525
  | `HARNESS_PROJECT` | No | -- | Project ID. Used when `project_id` is not specified per tool call. Agents can also discover projects dynamically via `harness_list(resource_type="project")` |
@@ -504,13 +528,15 @@ The server automatically loads environment variables from a `.env` file in the p
504
528
  | `HARNESS_MAX_BODY_SIZE_MB` | No | `10` | Max HTTP request body size in MB for `http` transport |
505
529
  | `HARNESS_RATE_LIMIT_RPS` | No | `10` | Client-side request throttle (requests per second) to Harness APIs |
506
530
  | `LOG_LEVEL` | No | `info` | Log verbosity: `debug`, `info`, `warn`, `error` |
507
- | `HARNESS_TOOLSETS` | No | *(defaults)* | Comma-separated toolset list. Empty loads default toolsets and excludes opt-in toolsets such as `ai-evals`. Supports `+name` to add opt-in toolsets and `-name` to remove defaults (see [Toolset Filtering](#toolset-filtering)) |
531
+ | `HARNESS_TOOLSETS` | No | *(all)* | Comma-separated toolset list. Empty loads all toolsets. Supports `+name` to explicitly include and `-name` to remove toolsets (see [Toolset Filtering](#toolset-filtering)) |
508
532
  | `HARNESS_READ_ONLY` | No | `false` | Block all mutating operations (create, update, delete, execute). Only list and get are allowed. Useful for shared/demo environments |
509
533
  | `HARNESS_AUTO_APPROVE_RISK` | No | `none` | Risk-based auto-approve threshold for autonomous workflows. Operations at or below this risk proceed without confirmation. Values: `none`, `low_write`, `medium_write`, `high_write`, `all`. See [Elicitation](#elicitation) |
510
534
  | `HARNESS_SKIP_ELICITATION` | No | `false` | **Deprecated** — use `HARNESS_AUTO_APPROVE_RISK=all` instead. Kept for backward compatibility |
511
535
  | `HARNESS_ALLOW_HTTP` | No | `false` | Allow non-HTTPS `HARNESS_BASE_URL`. By default, the server enforces HTTPS for security. Set to `true` only for local development against a non-TLS Harness instance |
512
536
  | `HARNESS_PIPELINE_VERSION` | No | `0` | **(Alpha)** Pipeline YAML version. `0` loads the `pipeline` resource type and excludes `pipeline_v1`; `1` loads `pipeline_v1` and excludes `pipeline`. HTTP sessions can override this at initialize time with `x-harness-pipeline-version: 0` or `1` |
513
537
  | `HARNESS_MCP_ALLOWED_HOSTS` | No | -- | Comma-separated hostnames allowed by HTTP transport Host-header validation. `mcp.harness.io` is allowed by default for localhost binds; add proxy/custom domains here |
538
+ | `HARNESS_MCP_AUTH_TOKEN` | No | -- | Bearer token required on `/mcp` HTTP routes when set. Required by default when HTTP transport binds to a non-loopback host |
539
+ | `HARNESS_MCP_ALLOW_UNAUTHENTICATED_HTTP` | No | `false` | Explicitly allow unauthenticated HTTP transport on non-loopback binds. Use only behind another authenticated control |
514
540
  | `HARNESS_MCP_LOG_FILE` | No | `~/.claude/harness-mcp.log` | File used for stdio disconnect/crash diagnostics when stderr may no longer be available |
515
541
 
516
542
 
@@ -732,6 +758,17 @@ Use this sequence to reduce execution-time input errors:
732
758
  - **Constraint:** shorthand expansion is skipped when `inputs.build` is already present (explicit `build` wins).
733
759
  3. **Execute the run**
734
760
  - `harness_execute(resource_type="pipeline", action="run", resource_id="<pipeline_id>", ...)`
761
+ - For Git-backed pipelines whose YAML should be loaded from a non-default branch, pass `params.pipeline_branch` (sent to Harness as `pipelineBranchName`):
762
+
763
+ ```json
764
+ {
765
+ "resource_type": "pipeline",
766
+ "action": "run",
767
+ "resource_id": "deploy_app",
768
+ "params": { "pipeline_branch": "feature/new-stage" },
769
+ "inputs": { "branch": "main" }
770
+ }
771
+ ```
735
772
  4. **Optional: combine both**
736
773
  - Use `input_set_ids` for the base shape and `inputs` for simple overrides.
737
774
 
@@ -954,7 +991,7 @@ Harness pipelines can be stored in three ways:
954
991
 
955
992
  ## Resource Types
956
993
 
957
- 169 resource types organized across 31 toolsets. Each resource type supports a subset of CRUD operations and optional execute actions.
994
+ 187 resource types organized across 32 toolsets. Each resource type supports a subset of CRUD operations and optional execute actions.
958
995
 
959
996
  ### Platform
960
997
 
@@ -1064,12 +1101,14 @@ Only one pipeline YAML resource type is loaded at startup. By default `HARNESS_P
1064
1101
  | -------------- | ---- | --- | ------ | ------ | ------ | -------------------- |
1065
1102
  | `repository` | x | x | x | x | | |
1066
1103
  | `branch` | x | x | x | | x | |
1067
- | `commit` | x | x | | | | `diff`, `diff_stats` |
1104
+ | `commit` | x | x | x | | | `diff`, `diff_stats` |
1068
1105
  | `file_content` | | x | | | | `blame` |
1069
1106
  | `tag` | x | | x | | x | |
1070
1107
  | `repo_rule` | x | x | | | | |
1071
1108
  | `space_rule` | x | x | | | | |
1072
1109
 
1110
+ `commit` creation commits one or more file actions directly through the Harness Code API without cloning. Pass `body.title`, `body.branch`, and `body.actions`; each action is `CREATE`, `UPDATE`, `DELETE`, or `MOVE`, and `UPDATE` requires the current blob SHA.
1111
+
1073
1112
 
1074
1113
  ### Artifact Registries
1075
1114
 
@@ -1089,6 +1128,8 @@ Only one pipeline YAML resource type is loaded at startup. By default `HARNESS_P
1089
1128
  | ------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1090
1129
  | `template` | x | x | x | x | x | |
1091
1130
 
1131
+ Template operations use the Harness Template service paths (`/template/api/templates...`). Create and update require the full template YAML string in `body.template_yaml` or `body.yaml`; `version_label` targets a specific version for update/delete, while deleting without `version_label` deletes all versions.
1132
+
1092
1133
 
1093
1134
  ### Dashboards
1094
1135
 
@@ -1130,12 +1171,14 @@ Only one pipeline YAML resource type is loaded at startup. By default `HARNESS_P
1130
1171
 
1131
1172
  | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1132
1173
  | -------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1133
- | `pull_request` | x | x | x | x | | `merge` |
1174
+ | `pull_request` | x | x | x | x | | `close`, `merge` |
1134
1175
  | `pr_reviewer` | x | | x | | | `submit_review` |
1135
1176
  | `pr_comment` | x | | x | | | |
1136
1177
  | `pr_check` | x | | | | | |
1137
1178
  | `pr_activity` | x | | | | | |
1138
1179
 
1180
+ Use `harness_execute(resource_type="pull_request", action="close", ...)` for an explicit close operation. `harness_update` also accepts `body.state` (`open` or `closed`) and routes state changes to the dedicated Harness Code PR state endpoint; send title/description edits in a separate update call.
1181
+
1139
1182
 
1140
1183
  ### Feature Flags
1141
1184
 
@@ -1258,7 +1301,9 @@ SEI resources are consolidated for token efficiency. Use `metric` or `aspect` pa
1258
1301
  | ----------------------- | ---- | --- | ------ | ------ | ------ | ------------------------------ |
1259
1302
  | `security_issue` | x | | | | | |
1260
1303
  | `security_issue_filter` | x | | | | | |
1261
- | `security_exemption` | x | | | | | `approve`, `reject`, `promote` |
1304
+ | `security_exemption` | x | | x | | | `approve`, `reject`, `promote` |
1305
+
1306
+ `security_exemption` create is a `high_write` operation. The server derives `requester_id` from the authenticated PAT, sets `exemptFutureOccurrences=true`, and defaults `duration_days` to 30 when not provided. For listing exemptions, pass a small explicit page size (for example `filters: { "status": "Pending", "size": 5 }`) and follow the `_nextPageHint` returned in each response.
1262
1307
 
1263
1308
 
1264
1309
  ### Access Control
@@ -1370,6 +1415,7 @@ Inline PNG chart visualizations rendered from Harness data. These are metadata-o
1370
1415
  | `sbom-compliance-check` | Audit SBOM and compliance posture for artifacts — license risks, policy violations, component vulnerabilities | `artifactId` (optional), `projectId` (optional) |
1371
1416
  | `supply-chain-audit` | End-to-end software supply chain security audit — provenance, chain of custody, policy compliance | `projectId` (optional) |
1372
1417
  | `security-exemption-review` | Review pending security exemptions and make batch approval or rejection decisions | `projectId` (optional) |
1418
+ | `bulk-exemption-create` | Create justified security exemptions for multiple STO issues with explicit scope and duration guidance | `projectId` (required), `exemption_type` (required), `reason` (required), issue filters (optional) |
1373
1419
  | `access-control-audit` | Audit user permissions, over-privileged accounts, and role assignments to enforce least-privilege | `projectId` (optional), `orgId` (optional) |
1374
1420
 
1375
1421
 
@@ -1400,14 +1446,14 @@ Inline PNG chart visualizations rendered from Harness data. These are metadata-o
1400
1446
 
1401
1447
  ## Toolset Filtering
1402
1448
 
1403
- By default, 31 of 32 toolsets are enabled. One toolset (`ai-evals`) is opt-in — excluded by default to avoid polluting the resource list for users who don't need it.
1449
+ By default, all 32 toolsets are enabled.
1404
1450
 
1405
- ### Enabling opt-in toolsets
1451
+ ### Adding toolsets with `+` prefix
1406
1452
 
1407
- Use the `+` prefix to add opt-in toolsets to the defaults:
1453
+ Use the `+` prefix to explicitly include toolsets alongside all defaults (useful if a toolset becomes opt-in in the future):
1408
1454
 
1409
1455
  ```bash
1410
- # Enable ai-evals alongside all defaults
1456
+ # Explicitly include ai-evals alongside all defaults
1411
1457
  HARNESS_TOOLSETS=+ai-evals
1412
1458
  ```
1413
1459
 
@@ -1472,7 +1518,7 @@ Available toolset names:
1472
1518
  | `overrides` | service_override |
1473
1519
  | `settings` | setting |
1474
1520
  | `visualizations` | visual_timeline, visual_stage_flow, visual_health_dashboard, visual_pie_chart, visual_bar_chart, visual_timeseries, visual_architecture |
1475
- | `ai-evals` **(opt-in)** | 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_model, eval_annotation, eval_analytics, eval_git_settings, eval_registry_item |
1521
+ | `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_model, eval_annotation, eval_analytics, eval_git_settings, eval_registry_item |
1476
1522
 
1477
1523
 
1478
1524
  ## Architecture
@@ -1491,7 +1537,7 @@ Available toolset names:
1491
1537
  +--------v---------+
1492
1538
  | Registry | <-- Declarative resource definitions
1493
1539
  | 32 Toolsets | (data files, not code)
1494
- | 169 Resource Types|
1540
+ | 187 Resource Types|
1495
1541
  +--------+---------+
1496
1542
  |
1497
1543
  +--------v---------+
@@ -1694,18 +1740,16 @@ Elicitation behavior varies by operation risk when client support is missing:
1694
1740
 
1695
1741
  If elicitation fails at runtime, operations at `medium_write` or above are blocked.
1696
1742
 
1697
- ### Auto-Approve for Autonomous Workflows
1743
+ ### Autonomous Mode
1698
1744
 
1699
- For CI/CD bots, headless agents, or batch automation, use `HARNESS_AUTO_APPROVE_RISK` to auto-approve operations up to a given risk level:
1745
+ **Autonomous mode** means the server proceeds with all operations including writes and destructive actions without prompting for confirmation. Enable it by setting:
1700
1746
 
1701
1747
  ```bash
1702
- # Auto-approve everything (equivalent to old HARNESS_SKIP_ELICITATION=true)
1703
1748
  HARNESS_AUTO_APPROVE_RISK=all
1704
-
1705
- # Auto-approve only low-risk writes, still prompt for medium+
1706
- HARNESS_AUTO_APPROVE_RISK=low_write
1707
1749
  ```
1708
1750
 
1751
+ This is the deployment-level ceiling: once set, individual sessions cannot escalate beyond it (though they can choose a stricter threshold per-session via the `x-harness-auto-approve-risk` header).
1752
+
1709
1753
  Or in your MCP client config:
1710
1754
 
1711
1755
  ```json
@@ -1723,9 +1767,27 @@ Or in your MCP client config:
1723
1767
  }
1724
1768
  ```
1725
1769
 
1726
- > **Migration note:** `HARNESS_SKIP_ELICITATION=true` is still supported and maps to `HARNESS_AUTO_APPROVE_RISK=all`. A deprecation warning is logged to stderr. If both are set, `HARNESS_AUTO_APPROVE_RISK` takes precedence.
1770
+ **Partial autonomy:** You can also auto-approve only up to a specific risk level while still prompting for higher-risk operations:
1771
+
1772
+ ```bash
1773
+ # Auto-approve reads and low-risk writes; prompt for medium_write, high_write, destructive
1774
+ HARNESS_AUTO_APPROVE_RISK=low_write
1727
1775
 
1728
- When set to `all`, **all** write and delete operations proceed without user confirmation — including destructive operations like `harness_delete`. Use with caution and consider pairing with `HARNESS_TOOLSETS` to restrict which resource types are available.
1776
+ # Auto-approve up to high-risk writes; only prompt for destructive operations
1777
+ HARNESS_AUTO_APPROVE_RISK=high_write
1778
+ ```
1779
+
1780
+ | Value | What's auto-approved |
1781
+ |---|---|
1782
+ | `none` (default) | Nothing — no auto-approval threshold |
1783
+ | `low_write` | Reads + low-risk writes |
1784
+ | `medium_write` | Reads + low + medium-risk writes |
1785
+ | `high_write` | Reads + low + medium + high-risk writes |
1786
+ | `all` | Everything, including destructive operations |
1787
+
1788
+ > **Autonomous mode warning:** `HARNESS_AUTO_APPROVE_RISK=all` skips confirmation for **all** operations including `harness_delete`. Use with caution and consider pairing with `HARNESS_TOOLSETS` to restrict which resource types are available.
1789
+
1790
+ > **Migration note:** `HARNESS_SKIP_ELICITATION=true` is still supported and maps to `HARNESS_AUTO_APPROVE_RISK=all`. A deprecation warning is logged to stderr. If both are set, `HARNESS_AUTO_APPROVE_RISK` takes precedence.
1729
1791
 
1730
1792
  ## Safety
1731
1793
 
@@ -1761,6 +1823,8 @@ The Harness MCP server pairs well with **[Harness Skills](https://github.com/har
1761
1823
  | `Read-only mode is enabled ... operations are not allowed` | `HARNESS_READ_ONLY=true` blocks create/update/delete/execute | Set `HARNESS_READ_ONLY=false` if write operations are intended |
1762
1824
  | Pipeline run fails pre-flight with unresolved required inputs | Provided `inputs` did not cover required runtime placeholders | Fetch `runtime_input_template`, supply missing simple keys, or use `input_set_ids` for structural inputs |
1763
1825
  | 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 |
1826
+ | 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` |
1827
+ | 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 |
1764
1828
  | `Operation declined by user` | User declined the elicitation confirmation dialog | The user chose not to proceed — verify the operation details and retry if intended |
1765
1829
  | `body.template_yaml (or body.yaml) is required` for template create/update | Template APIs expect full YAML payload | Provide full `template_yaml` string in `body`; for deletes, pass `version_label` to delete one version (omit to delete all versions) |
1766
1830
  | `HARNESS_BASE_URL must use HTTPS` on startup | `HARNESS_BASE_URL` is set to an HTTP URL | Use HTTPS, or set `HARNESS_ALLOW_HTTP=true` for local development |
package/build/config.d.ts CHANGED
@@ -6,7 +6,11 @@ import * as z from "zod/v4";
6
6
  */
7
7
  export declare function extractAccountIdFromToken(apiKey: string): string | undefined;
8
8
  export declare const ConfigSchema: z.ZodPipe<z.ZodObject<{
9
- HARNESS_API_KEY: z.ZodString;
9
+ HARNESS_MCP_MODE: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDefault<z.ZodEnum<{
10
+ "single-user": "single-user";
11
+ "multi-user": "multi-user";
12
+ }>>>;
13
+ HARNESS_API_KEY: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
10
14
  HARNESS_ACCOUNT_ID: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
11
15
  HARNESS_BASE_URL: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDefault<z.ZodString>>;
12
16
  HARNESS_ORG: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
@@ -16,10 +20,10 @@ export declare const ConfigSchema: z.ZodPipe<z.ZodObject<{
16
20
  HARNESS_API_TIMEOUT_MS: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
17
21
  HARNESS_MAX_RETRIES: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
18
22
  LOG_LEVEL: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDefault<z.ZodEnum<{
19
- error: "error";
20
23
  debug: "debug";
21
24
  info: "info";
22
25
  warn: "warn";
26
+ error: "error";
23
27
  }>>>;
24
28
  HARNESS_TOOLSETS: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
25
29
  HARNESS_MAX_BODY_SIZE_MB: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
@@ -35,6 +39,8 @@ export declare const ConfigSchema: z.ZodPipe<z.ZodObject<{
35
39
  }>>>;
36
40
  HARNESS_ALLOW_HTTP: z.ZodDefault<z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString, z.ZodUndefined]>, z.ZodTransform<boolean, string | boolean | undefined>>>;
37
41
  HARNESS_MCP_ALLOWED_HOSTS: z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>, z.ZodTransform<string | undefined, string | undefined>>;
42
+ HARNESS_MCP_AUTH_TOKEN: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
43
+ HARNESS_MCP_ALLOW_UNAUTHENTICATED_HTTP: z.ZodDefault<z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString, z.ZodUndefined]>, z.ZodTransform<boolean, string | boolean | undefined>>>;
38
44
  HARNESS_FME_BASE_URL: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDefault<z.ZodString>>;
39
45
  HARNESS_LOG_UNSAFE_BODIES: z.ZodDefault<z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString, z.ZodUndefined]>, z.ZodTransform<boolean, string | boolean | undefined>>>;
40
46
  HARNESS_PIPELINE_VERSION: z.ZodOptional<z.ZodEnum<{
@@ -47,46 +53,51 @@ export declare const ConfigSchema: z.ZodPipe<z.ZodObject<{
47
53
  HARNESS_AUDIT_WEBHOOK_BATCH_SIZE: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDefault<z.ZodCoercedNumber<unknown>>>;
48
54
  HARNESS_AUDIT_WEBHOOK_FLUSH_MS: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDefault<z.ZodCoercedNumber<unknown>>>;
49
55
  }, z.core.$strip>, z.ZodTransform<{
56
+ HARNESS_API_KEY: string;
50
57
  HARNESS_ACCOUNT_ID: string;
51
58
  HARNESS_ORG: string | undefined;
52
59
  HARNESS_PROJECT: string | undefined;
53
60
  HARNESS_AUTO_APPROVE_RISK: "none" | "low_write" | "medium_write" | "high_write" | "all";
54
- HARNESS_API_KEY: string;
61
+ HARNESS_MCP_MODE: "single-user" | "multi-user";
55
62
  HARNESS_BASE_URL: string;
56
63
  HARNESS_API_TIMEOUT_MS: number;
57
64
  HARNESS_MAX_RETRIES: number;
58
- LOG_LEVEL: "error" | "debug" | "info" | "warn";
65
+ LOG_LEVEL: "debug" | "info" | "warn" | "error";
59
66
  HARNESS_MAX_BODY_SIZE_MB: number;
60
67
  HARNESS_RATE_LIMIT_RPS: number;
61
68
  HARNESS_READ_ONLY: boolean;
62
69
  HARNESS_SKIP_ELICITATION: boolean;
63
70
  HARNESS_ALLOW_HTTP: boolean;
64
71
  HARNESS_MCP_ALLOWED_HOSTS: string | undefined;
72
+ HARNESS_MCP_ALLOW_UNAUTHENTICATED_HTTP: boolean;
65
73
  HARNESS_FME_BASE_URL: string;
66
74
  HARNESS_LOG_UNSAFE_BODIES: boolean;
67
75
  HARNESS_AUDIT_WEBHOOK_BATCH_SIZE: number;
68
76
  HARNESS_AUDIT_WEBHOOK_FLUSH_MS: number;
69
77
  HARNESS_TOOLSETS?: string | undefined;
78
+ HARNESS_MCP_AUTH_TOKEN?: string | undefined;
70
79
  HARNESS_PIPELINE_VERSION?: "1" | "0" | undefined;
71
80
  HARNESS_AUDIT_FILE?: string | undefined;
72
81
  HARNESS_AUDIT_WEBHOOK_URL?: string | undefined;
73
82
  HARNESS_AUDIT_WEBHOOK_TOKEN?: string | undefined;
74
83
  }, {
75
- HARNESS_API_KEY: string;
84
+ HARNESS_MCP_MODE: "single-user" | "multi-user";
76
85
  HARNESS_BASE_URL: string;
77
86
  HARNESS_API_TIMEOUT_MS: number;
78
87
  HARNESS_MAX_RETRIES: number;
79
- LOG_LEVEL: "error" | "debug" | "info" | "warn";
88
+ LOG_LEVEL: "debug" | "info" | "warn" | "error";
80
89
  HARNESS_MAX_BODY_SIZE_MB: number;
81
90
  HARNESS_RATE_LIMIT_RPS: number;
82
91
  HARNESS_READ_ONLY: boolean;
83
92
  HARNESS_SKIP_ELICITATION: boolean;
84
93
  HARNESS_ALLOW_HTTP: boolean;
85
94
  HARNESS_MCP_ALLOWED_HOSTS: string | undefined;
95
+ HARNESS_MCP_ALLOW_UNAUTHENTICATED_HTTP: boolean;
86
96
  HARNESS_FME_BASE_URL: string;
87
97
  HARNESS_LOG_UNSAFE_BODIES: boolean;
88
98
  HARNESS_AUDIT_WEBHOOK_BATCH_SIZE: number;
89
99
  HARNESS_AUDIT_WEBHOOK_FLUSH_MS: number;
100
+ HARNESS_API_KEY?: string | undefined;
90
101
  HARNESS_ACCOUNT_ID?: string | undefined;
91
102
  HARNESS_ORG?: string | undefined;
92
103
  HARNESS_PROJECT?: string | undefined;
@@ -94,6 +105,7 @@ export declare const ConfigSchema: z.ZodPipe<z.ZodObject<{
94
105
  HARNESS_DEFAULT_PROJECT_ID?: string | undefined;
95
106
  HARNESS_TOOLSETS?: string | undefined;
96
107
  HARNESS_AUTO_APPROVE_RISK?: "none" | "low_write" | "medium_write" | "high_write" | "all" | undefined;
108
+ HARNESS_MCP_AUTH_TOKEN?: string | undefined;
97
109
  HARNESS_PIPELINE_VERSION?: "1" | "0" | undefined;
98
110
  HARNESS_AUDIT_FILE?: string | undefined;
99
111
  HARNESS_AUDIT_WEBHOOK_URL?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAuC5B;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO5E;AAuCD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAGpG;AAED,wBAAgB,UAAU,IAAI,MAAM,CAQnC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAuC5B;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO5E;AA6CD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAGpG;AAED,wBAAgB,UAAU,IAAI,MAAM,CAQnC"}
package/build/config.js CHANGED
@@ -45,7 +45,8 @@ export function extractAccountIdFromToken(apiKey) {
45
45
  return undefined;
46
46
  }
47
47
  const RawConfigSchema = z.object({
48
- HARNESS_API_KEY: z.string().min(1, "HARNESS_API_KEY is required"),
48
+ HARNESS_MCP_MODE: z.preprocess(emptyStringAsUndefined, z.enum(["single-user", "multi-user"]).default("single-user")),
49
+ HARNESS_API_KEY: optionalStringFromEnv,
49
50
  HARNESS_ACCOUNT_ID: optionalStringFromEnv,
50
51
  HARNESS_BASE_URL: urlFromEnv("https://app.harness.io"),
51
52
  // New names (preferred)
@@ -65,6 +66,8 @@ const RawConfigSchema = z.object({
65
66
  HARNESS_AUTO_APPROVE_RISK: z.preprocess(emptyStringAsUndefined, z.enum(["none", "low_write", "medium_write", "high_write", "all"]).optional()),
66
67
  HARNESS_ALLOW_HTTP: booleanFromEnv.default(false),
67
68
  HARNESS_MCP_ALLOWED_HOSTS: optionalStringFromEnv.transform(validateAllowedHosts),
69
+ HARNESS_MCP_AUTH_TOKEN: optionalStringFromEnv,
70
+ HARNESS_MCP_ALLOW_UNAUTHENTICATED_HTTP: booleanFromEnv.default(false),
68
71
  HARNESS_FME_BASE_URL: urlFromEnv("https://api.split.io"),
69
72
  HARNESS_LOG_UNSAFE_BODIES: booleanFromEnv.default(false),
70
73
  HARNESS_PIPELINE_VERSION: z.enum(["0", "1"]).optional(),
@@ -75,9 +78,23 @@ const RawConfigSchema = z.object({
75
78
  HARNESS_AUDIT_WEBHOOK_FLUSH_MS: z.preprocess(emptyStringAsUndefined, z.coerce.number().min(1).default(5000)),
76
79
  });
77
80
  export const ConfigSchema = RawConfigSchema.transform((data) => {
78
- const accountId = data.HARNESS_ACCOUNT_ID ?? extractAccountIdFromToken(data.HARNESS_API_KEY);
79
- if (!accountId) {
80
- throw new Error("HARNESS_ACCOUNT_ID is required when the API key is not a PAT (pat.<accountId>.<tokenId>.<secret>)");
81
+ const isMultiUser = data.HARNESS_MCP_MODE === "multi-user";
82
+ if (isMultiUser && data.HARNESS_API_KEY) {
83
+ throw new Error("HARNESS_API_KEY must not be set in multi-user mode. " +
84
+ "Each session must provide its own API key via the x-harness-api-key header.");
85
+ }
86
+ if (!isMultiUser && !data.HARNESS_API_KEY) {
87
+ throw new Error("HARNESS_API_KEY is required in single-user mode.");
88
+ }
89
+ let accountId;
90
+ if (isMultiUser) {
91
+ accountId = data.HARNESS_ACCOUNT_ID ?? "";
92
+ }
93
+ else {
94
+ accountId = data.HARNESS_ACCOUNT_ID ?? extractAccountIdFromToken(data.HARNESS_API_KEY);
95
+ if (!accountId) {
96
+ throw new Error("HARNESS_ACCOUNT_ID is required when the API key is not a PAT (pat.<accountId>.<tokenId>.<secret>)");
97
+ }
81
98
  }
82
99
  if (!data.HARNESS_BASE_URL.startsWith("https://") && !data.HARNESS_ALLOW_HTTP) {
83
100
  throw new Error(`HARNESS_BASE_URL must use HTTPS (got "${data.HARNESS_BASE_URL}"). ` +
@@ -109,7 +126,7 @@ export const ConfigSchema = RawConfigSchema.transform((data) => {
109
126
  }
110
127
  // Remove deprecated keys from output, expose only the canonical names
111
128
  const { HARNESS_DEFAULT_ORG_ID: _oldOrg, HARNESS_DEFAULT_PROJECT_ID: _oldProject, ...rest } = data;
112
- return { ...rest, HARNESS_ACCOUNT_ID: accountId, HARNESS_ORG, HARNESS_PROJECT, HARNESS_AUTO_APPROVE_RISK };
129
+ return { ...rest, HARNESS_API_KEY: data.HARNESS_API_KEY ?? "", HARNESS_ACCOUNT_ID: accountId, HARNESS_ORG, HARNESS_PROJECT, HARNESS_AUTO_APPROVE_RISK };
113
130
  });
114
131
  /**
115
132
  * Resolve the base URL for a given product backend.
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -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,CAu+hH/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,CAokiH/B,CAAC;AACF,eAAe,MAAM,CAAC"}