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.
Files changed (454) hide show
  1. package/.prettierrc.json +11 -0
  2. package/CHANGELOG.md +55 -0
  3. package/LICENSE +21 -0
  4. package/README.md +251 -0
  5. package/RELEASE.md +154 -0
  6. package/TODO.md +0 -0
  7. package/bin/kubeview-mcp.js +274 -0
  8. package/bin/setup.js +368 -0
  9. package/dist/src/cli/cli.d.ts +3 -0
  10. package/dist/src/cli/cli.d.ts.map +1 -0
  11. package/dist/src/cli/cli.js +23 -0
  12. package/dist/src/cli/cli.js.map +1 -0
  13. package/dist/src/index.d.ts +8 -0
  14. package/dist/src/index.d.ts.map +1 -0
  15. package/dist/src/index.js +45 -0
  16. package/dist/src/index.js.map +1 -0
  17. package/dist/src/kubernetes/BaseResourceOperations.d.ts +155 -0
  18. package/dist/src/kubernetes/BaseResourceOperations.d.ts.map +1 -0
  19. package/dist/src/kubernetes/BaseResourceOperations.js +136 -0
  20. package/dist/src/kubernetes/BaseResourceOperations.js.map +1 -0
  21. package/dist/src/kubernetes/CircuitBreaker.d.ts +182 -0
  22. package/dist/src/kubernetes/CircuitBreaker.d.ts.map +1 -0
  23. package/dist/src/kubernetes/CircuitBreaker.js +369 -0
  24. package/dist/src/kubernetes/CircuitBreaker.js.map +1 -0
  25. package/dist/src/kubernetes/ConnectionManager.d.ts +60 -0
  26. package/dist/src/kubernetes/ConnectionManager.d.ts.map +1 -0
  27. package/dist/src/kubernetes/ConnectionManager.js +77 -0
  28. package/dist/src/kubernetes/ConnectionManager.js.map +1 -0
  29. package/dist/src/kubernetes/ConnectionPool.d.ts +183 -0
  30. package/dist/src/kubernetes/ConnectionPool.d.ts.map +1 -0
  31. package/dist/src/kubernetes/ConnectionPool.js +437 -0
  32. package/dist/src/kubernetes/ConnectionPool.js.map +1 -0
  33. package/dist/src/kubernetes/ErrorHandler.d.ts +172 -0
  34. package/dist/src/kubernetes/ErrorHandler.d.ts.map +1 -0
  35. package/dist/src/kubernetes/ErrorHandler.js +328 -0
  36. package/dist/src/kubernetes/ErrorHandler.js.map +1 -0
  37. package/dist/src/kubernetes/ErrorHandling.d.ts +148 -0
  38. package/dist/src/kubernetes/ErrorHandling.d.ts.map +1 -0
  39. package/dist/src/kubernetes/ErrorHandling.js +304 -0
  40. package/dist/src/kubernetes/ErrorHandling.js.map +1 -0
  41. package/dist/src/kubernetes/KubernetesClient.d.ts +162 -0
  42. package/dist/src/kubernetes/KubernetesClient.d.ts.map +1 -0
  43. package/dist/src/kubernetes/KubernetesClient.js +382 -0
  44. package/dist/src/kubernetes/KubernetesClient.js.map +1 -0
  45. package/dist/src/kubernetes/ResourceOperations.d.ts +69 -0
  46. package/dist/src/kubernetes/ResourceOperations.d.ts.map +1 -0
  47. package/dist/src/kubernetes/ResourceOperations.js +99 -0
  48. package/dist/src/kubernetes/ResourceOperations.js.map +1 -0
  49. package/dist/src/kubernetes/RetryStrategy.d.ts +137 -0
  50. package/dist/src/kubernetes/RetryStrategy.d.ts.map +1 -0
  51. package/dist/src/kubernetes/RetryStrategy.js +277 -0
  52. package/dist/src/kubernetes/RetryStrategy.js.map +1 -0
  53. package/dist/src/kubernetes/RetryableOperation.d.ts +118 -0
  54. package/dist/src/kubernetes/RetryableOperation.d.ts.map +1 -0
  55. package/dist/src/kubernetes/RetryableOperation.js +233 -0
  56. package/dist/src/kubernetes/RetryableOperation.js.map +1 -0
  57. package/dist/src/kubernetes/index.d.ts +18 -0
  58. package/dist/src/kubernetes/index.d.ts.map +1 -0
  59. package/dist/src/kubernetes/index.js +28 -0
  60. package/dist/src/kubernetes/index.js.map +1 -0
  61. package/dist/src/kubernetes/resources/ConfigMapOperations.d.ts +60 -0
  62. package/dist/src/kubernetes/resources/ConfigMapOperations.d.ts.map +1 -0
  63. package/dist/src/kubernetes/resources/ConfigMapOperations.js +306 -0
  64. package/dist/src/kubernetes/resources/ConfigMapOperations.js.map +1 -0
  65. package/dist/src/kubernetes/resources/CustomResourceOperations.d.ts +55 -0
  66. package/dist/src/kubernetes/resources/CustomResourceOperations.d.ts.map +1 -0
  67. package/dist/src/kubernetes/resources/CustomResourceOperations.js +363 -0
  68. package/dist/src/kubernetes/resources/CustomResourceOperations.js.map +1 -0
  69. package/dist/src/kubernetes/resources/DeploymentOperations.d.ts +66 -0
  70. package/dist/src/kubernetes/resources/DeploymentOperations.d.ts.map +1 -0
  71. package/dist/src/kubernetes/resources/DeploymentOperations.js +234 -0
  72. package/dist/src/kubernetes/resources/DeploymentOperations.js.map +1 -0
  73. package/dist/src/kubernetes/resources/IngressOperations.d.ts +60 -0
  74. package/dist/src/kubernetes/resources/IngressOperations.d.ts.map +1 -0
  75. package/dist/src/kubernetes/resources/IngressOperations.js +224 -0
  76. package/dist/src/kubernetes/resources/IngressOperations.js.map +1 -0
  77. package/dist/src/kubernetes/resources/MetricOperations.d.ts +218 -0
  78. package/dist/src/kubernetes/resources/MetricOperations.d.ts.map +1 -0
  79. package/dist/src/kubernetes/resources/MetricOperations.js +893 -0
  80. package/dist/src/kubernetes/resources/MetricOperations.js.map +1 -0
  81. package/dist/src/kubernetes/resources/NamespaceOperations.d.ts +38 -0
  82. package/dist/src/kubernetes/resources/NamespaceOperations.d.ts.map +1 -0
  83. package/dist/src/kubernetes/resources/NamespaceOperations.js +101 -0
  84. package/dist/src/kubernetes/resources/NamespaceOperations.js.map +1 -0
  85. package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.d.ts +109 -0
  86. package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.d.ts.map +1 -0
  87. package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.js +383 -0
  88. package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.js.map +1 -0
  89. package/dist/src/kubernetes/resources/PersistentVolumeOperations.d.ts +97 -0
  90. package/dist/src/kubernetes/resources/PersistentVolumeOperations.d.ts.map +1 -0
  91. package/dist/src/kubernetes/resources/PersistentVolumeOperations.js +321 -0
  92. package/dist/src/kubernetes/resources/PersistentVolumeOperations.js.map +1 -0
  93. package/dist/src/kubernetes/resources/PodOperations.d.ts +99 -0
  94. package/dist/src/kubernetes/resources/PodOperations.d.ts.map +1 -0
  95. package/dist/src/kubernetes/resources/PodOperations.js +333 -0
  96. package/dist/src/kubernetes/resources/PodOperations.js.map +1 -0
  97. package/dist/src/kubernetes/resources/SecretOperations.d.ts +71 -0
  98. package/dist/src/kubernetes/resources/SecretOperations.d.ts.map +1 -0
  99. package/dist/src/kubernetes/resources/SecretOperations.js +254 -0
  100. package/dist/src/kubernetes/resources/SecretOperations.js.map +1 -0
  101. package/dist/src/kubernetes/resources/ServiceOperations.d.ts +64 -0
  102. package/dist/src/kubernetes/resources/ServiceOperations.d.ts.map +1 -0
  103. package/dist/src/kubernetes/resources/ServiceOperations.js +232 -0
  104. package/dist/src/kubernetes/resources/ServiceOperations.js.map +1 -0
  105. package/dist/src/kubernetes/utils/ResourceUtils.d.ts +238 -0
  106. package/dist/src/kubernetes/utils/ResourceUtils.d.ts.map +1 -0
  107. package/dist/src/kubernetes/utils/ResourceUtils.js +439 -0
  108. package/dist/src/kubernetes/utils/ResourceUtils.js.map +1 -0
  109. package/dist/src/plugins/ArgoCDToolsPlugin.d.ts +45 -0
  110. package/dist/src/plugins/ArgoCDToolsPlugin.d.ts.map +1 -0
  111. package/dist/src/plugins/ArgoCDToolsPlugin.js +155 -0
  112. package/dist/src/plugins/ArgoCDToolsPlugin.js.map +1 -0
  113. package/dist/src/plugins/ArgoToolsPlugin.d.ts +45 -0
  114. package/dist/src/plugins/ArgoToolsPlugin.d.ts.map +1 -0
  115. package/dist/src/plugins/ArgoToolsPlugin.js +149 -0
  116. package/dist/src/plugins/ArgoToolsPlugin.js.map +1 -0
  117. package/dist/src/plugins/HelmToolsPlugin.d.ts +41 -0
  118. package/dist/src/plugins/HelmToolsPlugin.d.ts.map +1 -0
  119. package/dist/src/plugins/HelmToolsPlugin.js +146 -0
  120. package/dist/src/plugins/HelmToolsPlugin.js.map +1 -0
  121. package/dist/src/plugins/KubernetesToolsPlugin.d.ts +44 -0
  122. package/dist/src/plugins/KubernetesToolsPlugin.d.ts.map +1 -0
  123. package/dist/src/plugins/KubernetesToolsPlugin.js +159 -0
  124. package/dist/src/plugins/KubernetesToolsPlugin.js.map +1 -0
  125. package/dist/src/plugins/SamplePlugin.d.ts +12 -0
  126. package/dist/src/plugins/SamplePlugin.d.ts.map +1 -0
  127. package/dist/src/plugins/SamplePlugin.js +51 -0
  128. package/dist/src/plugins/SamplePlugin.js.map +1 -0
  129. package/dist/src/plugins/index.d.ts +5 -0
  130. package/dist/src/plugins/index.d.ts.map +1 -0
  131. package/dist/src/plugins/index.js +5 -0
  132. package/dist/src/plugins/index.js.map +1 -0
  133. package/dist/src/server/MCPServer.d.ts +93 -0
  134. package/dist/src/server/MCPServer.d.ts.map +1 -0
  135. package/dist/src/server/MCPServer.js +398 -0
  136. package/dist/src/server/MCPServer.js.map +1 -0
  137. package/dist/src/tools/argo/ArgoCronListTool.d.ts +10 -0
  138. package/dist/src/tools/argo/ArgoCronListTool.d.ts.map +1 -0
  139. package/dist/src/tools/argo/ArgoCronListTool.js +70 -0
  140. package/dist/src/tools/argo/ArgoCronListTool.js.map +1 -0
  141. package/dist/src/tools/argo/ArgoGetTool.d.ts +10 -0
  142. package/dist/src/tools/argo/ArgoGetTool.d.ts.map +1 -0
  143. package/dist/src/tools/argo/ArgoGetTool.js +80 -0
  144. package/dist/src/tools/argo/ArgoGetTool.js.map +1 -0
  145. package/dist/src/tools/argo/ArgoListTool.d.ts +10 -0
  146. package/dist/src/tools/argo/ArgoListTool.d.ts.map +1 -0
  147. package/dist/src/tools/argo/ArgoListTool.js +133 -0
  148. package/dist/src/tools/argo/ArgoListTool.js.map +1 -0
  149. package/dist/src/tools/argo/ArgoLogsTool.d.ts +10 -0
  150. package/dist/src/tools/argo/ArgoLogsTool.d.ts.map +1 -0
  151. package/dist/src/tools/argo/ArgoLogsTool.js +117 -0
  152. package/dist/src/tools/argo/ArgoLogsTool.js.map +1 -0
  153. package/dist/src/tools/argo/BaseTool.d.ts +60 -0
  154. package/dist/src/tools/argo/BaseTool.d.ts.map +1 -0
  155. package/dist/src/tools/argo/BaseTool.js +51 -0
  156. package/dist/src/tools/argo/BaseTool.js.map +1 -0
  157. package/dist/src/tools/argo/index.d.ts +7 -0
  158. package/dist/src/tools/argo/index.d.ts.map +1 -0
  159. package/dist/src/tools/argo/index.js +6 -0
  160. package/dist/src/tools/argo/index.js.map +1 -0
  161. package/dist/src/tools/argocd/ArgoCDAppGetTool.d.ts +10 -0
  162. package/dist/src/tools/argocd/ArgoCDAppGetTool.d.ts.map +1 -0
  163. package/dist/src/tools/argocd/ArgoCDAppGetTool.js +97 -0
  164. package/dist/src/tools/argocd/ArgoCDAppGetTool.js.map +1 -0
  165. package/dist/src/tools/argocd/ArgoCDAppHistoryTool.d.ts +10 -0
  166. package/dist/src/tools/argocd/ArgoCDAppHistoryTool.d.ts.map +1 -0
  167. package/dist/src/tools/argocd/ArgoCDAppHistoryTool.js +80 -0
  168. package/dist/src/tools/argocd/ArgoCDAppHistoryTool.js.map +1 -0
  169. package/dist/src/tools/argocd/ArgoCDAppListTool.d.ts +10 -0
  170. package/dist/src/tools/argocd/ArgoCDAppListTool.d.ts.map +1 -0
  171. package/dist/src/tools/argocd/ArgoCDAppListTool.js +128 -0
  172. package/dist/src/tools/argocd/ArgoCDAppListTool.js.map +1 -0
  173. package/dist/src/tools/argocd/ArgoCDAppLogsTool.d.ts +10 -0
  174. package/dist/src/tools/argocd/ArgoCDAppLogsTool.d.ts.map +1 -0
  175. package/dist/src/tools/argocd/ArgoCDAppLogsTool.js +143 -0
  176. package/dist/src/tools/argocd/ArgoCDAppLogsTool.js.map +1 -0
  177. package/dist/src/tools/argocd/ArgoCDAppResourcesTool.d.ts +10 -0
  178. package/dist/src/tools/argocd/ArgoCDAppResourcesTool.d.ts.map +1 -0
  179. package/dist/src/tools/argocd/ArgoCDAppResourcesTool.js +123 -0
  180. package/dist/src/tools/argocd/ArgoCDAppResourcesTool.js.map +1 -0
  181. package/dist/src/tools/argocd/BaseTool.d.ts +71 -0
  182. package/dist/src/tools/argocd/BaseTool.d.ts.map +1 -0
  183. package/dist/src/tools/argocd/BaseTool.js +62 -0
  184. package/dist/src/tools/argocd/BaseTool.js.map +1 -0
  185. package/dist/src/tools/argocd/index.d.ts +8 -0
  186. package/dist/src/tools/argocd/index.d.ts.map +1 -0
  187. package/dist/src/tools/argocd/index.js +7 -0
  188. package/dist/src/tools/argocd/index.js.map +1 -0
  189. package/dist/src/tools/helm/BaseTool.d.ts +51 -0
  190. package/dist/src/tools/helm/BaseTool.d.ts.map +1 -0
  191. package/dist/src/tools/helm/BaseTool.js +42 -0
  192. package/dist/src/tools/helm/BaseTool.js.map +1 -0
  193. package/dist/src/tools/helm/HelmGetHooksTool.d.ts +10 -0
  194. package/dist/src/tools/helm/HelmGetHooksTool.d.ts.map +1 -0
  195. package/dist/src/tools/helm/HelmGetHooksTool.js +38 -0
  196. package/dist/src/tools/helm/HelmGetHooksTool.js.map +1 -0
  197. package/dist/src/tools/helm/HelmGetManifestTool.d.ts +10 -0
  198. package/dist/src/tools/helm/HelmGetManifestTool.d.ts.map +1 -0
  199. package/dist/src/tools/helm/HelmGetManifestTool.js +38 -0
  200. package/dist/src/tools/helm/HelmGetManifestTool.js.map +1 -0
  201. package/dist/src/tools/helm/HelmGetNotesTool.d.ts +10 -0
  202. package/dist/src/tools/helm/HelmGetNotesTool.d.ts.map +1 -0
  203. package/dist/src/tools/helm/HelmGetNotesTool.js +38 -0
  204. package/dist/src/tools/helm/HelmGetNotesTool.js.map +1 -0
  205. package/dist/src/tools/helm/HelmGetResourcesTool.d.ts +13 -0
  206. package/dist/src/tools/helm/HelmGetResourcesTool.d.ts.map +1 -0
  207. package/dist/src/tools/helm/HelmGetResourcesTool.js +124 -0
  208. package/dist/src/tools/helm/HelmGetResourcesTool.js.map +1 -0
  209. package/dist/src/tools/helm/HelmGetValuesTool.d.ts +10 -0
  210. package/dist/src/tools/helm/HelmGetValuesTool.d.ts.map +1 -0
  211. package/dist/src/tools/helm/HelmGetValuesTool.js +54 -0
  212. package/dist/src/tools/helm/HelmGetValuesTool.js.map +1 -0
  213. package/dist/src/tools/helm/HelmHistoryTool.d.ts +10 -0
  214. package/dist/src/tools/helm/HelmHistoryTool.d.ts.map +1 -0
  215. package/dist/src/tools/helm/HelmHistoryTool.js +49 -0
  216. package/dist/src/tools/helm/HelmHistoryTool.js.map +1 -0
  217. package/dist/src/tools/helm/HelmListTool.d.ts +10 -0
  218. package/dist/src/tools/helm/HelmListTool.d.ts.map +1 -0
  219. package/dist/src/tools/helm/HelmListTool.js +107 -0
  220. package/dist/src/tools/helm/HelmListTool.js.map +1 -0
  221. package/dist/src/tools/helm/HelmListWithResourcesTool.d.ts +14 -0
  222. package/dist/src/tools/helm/HelmListWithResourcesTool.d.ts.map +1 -0
  223. package/dist/src/tools/helm/HelmListWithResourcesTool.js +175 -0
  224. package/dist/src/tools/helm/HelmListWithResourcesTool.js.map +1 -0
  225. package/dist/src/tools/helm/HelmStatusTool.d.ts +10 -0
  226. package/dist/src/tools/helm/HelmStatusTool.d.ts.map +1 -0
  227. package/dist/src/tools/helm/HelmStatusTool.js +54 -0
  228. package/dist/src/tools/helm/HelmStatusTool.js.map +1 -0
  229. package/dist/src/tools/helm/index.d.ts +12 -0
  230. package/dist/src/tools/helm/index.d.ts.map +1 -0
  231. package/dist/src/tools/helm/index.js +11 -0
  232. package/dist/src/tools/helm/index.js.map +1 -0
  233. package/dist/src/tools/kubernetes/BaseTool.d.ts +48 -0
  234. package/dist/src/tools/kubernetes/BaseTool.d.ts.map +1 -0
  235. package/dist/src/tools/kubernetes/BaseTool.js +55 -0
  236. package/dist/src/tools/kubernetes/BaseTool.js.map +1 -0
  237. package/dist/src/tools/kubernetes/GetConfigMapTool.d.ts +11 -0
  238. package/dist/src/tools/kubernetes/GetConfigMapTool.d.ts.map +1 -0
  239. package/dist/src/tools/kubernetes/GetConfigMapTool.js +28 -0
  240. package/dist/src/tools/kubernetes/GetConfigMapTool.js.map +1 -0
  241. package/dist/src/tools/kubernetes/GetContainerLogsTool.d.ts +15 -0
  242. package/dist/src/tools/kubernetes/GetContainerLogsTool.d.ts.map +1 -0
  243. package/dist/src/tools/kubernetes/GetContainerLogsTool.js +119 -0
  244. package/dist/src/tools/kubernetes/GetContainerLogsTool.js.map +1 -0
  245. package/dist/src/tools/kubernetes/GetDeploymentsTool.d.ts +11 -0
  246. package/dist/src/tools/kubernetes/GetDeploymentsTool.d.ts.map +1 -0
  247. package/dist/src/tools/kubernetes/GetDeploymentsTool.js +30 -0
  248. package/dist/src/tools/kubernetes/GetDeploymentsTool.js.map +1 -0
  249. package/dist/src/tools/kubernetes/GetEventsTool.d.ts +11 -0
  250. package/dist/src/tools/kubernetes/GetEventsTool.d.ts.map +1 -0
  251. package/dist/src/tools/kubernetes/GetEventsTool.js +123 -0
  252. package/dist/src/tools/kubernetes/GetEventsTool.js.map +1 -0
  253. package/dist/src/tools/kubernetes/GetIngressTool.d.ts +11 -0
  254. package/dist/src/tools/kubernetes/GetIngressTool.d.ts.map +1 -0
  255. package/dist/src/tools/kubernetes/GetIngressTool.js +35 -0
  256. package/dist/src/tools/kubernetes/GetIngressTool.js.map +1 -0
  257. package/dist/src/tools/kubernetes/GetMetricsTool.d.ts +11 -0
  258. package/dist/src/tools/kubernetes/GetMetricsTool.d.ts.map +1 -0
  259. package/dist/src/tools/kubernetes/GetMetricsTool.js +40 -0
  260. package/dist/src/tools/kubernetes/GetMetricsTool.js.map +1 -0
  261. package/dist/src/tools/kubernetes/GetNamespacesTool.d.ts +11 -0
  262. package/dist/src/tools/kubernetes/GetNamespacesTool.d.ts.map +1 -0
  263. package/dist/src/tools/kubernetes/GetNamespacesTool.js +33 -0
  264. package/dist/src/tools/kubernetes/GetNamespacesTool.js.map +1 -0
  265. package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.d.ts +11 -0
  266. package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.d.ts.map +1 -0
  267. package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.js +92 -0
  268. package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.js.map +1 -0
  269. package/dist/src/tools/kubernetes/GetPersistentVolumesTool.d.ts +11 -0
  270. package/dist/src/tools/kubernetes/GetPersistentVolumesTool.d.ts.map +1 -0
  271. package/dist/src/tools/kubernetes/GetPersistentVolumesTool.js +88 -0
  272. package/dist/src/tools/kubernetes/GetPersistentVolumesTool.js.map +1 -0
  273. package/dist/src/tools/kubernetes/GetPodMetricsTool.d.ts +11 -0
  274. package/dist/src/tools/kubernetes/GetPodMetricsTool.d.ts.map +1 -0
  275. package/dist/src/tools/kubernetes/GetPodMetricsTool.js +100 -0
  276. package/dist/src/tools/kubernetes/GetPodMetricsTool.js.map +1 -0
  277. package/dist/src/tools/kubernetes/GetPodsTool.d.ts +11 -0
  278. package/dist/src/tools/kubernetes/GetPodsTool.d.ts.map +1 -0
  279. package/dist/src/tools/kubernetes/GetPodsTool.js +35 -0
  280. package/dist/src/tools/kubernetes/GetPodsTool.js.map +1 -0
  281. package/dist/src/tools/kubernetes/GetResourceTool.d.ts +12 -0
  282. package/dist/src/tools/kubernetes/GetResourceTool.d.ts.map +1 -0
  283. package/dist/src/tools/kubernetes/GetResourceTool.js +79 -0
  284. package/dist/src/tools/kubernetes/GetResourceTool.js.map +1 -0
  285. package/dist/src/tools/kubernetes/GetSecretsTool.d.ts +11 -0
  286. package/dist/src/tools/kubernetes/GetSecretsTool.d.ts.map +1 -0
  287. package/dist/src/tools/kubernetes/GetSecretsTool.js +49 -0
  288. package/dist/src/tools/kubernetes/GetSecretsTool.js.map +1 -0
  289. package/dist/src/tools/kubernetes/GetServicesTool.d.ts +11 -0
  290. package/dist/src/tools/kubernetes/GetServicesTool.d.ts.map +1 -0
  291. package/dist/src/tools/kubernetes/GetServicesTool.js +35 -0
  292. package/dist/src/tools/kubernetes/GetServicesTool.js.map +1 -0
  293. package/dist/src/tools/kubernetes/index.d.ts +17 -0
  294. package/dist/src/tools/kubernetes/index.d.ts.map +1 -0
  295. package/dist/src/tools/kubernetes/index.js +16 -0
  296. package/dist/src/tools/kubernetes/index.js.map +1 -0
  297. package/dist/src/utils/CliUtils.d.ts +24 -0
  298. package/dist/src/utils/CliUtils.d.ts.map +1 -0
  299. package/dist/src/utils/CliUtils.js +159 -0
  300. package/dist/src/utils/CliUtils.js.map +1 -0
  301. package/dist/tests/__mocks__/@kubernetes/client-node.d.ts +34 -0
  302. package/dist/tests/__mocks__/@kubernetes/client-node.d.ts.map +1 -0
  303. package/dist/tests/__mocks__/@kubernetes/client-node.js +20 -0
  304. package/dist/tests/__mocks__/@kubernetes/client-node.js.map +1 -0
  305. package/dist/tests/argo/ArgoGetTool.test.d.ts +2 -0
  306. package/dist/tests/argo/ArgoGetTool.test.d.ts.map +1 -0
  307. package/dist/tests/argo/ArgoGetTool.test.js +141 -0
  308. package/dist/tests/argo/ArgoGetTool.test.js.map +1 -0
  309. package/dist/tests/helm/BaseTool.test.d.ts +2 -0
  310. package/dist/tests/helm/BaseTool.test.d.ts.map +1 -0
  311. package/dist/tests/helm/BaseTool.test.js +241 -0
  312. package/dist/tests/helm/BaseTool.test.js.map +1 -0
  313. package/dist/tests/index.test.d.ts +2 -0
  314. package/dist/tests/index.test.d.ts.map +1 -0
  315. package/dist/tests/index.test.js +7 -0
  316. package/dist/tests/index.test.js.map +1 -0
  317. package/dist/tests/kubernetes/ConfigMapOperations.test.d.ts +2 -0
  318. package/dist/tests/kubernetes/ConfigMapOperations.test.d.ts.map +1 -0
  319. package/dist/tests/kubernetes/ConfigMapOperations.test.js +460 -0
  320. package/dist/tests/kubernetes/ConfigMapOperations.test.js.map +1 -0
  321. package/dist/tests/kubernetes/ConnectionManager.test.d.ts +2 -0
  322. package/dist/tests/kubernetes/ConnectionManager.test.d.ts.map +1 -0
  323. package/dist/tests/kubernetes/ConnectionManager.test.js +97 -0
  324. package/dist/tests/kubernetes/ConnectionManager.test.js.map +1 -0
  325. package/dist/tests/kubernetes/ConnectionPool.test.d.ts +2 -0
  326. package/dist/tests/kubernetes/ConnectionPool.test.d.ts.map +1 -0
  327. package/dist/tests/kubernetes/ConnectionPool.test.js +328 -0
  328. package/dist/tests/kubernetes/ConnectionPool.test.js.map +1 -0
  329. package/dist/tests/kubernetes/DeploymentOperations.test.d.ts +2 -0
  330. package/dist/tests/kubernetes/DeploymentOperations.test.d.ts.map +1 -0
  331. package/dist/tests/kubernetes/DeploymentOperations.test.js +196 -0
  332. package/dist/tests/kubernetes/DeploymentOperations.test.js.map +1 -0
  333. package/dist/tests/kubernetes/ErrorHandling.test.d.ts +2 -0
  334. package/dist/tests/kubernetes/ErrorHandling.test.d.ts.map +1 -0
  335. package/dist/tests/kubernetes/ErrorHandling.test.js +329 -0
  336. package/dist/tests/kubernetes/ErrorHandling.test.js.map +1 -0
  337. package/dist/tests/kubernetes/GetPodMetricsTool.test.d.ts +2 -0
  338. package/dist/tests/kubernetes/GetPodMetricsTool.test.d.ts.map +1 -0
  339. package/dist/tests/kubernetes/GetPodMetricsTool.test.js +150 -0
  340. package/dist/tests/kubernetes/GetPodMetricsTool.test.js.map +1 -0
  341. package/dist/tests/kubernetes/KubernetesClient.test.d.ts +2 -0
  342. package/dist/tests/kubernetes/KubernetesClient.test.d.ts.map +1 -0
  343. package/dist/tests/kubernetes/KubernetesClient.test.js +371 -0
  344. package/dist/tests/kubernetes/KubernetesClient.test.js.map +1 -0
  345. package/dist/tests/kubernetes/MetricOperations.parsing.test.d.ts +2 -0
  346. package/dist/tests/kubernetes/MetricOperations.parsing.test.d.ts.map +1 -0
  347. package/dist/tests/kubernetes/MetricOperations.parsing.test.js +49 -0
  348. package/dist/tests/kubernetes/MetricOperations.parsing.test.js.map +1 -0
  349. package/dist/tests/kubernetes/NamespaceOperations.test.d.ts +2 -0
  350. package/dist/tests/kubernetes/NamespaceOperations.test.d.ts.map +1 -0
  351. package/dist/tests/kubernetes/NamespaceOperations.test.js +115 -0
  352. package/dist/tests/kubernetes/NamespaceOperations.test.js.map +1 -0
  353. package/dist/tests/kubernetes/PodOperations.test.d.ts +2 -0
  354. package/dist/tests/kubernetes/PodOperations.test.d.ts.map +1 -0
  355. package/dist/tests/kubernetes/PodOperations.test.js +209 -0
  356. package/dist/tests/kubernetes/PodOperations.test.js.map +1 -0
  357. package/dist/tests/kubernetes/RetryStrategy.test.d.ts +2 -0
  358. package/dist/tests/kubernetes/RetryStrategy.test.d.ts.map +1 -0
  359. package/dist/tests/kubernetes/RetryStrategy.test.js +419 -0
  360. package/dist/tests/kubernetes/RetryStrategy.test.js.map +1 -0
  361. package/dist/tests/kubernetes/ServiceOperations.test.d.ts +2 -0
  362. package/dist/tests/kubernetes/ServiceOperations.test.d.ts.map +1 -0
  363. package/dist/tests/kubernetes/ServiceOperations.test.js +159 -0
  364. package/dist/tests/kubernetes/ServiceOperations.test.js.map +1 -0
  365. package/dist/tests/plugins/KubernetesToolsPlugin.test.d.ts +2 -0
  366. package/dist/tests/plugins/KubernetesToolsPlugin.test.d.ts.map +1 -0
  367. package/dist/tests/plugins/KubernetesToolsPlugin.test.js +153 -0
  368. package/dist/tests/plugins/KubernetesToolsPlugin.test.js.map +1 -0
  369. package/dist/tests/server/MCPServer.integration.test.d.ts +2 -0
  370. package/dist/tests/server/MCPServer.integration.test.d.ts.map +1 -0
  371. package/dist/tests/server/MCPServer.integration.test.js +244 -0
  372. package/dist/tests/server/MCPServer.integration.test.js.map +1 -0
  373. package/dist/tests/server/MCPServer.test.d.ts +2 -0
  374. package/dist/tests/server/MCPServer.test.d.ts.map +1 -0
  375. package/dist/tests/server/MCPServer.test.js +257 -0
  376. package/dist/tests/server/MCPServer.test.js.map +1 -0
  377. package/package.json +85 -0
  378. package/src/cli/cli.ts +25 -0
  379. package/src/cli/run-command.js +391 -0
  380. package/src/index.ts +46 -0
  381. package/src/kubernetes/BaseResourceOperations.ts +286 -0
  382. package/src/kubernetes/CircuitBreaker.ts +485 -0
  383. package/src/kubernetes/ConnectionManager.ts +114 -0
  384. package/src/kubernetes/ConnectionPool.ts +551 -0
  385. package/src/kubernetes/ErrorHandler.ts +436 -0
  386. package/src/kubernetes/ErrorHandling.ts +401 -0
  387. package/src/kubernetes/KubernetesClient.ts +500 -0
  388. package/src/kubernetes/README.md +349 -0
  389. package/src/kubernetes/ResourceOperations.ts +116 -0
  390. package/src/kubernetes/RetryStrategy.ts +365 -0
  391. package/src/kubernetes/RetryableOperation.ts +313 -0
  392. package/src/kubernetes/docs/ResourceOperations.md +606 -0
  393. package/src/kubernetes/index.ts +116 -0
  394. package/src/kubernetes/resources/ConfigMapOperations.ts +367 -0
  395. package/src/kubernetes/resources/CustomResourceOperations.ts +392 -0
  396. package/src/kubernetes/resources/DeploymentOperations.ts +294 -0
  397. package/src/kubernetes/resources/IngressOperations.ts +277 -0
  398. package/src/kubernetes/resources/MetricOperations.ts +1159 -0
  399. package/src/kubernetes/resources/NamespaceOperations.ts +129 -0
  400. package/src/kubernetes/resources/PersistentVolumeClaimOperations.ts +516 -0
  401. package/src/kubernetes/resources/PersistentVolumeOperations.ts +438 -0
  402. package/src/kubernetes/resources/PodOperations.ts +417 -0
  403. package/src/kubernetes/resources/SecretOperations.ts +304 -0
  404. package/src/kubernetes/resources/ServiceOperations.ts +283 -0
  405. package/src/kubernetes/utils/ResourceUtils.ts +553 -0
  406. package/src/plugins/ArgoCDToolsPlugin.ts +189 -0
  407. package/src/plugins/ArgoToolsPlugin.ts +180 -0
  408. package/src/plugins/HelmToolsPlugin.ts +180 -0
  409. package/src/plugins/KubernetesToolsPlugin.ts +198 -0
  410. package/src/plugins/SamplePlugin.ts +60 -0
  411. package/src/plugins/index.ts +4 -0
  412. package/src/server/MCPServer.ts +500 -0
  413. package/src/tools/argo/ArgoCronListTool.ts +78 -0
  414. package/src/tools/argo/ArgoGetTool.ts +91 -0
  415. package/src/tools/argo/ArgoListTool.ts +143 -0
  416. package/src/tools/argo/ArgoLogsTool.ts +131 -0
  417. package/src/tools/argo/BaseTool.ts +69 -0
  418. package/src/tools/argo/index.ts +6 -0
  419. package/src/tools/argocd/ArgoCDAppGetTool.ts +109 -0
  420. package/src/tools/argocd/ArgoCDAppHistoryTool.ts +91 -0
  421. package/src/tools/argocd/ArgoCDAppListTool.ts +144 -0
  422. package/src/tools/argocd/ArgoCDAppLogsTool.ts +162 -0
  423. package/src/tools/argocd/ArgoCDAppResourcesTool.ts +139 -0
  424. package/src/tools/argocd/BaseTool.ts +83 -0
  425. package/src/tools/argocd/index.ts +7 -0
  426. package/src/tools/helm/BaseTool.ts +60 -0
  427. package/src/tools/helm/HelmGetHooksTool.ts +44 -0
  428. package/src/tools/helm/HelmGetManifestTool.ts +44 -0
  429. package/src/tools/helm/HelmGetNotesTool.ts +44 -0
  430. package/src/tools/helm/HelmGetResourcesTool.ts +140 -0
  431. package/src/tools/helm/HelmGetValuesTool.ts +62 -0
  432. package/src/tools/helm/HelmHistoryTool.ts +56 -0
  433. package/src/tools/helm/HelmListTool.ts +107 -0
  434. package/src/tools/helm/HelmListWithResourcesTool.ts +194 -0
  435. package/src/tools/helm/HelmStatusTool.ts +62 -0
  436. package/src/tools/helm/index.ts +11 -0
  437. package/src/tools/kubernetes/BaseTool.ts +76 -0
  438. package/src/tools/kubernetes/GetConfigMapTool.ts +33 -0
  439. package/src/tools/kubernetes/GetContainerLogsTool.ts +140 -0
  440. package/src/tools/kubernetes/GetDeploymentsTool.ts +33 -0
  441. package/src/tools/kubernetes/GetEventsTool.ts +133 -0
  442. package/src/tools/kubernetes/GetIngressTool.ts +39 -0
  443. package/src/tools/kubernetes/GetMetricsTool.ts +53 -0
  444. package/src/tools/kubernetes/GetNamespacesTool.ts +36 -0
  445. package/src/tools/kubernetes/GetPersistentVolumeClaimsTool.ts +113 -0
  446. package/src/tools/kubernetes/GetPersistentVolumesTool.ts +107 -0
  447. package/src/tools/kubernetes/GetPodMetricsTool.ts +113 -0
  448. package/src/tools/kubernetes/GetPodsTool.ts +39 -0
  449. package/src/tools/kubernetes/GetResourceTool.ts +90 -0
  450. package/src/tools/kubernetes/GetSecretsTool.ts +55 -0
  451. package/src/tools/kubernetes/GetServicesTool.ts +39 -0
  452. package/src/tools/kubernetes/index.ts +16 -0
  453. package/src/utils/CliUtils.ts +207 -0
  454. package/tsconfig.json +36 -0
