harness-mcp-v2 3.2.7 → 3.2.8
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.
- package/README.md +7 -24
- package/build/registry/index.d.ts.map +1 -1
- package/build/registry/index.js +0 -2
- package/build/registry/index.js.map +1 -1
- package/build/registry/toolsets/ansible.d.ts.map +1 -1
- package/build/registry/toolsets/ansible.js +2 -3
- package/build/registry/toolsets/ansible.js.map +1 -1
- package/build/registry/toolsets/ccm.d.ts.map +1 -1
- package/build/registry/toolsets/ccm.js +3 -3
- package/build/registry/toolsets/ccm.js.map +1 -1
- package/build/registry/toolsets/iacm.d.ts.map +1 -1
- package/build/registry/toolsets/iacm.js +2 -3
- package/build/registry/toolsets/iacm.js.map +1 -1
- package/build/registry/toolsets/sto.d.ts.map +1 -1
- package/build/registry/toolsets/sto.js +4 -8
- package/build/registry/toolsets/sto.js.map +1 -1
- package/build/registry/types.d.ts +11 -3
- package/build/registry/types.d.ts.map +1 -1
- package/build/registry/types.js.map +1 -1
- package/build/tools/harness-diagnose.d.ts.map +1 -1
- package/build/tools/harness-diagnose.js +2 -57
- package/build/tools/harness-diagnose.js.map +1 -1
- package/build/tools/harness-get.d.ts.map +1 -1
- package/build/tools/harness-get.js +1 -0
- package/build/tools/harness-get.js.map +1 -1
- package/build/tools/harness-list.d.ts.map +1 -1
- package/build/tools/harness-list.js +1 -23
- package/build/tools/harness-list.js.map +1 -1
- package/build/tools/harness-status.d.ts.map +1 -1
- package/build/tools/harness-status.js +1 -16
- package/build/tools/harness-status.js.map +1 -1
- package/build/tools/output-schemas.d.ts +0 -1
- package/build/tools/output-schemas.d.ts.map +1 -1
- package/build/tools/output-schemas.js +0 -1
- package/build/tools/output-schemas.js.map +1 -1
- package/build/utils/response-formatter.d.ts +0 -10
- package/build/utils/response-formatter.d.ts.map +1 -1
- package/build/utils/response-formatter.js +0 -21
- package/build/utils/response-formatter.js.map +1 -1
- package/package.json +1 -2
- package/build/registry/toolsets/visualizations.d.ts +0 -8
- package/build/registry/toolsets/visualizations.d.ts.map +0 -1
- package/build/registry/toolsets/visualizations.js +0 -116
- package/build/registry/toolsets/visualizations.js.map +0 -1
- package/build/utils/svg/architecture.d.ts +0 -40
- package/build/utils/svg/architecture.d.ts.map +0 -1
- package/build/utils/svg/architecture.js +0 -354
- package/build/utils/svg/architecture.js.map +0 -1
- package/build/utils/svg/charts/bar.d.ts +0 -11
- package/build/utils/svg/charts/bar.d.ts.map +0 -1
- package/build/utils/svg/charts/bar.js +0 -93
- package/build/utils/svg/charts/bar.js.map +0 -1
- package/build/utils/svg/charts/index.d.ts +0 -8
- package/build/utils/svg/charts/index.d.ts.map +0 -1
- package/build/utils/svg/charts/index.js +0 -4
- package/build/utils/svg/charts/index.js.map +0 -1
- package/build/utils/svg/charts/pie.d.ts +0 -10
- package/build/utils/svg/charts/pie.d.ts.map +0 -1
- package/build/utils/svg/charts/pie.js +0 -105
- package/build/utils/svg/charts/pie.js.map +0 -1
- package/build/utils/svg/charts/scatter.d.ts +0 -11
- package/build/utils/svg/charts/scatter.d.ts.map +0 -1
- package/build/utils/svg/charts/scatter.js +0 -101
- package/build/utils/svg/charts/scatter.js.map +0 -1
- package/build/utils/svg/charts/types.d.ts +0 -39
- package/build/utils/svg/charts/types.d.ts.map +0 -1
- package/build/utils/svg/charts/types.js +0 -5
- package/build/utils/svg/charts/types.js.map +0 -1
- package/build/utils/svg/colors.d.ts +0 -25
- package/build/utils/svg/colors.d.ts.map +0 -1
- package/build/utils/svg/colors.js +0 -66
- package/build/utils/svg/colors.js.map +0 -1
- package/build/utils/svg/escape.d.ts +0 -6
- package/build/utils/svg/escape.d.ts.map +0 -1
- package/build/utils/svg/escape.js +0 -20
- package/build/utils/svg/escape.js.map +0 -1
- package/build/utils/svg/executions-timeseries.d.ts +0 -12
- package/build/utils/svg/executions-timeseries.d.ts.map +0 -1
- package/build/utils/svg/executions-timeseries.js +0 -99
- package/build/utils/svg/executions-timeseries.js.map +0 -1
- package/build/utils/svg/index.d.ts +0 -15
- package/build/utils/svg/index.d.ts.map +0 -1
- package/build/utils/svg/index.js +0 -12
- package/build/utils/svg/index.js.map +0 -1
- package/build/utils/svg/list-visuals.d.ts +0 -15
- package/build/utils/svg/list-visuals.d.ts.map +0 -1
- package/build/utils/svg/list-visuals.js +0 -141
- package/build/utils/svg/list-visuals.js.map +0 -1
- package/build/utils/svg/mappers.d.ts +0 -16
- package/build/utils/svg/mappers.d.ts.map +0 -1
- package/build/utils/svg/mappers.js +0 -93
- package/build/utils/svg/mappers.js.map +0 -1
- package/build/utils/svg/render-png-child.d.ts +0 -2
- package/build/utils/svg/render-png-child.d.ts.map +0 -1
- package/build/utils/svg/render-png-child.js +0 -30
- package/build/utils/svg/render-png-child.js.map +0 -1
- package/build/utils/svg/render-png.d.ts +0 -17
- package/build/utils/svg/render-png.d.ts.map +0 -1
- package/build/utils/svg/render-png.js +0 -112
- package/build/utils/svg/render-png.js.map +0 -1
- package/build/utils/svg/stage-flow.d.ts +0 -11
- package/build/utils/svg/stage-flow.d.ts.map +0 -1
- package/build/utils/svg/stage-flow.js +0 -93
- package/build/utils/svg/stage-flow.js.map +0 -1
- package/build/utils/svg/status-summary.d.ts +0 -10
- package/build/utils/svg/status-summary.d.ts.map +0 -1
- package/build/utils/svg/status-summary.js +0 -73
- package/build/utils/svg/status-summary.js.map +0 -1
- package/build/utils/svg/timeline.d.ts +0 -12
- package/build/utils/svg/timeline.d.ts.map +0 -1
- package/build/utils/svg/timeline.js +0 -132
- package/build/utils/svg/timeline.js.map +0 -1
- package/build/utils/svg/types.d.ts +0 -63
- package/build/utils/svg/types.d.ts.map +0 -1
- package/build/utils/svg/types.js +0 -6
- package/build/utils/svg/types.js.map +0 -1
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import * as z from "zod/v4";
|
|
2
|
-
import { jsonResult, errorResult
|
|
3
|
-
import { toExecutionSummaryData, renderTimelineSvg, renderStageFlowSvg, parsePipelineYaml, renderArchitectureSvg } from "../utils/svg/index.js";
|
|
4
|
-
import { asRecord } from "../utils/type-guards.js";
|
|
5
|
-
import { createLogger } from "../utils/logger.js";
|
|
2
|
+
import { jsonResult, errorResult } from "../utils/response-formatter.js";
|
|
6
3
|
import { isUserError, isUserFixableApiError, toMcpError } from "../utils/errors.js";
|
|
7
4
|
import { applyUrlDefaults } from "../utils/url-parser.js";
|
|
8
5
|
import { asString } from "../utils/type-guards.js";
|
|
@@ -11,7 +8,6 @@ import { connectorHandler } from "./diagnose/connector.js";
|
|
|
11
8
|
import { delegateHandler } from "./diagnose/delegate.js";
|
|
12
9
|
import { gitopsApplicationHandler } from "./diagnose/gitops-application.js";
|
|
13
10
|
import { diagnoseOutputSchema } from "./output-schemas.js";
|
|
14
|
-
const logDiag = createLogger("diagnose");
|
|
15
11
|
const ALIASES = { execution: "pipeline", gitops_app: "gitops_application" };
|
|
16
12
|
const handlers = {
|
|
17
13
|
pipeline: pipelineHandler,
|
|
@@ -32,7 +28,7 @@ export function registerDiagnoseTool(server, registry, client, config) {
|
|
|
32
28
|
url: z.string().optional().describe("A Harness URL — resource type, org, project, and ID are extracted automatically"),
|
|
33
29
|
org_id: z.string().optional().describe("Organization identifier (overrides default)"),
|
|
34
30
|
project_id: z.string().optional().describe("Project identifier (overrides default)"),
|
|
35
|
-
options: z.record(z.string(), z.unknown()).optional().describe("Resource-specific diagnostic options. Pipeline: execution_id, pipeline_id, summary, include_yaml, include_logs, return_download_url (boolean, return signed logs.zip URLs instead of inline log text), log_snippet_lines, max_failed_steps
|
|
31
|
+
options: z.record(z.string(), z.unknown()).optional().describe("Resource-specific diagnostic options. Pipeline: execution_id, pipeline_id, summary, include_yaml, include_logs, return_download_url (boolean, return signed logs.zip URLs instead of inline log text), log_snippet_lines, max_failed_steps. When a Harness URL contains ?step=<nodeExecutionId>, setting include_logs:true fetches that specific step's log regardless of pass/fail status and returns it as requested_step_log alongside any failed_step_logs. GitOps: agent_id. Call harness_describe for details."),
|
|
36
32
|
},
|
|
37
33
|
outputSchema: diagnoseOutputSchema,
|
|
38
34
|
annotations: {
|
|
@@ -62,57 +58,6 @@ export function registerDiagnoseTool(server, registry, client, config) {
|
|
|
62
58
|
}
|
|
63
59
|
const ctx = { client, registry, config, input, args: mergedArgs, extra, signal: extra.signal };
|
|
64
60
|
const result = await handler.diagnose(ctx);
|
|
65
|
-
// Visual rendering (opt-in)
|
|
66
|
-
if (mergedArgs.include_visual === true && resourceType === "pipeline") {
|
|
67
|
-
try {
|
|
68
|
-
const visualType = String(mergedArgs.visual_type ?? "timeline");
|
|
69
|
-
const visualWidth = typeof mergedArgs.visual_width === "number" ? mergedArgs.visual_width : 900;
|
|
70
|
-
// Auto-detect: if pipeline YAML is in the result, render architecture diagram
|
|
71
|
-
// regardless of visual_type (architecture is always more informative when YAML is available)
|
|
72
|
-
const pipelineData = asRecord(result.pipeline);
|
|
73
|
-
let archSvg = null;
|
|
74
|
-
if (pipelineData?.yamlPipeline && typeof pipelineData.yamlPipeline === "string") {
|
|
75
|
-
const YAML = await import("yaml");
|
|
76
|
-
const parsed = parsePipelineYaml(YAML.parse(pipelineData.yamlPipeline));
|
|
77
|
-
if (parsed)
|
|
78
|
-
archSvg = renderArchitectureSvg(parsed, { width: visualWidth });
|
|
79
|
-
}
|
|
80
|
-
// If no YAML in result and visual_type is architecture, try fetching it
|
|
81
|
-
if (!archSvg && (visualType === "architecture" || visualType === "flow")) {
|
|
82
|
-
const pipelineId = asString(mergedArgs.pipeline_id) ?? asString(input.pipeline_id);
|
|
83
|
-
if (pipelineId) {
|
|
84
|
-
try {
|
|
85
|
-
const pipelineResp = await registry.dispatch(client, "pipeline", "get", { ...input, pipeline_id: pipelineId }, { tool: "harness_diagnose" }, extra.signal);
|
|
86
|
-
const resp = asRecord(pipelineResp);
|
|
87
|
-
if (resp?.yamlPipeline && typeof resp.yamlPipeline === "string") {
|
|
88
|
-
const YAML = await import("yaml");
|
|
89
|
-
const parsed = parsePipelineYaml(YAML.parse(resp.yamlPipeline));
|
|
90
|
-
if (parsed)
|
|
91
|
-
archSvg = renderArchitectureSvg(parsed, { width: visualWidth });
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
catch (err) {
|
|
95
|
-
logDiag.warn("Failed to fetch pipeline for architecture diagram", { error: String(err) });
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
if (archSvg) {
|
|
100
|
-
return await mixedResult(result, archSvg);
|
|
101
|
-
}
|
|
102
|
-
// Fallback: timeline or flow from execution data
|
|
103
|
-
const summaryData = toExecutionSummaryData(result);
|
|
104
|
-
if (summaryData) {
|
|
105
|
-
const hasSteps = summaryData.stages.some((s) => s.steps.length > 0);
|
|
106
|
-
const svg = visualType === "flow"
|
|
107
|
-
? renderStageFlowSvg(summaryData, { width: visualWidth })
|
|
108
|
-
: renderTimelineSvg(summaryData, { width: visualWidth, showSteps: hasSteps });
|
|
109
|
-
return await mixedResult(result, svg);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
catch (err) {
|
|
113
|
-
logDiag.warn("SVG rendering failed, returning text-only", { error: String(err) });
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
61
|
return jsonResult(result);
|
|
117
62
|
}
|
|
118
63
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-diagnose.js","sourceRoot":"","sources":["../../src/tools/harness-diagnose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAK5B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"harness-diagnose.js","sourceRoot":"","sources":["../../src/tools/harness-diagnose.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-get.d.ts","sourceRoot":"","sources":["../../src/tools/harness-get.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;AAOjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"harness-get.d.ts","sourceRoot":"","sources":["../../src/tools/harness-get.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;AAOjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CA+HjI"}
|
|
@@ -24,6 +24,7 @@ export function registerGetTool(server, registry, client, searchManager) {
|
|
|
24
24
|
org_id: z.string().optional().describe("Organization identifier (overrides default)"),
|
|
25
25
|
project_id: z.string().optional().describe("Project identifier (overrides default)"),
|
|
26
26
|
params: z.record(z.string(), z.unknown()).optional().describe("Additional identifiers for nested resources. Call harness_describe for fields per resource_type."),
|
|
27
|
+
return_download_url: z.union([z.boolean(), z.enum(["true", "false"])]).optional().describe("For execution_log only: return a directly fetchable log download URL instead of buffering log content."),
|
|
27
28
|
},
|
|
28
29
|
outputSchema: getOutputSchema,
|
|
29
30
|
annotations: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-get.js","sourceRoot":"","sources":["../../src/tools/harness-get.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,qBAAqB,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1H,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC3G,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,QAAkB,EAAE,MAAqB,EAAE,aAA6B;IACzH,MAAM,aAAa,GAAG,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAE3D,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,iIAAiI;QAC9I,WAAW,EAAE;YACX,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YAC1H,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;YACnG,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;YAChG,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sKAAsK,CAAC;YACjP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACrF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YACpF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kGAAkG,CAAC;
|
|
1
|
+
{"version":3,"file":"harness-get.js","sourceRoot":"","sources":["../../src/tools/harness-get.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-list.d.ts","sourceRoot":"","sources":["../../src/tools/harness-list.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;
|
|
1
|
+
{"version":3,"file":"harness-list.d.ts","sourceRoot":"","sources":["../../src/tools/harness-list.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,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAqGlI"}
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import * as z from "zod/v4";
|
|
2
|
-
import { jsonResult, errorResult,
|
|
2
|
+
import { jsonResult, errorResult, normalizeHarnessListPayload } from "../utils/response-formatter.js";
|
|
3
3
|
import { isUserError, isUserFixableApiError, toMcpError, enrichErrorWithHint, HarnessApiError } from "../utils/errors.js";
|
|
4
4
|
import { compactItems } from "../utils/compact.js";
|
|
5
5
|
import { applyUrlDefaults } from "../utils/url-parser.js";
|
|
6
6
|
import { asString, isRecord, coerceRecord } from "../utils/type-guards.js";
|
|
7
|
-
import { renderListVisual } from "../utils/svg/list-visuals.js";
|
|
8
7
|
import { buildResourceIndexContent } from "../search/embedding-content.js";
|
|
9
8
|
import { buildEntityDocumentId, buildEntityMetadata, resolveEntityScope } from "../search/entity-index.js";
|
|
10
|
-
import { createLogger } from "../utils/logger.js";
|
|
11
9
|
import { resourceTypeSchema } from "./input-schemas.js";
|
|
12
10
|
import { listOutputSchema } from "./output-schemas.js";
|
|
13
|
-
const log = createLogger("list");
|
|
14
11
|
export function registerListTool(server, registry, client, searchManager) {
|
|
15
12
|
// Build a dynamic description for the filters param from all enabled resource definitions
|
|
16
13
|
const allFilterNames = registry.getAllFilterFields().map((f) => f.name);
|
|
@@ -32,8 +29,6 @@ export function registerListTool(server, registry, client, searchManager) {
|
|
|
32
29
|
compact: z.boolean().default(true).optional().describe("Strip verbose metadata from list items, keeping only essential fields (default true)"),
|
|
33
30
|
params: z.record(z.string(), z.unknown()).optional().describe("Additional identifiers for nested resources (e.g. repo_id for pull requests). Call harness_describe for fields per resource_type."),
|
|
34
31
|
filters: z.record(z.string(), z.unknown()).optional().describe(filtersDesc),
|
|
35
|
-
include_visual: z.boolean().default(false).optional().describe("Include an inline PNG chart of the results (default false). Supported for execution resource_type. Use when user asks for a visualization, chart, or graph."),
|
|
36
|
-
visual_type: z.enum(["timeseries", "bar", "pie"]).default("pie").optional().describe("Chart type when include_visual=true. 'timeseries' = daily execution counts, 'pie' = breakdown by status, 'bar' = breakdown by pipeline. Default 'pie'."),
|
|
37
32
|
},
|
|
38
33
|
outputSchema: listOutputSchema,
|
|
39
34
|
annotations: {
|
|
@@ -75,23 +70,6 @@ export function registerListTool(server, registry, client, searchManager) {
|
|
|
75
70
|
result.items = compactItems(items, compactFn);
|
|
76
71
|
}
|
|
77
72
|
}
|
|
78
|
-
// Visual rendering (opt-in)
|
|
79
|
-
if (args.include_visual && resourceType && isRecord(result)) {
|
|
80
|
-
const items = result.items;
|
|
81
|
-
if (Array.isArray(items)) {
|
|
82
|
-
try {
|
|
83
|
-
const vt = (args.visual_type ?? "pie");
|
|
84
|
-
const visual = renderListVisual(resourceType, items, vt);
|
|
85
|
-
if (visual) {
|
|
86
|
-
result.analysis = visual.analysis;
|
|
87
|
-
return await mixedResult(result, visual.svg);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
catch (err) {
|
|
91
|
-
log.warn("Visual rendering failed, returning text-only", { error: String(err) });
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
73
|
// Fire-and-forget: index items for semantic search (skipped in multi-user + local)
|
|
96
74
|
if (searchManager && isRecord(result) && Array.isArray(result.items)) {
|
|
97
75
|
const accountId = client.account;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-list.js","sourceRoot":"","sources":["../../src/tools/harness-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"harness-list.js","sourceRoot":"","sources":["../../src/tools/harness-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-status.d.ts","sourceRoot":"","sources":["../../src/tools/harness-status.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;
|
|
1
|
+
{"version":3,"file":"harness-status.d.ts","sourceRoot":"","sources":["../../src/tools/harness-status.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;AA6D3C,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,GACb,IAAI,CA+JN"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as z from "zod/v4";
|
|
2
|
-
import { jsonResult, errorResult
|
|
3
|
-
import { toProjectHealthData, renderStatusSummarySvg } from "../utils/svg/index.js";
|
|
2
|
+
import { jsonResult, errorResult } from "../utils/response-formatter.js";
|
|
4
3
|
import { buildDeepLink } from "../utils/deep-links.js";
|
|
5
4
|
import { isUserError, isUserFixableApiError, toMcpError } from "../utils/errors.js";
|
|
6
5
|
import { createLogger } from "../utils/logger.js";
|
|
@@ -41,7 +40,6 @@ export function registerStatusTool(server, registry, client, config) {
|
|
|
41
40
|
project_id: z.string().optional().describe("Project identifier (overrides default)"),
|
|
42
41
|
url: z.string().optional().describe("A Harness UI URL — org and project are extracted automatically"),
|
|
43
42
|
limit: z.number().default(5).optional().describe("Max items per section (default 5, max 20)"),
|
|
44
|
-
include_visual: z.boolean().default(false).optional().describe("Include visual health dashboard image (default false)"),
|
|
45
43
|
},
|
|
46
44
|
outputSchema: statusOutputSchema,
|
|
47
45
|
annotations: {
|
|
@@ -161,19 +159,6 @@ export function registerStatusTool(server, registry, client, config) {
|
|
|
161
159
|
if (Object.keys(errors).length > 0) {
|
|
162
160
|
status._errors = errors;
|
|
163
161
|
}
|
|
164
|
-
// Visual rendering (opt-in)
|
|
165
|
-
if (args.include_visual) {
|
|
166
|
-
try {
|
|
167
|
-
const healthData = toProjectHealthData(status, orgId, projectId);
|
|
168
|
-
if (healthData) {
|
|
169
|
-
const svg = renderStatusSummarySvg(healthData);
|
|
170
|
-
return await mixedResult(status, svg);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
catch (err) {
|
|
174
|
-
log.warn("SVG rendering failed, returning text-only", { error: String(err) });
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
162
|
return jsonResult(status);
|
|
178
163
|
}
|
|
179
164
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-status.js","sourceRoot":"","sources":["../../src/tools/harness-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAK5B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"harness-status.js","sourceRoot":"","sources":["../../src/tools/harness-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@ export declare const listOutputSchema: z.ZodObject<{
|
|
|
3
3
|
items: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>, z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
|
|
4
4
|
total: z.ZodOptional<z.ZodNumber>;
|
|
5
5
|
page: z.ZodOptional<z.ZodNumber>;
|
|
6
|
-
analysis: z.ZodOptional<z.ZodString>;
|
|
7
6
|
}, z.core.$catchall<z.ZodUnknown>>;
|
|
8
7
|
export declare const getOutputSchema: z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>;
|
|
9
8
|
export declare const createOutputSchema: z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-schemas.d.ts","sourceRoot":"","sources":["../../src/tools/output-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAM5B,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"output-schemas.d.ts","sourceRoot":"","sources":["../../src/tools/output-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAM5B,eAAO,MAAM,gBAAgB;;;;kCAIL,CAAC;AAGzB,eAAO,MAAM,eAAe,iDAAiG,CAAC;AAG9H,eAAO,MAAM,kBAAkB,iDAAyE,CAAC;AAGzG,eAAO,MAAM,kBAAkB,iDAAyE,CAAC;AAGzG,eAAO,MAAM,kBAAkB;;;;;;iBAU7B,CAAC;AAGH,eAAO,MAAM,mBAAmB,iDAA6G,CAAC;AAG9I,eAAO,MAAM,oBAAoB,iDAAiG,CAAC;AAGnI,eAAO,MAAM,kBAAkB;;;;;;;;;iBAS7B,CAAC;AAGH,eAAO,MAAM,oBAAoB,iDAA2G,CAAC;AAG7I,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;iBAe7B,CAAC;AAGH,eAAO,MAAM,kBAAkB,iDAA0F,CAAC"}
|
|
@@ -6,7 +6,6 @@ export const listOutputSchema = z.object({
|
|
|
6
6
|
items: z.array(z.union([dynamicObject, z.string(), z.number(), z.boolean()])).optional().describe("Array of resource objects or primitive values when the API returns a canonical list"),
|
|
7
7
|
total: z.number().optional().describe("Total number of matching resources when provided by the API"),
|
|
8
8
|
page: z.number().optional().describe("Current page number (0-indexed) when provided by the API"),
|
|
9
|
-
analysis: z.string().optional().describe("Visual analysis summary (when include_visual=true)"),
|
|
10
9
|
}).catchall(z.unknown());
|
|
11
10
|
// --- harness_get ---
|
|
12
11
|
export const getOutputSchema = z.object({}).catchall(z.unknown()).describe("Resource object — shape varies by resource_type");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-schemas.js","sourceRoot":"","sources":["../../src/tools/output-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,yGAAyG;AACzG,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAEzD,uBAAuB;AACvB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC;IACxL,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;IACpG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;
|
|
1
|
+
{"version":3,"file":"output-schemas.js","sourceRoot":"","sources":["../../src/tools/output-schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,6 @@
|
|
|
7
7
|
export type ContentItem = {
|
|
8
8
|
type: "text";
|
|
9
9
|
text: string;
|
|
10
|
-
} | {
|
|
11
|
-
type: "image";
|
|
12
|
-
data: string;
|
|
13
|
-
mimeType: string;
|
|
14
10
|
};
|
|
15
11
|
export interface ToolResult {
|
|
16
12
|
/** Required: MCP SDK's CallToolResult extends Result which has an index signature. */
|
|
@@ -32,10 +28,4 @@ export declare function normalizeHarnessListPayload(result: unknown, options?: {
|
|
|
32
28
|
}): unknown;
|
|
33
29
|
export declare function jsonResult(data: unknown): ToolResult;
|
|
34
30
|
export declare function errorResult(message: string): ToolResult;
|
|
35
|
-
export declare function imageResult(svgString: string): Promise<ToolResult>;
|
|
36
|
-
export interface MixedResultOptions {
|
|
37
|
-
/** Scale factor for PNG (default 3 for crisp inline display). */
|
|
38
|
-
scale?: number;
|
|
39
|
-
}
|
|
40
|
-
export declare function mixedResult(data: unknown, svgString: string, options?: MixedResultOptions): Promise<ToolResult>;
|
|
41
31
|
//# sourceMappingURL=response-formatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-formatter.d.ts","sourceRoot":"","sources":["../../src/utils/response-formatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"response-formatter.d.ts","sourceRoot":"","sources":["../../src/utils/response-formatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,sFAAsF;IACtF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CA6BT;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAQpD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAKvD"}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* Uses compact JSON (no indentation) to minimize token count for LLM consumers.
|
|
5
5
|
* Errors keep minimal formatting for readability in tool-call error surfaces.
|
|
6
6
|
*/
|
|
7
|
-
import { svgToPngBase64 } from "./svg/render-png.js";
|
|
8
7
|
/**
|
|
9
8
|
* Coerce registry list payloads into the `{ items, total?, page? }` shape expected by
|
|
10
9
|
* `harness_list`'s output schema and MCP `structuredContent` (objects only — raw arrays
|
|
@@ -59,24 +58,4 @@ export function errorResult(message) {
|
|
|
59
58
|
isError: true,
|
|
60
59
|
};
|
|
61
60
|
}
|
|
62
|
-
export async function imageResult(svgString) {
|
|
63
|
-
const data = await svgToPngBase64(svgString);
|
|
64
|
-
return {
|
|
65
|
-
content: [{ type: "image", data, mimeType: "image/png" }],
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
export async function mixedResult(data, svgString, options) {
|
|
69
|
-
const scale = options?.scale ?? 3;
|
|
70
|
-
const imageData = await svgToPngBase64(svgString, { scale });
|
|
71
|
-
return {
|
|
72
|
-
content: [
|
|
73
|
-
{ type: "text", text: JSON.stringify(data) },
|
|
74
|
-
{ type: "image", data: imageData, mimeType: "image/png" },
|
|
75
|
-
],
|
|
76
|
-
// MCP structuredContent must be an object; arrays and primitives are intentionally excluded.
|
|
77
|
-
...(data !== null && typeof data === "object" && !Array.isArray(data)
|
|
78
|
-
? { structuredContent: data }
|
|
79
|
-
: {}),
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
61
|
//# sourceMappingURL=response-formatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-formatter.js","sourceRoot":"","sources":["../../src/utils/response-formatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"response-formatter.js","sourceRoot":"","sources":["../../src/utils/response-formatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAe,EACf,OAA2B;IAE3B,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5E,MAAM,CAAC,GAAG,MAAiC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAU,EAAE,CAAC;gBAC9E,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBACnB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;oBACjE,OAAO;wBACL,GAAG,CAAC;wBACJ,KAAK,EAAE,GAAG;wBACV,KAAK;wBACL,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAChE,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC3D,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,6FAA6F;QAC7F,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACnE,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAA+B,EAAE;YACxD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACrE,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "harness-mcp-v2",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.8",
|
|
4
4
|
"description": "Give AI agents full access to the Harness.io platform — manage pipelines, deployments, cloud costs, chaos engineering, feature flags, SEI, and 125+ resource types through 11 MCP tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -52,7 +52,6 @@
|
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@hono/node-server": "^2.0.0",
|
|
54
54
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
55
|
-
"@resvg/resvg-js": "^2.6.2",
|
|
56
55
|
"dotenv": "^17.3.1",
|
|
57
56
|
"express": "^5.2.1",
|
|
58
57
|
"hono": "^4.12.25",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { ToolsetDefinition } from "../types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Local-only visualization resource types.
|
|
4
|
-
* These have no API operations — they exist purely as metadata for harness_describe
|
|
5
|
-
* so the LLM can discover what visual chart types are available and how to use them.
|
|
6
|
-
*/
|
|
7
|
-
export declare const visualizationsToolset: ToolsetDefinition;
|
|
8
|
-
//# sourceMappingURL=visualizations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"visualizations.d.ts","sourceRoot":"","sources":["../../../src/registry/toolsets/visualizations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,iBA6GnC,CAAC"}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local-only visualization resource types.
|
|
3
|
-
* These have no API operations — they exist purely as metadata for harness_describe
|
|
4
|
-
* so the LLM can discover what visual chart types are available and how to use them.
|
|
5
|
-
*/
|
|
6
|
-
export const visualizationsToolset = {
|
|
7
|
-
name: "visualizations",
|
|
8
|
-
displayName: "Visualizations",
|
|
9
|
-
description: "Inline PNG chart visualizations rendered from Harness data. Use include_visual=true on supported tools.",
|
|
10
|
-
resources: [
|
|
11
|
-
{
|
|
12
|
-
resourceType: "visual_timeline",
|
|
13
|
-
displayName: "Pipeline Timeline (Gantt)",
|
|
14
|
-
description: "Horizontal Gantt chart showing pipeline stage execution over time. Color-coded by status (green=success, red=failed, blue=running). Shows duration per stage and bottleneck identification.",
|
|
15
|
-
toolset: "visualizations",
|
|
16
|
-
scope: "project",
|
|
17
|
-
identifierFields: [],
|
|
18
|
-
operations: {},
|
|
19
|
-
diagnosticHint: [
|
|
20
|
-
"To render: call harness_diagnose with options: { include_visual: true, visual_type: 'timeline' }",
|
|
21
|
-
"Requires: an execution_id or pipeline_id (uses latest execution).",
|
|
22
|
-
"Also supports visual_width (number, default 800) for wider charts.",
|
|
23
|
-
"The response includes both JSON diagnosis data and an inline PNG image.",
|
|
24
|
-
].join("\n"),
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
resourceType: "visual_stage_flow",
|
|
28
|
-
displayName: "Pipeline Stage Flow (DAG)",
|
|
29
|
-
description: "Left-to-right flowchart showing pipeline stages as connected nodes with arrows. Status-colored borders, step count labels. Good for understanding pipeline structure.",
|
|
30
|
-
toolset: "visualizations",
|
|
31
|
-
scope: "project",
|
|
32
|
-
identifierFields: [],
|
|
33
|
-
operations: {},
|
|
34
|
-
diagnosticHint: [
|
|
35
|
-
"To render: call harness_diagnose with options: { include_visual: true, visual_type: 'flow' }",
|
|
36
|
-
"Requires: an execution_id or pipeline_id.",
|
|
37
|
-
"Also supports visual_width (number, default 800).",
|
|
38
|
-
].join("\n"),
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
resourceType: "visual_health_dashboard",
|
|
42
|
-
displayName: "Project Health Dashboard",
|
|
43
|
-
description: "Project health overview with health badge (healthy/degraded/failing), metric cards (failed, running, recent counts), and recent execution status bar.",
|
|
44
|
-
toolset: "visualizations",
|
|
45
|
-
scope: "project",
|
|
46
|
-
identifierFields: [],
|
|
47
|
-
operations: {},
|
|
48
|
-
diagnosticHint: [
|
|
49
|
-
"To render: call harness_status with include_visual: true",
|
|
50
|
-
"Optionally pass org_id and project_id to scope the dashboard.",
|
|
51
|
-
"The response includes both JSON health data and an inline PNG image.",
|
|
52
|
-
].join("\n"),
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
resourceType: "visual_pie_chart",
|
|
56
|
-
displayName: "Pie / Donut Chart",
|
|
57
|
-
description: "Donut chart showing execution breakdown by status (Success, Failed, Expired, etc.) with percentages. Includes auto-generated analysis with key insights.",
|
|
58
|
-
toolset: "visualizations",
|
|
59
|
-
scope: "project",
|
|
60
|
-
identifierFields: [],
|
|
61
|
-
operations: {},
|
|
62
|
-
diagnosticHint: [
|
|
63
|
-
"To render: call harness_list with resource_type='execution', include_visual: true, visual_type: 'pie'",
|
|
64
|
-
"The chart aggregates list results by execution status.",
|
|
65
|
-
"The response includes JSON data with an 'analysis' field and an inline PNG donut chart.",
|
|
66
|
-
].join("\n"),
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
resourceType: "visual_bar_chart",
|
|
70
|
-
displayName: "Bar Chart (by Pipeline)",
|
|
71
|
-
description: "Horizontal bar chart showing execution counts grouped by pipeline name. Useful for comparing activity across pipelines.",
|
|
72
|
-
toolset: "visualizations",
|
|
73
|
-
scope: "project",
|
|
74
|
-
identifierFields: [],
|
|
75
|
-
operations: {},
|
|
76
|
-
diagnosticHint: [
|
|
77
|
-
"To render: call harness_list with resource_type='execution', include_visual: true, visual_type: 'bar'",
|
|
78
|
-
"The chart aggregates list results by pipeline identifier.",
|
|
79
|
-
"The response includes JSON data with an 'analysis' field and an inline PNG bar chart.",
|
|
80
|
-
].join("\n"),
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
resourceType: "visual_timeseries",
|
|
84
|
-
displayName: "Execution Timeseries",
|
|
85
|
-
description: "Stacked bar chart showing daily execution counts over the last 30 days, broken down by status (Success/Failed/Expired/Running). Good for spotting trends.",
|
|
86
|
-
toolset: "visualizations",
|
|
87
|
-
scope: "project",
|
|
88
|
-
identifierFields: [],
|
|
89
|
-
operations: {},
|
|
90
|
-
diagnosticHint: [
|
|
91
|
-
"To render: call harness_list with resource_type='execution', include_visual: true, visual_type: 'timeseries'",
|
|
92
|
-
"Aggregates executions by day from startTs timestamps.",
|
|
93
|
-
"For best results, set size=100 to get more data points.",
|
|
94
|
-
"The response includes JSON data and an inline PNG stacked bar chart.",
|
|
95
|
-
].join("\n"),
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
resourceType: "visual_architecture",
|
|
99
|
-
displayName: "Pipeline Architecture Diagram",
|
|
100
|
-
description: "Multi-level architecture diagram showing the full pipeline hierarchy: stages → step groups → steps, with deployment strategy, service/environment refs, rollback paths, and failure handling. Parsed from pipeline YAML.",
|
|
101
|
-
toolset: "visualizations",
|
|
102
|
-
scope: "project",
|
|
103
|
-
identifierFields: [],
|
|
104
|
-
operations: {},
|
|
105
|
-
diagnosticHint: [
|
|
106
|
-
"To render: call harness_diagnose with options: { include_visual: true, visual_type: 'architecture', pipeline_id: '<id>', include_yaml: true }",
|
|
107
|
-
"The include_yaml: true option fetches the pipeline YAML which is parsed into the diagram.",
|
|
108
|
-
"Shows: Pipeline → Stages (with type badge: CI/Deployment/Approval) → Step Groups → Steps (with type + timeout).",
|
|
109
|
-
"For Deployment stages: shows strategy (Canary/Rolling/BlueGreen), service ref, environment ref, infrastructure type.",
|
|
110
|
-
"Rollback steps are shown in a separate red-highlighted section.",
|
|
111
|
-
"The response includes both JSON diagnosis data and an inline PNG architecture diagram.",
|
|
112
|
-
].join("\n"),
|
|
113
|
-
},
|
|
114
|
-
],
|
|
115
|
-
};
|
|
116
|
-
//# sourceMappingURL=visualizations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"visualizations.js","sourceRoot":"","sources":["../../../src/registry/toolsets/visualizations.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,yGAAyG;IACtH,SAAS,EAAE;QACT;YACE,YAAY,EAAE,iBAAiB;YAC/B,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE,6LAA6L;YAC1M,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,kGAAkG;gBAClG,mEAAmE;gBACnE,oEAAoE;gBACpE,yEAAyE;aAC1E,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,YAAY,EAAE,mBAAmB;YACjC,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE,uKAAuK;YACpL,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,8FAA8F;gBAC9F,2CAA2C;gBAC3C,mDAAmD;aACpD,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,YAAY,EAAE,yBAAyB;YACvC,WAAW,EAAE,0BAA0B;YACvC,WAAW,EAAE,uJAAuJ;YACpK,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,0DAA0D;gBAC1D,+DAA+D;gBAC/D,sEAAsE;aACvE,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,YAAY,EAAE,kBAAkB;YAChC,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,0JAA0J;YACvK,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,uGAAuG;gBACvG,wDAAwD;gBACxD,yFAAyF;aAC1F,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,YAAY,EAAE,kBAAkB;YAChC,WAAW,EAAE,yBAAyB;YACtC,WAAW,EAAE,yHAAyH;YACtI,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,uGAAuG;gBACvG,2DAA2D;gBAC3D,uFAAuF;aACxF,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,YAAY,EAAE,mBAAmB;YACjC,WAAW,EAAE,sBAAsB;YACnC,WAAW,EAAE,2JAA2J;YACxK,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,8GAA8G;gBAC9G,uDAAuD;gBACvD,yDAAyD;gBACzD,sEAAsE;aACvE,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,YAAY,EAAE,qBAAqB;YACnC,WAAW,EAAE,+BAA+B;YAC5C,WAAW,EAAE,0NAA0N;YACvO,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,+IAA+I;gBAC/I,2FAA2F;gBAC3F,iHAAiH;gBACjH,sHAAsH;gBACtH,iEAAiE;gBACjE,wFAAwF;aACzF,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;KACF;CACF,CAAC"}
|