harness-mcp-v2 0.5.2 → 0.5.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 (46) hide show
  1. package/README.md +24 -5
  2. package/build/client/pagination.d.ts.map +1 -1
  3. package/build/client/pagination.js +3 -1
  4. package/build/client/pagination.js.map +1 -1
  5. package/build/index.js +26 -2
  6. package/build/index.js.map +1 -1
  7. package/build/prompts/debug-pipeline.d.ts.map +1 -1
  8. package/build/prompts/debug-pipeline.js +19 -12
  9. package/build/prompts/debug-pipeline.js.map +1 -1
  10. package/build/registry/toolsets/logs.js +5 -5
  11. package/build/registry/toolsets/logs.js.map +1 -1
  12. package/build/tools/harness-create.d.ts.map +1 -1
  13. package/build/tools/harness-create.js +5 -2
  14. package/build/tools/harness-create.js.map +1 -1
  15. package/build/tools/harness-delete.d.ts.map +1 -1
  16. package/build/tools/harness-delete.js +4 -2
  17. package/build/tools/harness-delete.js.map +1 -1
  18. package/build/tools/harness-diagnose.d.ts +2 -1
  19. package/build/tools/harness-diagnose.d.ts.map +1 -1
  20. package/build/tools/harness-diagnose.js +290 -24
  21. package/build/tools/harness-diagnose.js.map +1 -1
  22. package/build/tools/harness-execute.d.ts.map +1 -1
  23. package/build/tools/harness-execute.js +49 -9
  24. package/build/tools/harness-execute.js.map +1 -1
  25. package/build/tools/harness-get.d.ts.map +1 -1
  26. package/build/tools/harness-get.js +15 -8
  27. package/build/tools/harness-get.js.map +1 -1
  28. package/build/tools/harness-list.d.ts.map +1 -1
  29. package/build/tools/harness-list.js +11 -5
  30. package/build/tools/harness-list.js.map +1 -1
  31. package/build/tools/harness-search.d.ts.map +1 -1
  32. package/build/tools/harness-search.js +5 -2
  33. package/build/tools/harness-search.js.map +1 -1
  34. package/build/tools/harness-status.d.ts.map +1 -1
  35. package/build/tools/harness-status.js +6 -3
  36. package/build/tools/harness-status.js.map +1 -1
  37. package/build/tools/harness-update.d.ts.map +1 -1
  38. package/build/tools/harness-update.js +4 -2
  39. package/build/tools/harness-update.js.map +1 -1
  40. package/build/tools/index.js +1 -1
  41. package/build/tools/index.js.map +1 -1
  42. package/build/utils/url-parser.d.ts +38 -0
  43. package/build/utils/url-parser.d.ts.map +1 -0
  44. package/build/utils/url-parser.js +165 -0
  45. package/build/utils/url-parser.js.map +1 -0
  46. package/package.json +2 -2
package/README.md CHANGED
@@ -418,6 +418,8 @@ The deployment runs 2 replicas with readiness/liveness probes, resource limits,
418
418
 
419
419
  The server exposes 10 MCP tools. Every tool accepts `org_id` and `project_id` as optional overrides — if omitted, they fall back to `HARNESS_DEFAULT_ORG_ID` and `HARNESS_DEFAULT_PROJECT_ID`.
420
420
 
421
+ **URL support:** All tools accept a `url` parameter — paste any Harness UI URL and the server automatically extracts org, project, resource type, resource ID, pipeline ID, and execution ID. Explicit parameters always take precedence over URL-derived values.
422
+
421
423
  | Tool | Description |
422
424
  |------|-------------|
423
425
  | `harness_describe` | Discover available resource types, operations, and fields. No API call — returns local registry metadata. |