@@ -0,0 +1,383 @@
1
+ import * as k8s from '@kubernetes/client-node';
2
+ import { BaseResourceOperations, WatchEventType, } from '../BaseResourceOperations.js';
3
+ /**
4
+ * Operations for Kubernetes Persistent Volume Claims
5
+ */
6
+ export class PersistentVolumeClaimOperations extends BaseResourceOperations {
7
+ constructor(client) {
8
+ super(client, 'PersistentVolumeClaim');
9
+ }
10
+ getResourceNamespaced() {
11
+ return true; // PVCs are namespaced
12
+ }
13
+ /**
14
+ * Create operation is not supported for this read-only tool
15
+ */
16
+ async create(_resource, _options) {
17
+ throw new Error('Create operation is not supported for this read-only PVC analysis tool');
18
+ }
19
+ /**
20
+ * Update operation is not supported for this read-only tool
21
+ */
22
+ async update(_resource, _options) {
23
+ throw new Error('Update operation is not supported for this read-only PVC analysis tool');
24
+ }
25
+ /**
26
+ * Patch operation is not supported for this read-only tool
27
+ */
28
+ async patch(_name, _patch, _options) {
29
+ throw new Error('Patch operation is not supported for this read-only PVC analysis tool');
30
+ }
31
+ /**
32
+ * Delete operation is not supported for this read-only tool
33
+ */
34
+ async delete(_name, _options) {
35
+ throw new Error('Delete operation is not supported for this read-only PVC analysis tool');
36
+ }
37
+ /**
38
+ * List Persistent Volume Claims
39
+ */
40
+ async list(options) {
41
+ try {
42
+ let response;
43
+ if (options?.namespace) {
44
+ response = await this.client.core.listNamespacedPersistentVolumeClaim({
45
+ namespace: options.namespace,
46
+ ...this.buildListOptions(options),
47
+ });
48
+ }
49
+ else {
50
+ response = await this.client.core.listPersistentVolumeClaimForAllNamespaces(this.buildListOptions(options));
51
+ }
52
+ // Apply additional filtering if needed
53
+ if (options?.storageClass || options?.accessMode || options?.volumeMode) {
54
+ response.items = response.items.filter((pvc) => {
55
+ if (options.storageClass && pvc.spec?.storageClassName !== options.storageClass) {
56
+ return false;
57
+ }
58
+ if (options.accessMode && !pvc.spec?.accessModes?.includes(options.accessMode)) {
59
+ return false;
60
+ }
61
+ if (options.volumeMode && pvc.spec?.volumeMode !== options.volumeMode) {
62
+ return false;
63
+ }
64
+ return true;
65
+ });
66
+ }
67
+ return response;
68
+ }
69
+ catch (error) {
70
+ this.handleApiError(error, 'List', `PVCs in ${options?.namespace || 'all namespaces'}`);
71
+ }
72
+ }
73
+ /**
74
+ * Get a specific Persistent Volume Claim by name
75
+ */
76
+ async get(name, options) {
77
+ try {
78
+ const namespace = options?.namespace || 'default';
79
+ const response = await this.client.core.readNamespacedPersistentVolumeClaim({
80
+ name,
81
+ namespace,
82
+ });
83
+ return response;
84
+ }
85
+ catch (error) {
86
+ this.handleApiError(error, 'Get', name);
87
+ }
88
+ }
89
+ /**
90
+ * Watch Persistent Volume Claims for changes
91
+ */
92
+ watch(callback, options) {
93
+ const namespace = options?.namespace;
94
+ const watch = new k8s.Watch(this.client.kubeConfig);
95
+ let aborted = false;
96
+ const startWatch = async () => {
97
+ try {
98
+ const path = namespace
99
+ ? `/api/v1/namespaces/${namespace}/persistentvolumeclaims`
100
+ : '/api/v1/persistentvolumeclaims';
101
+ const req = await watch.watch(path, this.buildListOptions(options), (type, obj) => {
102
+ if (!aborted) {
103
+ callback({
104
+ type: type,
105
+ object: obj,
106
+ });
107
+ }
108
+ }, (err) => {
109
+ if (!aborted) {
110
+ this.logger?.error(`Watch error for PVCs: ${err}`);
111
+ callback({
112
+ type: WatchEventType.ERROR,
113
+ object: err,
114
+ });
115
+ }
116
+ });
117
+ return req;
118
+ }
119
+ catch (error) {
120
+ this.logger?.error(`Failed to start watch for PVCs: ${error}`);
121
+ throw error;
122
+ }
123
+ };
124
+ let request;
125
+ startWatch().then((req) => {
126
+ request = req;
127
+ });
128
+ return () => {
129
+ aborted = true;
130
+ if (request) {
131
+ request.abort();
132
+ }
133
+ };
134
+ }
135
+ /**
136
+ * Analyze PVC status and issues
137
+ */
138
+ async analyzePVCs(options) {
139
+ const pvcList = await this.list(options);
140
+ const analysis = {
141
+ total: pvcList.items.length,
142
+ byStatus: {},
143
+ byStorageClass: {},
144
+ pending: [],
145
+ issues: [],
146
+ };
147
+ // Get all PVs to cross-reference
148
+ const pvList = await this.client.core.listPersistentVolume();
149
+ for (const pvc of pvcList.items) {
150
+ const status = pvc.status?.phase || 'Unknown';
151
+ const storageClass = pvc.spec?.storageClassName || 'default';
152
+ // Count by status
153
+ analysis.byStatus[status] = (analysis.byStatus[status] || 0) + 1;
154
+ // Count by storage class
155
+ analysis.byStorageClass[storageClass] = (analysis.byStorageClass[storageClass] || 0) + 1;
156
+ // Track pending PVCs
157
+ if (status === 'Pending') {
158
+ analysis.pending.push(pvc);
159
+ // Analyze why PVC is pending
160
+ const requestedSize = pvc.spec?.resources?.requests?.storage;
161
+ const requestedAccessModes = pvc.spec?.accessModes || [];
162
+ const requestedStorageClass = pvc.spec?.storageClassName;
163
+ // Check if there are available PVs that could satisfy this PVC
164
+ const availablePVs = pvList.items.filter((pv) => pv.status?.phase === 'Available');
165
+ if (availablePVs.length === 0) {
166
+ analysis.issues.push({
167
+ pvc,
168
+ issue: 'No available PersistentVolumes found in the cluster',
169
+ severity: 'error',
170
+ recommendation: 'Create a new PersistentVolume or enable dynamic provisioning for the storage class',
171
+ });
172
+ continue;
173
+ }
174
+ const matchingPVs = availablePVs.filter((pv) => {
175
+ // Check storage class
176
+ if (requestedStorageClass && pv.spec?.storageClassName !== requestedStorageClass) {
177
+ return false;
178
+ }
179
+ // Check access modes - PV must support at least one of the requested modes
180
+ const pvAccessModes = pv.spec?.accessModes || [];
181
+ const hasMatchingAccessMode = requestedAccessModes.some((mode) => pvAccessModes.includes(mode));
182
+ if (!hasMatchingAccessMode) {
183
+ return false;
184
+ }
185
+ // Enhanced capacity checking with proper size comparison
186
+ if (requestedSize && pv.spec?.capacity?.storage) {
187
+ const requestedBytes = this.parseStorageSize(requestedSize);
188
+ const pvCapacityBytes = this.parseStorageSize(pv.spec.capacity.storage);
189
+ if (requestedBytes > pvCapacityBytes) {
190
+ return false;
191
+ }
192
+ }
193
+ return true;
194
+ });
195
+ if (matchingPVs.length === 0) {
196
+ // Determine specific reasons for no matches
197
+ const storageClassMatches = availablePVs.filter((pv) => !requestedStorageClass || pv.spec?.storageClassName === requestedStorageClass);
198
+ const accessModeMatches = availablePVs.filter((pv) => {
199
+ const pvAccessModes = pv.spec?.accessModes || [];
200
+ return requestedAccessModes.some((mode) => pvAccessModes.includes(mode));
201
+ });
202
+ const sizeMatches = availablePVs.filter((pv) => {
203
+ if (!requestedSize || !pv.spec?.capacity?.storage)
204
+ return true;
205
+ const requestedBytes = this.parseStorageSize(requestedSize);
206
+ const pvCapacityBytes = this.parseStorageSize(pv.spec.capacity.storage);
207
+ return requestedBytes <= pvCapacityBytes;
208
+ });
209
+ let issueDetail = 'No available PersistentVolumes match the PVC requirements';
210
+ let recommendation = 'Check PVC requirements and available PVs';
211
+ if (storageClassMatches.length === 0) {
212
+ issueDetail = `No PersistentVolumes with storage class '${requestedStorageClass}' are available`;
213
+ recommendation = `Create a PV with storage class '${requestedStorageClass}' or check if the storage class supports dynamic provisioning`;
214
+ }
215
+ else if (accessModeMatches.length === 0) {
216
+ issueDetail = `No PersistentVolumes support the requested access modes: ${requestedAccessModes.join(', ')}`;
217
+ recommendation =
218
+ 'Create a PV with compatible access modes or modify the PVC access mode requirements';
219
+ }
220
+ else if (sizeMatches.length === 0) {
221
+ issueDetail = `No PersistentVolumes have sufficient capacity (requested: ${requestedSize})`;
222
+ recommendation = 'Create a larger PV or reduce the PVC storage request';
223
+ }
224
+ analysis.issues.push({
225
+ pvc,
226
+ issue: issueDetail,
227
+ severity: 'warning',
228
+ recommendation,
229
+ });
230
+ }
231
+ else {
232
+ // PVC is pending but there are matching PVs - possible binding delay
233
+ analysis.issues.push({
234
+ pvc,
235
+ issue: `PVC is pending despite ${matchingPVs.length} matching PV(s) being available`,
236
+ severity: 'warning',
237
+ recommendation: 'Check PVC events and storage controller logs for binding delays',
238
+ });
239
+ }
240
+ }
241
+ // Check for lost claims
242
+ if (status === 'Lost') {
243
+ analysis.issues.push({
244
+ pvc,
245
+ issue: 'PersistentVolumeClaim has lost its bound volume',
246
+ severity: 'error',
247
+ recommendation: 'Investigate why the bound PV was lost and restore from backup if needed',
248
+ });
249
+ }
250
+ // Check for bound PVCs without a corresponding PV
251
+ if (status === 'Bound' && pvc.spec?.volumeName) {
252
+ const boundPV = pvList.items.find((pv) => pv.metadata?.name === pvc.spec?.volumeName);
253
+ if (!boundPV) {
254
+ analysis.issues.push({
255
+ pvc,
256
+ issue: `PersistentVolumeClaim is bound to PV '${pvc.spec.volumeName}' which does not exist`,
257
+ severity: 'error',
258
+ recommendation: 'Investigate why the bound PV is missing and consider recreating the PVC',
259
+ });
260
+ }
261
+ else if (boundPV.status?.phase !== 'Bound') {
262
+ analysis.issues.push({
263
+ pvc,
264
+ issue: `PVC is bound but the referenced PV is in '${boundPV.status?.phase}' state`,
265
+ severity: 'warning',
266
+ recommendation: 'Check the PV status and storage backend health',
267
+ });
268
+ }
269
+ }
270
+ // Check for resource quota issues
271
+ if (status === 'Pending' && pvc.spec?.resources?.requests?.storage) {
272
+ // This is a simplified check - in reality, we'd need to query resource quotas
273
+ const requestedSize = pvc.spec.resources.requests.storage;
274
+ if (this.parseStorageSize(requestedSize) === 0) {
275
+ analysis.issues.push({
276
+ pvc,
277
+ issue: 'PVC has zero storage request',
278
+ severity: 'error',
279
+ recommendation: 'Set a valid storage request size in the PVC spec',
280
+ });
281
+ }
282
+ }
283
+ }
284
+ return analysis;
285
+ }
286
+ /**
287
+ * Parse storage size string to bytes for comparison
288
+ * Supports common Kubernetes storage units (Ki, Mi, Gi, Ti, K, M, G, T)
289
+ */
290
+ parseStorageSize(sizeStr) {
291
+ if (!sizeStr)
292
+ return 0;
293
+ const units = {
294
+ Ki: 1024,
295
+ Mi: 1024 * 1024,
296
+ Gi: 1024 * 1024 * 1024,
297
+ Ti: 1024 * 1024 * 1024 * 1024,
298
+ K: 1000,
299
+ M: 1000 * 1000,
300
+ G: 1000 * 1000 * 1000,
301
+ T: 1000 * 1000 * 1000 * 1000,
302
+ '': 1, // bytes
303
+ };
304
+ const match = sizeStr.match(/^(\d+(?:\.\d+)?)\s*([A-Za-z]*)$/);
305
+ if (!match)
306
+ return 0;
307
+ const value = parseFloat(match[1]);
308
+ const unit = match[2] || '';
309
+ const multiplier = units[unit] || 1;
310
+ return Math.floor(value * multiplier);
311
+ }
312
+ /**
313
+ * Get PVC usage information with node stats integration
314
+ */
315
+ async getPVCUsage(name, namespace) {
316
+ try {
317
+ const pvc = await this.get(name, { namespace });
318
+ const pvcWithUsage = { ...pvc };
319
+ // Add bound PV information
320
+ if (pvc.spec?.volumeName) {
321
+ pvcWithUsage.boundPV = pvc.spec.volumeName;
322
+ }
323
+ // Try to get usage information from node stats
324
+ // This would typically require access to kubelet stats API
325
+ // For now, we'll return the PVC without usage info
326
+ pvcWithUsage.usage = {
327
+ capacity: pvc.status?.capacity?.storage || pvc.spec?.resources?.requests?.storage || 'Unknown',
328
+ used: 'Unknown',
329
+ available: 'Unknown',
330
+ percentUsed: 0,
331
+ };
332
+ return pvcWithUsage;
333
+ }
334
+ catch (error) {
335
+ this.logger?.error(`Failed to get PVC usage for ${name} in ${namespace}: ${error}`);
336
+ return null;
337
+ }
338
+ }
339
+ /**
340
+ * Check PVC to PV binding relationships
341
+ */
342
+ async checkBindingStatus() {
343
+ const pvcList = await this.list();
344
+ const pvList = await this.client.core.listPersistentVolume();
345
+ const result = {
346
+ bound: 0,
347
+ pending: 0,
348
+ available: 0,
349
+ bindingIssues: [],
350
+ };
351
+ for (const pvc of pvcList.items) {
352
+ const status = pvc.status?.phase || 'Unknown';
353
+ switch (status) {
354
+ case 'Bound':
355
+ result.bound++;
356
+ break;
357
+ case 'Pending':
358
+ result.pending++;
359
+ break;
360
+ default:
361
+ result.available++;
362
+ }
363
+ // Check for binding issues
364
+ if (status === 'Bound' && pvc.spec?.volumeName) {
365
+ const boundPV = pvList.items.find((pv) => pv.metadata?.name === pvc.spec?.volumeName);
366
+ if (!boundPV) {
367
+ result.bindingIssues.push({
368
+ pvc,
369
+ issue: `Bound to non-existent PV: ${pvc.spec.volumeName}`,
370
+ });
371
+ }
372
+ else if (boundPV.status?.phase !== 'Bound') {
373
+ result.bindingIssues.push({
374
+ pvc,
375
+ issue: `Bound PV is not in Bound state: ${boundPV.status?.phase}`,
376
+ });
377
+ }
378
+ }
379
+ }
380
+ return result;
381
+ }
382
+ }
383
+ //# sourceMappingURL=PersistentVolumeClaimOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistentVolumeClaimOperations.js","sourceRoot":"","sources":["../../../../src/kubernetes/resources/PersistentVolumeClaimOperations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import * as k8s from '@kubernetes/client-node';
2
+ import { V1PersistentVolume } from '@kubernetes/client-node';
3
+ import { BaseResourceOperations, ResourceOperationOptions, WatchCallback } from '../BaseResourceOperations.js';
4
+ import { KubernetesClient } from '../KubernetesClient.js';
5
+ /**
6
+ * PersistentVolume-specific operation options
7
+ */
8
+ export interface PersistentVolumeOperationOptions extends ResourceOperationOptions {
9
+ /**
10
+ * Filter by storage class
11
+ */
12
+ storageClass?: string;
13
+ /**
14
+ * Filter by reclaim policy
15
+ */
16
+ reclaimPolicy?: string;
17
+ /**
18
+ * Filter by access mode
19
+ */
20
+ accessMode?: string;
21
+ }
22
+ /**
23
+ * Represents a PV with usage information
24
+ */
25
+ export interface PVWithUsage extends V1PersistentVolume {
26
+ usage?: {
27
+ capacity?: string;
28
+ used?: string;
29
+ available?: string;
30
+ percentUsed?: number;
31
+ };
32
+ }
33
+ /**
34
+ * PV analysis result
35
+ */
36
+ export interface PVAnalysisResult {
37
+ total: number;
38
+ byStatus: Record<string, number>;
39
+ byStorageClass: Record<string, number>;
40
+ byReclaimPolicy: Record<string, number>;
41
+ unbound: V1PersistentVolume[];
42
+ issues: Array<{
43
+ pv: V1PersistentVolume;
44
+ issue: string;
45
+ severity: 'info' | 'warning' | 'error';
46
+ recommendation?: string;
47
+ }>;
48
+ }
49
+ /**
50
+ * Operations for Kubernetes Persistent Volumes
51
+ */
52
+ export declare class PersistentVolumeOperations extends BaseResourceOperations<V1PersistentVolume> {
53
+ constructor(client: KubernetesClient);
54
+ protected getResourceNamespaced(): boolean;
55
+ /**
56
+ * Create operation is not supported for this read-only tool
57
+ */
58
+ create(_resource: V1PersistentVolume, _options?: ResourceOperationOptions): Promise<V1PersistentVolume>;
59
+ /**
60
+ * Update operation is not supported for this read-only tool
61
+ */
62
+ update(_resource: V1PersistentVolume, _options?: ResourceOperationOptions): Promise<V1PersistentVolume>;
63
+ /**
64
+ * Patch operation is not supported for this read-only tool
65
+ */
66
+ patch(_name: string, _patch: any, _options?: ResourceOperationOptions): Promise<V1PersistentVolume>;
67
+ /**
68
+ * Delete operation is not supported for this read-only tool
69
+ */
70
+ delete(_name: string, _options?: ResourceOperationOptions): Promise<void>;
71
+ /**
72
+ * List all Persistent Volumes
73
+ */
74
+ list(options?: PersistentVolumeOperationOptions): Promise<k8s.V1PersistentVolumeList>;
75
+ /**
76
+ * Get a specific Persistent Volume by name
77
+ */
78
+ get(name: string, _options?: ResourceOperationOptions): Promise<V1PersistentVolume>;
79
+ /**
80
+ * Watch Persistent Volumes for changes
81
+ */
82
+ watch(callback: WatchCallback<V1PersistentVolume>, options?: ResourceOperationOptions): () => void;
83
+ /**
84
+ * Analyze PV status and issues
85
+ */
86
+ analyzePVs(options?: PersistentVolumeOperationOptions): Promise<PVAnalysisResult>;
87
+ /**
88
+ * Parse storage size string to bytes for comparison
89
+ * Supports common Kubernetes storage units (Ki, Mi, Gi, Ti, K, M, G, T)
90
+ */
91
+ private parseStorageSize;
92
+ /**
93
+ * Get PV usage information (requires metrics or node stats)
94
+ */
95
+ getPVUsage(pvName: string): Promise<PVWithUsage | null>;
96
+ }
97
+ //# sourceMappingURL=PersistentVolumeOperations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistentVolumeOperations.d.ts","sourceRoot":"","sources":["../../../../src/kubernetes/resources/PersistentVolumeOperations.ts"],"names":[],"mappings":"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"}