kubeview-mcp 1.0.0
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/.prettierrc.json +11 -0
- package/CHANGELOG.md +55 -0
- package/LICENSE +21 -0
- package/README.md +251 -0
- package/RELEASE.md +154 -0
- package/TODO.md +0 -0
- package/bin/kubeview-mcp.js +274 -0
- package/bin/setup.js +368 -0
- package/dist/src/cli/cli.d.ts +3 -0
- package/dist/src/cli/cli.d.ts.map +1 -0
- package/dist/src/cli/cli.js +23 -0
- package/dist/src/cli/cli.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +45 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/kubernetes/BaseResourceOperations.d.ts +155 -0
- package/dist/src/kubernetes/BaseResourceOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/BaseResourceOperations.js +136 -0
- package/dist/src/kubernetes/BaseResourceOperations.js.map +1 -0
- package/dist/src/kubernetes/CircuitBreaker.d.ts +182 -0
- package/dist/src/kubernetes/CircuitBreaker.d.ts.map +1 -0
- package/dist/src/kubernetes/CircuitBreaker.js +369 -0
- package/dist/src/kubernetes/CircuitBreaker.js.map +1 -0
- package/dist/src/kubernetes/ConnectionManager.d.ts +60 -0
- package/dist/src/kubernetes/ConnectionManager.d.ts.map +1 -0
- package/dist/src/kubernetes/ConnectionManager.js +77 -0
- package/dist/src/kubernetes/ConnectionManager.js.map +1 -0
- package/dist/src/kubernetes/ConnectionPool.d.ts +183 -0
- package/dist/src/kubernetes/ConnectionPool.d.ts.map +1 -0
- package/dist/src/kubernetes/ConnectionPool.js +437 -0
- package/dist/src/kubernetes/ConnectionPool.js.map +1 -0
- package/dist/src/kubernetes/ErrorHandler.d.ts +172 -0
- package/dist/src/kubernetes/ErrorHandler.d.ts.map +1 -0
- package/dist/src/kubernetes/ErrorHandler.js +328 -0
- package/dist/src/kubernetes/ErrorHandler.js.map +1 -0
- package/dist/src/kubernetes/ErrorHandling.d.ts +148 -0
- package/dist/src/kubernetes/ErrorHandling.d.ts.map +1 -0
- package/dist/src/kubernetes/ErrorHandling.js +304 -0
- package/dist/src/kubernetes/ErrorHandling.js.map +1 -0
- package/dist/src/kubernetes/KubernetesClient.d.ts +162 -0
- package/dist/src/kubernetes/KubernetesClient.d.ts.map +1 -0
- package/dist/src/kubernetes/KubernetesClient.js +382 -0
- package/dist/src/kubernetes/KubernetesClient.js.map +1 -0
- package/dist/src/kubernetes/ResourceOperations.d.ts +69 -0
- package/dist/src/kubernetes/ResourceOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/ResourceOperations.js +99 -0
- package/dist/src/kubernetes/ResourceOperations.js.map +1 -0
- package/dist/src/kubernetes/RetryStrategy.d.ts +137 -0
- package/dist/src/kubernetes/RetryStrategy.d.ts.map +1 -0
- package/dist/src/kubernetes/RetryStrategy.js +277 -0
- package/dist/src/kubernetes/RetryStrategy.js.map +1 -0
- package/dist/src/kubernetes/RetryableOperation.d.ts +118 -0
- package/dist/src/kubernetes/RetryableOperation.d.ts.map +1 -0
- package/dist/src/kubernetes/RetryableOperation.js +233 -0
- package/dist/src/kubernetes/RetryableOperation.js.map +1 -0
- package/dist/src/kubernetes/index.d.ts +18 -0
- package/dist/src/kubernetes/index.d.ts.map +1 -0
- package/dist/src/kubernetes/index.js +28 -0
- package/dist/src/kubernetes/index.js.map +1 -0
- package/dist/src/kubernetes/resources/ConfigMapOperations.d.ts +60 -0
- package/dist/src/kubernetes/resources/ConfigMapOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/ConfigMapOperations.js +306 -0
- package/dist/src/kubernetes/resources/ConfigMapOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/CustomResourceOperations.d.ts +55 -0
- package/dist/src/kubernetes/resources/CustomResourceOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/CustomResourceOperations.js +363 -0
- package/dist/src/kubernetes/resources/CustomResourceOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/DeploymentOperations.d.ts +66 -0
- package/dist/src/kubernetes/resources/DeploymentOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/DeploymentOperations.js +234 -0
- package/dist/src/kubernetes/resources/DeploymentOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/IngressOperations.d.ts +60 -0
- package/dist/src/kubernetes/resources/IngressOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/IngressOperations.js +224 -0
- package/dist/src/kubernetes/resources/IngressOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/MetricOperations.d.ts +218 -0
- package/dist/src/kubernetes/resources/MetricOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/MetricOperations.js +893 -0
- package/dist/src/kubernetes/resources/MetricOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/NamespaceOperations.d.ts +38 -0
- package/dist/src/kubernetes/resources/NamespaceOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/NamespaceOperations.js +101 -0
- package/dist/src/kubernetes/resources/NamespaceOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.d.ts +109 -0
- package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.js +383 -0
- package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/PersistentVolumeOperations.d.ts +97 -0
- package/dist/src/kubernetes/resources/PersistentVolumeOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/PersistentVolumeOperations.js +321 -0
- package/dist/src/kubernetes/resources/PersistentVolumeOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/PodOperations.d.ts +99 -0
- package/dist/src/kubernetes/resources/PodOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/PodOperations.js +333 -0
- package/dist/src/kubernetes/resources/PodOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/SecretOperations.d.ts +71 -0
- package/dist/src/kubernetes/resources/SecretOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/SecretOperations.js +254 -0
- package/dist/src/kubernetes/resources/SecretOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/ServiceOperations.d.ts +64 -0
- package/dist/src/kubernetes/resources/ServiceOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/ServiceOperations.js +232 -0
- package/dist/src/kubernetes/resources/ServiceOperations.js.map +1 -0
- package/dist/src/kubernetes/utils/ResourceUtils.d.ts +238 -0
- package/dist/src/kubernetes/utils/ResourceUtils.d.ts.map +1 -0
- package/dist/src/kubernetes/utils/ResourceUtils.js +439 -0
- package/dist/src/kubernetes/utils/ResourceUtils.js.map +1 -0
- package/dist/src/plugins/ArgoCDToolsPlugin.d.ts +45 -0
- package/dist/src/plugins/ArgoCDToolsPlugin.d.ts.map +1 -0
- package/dist/src/plugins/ArgoCDToolsPlugin.js +155 -0
- package/dist/src/plugins/ArgoCDToolsPlugin.js.map +1 -0
- package/dist/src/plugins/ArgoToolsPlugin.d.ts +45 -0
- package/dist/src/plugins/ArgoToolsPlugin.d.ts.map +1 -0
- package/dist/src/plugins/ArgoToolsPlugin.js +149 -0
- package/dist/src/plugins/ArgoToolsPlugin.js.map +1 -0
- package/dist/src/plugins/HelmToolsPlugin.d.ts +41 -0
- package/dist/src/plugins/HelmToolsPlugin.d.ts.map +1 -0
- package/dist/src/plugins/HelmToolsPlugin.js +146 -0
- package/dist/src/plugins/HelmToolsPlugin.js.map +1 -0
- package/dist/src/plugins/KubernetesToolsPlugin.d.ts +44 -0
- package/dist/src/plugins/KubernetesToolsPlugin.d.ts.map +1 -0
- package/dist/src/plugins/KubernetesToolsPlugin.js +159 -0
- package/dist/src/plugins/KubernetesToolsPlugin.js.map +1 -0
- package/dist/src/plugins/SamplePlugin.d.ts +12 -0
- package/dist/src/plugins/SamplePlugin.d.ts.map +1 -0
- package/dist/src/plugins/SamplePlugin.js +51 -0
- package/dist/src/plugins/SamplePlugin.js.map +1 -0
- package/dist/src/plugins/index.d.ts +5 -0
- package/dist/src/plugins/index.d.ts.map +1 -0
- package/dist/src/plugins/index.js +5 -0
- package/dist/src/plugins/index.js.map +1 -0
- package/dist/src/server/MCPServer.d.ts +93 -0
- package/dist/src/server/MCPServer.d.ts.map +1 -0
- package/dist/src/server/MCPServer.js +398 -0
- package/dist/src/server/MCPServer.js.map +1 -0
- package/dist/src/tools/argo/ArgoCronListTool.d.ts +10 -0
- package/dist/src/tools/argo/ArgoCronListTool.d.ts.map +1 -0
- package/dist/src/tools/argo/ArgoCronListTool.js +70 -0
- package/dist/src/tools/argo/ArgoCronListTool.js.map +1 -0
- package/dist/src/tools/argo/ArgoGetTool.d.ts +10 -0
- package/dist/src/tools/argo/ArgoGetTool.d.ts.map +1 -0
- package/dist/src/tools/argo/ArgoGetTool.js +80 -0
- package/dist/src/tools/argo/ArgoGetTool.js.map +1 -0
- package/dist/src/tools/argo/ArgoListTool.d.ts +10 -0
- package/dist/src/tools/argo/ArgoListTool.d.ts.map +1 -0
- package/dist/src/tools/argo/ArgoListTool.js +133 -0
- package/dist/src/tools/argo/ArgoListTool.js.map +1 -0
- package/dist/src/tools/argo/ArgoLogsTool.d.ts +10 -0
- package/dist/src/tools/argo/ArgoLogsTool.d.ts.map +1 -0
- package/dist/src/tools/argo/ArgoLogsTool.js +117 -0
- package/dist/src/tools/argo/ArgoLogsTool.js.map +1 -0
- package/dist/src/tools/argo/BaseTool.d.ts +60 -0
- package/dist/src/tools/argo/BaseTool.d.ts.map +1 -0
- package/dist/src/tools/argo/BaseTool.js +51 -0
- package/dist/src/tools/argo/BaseTool.js.map +1 -0
- package/dist/src/tools/argo/index.d.ts +7 -0
- package/dist/src/tools/argo/index.d.ts.map +1 -0
- package/dist/src/tools/argo/index.js +6 -0
- package/dist/src/tools/argo/index.js.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppGetTool.d.ts +10 -0
- package/dist/src/tools/argocd/ArgoCDAppGetTool.d.ts.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppGetTool.js +97 -0
- package/dist/src/tools/argocd/ArgoCDAppGetTool.js.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppHistoryTool.d.ts +10 -0
- package/dist/src/tools/argocd/ArgoCDAppHistoryTool.d.ts.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppHistoryTool.js +80 -0
- package/dist/src/tools/argocd/ArgoCDAppHistoryTool.js.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppListTool.d.ts +10 -0
- package/dist/src/tools/argocd/ArgoCDAppListTool.d.ts.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppListTool.js +128 -0
- package/dist/src/tools/argocd/ArgoCDAppListTool.js.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppLogsTool.d.ts +10 -0
- package/dist/src/tools/argocd/ArgoCDAppLogsTool.d.ts.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppLogsTool.js +143 -0
- package/dist/src/tools/argocd/ArgoCDAppLogsTool.js.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppResourcesTool.d.ts +10 -0
- package/dist/src/tools/argocd/ArgoCDAppResourcesTool.d.ts.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppResourcesTool.js +123 -0
- package/dist/src/tools/argocd/ArgoCDAppResourcesTool.js.map +1 -0
- package/dist/src/tools/argocd/BaseTool.d.ts +71 -0
- package/dist/src/tools/argocd/BaseTool.d.ts.map +1 -0
- package/dist/src/tools/argocd/BaseTool.js +62 -0
- package/dist/src/tools/argocd/BaseTool.js.map +1 -0
- package/dist/src/tools/argocd/index.d.ts +8 -0
- package/dist/src/tools/argocd/index.d.ts.map +1 -0
- package/dist/src/tools/argocd/index.js +7 -0
- package/dist/src/tools/argocd/index.js.map +1 -0
- package/dist/src/tools/helm/BaseTool.d.ts +51 -0
- package/dist/src/tools/helm/BaseTool.d.ts.map +1 -0
- package/dist/src/tools/helm/BaseTool.js +42 -0
- package/dist/src/tools/helm/BaseTool.js.map +1 -0
- package/dist/src/tools/helm/HelmGetHooksTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmGetHooksTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmGetHooksTool.js +38 -0
- package/dist/src/tools/helm/HelmGetHooksTool.js.map +1 -0
- package/dist/src/tools/helm/HelmGetManifestTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmGetManifestTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmGetManifestTool.js +38 -0
- package/dist/src/tools/helm/HelmGetManifestTool.js.map +1 -0
- package/dist/src/tools/helm/HelmGetNotesTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmGetNotesTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmGetNotesTool.js +38 -0
- package/dist/src/tools/helm/HelmGetNotesTool.js.map +1 -0
- package/dist/src/tools/helm/HelmGetResourcesTool.d.ts +13 -0
- package/dist/src/tools/helm/HelmGetResourcesTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmGetResourcesTool.js +124 -0
- package/dist/src/tools/helm/HelmGetResourcesTool.js.map +1 -0
- package/dist/src/tools/helm/HelmGetValuesTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmGetValuesTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmGetValuesTool.js +54 -0
- package/dist/src/tools/helm/HelmGetValuesTool.js.map +1 -0
- package/dist/src/tools/helm/HelmHistoryTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmHistoryTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmHistoryTool.js +49 -0
- package/dist/src/tools/helm/HelmHistoryTool.js.map +1 -0
- package/dist/src/tools/helm/HelmListTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmListTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmListTool.js +107 -0
- package/dist/src/tools/helm/HelmListTool.js.map +1 -0
- package/dist/src/tools/helm/HelmListWithResourcesTool.d.ts +14 -0
- package/dist/src/tools/helm/HelmListWithResourcesTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmListWithResourcesTool.js +175 -0
- package/dist/src/tools/helm/HelmListWithResourcesTool.js.map +1 -0
- package/dist/src/tools/helm/HelmStatusTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmStatusTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmStatusTool.js +54 -0
- package/dist/src/tools/helm/HelmStatusTool.js.map +1 -0
- package/dist/src/tools/helm/index.d.ts +12 -0
- package/dist/src/tools/helm/index.d.ts.map +1 -0
- package/dist/src/tools/helm/index.js +11 -0
- package/dist/src/tools/helm/index.js.map +1 -0
- package/dist/src/tools/kubernetes/BaseTool.d.ts +48 -0
- package/dist/src/tools/kubernetes/BaseTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/BaseTool.js +55 -0
- package/dist/src/tools/kubernetes/BaseTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetConfigMapTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetConfigMapTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetConfigMapTool.js +28 -0
- package/dist/src/tools/kubernetes/GetConfigMapTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetContainerLogsTool.d.ts +15 -0
- package/dist/src/tools/kubernetes/GetContainerLogsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetContainerLogsTool.js +119 -0
- package/dist/src/tools/kubernetes/GetContainerLogsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetDeploymentsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetDeploymentsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetDeploymentsTool.js +30 -0
- package/dist/src/tools/kubernetes/GetDeploymentsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetEventsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetEventsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetEventsTool.js +123 -0
- package/dist/src/tools/kubernetes/GetEventsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetIngressTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetIngressTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetIngressTool.js +35 -0
- package/dist/src/tools/kubernetes/GetIngressTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetMetricsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetMetricsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetMetricsTool.js +40 -0
- package/dist/src/tools/kubernetes/GetMetricsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetNamespacesTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetNamespacesTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetNamespacesTool.js +33 -0
- package/dist/src/tools/kubernetes/GetNamespacesTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.js +92 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumesTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumesTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumesTool.js +88 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumesTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetPodMetricsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetPodMetricsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetPodMetricsTool.js +100 -0
- package/dist/src/tools/kubernetes/GetPodMetricsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetPodsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetPodsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetPodsTool.js +35 -0
- package/dist/src/tools/kubernetes/GetPodsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetResourceTool.d.ts +12 -0
- package/dist/src/tools/kubernetes/GetResourceTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetResourceTool.js +79 -0
- package/dist/src/tools/kubernetes/GetResourceTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetSecretsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetSecretsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetSecretsTool.js +49 -0
- package/dist/src/tools/kubernetes/GetSecretsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetServicesTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetServicesTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetServicesTool.js +35 -0
- package/dist/src/tools/kubernetes/GetServicesTool.js.map +1 -0
- package/dist/src/tools/kubernetes/index.d.ts +17 -0
- package/dist/src/tools/kubernetes/index.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/index.js +16 -0
- package/dist/src/tools/kubernetes/index.js.map +1 -0
- package/dist/src/utils/CliUtils.d.ts +24 -0
- package/dist/src/utils/CliUtils.d.ts.map +1 -0
- package/dist/src/utils/CliUtils.js +159 -0
- package/dist/src/utils/CliUtils.js.map +1 -0
- package/dist/tests/__mocks__/@kubernetes/client-node.d.ts +34 -0
- package/dist/tests/__mocks__/@kubernetes/client-node.d.ts.map +1 -0
- package/dist/tests/__mocks__/@kubernetes/client-node.js +20 -0
- package/dist/tests/__mocks__/@kubernetes/client-node.js.map +1 -0
- package/dist/tests/argo/ArgoGetTool.test.d.ts +2 -0
- package/dist/tests/argo/ArgoGetTool.test.d.ts.map +1 -0
- package/dist/tests/argo/ArgoGetTool.test.js +141 -0
- package/dist/tests/argo/ArgoGetTool.test.js.map +1 -0
- package/dist/tests/helm/BaseTool.test.d.ts +2 -0
- package/dist/tests/helm/BaseTool.test.d.ts.map +1 -0
- package/dist/tests/helm/BaseTool.test.js +241 -0
- package/dist/tests/helm/BaseTool.test.js.map +1 -0
- package/dist/tests/index.test.d.ts +2 -0
- package/dist/tests/index.test.d.ts.map +1 -0
- package/dist/tests/index.test.js +7 -0
- package/dist/tests/index.test.js.map +1 -0
- package/dist/tests/kubernetes/ConfigMapOperations.test.d.ts +2 -0
- package/dist/tests/kubernetes/ConfigMapOperations.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/ConfigMapOperations.test.js +460 -0
- package/dist/tests/kubernetes/ConfigMapOperations.test.js.map +1 -0
- package/dist/tests/kubernetes/ConnectionManager.test.d.ts +2 -0
- package/dist/tests/kubernetes/ConnectionManager.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/ConnectionManager.test.js +97 -0
- package/dist/tests/kubernetes/ConnectionManager.test.js.map +1 -0
- package/dist/tests/kubernetes/ConnectionPool.test.d.ts +2 -0
- package/dist/tests/kubernetes/ConnectionPool.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/ConnectionPool.test.js +328 -0
- package/dist/tests/kubernetes/ConnectionPool.test.js.map +1 -0
- package/dist/tests/kubernetes/DeploymentOperations.test.d.ts +2 -0
- package/dist/tests/kubernetes/DeploymentOperations.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/DeploymentOperations.test.js +196 -0
- package/dist/tests/kubernetes/DeploymentOperations.test.js.map +1 -0
- package/dist/tests/kubernetes/ErrorHandling.test.d.ts +2 -0
- package/dist/tests/kubernetes/ErrorHandling.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/ErrorHandling.test.js +329 -0
- package/dist/tests/kubernetes/ErrorHandling.test.js.map +1 -0
- package/dist/tests/kubernetes/GetPodMetricsTool.test.d.ts +2 -0
- package/dist/tests/kubernetes/GetPodMetricsTool.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/GetPodMetricsTool.test.js +150 -0
- package/dist/tests/kubernetes/GetPodMetricsTool.test.js.map +1 -0
- package/dist/tests/kubernetes/KubernetesClient.test.d.ts +2 -0
- package/dist/tests/kubernetes/KubernetesClient.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/KubernetesClient.test.js +371 -0
- package/dist/tests/kubernetes/KubernetesClient.test.js.map +1 -0
- package/dist/tests/kubernetes/MetricOperations.parsing.test.d.ts +2 -0
- package/dist/tests/kubernetes/MetricOperations.parsing.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/MetricOperations.parsing.test.js +49 -0
- package/dist/tests/kubernetes/MetricOperations.parsing.test.js.map +1 -0
- package/dist/tests/kubernetes/NamespaceOperations.test.d.ts +2 -0
- package/dist/tests/kubernetes/NamespaceOperations.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/NamespaceOperations.test.js +115 -0
- package/dist/tests/kubernetes/NamespaceOperations.test.js.map +1 -0
- package/dist/tests/kubernetes/PodOperations.test.d.ts +2 -0
- package/dist/tests/kubernetes/PodOperations.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/PodOperations.test.js +209 -0
- package/dist/tests/kubernetes/PodOperations.test.js.map +1 -0
- package/dist/tests/kubernetes/RetryStrategy.test.d.ts +2 -0
- package/dist/tests/kubernetes/RetryStrategy.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/RetryStrategy.test.js +419 -0
- package/dist/tests/kubernetes/RetryStrategy.test.js.map +1 -0
- package/dist/tests/kubernetes/ServiceOperations.test.d.ts +2 -0
- package/dist/tests/kubernetes/ServiceOperations.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/ServiceOperations.test.js +159 -0
- package/dist/tests/kubernetes/ServiceOperations.test.js.map +1 -0
- package/dist/tests/plugins/KubernetesToolsPlugin.test.d.ts +2 -0
- package/dist/tests/plugins/KubernetesToolsPlugin.test.d.ts.map +1 -0
- package/dist/tests/plugins/KubernetesToolsPlugin.test.js +153 -0
- package/dist/tests/plugins/KubernetesToolsPlugin.test.js.map +1 -0
- package/dist/tests/server/MCPServer.integration.test.d.ts +2 -0
- package/dist/tests/server/MCPServer.integration.test.d.ts.map +1 -0
- package/dist/tests/server/MCPServer.integration.test.js +244 -0
- package/dist/tests/server/MCPServer.integration.test.js.map +1 -0
- package/dist/tests/server/MCPServer.test.d.ts +2 -0
- package/dist/tests/server/MCPServer.test.d.ts.map +1 -0
- package/dist/tests/server/MCPServer.test.js +257 -0
- package/dist/tests/server/MCPServer.test.js.map +1 -0
- package/package.json +85 -0
- package/src/cli/cli.ts +25 -0
- package/src/cli/run-command.js +391 -0
- package/src/index.ts +46 -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 +500 -0
- package/src/kubernetes/README.md +349 -0
- package/src/kubernetes/ResourceOperations.ts +116 -0
- package/src/kubernetes/RetryStrategy.ts +365 -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 +367 -0
- package/src/kubernetes/resources/CustomResourceOperations.ts +392 -0
- package/src/kubernetes/resources/DeploymentOperations.ts +294 -0
- package/src/kubernetes/resources/IngressOperations.ts +277 -0
- package/src/kubernetes/resources/MetricOperations.ts +1159 -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 +417 -0
- package/src/kubernetes/resources/SecretOperations.ts +304 -0
- package/src/kubernetes/resources/ServiceOperations.ts +283 -0
- package/src/kubernetes/utils/ResourceUtils.ts +553 -0
- package/src/plugins/ArgoCDToolsPlugin.ts +189 -0
- package/src/plugins/ArgoToolsPlugin.ts +180 -0
- package/src/plugins/HelmToolsPlugin.ts +180 -0
- package/src/plugins/KubernetesToolsPlugin.ts +198 -0
- package/src/plugins/SamplePlugin.ts +60 -0
- package/src/plugins/index.ts +4 -0
- package/src/server/MCPServer.ts +500 -0
- package/src/tools/argo/ArgoCronListTool.ts +78 -0
- package/src/tools/argo/ArgoGetTool.ts +91 -0
- package/src/tools/argo/ArgoListTool.ts +143 -0
- package/src/tools/argo/ArgoLogsTool.ts +131 -0
- package/src/tools/argo/BaseTool.ts +69 -0
- package/src/tools/argo/index.ts +6 -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/ArgoCDAppLogsTool.ts +162 -0
- package/src/tools/argocd/ArgoCDAppResourcesTool.ts +139 -0
- package/src/tools/argocd/BaseTool.ts +83 -0
- package/src/tools/argocd/index.ts +7 -0
- package/src/tools/helm/BaseTool.ts +60 -0
- package/src/tools/helm/HelmGetHooksTool.ts +44 -0
- package/src/tools/helm/HelmGetManifestTool.ts +44 -0
- package/src/tools/helm/HelmGetNotesTool.ts +44 -0
- package/src/tools/helm/HelmGetResourcesTool.ts +140 -0
- package/src/tools/helm/HelmGetValuesTool.ts +62 -0
- package/src/tools/helm/HelmHistoryTool.ts +56 -0
- package/src/tools/helm/HelmListTool.ts +107 -0
- package/src/tools/helm/HelmListWithResourcesTool.ts +194 -0
- package/src/tools/helm/HelmStatusTool.ts +62 -0
- package/src/tools/helm/index.ts +11 -0
- package/src/tools/kubernetes/BaseTool.ts +76 -0
- package/src/tools/kubernetes/GetConfigMapTool.ts +33 -0
- package/src/tools/kubernetes/GetContainerLogsTool.ts +140 -0
- package/src/tools/kubernetes/GetDeploymentsTool.ts +33 -0
- package/src/tools/kubernetes/GetEventsTool.ts +133 -0
- package/src/tools/kubernetes/GetIngressTool.ts +39 -0
- package/src/tools/kubernetes/GetMetricsTool.ts +53 -0
- package/src/tools/kubernetes/GetNamespacesTool.ts +36 -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/GetResourceTool.ts +90 -0
- package/src/tools/kubernetes/GetSecretsTool.ts +55 -0
- package/src/tools/kubernetes/GetServicesTool.ts +39 -0
- package/src/tools/kubernetes/index.ts +16 -0
- package/src/utils/CliUtils.ts +207 -0
- package/tsconfig.json +36 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Kubernetes MCP Server
|
|
4
|
+
* Main entry point for the Model Context Protocol server
|
|
5
|
+
*/
|
|
6
|
+
import { MCPServer } from './server/MCPServer.js';
|
|
7
|
+
import { KubernetesToolsPlugin } from './plugins/KubernetesToolsPlugin.js';
|
|
8
|
+
import { HelmToolsPlugin } from './plugins/HelmToolsPlugin.js';
|
|
9
|
+
import { ArgoToolsPlugin } from './plugins/ArgoToolsPlugin.js';
|
|
10
|
+
import { ArgoCDToolsPlugin } from './plugins/ArgoCDToolsPlugin.js';
|
|
11
|
+
export const VERSION = '0.1.0';
|
|
12
|
+
export async function main() {
|
|
13
|
+
console.error(`Kubernetes MCP Server v${VERSION} - Starting...`);
|
|
14
|
+
try {
|
|
15
|
+
// Create and start the MCP server
|
|
16
|
+
const server = new MCPServer();
|
|
17
|
+
// Load the Kubernetes tools plugin
|
|
18
|
+
const kubernetesPlugin = new KubernetesToolsPlugin();
|
|
19
|
+
await server.loadPlugin(kubernetesPlugin);
|
|
20
|
+
// Load the Helm tools plugin
|
|
21
|
+
const helmPlugin = new HelmToolsPlugin();
|
|
22
|
+
await server.loadPlugin(helmPlugin);
|
|
23
|
+
// Load the Argo tools plugin
|
|
24
|
+
const argoPlugin = new ArgoToolsPlugin();
|
|
25
|
+
await server.loadPlugin(argoPlugin);
|
|
26
|
+
// Load the ArgoCD tools plugin
|
|
27
|
+
const argoCDPlugin = new ArgoCDToolsPlugin();
|
|
28
|
+
await server.loadPlugin(argoCDPlugin);
|
|
29
|
+
// Start the server
|
|
30
|
+
await server.start();
|
|
31
|
+
console.error('MCP Server is running. Waiting for connections...');
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.error('Failed to start MCP server:', error);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// If this file is being run directly (not imported), start the server
|
|
39
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
40
|
+
main().catch((error) => {
|
|
41
|
+
console.error('Failed to start server:', error);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,gBAAgB,CAAC,CAAC;IAEjE,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAE/B,mCAAmC;QACnC,MAAM,gBAAgB,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACrD,MAAM,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAE1C,6BAA6B;QAC7B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEpC,6BAA6B;QAC7B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEpC,+BAA+B;QAC/B,MAAM,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAEtC,mBAAmB;QACnB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAErB,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import * as k8s from '@kubernetes/client-node';
|
|
2
|
+
import { Logger } from 'winston';
|
|
3
|
+
import { KubernetesClient } from './KubernetesClient.js';
|
|
4
|
+
import { RetryableOperationFactory, RetryableOperation } from './RetryableOperation.js';
|
|
5
|
+
import { ErrorMonitor } from './ErrorHandling.js';
|
|
6
|
+
/**
|
|
7
|
+
* Common options for resource operations
|
|
8
|
+
*/
|
|
9
|
+
export interface ResourceOperationOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Namespace for the operation (required for namespaced resources)
|
|
12
|
+
*/
|
|
13
|
+
namespace?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Label selector for filtering resources
|
|
16
|
+
*/
|
|
17
|
+
labelSelector?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Field selector for filtering resources
|
|
20
|
+
*/
|
|
21
|
+
fieldSelector?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Maximum number of results to return
|
|
24
|
+
*/
|
|
25
|
+
limit?: number;
|
|
26
|
+
/**
|
|
27
|
+
* Continue token for pagination
|
|
28
|
+
*/
|
|
29
|
+
continueToken?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Resource version for optimistic concurrency control
|
|
32
|
+
*/
|
|
33
|
+
resourceVersion?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Timeout in seconds for the operation
|
|
36
|
+
*/
|
|
37
|
+
timeoutSeconds?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Whether to propagate deletion to dependents
|
|
40
|
+
*/
|
|
41
|
+
propagationPolicy?: 'Foreground' | 'Background' | 'Orphan';
|
|
42
|
+
/**
|
|
43
|
+
* Grace period seconds for deletion
|
|
44
|
+
*/
|
|
45
|
+
gracePeriodSeconds?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Whether to sanitize sensitive data in ConfigMaps and Secrets
|
|
48
|
+
*/
|
|
49
|
+
skipSanitize?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Watch event types
|
|
53
|
+
*/
|
|
54
|
+
export declare enum WatchEventType {
|
|
55
|
+
ADDED = "ADDED",
|
|
56
|
+
MODIFIED = "MODIFIED",
|
|
57
|
+
DELETED = "DELETED",
|
|
58
|
+
ERROR = "ERROR"
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Watch event interface
|
|
62
|
+
*/
|
|
63
|
+
export interface WatchEvent<T> {
|
|
64
|
+
type: WatchEventType;
|
|
65
|
+
object: T;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Watch callback function
|
|
69
|
+
*/
|
|
70
|
+
export type WatchCallback<T> = (event: WatchEvent<T>) => void;
|
|
71
|
+
/**
|
|
72
|
+
* Generic interface for resource operations
|
|
73
|
+
*/
|
|
74
|
+
export interface IResourceOperations<T extends k8s.KubernetesObject> {
|
|
75
|
+
/**
|
|
76
|
+
* Create a new resource
|
|
77
|
+
*/
|
|
78
|
+
create(resource: T, options?: ResourceOperationOptions): Promise<T>;
|
|
79
|
+
/**
|
|
80
|
+
* Get a resource by name
|
|
81
|
+
*/
|
|
82
|
+
get(name: string, options?: ResourceOperationOptions): Promise<T>;
|
|
83
|
+
/**
|
|
84
|
+
* Update an existing resource
|
|
85
|
+
*/
|
|
86
|
+
update(resource: T, options?: ResourceOperationOptions): Promise<T>;
|
|
87
|
+
/**
|
|
88
|
+
* Patch a resource
|
|
89
|
+
*/
|
|
90
|
+
patch(name: string, patch: any, options?: ResourceOperationOptions): Promise<T>;
|
|
91
|
+
/**
|
|
92
|
+
* Delete a resource
|
|
93
|
+
*/
|
|
94
|
+
delete(name: string, options?: ResourceOperationOptions): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* List resources
|
|
97
|
+
*/
|
|
98
|
+
list(options?: ResourceOperationOptions): Promise<k8s.KubernetesListObject<T>>;
|
|
99
|
+
/**
|
|
100
|
+
* Watch resources for changes
|
|
101
|
+
*/
|
|
102
|
+
watch(callback: WatchCallback<T>, options?: ResourceOperationOptions): () => void;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Error class for Kubernetes operations
|
|
106
|
+
*/
|
|
107
|
+
export declare class KubernetesOperationError extends Error {
|
|
108
|
+
readonly statusCode?: number | undefined;
|
|
109
|
+
readonly resource?: string | undefined;
|
|
110
|
+
readonly operation?: string | undefined;
|
|
111
|
+
constructor(message: string, statusCode?: number | undefined, resource?: string | undefined, operation?: string | undefined);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Base class for resource operations with integrated retry and error handling
|
|
115
|
+
*/
|
|
116
|
+
export declare abstract class BaseResourceOperations<T extends k8s.KubernetesObject> implements IResourceOperations<T> {
|
|
117
|
+
protected client: KubernetesClient;
|
|
118
|
+
protected resourceType: string;
|
|
119
|
+
protected logger?: Logger;
|
|
120
|
+
protected retryFactory: RetryableOperationFactory;
|
|
121
|
+
protected errorMonitor: ErrorMonitor;
|
|
122
|
+
constructor(client: KubernetesClient, resourceType: string);
|
|
123
|
+
/**
|
|
124
|
+
* Get or create a retryable operation for a specific action
|
|
125
|
+
*/
|
|
126
|
+
protected getRetryableOperation<R>(operationName: string): RetryableOperation<R>;
|
|
127
|
+
/**
|
|
128
|
+
* Handle API errors and convert to KubernetesOperationError
|
|
129
|
+
*/
|
|
130
|
+
protected handleApiError(error: any, operation: string, resourceName?: string): never;
|
|
131
|
+
/**
|
|
132
|
+
* Build list options from ResourceOperationOptions
|
|
133
|
+
*/
|
|
134
|
+
protected buildListOptions(options?: ResourceOperationOptions): any;
|
|
135
|
+
/**
|
|
136
|
+
* Build delete options from ResourceOperationOptions
|
|
137
|
+
*/
|
|
138
|
+
protected buildDeleteOptions(options?: ResourceOperationOptions): k8s.V1DeleteOptions;
|
|
139
|
+
/**
|
|
140
|
+
* Get error statistics for this resource type
|
|
141
|
+
*/
|
|
142
|
+
getErrorStats(): import("./ErrorHandling.js").ErrorStats;
|
|
143
|
+
/**
|
|
144
|
+
* Reset circuit breakers for all operations
|
|
145
|
+
*/
|
|
146
|
+
resetCircuits(): void;
|
|
147
|
+
abstract create(resource: T, options?: ResourceOperationOptions): Promise<T>;
|
|
148
|
+
abstract get(name: string, options?: ResourceOperationOptions): Promise<T>;
|
|
149
|
+
abstract update(resource: T, options?: ResourceOperationOptions): Promise<T>;
|
|
150
|
+
abstract patch(name: string, patch: any, options?: ResourceOperationOptions): Promise<T>;
|
|
151
|
+
abstract delete(name: string, options?: ResourceOperationOptions): Promise<void>;
|
|
152
|
+
abstract list(options?: ResourceOperationOptions): Promise<k8s.KubernetesListObject<T>>;
|
|
153
|
+
abstract watch(callback: WatchCallback<T>, options?: ResourceOperationOptions): () => void;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=BaseResourceOperations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseResourceOperations.d.ts","sourceRoot":"","sources":["../../../src/kubernetes/BaseResourceOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { RetryableOperationFactory } from './RetryableOperation.js';
|
|
2
|
+
import { ErrorMonitor, KubernetesError, convertApiError } from './ErrorHandling.js';
|
|
3
|
+
/**
|
|
4
|
+
* Watch event types
|
|
5
|
+
*/
|
|
6
|
+
export var WatchEventType;
|
|
7
|
+
(function (WatchEventType) {
|
|
8
|
+
WatchEventType["ADDED"] = "ADDED";
|
|
9
|
+
WatchEventType["MODIFIED"] = "MODIFIED";
|
|
10
|
+
WatchEventType["DELETED"] = "DELETED";
|
|
11
|
+
WatchEventType["ERROR"] = "ERROR";
|
|
12
|
+
})(WatchEventType || (WatchEventType = {}));
|
|
13
|
+
/**
|
|
14
|
+
* Error class for Kubernetes operations
|
|
15
|
+
*/
|
|
16
|
+
export class KubernetesOperationError extends Error {
|
|
17
|
+
statusCode;
|
|
18
|
+
resource;
|
|
19
|
+
operation;
|
|
20
|
+
constructor(message, statusCode, resource, operation) {
|
|
21
|
+
super(message);
|
|
22
|
+
this.statusCode = statusCode;
|
|
23
|
+
this.resource = resource;
|
|
24
|
+
this.operation = operation;
|
|
25
|
+
this.name = 'KubernetesOperationError';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Base class for resource operations with integrated retry and error handling
|
|
30
|
+
*/
|
|
31
|
+
export class BaseResourceOperations {
|
|
32
|
+
client;
|
|
33
|
+
resourceType;
|
|
34
|
+
logger;
|
|
35
|
+
retryFactory;
|
|
36
|
+
errorMonitor;
|
|
37
|
+
constructor(client, resourceType) {
|
|
38
|
+
this.client = client;
|
|
39
|
+
this.resourceType = resourceType;
|
|
40
|
+
this.logger = client['config'].logger;
|
|
41
|
+
this.errorMonitor = new ErrorMonitor(this.logger);
|
|
42
|
+
// Initialize retry factory with default configuration
|
|
43
|
+
this.retryFactory = new RetryableOperationFactory({
|
|
44
|
+
retry: {
|
|
45
|
+
maxAttempts: 3,
|
|
46
|
+
initialDelayMs: 100,
|
|
47
|
+
maxDelayMs: 5000,
|
|
48
|
+
backoffMultiplier: 2,
|
|
49
|
+
jitterFactor: 0.1,
|
|
50
|
+
},
|
|
51
|
+
circuitBreaker: {
|
|
52
|
+
failureThreshold: 5,
|
|
53
|
+
successThreshold: 2,
|
|
54
|
+
resetTimeout: 30000,
|
|
55
|
+
failureCountWindow: 10000,
|
|
56
|
+
},
|
|
57
|
+
errorMonitor: this.errorMonitor,
|
|
58
|
+
logger: this.logger,
|
|
59
|
+
}, this.logger);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get or create a retryable operation for a specific action
|
|
63
|
+
*/
|
|
64
|
+
getRetryableOperation(operationName) {
|
|
65
|
+
return this.retryFactory.create(`${this.resourceType}.${operationName}`);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Handle API errors and convert to KubernetesOperationError
|
|
69
|
+
*/
|
|
70
|
+
handleApiError(error, operation, resourceName) {
|
|
71
|
+
// Convert to typed error
|
|
72
|
+
let typedError = error instanceof KubernetesError ? error : convertApiError(error);
|
|
73
|
+
// Add resource context by creating a new error with additional details
|
|
74
|
+
if (resourceName && typedError instanceof KubernetesError) {
|
|
75
|
+
const newError = new KubernetesError(typedError.message, typedError.code, typedError.statusCode, typedError.retryable, {
|
|
76
|
+
...typedError.details,
|
|
77
|
+
resource: this.resourceType,
|
|
78
|
+
resourceName,
|
|
79
|
+
operation,
|
|
80
|
+
});
|
|
81
|
+
typedError = newError;
|
|
82
|
+
}
|
|
83
|
+
throw typedError;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Build list options from ResourceOperationOptions
|
|
87
|
+
*/
|
|
88
|
+
buildListOptions(options) {
|
|
89
|
+
const listOptions = {};
|
|
90
|
+
if (options?.labelSelector) {
|
|
91
|
+
listOptions.labelSelector = options.labelSelector;
|
|
92
|
+
}
|
|
93
|
+
if (options?.fieldSelector) {
|
|
94
|
+
listOptions.fieldSelector = options.fieldSelector;
|
|
95
|
+
}
|
|
96
|
+
if (options?.limit) {
|
|
97
|
+
listOptions.limit = options.limit;
|
|
98
|
+
}
|
|
99
|
+
if (options?.continueToken) {
|
|
100
|
+
listOptions.continue = options.continueToken;
|
|
101
|
+
}
|
|
102
|
+
if (options?.resourceVersion) {
|
|
103
|
+
listOptions.resourceVersion = options.resourceVersion;
|
|
104
|
+
}
|
|
105
|
+
if (options?.timeoutSeconds) {
|
|
106
|
+
listOptions.timeoutSeconds = options.timeoutSeconds;
|
|
107
|
+
}
|
|
108
|
+
return listOptions;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Build delete options from ResourceOperationOptions
|
|
112
|
+
*/
|
|
113
|
+
buildDeleteOptions(options) {
|
|
114
|
+
const deleteOptions = {};
|
|
115
|
+
if (options?.propagationPolicy) {
|
|
116
|
+
deleteOptions.propagationPolicy = options.propagationPolicy;
|
|
117
|
+
}
|
|
118
|
+
if (options?.gracePeriodSeconds !== undefined) {
|
|
119
|
+
deleteOptions.gracePeriodSeconds = options.gracePeriodSeconds;
|
|
120
|
+
}
|
|
121
|
+
return deleteOptions;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get error statistics for this resource type
|
|
125
|
+
*/
|
|
126
|
+
getErrorStats() {
|
|
127
|
+
return this.errorMonitor.getStats();
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Reset circuit breakers for all operations
|
|
131
|
+
*/
|
|
132
|
+
resetCircuits() {
|
|
133
|
+
this.retryFactory.resetAllCircuits();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=BaseResourceOperations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseResourceOperations.js","sourceRoot":"","sources":["../../../src/kubernetes/BaseResourceOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Circuit Breaker Module
|
|
3
|
+
*
|
|
4
|
+
* Implements the circuit breaker pattern for fault tolerance in distributed systems.
|
|
5
|
+
* Prevents cascading failures by temporarily blocking requests to failing services.
|
|
6
|
+
*/
|
|
7
|
+
import { Logger } from 'winston';
|
|
8
|
+
import { EventEmitter } from 'events';
|
|
9
|
+
/**
|
|
10
|
+
* Circuit breaker states
|
|
11
|
+
*/
|
|
12
|
+
export declare enum CircuitState {
|
|
13
|
+
CLOSED = "CLOSED",// Normal operation, requests pass through
|
|
14
|
+
OPEN = "OPEN",// Circuit broken, requests blocked
|
|
15
|
+
HALF_OPEN = "HALF_OPEN"
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Circuit breaker configuration
|
|
19
|
+
*/
|
|
20
|
+
export interface CircuitBreakerConfig {
|
|
21
|
+
/** Name of the circuit for identification */
|
|
22
|
+
name: string;
|
|
23
|
+
/** Number of failures before opening circuit */
|
|
24
|
+
failureThreshold: number;
|
|
25
|
+
/** Success threshold to close circuit from half-open */
|
|
26
|
+
successThreshold: number;
|
|
27
|
+
/** Time window for counting failures (ms) */
|
|
28
|
+
failureCountWindow: number;
|
|
29
|
+
/** Time to wait before attempting recovery (ms) */
|
|
30
|
+
resetTimeout: number;
|
|
31
|
+
/** Percentage of requests to fail before opening (0-100) */
|
|
32
|
+
failureRateThreshold?: number;
|
|
33
|
+
/** Minimum number of requests before applying rate threshold */
|
|
34
|
+
volumeThreshold?: number;
|
|
35
|
+
/** Optional timeout for operations (ms) */
|
|
36
|
+
operationTimeout?: number;
|
|
37
|
+
/** Function to determine if an error counts as failure */
|
|
38
|
+
isFailure?: (error: any) => boolean;
|
|
39
|
+
/** Fallback function when circuit is open */
|
|
40
|
+
fallback?: <T>() => T | Promise<T>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Default circuit breaker configuration
|
|
44
|
+
*/
|
|
45
|
+
export declare const DEFAULT_CIRCUIT_CONFIG: Omit<CircuitBreakerConfig, 'name'>;
|
|
46
|
+
/**
|
|
47
|
+
* Circuit breaker statistics
|
|
48
|
+
*/
|
|
49
|
+
export interface CircuitStats {
|
|
50
|
+
state: CircuitState;
|
|
51
|
+
failures: number;
|
|
52
|
+
successes: number;
|
|
53
|
+
totalCalls: number;
|
|
54
|
+
lastFailureTime?: Date;
|
|
55
|
+
lastSuccessTime?: Date;
|
|
56
|
+
lastStateChange: Date;
|
|
57
|
+
consecutiveSuccesses: number;
|
|
58
|
+
consecutiveFailures: number;
|
|
59
|
+
failureRate: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Circuit breaker implementation
|
|
63
|
+
*/
|
|
64
|
+
export declare class CircuitBreaker extends EventEmitter {
|
|
65
|
+
private state;
|
|
66
|
+
private readonly config;
|
|
67
|
+
private readonly logger?;
|
|
68
|
+
private stats;
|
|
69
|
+
private resetTimer?;
|
|
70
|
+
private readonly requestHistory;
|
|
71
|
+
private lastStateChangeTime;
|
|
72
|
+
constructor(config: CircuitBreakerConfig, logger?: Logger);
|
|
73
|
+
/**
|
|
74
|
+
* Execute an operation through the circuit breaker
|
|
75
|
+
*/
|
|
76
|
+
execute<T>(operation: () => Promise<T>): Promise<T>;
|
|
77
|
+
/**
|
|
78
|
+
* Get current circuit statistics
|
|
79
|
+
*/
|
|
80
|
+
getStats(): CircuitStats;
|
|
81
|
+
/**
|
|
82
|
+
* Get current state
|
|
83
|
+
*/
|
|
84
|
+
getState(): CircuitState;
|
|
85
|
+
/**
|
|
86
|
+
* Manually reset the circuit breaker
|
|
87
|
+
*/
|
|
88
|
+
reset(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Force open the circuit
|
|
91
|
+
*/
|
|
92
|
+
open(): void;
|
|
93
|
+
/**
|
|
94
|
+
* Initialize statistics
|
|
95
|
+
*/
|
|
96
|
+
private initializeStats;
|
|
97
|
+
/**
|
|
98
|
+
* Execute operation with timeout
|
|
99
|
+
*/
|
|
100
|
+
private executeWithTimeout;
|
|
101
|
+
/**
|
|
102
|
+
* Record successful operation
|
|
103
|
+
*/
|
|
104
|
+
private recordSuccess;
|
|
105
|
+
/**
|
|
106
|
+
* Record failed operation
|
|
107
|
+
*/
|
|
108
|
+
private recordFailure;
|
|
109
|
+
/**
|
|
110
|
+
* Check if circuit should open based on failure conditions
|
|
111
|
+
*/
|
|
112
|
+
private shouldOpenCircuit;
|
|
113
|
+
/**
|
|
114
|
+
* Add request to history
|
|
115
|
+
*/
|
|
116
|
+
private addToHistory;
|
|
117
|
+
/**
|
|
118
|
+
* Get recent requests within the time window
|
|
119
|
+
*/
|
|
120
|
+
private getRecentRequests;
|
|
121
|
+
/**
|
|
122
|
+
* Calculate current failure rate
|
|
123
|
+
*/
|
|
124
|
+
private calculateFailureRate;
|
|
125
|
+
/**
|
|
126
|
+
* Determine if error should count as failure
|
|
127
|
+
*/
|
|
128
|
+
private shouldCountAsFailure;
|
|
129
|
+
/**
|
|
130
|
+
* Transition to new state
|
|
131
|
+
*/
|
|
132
|
+
private transition;
|
|
133
|
+
/**
|
|
134
|
+
* Schedule circuit reset attempt
|
|
135
|
+
*/
|
|
136
|
+
private scheduleReset;
|
|
137
|
+
/**
|
|
138
|
+
* Clear reset timer
|
|
139
|
+
*/
|
|
140
|
+
private clearResetTimer;
|
|
141
|
+
/**
|
|
142
|
+
* Cleanup resources
|
|
143
|
+
*/
|
|
144
|
+
dispose(): void;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Circuit breaker factory for managing multiple circuits
|
|
148
|
+
*/
|
|
149
|
+
export declare class CircuitBreakerFactory {
|
|
150
|
+
private readonly circuits;
|
|
151
|
+
private readonly logger?;
|
|
152
|
+
constructor(logger?: Logger);
|
|
153
|
+
/**
|
|
154
|
+
* Get or create a circuit breaker
|
|
155
|
+
*/
|
|
156
|
+
getOrCreate(config: CircuitBreakerConfig): CircuitBreaker;
|
|
157
|
+
/**
|
|
158
|
+
* Get existing circuit breaker
|
|
159
|
+
*/
|
|
160
|
+
get(name: string): CircuitBreaker | undefined;
|
|
161
|
+
/**
|
|
162
|
+
* Get all circuit breakers
|
|
163
|
+
*/
|
|
164
|
+
getAll(): Map<string, CircuitBreaker>;
|
|
165
|
+
/**
|
|
166
|
+
* Get statistics for all circuits
|
|
167
|
+
*/
|
|
168
|
+
getAllStats(): Record<string, CircuitStats>;
|
|
169
|
+
/**
|
|
170
|
+
* Reset all circuits
|
|
171
|
+
*/
|
|
172
|
+
resetAll(): void;
|
|
173
|
+
/**
|
|
174
|
+
* Dispose all circuits
|
|
175
|
+
*/
|
|
176
|
+
dispose(): void;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Decorator for adding circuit breaker to methods
|
|
180
|
+
*/
|
|
181
|
+
export declare function WithCircuitBreaker(config: Omit<CircuitBreakerConfig, 'name'>): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
182
|
+
//# sourceMappingURL=CircuitBreaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CircuitBreaker.d.ts","sourceRoot":"","sources":["../../../src/kubernetes/CircuitBreaker.ts"],"names":[],"mappings":"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"}
|