kubeview-mcp 1.8.2 → 1.9.1
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/CHANGELOG.md +11 -1
- package/bin/kubeview-mcp.js +19 -2
- package/dist/src/plugins/HelmToolsPlugin.d.ts.map +1 -1
- package/dist/src/plugins/HelmToolsPlugin.js +2 -2
- package/dist/src/plugins/HelmToolsPlugin.js.map +1 -1
- package/dist/src/tools/helm/HelmDebugTool.d.ts +25 -0
- package/dist/src/tools/helm/HelmDebugTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmDebugTool.js +405 -0
- package/dist/src/tools/helm/HelmDebugTool.js.map +1 -0
- package/dist/src/tools/helm/HelmGetTool.d.ts.map +1 -1
- package/dist/src/tools/helm/HelmGetTool.js +11 -2
- package/dist/src/tools/helm/HelmGetTool.js.map +1 -1
- package/dist/src/tools/helm/index.d.ts +1 -0
- package/dist/src/tools/helm/index.d.ts.map +1 -1
- package/dist/src/tools/helm/index.js +1 -0
- package/dist/src/tools/helm/index.js.map +1 -1
- package/dist/src/utils/HelmLiveResources.d.ts +64 -0
- package/dist/src/utils/HelmLiveResources.d.ts.map +1 -0
- package/dist/src/utils/HelmLiveResources.js +442 -0
- package/dist/src/utils/HelmLiveResources.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/tests/helm/HelmDebugTool.test.d.ts +2 -0
- package/dist/tests/helm/HelmDebugTool.test.d.ts.map +1 -0
- package/dist/tests/helm/HelmDebugTool.test.js +261 -0
- package/dist/tests/helm/HelmDebugTool.test.js.map +1 -0
- package/dist/tests/helm/HelmGetTool.test.js +93 -0
- package/dist/tests/helm/HelmGetTool.test.js.map +1 -1
- package/dist/tests/utils/HelmLiveResources.test.d.ts +2 -0
- package/dist/tests/utils/HelmLiveResources.test.d.ts.map +1 -0
- package/dist/tests/utils/HelmLiveResources.test.js +110 -0
- package/dist/tests/utils/HelmLiveResources.test.js.map +1 -0
- package/package.json +4 -1
- package/scripts/build-version.js +19 -0
- package/src/agent/bridge/MCPBridge.ts +176 -0
- package/src/agent/codegen/CodegenManager.ts +334 -0
- package/src/agent/codegen/SchemaToTypeScriptMapper.ts +98 -0
- package/src/agent/codegen/ToolDescriptionBuilder.ts +258 -0
- package/src/agent/codegen/ToolSchemaIntrospector.ts +95 -0
- package/src/agent/codegen/types.ts +38 -0
- package/src/agent/config/CodeModeConfig.ts +48 -0
- package/src/agent/runtime/code-executor/CodeExecutor.ts +127 -0
- package/src/agent/runtime/code-executor/NodeVmCodeExecutor.ts +117 -0
- package/src/agent/runtime/createSandboxManager.ts +40 -0
- package/src/agent/runtime/ivm/IVMSandboxManager.ts +371 -0
- package/src/agent/runtime/types.ts +13 -0
- package/src/agent/runtime/vm/VmSandboxManager.ts +284 -0
- package/src/agent/security/PIITokenizer.ts +65 -0
- package/src/cli/cli.ts +25 -0
- package/src/cli/code-mode.ts +254 -0
- package/src/cli/run-command.js +682 -0
- package/src/index.ts +178 -0
- package/src/kubernetes/BaseResourceOperations.ts +286 -0
- package/src/kubernetes/CircuitBreaker.ts +485 -0
- package/src/kubernetes/ConnectionManager.ts +114 -0
- package/src/kubernetes/ConnectionPool.ts +551 -0
- package/src/kubernetes/ErrorHandler.ts +436 -0
- package/src/kubernetes/ErrorHandling.ts +401 -0
- package/src/kubernetes/KubernetesClient.ts +653 -0
- package/src/kubernetes/README.md +349 -0
- package/src/kubernetes/ResourceOperations.ts +116 -0
- package/src/kubernetes/RetryStrategy.ts +372 -0
- package/src/kubernetes/RetryableOperation.ts +313 -0
- package/src/kubernetes/docs/ResourceOperations.md +606 -0
- package/src/kubernetes/index.ts +116 -0
- package/src/kubernetes/resources/ConfigMapOperations.ts +368 -0
- package/src/kubernetes/resources/CustomResourceOperations.ts +392 -0
- package/src/kubernetes/resources/DeploymentOperations.ts +294 -0
- package/src/kubernetes/resources/HelmReleaseOperations.ts +536 -0
- package/src/kubernetes/resources/IngressOperations.ts +277 -0
- package/src/kubernetes/resources/MetricOperations.ts +1734 -0
- package/src/kubernetes/resources/NamespaceOperations.ts +129 -0
- package/src/kubernetes/resources/PersistentVolumeClaimOperations.ts +516 -0
- package/src/kubernetes/resources/PersistentVolumeOperations.ts +438 -0
- package/src/kubernetes/resources/PodOperations.ts +424 -0
- package/src/kubernetes/resources/SecretOperations.ts +314 -0
- package/src/kubernetes/resources/ServiceOperations.ts +283 -0
- package/src/kubernetes/utils/ResourceUtils.ts +553 -0
- package/src/plugins/ArgoCDToolsPlugin.ts +129 -0
- package/src/plugins/ArgoToolsPlugin.ts +130 -0
- package/src/plugins/BaseToolsPlugin.ts +148 -0
- package/src/plugins/HelmToolsPlugin.ts +129 -0
- package/src/plugins/KubernetesToolsPlugin.ts +232 -0
- package/src/plugins/SamplePlugin.ts +59 -0
- package/src/plugins/index.ts +4 -0
- package/src/server/MCPServer.ts +900 -0
- package/src/server/StreamableHttpRuntime.ts +391 -0
- package/src/server/TransportConfig.ts +95 -0
- package/src/tools/RunCodeTool.ts +777 -0
- package/src/tools/argo/ArgoCronListTool.ts +140 -0
- package/src/tools/argo/ArgoGetTool.ts +138 -0
- package/src/tools/argo/ArgoListTool.ts +262 -0
- package/src/tools/argo/ArgoLogsTool.ts +307 -0
- package/src/tools/argo/BaseTool.ts +104 -0
- package/src/tools/argo/index.ts +11 -0
- package/src/tools/argocd/ArgoCDAppGetTool.ts +109 -0
- package/src/tools/argocd/ArgoCDAppHistoryTool.ts +91 -0
- package/src/tools/argocd/ArgoCDAppListTool.ts +144 -0
- package/src/tools/argocd/ArgoCDAppResourcesTool.ts +139 -0
- package/src/tools/argocd/ArgoCDAppTool.ts +819 -0
- package/src/tools/argocd/BaseTool.ts +89 -0
- package/src/tools/argocd/index.ts +3 -0
- package/src/tools/helm/BaseTool.ts +61 -0
- package/src/tools/helm/HelmDebugTool.ts +486 -0
- package/src/tools/helm/HelmGetHooksTool.ts +45 -0
- package/src/tools/helm/HelmGetManifestTool.ts +45 -0
- package/src/tools/helm/HelmGetNotesTool.ts +45 -0
- package/src/tools/helm/HelmGetResourcesTool.ts +141 -0
- package/src/tools/helm/HelmGetTool.ts +260 -0
- package/src/tools/helm/HelmGetValuesTool.ts +71 -0
- package/src/tools/helm/HelmHistoryTool.ts +57 -0
- package/src/tools/helm/HelmListTool.ts +144 -0
- package/src/tools/helm/HelmListWithResourcesTool.ts +195 -0
- package/src/tools/helm/HelmStatusTool.ts +63 -0
- package/src/tools/helm/index.ts +5 -0
- package/src/tools/kubernetes/BaseTool.ts +76 -0
- package/src/tools/kubernetes/ExecTool.ts +308 -0
- package/src/tools/kubernetes/GetConfigMapTool.ts +33 -0
- package/src/tools/kubernetes/GetContainerLogsTool.ts +155 -0
- package/src/tools/kubernetes/GetCronJobsTool.ts +47 -0
- package/src/tools/kubernetes/GetDaemonSetsTool.ts +55 -0
- package/src/tools/kubernetes/GetDeploymentsTool.ts +33 -0
- package/src/tools/kubernetes/GetEndpointSlicesTool.ts +57 -0
- package/src/tools/kubernetes/GetEndpointsTool.ts +53 -0
- package/src/tools/kubernetes/GetEventsTool.ts +133 -0
- package/src/tools/kubernetes/GetHPATool.ts +48 -0
- package/src/tools/kubernetes/GetIngressTool.ts +39 -0
- package/src/tools/kubernetes/GetJobsTool.ts +54 -0
- package/src/tools/kubernetes/GetLimitRangesTool.ts +40 -0
- package/src/tools/kubernetes/GetMetricsTool.ts +61 -0
- package/src/tools/kubernetes/GetNamespacesTool.ts +36 -0
- package/src/tools/kubernetes/GetNodesTool.ts +55 -0
- package/src/tools/kubernetes/GetPDBTool.ts +48 -0
- package/src/tools/kubernetes/GetPersistentVolumeClaimsTool.ts +113 -0
- package/src/tools/kubernetes/GetPersistentVolumesTool.ts +107 -0
- package/src/tools/kubernetes/GetPodMetricsTool.ts +113 -0
- package/src/tools/kubernetes/GetPodsTool.ts +39 -0
- package/src/tools/kubernetes/GetReplicaSetsTool.ts +51 -0
- package/src/tools/kubernetes/GetResourceQuotaTool.ts +55 -0
- package/src/tools/kubernetes/GetResourceTool.ts +1296 -0
- package/src/tools/kubernetes/GetSecretsTool.ts +55 -0
- package/src/tools/kubernetes/GetServicesTool.ts +39 -0
- package/src/tools/kubernetes/GetStatefulSetsTool.ts +55 -0
- package/src/tools/kubernetes/KubeListTool.ts +1708 -0
- package/src/tools/kubernetes/KubeLogTool.ts +1063 -0
- package/src/tools/kubernetes/KubeMetricsTool.ts +220 -0
- package/src/tools/kubernetes/KubeNetTool.ts +481 -0
- package/src/tools/kubernetes/PortForwardTool.ts +307 -0
- package/src/tools/kubernetes/index.ts +10 -0
- package/src/tools/meta/PlanStepTool.ts +130 -0
- package/src/utils/CliUtils.ts +218 -0
- package/src/utils/CodeModeConfig.ts +47 -0
- package/src/utils/HelmDataParser.ts +230 -0
- package/src/utils/HelmLiveResources.ts +607 -0
- package/src/utils/McpToolResult.ts +32 -0
- package/src/utils/SensitiveData.ts +148 -0
- package/src/utils/toolNamespaces.ts +41 -0
- package/src/version.ts +2 -0
- package/tsconfig.json +37 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,12 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.9.1] - 2026-06-13
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **(fix) Fix the launch issue for claude desktop**
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## [1.9.0] - 2026-06-02
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- **Add robust HelmDebugTool for enhanced Helm release diagnostics**
|
|
20
|
+
|
|
10
21
|
## [1.8.2] - 2026-05-26
|
|
11
22
|
|
|
12
23
|
### Changed
|
|
13
24
|
- **Enhance MCP publishing workflow by adding home directory support for token management and login checks. Update qs to 6.15.2 for improved security.**
|
|
14
25
|
|
|
15
|
-
|
|
16
26
|
## [1.8.1] - 2026-05-19
|
|
17
27
|
|
|
18
28
|
### Changed
|
package/bin/kubeview-mcp.js
CHANGED
|
@@ -52,11 +52,11 @@ class KubeMCPCLI {
|
|
|
52
52
|
const nodeModulesPath = path.join(this.projectRoot, 'node_modules');
|
|
53
53
|
if (!fs.existsSync(nodeModulesPath)) {
|
|
54
54
|
this.log('📦 Installing dependencies...', colors.blue);
|
|
55
|
-
|
|
55
|
+
this.runCommandForMcpStartup('npm install');
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
// Build the project
|
|
59
|
-
|
|
59
|
+
this.runCommandForMcpStartup('npm run build');
|
|
60
60
|
this.log('✅ Build completed successfully', colors.green);
|
|
61
61
|
} catch (buildError) {
|
|
62
62
|
this.error('❌ Build failed:');
|
|
@@ -66,6 +66,23 @@ class KubeMCPCLI {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
runCommandForMcpStartup(command) {
|
|
70
|
+
try {
|
|
71
|
+
execSync(command, {
|
|
72
|
+
cwd: this.projectRoot,
|
|
73
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
74
|
+
});
|
|
75
|
+
} catch (error) {
|
|
76
|
+
if (error.stdout) {
|
|
77
|
+
process.stderr.write(error.stdout);
|
|
78
|
+
}
|
|
79
|
+
if (error.stderr) {
|
|
80
|
+
process.stderr.write(error.stderr);
|
|
81
|
+
}
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
69
86
|
// Display help information
|
|
70
87
|
displayHelp() {
|
|
71
88
|
this.log('Kube MCP - Kubernetes MCP Server', colors.cyan);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelmToolsPlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/HelmToolsPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,
|
|
1
|
+
{"version":3,"file":"HelmToolsPlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/HelmToolsPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,eAAe,CAAC,YAAY,CAAC;IAChE,IAAI,SAAgB;IAEpB,OAAO,CAAC,gBAAgB,CAAC,CAAwB;IAEjD,SAAS,CAAC,mBAAmB,IAAI,YAAY,EAAE;IAI/C,MAAM,CAAC,eAAe,IAAI,MAAM,EAAE;IAIlC,OAAO,CAAC,MAAM,CAAC,YAAY;IAgB3B,SAAS,CAAC,UAAU,IAAI,OAAO;WAMlB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IA2CzF,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YAUpC,mBAAmB;IAYjC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC;IAUxE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import winston from 'winston';
|
|
2
|
-
import { HelmListTool, HelmGetTool } from '../tools/helm/index.js';
|
|
2
|
+
import { HelmListTool, HelmGetTool, HelmDebugTool, } from '../tools/helm/index.js';
|
|
3
3
|
import { BaseToolsPlugin } from './BaseToolsPlugin.js';
|
|
4
4
|
import { KubernetesToolsPlugin } from './KubernetesToolsPlugin.js';
|
|
5
5
|
/**
|
|
@@ -9,7 +9,7 @@ export class HelmToolsPlugin extends BaseToolsPlugin {
|
|
|
9
9
|
name = 'helm-tools';
|
|
10
10
|
kubernetesPlugin;
|
|
11
11
|
createToolInstances() {
|
|
12
|
-
return [new HelmListTool(), new HelmGetTool()];
|
|
12
|
+
return [new HelmListTool(), new HelmGetTool(), new HelmDebugTool()];
|
|
13
13
|
}
|
|
14
14
|
static getCommandNames() {
|
|
15
15
|
return new HelmToolsPlugin().createToolInstances().map((tool) => tool.tool.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelmToolsPlugin.js","sourceRoot":"","sources":["../../../src/plugins/HelmToolsPlugin.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,
|
|
1
|
+
{"version":3,"file":"HelmToolsPlugin.js","sourceRoot":"","sources":["../../../src/plugins/HelmToolsPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
|
|
3
|
+
import { HelmBaseTool } from './BaseTool.js';
|
|
4
|
+
/**
|
|
5
|
+
* High-signal Helm release diagnostics backed by native Kubernetes API reads.
|
|
6
|
+
*/
|
|
7
|
+
export declare class HelmDebugTool implements HelmBaseTool {
|
|
8
|
+
tool: Tool;
|
|
9
|
+
execute(params: any, client?: KubernetesClient): Promise<any>;
|
|
10
|
+
private buildDiagnosis;
|
|
11
|
+
private diagnosisSummary;
|
|
12
|
+
private summarizeByKindAndState;
|
|
13
|
+
private extractWorkloads;
|
|
14
|
+
private isIssue;
|
|
15
|
+
private toIssue;
|
|
16
|
+
private toWorkloadSignal;
|
|
17
|
+
private toResourceSummary;
|
|
18
|
+
private statusFacts;
|
|
19
|
+
private summarizePodSignals;
|
|
20
|
+
private buildEventMap;
|
|
21
|
+
private resourceKey;
|
|
22
|
+
private compactObject;
|
|
23
|
+
private maskValuesIfNeeded;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=HelmDebugTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HelmDebugTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/helm/HelmDebugTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAYxE,OAAO,EAAE,YAAY,EAAqB,MAAM,eAAe,CAAC;AAEhE;;GAEG;AACH,qBAAa,aAAc,YAAW,YAAY;IAChD,IAAI,EAAE,IAAI,CA8DR;IAEI,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IA8FnE,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,OAAO;IAiBf,OAAO,CAAC,OAAO;IA8Bf,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,WAAW;IA2EnB,OAAO,CAAC,mBAAmB;IAwC3B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,kBAAkB;CAa3B"}
|
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import { HelmReleaseOperations } from '../../kubernetes/resources/HelmReleaseOperations.js';
|
|
2
|
+
import { getHelmLiveResources, getHelmResourceEvents, summarizeHelmResourceHealth, } from '../../utils/HelmLiveResources.js';
|
|
3
|
+
import { isSensitiveMaskEnabled, maskTextForSensitiveValues } from '../../utils/SensitiveData.js';
|
|
4
|
+
import { HelmCommonSchemas } from './BaseTool.js';
|
|
5
|
+
/**
|
|
6
|
+
* High-signal Helm release diagnostics backed by native Kubernetes API reads.
|
|
7
|
+
*/
|
|
8
|
+
export class HelmDebugTool {
|
|
9
|
+
tool = {
|
|
10
|
+
name: 'helm_debug',
|
|
11
|
+
description: 'Debug a Helm release by combining stored release data, live Kubernetes resource state, workload readiness, and correlated warning events.',
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
releaseName: HelmCommonSchemas.releaseName,
|
|
16
|
+
namespace: HelmCommonSchemas.namespace,
|
|
17
|
+
revision: HelmCommonSchemas.revision,
|
|
18
|
+
includeEvents: {
|
|
19
|
+
type: 'boolean',
|
|
20
|
+
description: 'Include recent Kubernetes events correlated to release resources',
|
|
21
|
+
optional: true,
|
|
22
|
+
default: true,
|
|
23
|
+
},
|
|
24
|
+
includeHistory: {
|
|
25
|
+
type: 'boolean',
|
|
26
|
+
description: 'Include Helm release revision history',
|
|
27
|
+
optional: true,
|
|
28
|
+
default: true,
|
|
29
|
+
},
|
|
30
|
+
historyLimit: {
|
|
31
|
+
type: 'number',
|
|
32
|
+
description: 'Maximum number of Helm release history entries to return',
|
|
33
|
+
optional: true,
|
|
34
|
+
default: 5,
|
|
35
|
+
},
|
|
36
|
+
includeValues: {
|
|
37
|
+
type: 'boolean',
|
|
38
|
+
description: 'Include computed Helm release values',
|
|
39
|
+
optional: true,
|
|
40
|
+
default: false,
|
|
41
|
+
},
|
|
42
|
+
includeManifest: {
|
|
43
|
+
type: 'boolean',
|
|
44
|
+
description: 'Include the rendered Helm manifest',
|
|
45
|
+
optional: true,
|
|
46
|
+
default: false,
|
|
47
|
+
},
|
|
48
|
+
eventLimit: {
|
|
49
|
+
type: 'number',
|
|
50
|
+
description: 'Maximum number of correlated events to return',
|
|
51
|
+
optional: true,
|
|
52
|
+
default: 10,
|
|
53
|
+
},
|
|
54
|
+
showAllResources: {
|
|
55
|
+
type: 'boolean',
|
|
56
|
+
description: 'Include concise state summaries for every rendered release resource',
|
|
57
|
+
optional: true,
|
|
58
|
+
default: false,
|
|
59
|
+
},
|
|
60
|
+
showRawKubernetesData: {
|
|
61
|
+
type: 'boolean',
|
|
62
|
+
description: 'Include raw live Kubernetes spec, status, labels, and annotations for deep inspection',
|
|
63
|
+
optional: true,
|
|
64
|
+
default: false,
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
required: ['releaseName'],
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
async execute(params, client) {
|
|
71
|
+
if (!client) {
|
|
72
|
+
throw new Error('helm_debug requires a Kubernetes client for native live resource lookup');
|
|
73
|
+
}
|
|
74
|
+
const { releaseName, namespace, revision, includeEvents = true, includeHistory = true, historyLimit = 5, includeValues = false, includeManifest = false, eventLimit = 10, showAllResources = false, showRawKubernetesData = false, } = params || {};
|
|
75
|
+
try {
|
|
76
|
+
await client.refreshCurrentContext();
|
|
77
|
+
const resolvedNamespace = namespace || client.getCurrentNamespace() || 'default';
|
|
78
|
+
const helmOps = new HelmReleaseOperations(client);
|
|
79
|
+
const release = await helmOps.getRelease({
|
|
80
|
+
releaseName,
|
|
81
|
+
namespace: resolvedNamespace,
|
|
82
|
+
revision,
|
|
83
|
+
});
|
|
84
|
+
const manifest = release.release.manifest || '';
|
|
85
|
+
const resources = await getHelmLiveResources(client, manifest, resolvedNamespace);
|
|
86
|
+
const events = includeEvents
|
|
87
|
+
? await getHelmResourceEvents(client, resources, Number(eventLimit) || 10)
|
|
88
|
+
: [];
|
|
89
|
+
const warningEvents = events.filter((event) => event.type === 'Warning');
|
|
90
|
+
const health = summarizeHelmResourceHealth(resources, events);
|
|
91
|
+
const eventMap = this.buildEventMap(warningEvents);
|
|
92
|
+
const allUnsupported = resources.length > 0 && resources.every((resource) => resource.state === 'unsupported');
|
|
93
|
+
const issues = resources
|
|
94
|
+
.filter((resource) => this.isIssue(resource, eventMap, allUnsupported))
|
|
95
|
+
.map((resource) => this.toIssue(resource, eventMap, showRawKubernetesData));
|
|
96
|
+
const result = {
|
|
97
|
+
diagnosis: this.buildDiagnosis(health, resources, issues),
|
|
98
|
+
release: {
|
|
99
|
+
...release.summary,
|
|
100
|
+
description: release.release.info?.description || '',
|
|
101
|
+
hasNotes: Boolean(release.release.info?.notes),
|
|
102
|
+
storageBackend: release.storageBackend,
|
|
103
|
+
},
|
|
104
|
+
health,
|
|
105
|
+
issues,
|
|
106
|
+
workloads: this.extractWorkloads(resources, showRawKubernetesData),
|
|
107
|
+
};
|
|
108
|
+
if (includeEvents) {
|
|
109
|
+
result.events = warningEvents;
|
|
110
|
+
}
|
|
111
|
+
if (includeHistory) {
|
|
112
|
+
const history = await helmOps.getReleaseHistory({
|
|
113
|
+
releaseName,
|
|
114
|
+
namespace: resolvedNamespace,
|
|
115
|
+
});
|
|
116
|
+
result.history = history.slice(0, Number(historyLimit) || 5).map((entry) => ({
|
|
117
|
+
revision: entry.revision,
|
|
118
|
+
updated: entry.updated,
|
|
119
|
+
status: entry.status,
|
|
120
|
+
chart: entry.chart,
|
|
121
|
+
app_version: entry.app_version,
|
|
122
|
+
description: entry.description,
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
if (showAllResources) {
|
|
126
|
+
result.resources = resources.map((resource) => this.toResourceSummary(resource, eventMap, showRawKubernetesData));
|
|
127
|
+
}
|
|
128
|
+
if (includeValues) {
|
|
129
|
+
result.values = this.maskValuesIfNeeded(await helmOps.getReleaseValues({ releaseName, namespace: resolvedNamespace, revision }, true));
|
|
130
|
+
}
|
|
131
|
+
if (includeManifest) {
|
|
132
|
+
result.manifest = manifest;
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
throw new Error(`Failed to debug Helm release '${releaseName}': ${error.message}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
buildDiagnosis(health, resources, issues) {
|
|
141
|
+
const issueCounts = {
|
|
142
|
+
total: issues.length,
|
|
143
|
+
missing: health.missing,
|
|
144
|
+
degraded: health.degraded,
|
|
145
|
+
unknown: health.unknown,
|
|
146
|
+
warningBacked: issues.filter((issue) => issue.warningEvents > 0).length,
|
|
147
|
+
};
|
|
148
|
+
const byKindAndState = this.summarizeByKindAndState(resources);
|
|
149
|
+
const nextTargets = issues.slice(0, 5).map((issue) => ({
|
|
150
|
+
kind: issue.kind,
|
|
151
|
+
name: issue.name,
|
|
152
|
+
namespace: issue.namespace,
|
|
153
|
+
reason: issue.reason || issue.state,
|
|
154
|
+
}));
|
|
155
|
+
return {
|
|
156
|
+
overall: health.overall,
|
|
157
|
+
summary: this.diagnosisSummary(health, issueCounts),
|
|
158
|
+
issueCounts,
|
|
159
|
+
byKindAndState,
|
|
160
|
+
nextTargets,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
diagnosisSummary(health, issueCounts) {
|
|
164
|
+
if (health.overall === 'healthy') {
|
|
165
|
+
return `Release appears healthy: ${health.ready}/${health.supported} supported resources are ready.`;
|
|
166
|
+
}
|
|
167
|
+
if (health.overall === 'missing') {
|
|
168
|
+
return `Release has missing resources: ${health.missing} expected resource(s) were not found.`;
|
|
169
|
+
}
|
|
170
|
+
if (health.overall === 'degraded') {
|
|
171
|
+
return `Release is degraded: ${issueCounts.total} issue(s), ${health.warningEvents} warning event(s).`;
|
|
172
|
+
}
|
|
173
|
+
return `Release health is unknown: ${health.unknown} resource lookup(s) need follow-up.`;
|
|
174
|
+
}
|
|
175
|
+
summarizeByKindAndState(resources) {
|
|
176
|
+
const summary = {};
|
|
177
|
+
for (const resource of resources) {
|
|
178
|
+
const kind = resource.ref.kind;
|
|
179
|
+
summary[kind] ||= {};
|
|
180
|
+
summary[kind][resource.state] = (summary[kind][resource.state] || 0) + 1;
|
|
181
|
+
}
|
|
182
|
+
return summary;
|
|
183
|
+
}
|
|
184
|
+
extractWorkloads(resources, showRawKubernetesData) {
|
|
185
|
+
const workloadKinds = new Set([
|
|
186
|
+
'Pod',
|
|
187
|
+
'Deployment',
|
|
188
|
+
'StatefulSet',
|
|
189
|
+
'DaemonSet',
|
|
190
|
+
'ReplicaSet',
|
|
191
|
+
'Job',
|
|
192
|
+
'CronJob',
|
|
193
|
+
]);
|
|
194
|
+
return resources
|
|
195
|
+
.filter((resource) => workloadKinds.has(resource.ref.kind) && resource.state !== 'ready')
|
|
196
|
+
.map((resource) => this.toWorkloadSignal(resource, showRawKubernetesData));
|
|
197
|
+
}
|
|
198
|
+
isIssue(resource, eventMap, allUnsupported) {
|
|
199
|
+
const warningEvents = eventMap.get(this.resourceKey(resource)) || [];
|
|
200
|
+
if (warningEvents.length > 0) {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
if (resource.state === 'unsupported') {
|
|
204
|
+
return allUnsupported;
|
|
205
|
+
}
|
|
206
|
+
return (resource.state === 'missing' || resource.state === 'degraded' || resource.state === 'unknown');
|
|
207
|
+
}
|
|
208
|
+
toIssue(resource, eventMap, showRawKubernetesData) {
|
|
209
|
+
const warningEvents = eventMap.get(this.resourceKey(resource)) || [];
|
|
210
|
+
const issue = {
|
|
211
|
+
kind: resource.ref.kind,
|
|
212
|
+
name: resource.ref.name,
|
|
213
|
+
namespace: resource.ref.namespace,
|
|
214
|
+
state: resource.state,
|
|
215
|
+
reason: resource.reason,
|
|
216
|
+
message: resource.message,
|
|
217
|
+
warningEvents: warningEvents.length,
|
|
218
|
+
evidence: this.statusFacts(resource),
|
|
219
|
+
};
|
|
220
|
+
if (warningEvents.length > 0) {
|
|
221
|
+
issue.latestWarnings = warningEvents.slice(0, 3).map((event) => ({
|
|
222
|
+
timestamp: event.timestamp,
|
|
223
|
+
reason: event.reason,
|
|
224
|
+
message: event.message,
|
|
225
|
+
count: event.count,
|
|
226
|
+
}));
|
|
227
|
+
}
|
|
228
|
+
if (showRawKubernetesData) {
|
|
229
|
+
issue.rawKubernetesData = resource.live;
|
|
230
|
+
}
|
|
231
|
+
return issue;
|
|
232
|
+
}
|
|
233
|
+
toWorkloadSignal(resource, showRawKubernetesData) {
|
|
234
|
+
const signal = {
|
|
235
|
+
kind: resource.ref.kind,
|
|
236
|
+
name: resource.ref.name,
|
|
237
|
+
namespace: resource.ref.namespace,
|
|
238
|
+
state: resource.state,
|
|
239
|
+
reason: resource.reason,
|
|
240
|
+
message: resource.message,
|
|
241
|
+
readiness: this.statusFacts(resource),
|
|
242
|
+
pods: this.summarizePodSignals(resource.pods || []),
|
|
243
|
+
};
|
|
244
|
+
if (showRawKubernetesData) {
|
|
245
|
+
signal.rawKubernetesData = resource.live;
|
|
246
|
+
}
|
|
247
|
+
return signal;
|
|
248
|
+
}
|
|
249
|
+
toResourceSummary(resource, eventMap, showRawKubernetesData) {
|
|
250
|
+
const summary = {
|
|
251
|
+
kind: resource.ref.kind,
|
|
252
|
+
apiVersion: resource.ref.apiVersion,
|
|
253
|
+
name: resource.ref.name,
|
|
254
|
+
namespace: resource.ref.namespace,
|
|
255
|
+
state: resource.state,
|
|
256
|
+
reason: resource.reason,
|
|
257
|
+
message: resource.message,
|
|
258
|
+
warningEvents: (eventMap.get(this.resourceKey(resource)) || []).length,
|
|
259
|
+
evidence: this.statusFacts(resource),
|
|
260
|
+
};
|
|
261
|
+
if (showRawKubernetesData) {
|
|
262
|
+
summary.rawKubernetesData = resource.live;
|
|
263
|
+
}
|
|
264
|
+
return summary;
|
|
265
|
+
}
|
|
266
|
+
statusFacts(resource) {
|
|
267
|
+
const status = resource.live?.status || {};
|
|
268
|
+
const spec = resource.live?.spec || {};
|
|
269
|
+
switch (resource.ref.kind) {
|
|
270
|
+
case 'Deployment':
|
|
271
|
+
case 'ReplicaSet':
|
|
272
|
+
case 'StatefulSet':
|
|
273
|
+
return this.compactObject({
|
|
274
|
+
desiredReplicas: spec.replicas,
|
|
275
|
+
replicas: status.replicas,
|
|
276
|
+
readyReplicas: status.readyReplicas,
|
|
277
|
+
availableReplicas: status.availableReplicas,
|
|
278
|
+
updatedReplicas: status.updatedReplicas,
|
|
279
|
+
});
|
|
280
|
+
case 'DaemonSet':
|
|
281
|
+
return this.compactObject({
|
|
282
|
+
desiredNumberScheduled: status.desiredNumberScheduled,
|
|
283
|
+
numberReady: status.numberReady,
|
|
284
|
+
numberAvailable: status.numberAvailable,
|
|
285
|
+
updatedNumberScheduled: status.updatedNumberScheduled,
|
|
286
|
+
});
|
|
287
|
+
case 'Job':
|
|
288
|
+
return this.compactObject({
|
|
289
|
+
completions: spec.completions,
|
|
290
|
+
active: status.active,
|
|
291
|
+
succeeded: status.succeeded,
|
|
292
|
+
failed: status.failed,
|
|
293
|
+
});
|
|
294
|
+
case 'CronJob':
|
|
295
|
+
return this.compactObject({
|
|
296
|
+
suspend: spec.suspend,
|
|
297
|
+
active: Array.isArray(status.active) ? status.active.length : undefined,
|
|
298
|
+
lastScheduleTime: status.lastScheduleTime,
|
|
299
|
+
lastSuccessfulTime: status.lastSuccessfulTime,
|
|
300
|
+
});
|
|
301
|
+
case 'Pod':
|
|
302
|
+
return this.compactObject({
|
|
303
|
+
phase: status.phase,
|
|
304
|
+
podIP: status.podIP,
|
|
305
|
+
nodeName: spec.nodeName,
|
|
306
|
+
});
|
|
307
|
+
case 'PersistentVolumeClaim':
|
|
308
|
+
return this.compactObject({
|
|
309
|
+
phase: status.phase,
|
|
310
|
+
accessModes: status.accessModes,
|
|
311
|
+
capacity: status.capacity,
|
|
312
|
+
});
|
|
313
|
+
case 'Service':
|
|
314
|
+
return this.compactObject({
|
|
315
|
+
type: spec.type,
|
|
316
|
+
clusterIP: spec.clusterIP,
|
|
317
|
+
externalName: spec.externalName,
|
|
318
|
+
loadBalancerIngress: status.loadBalancer?.ingress,
|
|
319
|
+
});
|
|
320
|
+
case 'Ingress':
|
|
321
|
+
return this.compactObject({
|
|
322
|
+
loadBalancerIngress: status.loadBalancer?.ingress,
|
|
323
|
+
});
|
|
324
|
+
case 'HorizontalPodAutoscaler':
|
|
325
|
+
return this.compactObject({
|
|
326
|
+
currentReplicas: status.currentReplicas,
|
|
327
|
+
desiredReplicas: status.desiredReplicas,
|
|
328
|
+
currentMetrics: status.currentMetrics,
|
|
329
|
+
});
|
|
330
|
+
case 'PodDisruptionBudget':
|
|
331
|
+
return this.compactObject({
|
|
332
|
+
currentHealthy: status.currentHealthy,
|
|
333
|
+
desiredHealthy: status.desiredHealthy,
|
|
334
|
+
disruptionsAllowed: status.disruptionsAllowed,
|
|
335
|
+
});
|
|
336
|
+
default:
|
|
337
|
+
return {};
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
summarizePodSignals(pods) {
|
|
341
|
+
const phaseCounts = {};
|
|
342
|
+
const waitingReasons = new Set();
|
|
343
|
+
const terminatedReasons = new Set();
|
|
344
|
+
let restartTotal = 0;
|
|
345
|
+
const problematicPods = [];
|
|
346
|
+
for (const pod of pods) {
|
|
347
|
+
const phase = pod.phase || 'Unknown';
|
|
348
|
+
phaseCounts[phase] = (phaseCounts[phase] || 0) + 1;
|
|
349
|
+
restartTotal += pod.restarts;
|
|
350
|
+
pod.waitingReasons.forEach((reason) => waitingReasons.add(reason));
|
|
351
|
+
pod.terminatedReasons.forEach((reason) => terminatedReasons.add(reason));
|
|
352
|
+
if (!pod.ready ||
|
|
353
|
+
pod.restarts > 0 ||
|
|
354
|
+
pod.waitingReasons.length > 0 ||
|
|
355
|
+
pod.terminatedReasons.length > 0) {
|
|
356
|
+
problematicPods.push({
|
|
357
|
+
name: pod.name,
|
|
358
|
+
phase: pod.phase,
|
|
359
|
+
ready: pod.ready,
|
|
360
|
+
restarts: pod.restarts,
|
|
361
|
+
waitingReasons: pod.waitingReasons,
|
|
362
|
+
terminatedReasons: pod.terminatedReasons,
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return {
|
|
367
|
+
total: pods.length,
|
|
368
|
+
phaseCounts,
|
|
369
|
+
restartTotal,
|
|
370
|
+
waitingReasons: Array.from(waitingReasons),
|
|
371
|
+
terminatedReasons: Array.from(terminatedReasons),
|
|
372
|
+
problematicPods: problematicPods.slice(0, 10),
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
buildEventMap(events) {
|
|
376
|
+
const map = new Map();
|
|
377
|
+
for (const event of events) {
|
|
378
|
+
const key = `${event.involvedObject.namespace || 'default'}/${event.involvedObject.kind}/${event.involvedObject.name}`;
|
|
379
|
+
const existing = map.get(key) || [];
|
|
380
|
+
existing.push(event);
|
|
381
|
+
map.set(key, existing);
|
|
382
|
+
}
|
|
383
|
+
return map;
|
|
384
|
+
}
|
|
385
|
+
resourceKey(resource) {
|
|
386
|
+
return `${resource.ref.namespace || 'default'}/${resource.ref.kind}/${resource.ref.name}`;
|
|
387
|
+
}
|
|
388
|
+
compactObject(input) {
|
|
389
|
+
return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== undefined && value !== null));
|
|
390
|
+
}
|
|
391
|
+
maskValuesIfNeeded(result) {
|
|
392
|
+
if (!isSensitiveMaskEnabled()) {
|
|
393
|
+
return result;
|
|
394
|
+
}
|
|
395
|
+
const json = JSON.stringify(result, null, 2);
|
|
396
|
+
const masked = maskTextForSensitiveValues(json);
|
|
397
|
+
try {
|
|
398
|
+
return JSON.parse(masked);
|
|
399
|
+
}
|
|
400
|
+
catch {
|
|
401
|
+
return masked;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
//# sourceMappingURL=HelmDebugTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HelmDebugTool.js","sourceRoot":"","sources":["../../../../src/tools/helm/HelmDebugTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelmGetTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/helm/HelmGetTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE,OAAO,EACL,YAAY,EAIb,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"HelmGetTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/helm/HelmGetTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE,OAAO,EACL,YAAY,EAIb,MAAM,eAAe,CAAC;AAIvB;;GAEG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,IAAI,EAAE,IAAI,CA2CR;IAEI,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IA2KnE,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,kBAAkB;CAsB3B"}
|
|
@@ -2,6 +2,7 @@ import { HelmReleaseOperations } from '../../kubernetes/resources/HelmReleaseOpe
|
|
|
2
2
|
import { parseManifestResources } from '../../utils/HelmDataParser.js';
|
|
3
3
|
import { HelmCommonSchemas, executeHelmCommand, validateHelmCLI, } from './BaseTool.js';
|
|
4
4
|
import { isSensitiveMaskEnabled, maskTextForSensitiveValues } from '../../utils/SensitiveData.js';
|
|
5
|
+
import { getHelmLiveResources } from '../../utils/HelmLiveResources.js';
|
|
5
6
|
/**
|
|
6
7
|
* Helm "get" tool covering values, manifest, notes, hooks, and resources.
|
|
7
8
|
*/
|
|
@@ -39,12 +40,17 @@ export class HelmGetTool {
|
|
|
39
40
|
description: 'Show the resources this release created (only for what=status)',
|
|
40
41
|
optional: true,
|
|
41
42
|
},
|
|
43
|
+
live: {
|
|
44
|
+
type: 'boolean',
|
|
45
|
+
description: 'Fetch live Kubernetes resource state when what=resources',
|
|
46
|
+
optional: true,
|
|
47
|
+
},
|
|
42
48
|
},
|
|
43
49
|
required: ['what', 'releaseName'],
|
|
44
50
|
},
|
|
45
51
|
};
|
|
46
52
|
async execute(params, client) {
|
|
47
|
-
const { what, releaseName, namespace, revision, outputFormat, allValues, resourceType, showResources, } = params || {};
|
|
53
|
+
const { what, releaseName, namespace, revision, outputFormat, allValues, resourceType, showResources, live, } = params || {};
|
|
48
54
|
let apiError;
|
|
49
55
|
if (client) {
|
|
50
56
|
try {
|
|
@@ -87,6 +93,9 @@ export class HelmGetTool {
|
|
|
87
93
|
namespace: resolvedNamespace,
|
|
88
94
|
revision,
|
|
89
95
|
});
|
|
96
|
+
if (live) {
|
|
97
|
+
return await getHelmLiveResources(client, manifest, resolvedNamespace, resourceType);
|
|
98
|
+
}
|
|
90
99
|
return parseManifestResources(manifest, resourceType);
|
|
91
100
|
}
|
|
92
101
|
case 'status': {
|
|
@@ -104,7 +113,7 @@ export class HelmGetTool {
|
|
|
104
113
|
notes: release.release.info?.notes || '',
|
|
105
114
|
};
|
|
106
115
|
if (showResources) {
|
|
107
|
-
status.resources =
|
|
116
|
+
status.resources = await getHelmLiveResources(client, release.release.manifest || '', resolvedNamespace);
|
|
108
117
|
}
|
|
109
118
|
return status;
|
|
110
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelmGetTool.js","sourceRoot":"","sources":["../../../../src/tools/helm/HelmGetTool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAEL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"HelmGetTool.js","sourceRoot":"","sources":["../../../../src/tools/helm/HelmGetTool.ts"],"names":[],"mappings":"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"}
|