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,137 @@
1
+ /**
2
+ * Retry strategy for Kubernetes operations
3
+ */
4
+ import { Logger } from 'winston';
5
+ /**
6
+ * Retry configuration options
7
+ */
8
+ export interface RetryConfig {
9
+ /** Maximum number of retry attempts */
10
+ maxAttempts: number;
11
+ /** Initial delay in milliseconds before first retry */
12
+ initialDelayMs: number;
13
+ /** Maximum delay in milliseconds between retries */
14
+ maxDelayMs: number;
15
+ /** Exponential backoff factor (e.g., 2 for doubling) */
16
+ backoffMultiplier: number;
17
+ /** Jitter factor (0-1) to randomize delays */
18
+ jitterFactor: number;
19
+ /** Timeout for entire retry operation in milliseconds */
20
+ timeoutMs?: number;
21
+ /** Custom function to determine if error is retryable */
22
+ isRetryable?: (error: any) => boolean;
23
+ /** Callback for retry events */
24
+ onRetry?: (attempt: number, error: any, nextDelayMs: number) => void;
25
+ }
26
+ /**
27
+ * Default retry configuration
28
+ */
29
+ export declare const DEFAULT_RETRY_CONFIG: RetryConfig;
30
+ /**
31
+ * Preset configurations for common scenarios
32
+ */
33
+ export declare const RETRY_PRESETS: {
34
+ /** Fast retries for transient network issues */
35
+ readonly FAST: {
36
+ readonly maxAttempts: 3;
37
+ readonly initialDelayMs: 100;
38
+ readonly maxDelayMs: 1000;
39
+ readonly backoffMultiplier: 2;
40
+ readonly jitterFactor: 0.1;
41
+ readonly timeoutMs: 5000;
42
+ };
43
+ /** Standard retries for most operations */
44
+ readonly STANDARD: RetryConfig;
45
+ /** Aggressive retries for critical operations */
46
+ readonly AGGRESSIVE: {
47
+ readonly maxAttempts: 5;
48
+ readonly initialDelayMs: 500;
49
+ readonly maxDelayMs: 60000;
50
+ readonly backoffMultiplier: 2;
51
+ readonly jitterFactor: 0.2;
52
+ readonly timeoutMs: 300000;
53
+ };
54
+ /** No retries */
55
+ readonly NONE: {
56
+ readonly maxAttempts: 1;
57
+ readonly initialDelayMs: 0;
58
+ readonly maxDelayMs: 0;
59
+ readonly backoffMultiplier: 1;
60
+ readonly jitterFactor: 0;
61
+ };
62
+ };
63
+ /**
64
+ * Retry context for tracking state
65
+ */
66
+ export interface RetryContext {
67
+ attempt: number;
68
+ totalDelay: number;
69
+ startTime: number;
70
+ errors: any[];
71
+ }
72
+ /**
73
+ * Result of a retry operation
74
+ */
75
+ export interface RetryResult<T> {
76
+ success: boolean;
77
+ value?: T;
78
+ error?: any;
79
+ attempts: number;
80
+ totalDelayMs: number;
81
+ totalTimeMs: number;
82
+ }
83
+ /**
84
+ * Retry strategy implementation
85
+ */
86
+ export declare class RetryStrategy {
87
+ private readonly config;
88
+ private readonly logger?;
89
+ constructor(config?: Partial<RetryConfig>, logger?: Logger);
90
+ /**
91
+ * Execute an operation with retry logic
92
+ */
93
+ execute<T>(operation: () => Promise<T>, operationName?: string): Promise<RetryResult<T>>;
94
+ /**
95
+ * Wrap a function with retry logic
96
+ */
97
+ wrap<T extends (...args: any[]) => Promise<any>>(fn: T, operationName?: string): T;
98
+ /**
99
+ * Determine if an error is retryable
100
+ */
101
+ private shouldRetry;
102
+ /**
103
+ * Calculate delay for next retry attempt with exponential backoff and jitter
104
+ */
105
+ private calculateDelay;
106
+ /**
107
+ * Delay execution for specified milliseconds
108
+ */
109
+ private delay;
110
+ }
111
+ /**
112
+ * Retry builder for fluent configuration
113
+ */
114
+ export declare class RetryBuilder {
115
+ private config;
116
+ private logger?;
117
+ withMaxAttempts(attempts: number): this;
118
+ withInitialDelay(ms: number): this;
119
+ withMaxDelay(ms: number): this;
120
+ withBackoffMultiplier(multiplier: number): this;
121
+ withJitterFactor(factor: number): this;
122
+ withTimeout(ms: number): this;
123
+ withRetryableCheck(fn: (error: any) => boolean): this;
124
+ withRetryCallback(fn: (attempt: number, error: any, nextDelayMs: number) => void): this;
125
+ withLogger(logger: Logger): this;
126
+ withPreset(preset: keyof typeof RETRY_PRESETS): this;
127
+ build(): RetryStrategy;
128
+ }
129
+ /**
130
+ * Convenience function to create a retry strategy
131
+ */
132
+ export declare function createRetryStrategy(config?: Partial<RetryConfig>, logger?: Logger): RetryStrategy;
133
+ /**
134
+ * Decorator for adding retry logic to methods
135
+ */
136
+ export declare function Retryable(config?: Partial<RetryConfig>): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
137
+ //# sourceMappingURL=RetryStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetryStrategy.d.ts","sourceRoot":"","sources":["../../../src/kubernetes/RetryStrategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Retry strategy for Kubernetes operations
3
+ */
4
+ import { KubernetesError } from './ErrorHandling.js';
5
+ /**
6
+ * Default retry configuration
7
+ */
8
+ export const DEFAULT_RETRY_CONFIG = {
9
+ maxAttempts: 3,
10
+ initialDelayMs: 1000,
11
+ maxDelayMs: 30000,
12
+ backoffMultiplier: 2,
13
+ jitterFactor: 0.1,
14
+ timeoutMs: 60000,
15
+ };
16
+ /**
17
+ * Preset configurations for common scenarios
18
+ */
19
+ export const RETRY_PRESETS = {
20
+ /** Fast retries for transient network issues */
21
+ FAST: {
22
+ maxAttempts: 3,
23
+ initialDelayMs: 100,
24
+ maxDelayMs: 1000,
25
+ backoffMultiplier: 2,
26
+ jitterFactor: 0.1,
27
+ timeoutMs: 5000,
28
+ },
29
+ /** Standard retries for most operations */
30
+ STANDARD: DEFAULT_RETRY_CONFIG,
31
+ /** Aggressive retries for critical operations */
32
+ AGGRESSIVE: {
33
+ maxAttempts: 5,
34
+ initialDelayMs: 500,
35
+ maxDelayMs: 60000,
36
+ backoffMultiplier: 2,
37
+ jitterFactor: 0.2,
38
+ timeoutMs: 300000,
39
+ },
40
+ /** No retries */
41
+ NONE: {
42
+ maxAttempts: 1,
43
+ initialDelayMs: 0,
44
+ maxDelayMs: 0,
45
+ backoffMultiplier: 1,
46
+ jitterFactor: 0,
47
+ },
48
+ };
49
+ /**
50
+ * Retry strategy implementation
51
+ */
52
+ export class RetryStrategy {
53
+ config;
54
+ logger;
55
+ constructor(config = {}, logger) {
56
+ // If config is a preset, merge with DEFAULT_RETRY_CONFIG, then user config
57
+ let baseConfig = {};
58
+ if (config &&
59
+ config.maxAttempts !== undefined &&
60
+ config.initialDelayMs !== undefined) {
61
+ baseConfig = config;
62
+ }
63
+ // If config is a preset object (from RETRY_PRESETS), merge with default
64
+ this.config = { ...DEFAULT_RETRY_CONFIG, ...baseConfig, ...config };
65
+ this.logger = logger;
66
+ }
67
+ /**
68
+ * Execute an operation with retry logic
69
+ */
70
+ async execute(operation, operationName) {
71
+ let timeoutId = null;
72
+ let timeoutPromise = null;
73
+ if (this.config.timeoutMs) {
74
+ timeoutPromise = new Promise((_, reject) => {
75
+ timeoutId = setTimeout(() => {
76
+ reject(new Error(`Operation timed out after ${this.config.timeoutMs}ms`));
77
+ }, this.config.timeoutMs);
78
+ });
79
+ }
80
+ let lastError = undefined;
81
+ let totalDelay = 0;
82
+ const startTime = Date.now();
83
+ for (let i = 0; i < this.config.maxAttempts; i++) {
84
+ try {
85
+ const race = timeoutPromise ? Promise.race([operation(), timeoutPromise]) : operation();
86
+ const opResult = await race;
87
+ if (timeoutId)
88
+ clearTimeout(timeoutId);
89
+ return {
90
+ success: true,
91
+ value: opResult,
92
+ attempts: i + 1,
93
+ totalDelayMs: totalDelay,
94
+ totalTimeMs: Date.now() - startTime,
95
+ };
96
+ }
97
+ catch (error) {
98
+ lastError = error;
99
+ if (i < this.config.maxAttempts - 1 &&
100
+ this.shouldRetry(error, { attempt: i, totalDelay, startTime, errors: [] })) {
101
+ const delayMs = this.calculateDelay(i + 1);
102
+ totalDelay += delayMs;
103
+ this.logger?.warn(`Retry attempt ${i + 2}/${this.config.maxAttempts} for ${operationName || 'operation'}`, {
104
+ error: error instanceof Error ? error.message : String(error),
105
+ nextDelayMs: delayMs,
106
+ totalDelayMs: totalDelay,
107
+ });
108
+ this.config.onRetry?.(i + 1, error, delayMs);
109
+ await this.delay(delayMs);
110
+ }
111
+ else {
112
+ if (timeoutId)
113
+ clearTimeout(timeoutId);
114
+ return {
115
+ success: false,
116
+ error,
117
+ attempts: i + 1,
118
+ totalDelayMs: totalDelay,
119
+ totalTimeMs: Date.now() - startTime,
120
+ };
121
+ }
122
+ }
123
+ }
124
+ if (timeoutId)
125
+ clearTimeout(timeoutId);
126
+ return {
127
+ success: false,
128
+ error: lastError,
129
+ attempts: this.config.maxAttempts,
130
+ totalDelayMs: totalDelay,
131
+ totalTimeMs: Date.now() - startTime,
132
+ };
133
+ }
134
+ /**
135
+ * Wrap a function with retry logic
136
+ */
137
+ wrap(fn, operationName) {
138
+ return (async (...args) => {
139
+ const result = await this.execute(() => fn(...args), operationName);
140
+ if (!result.success) {
141
+ throw result.error;
142
+ }
143
+ return result.value;
144
+ });
145
+ }
146
+ /**
147
+ * Determine if an error is retryable
148
+ */
149
+ shouldRetry(error, context) {
150
+ // Check if we have attempts remaining
151
+ if (context.attempt >= this.config.maxAttempts) {
152
+ return false;
153
+ }
154
+ // Check timeout
155
+ if (this.config.timeoutMs) {
156
+ const elapsed = Date.now() - context.startTime;
157
+ if (elapsed + this.calculateDelay(context.attempt) > this.config.timeoutMs) {
158
+ return false;
159
+ }
160
+ }
161
+ // Use custom retry logic if provided
162
+ if (this.config.isRetryable) {
163
+ return this.config.isRetryable(error);
164
+ }
165
+ // Default retry logic for Kubernetes errors
166
+ if (error instanceof KubernetesError) {
167
+ return error.retryable;
168
+ }
169
+ // Retry on specific error conditions
170
+ const errorMessage = error?.message?.toLowerCase() || '';
171
+ const retryableConditions = [
172
+ 'econnrefused',
173
+ 'enotfound',
174
+ 'etimedout',
175
+ 'econnreset',
176
+ 'epipe',
177
+ 'network',
178
+ 'timeout',
179
+ 'socket hang up',
180
+ 'service unavailable',
181
+ 'bad gateway',
182
+ 'gateway timeout',
183
+ ];
184
+ return retryableConditions.some((condition) => errorMessage.includes(condition));
185
+ }
186
+ /**
187
+ * Calculate delay for next retry attempt with exponential backoff and jitter
188
+ */
189
+ calculateDelay(attempt) {
190
+ // Calculate base delay with exponential backoff
191
+ const baseDelay = Math.min(this.config.initialDelayMs * Math.pow(this.config.backoffMultiplier, attempt - 1), this.config.maxDelayMs);
192
+ // Add jitter to prevent thundering herd
193
+ const jitter = baseDelay * this.config.jitterFactor * (Math.random() * 2 - 1);
194
+ return Math.max(0, Math.floor(baseDelay + jitter));
195
+ }
196
+ /**
197
+ * Delay execution for specified milliseconds
198
+ */
199
+ delay(ms) {
200
+ return new Promise((resolve) => setTimeout(resolve, ms));
201
+ }
202
+ }
203
+ /**
204
+ * Retry builder for fluent configuration
205
+ */
206
+ export class RetryBuilder {
207
+ config = {};
208
+ logger;
209
+ withMaxAttempts(attempts) {
210
+ this.config.maxAttempts = attempts;
211
+ return this;
212
+ }
213
+ withInitialDelay(ms) {
214
+ this.config.initialDelayMs = ms;
215
+ return this;
216
+ }
217
+ withMaxDelay(ms) {
218
+ this.config.maxDelayMs = ms;
219
+ return this;
220
+ }
221
+ withBackoffMultiplier(multiplier) {
222
+ this.config.backoffMultiplier = multiplier;
223
+ return this;
224
+ }
225
+ withJitterFactor(factor) {
226
+ this.config.jitterFactor = factor;
227
+ return this;
228
+ }
229
+ withTimeout(ms) {
230
+ this.config.timeoutMs = ms;
231
+ return this;
232
+ }
233
+ withRetryableCheck(fn) {
234
+ this.config.isRetryable = fn;
235
+ return this;
236
+ }
237
+ withRetryCallback(fn) {
238
+ this.config.onRetry = fn;
239
+ return this;
240
+ }
241
+ withLogger(logger) {
242
+ this.logger = logger;
243
+ return this;
244
+ }
245
+ withPreset(preset) {
246
+ // User overrides should take precedence
247
+ this.config = { ...RETRY_PRESETS[preset], ...this.config };
248
+ return this;
249
+ }
250
+ build() {
251
+ return new RetryStrategy(this.config, this.logger);
252
+ }
253
+ }
254
+ /**
255
+ * Convenience function to create a retry strategy
256
+ */
257
+ export function createRetryStrategy(config, logger) {
258
+ return new RetryStrategy(config, logger);
259
+ }
260
+ /**
261
+ * Decorator for adding retry logic to methods
262
+ */
263
+ export function Retryable(config = {}) {
264
+ return function (target, propertyKey, descriptor) {
265
+ const originalMethod = descriptor.value;
266
+ const strategy = new RetryStrategy(config);
267
+ descriptor.value = async function (...args) {
268
+ const result = await strategy.execute(() => originalMethod.apply(this, args), `${target.constructor.name}.${propertyKey}`);
269
+ if (!result.success) {
270
+ throw result.error;
271
+ }
272
+ return result.value;
273
+ };
274
+ return descriptor;
275
+ };
276
+ }
277
+ //# sourceMappingURL=RetryStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetryStrategy.js","sourceRoot":"","sources":["../../../src/kubernetes/RetryStrategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Retryable Operation Module
3
+ *
4
+ * Combines retry logic and circuit breaker pattern into a single
5
+ * reusable component for Kubernetes operations.
6
+ */
7
+ import { Logger } from 'winston';
8
+ import { RetryConfig } from './RetryStrategy.js';
9
+ import { CircuitBreakerConfig } from './CircuitBreaker.js';
10
+ import { ErrorMonitor, ErrorContext } from './ErrorHandling.js';
11
+ /**
12
+ * Configuration for retryable operations
13
+ */
14
+ export interface RetryableOperationConfig {
15
+ /** Retry configuration */
16
+ retry?: Partial<RetryConfig>;
17
+ /** Circuit breaker configuration */
18
+ circuitBreaker?: Partial<Omit<CircuitBreakerConfig, 'name'>>;
19
+ /** Error monitor instance */
20
+ errorMonitor?: ErrorMonitor;
21
+ /** Logger instance */
22
+ logger?: Logger;
23
+ }
24
+ /**
25
+ * Result of a retryable operation
26
+ */
27
+ export interface OperationResult<T> {
28
+ success: boolean;
29
+ value?: T;
30
+ error?: any;
31
+ attempts: number;
32
+ totalTimeMs: number;
33
+ circuitState?: string;
34
+ }
35
+ /**
36
+ * Retryable operation that combines retry and circuit breaker
37
+ */
38
+ export declare class RetryableOperation<T> {
39
+ private readonly operationName;
40
+ private readonly retryStrategy;
41
+ private readonly circuitBreaker;
42
+ private readonly errorMonitor?;
43
+ private readonly logger?;
44
+ constructor(operationName: string, config?: RetryableOperationConfig);
45
+ /**
46
+ * Execute an operation with retry and circuit breaker protection
47
+ */
48
+ execute<R = T>(operation: () => Promise<R>, context?: ErrorContext): Promise<OperationResult<R>>;
49
+ /**
50
+ * Execute operation and throw on failure
51
+ */
52
+ executeOrThrow<R = T>(operation: () => Promise<R>, context?: ErrorContext): Promise<R>;
53
+ /**
54
+ * Get circuit breaker state
55
+ */
56
+ getCircuitState(): string;
57
+ /**
58
+ * Get circuit breaker statistics
59
+ */
60
+ getCircuitStats(): import("./CircuitBreaker.js").CircuitStats;
61
+ /**
62
+ * Manually reset the circuit breaker
63
+ */
64
+ resetCircuit(): void;
65
+ /**
66
+ * Force open the circuit breaker
67
+ */
68
+ openCircuit(): void;
69
+ /**
70
+ * Set up circuit breaker event listeners
71
+ */
72
+ private setupCircuitBreakerEvents;
73
+ /**
74
+ * Cleanup resources
75
+ */
76
+ dispose(): void;
77
+ }
78
+ /**
79
+ * Factory for creating retryable operations
80
+ */
81
+ export declare class RetryableOperationFactory {
82
+ private readonly operations;
83
+ private readonly defaultConfig;
84
+ constructor(defaultConfig?: RetryableOperationConfig, logger?: Logger);
85
+ /**
86
+ * Create or get a retryable operation
87
+ */
88
+ create<T>(operationName: string, config?: RetryableOperationConfig): RetryableOperation<T>;
89
+ /**
90
+ * Get an existing operation
91
+ */
92
+ get<T>(operationName: string): RetryableOperation<T> | undefined;
93
+ /**
94
+ * Remove an operation
95
+ */
96
+ remove(operationName: string): boolean;
97
+ /**
98
+ * Get all operation names
99
+ */
100
+ getOperationNames(): string[];
101
+ /**
102
+ * Get statistics for all operations
103
+ */
104
+ getAllStats(): Record<string, any>;
105
+ /**
106
+ * Reset all circuit breakers
107
+ */
108
+ resetAllCircuits(): void;
109
+ /**
110
+ * Dispose all operations
111
+ */
112
+ dispose(): void;
113
+ }
114
+ /**
115
+ * Decorator for making methods retryable
116
+ */
117
+ export declare function RetryableMethod(operationName?: string, config?: RetryableOperationConfig): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
118
+ //# sourceMappingURL=RetryableOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetryableOperation.d.ts","sourceRoot":"","sources":["../../../src/kubernetes/RetryableOperation.ts"],"names":[],"mappings":"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"}