@@ -428,7 +430,7 @@ The server exposes 10 MCP tools. Every tool accepts `org_id` and `project_id` as
428
430
  | `harness_delete` | Delete a resource. Prompts for user confirmation via [elicitation](#elicitation). Destructive. |
429
431
  | `harness_execute` | Execute an action on a resource (run pipeline, toggle flag, sync app). Prompts for user confirmation via [elicitation](#elicitation). |
430
432
  | `harness_search` | Search across multiple resource types in parallel with a single query. |
431
- | `harness_diagnose` | Aggregate execution details, pipeline YAML, and logs into a single diagnostic payload. |
433
+ | `harness_diagnose` | Analyze a pipeline execution — returns a structured report with stage breakdown, timing, bottlenecks, and failure info. Accepts an execution ID, pipeline ID (auto-fetches latest), or a Harness URL. Set `summary=false` for raw diagnostic data with pipeline YAML and logs. |
432
434
  | `harness_status` | Get a real-time project health dashboard — recent executions, failure rates, and deep links. |
433
435
 
434
436
  ### Tool Examples
@@ -492,10 +494,22 @@ The server exposes 10 MCP tools. Every tool accepts `org_id` and `project_id` as
492
494
  { "query": "payment-service" }
493
495
  ```
494
496
 
495
- **Diagnose a failed execution:**
497
+ **Get a structured execution report (summary mode, default):**
498
+
499
+ ```json
500
+ { "execution_id": "abc123XYZ" }
501
+ ```
502
+
503
+ **Diagnose from a Harness URL (fetches YAML + logs automatically):**
504
+
505
+ ```json
506
+ { "url": "https://app.harness.io/ng/account/.../pipelines/myPipeline/executions/abc123XYZ/pipeline", "summary": false }
507
+ ```
508
+
509
+ **Get the latest execution report for a pipeline:**
496
510
 
497
511
  ```json
498
- { "execution_id": "abc123XYZ", "include_yaml": true, "include_logs": true }
512
+ { "pipeline_id": "my-pipeline" }
499
513
  ```
500
514
 
501
515
  **Get project health status:**
@@ -782,7 +796,7 @@ The server exposes 10 MCP tools. Every tool accepts `org_id` and `project_id` as
782
796
  | Prompt | Description | Parameters |
783
797
  |--------|-------------|------------|
784
798
  | `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) |
785
- | `debug-pipeline-failure` | Analyze a failed execution: gathers execution details, pipeline YAML, and logs, then provides root cause analysis and suggested fixes | `executionId` (required), `projectId` (optional) |
799
+ | `debug-pipeline-failure` | Analyze a failed execution: accepts an execution ID, pipeline ID, or Harness URL. Gathers execution details, pipeline YAML, and logs via `harness_diagnose`, then provides root cause analysis and suggested fixes. | `executionId` (optional), `projectId` (optional) |
786
800
  | `create-pipeline` | Generate a new pipeline YAML from natural language requirements, reviewing existing resources for context | `description` (required), `projectId` (optional) |
787
801
  | `onboard-service` | Walk through onboarding a new service with environments and a deployment pipeline | `serviceName` (required), `projectId` (optional) |
788
802
  | `dora-metrics-review` | Review DORA metrics (deployment frequency, change failure rate, MTTR, lead time) with Elite/High/Medium/Low classification and improvement recommendations | `teamRefId` (optional), `dateStart` (optional), `dateEnd` (optional) |
@@ -1076,6 +1090,7 @@ Write tools (`harness_create`, `harness_update`, `harness_delete`, `harness_exec
1076
1090
  | Client | Elicitation Support |
1077
1091
  |--------|-------------------|
1078
1092
  | Cursor | Yes |
1093
+ | VS Code (Copilot) | Yes |
1079
1094
  | Claude Desktop | Not yet |
1080
1095
  | Windsurf | Not yet |
1081
1096
  | MCP Inspector | Yes |
@@ -1086,8 +1101,12 @@ For clients that don't support elicitation, the server proceeds directly — the
1086
1101
 
1087
1102
  - **Secrets are never exposed.** The `secret` resource type returns metadata only (name, type, scope) — secret values are never included in any response.
1088
1103
  - **Write operations prompt for confirmation.** `harness_create`, `harness_update`, `harness_delete`, and `harness_execute` use MCP elicitation to get user approval before proceeding (see [Elicitation](#elicitation)).
1089
- - **Rate limiting.** The client enforces a 10 requests/second limit to avoid hitting Harness API rate limits.
1104
+ - **CORS restricted to same-origin.** The HTTP transport only allows same-origin requests, preventing CSRF attacks from malicious websites targeting the MCP server on localhost.
1105
+ - **HTTP rate limiting.** The HTTP transport enforces 60 requests per minute per IP to prevent request flooding.
1106
+ - **API rate limiting.** The Harness API client enforces a 10 requests/second limit to avoid hitting upstream rate limits.
1107
+ - **Pagination bounds enforced.** List queries are capped at 10,000 items total and 100 per page to prevent memory exhaustion.
1090
1108
  - **Retries with backoff.** Transient failures (HTTP 429, 5xx) are retried with exponential backoff and jitter.
1109
+ - **Localhost binding.** The HTTP transport binds to `127.0.0.1` by default — not accessible from the network.
1091
1110
  - **No stdout logging.** All logs go to stderr to avoid corrupting the stdio JSON-RPC transport.
1092
1111
 
1093
1112
  ## Troubleshooting & Common Pitfalls
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/client/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,UAAU,eAAe;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAiC/F"}
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/client/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,UAAU,eAAe;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAmC/F"}
@@ -3,7 +3,9 @@
3
3
  * Handles both page-based (NG API) and offset-based patterns.
4
4
  */
5
5
  export async function paginate(opts) {
6
- const { client, request, maxItems = 100, pageSize = 20 } = opts;
6
+ const { client, request, maxItems: rawMax = 100, pageSize: rawSize = 20 } = opts;
7
+ const maxItems = Math.min(Math.max(rawMax, 1), 10_000);
8
+ const pageSize = Math.min(Math.max(rawSize, 1), 100);
7
9
  const allItems = [];
8
10
  let page = 0;
9
11
  let total = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/client/pagination.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,IAAqB;IACrD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,GAAG,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IAChE,MAAM,QAAQ,GAAQ,EAAE,CAAC;IACzB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,QAAQ,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAEjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAKlC;YACD,GAAG,OAAO;YACV,MAAM,EAAE,MAA+D;SACxE,CAAC,CAAC;QAEH,kCAAkC;QAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QACjE,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,aAAa,IAAI,QAAQ,CAAC,IAAI,EAAE,UAAU,IAAI,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;QAExH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QAEhC,QAAQ,CAAC,IAAI,CAAC,GAAI,OAAe,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC;QAEP,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;YAAE,MAAM,CAAC,YAAY;IAChD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/client/pagination.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,IAAqB;IACrD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAQ,EAAE,CAAC;IACzB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,QAAQ,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAEjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAKlC;YACD,GAAG,OAAO;YACV,MAAM,EAAE,MAA+D;SACxE,CAAC,CAAC;QAEH,kCAAkC;QAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QACjE,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,aAAa,IAAI,QAAQ,CAAC,IAAI,EAAE,UAAU,IAAI,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;QAExH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QAEhC,QAAQ,CAAC,IAAI,CAAC,GAAI,OAAe,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC;QAEP,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;YAAE,MAAM,CAAC,YAAY;IAChD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC"}
package/build/index.js CHANGED
@@ -50,13 +50,37 @@ async function startHttp(config, port) {
50
50
  // Override the default express.json() limit to match our config
51
51
  const { json } = await import("express");
52
52
  app.use(json({ limit: maxBodySize }));
53
- // CORS headers for cross-origin MCP clients
53
+ // Block cross-origin requests — prevents CSRF from malicious websites
54
+ // targeting the MCP server on localhost. Only same-origin requests are allowed.
54
55
  app.use((_req, res, next) => {
55
- res.setHeader("Access-Control-Allow-Origin", "*");
56
+ res.setHeader("Access-Control-Allow-Origin", `http://${host}:${port}`);
56
57
  res.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
57
58
  res.setHeader("Access-Control-Allow-Headers", "Content-Type, mcp-session-id");
58
59
  next();
59
60
  });
