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,183 @@
1
+ import * as k8s from '@kubernetes/client-node';
2
+ import { Logger } from 'winston';
3
+ import { EventEmitter } from 'events';
4
+ /**
5
+ * Configuration options for connection pooling
6
+ */
7
+ export interface ConnectionPoolConfig {
8
+ /**
9
+ * Maximum number of connections per pool
10
+ */
11
+ maxConnections?: number;
12
+ /**
13
+ * Minimum number of connections to maintain
14
+ */
15
+ minConnections?: number;
16
+ /**
17
+ * Maximum idle time for a connection before removal (ms)
18
+ */
19
+ maxIdleTime?: number;
20
+ /**
21
+ * Time to wait for a connection to become available (ms)
22
+ */
23
+ acquireTimeout?: number;
24
+ /**
25
+ * Interval for health check runs (ms)
26
+ */
27
+ healthCheckInterval?: number;
28
+ /**
29
+ * Number of retries for failed health checks
30
+ */
31
+ healthCheckRetries?: number;
32
+ /**
33
+ * Enable connection warm-up on pool initialization
34
+ */
35
+ enableWarmup?: boolean;
36
+ /**
37
+ * Logger instance for debug output
38
+ */
39
+ logger?: Logger;
40
+ }
41
+ /**
42
+ * Connection state enum
43
+ */
44
+ export declare enum ConnectionState {
45
+ IDLE = "idle",
46
+ IN_USE = "in-use",
47
+ UNHEALTHY = "unhealthy",
48
+ DISPOSED = "disposed"
49
+ }
50
+ /**
51
+ * Connection entry tracking individual API client instances
52
+ */
53
+ export declare class ConnectionEntry {
54
+ readonly id: string;
55
+ readonly kubeConfig: k8s.KubeConfig;
56
+ private readonly logger?;
57
+ private _state;
58
+ private _lastUsed;
59
+ private _createdAt;
60
+ private _useCount;
61
+ private _lastHealthCheck?;
62
+ private _healthCheckFailures;
63
+ constructor(id: string, kubeConfig: k8s.KubeConfig, logger?: Logger | undefined);
64
+ /**
65
+ * Get the current state of the connection
66
+ */
67
+ get state(): ConnectionState;
68
+ /**
69
+ * Set the connection state
70
+ */
71
+ set state(value: ConnectionState);
72
+ /**
73
+ * Get the last used timestamp
74
+ */
75
+ get lastUsed(): Date;
76
+ /**
77
+ * Get the creation timestamp
78
+ */
79
+ get createdAt(): Date;
80
+ /**
81
+ * Get the use count
82
+ */
83
+ get useCount(): number;
84
+ /**
85
+ * Get health check failure count
86
+ */
87
+ get healthCheckFailures(): number;
88
+ /**
89
+ * Get last health check timestamp
90
+ */
91
+ get lastHealthCheck(): Date | undefined;
92
+ /**
93
+ * Mark the connection as used
94
+ */
95
+ markUsed(): void;
96
+ /**
97
+ * Release the connection back to the pool
98
+ */
99
+ release(): void;
100
+ /**
101
+ * Perform a health check on the connection
102
+ */
103
+ checkHealth(): Promise<boolean>;
104
+ /**
105
+ * Check if the connection has been idle too long
106
+ */
107
+ isIdleExpired(maxIdleTime: number): boolean;
108
+ /**
109
+ * Dispose of the connection
110
+ */
111
+ dispose(): void;
112
+ /**
113
+ * Create an API client of the specified type
114
+ */
115
+ makeApiClient<T extends k8s.ApiType>(apiClientType: new (config: k8s.Configuration) => T): T;
116
+ }
117
+ /**
118
+ * Connection pool for managing Kubernetes API client connections
119
+ */
120
+ export declare class ConnectionPool extends EventEmitter {
121
+ private readonly contextName;
122
+ private readonly kubeConfigFactory;
123
+ private readonly config;
124
+ private readonly connections;
125
+ private readonly waitQueue;
126
+ private healthCheckTimer?;
127
+ private idleCheckTimer?;
128
+ private disposed;
129
+ private connectionCounter;
130
+ constructor(contextName: string, kubeConfigFactory: () => k8s.KubeConfig, config?: ConnectionPoolConfig);
131
+ private logger?;
132
+ /**
133
+ * Get pool statistics
134
+ */
135
+ get stats(): {
136
+ total: number;
137
+ idle: number;
138
+ inUse: number;
139
+ unhealthy: number;
140
+ waitQueueLength: number;
141
+ };
142
+ /**
143
+ * Warm up the pool by creating minimum connections
144
+ */
145
+ private warmup;
146
+ /**
147
+ * Create a new connection
148
+ */
149
+ private createConnection;
150
+ /**
151
+ * Acquire a connection from the pool
152
+ */
153
+ acquire(): Promise<ConnectionEntry>;
154
+ /**
155
+ * Release a connection back to the pool
156
+ */
157
+ release(connection: ConnectionEntry): void;
158
+ /**
159
+ * Remove a connection from the pool
160
+ */
161
+ private removeConnection;
162
+ /**
163
+ * Start periodic health checks
164
+ */
165
+ private startHealthChecks;
166
+ /**
167
+ * Perform health checks on all connections
168
+ */
169
+ private performHealthChecks;
170
+ /**
171
+ * Start periodic idle connection checks
172
+ */
173
+ private startIdleChecks;
174
+ /**
175
+ * Remove connections that have been idle too long
176
+ */
177
+ private removeIdleConnections;
178
+ /**
179
+ * Dispose of the connection pool
180
+ */
181
+ dispose(): Promise<void>;
182
+ }
183
+ //# sourceMappingURL=ConnectionPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionPool.d.ts","sourceRoot":"","sources":["../../../src/kubernetes/ConnectionPool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,437 @@
1
+ import * as k8s from '@kubernetes/client-node';
2
+ import { EventEmitter } from 'events';
3
+ /**
4
+ * Default configuration values
5
+ */
6
+ const DEFAULT_CONFIG = {
7
+ maxConnections: 10,
8
+ minConnections: 2,
9
+ maxIdleTime: 300000, // 5 minutes
10
+ acquireTimeout: 30000, // 30 seconds
11
+ healthCheckInterval: 60000, // 1 minute
12
+ healthCheckRetries: 3,
13
+ enableWarmup: true,
14
+ };
15
+ /**
16
+ * Connection state enum
17
+ */
18
+ export var ConnectionState;
19
+ (function (ConnectionState) {
20
+ ConnectionState["IDLE"] = "idle";
21
+ ConnectionState["IN_USE"] = "in-use";
22
+ ConnectionState["UNHEALTHY"] = "unhealthy";
23
+ ConnectionState["DISPOSED"] = "disposed";
24
+ })(ConnectionState || (ConnectionState = {}));
25
+ /**
26
+ * Connection entry tracking individual API client instances
27
+ */
28
+ export class ConnectionEntry {
29
+ id;
30
+ kubeConfig;
31
+ logger;
32
+ _state = ConnectionState.IDLE;
33
+ _lastUsed = new Date();
34
+ _createdAt = new Date();
35
+ _useCount = 0;
36
+ _lastHealthCheck;
37
+ _healthCheckFailures = 0;
38
+ constructor(id, kubeConfig, logger) {
39
+ this.id = id;
40
+ this.kubeConfig = kubeConfig;
41
+ this.logger = logger;
42
+ }
43
+ /**
44
+ * Get the current state of the connection
45
+ */
46
+ get state() {
47
+ return this._state;
48
+ }
49
+ /**
50
+ * Set the connection state
51
+ */
52
+ set state(value) {
53
+ this.logger?.debug(`Connection ${this.id} state changed: ${this._state} -> ${value}`);
54
+ this._state = value;
55
+ }
56
+ /**
57
+ * Get the last used timestamp
58
+ */
59
+ get lastUsed() {
60
+ return this._lastUsed;
61
+ }
62
+ /**
63
+ * Get the creation timestamp
64
+ */
65
+ get createdAt() {
66
+ return this._createdAt;
67
+ }
68
+ /**
69
+ * Get the use count
70
+ */
71
+ get useCount() {
72
+ return this._useCount;
73
+ }
74
+ /**
75
+ * Get health check failure count
76
+ */
77
+ get healthCheckFailures() {
78
+ return this._healthCheckFailures;
79
+ }
80
+ /**
81
+ * Get last health check timestamp
82
+ */
83
+ get lastHealthCheck() {
84
+ return this._lastHealthCheck;
85
+ }
86
+ /**
87
+ * Mark the connection as used
88
+ */
89
+ markUsed() {
90
+ this._lastUsed = new Date();
91
+ this._useCount++;
92
+ this.state = ConnectionState.IN_USE;
93
+ }
94
+ /**
95
+ * Release the connection back to the pool
96
+ */
97
+ release() {
98
+ if (this.state === ConnectionState.IN_USE) {
99
+ this.state = ConnectionState.IDLE;
100
+ }
101
+ }
102
+ /**
103
+ * Perform a health check on the connection
104
+ */
105
+ async checkHealth() {
106
+ try {
107
+ const api = this.kubeConfig.makeApiClient(k8s.CoreV1Api);
108
+ await api.listNamespace();
109
+ this._lastHealthCheck = new Date();
110
+ this._healthCheckFailures = 0;
111
+ if (this.state === ConnectionState.UNHEALTHY) {
112
+ this.state = ConnectionState.IDLE;
113
+ this.logger?.info(`Connection ${this.id} recovered`);
114
+ }
115
+ return true;
116
+ }
117
+ catch (error) {
118
+ this._healthCheckFailures++;
119
+ this.logger?.warn(`Health check failed for connection ${this.id}: ${error}`);
120
+ if (this.state !== ConnectionState.IN_USE) {
121
+ this.state = ConnectionState.UNHEALTHY;
122
+ }
123
+ return false;
124
+ }
125
+ }
126
+ /**
127
+ * Check if the connection has been idle too long
128
+ */
129
+ isIdleExpired(maxIdleTime) {
130
+ if (this.state !== ConnectionState.IDLE) {
131
+ return false;
132
+ }
133
+ const idleTime = Date.now() - this.lastUsed.getTime();
134
+ return idleTime > maxIdleTime;
135
+ }
136
+ /**
137
+ * Dispose of the connection
138
+ */
139
+ dispose() {
140
+ this.state = ConnectionState.DISPOSED;
141
+ this.logger?.debug(`Connection ${this.id} disposed`);
142
+ }
143
+ /**
144
+ * Create an API client of the specified type
145
+ */
146
+ makeApiClient(apiClientType) {
147
+ return this.kubeConfig.makeApiClient(apiClientType);
148
+ }
149
+ }
150
+ /**
151
+ * Connection pool for managing Kubernetes API client connections
152
+ */
153
+ export class ConnectionPool extends EventEmitter {
154
+ contextName;
155
+ kubeConfigFactory;
156
+ config;
157
+ connections = new Map();
158
+ waitQueue = [];
159
+ healthCheckTimer;
160
+ idleCheckTimer;
161
+ disposed = false;
162
+ connectionCounter = 0;
163
+ constructor(contextName, kubeConfigFactory, config = {}) {
164
+ super();
165
+ this.contextName = contextName;
166
+ this.kubeConfigFactory = kubeConfigFactory;
167
+ this.config = { ...DEFAULT_CONFIG, ...config };
168
+ this.logger = config.logger;
169
+ this.logger?.info(`Creating connection pool for context: ${contextName}`, {
170
+ config: this.config,
171
+ });
172
+ if (this.config.enableWarmup) {
173
+ this.warmup();
174
+ }
175
+ this.startHealthChecks();
176
+ this.startIdleChecks();
177
+ }
178
+ logger;
179
+ /**
180
+ * Get pool statistics
181
+ */
182
+ get stats() {
183
+ let idle = 0;
184
+ let inUse = 0;
185
+ let unhealthy = 0;
186
+ for (const conn of this.connections.values()) {
187
+ switch (conn.state) {
188
+ case ConnectionState.IDLE:
189
+ idle++;
190
+ break;
191
+ case ConnectionState.IN_USE:
192
+ inUse++;
193
+ break;
194
+ case ConnectionState.UNHEALTHY:
195
+ unhealthy++;
196
+ break;
197
+ }
198
+ }
199
+ return {
200
+ total: this.connections.size,
201
+ idle,
202
+ inUse,
203
+ unhealthy,
204
+ waitQueueLength: this.waitQueue.length,
205
+ };
206
+ }
207
+ /**
208
+ * Warm up the pool by creating minimum connections
209
+ */
210
+ async warmup() {
211
+ this.logger?.debug(`Warming up pool for context: ${this.contextName}`);
212
+ const promises = [];
213
+ for (let i = 0; i < this.config.minConnections; i++) {
214
+ promises.push(this.createConnection());
215
+ }
216
+ await Promise.all(promises);
217
+ this.logger?.info(`Pool warmed up with ${this.config.minConnections} connections`);
218
+ }
219
+ /**
220
+ * Create a new connection
221
+ */
222
+ async createConnection() {
223
+ const id = `${this.contextName}-${++this.connectionCounter}`;
224
+ const kubeConfig = this.kubeConfigFactory();
225
+ const connection = new ConnectionEntry(id, kubeConfig, this.logger);
226
+ // Verify the connection works
227
+ const isHealthy = await connection.checkHealth();
228
+ if (!isHealthy) {
229
+ throw new Error(`Failed to create healthy connection for context: ${this.contextName}`);
230
+ }
231
+ this.connections.set(id, connection);
232
+ this.emit('connectionCreated', connection);
233
+ this.logger?.debug(`Created connection: ${id}`);
234
+ return connection;
235
+ }
236
+ /**
237
+ * Acquire a connection from the pool
238
+ */
239
+ async acquire() {
240
+ if (this.disposed) {
241
+ throw new Error('Connection pool has been disposed');
242
+ }
243
+ // Try to find an idle connection
244
+ for (const conn of this.connections.values()) {
245
+ if (conn.state === ConnectionState.IDLE) {
246
+ conn.markUsed();
247
+ this.emit('connectionAcquired', conn);
248
+ return conn;
249
+ }
250
+ }
251
+ // Create a new connection if under the limit
252
+ if (this.connections.size < this.config.maxConnections) {
253
+ try {
254
+ const conn = await this.createConnection();
255
+ conn.markUsed();
256
+ this.emit('connectionAcquired', conn);
257
+ return conn;
258
+ }
259
+ catch (error) {
260
+ this.logger?.error(`Failed to create new connection: ${error}`);
261
+ throw error;
262
+ }
263
+ }
264
+ // Wait for a connection to become available
265
+ return new Promise((resolve, reject) => {
266
+ const timeoutId = setTimeout(() => {
267
+ const index = this.waitQueue.indexOf(callback);
268
+ if (index !== -1) {
269
+ this.waitQueue.splice(index, 1);
270
+ }
271
+ reject(new Error(`Connection acquire timeout after ${this.config.acquireTimeout}ms`));
272
+ }, this.config.acquireTimeout);
273
+ const callback = (conn) => {
274
+ clearTimeout(timeoutId);
275
+ if (conn) {
276
+ conn.markUsed();
277
+ this.emit('connectionAcquired', conn);
278
+ resolve(conn);
279
+ }
280
+ else {
281
+ reject(new Error('Failed to acquire connection'));
282
+ }
283
+ };
284
+ this.waitQueue.push(callback);
285
+ });
286
+ }
287
+ /**
288
+ * Release a connection back to the pool
289
+ */
290
+ release(connection) {
291
+ if (connection.state !== ConnectionState.IN_USE) {
292
+ this.logger?.warn(`Attempting to release connection ${connection.id} that is not in use`);
293
+ return;
294
+ }
295
+ connection.release();
296
+ this.emit('connectionReleased', connection);
297
+ // If there are waiting requests, fulfill them
298
+ if (this.waitQueue.length > 0) {
299
+ const callback = this.waitQueue.shift();
300
+ if (callback) {
301
+ callback(connection);
302
+ return;
303
+ }
304
+ }
305
+ // Check if we have too many idle connections
306
+ const stats = this.stats;
307
+ if (stats.idle > this.config.minConnections) {
308
+ // Remove this connection if it's the oldest idle one
309
+ let oldestIdle = null;
310
+ for (const conn of this.connections.values()) {
311
+ if (conn.state === ConnectionState.IDLE && conn !== connection) {
312
+ if (!oldestIdle || conn.lastUsed < oldestIdle.lastUsed) {
313
+ oldestIdle = conn;
314
+ }
315
+ }
316
+ }
317
+ if (oldestIdle && oldestIdle.lastUsed < connection.lastUsed) {
318
+ this.removeConnection(oldestIdle.id);
319
+ }
320
+ }
321
+ }
322
+ /**
323
+ * Remove a connection from the pool
324
+ */
325
+ removeConnection(connectionId) {
326
+ const conn = this.connections.get(connectionId);
327
+ if (conn) {
328
+ conn.dispose();
329
+ this.connections.delete(connectionId);
330
+ this.emit('connectionRemoved', conn);
331
+ this.logger?.debug(`Removed connection: ${connectionId}`);
332
+ }
333
+ }
334
+ /**
335
+ * Start periodic health checks
336
+ */
337
+ startHealthChecks() {
338
+ if (this.config.healthCheckInterval <= 0) {
339
+ return;
340
+ }
341
+ this.healthCheckTimer = setInterval(async () => {
342
+ await this.performHealthChecks();
343
+ }, this.config.healthCheckInterval);
344
+ }
345
+ /**
346
+ * Perform health checks on all connections
347
+ */
348
+ async performHealthChecks() {
349
+ if (this.disposed) {
350
+ return;
351
+ }
352
+ this.logger?.debug(`Performing health checks for pool: ${this.contextName}`);
353
+ const promises = [];
354
+ for (const conn of this.connections.values()) {
355
+ if (conn.state !== ConnectionState.IN_USE) {
356
+ promises.push(conn.checkHealth().then((healthy) => {
357
+ if (!healthy && conn.healthCheckFailures >= this.config.healthCheckRetries) {
358
+ this.logger?.warn(`Connection ${conn.id} failed health checks, removing from pool`);
359
+ this.removeConnection(conn.id);
360
+ }
361
+ }));
362
+ }
363
+ }
364
+ await Promise.all(promises);
365
+ // Ensure minimum connections
366
+ const stats = this.stats;
367
+ if (stats.total < this.config.minConnections && !this.disposed) {
368
+ const toCreate = this.config.minConnections - stats.total;
369
+ for (let i = 0; i < toCreate; i++) {
370
+ try {
371
+ await this.createConnection();
372
+ }
373
+ catch (error) {
374
+ this.logger?.error(`Failed to create connection during health check: ${error}`);
375
+ }
376
+ }
377
+ }
378
+ }
379
+ /**
380
+ * Start periodic idle connection checks
381
+ */
382
+ startIdleChecks() {
383
+ this.idleCheckTimer = setInterval(() => {
384
+ this.removeIdleConnections();
385
+ }, 30000); // Check every 30 seconds
386
+ }
387
+ /**
388
+ * Remove connections that have been idle too long
389
+ */
390
+ removeIdleConnections() {
391
+ if (this.disposed) {
392
+ return;
393
+ }
394
+ const stats = this.stats;
395
+ if (stats.total <= this.config.minConnections) {
396
+ return;
397
+ }
398
+ for (const conn of this.connections.values()) {
399
+ if (conn.isIdleExpired(this.config.maxIdleTime) && stats.total > this.config.minConnections) {
400
+ this.removeConnection(conn.id);
401
+ stats.total--;
402
+ }
403
+ }
404
+ }
405
+ /**
406
+ * Dispose of the connection pool
407
+ */
408
+ async dispose() {
409
+ if (this.disposed) {
410
+ return;
411
+ }
412
+ this.disposed = true;
413
+ this.logger?.info(`Disposing connection pool for context: ${this.contextName}`);
414
+ // Clear timers
415
+ if (this.healthCheckTimer) {
416
+ clearInterval(this.healthCheckTimer);
417
+ }
418
+ if (this.idleCheckTimer) {
419
+ clearInterval(this.idleCheckTimer);
420
+ }
421
+ // Reject all waiting requests
422
+ while (this.waitQueue.length > 0) {
423
+ const callback = this.waitQueue.shift();
424
+ if (callback) {
425
+ callback(null);
426
+ }
427
+ }
428
+ // Dispose all connections
429
+ for (const conn of this.connections.values()) {
430
+ conn.dispose();
431
+ }
432
+ this.connections.clear();
433
+ this.emit('disposed');
434
+ this.removeAllListeners();
435
+ }
436
+ }
437
+ //# sourceMappingURL=ConnectionPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionPool.js","sourceRoot":"","sources":["../../../src/kubernetes/ConnectionPool.ts"],"names":[],"mappings":"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"}