61
+ // Simple per-IP rate limiting: 60 requests per minute
62
+ const ipHits = new Map();
63
+ const RATE_WINDOW_MS = 60_000;
64
+ const RATE_LIMIT = 60;
65
+ app.use((req, res, next) => {
66
+ const ip = req.ip ?? "unknown";
67
+ const now = Date.now();
68
+ let entry = ipHits.get(ip);
69
+ if (!entry || now >= entry.resetAt) {
70
+ entry = { count: 0, resetAt: now + RATE_WINDOW_MS };
71
+ ipHits.set(ip, entry);
72
+ }
73
+ entry.count++;
74
+ if (entry.count > RATE_LIMIT) {
75
+ res.status(429).json({
76
+ jsonrpc: "2.0",
77
+ error: { code: -32000, message: "Too many requests. Try again later." },
78
+ id: null,
79
+ });
80
+ return;
81
+ }
82
+ next();
83
+ });
60
84
  // Health check
61
85
  app.get("/health", (_req, res) => {
62
86
  res.json({ status: "ok" });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"debug-pipeline.d.ts","sourceRoot":"","sources":["../../src/prompts/debug-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2BnE"}
1
+ {"version":3,"file":"debug-pipeline.d.ts","sourceRoot":"","sources":["../../src/prompts/debug-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmCnE"}
@@ -1,25 +1,32 @@
1
1
  import * as z from "zod/v4";
2
2
  export function registerDebugPipelinePrompt(server) {
3
- server.prompt("debug-pipeline-failure", "Analyze a failed pipeline execution and suggest fixes", {
4
- executionId: z.string().describe("The failed execution ID"),
3
+ server.prompt("debug-pipeline-failure", "Analyze a failed pipeline execution and suggest fixes. Accepts an execution ID, pipeline ID, or Harness URL.", {
4
+ executionId: z.string().describe("The failed execution ID, pipeline ID, or a Harness URL").optional(),
5
5
  projectId: z.string().describe("Project identifier").optional(),
6
- }, async ({ executionId, projectId }) => ({
7
- messages: [{
8
- role: "user",
9
- content: {
10
- type: "text",
11
- text: `Analyze this failed Harness pipeline execution and provide:
6
+ }, async ({ executionId, projectId }) => {
7
+ // Detect if the input looks like a URL
8
+ const isUrl = executionId?.startsWith("http");
9
+ const idParam = isUrl
10
+ ? `url="${executionId}"`
11
+ : `execution_id="${executionId}"`;
12
+ return {
13
+ messages: [{
14
+ role: "user",
15
+ content: {
16
+ type: "text",
17
+ text: `Analyze this failed Harness pipeline execution and provide:
12
18
 
13
19
  1. **Root cause** of the failure
14
20
  2. **Which step failed** and why
15
21
  3. **Suggested fix** with specific actions
16
22
  4. **Similar patterns** — have we seen this failure type before?
17
23
 
18
- Start by calling harness_diagnose with execution_id="${executionId}"${projectId ? ` and project_id="${projectId}"` : ""} to gather all context (execution details, pipeline YAML, and logs) in one call.
24
+ Start by calling harness_diagnose with ${idParam}${projectId ? `, project_id="${projectId}"` : ""}, summary=false to gather all context (execution details, pipeline YAML, and logs) in one call.
19
25
 
20
26
  Then analyze the diagnostic payload and provide actionable recommendations.`,
21
- },
22
- }],
23
- }));
27
+ },
28
+ }],
29
+ };
30
+ });
24
31
  }
25
32
  //# sourceMappingURL=debug-pipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debug-pipeline.js","sourceRoot":"","sources":["../../src/prompts/debug-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,MAAM,CACX,wBAAwB,EACxB,uDAAuD,EACvD;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC3D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;KAChE,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACrC,QAAQ,EAAE,CAAC;gBACT,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;;;;;;;uDAOuC,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,oBAAoB,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE;;4EAE3C;iBACnE;aACF,CAAC;KACH,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"debug-pipeline.js","sourceRoot":"","sources":["../../src/prompts/debug-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,MAAM,CACX,wBAAwB,EACxB,8GAA8G,EAC9G;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC,CAAC,QAAQ,EAAE;QACrG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;KAChE,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;QACnC,uCAAuC;QACvC,MAAM,KAAK,GAAG,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,KAAK;YACnB,CAAC,CAAC,QAAQ,WAAW,GAAG;YACxB,CAAC,CAAC,iBAAiB,WAAW,GAAG,CAAC;QAEpC,OAAO;YACL,QAAQ,EAAE,CAAC;oBACT,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;;;;;;;yCAOuB,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,iBAAiB,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE;;4EAErB;qBACjE;iBACF,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -6,20 +6,20 @@ export const logsToolset = {
6
6
  {
7
7
  resourceType: "execution_log",
8
8
  displayName: "Execution Log",
9
- description: "Pipeline execution step logs. Get logs by execution ID and optional step/stage IDs.",
9
+ description: "Pipeline execution step logs. Requires a 'prefix' query param in the format: {accountId}/pipeline/{pipelineId}/{runSequence}/-{executionId} (pipeline-level) or appended with /{stageId}/{stepId} (step-level).",
10
10
  toolset: "logs",
11
11
  scope: "project",
12
- identifierFields: ["execution_id"],
13
- listFilterFields: ["step_id", "stage_id", "unit_id"],
12
+ identifierFields: ["prefix"],
13
+ listFilterFields: [],
14
14
  operations: {
15
15
  get: {
16
16
  method: "POST",
17
17
  path: "/gateway/log-service/blob/download",
18
18
  queryParams: {
19
- execution_id: "key",
19
+ prefix: "prefix",
20
20
  },
21
21
  responseExtractor: (raw) => raw,
22
- description: "Download execution logs for a given execution/step",
22
+ description: "Download execution logs by prefix",
23
23
  },
24
24
  },
25
25
  },
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/registry/toolsets/logs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,kCAAkC;IAC/C,SAAS,EAAE;QACT;YACE,YAAY,EAAE,eAAe;YAC7B,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,qFAAqF;YAClG,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,CAAC,cAAc,CAAC;YAClC,gBAAgB,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;YACpD,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,oCAAoC;oBAC1C,WAAW,EAAE;wBACX,YAAY,EAAE,KAAK;qBACpB;oBACD,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;oBAC/B,WAAW,EAAE,oDAAoD;iBAClE;aACF;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/registry/toolsets/logs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,kCAAkC;IAC/C,SAAS,EAAE;QACT;YACE,YAAY,EAAE,eAAe;YAC7B,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,iNAAiN;YAC9N,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,CAAC,QAAQ,CAAC;YAC5B,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,oCAAoC;oBAC1C,WAAW,EAAE;wBACX,MAAM,EAAE,QAAQ;qBACjB;oBACD,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;oBAC/B,WAAW,EAAE,mCAAmC;iBACjD;aACF;SACF;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"harness-create.d.ts","sourceRoot":"","sources":["../../src/tools/harness-create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAKjE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CA6BrG"}
1
+ {"version":3,"file":"harness-create.d.ts","sourceRoot":"","sources":["../../src/tools/harness-create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAMjE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CA+BrG"}
@@ -2,14 +2,17 @@ import * as z from "zod/v4";
2
2
  import { jsonResult, errorResult } from "../utils/response-formatter.js";
3
3
  import { isUserError, toMcpError } from "../utils/errors.js";
4
4
  import { confirmViaElicitation } from "../utils/elicitation.js";
5
+ import { applyUrlDefaults } from "../utils/url-parser.js";
5
6
  export function registerCreateTool(server, registry, client) {
6
- server.tool("harness_create", "Create a new Harness resource. For pipelines, templates, and triggers — read the schema resource first (e.g. schema:///pipeline) to understand the required body format.", {
7
+ server.tool("harness_create", "Create a new Harness resource. You can pass a Harness URL to auto-extract org and project scope. For pipelines, templates, and triggers — read the schema resource first (e.g. schema:///pipeline) to understand the required body format.", {
7
8
  resource_type: z.string().describe("The type of resource to create (e.g. pipeline, service, environment, connector, trigger)"),
8
9
  body: z.record(z.string(), z.unknown()).describe("The resource definition body (varies by resource type — typically the YAML or JSON spec)"),
10
+ url: z.string().describe("A Harness UI URL — org and project are extracted automatically").optional(),
9
11
  org_id: z.string().describe("Organization identifier (overrides default)").optional(),
10
12
  project_id: z.string().describe("Project identifier (overrides default)").optional(),
11
13
  }, async (args) => {
12
14
  try {
15
+ const input = applyUrlDefaults(args, args.url);
13
16
  const elicit = await confirmViaElicitation({
14
17
  server,
15
18
  toolName: "harness_create",
@@ -18,7 +21,7 @@ export function registerCreateTool(server, registry, client) {
18
21
  if (!elicit.proceed) {
19
22
  return errorResult(`Operation ${elicit.reason} by user.`);
20
23
  }
21
- const result = await registry.dispatch(client, args.resource_type, "create", args);
24
+ const result = await registry.dispatch(client, args.resource_type, "create", input);
22
25
  return jsonResult(result);
23
26
  }
24
27
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"harness-create.js","sourceRoot":"","sources":["../../src/tools/harness-create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,QAAkB,EAAE,MAAqB;IAC7F,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,0KAA0K,EAC1K;QACE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0FAA0F,CAAC;QAC9H,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,0FAA0F,CAAC;QAC5I,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC,QAAQ,EAAE;QACrF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC,CAAC,QAAQ,EAAE;KACrF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC;gBACzC,MAAM;gBACN,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,UAAU,IAAI,CAAC,aAAa,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aAClF,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,WAAW,CAAC,aAAa,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAA+B,CAAC,CAAC;YAC9G,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,WAAW,CAAC,GAAG,CAAC;gBAAE,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"harness-create.js","sourceRoot":"","sources":["../../src/tools/harness-create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,QAAkB,EAAE,MAAqB;IAC7F,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,4OAA4O,EAC5O;QACE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0FAA0F,CAAC;QAC9H,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,0FAA0F,CAAC;QAC5I,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC,CAAC,QAAQ,EAAE;QACrG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC,QAAQ,EAAE;QACrF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC,CAAC,QAAQ,EAAE;KACrF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAA+B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1E,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC;gBACzC,MAAM;gBACN,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,UAAU,IAAI,CAAC,aAAa,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aAClF,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,WAAW,CAAC,aAAa,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACpF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,WAAW,CAAC,GAAG,CAAC;gBAAE,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"harness-delete.d.ts","sourceRoot":"","sources":["../../src/tools/harness-delete.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAKjE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAqCrG"}
1
+ {"version":3,"file":"harness-delete.d.ts","sourceRoot":"","sources":["../../src/tools/harness-delete.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAMjE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAsCrG"}
@@ -2,10 +2,12 @@ import * as z from "zod/v4";
2
2
  import { jsonResult, errorResult } from "../utils/response-formatter.js";
3
3
  import { isUserError, toMcpError } from "../utils/errors.js";
4
4
  import { confirmViaElicitation } from "../utils/elicitation.js";
5
+ import { applyUrlDefaults } from "../utils/url-parser.js";
5
6
  export function registerDeleteTool(server, registry, client) {
6
- server.tool("harness_delete", "Delete a Harness resource. This is destructive and cannot be undone.", {
7
+ server.tool("harness_delete", "Delete a Harness resource. You can pass a Harness URL to auto-extract identifiers. This is destructive and cannot be undone.", {
7
8
  resource_type: z.string().describe("The type of resource to delete (e.g. pipeline, trigger, connector)"),
8
9
  resource_id: z.string().describe("The identifier of the resource to delete"),
10
+ url: z.string().describe("A Harness UI URL — org, project, resource type, and ID are extracted automatically").optional(),
9
11
  org_id: z.string().describe("Organization identifier (overrides default)").optional(),
10
12
  project_id: z.string().describe("Project identifier (overrides default)").optional(),
11
13
  pipeline_id: z.string().describe("Pipeline ID (for trigger deletes)").optional(),
@@ -21,7 +23,7 @@ export function registerDeleteTool(server, registry, client) {
21
23
  return errorResult(`Operation ${elicit.reason} by user.`);
22
24
  }
23
25
  const def = registry.getResource(args.resource_type);
24
- const input = { ...args };
26
+ const input = applyUrlDefaults(args, args.url);
25
27
  if (def.identifierFields.length > 0 && args.resource_id) {
26
28
  input[def.identifierFields[0]] = args.resource_id;
27
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"harness-delete.js","sourceRoot":"","sources":["../../src/tools/harness-delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,QAAkB,EAAE,MAAqB;IAC7F,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,sEAAsE,EACtE;QACE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;QACxG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC,QAAQ,EAAE;QACrF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC,CAAC,QAAQ,EAAE;QACpF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC,QAAQ,EAAE;QAChF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC,QAAQ,EAAE;KAC9F,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC;gBACzC,MAAM;gBACN,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,UAAU,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,iDAAiD;aAC5G,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,WAAW,CAAC,aAAa,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACrD,MAAM,KAAK,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;YACnD,IAAI,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACxD,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YACpD,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACpF,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7K,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,WAAW,CAAC,GAAG,CAAC;gBAAE,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"harness-delete.js","sourceRoot":"","sources":["../../src/tools/harness-delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,QAAkB,EAAE,MAAqB;IAC7F,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,8HAA8H,EAC9H;QACE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;QACxG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAC5E,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC,CAAC,QAAQ,EAAE;QACzH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC,QAAQ,EAAE;QACrF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC,CAAC,QAAQ,EAAE;QACpF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC,QAAQ,EAAE;QAChF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC,QAAQ,EAAE;KAC9F,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC;gBACzC,MAAM;gBACN,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,UAAU,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,iDAAiD;aAC5G,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,WAAW,CAAC,aAAa,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAA+B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1E,IAAI,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACxD,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YACpD,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACpF,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7K,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,WAAW,CAAC,GAAG,CAAC;gBAAE,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { Registry } from "../registry/index.js";
3
3
  import type { HarnessClient } from "../client/harness-client.js";
4
- export declare function registerDiagnoseTool(server: McpServer, registry: Registry, client: HarnessClient): void;
4
+ import type { Config } from "../config.js";
5
+ export declare function registerDiagnoseTool(server: McpServer, registry: Registry, client: HarnessClient, config: Config): void;
5
6
  //# sourceMappingURL=harness-diagnose.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"harness-diagnose.d.ts","sourceRoot":"","sources":["../../src/tools/harness-diagnose.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAQjE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAuEvG"}
1
+ {"version":3,"file":"harness-diagnose.d.ts","sourceRoot":"","sources":["../../src/tools/harness-diagnose.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAsQ3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAiKvH"}