typekro 0.1.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 (620) hide show
  1. package/LICENSE +185 -0
  2. package/README.md +1137 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/alchemy/deployers.d.ts +39 -0
  5. package/dist/alchemy/deployers.d.ts.map +1 -0
  6. package/dist/alchemy/deployers.js +194 -0
  7. package/dist/alchemy/deployers.js.map +1 -0
  8. package/dist/alchemy/deployment.d.ts +12 -0
  9. package/dist/alchemy/deployment.d.ts.map +1 -0
  10. package/dist/alchemy/deployment.js +12 -0
  11. package/dist/alchemy/deployment.js.map +1 -0
  12. package/dist/alchemy/index.d.ts +17 -0
  13. package/dist/alchemy/index.d.ts.map +1 -0
  14. package/dist/alchemy/index.js +20 -0
  15. package/dist/alchemy/index.js.map +1 -0
  16. package/dist/alchemy/resolver.d.ts +127 -0
  17. package/dist/alchemy/resolver.d.ts.map +1 -0
  18. package/dist/alchemy/resolver.js +341 -0
  19. package/dist/alchemy/resolver.js.map +1 -0
  20. package/dist/alchemy/resource-registration.d.ts +22 -0
  21. package/dist/alchemy/resource-registration.d.ts.map +1 -0
  22. package/dist/alchemy/resource-registration.js +218 -0
  23. package/dist/alchemy/resource-registration.js.map +1 -0
  24. package/dist/alchemy/type-inference.d.ts +13 -0
  25. package/dist/alchemy/type-inference.d.ts.map +1 -0
  26. package/dist/alchemy/type-inference.js +67 -0
  27. package/dist/alchemy/type-inference.js.map +1 -0
  28. package/dist/alchemy/types.d.ts +92 -0
  29. package/dist/alchemy/types.d.ts.map +1 -0
  30. package/dist/alchemy/types.js +8 -0
  31. package/dist/alchemy/types.js.map +1 -0
  32. package/dist/alchemy/utilities.d.ts +12 -0
  33. package/dist/alchemy/utilities.d.ts.map +1 -0
  34. package/dist/alchemy/utilities.js +16 -0
  35. package/dist/alchemy/utilities.js.map +1 -0
  36. package/dist/alchemy/wrapper.d.ts +16 -0
  37. package/dist/alchemy/wrapper.d.ts.map +1 -0
  38. package/dist/alchemy/wrapper.js +23 -0
  39. package/dist/alchemy/wrapper.js.map +1 -0
  40. package/dist/core/composition/composition.d.ts +94 -0
  41. package/dist/core/composition/composition.d.ts.map +1 -0
  42. package/dist/core/composition/composition.js +230 -0
  43. package/dist/core/composition/composition.js.map +1 -0
  44. package/dist/core/composition/index.d.ts +12 -0
  45. package/dist/core/composition/index.d.ts.map +1 -0
  46. package/dist/core/composition/index.js +12 -0
  47. package/dist/core/composition/index.js.map +1 -0
  48. package/dist/core/composition/typekro-runtime/index.d.ts +3 -0
  49. package/dist/core/composition/typekro-runtime/index.d.ts.map +1 -0
  50. package/dist/core/composition/typekro-runtime/index.js +2 -0
  51. package/dist/core/composition/typekro-runtime/index.js.map +1 -0
  52. package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts +39 -0
  53. package/dist/core/composition/typekro-runtime/typekro-runtime.d.ts.map +1 -0
  54. package/dist/core/composition/typekro-runtime/typekro-runtime.js +100 -0
  55. package/dist/core/composition/typekro-runtime/typekro-runtime.js.map +1 -0
  56. package/dist/core/composition/typekro-runtime/types.d.ts +16 -0
  57. package/dist/core/composition/typekro-runtime/types.d.ts.map +1 -0
  58. package/dist/core/composition/typekro-runtime/types.js +12 -0
  59. package/dist/core/composition/typekro-runtime/types.js.map +1 -0
  60. package/dist/core/composition/types.d.ts +264 -0
  61. package/dist/core/composition/types.d.ts.map +1 -0
  62. package/dist/core/composition/types.js +2 -0
  63. package/dist/core/composition/types.js.map +1 -0
  64. package/dist/core/constants/brands.d.ts +42 -0
  65. package/dist/core/constants/brands.d.ts.map +1 -0
  66. package/dist/core/constants/brands.js +51 -0
  67. package/dist/core/constants/brands.js.map +1 -0
  68. package/dist/core/dependencies/graph.d.ts +67 -0
  69. package/dist/core/dependencies/graph.d.ts.map +1 -0
  70. package/dist/core/dependencies/graph.js +220 -0
  71. package/dist/core/dependencies/graph.js.map +1 -0
  72. package/dist/core/dependencies/index.d.ts +7 -0
  73. package/dist/core/dependencies/index.d.ts.map +1 -0
  74. package/dist/core/dependencies/index.js +8 -0
  75. package/dist/core/dependencies/index.js.map +1 -0
  76. package/dist/core/dependencies/resolver.d.ts +53 -0
  77. package/dist/core/dependencies/resolver.d.ts.map +1 -0
  78. package/dist/core/dependencies/resolver.js +167 -0
  79. package/dist/core/dependencies/resolver.js.map +1 -0
  80. package/dist/core/dependencies/type-guards.d.ts +17 -0
  81. package/dist/core/dependencies/type-guards.d.ts.map +1 -0
  82. package/dist/core/dependencies/type-guards.js +35 -0
  83. package/dist/core/dependencies/type-guards.js.map +1 -0
  84. package/dist/core/deployment/deployment-strategies.d.ts +12 -0
  85. package/dist/core/deployment/deployment-strategies.d.ts.map +1 -0
  86. package/dist/core/deployment/deployment-strategies.js +11 -0
  87. package/dist/core/deployment/deployment-strategies.js.map +1 -0
  88. package/dist/core/deployment/direct-factory.d.ts +111 -0
  89. package/dist/core/deployment/direct-factory.d.ts.map +1 -0
  90. package/dist/core/deployment/direct-factory.js +627 -0
  91. package/dist/core/deployment/direct-factory.js.map +1 -0
  92. package/dist/core/deployment/engine.d.ts +128 -0
  93. package/dist/core/deployment/engine.d.ts.map +1 -0
  94. package/dist/core/deployment/engine.js +1408 -0
  95. package/dist/core/deployment/engine.js.map +1 -0
  96. package/dist/core/deployment/index.d.ts +14 -0
  97. package/dist/core/deployment/index.d.ts.map +1 -0
  98. package/dist/core/deployment/index.js +14 -0
  99. package/dist/core/deployment/index.js.map +1 -0
  100. package/dist/core/deployment/kro-factory.d.ts +143 -0
  101. package/dist/core/deployment/kro-factory.d.ts.map +1 -0
  102. package/dist/core/deployment/kro-factory.js +837 -0
  103. package/dist/core/deployment/kro-factory.js.map +1 -0
  104. package/dist/core/deployment/readiness.d.ts +54 -0
  105. package/dist/core/deployment/readiness.d.ts.map +1 -0
  106. package/dist/core/deployment/readiness.js +175 -0
  107. package/dist/core/deployment/readiness.js.map +1 -0
  108. package/dist/core/deployment/rollback-manager.d.ts +63 -0
  109. package/dist/core/deployment/rollback-manager.d.ts.map +1 -0
  110. package/dist/core/deployment/rollback-manager.js +225 -0
  111. package/dist/core/deployment/rollback-manager.js.map +1 -0
  112. package/dist/core/deployment/shared-utilities.d.ts +41 -0
  113. package/dist/core/deployment/shared-utilities.d.ts.map +1 -0
  114. package/dist/core/deployment/shared-utilities.js +100 -0
  115. package/dist/core/deployment/shared-utilities.js.map +1 -0
  116. package/dist/core/deployment/status-hydrator.d.ts +86 -0
  117. package/dist/core/deployment/status-hydrator.d.ts.map +1 -0
  118. package/dist/core/deployment/status-hydrator.js +262 -0
  119. package/dist/core/deployment/status-hydrator.js.map +1 -0
  120. package/dist/core/deployment/strategies/alchemy-strategy.d.ts +107 -0
  121. package/dist/core/deployment/strategies/alchemy-strategy.d.ts.map +1 -0
  122. package/dist/core/deployment/strategies/alchemy-strategy.js +446 -0
  123. package/dist/core/deployment/strategies/alchemy-strategy.js.map +1 -0
  124. package/dist/core/deployment/strategies/base-strategy.d.ts +50 -0
  125. package/dist/core/deployment/strategies/base-strategy.d.ts.map +1 -0
  126. package/dist/core/deployment/strategies/base-strategy.js +82 -0
  127. package/dist/core/deployment/strategies/base-strategy.js.map +1 -0
  128. package/dist/core/deployment/strategies/direct-strategy.d.ts +29 -0
  129. package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -0
  130. package/dist/core/deployment/strategies/direct-strategy.js +80 -0
  131. package/dist/core/deployment/strategies/direct-strategy.js.map +1 -0
  132. package/dist/core/deployment/strategies/index.d.ts +12 -0
  133. package/dist/core/deployment/strategies/index.d.ts.map +1 -0
  134. package/dist/core/deployment/strategies/index.js +12 -0
  135. package/dist/core/deployment/strategies/index.js.map +1 -0
  136. package/dist/core/deployment/strategies/kro-strategy.d.ts +41 -0
  137. package/dist/core/deployment/strategies/kro-strategy.d.ts.map +1 -0
  138. package/dist/core/deployment/strategies/kro-strategy.js +270 -0
  139. package/dist/core/deployment/strategies/kro-strategy.js.map +1 -0
  140. package/dist/core/direct-deployment.d.ts +8 -0
  141. package/dist/core/direct-deployment.d.ts.map +1 -0
  142. package/dist/core/direct-deployment.js +9 -0
  143. package/dist/core/direct-deployment.js.map +1 -0
  144. package/dist/core/errors.d.ts +73 -0
  145. package/dist/core/errors.d.ts.map +1 -0
  146. package/dist/core/errors.js +250 -0
  147. package/dist/core/errors.js.map +1 -0
  148. package/dist/core/evaluation/cel-optimizer.d.ts +48 -0
  149. package/dist/core/evaluation/cel-optimizer.d.ts.map +1 -0
  150. package/dist/core/evaluation/cel-optimizer.js +176 -0
  151. package/dist/core/evaluation/cel-optimizer.js.map +1 -0
  152. package/dist/core/factory.d.ts +12 -0
  153. package/dist/core/factory.d.ts.map +1 -0
  154. package/dist/core/factory.js +13 -0
  155. package/dist/core/factory.js.map +1 -0
  156. package/dist/core/kubernetes/api.d.ts +43 -0
  157. package/dist/core/kubernetes/api.d.ts.map +1 -0
  158. package/dist/core/kubernetes/api.js +209 -0
  159. package/dist/core/kubernetes/api.js.map +1 -0
  160. package/dist/core/kubernetes/client-provider.d.ts +204 -0
  161. package/dist/core/kubernetes/client-provider.d.ts.map +1 -0
  162. package/dist/core/kubernetes/client-provider.js +421 -0
  163. package/dist/core/kubernetes/client-provider.js.map +1 -0
  164. package/dist/core/logging/config.d.ts +14 -0
  165. package/dist/core/logging/config.d.ts.map +1 -0
  166. package/dist/core/logging/config.js +57 -0
  167. package/dist/core/logging/config.js.map +1 -0
  168. package/dist/core/logging/index.d.ts +4 -0
  169. package/dist/core/logging/index.d.ts.map +1 -0
  170. package/dist/core/logging/index.js +4 -0
  171. package/dist/core/logging/index.js.map +1 -0
  172. package/dist/core/logging/logger.d.ts +26 -0
  173. package/dist/core/logging/logger.d.ts.map +1 -0
  174. package/dist/core/logging/logger.js +114 -0
  175. package/dist/core/logging/logger.js.map +1 -0
  176. package/dist/core/logging/types.d.ts +93 -0
  177. package/dist/core/logging/types.d.ts.map +1 -0
  178. package/dist/core/logging/types.js +2 -0
  179. package/dist/core/logging/types.js.map +1 -0
  180. package/dist/core/readiness/cluster-state.d.ts +229 -0
  181. package/dist/core/readiness/cluster-state.d.ts.map +1 -0
  182. package/dist/core/readiness/cluster-state.js +360 -0
  183. package/dist/core/readiness/cluster-state.js.map +1 -0
  184. package/dist/core/readiness/index.d.ts +5 -0
  185. package/dist/core/readiness/index.d.ts.map +1 -0
  186. package/dist/core/readiness/index.js +5 -0
  187. package/dist/core/readiness/index.js.map +1 -0
  188. package/dist/core/readiness/registry.d.ts +45 -0
  189. package/dist/core/readiness/registry.d.ts.map +1 -0
  190. package/dist/core/readiness/registry.js +62 -0
  191. package/dist/core/readiness/registry.js.map +1 -0
  192. package/dist/core/references/cel-evaluator.d.ts +102 -0
  193. package/dist/core/references/cel-evaluator.d.ts.map +1 -0
  194. package/dist/core/references/cel-evaluator.js +288 -0
  195. package/dist/core/references/cel-evaluator.js.map +1 -0
  196. package/dist/core/references/cel.d.ts +75 -0
  197. package/dist/core/references/cel.d.ts.map +1 -0
  198. package/dist/core/references/cel.js +213 -0
  199. package/dist/core/references/cel.js.map +1 -0
  200. package/dist/core/references/external-refs.d.ts +37 -0
  201. package/dist/core/references/external-refs.d.ts.map +1 -0
  202. package/dist/core/references/external-refs.js +53 -0
  203. package/dist/core/references/external-refs.js.map +1 -0
  204. package/dist/core/references/index.d.ts +15 -0
  205. package/dist/core/references/index.d.ts.map +1 -0
  206. package/dist/core/references/index.js +19 -0
  207. package/dist/core/references/index.js.map +1 -0
  208. package/dist/core/references/resolver.d.ts +117 -0
  209. package/dist/core/references/resolver.d.ts.map +1 -0
  210. package/dist/core/references/resolver.js +554 -0
  211. package/dist/core/references/resolver.js.map +1 -0
  212. package/dist/core/references/schema-proxy.d.ts +38 -0
  213. package/dist/core/references/schema-proxy.d.ts.map +1 -0
  214. package/dist/core/references/schema-proxy.js +163 -0
  215. package/dist/core/references/schema-proxy.js.map +1 -0
  216. package/dist/core/serialization/core.d.ts +15 -0
  217. package/dist/core/serialization/core.d.ts.map +1 -0
  218. package/dist/core/serialization/core.js +169 -0
  219. package/dist/core/serialization/core.js.map +1 -0
  220. package/dist/core/serialization/index.d.ts +9 -0
  221. package/dist/core/serialization/index.d.ts.map +1 -0
  222. package/dist/core/serialization/index.js +12 -0
  223. package/dist/core/serialization/index.js.map +1 -0
  224. package/dist/core/serialization/schema.d.ts +14 -0
  225. package/dist/core/serialization/schema.d.ts.map +1 -0
  226. package/dist/core/serialization/schema.js +33 -0
  227. package/dist/core/serialization/schema.js.map +1 -0
  228. package/dist/core/serialization/validation.d.ts +18 -0
  229. package/dist/core/serialization/validation.d.ts.map +1 -0
  230. package/dist/core/serialization/validation.js +165 -0
  231. package/dist/core/serialization/validation.js.map +1 -0
  232. package/dist/core/serialization/yaml.d.ts +10 -0
  233. package/dist/core/serialization/yaml.d.ts.map +1 -0
  234. package/dist/core/serialization/yaml.js +63 -0
  235. package/dist/core/serialization/yaml.js.map +1 -0
  236. package/dist/core/types/common.d.ts +41 -0
  237. package/dist/core/types/common.d.ts.map +1 -0
  238. package/dist/core/types/common.js +9 -0
  239. package/dist/core/types/common.js.map +1 -0
  240. package/dist/core/types/dependencies.d.ts +14 -0
  241. package/dist/core/types/dependencies.d.ts.map +1 -0
  242. package/dist/core/types/dependencies.js +5 -0
  243. package/dist/core/types/dependencies.js.map +1 -0
  244. package/dist/core/types/deployment.d.ts +265 -0
  245. package/dist/core/types/deployment.d.ts.map +1 -0
  246. package/dist/core/types/deployment.js +20 -0
  247. package/dist/core/types/deployment.js.map +1 -0
  248. package/dist/core/types/index.d.ts +19 -0
  249. package/dist/core/types/index.d.ts.map +1 -0
  250. package/dist/core/types/index.js +15 -0
  251. package/dist/core/types/index.js.map +1 -0
  252. package/dist/core/types/kubernetes.d.ts +352 -0
  253. package/dist/core/types/kubernetes.d.ts.map +1 -0
  254. package/dist/core/types/kubernetes.js +5 -0
  255. package/dist/core/types/kubernetes.js.map +1 -0
  256. package/dist/core/types/references.d.ts +54 -0
  257. package/dist/core/types/references.d.ts.map +1 -0
  258. package/dist/core/types/references.js +14 -0
  259. package/dist/core/types/references.js.map +1 -0
  260. package/dist/core/types/resource-graph.d.ts +93 -0
  261. package/dist/core/types/resource-graph.d.ts.map +1 -0
  262. package/dist/core/types/resource-graph.js +8 -0
  263. package/dist/core/types/resource-graph.js.map +1 -0
  264. package/dist/core/types/serialization.d.ts +210 -0
  265. package/dist/core/types/serialization.d.ts.map +1 -0
  266. package/dist/core/types/serialization.js +5 -0
  267. package/dist/core/types/serialization.js.map +1 -0
  268. package/dist/core/types/yaml.d.ts +92 -0
  269. package/dist/core/types/yaml.d.ts.map +1 -0
  270. package/dist/core/types/yaml.js +2 -0
  271. package/dist/core/types/yaml.js.map +1 -0
  272. package/dist/core/types.d.ts +8 -0
  273. package/dist/core/types.d.ts.map +1 -0
  274. package/dist/core/types.js +9 -0
  275. package/dist/core/types.js.map +1 -0
  276. package/dist/core/validation/cel-validator.d.ts +47 -0
  277. package/dist/core/validation/cel-validator.d.ts.map +1 -0
  278. package/dist/core/validation/cel-validator.js +200 -0
  279. package/dist/core/validation/cel-validator.js.map +1 -0
  280. package/dist/core/yaml/index.d.ts +5 -0
  281. package/dist/core/yaml/index.d.ts.map +1 -0
  282. package/dist/core/yaml/index.js +5 -0
  283. package/dist/core/yaml/index.js.map +1 -0
  284. package/dist/core/yaml/path-resolver.d.ts +122 -0
  285. package/dist/core/yaml/path-resolver.d.ts.map +1 -0
  286. package/dist/core/yaml/path-resolver.js +556 -0
  287. package/dist/core/yaml/path-resolver.js.map +1 -0
  288. package/dist/core.d.ts +30 -0
  289. package/dist/core.d.ts.map +1 -0
  290. package/dist/core.js +59 -0
  291. package/dist/core.js.map +1 -0
  292. package/dist/factories/flux/git-repository.d.ts +62 -0
  293. package/dist/factories/flux/git-repository.d.ts.map +1 -0
  294. package/dist/factories/flux/git-repository.js +34 -0
  295. package/dist/factories/flux/git-repository.js.map +1 -0
  296. package/dist/factories/flux/index.d.ts +10 -0
  297. package/dist/factories/flux/index.d.ts.map +1 -0
  298. package/dist/factories/flux/index.js +11 -0
  299. package/dist/factories/flux/index.js.map +1 -0
  300. package/dist/factories/flux/kustomize/index.d.ts +4 -0
  301. package/dist/factories/flux/kustomize/index.d.ts.map +1 -0
  302. package/dist/factories/flux/kustomize/index.js +3 -0
  303. package/dist/factories/flux/kustomize/index.js.map +1 -0
  304. package/dist/factories/flux/kustomize/kustomization.d.ts +178 -0
  305. package/dist/factories/flux/kustomize/kustomization.d.ts.map +1 -0
  306. package/dist/factories/flux/kustomize/kustomization.js +108 -0
  307. package/dist/factories/flux/kustomize/kustomization.js.map +1 -0
  308. package/dist/factories/flux/kustomize/readiness-evaluators.d.ts +9 -0
  309. package/dist/factories/flux/kustomize/readiness-evaluators.d.ts.map +1 -0
  310. package/dist/factories/flux/kustomize/readiness-evaluators.js +71 -0
  311. package/dist/factories/flux/kustomize/readiness-evaluators.js.map +1 -0
  312. package/dist/factories/flux/kustomize/types.d.ts +2 -0
  313. package/dist/factories/flux/kustomize/types.d.ts.map +1 -0
  314. package/dist/factories/flux/kustomize/types.js +2 -0
  315. package/dist/factories/flux/kustomize/types.js.map +1 -0
  316. package/dist/factories/helm/helm-release.d.ts +139 -0
  317. package/dist/factories/helm/helm-release.d.ts.map +1 -0
  318. package/dist/factories/helm/helm-release.js +180 -0
  319. package/dist/factories/helm/helm-release.js.map +1 -0
  320. package/dist/factories/helm/helm-repository.d.ts +24 -0
  321. package/dist/factories/helm/helm-repository.d.ts.map +1 -0
  322. package/dist/factories/helm/helm-repository.js +57 -0
  323. package/dist/factories/helm/helm-repository.js.map +1 -0
  324. package/dist/factories/helm/index.d.ts +8 -0
  325. package/dist/factories/helm/index.d.ts.map +1 -0
  326. package/dist/factories/helm/index.js +8 -0
  327. package/dist/factories/helm/index.js.map +1 -0
  328. package/dist/factories/helm/readiness-evaluators.d.ts +55 -0
  329. package/dist/factories/helm/readiness-evaluators.d.ts.map +1 -0
  330. package/dist/factories/helm/readiness-evaluators.js +295 -0
  331. package/dist/factories/helm/readiness-evaluators.js.map +1 -0
  332. package/dist/factories/helm/types.d.ts +21 -0
  333. package/dist/factories/helm/types.d.ts.map +1 -0
  334. package/dist/factories/helm/types.js +2 -0
  335. package/dist/factories/helm/types.js.map +1 -0
  336. package/dist/factories/index.d.ts +12 -0
  337. package/dist/factories/index.d.ts.map +1 -0
  338. package/dist/factories/index.js +31 -0
  339. package/dist/factories/index.js.map +1 -0
  340. package/dist/factories/kro/index.d.ts +11 -0
  341. package/dist/factories/kro/index.d.ts.map +1 -0
  342. package/dist/factories/kro/index.js +10 -0
  343. package/dist/factories/kro/index.js.map +1 -0
  344. package/dist/factories/kro/kro-crd.d.ts +14 -0
  345. package/dist/factories/kro/kro-crd.d.ts.map +1 -0
  346. package/dist/factories/kro/kro-crd.js +51 -0
  347. package/dist/factories/kro/kro-crd.js.map +1 -0
  348. package/dist/factories/kro/kro-custom-resource.d.ts +23 -0
  349. package/dist/factories/kro/kro-custom-resource.d.ts.map +1 -0
  350. package/dist/factories/kro/kro-custom-resource.js +153 -0
  351. package/dist/factories/kro/kro-custom-resource.js.map +1 -0
  352. package/dist/factories/kro/resource-graph-definition.d.ts +12 -0
  353. package/dist/factories/kro/resource-graph-definition.d.ts.map +1 -0
  354. package/dist/factories/kro/resource-graph-definition.js +94 -0
  355. package/dist/factories/kro/resource-graph-definition.js.map +1 -0
  356. package/dist/factories/kubernetes/admission/index.d.ts +9 -0
  357. package/dist/factories/kubernetes/admission/index.d.ts.map +1 -0
  358. package/dist/factories/kubernetes/admission/index.js +9 -0
  359. package/dist/factories/kubernetes/admission/index.js.map +1 -0
  360. package/dist/factories/kubernetes/admission/mutating-webhook-configuration.d.ts +5 -0
  361. package/dist/factories/kubernetes/admission/mutating-webhook-configuration.d.ts.map +1 -0
  362. package/dist/factories/kubernetes/admission/mutating-webhook-configuration.js +10 -0
  363. package/dist/factories/kubernetes/admission/mutating-webhook-configuration.js.map +1 -0
  364. package/dist/factories/kubernetes/admission/validating-webhook-configuration.d.ts +5 -0
  365. package/dist/factories/kubernetes/admission/validating-webhook-configuration.d.ts.map +1 -0
  366. package/dist/factories/kubernetes/admission/validating-webhook-configuration.js +10 -0
  367. package/dist/factories/kubernetes/admission/validating-webhook-configuration.js.map +1 -0
  368. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.d.ts +6 -0
  369. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.d.ts.map +1 -0
  370. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.js +35 -0
  371. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler-v1.js.map +1 -0
  372. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.d.ts +6 -0
  373. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.d.ts.map +1 -0
  374. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.js +31 -0
  375. package/dist/factories/kubernetes/autoscaling/horizontal-pod-autoscaler.js.map +1 -0
  376. package/dist/factories/kubernetes/autoscaling/index.d.ts +9 -0
  377. package/dist/factories/kubernetes/autoscaling/index.d.ts.map +1 -0
  378. package/dist/factories/kubernetes/autoscaling/index.js +9 -0
  379. package/dist/factories/kubernetes/autoscaling/index.js.map +1 -0
  380. package/dist/factories/kubernetes/certificates/certificate-signing-request.d.ts +6 -0
  381. package/dist/factories/kubernetes/certificates/certificate-signing-request.d.ts.map +1 -0
  382. package/dist/factories/kubernetes/certificates/certificate-signing-request.js +48 -0
  383. package/dist/factories/kubernetes/certificates/certificate-signing-request.js.map +1 -0
  384. package/dist/factories/kubernetes/certificates/index.d.ts +8 -0
  385. package/dist/factories/kubernetes/certificates/index.d.ts.map +1 -0
  386. package/dist/factories/kubernetes/certificates/index.js +8 -0
  387. package/dist/factories/kubernetes/certificates/index.js.map +1 -0
  388. package/dist/factories/kubernetes/config/config-map.d.ts +5 -0
  389. package/dist/factories/kubernetes/config/config-map.d.ts.map +1 -0
  390. package/dist/factories/kubernetes/config/config-map.js +16 -0
  391. package/dist/factories/kubernetes/config/config-map.js.map +1 -0
  392. package/dist/factories/kubernetes/config/index.d.ts +9 -0
  393. package/dist/factories/kubernetes/config/index.d.ts.map +1 -0
  394. package/dist/factories/kubernetes/config/index.js +9 -0
  395. package/dist/factories/kubernetes/config/index.js.map +1 -0
  396. package/dist/factories/kubernetes/config/secret.d.ts +5 -0
  397. package/dist/factories/kubernetes/config/secret.d.ts.map +1 -0
  398. package/dist/factories/kubernetes/config/secret.js +16 -0
  399. package/dist/factories/kubernetes/config/secret.js.map +1 -0
  400. package/dist/factories/kubernetes/coordination/index.d.ts +8 -0
  401. package/dist/factories/kubernetes/coordination/index.d.ts.map +1 -0
  402. package/dist/factories/kubernetes/coordination/index.js +8 -0
  403. package/dist/factories/kubernetes/coordination/index.js.map +1 -0
  404. package/dist/factories/kubernetes/coordination/lease.d.ts +5 -0
  405. package/dist/factories/kubernetes/coordination/lease.d.ts.map +1 -0
  406. package/dist/factories/kubernetes/coordination/lease.js +10 -0
  407. package/dist/factories/kubernetes/coordination/lease.js.map +1 -0
  408. package/dist/factories/kubernetes/core/component-status.d.ts +4 -0
  409. package/dist/factories/kubernetes/core/component-status.d.ts.map +1 -0
  410. package/dist/factories/kubernetes/core/component-status.js +25 -0
  411. package/dist/factories/kubernetes/core/component-status.js.map +1 -0
  412. package/dist/factories/kubernetes/core/index.d.ts +11 -0
  413. package/dist/factories/kubernetes/core/index.d.ts.map +1 -0
  414. package/dist/factories/kubernetes/core/index.js +11 -0
  415. package/dist/factories/kubernetes/core/index.js.map +1 -0
  416. package/dist/factories/kubernetes/core/namespace.d.ts +9 -0
  417. package/dist/factories/kubernetes/core/namespace.d.ts.map +1 -0
  418. package/dist/factories/kubernetes/core/namespace.js +48 -0
  419. package/dist/factories/kubernetes/core/namespace.js.map +1 -0
  420. package/dist/factories/kubernetes/core/node.d.ts +6 -0
  421. package/dist/factories/kubernetes/core/node.d.ts.map +1 -0
  422. package/dist/factories/kubernetes/core/node.js +34 -0
  423. package/dist/factories/kubernetes/core/node.js.map +1 -0
  424. package/dist/factories/kubernetes/core/pod.d.ts +6 -0
  425. package/dist/factories/kubernetes/core/pod.d.ts.map +1 -0
  426. package/dist/factories/kubernetes/core/pod.js +44 -0
  427. package/dist/factories/kubernetes/core/pod.js.map +1 -0
  428. package/dist/factories/kubernetes/extensions/custom-resource-definition.d.ts +6 -0
  429. package/dist/factories/kubernetes/extensions/custom-resource-definition.d.ts.map +1 -0
  430. package/dist/factories/kubernetes/extensions/custom-resource-definition.js +45 -0
  431. package/dist/factories/kubernetes/extensions/custom-resource-definition.js.map +1 -0
  432. package/dist/factories/kubernetes/extensions/custom-resource.d.ts +12 -0
  433. package/dist/factories/kubernetes/extensions/custom-resource.d.ts.map +1 -0
  434. package/dist/factories/kubernetes/extensions/custom-resource.js +17 -0
  435. package/dist/factories/kubernetes/extensions/custom-resource.js.map +1 -0
  436. package/dist/factories/kubernetes/extensions/index.d.ts +9 -0
  437. package/dist/factories/kubernetes/extensions/index.d.ts.map +1 -0
  438. package/dist/factories/kubernetes/extensions/index.js +9 -0
  439. package/dist/factories/kubernetes/extensions/index.js.map +1 -0
  440. package/dist/factories/kubernetes/index.d.ts +24 -0
  441. package/dist/factories/kubernetes/index.d.ts.map +1 -0
  442. package/dist/factories/kubernetes/index.js +75 -0
  443. package/dist/factories/kubernetes/index.js.map +1 -0
  444. package/dist/factories/kubernetes/networking/endpoint-slice.d.ts +4 -0
  445. package/dist/factories/kubernetes/networking/endpoint-slice.d.ts.map +1 -0
  446. package/dist/factories/kubernetes/networking/endpoint-slice.js +10 -0
  447. package/dist/factories/kubernetes/networking/endpoint-slice.js.map +1 -0
  448. package/dist/factories/kubernetes/networking/endpoints.d.ts +4 -0
  449. package/dist/factories/kubernetes/networking/endpoints.d.ts.map +1 -0
  450. package/dist/factories/kubernetes/networking/endpoints.js +39 -0
  451. package/dist/factories/kubernetes/networking/endpoints.js.map +1 -0
  452. package/dist/factories/kubernetes/networking/index.d.ts +13 -0
  453. package/dist/factories/kubernetes/networking/index.d.ts.map +1 -0
  454. package/dist/factories/kubernetes/networking/index.js +13 -0
  455. package/dist/factories/kubernetes/networking/index.js.map +1 -0
  456. package/dist/factories/kubernetes/networking/ingress-class.d.ts +5 -0
  457. package/dist/factories/kubernetes/networking/ingress-class.d.ts.map +1 -0
  458. package/dist/factories/kubernetes/networking/ingress-class.js +16 -0
  459. package/dist/factories/kubernetes/networking/ingress-class.js.map +1 -0
  460. package/dist/factories/kubernetes/networking/ingress.d.ts +5 -0
  461. package/dist/factories/kubernetes/networking/ingress.d.ts.map +1 -0
  462. package/dist/factories/kubernetes/networking/ingress.js +33 -0
  463. package/dist/factories/kubernetes/networking/ingress.js.map +1 -0
  464. package/dist/factories/kubernetes/networking/network-policy.d.ts +5 -0
  465. package/dist/factories/kubernetes/networking/network-policy.d.ts.map +1 -0
  466. package/dist/factories/kubernetes/networking/network-policy.js +17 -0
  467. package/dist/factories/kubernetes/networking/network-policy.js.map +1 -0
  468. package/dist/factories/kubernetes/networking/service.d.ts +5 -0
  469. package/dist/factories/kubernetes/networking/service.d.ts.map +1 -0
  470. package/dist/factories/kubernetes/networking/service.js +64 -0
  471. package/dist/factories/kubernetes/networking/service.js.map +1 -0
  472. package/dist/factories/kubernetes/policy/index.d.ts +10 -0
  473. package/dist/factories/kubernetes/policy/index.d.ts.map +1 -0
  474. package/dist/factories/kubernetes/policy/index.js +10 -0
  475. package/dist/factories/kubernetes/policy/index.js.map +1 -0
  476. package/dist/factories/kubernetes/policy/limit-range.d.ts +5 -0
  477. package/dist/factories/kubernetes/policy/limit-range.d.ts.map +1 -0
  478. package/dist/factories/kubernetes/policy/limit-range.js +17 -0
  479. package/dist/factories/kubernetes/policy/limit-range.js.map +1 -0
  480. package/dist/factories/kubernetes/policy/pod-disruption-budget.d.ts +6 -0
  481. package/dist/factories/kubernetes/policy/pod-disruption-budget.d.ts.map +1 -0
  482. package/dist/factories/kubernetes/policy/pod-disruption-budget.js +55 -0
  483. package/dist/factories/kubernetes/policy/pod-disruption-budget.js.map +1 -0
  484. package/dist/factories/kubernetes/policy/resource-quota.d.ts +6 -0
  485. package/dist/factories/kubernetes/policy/resource-quota.d.ts.map +1 -0
  486. package/dist/factories/kubernetes/policy/resource-quota.js +43 -0
  487. package/dist/factories/kubernetes/policy/resource-quota.js.map +1 -0
  488. package/dist/factories/kubernetes/rbac/cluster-role-binding.d.ts +4 -0
  489. package/dist/factories/kubernetes/rbac/cluster-role-binding.d.ts.map +1 -0
  490. package/dist/factories/kubernetes/rbac/cluster-role-binding.js +17 -0
  491. package/dist/factories/kubernetes/rbac/cluster-role-binding.js.map +1 -0
  492. package/dist/factories/kubernetes/rbac/cluster-role.d.ts +4 -0
  493. package/dist/factories/kubernetes/rbac/cluster-role.d.ts.map +1 -0
  494. package/dist/factories/kubernetes/rbac/cluster-role.js +17 -0
  495. package/dist/factories/kubernetes/rbac/cluster-role.js.map +1 -0
  496. package/dist/factories/kubernetes/rbac/index.d.ts +12 -0
  497. package/dist/factories/kubernetes/rbac/index.d.ts.map +1 -0
  498. package/dist/factories/kubernetes/rbac/index.js +12 -0
  499. package/dist/factories/kubernetes/rbac/index.js.map +1 -0
  500. package/dist/factories/kubernetes/rbac/role-binding.d.ts +4 -0
  501. package/dist/factories/kubernetes/rbac/role-binding.d.ts.map +1 -0
  502. package/dist/factories/kubernetes/rbac/role-binding.js +17 -0
  503. package/dist/factories/kubernetes/rbac/role-binding.js.map +1 -0
  504. package/dist/factories/kubernetes/rbac/role.d.ts +4 -0
  505. package/dist/factories/kubernetes/rbac/role.d.ts.map +1 -0
  506. package/dist/factories/kubernetes/rbac/role.js +17 -0
  507. package/dist/factories/kubernetes/rbac/role.js.map +1 -0
  508. package/dist/factories/kubernetes/rbac/service-account.d.ts +4 -0
  509. package/dist/factories/kubernetes/rbac/service-account.d.ts.map +1 -0
  510. package/dist/factories/kubernetes/rbac/service-account.js +17 -0
  511. package/dist/factories/kubernetes/rbac/service-account.js.map +1 -0
  512. package/dist/factories/kubernetes/scheduling/index.d.ts +9 -0
  513. package/dist/factories/kubernetes/scheduling/index.d.ts.map +1 -0
  514. package/dist/factories/kubernetes/scheduling/index.js +9 -0
  515. package/dist/factories/kubernetes/scheduling/index.js.map +1 -0
  516. package/dist/factories/kubernetes/scheduling/priority-class.d.ts +4 -0
  517. package/dist/factories/kubernetes/scheduling/priority-class.d.ts.map +1 -0
  518. package/dist/factories/kubernetes/scheduling/priority-class.js +16 -0
  519. package/dist/factories/kubernetes/scheduling/priority-class.js.map +1 -0
  520. package/dist/factories/kubernetes/scheduling/runtime-class.d.ts +5 -0
  521. package/dist/factories/kubernetes/scheduling/runtime-class.d.ts.map +1 -0
  522. package/dist/factories/kubernetes/scheduling/runtime-class.js +10 -0
  523. package/dist/factories/kubernetes/scheduling/runtime-class.js.map +1 -0
  524. package/dist/factories/kubernetes/storage/csi-driver.d.ts +5 -0
  525. package/dist/factories/kubernetes/storage/csi-driver.d.ts.map +1 -0
  526. package/dist/factories/kubernetes/storage/csi-driver.js +16 -0
  527. package/dist/factories/kubernetes/storage/csi-driver.js.map +1 -0
  528. package/dist/factories/kubernetes/storage/csi-node.d.ts +5 -0
  529. package/dist/factories/kubernetes/storage/csi-node.d.ts.map +1 -0
  530. package/dist/factories/kubernetes/storage/csi-node.js +10 -0
  531. package/dist/factories/kubernetes/storage/csi-node.js.map +1 -0
  532. package/dist/factories/kubernetes/storage/index.d.ts +13 -0
  533. package/dist/factories/kubernetes/storage/index.d.ts.map +1 -0
  534. package/dist/factories/kubernetes/storage/index.js +13 -0
  535. package/dist/factories/kubernetes/storage/index.js.map +1 -0
  536. package/dist/factories/kubernetes/storage/persistent-volume-claim.d.ts +6 -0
  537. package/dist/factories/kubernetes/storage/persistent-volume-claim.d.ts.map +1 -0
  538. package/dist/factories/kubernetes/storage/persistent-volume-claim.js +30 -0
  539. package/dist/factories/kubernetes/storage/persistent-volume-claim.js.map +1 -0
  540. package/dist/factories/kubernetes/storage/persistent-volume.d.ts +6 -0
  541. package/dist/factories/kubernetes/storage/persistent-volume.d.ts.map +1 -0
  542. package/dist/factories/kubernetes/storage/persistent-volume.js +47 -0
  543. package/dist/factories/kubernetes/storage/persistent-volume.js.map +1 -0
  544. package/dist/factories/kubernetes/storage/storage-class.d.ts +4 -0
  545. package/dist/factories/kubernetes/storage/storage-class.d.ts.map +1 -0
  546. package/dist/factories/kubernetes/storage/storage-class.js +17 -0
  547. package/dist/factories/kubernetes/storage/storage-class.js.map +1 -0
  548. package/dist/factories/kubernetes/storage/volume-attachment.d.ts +6 -0
  549. package/dist/factories/kubernetes/storage/volume-attachment.d.ts.map +1 -0
  550. package/dist/factories/kubernetes/storage/volume-attachment.js +10 -0
  551. package/dist/factories/kubernetes/storage/volume-attachment.js.map +1 -0
  552. package/dist/factories/kubernetes/types.d.ts +8 -0
  553. package/dist/factories/kubernetes/types.d.ts.map +1 -0
  554. package/dist/factories/kubernetes/types.js +8 -0
  555. package/dist/factories/kubernetes/types.js.map +1 -0
  556. package/dist/factories/kubernetes/workloads/cron-job.d.ts +6 -0
  557. package/dist/factories/kubernetes/workloads/cron-job.d.ts.map +1 -0
  558. package/dist/factories/kubernetes/workloads/cron-job.js +53 -0
  559. package/dist/factories/kubernetes/workloads/cron-job.js.map +1 -0
  560. package/dist/factories/kubernetes/workloads/daemon-set.d.ts +6 -0
  561. package/dist/factories/kubernetes/workloads/daemon-set.d.ts.map +1 -0
  562. package/dist/factories/kubernetes/workloads/daemon-set.js +32 -0
  563. package/dist/factories/kubernetes/workloads/daemon-set.js.map +1 -0
  564. package/dist/factories/kubernetes/workloads/deployment.d.ts +5 -0
  565. package/dist/factories/kubernetes/workloads/deployment.d.ts.map +1 -0
  566. package/dist/factories/kubernetes/workloads/deployment.js +59 -0
  567. package/dist/factories/kubernetes/workloads/deployment.js.map +1 -0
  568. package/dist/factories/kubernetes/workloads/index.d.ts +14 -0
  569. package/dist/factories/kubernetes/workloads/index.d.ts.map +1 -0
  570. package/dist/factories/kubernetes/workloads/index.js +14 -0
  571. package/dist/factories/kubernetes/workloads/index.js.map +1 -0
  572. package/dist/factories/kubernetes/workloads/job.d.ts +6 -0
  573. package/dist/factories/kubernetes/workloads/job.d.ts.map +1 -0
  574. package/dist/factories/kubernetes/workloads/job.js +105 -0
  575. package/dist/factories/kubernetes/workloads/job.js.map +1 -0
  576. package/dist/factories/kubernetes/workloads/replica-set.d.ts +6 -0
  577. package/dist/factories/kubernetes/workloads/replica-set.d.ts.map +1 -0
  578. package/dist/factories/kubernetes/workloads/replica-set.js +33 -0
  579. package/dist/factories/kubernetes/workloads/replica-set.js.map +1 -0
  580. package/dist/factories/kubernetes/workloads/replication-controller.d.ts +6 -0
  581. package/dist/factories/kubernetes/workloads/replication-controller.d.ts.map +1 -0
  582. package/dist/factories/kubernetes/workloads/replication-controller.js +56 -0
  583. package/dist/factories/kubernetes/workloads/replication-controller.js.map +1 -0
  584. package/dist/factories/kubernetes/workloads/stateful-set.d.ts +6 -0
  585. package/dist/factories/kubernetes/workloads/stateful-set.d.ts.map +1 -0
  586. package/dist/factories/kubernetes/workloads/stateful-set.js +81 -0
  587. package/dist/factories/kubernetes/workloads/stateful-set.js.map +1 -0
  588. package/dist/factories/kubernetes/yaml/index.d.ts +6 -0
  589. package/dist/factories/kubernetes/yaml/index.d.ts.map +1 -0
  590. package/dist/factories/kubernetes/yaml/index.js +6 -0
  591. package/dist/factories/kubernetes/yaml/index.js.map +1 -0
  592. package/dist/factories/kubernetes/yaml/yaml-directory.d.ts +54 -0
  593. package/dist/factories/kubernetes/yaml/yaml-directory.d.ts.map +1 -0
  594. package/dist/factories/kubernetes/yaml/yaml-directory.js +178 -0
  595. package/dist/factories/kubernetes/yaml/yaml-directory.js.map +1 -0
  596. package/dist/factories/kubernetes/yaml/yaml-file.d.ts +54 -0
  597. package/dist/factories/kubernetes/yaml/yaml-file.d.ts.map +1 -0
  598. package/dist/factories/kubernetes/yaml/yaml-file.js +181 -0
  599. package/dist/factories/kubernetes/yaml/yaml-file.js.map +1 -0
  600. package/dist/factories/shared.d.ts +11 -0
  601. package/dist/factories/shared.d.ts.map +1 -0
  602. package/dist/factories/shared.js +364 -0
  603. package/dist/factories/shared.js.map +1 -0
  604. package/dist/index.d.ts +9 -0
  605. package/dist/index.d.ts.map +1 -0
  606. package/dist/index.js +49 -0
  607. package/dist/index.js.map +1 -0
  608. package/dist/utils/helpers.d.ts +69 -0
  609. package/dist/utils/helpers.d.ts.map +1 -0
  610. package/dist/utils/helpers.js +405 -0
  611. package/dist/utils/helpers.js.map +1 -0
  612. package/dist/utils/index.d.ts +9 -0
  613. package/dist/utils/index.d.ts.map +1 -0
  614. package/dist/utils/index.js +11 -0
  615. package/dist/utils/index.js.map +1 -0
  616. package/dist/utils/type-guards.d.ts +34 -0
  617. package/dist/utils/type-guards.d.ts.map +1 -0
  618. package/dist/utils/type-guards.js +66 -0
  619. package/dist/utils/type-guards.js.map +1 -0
  620. package/package.json +109 -0
@@ -0,0 +1,446 @@
1
+ /**
2
+ * Alchemy Deployment Strategy
3
+ *
4
+ * This module provides the alchemy deployment strategy that wraps deployments
5
+ * in alchemy resources with individual resource registration.
6
+ */
7
+ import { getComponentLogger } from '../../logging/index.js';
8
+ import { DependencyGraph } from '../../dependencies/graph.js';
9
+ import { BaseDeploymentStrategy } from './base-strategy.js';
10
+ import { DirectDeploymentStrategy } from './direct-strategy.js';
11
+ import { validateAlchemyScope } from '../shared-utilities.js';
12
+ import { ensureReadinessEvaluator } from '../../../utils/helpers.js';
13
+ /**
14
+ * Alchemy deployment strategy - wraps deployments in alchemy resources with individual resource registration
15
+ *
16
+ * This strategy implements individual resource registration for Direct mode Alchemy integration.
17
+ * Unlike Kro mode which registers RGDs and instances, Direct mode registers each individual
18
+ * Kubernetes resource (Deployment, Service, ConfigMap, etc.) as separate Alchemy resource types.
19
+ *
20
+ * ## Resource Registration Pattern
21
+ *
22
+ * **Direct Mode (this strategy):**
23
+ * - Each individual Kubernetes resource gets its own Alchemy resource type registration
24
+ * - Resource types are named using the pattern `kubernetes::{Kind}` (e.g., `kubernetes::Deployment`)
25
+ * - Each instance of each resource gets a separate Alchemy resource registered
26
+ * - Example: A webapp with Deployment + Service creates 2 Alchemy resource types and 2 resource instances
27
+ *
28
+ * **Kro Mode (for comparison):**
29
+ * - Each RGD gets one Alchemy resource type registered (`kro::ResourceGraphDefinition`)
30
+ * - Each instance of each RGD gets a separate Alchemy resource registered (`kro::{Kind}`)
31
+ * - Example: A webapp RGD creates 1 RGD type + 1 instance type = 2 Alchemy resources total
32
+ *
33
+ * ## Error Handling
34
+ *
35
+ * The strategy implements robust error handling for individual resource failures:
36
+ * - Continues processing remaining resources when individual resources fail
37
+ * - Collects all errors and includes them in the final DeploymentResult
38
+ * - Sets deployment status to 'partial' when some resources succeed and others fail
39
+ * - Provides resource-specific error context including kind, name, namespace, and Alchemy resource type
40
+ *
41
+ * ## Integration with DirectTypeKroDeployer
42
+ *
43
+ * This strategy integrates with DirectTypeKroDeployer for actual resource deployment:
44
+ * - Extracts DirectDeploymentEngine from the base DirectDeploymentStrategy
45
+ * - Creates DirectTypeKroDeployer instance for individual resource deployments
46
+ * - Passes deployer to each Alchemy resource provider for deployment execution
47
+ *
48
+ * @template TSpec - The specification type for the resource
49
+ * @template TStatus - The status type for the resource
50
+ */
51
+ export class AlchemyDeploymentStrategy extends BaseDeploymentStrategy {
52
+ alchemyScope;
53
+ baseStrategy;
54
+ logger = getComponentLogger('alchemy-deployment-strategy');
55
+ constructor(factoryName, namespace, schemaDefinition, factoryOptions, alchemyScope, baseStrategy) {
56
+ super(factoryName, namespace, schemaDefinition, factoryOptions);
57
+ this.alchemyScope = alchemyScope;
58
+ this.baseStrategy = baseStrategy;
59
+ }
60
+ /**
61
+ * Execute deployment with individual resource registration for Alchemy integration
62
+ *
63
+ * This method implements the core logic for Direct mode Alchemy integration:
64
+ *
65
+ * ## Process Overview
66
+ * 1. **Validation**: Validates the Alchemy scope is available and properly configured
67
+ * 2. **Resource Graph Creation**: Gets the resource graph from the base strategy using createResourceGraphForInstance
68
+ * 3. **Deployer Setup**: Creates DirectTypeKroDeployer instance using DirectDeploymentEngine from base strategy
69
+ * 4. **Individual Registration**: Processes each resource in the resource graph individually for Alchemy registration
70
+ * 5. **Error Collection**: Continues processing remaining resources when individual resources fail
71
+ * 6. **Result Creation**: Creates comprehensive DeploymentResult with individual resource tracking
72
+ *
73
+ * ## Individual Resource Processing
74
+ *
75
+ * For each resource in the resource graph:
76
+ * - **Type Inference**: Infers Alchemy resource type from Kubernetes kind (e.g., `kubernetes::Deployment`)
77
+ * - **Type Registration**: Calls ensureResourceTypeRegistered to register the resource type (shared across instances)
78
+ * - **ID Generation**: Creates unique resource ID using createAlchemyResourceId with namespace and resource info
79
+ * - **Deployment**: Deploys the resource through Alchemy using the resource provider and DirectTypeKroDeployer
80
+ * - **Tracking**: Tracks deployed resource with Alchemy metadata (resource ID, type, etc.)
81
+ *
82
+ * ## Error Handling Strategy
83
+ *
84
+ * The method implements robust error handling:
85
+ * - **Continue on Failure**: Individual resource failures don't stop processing of remaining resources
86
+ * - **Error Collection**: All errors are collected with detailed context about which resource failed
87
+ * - **Resource Context**: Error messages include resource kind, name, namespace, and Alchemy resource type
88
+ * - **Partial Status**: Deployment status is set to 'partial' when some resources succeed and others fail
89
+ *
90
+ * ## Resource Type Naming
91
+ *
92
+ * Resource types follow consistent naming patterns:
93
+ * - **Kubernetes Resources**: `kubernetes::{Kind}` (e.g., `kubernetes::Deployment`, `kubernetes::Service`)
94
+ * - **Shared Types**: Multiple instances of the same resource type share the same Alchemy resource type registration
95
+ * - **Unique IDs**: Each resource instance gets a unique Alchemy resource ID for individual tracking
96
+ *
97
+ * @param spec - The resource specification to deploy
98
+ * @param instanceName - The name of this specific instance
99
+ * @returns Promise<DeploymentResult> - Comprehensive deployment result with individual resource tracking
100
+ * @throws Error - If Alchemy scope validation fails or critical deployment errors occur
101
+ */
102
+ async executeDeployment(spec, instanceName) {
103
+ try {
104
+ // Validate alchemy scope is available and properly configured
105
+ validateAlchemyScope(this.alchemyScope, 'Alchemy deployment');
106
+ // Use static imports for registration functions
107
+ const { ensureResourceTypeRegistered, createAlchemyResourceId } = await import('../../../alchemy/deployment.js');
108
+ // Get resource graph from base strategy using createResourceGraphForInstance
109
+ // This provides the individual Kubernetes resources that need to be registered with Alchemy
110
+ this.logger.info('About to create resource graph for instance', {
111
+ instanceName,
112
+ hasBaseStrategy: !!this.baseStrategy,
113
+ baseStrategyType: this.baseStrategy?.constructor?.name,
114
+ });
115
+ const resourceGraph = this.createResourceGraphForInstance(spec, instanceName);
116
+ this.logger.info('Resource graph created', {
117
+ resourceCount: resourceGraph.resources.length,
118
+ graphName: resourceGraph.name,
119
+ });
120
+ // No need to create deployer here - it will be created inside the Alchemy resource handler
121
+ // Process each resource in the resource graph individually for Alchemy registration
122
+ const deployedResources = [];
123
+ const errors = [];
124
+ const startTime = Date.now();
125
+ this.logger.info('Processing resource graph for alchemy deployment', {
126
+ resourceCount: resourceGraph.resources.length,
127
+ resourceIds: resourceGraph.resources.map((r) => r.id),
128
+ resourceKinds: resourceGraph.resources.map((r) => r.manifest.kind),
129
+ });
130
+ // Continue processing remaining resources when individual resources fail
131
+ for (const resource of resourceGraph.resources) {
132
+ try {
133
+ this.logger.info('Processing resource for alchemy deployment', {
134
+ resourceId: resource.id,
135
+ resourceKind: resource.manifest.kind,
136
+ resourceName: resource.manifest.metadata?.name,
137
+ hasReadinessEvaluator: 'readinessEvaluator' in resource.manifest,
138
+ });
139
+ const resourceWithEvaluator = ensureReadinessEvaluator(resource.manifest);
140
+ // Register resource type dynamically (shared across instances)
141
+ const ResourceProvider = ensureResourceTypeRegistered(resourceWithEvaluator);
142
+ // Create unique resource ID for this instance
143
+ const resourceId = createAlchemyResourceId(resourceWithEvaluator, this.namespace);
144
+ // Deploy individual resource through Alchemy within the scope
145
+ await this.alchemyScope.run(async () => {
146
+ try {
147
+ // Extract serializable kubeConfig options
148
+ const kubeConfigOptions = this.extractKubeConfigOptions();
149
+ // Create the resource through Alchemy
150
+ const _alchemyResource = await ResourceProvider(resourceId, {
151
+ resource: resourceWithEvaluator,
152
+ namespace: this.namespace,
153
+ deploymentStrategy: 'direct',
154
+ kubeConfigOptions,
155
+ options: {
156
+ waitForReady: this.factoryOptions.waitForReady ?? true,
157
+ timeout: this.factoryOptions.timeout ?? 300000,
158
+ },
159
+ });
160
+ // Track the deployed resource
161
+ deployedResources.push({
162
+ id: resource.id,
163
+ kind: resource.manifest.kind || 'Unknown',
164
+ name: resource.manifest.metadata?.name || 'unnamed',
165
+ namespace: this.namespace,
166
+ manifest: resource.manifest,
167
+ status: 'deployed',
168
+ deployedAt: new Date(),
169
+ alchemyResourceId: resourceId,
170
+ alchemyResourceType: ResourceProvider.name || 'unknown',
171
+ });
172
+ this.logger.debug('Successfully deployed resource through Alchemy', {
173
+ resourceKind: resource.manifest.kind,
174
+ resourceName: resource.manifest.metadata?.name,
175
+ alchemyResourceId: resourceId,
176
+ alchemyResourceType: ResourceProvider.name,
177
+ });
178
+ }
179
+ catch (deployError) {
180
+ const error = deployError;
181
+ this.logger.error('Failed to deploy individual resource through Alchemy', error, {
182
+ resourceKind: resource.manifest.kind,
183
+ resourceName: resource.manifest.metadata?.name,
184
+ resourceId: resource.id,
185
+ namespace: this.namespace,
186
+ });
187
+ // Collect error but continue processing other resources
188
+ errors.push({
189
+ resourceId: resource.id,
190
+ error,
191
+ phase: 'deployment',
192
+ timestamp: new Date(),
193
+ resourceKind: resource.manifest.kind || 'Unknown',
194
+ resourceName: resource.manifest.metadata?.name || 'unnamed',
195
+ alchemyResourceType: ResourceProvider.name || 'unknown',
196
+ namespace: this.namespace,
197
+ });
198
+ }
199
+ });
200
+ }
201
+ catch (registrationError) {
202
+ const error = registrationError;
203
+ this.logger.error('Failed to register resource type with Alchemy', error, {
204
+ resourceKind: resource.manifest.kind,
205
+ resourceName: resource.manifest.metadata?.name,
206
+ resourceId: resource.id,
207
+ });
208
+ // Collect error but continue processing other resources
209
+ errors.push({
210
+ resourceId: resource.id,
211
+ error,
212
+ phase: 'deployment',
213
+ timestamp: new Date(),
214
+ resourceKind: resource.manifest.kind || 'Unknown',
215
+ resourceName: resource.manifest.metadata?.name || 'unnamed',
216
+ alchemyResourceType: 'registration-failed',
217
+ namespace: this.namespace,
218
+ });
219
+ }
220
+ }
221
+ // Create comprehensive deployment result
222
+ const duration = Date.now() - startTime;
223
+ const hasErrors = errors.length > 0;
224
+ const hasSuccesses = deployedResources.length > 0;
225
+ let status;
226
+ if (hasSuccesses && !hasErrors) {
227
+ status = 'success';
228
+ }
229
+ else if (!hasSuccesses && hasErrors) {
230
+ status = 'failed';
231
+ }
232
+ else {
233
+ status = 'partial';
234
+ }
235
+ this.logger.info('Alchemy deployment completed', {
236
+ status,
237
+ successfulResources: deployedResources.length,
238
+ failedResources: errors.length,
239
+ totalResources: resourceGraph.resources.length,
240
+ duration,
241
+ });
242
+ return {
243
+ status,
244
+ deploymentId: `alchemy-${instanceName}-${Date.now()}`,
245
+ resources: deployedResources,
246
+ dependencyGraph: resourceGraph.dependencyGraph,
247
+ duration,
248
+ errors: errors.map((e) => ({
249
+ resourceId: e.resourceId,
250
+ error: e.error,
251
+ phase: e.phase,
252
+ timestamp: e.timestamp,
253
+ })),
254
+ };
255
+ }
256
+ catch (error) {
257
+ this.logger.error('Alchemy deployment strategy failed', error);
258
+ throw error;
259
+ }
260
+ }
261
+ getStrategyMode() {
262
+ return 'direct'; // Alchemy strategy uses direct mode for individual resource registration
263
+ }
264
+ /**
265
+ * Create resource graph for instance using base strategy logic
266
+ */
267
+ createResourceGraphForInstance(spec, instanceName) {
268
+ // Delegate to the base strategy's resource resolution logic
269
+ if (this.baseStrategy instanceof DirectDeploymentStrategy) {
270
+ const baseStrategy = this.baseStrategy;
271
+ if (baseStrategy.resourceResolver &&
272
+ typeof baseStrategy.resourceResolver.createResourceGraphForInstance === 'function') {
273
+ this.logger.info('Calling createResourceGraphForInstance on resource resolver', {
274
+ hasResourceResolver: !!baseStrategy.resourceResolver,
275
+ resolverType: baseStrategy.resourceResolver.constructor?.name,
276
+ });
277
+ const resourceGraph = baseStrategy.resourceResolver.createResourceGraphForInstance(spec);
278
+ this.logger.info('Created resource graph from base strategy', {
279
+ resourceCount: resourceGraph.resources.length,
280
+ resourceIds: resourceGraph.resources.map((r) => r.id),
281
+ resourceKinds: resourceGraph.resources.map((r) => r.manifest?.kind),
282
+ });
283
+ return resourceGraph;
284
+ }
285
+ else {
286
+ this.logger.warn('Base strategy does not have resourceResolver or createResourceGraphForInstance method', {
287
+ hasResourceResolver: !!baseStrategy.resourceResolver,
288
+ resolverType: baseStrategy.resourceResolver?.constructor?.name,
289
+ hasMethod: baseStrategy.resourceResolver
290
+ ? typeof baseStrategy.resourceResolver.createResourceGraphForInstance
291
+ : 'no resolver',
292
+ });
293
+ }
294
+ }
295
+ else {
296
+ this.logger.warn('Base strategy is not DirectDeploymentStrategy', {
297
+ baseStrategyType: this.baseStrategy?.constructor?.name,
298
+ });
299
+ }
300
+ // Fallback implementation - this should not happen in normal operation
301
+ this.logger.error('Falling back to empty resource graph - this indicates a configuration issue');
302
+ return {
303
+ name: instanceName,
304
+ resources: [],
305
+ dependencyGraph: new DependencyGraph(),
306
+ };
307
+ }
308
+ /**
309
+ * Extract serializable kubeConfig options from factory options
310
+ */
311
+ extractKubeConfigOptions() {
312
+ let kubeConfigOptions = {};
313
+ if (this.factoryOptions.kubeConfig) {
314
+ const kc = this.factoryOptions.kubeConfig;
315
+ const cluster = kc.getCurrentCluster();
316
+ const user = kc.getCurrentUser();
317
+ const context = kc.getCurrentContext();
318
+ this.logger.debug('Extracting kubeconfig options for alchemy', {
319
+ hasCluster: !!cluster,
320
+ clusterSkipTLS: cluster?.skipTLSVerify,
321
+ clusterServer: cluster?.server,
322
+ hasUser: !!user,
323
+ context,
324
+ });
325
+ // SECURITY: Prioritize user's explicit skipTLSVerify choice over cluster config
326
+ const userSkipTLS = this.factoryOptions.skipTLSVerify;
327
+ const clusterSkipTLS = cluster?.skipTLSVerify;
328
+ const finalSkipTLS = userSkipTLS === true ? true : (clusterSkipTLS ?? false);
329
+ // Log security warning when TLS is disabled
330
+ if (finalSkipTLS) {
331
+ this.logger.warn('TLS verification disabled - this is insecure and should only be used in development', {
332
+ component: 'alchemy-deployment-strategy',
333
+ security: 'tls-disabled',
334
+ userExplicit: userSkipTLS === true,
335
+ fromClusterConfig: clusterSkipTLS === true,
336
+ server: cluster?.server,
337
+ recommendation: userSkipTLS === true
338
+ ? 'Remove skipTLSVerify: true from factory options for production'
339
+ : 'Update cluster configuration to enable TLS verification',
340
+ });
341
+ }
342
+ kubeConfigOptions = {
343
+ skipTLSVerify: finalSkipTLS,
344
+ ...(cluster?.server && { server: cluster.server }),
345
+ ...(context && { context }),
346
+ // Include complete cluster configuration
347
+ ...(cluster && {
348
+ cluster: {
349
+ name: cluster.name,
350
+ server: cluster.server,
351
+ skipTLSVerify: finalSkipTLS,
352
+ ...(cluster.caData && { caData: cluster.caData }),
353
+ ...(cluster.caFile && { caFile: cluster.caFile }),
354
+ },
355
+ }),
356
+ // Include complete user configuration
357
+ ...(user && {
358
+ user: {
359
+ name: user.name,
360
+ ...(user.token && { token: user.token }),
361
+ ...(user.certData && { certData: user.certData }),
362
+ ...(user.certFile && { certFile: user.certFile }),
363
+ ...(user.keyData && { keyData: user.keyData }),
364
+ ...(user.keyFile && { keyFile: user.keyFile }),
365
+ },
366
+ }),
367
+ };
368
+ this.logger.debug('Extracted kubeconfig options', {
369
+ kubeConfigOptions: JSON.stringify(kubeConfigOptions, null, 2),
370
+ });
371
+ }
372
+ else {
373
+ // Try extracting from the base strategy's factory options (common in tests)
374
+ try {
375
+ if (this.baseStrategy instanceof DirectDeploymentStrategy) {
376
+ const bs = this.baseStrategy;
377
+ const baseFactoryOptions = bs?.factoryOptions;
378
+ const baseKc = baseFactoryOptions?.kubeConfig;
379
+ const cluster = baseKc?.getCurrentCluster();
380
+ const user = baseKc?.getCurrentUser();
381
+ const context = baseKc?.getCurrentContext();
382
+ this.logger.debug('Extracting kubeconfig options from base strategy for alchemy', {
383
+ hasBaseFactoryOptions: !!baseFactoryOptions,
384
+ hasBaseKubeConfig: !!baseKc,
385
+ hasCluster: !!cluster,
386
+ clusterSkipTLS: cluster?.skipTLSVerify,
387
+ clusterServer: cluster?.server,
388
+ hasUser: !!user,
389
+ context,
390
+ });
391
+ if (baseKc && cluster) {
392
+ // SECURITY: Prioritize user's explicit skipTLSVerify choice over cluster config
393
+ const userSkipTLS = this.factoryOptions.skipTLSVerify;
394
+ const clusterSkipTLS = cluster.skipTLSVerify;
395
+ const finalSkipTLS = userSkipTLS === true ? true : (clusterSkipTLS ?? false);
396
+ // Log security warning when TLS is disabled
397
+ if (finalSkipTLS) {
398
+ this.logger.warn('TLS verification disabled - this is insecure and should only be used in development', {
399
+ component: 'alchemy-deployment-strategy',
400
+ security: 'tls-disabled',
401
+ userExplicit: userSkipTLS === true,
402
+ fromClusterConfig: clusterSkipTLS === true,
403
+ server: cluster?.server,
404
+ recommendation: userSkipTLS === true
405
+ ? 'Remove skipTLSVerify: true from factory options for production'
406
+ : 'Update cluster configuration to enable TLS verification',
407
+ });
408
+ }
409
+ kubeConfigOptions = {
410
+ skipTLSVerify: finalSkipTLS,
411
+ ...(cluster.server && { server: cluster.server }),
412
+ ...(context && { context }),
413
+ cluster: {
414
+ name: cluster.name,
415
+ server: cluster.server,
416
+ skipTLSVerify: finalSkipTLS,
417
+ ...(cluster.caData && { caData: cluster.caData }),
418
+ ...(cluster.caFile && { caFile: cluster.caFile }),
419
+ },
420
+ ...(user && {
421
+ user: {
422
+ name: user.name,
423
+ ...(user.token && { token: user.token }),
424
+ ...(user.certData && { certData: user.certData }),
425
+ ...(user.certFile && { certFile: user.certFile }),
426
+ ...(user.keyData && { keyData: user.keyData }),
427
+ ...(user.keyFile && { keyFile: user.keyFile }),
428
+ },
429
+ }),
430
+ };
431
+ this.logger.debug('Extracted kubeconfig options from base strategy', {
432
+ kubeConfigOptions: JSON.stringify(kubeConfigOptions, null, 2),
433
+ });
434
+ }
435
+ }
436
+ }
437
+ catch (extractionError) {
438
+ this.logger.debug('Could not extract kubeconfig from base strategy, using default', {
439
+ error: extractionError.message,
440
+ });
441
+ }
442
+ }
443
+ return kubeConfigOptions;
444
+ }
445
+ }
446
+ //# sourceMappingURL=alchemy-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alchemy-strategy.js","sourceRoot":"","sources":["../../../../src/core/deployment/strategies/alchemy-strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Base Deployment Strategy
3
+ *
4
+ * This module provides the abstract base class for deployment strategies
5
+ * with common template method pattern implementation.
6
+ */
7
+ import type { Enhanced } from '../../types/kubernetes.js';
8
+ import type { DeploymentResult, FactoryOptions } from '../../types/deployment.js';
9
+ import type { KroCompatibleType, SchemaDefinition } from '../../types/serialization.js';
10
+ /**
11
+ * Base deployment strategy interface
12
+ */
13
+ export interface DeploymentStrategy<TSpec extends KroCompatibleType, TStatus extends KroCompatibleType> {
14
+ deploy(spec: TSpec): Promise<Enhanced<TSpec, TStatus>>;
15
+ }
16
+ /**
17
+ * Abstract base class for deployment strategies
18
+ */
19
+ export declare abstract class BaseDeploymentStrategy<TSpec extends KroCompatibleType, TStatus extends KroCompatibleType> implements DeploymentStrategy<TSpec, TStatus> {
20
+ protected factoryName: string;
21
+ protected namespace: string;
22
+ protected schemaDefinition: SchemaDefinition<TSpec, TStatus>;
23
+ protected factoryOptions: FactoryOptions;
24
+ constructor(factoryName: string, namespace: string, schemaDefinition: SchemaDefinition<TSpec, TStatus>, factoryOptions: FactoryOptions);
25
+ /**
26
+ * Template method for deployment - defines the common flow
27
+ */
28
+ deploy(spec: TSpec): Promise<Enhanced<TSpec, TStatus>>;
29
+ /**
30
+ * Strategy-specific deployment logic - implemented by subclasses
31
+ */
32
+ protected abstract executeDeployment(spec: TSpec, instanceName: string): Promise<DeploymentResult>;
33
+ /**
34
+ * Create Enhanced proxy - common logic with strategy-specific customization
35
+ */
36
+ protected createEnhancedProxy(spec: TSpec, instanceName: string, deploymentResult: DeploymentResult): Enhanced<TSpec, TStatus>;
37
+ /**
38
+ * Get the strategy mode - implemented by subclasses
39
+ */
40
+ protected abstract getStrategyMode(): 'direct' | 'kro';
41
+ /**
42
+ * Get API version for Enhanced proxy - can be overridden by subclasses
43
+ */
44
+ protected getApiVersion(): string;
45
+ /**
46
+ * Get kind for Enhanced proxy - can be overridden by subclasses
47
+ */
48
+ protected getKind(): string;
49
+ }
50
+ //# sourceMappingURL=base-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-strategy.d.ts","sourceRoot":"","sources":["../../../../src/core/deployment/strategies/base-strategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGxF;;GAEG;AACH,MAAM,WAAW,kBAAkB,CACjC,KAAK,SAAS,iBAAiB,EAC/B,OAAO,SAAS,iBAAiB;IAEjC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;CACxD;AAED;;GAEG;AACH,8BAAsB,sBAAsB,CAC1C,KAAK,SAAS,iBAAiB,EAC/B,OAAO,SAAS,iBAAiB,CACjC,YAAW,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC;IAG3C,SAAS,CAAC,WAAW,EAAE,MAAM;IAC7B,SAAS,CAAC,SAAS,EAAE,MAAM;IAC3B,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;IAC5D,SAAS,CAAC,cAAc,EAAE,cAAc;gBAH9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EAClD,cAAc,EAAE,cAAc;IAG1C;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAc5D;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAClC,IAAI,EAAE,KAAK,EACX,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAE5B;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAC3B,IAAI,EAAE,KAAK,EACX,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IA2C3B;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,QAAQ,GAAG,KAAK;IAEtD;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,MAAM;IAIjC;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,MAAM;CAG5B"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Base Deployment Strategy
3
+ *
4
+ * This module provides the abstract base class for deployment strategies
5
+ * with common template method pattern implementation.
6
+ */
7
+ import { validateSpec, generateInstanceName, createEnhancedMetadata } from '../shared-utilities.js';
8
+ /**
9
+ * Abstract base class for deployment strategies
10
+ */
11
+ export class BaseDeploymentStrategy {
12
+ factoryName;
13
+ namespace;
14
+ schemaDefinition;
15
+ factoryOptions;
16
+ constructor(factoryName, namespace, schemaDefinition, factoryOptions) {
17
+ this.factoryName = factoryName;
18
+ this.namespace = namespace;
19
+ this.schemaDefinition = schemaDefinition;
20
+ this.factoryOptions = factoryOptions;
21
+ }
22
+ /**
23
+ * Template method for deployment - defines the common flow
24
+ */
25
+ async deploy(spec) {
26
+ // Step 1: Validate spec (common to all strategies)
27
+ validateSpec(spec, this.schemaDefinition);
28
+ // Step 2: Generate instance name (common to all strategies)
29
+ const instanceName = generateInstanceName(spec);
30
+ // Step 3: Execute strategy-specific deployment
31
+ const deploymentResult = await this.executeDeployment(spec, instanceName);
32
+ // Step 4: Create Enhanced proxy (common to all strategies)
33
+ return this.createEnhancedProxy(spec, instanceName, deploymentResult);
34
+ }
35
+ /**
36
+ * Create Enhanced proxy - common logic with strategy-specific customization
37
+ */
38
+ createEnhancedProxy(spec, instanceName, deploymentResult) {
39
+ const metadata = createEnhancedMetadata(instanceName, this.namespace, this.factoryName, this.getStrategyMode());
40
+ // Add deployment status to metadata for factory-level error handling
41
+ if (deploymentResult?.status) {
42
+ metadata.annotations = metadata.annotations || {};
43
+ metadata.annotations['typekro.io/deployment-status'] = deploymentResult.status;
44
+ // Add error message for failed deployments
45
+ if (deploymentResult.status === 'failed' && deploymentResult.errors?.length > 0) {
46
+ const firstError = deploymentResult.errors[0];
47
+ metadata.annotations['typekro.io/deployment-error'] =
48
+ firstError?.error?.message || 'Unknown deployment error';
49
+ }
50
+ }
51
+ // Extract status from deployment result if available
52
+ let status = {};
53
+ if (deploymentResult &&
54
+ 'resources' in deploymentResult &&
55
+ deploymentResult.resources.length > 0) {
56
+ const firstResource = deploymentResult.resources[0];
57
+ if (firstResource?.manifest && 'status' in firstResource.manifest) {
58
+ status = firstResource.manifest.status;
59
+ }
60
+ }
61
+ return {
62
+ apiVersion: this.getApiVersion(),
63
+ kind: this.getKind(),
64
+ spec,
65
+ status,
66
+ metadata,
67
+ };
68
+ }
69
+ /**
70
+ * Get API version for Enhanced proxy - can be overridden by subclasses
71
+ */
72
+ getApiVersion() {
73
+ return 'typekro.io/v1';
74
+ }
75
+ /**
76
+ * Get kind for Enhanced proxy - can be overridden by subclasses
77
+ */
78
+ getKind() {
79
+ return 'EnhancedResource';
80
+ }
81
+ }
82
+ //# sourceMappingURL=base-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-strategy.js","sourceRoot":"","sources":["../../../../src/core/deployment/strategies/base-strategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAYpG;;GAEG;AACH,MAAM,OAAgB,sBAAsB;IAM9B;IACA;IACA;IACA;IAJZ,YACY,WAAmB,EACnB,SAAiB,EACjB,gBAAkD,EAClD,cAA8B;QAH9B,gBAAW,GAAX,WAAW,CAAQ;QACnB,cAAS,GAAT,SAAS,CAAQ;QACjB,qBAAgB,GAAhB,gBAAgB,CAAkC;QAClD,mBAAc,GAAd,cAAc,CAAgB;IACvC,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,IAAW;QACtB,mDAAmD;QACnD,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE1C,4DAA4D;QAC5D,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEhD,+CAA+C;QAC/C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAE1E,2DAA2D;QAC3D,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACxE,CAAC;IAUD;;OAEG;IACO,mBAAmB,CAC3B,IAAW,EACX,YAAoB,EACpB,gBAAkC;QAElC,MAAM,QAAQ,GAAG,sBAAsB,CACrC,YAAY,EACZ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,eAAe,EAAE,CACvB,CAAC;QAEF,qEAAqE;QACrE,IAAI,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAC7B,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;YAClD,QAAQ,CAAC,WAAW,CAAC,8BAA8B,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC;YAE/E,2CAA2C;YAC3C,IAAI,gBAAgB,CAAC,MAAM,KAAK,QAAQ,IAAI,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChF,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC9C,QAAQ,CAAC,WAAW,CAAC,6BAA6B,CAAC;oBACjD,UAAU,EAAE,KAAK,EAAE,OAAO,IAAI,0BAA0B,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,IAAI,MAAM,GAAY,EAAa,CAAC;QACpC,IACE,gBAAgB;YAChB,WAAW,IAAI,gBAAgB;YAC/B,gBAAgB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EACrC,CAAC;YACD,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,aAAa,EAAE,QAAQ,IAAI,QAAQ,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;gBAClE,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAiB,CAAC;YACpD,CAAC;QACH,CAAC;QAED,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;YAChC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;YACpB,IAAI;YACJ,MAAM;YACN,QAAQ;SAC8B,CAAC;IAC3C,CAAC;IAOD;;OAEG;IACO,aAAa;QACrB,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;OAEG;IACO,OAAO;QACf,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Direct Deployment Strategy
3
+ *
4
+ * This module provides the direct deployment strategy that deploys
5
+ * individual Kubernetes resources directly to the cluster.
6
+ */
7
+ import type { DeploymentResult, FactoryOptions, ResourceGraph, DeploymentContext, DeployedResource } from '../../types/deployment.js';
8
+ import type { KroCompatibleType, SchemaDefinition } from '../../types/serialization.js';
9
+ import type { DirectDeploymentEngine } from '../engine.js';
10
+ import { BaseDeploymentStrategy } from './base-strategy.js';
11
+ /**
12
+ * Direct deployment strategy - deploys individual Kubernetes resources
13
+ */
14
+ export declare class DirectDeploymentStrategy<TSpec extends KroCompatibleType, TStatus extends KroCompatibleType> extends BaseDeploymentStrategy<TSpec, TStatus> {
15
+ private deploymentEngine;
16
+ resourceResolver: {
17
+ createResourceGraphForInstance(spec: TSpec): ResourceGraph;
18
+ };
19
+ constructor(factoryName: string, namespace: string, schemaDefinition: SchemaDefinition<TSpec, TStatus>, factoryOptions: FactoryOptions, deploymentEngine: DirectDeploymentEngine, resourceResolver: {
20
+ createResourceGraphForInstance(spec: TSpec): ResourceGraph;
21
+ });
22
+ protected executeDeployment(spec: TSpec, _instanceName: string): Promise<DeploymentResult>;
23
+ /**
24
+ * Create deployment context for closure execution
25
+ */
26
+ createDeploymentContext(deployedResources: Map<string, DeployedResource>, _spec: TSpec): DeploymentContext;
27
+ protected getStrategyMode(): 'direct' | 'kro';
28
+ }
29
+ //# sourceMappingURL=direct-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-strategy.d.ts","sourceRoot":"","sources":["../../../../src/core/deployment/strategies/direct-strategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACtI,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAI5D;;GAEG;AACH,qBAAa,wBAAwB,CACnC,KAAK,SAAS,iBAAiB,EAC/B,OAAO,SAAS,iBAAiB,CACjC,SAAQ,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;IAM5C,OAAO,CAAC,gBAAgB;IACjB,gBAAgB,EAAE;QAAE,8BAA8B,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa,CAAA;KAAE;gBALvF,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EAClD,cAAc,EAAE,cAAc,EACtB,gBAAgB,EAAE,sBAAsB,EACzC,gBAAgB,EAAE;QAAE,8BAA8B,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa,CAAA;KAAE;cAKzE,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4DhG;;OAEG;IACI,uBAAuB,CAC5B,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAChD,KAAK,EAAE,KAAK,GACX,iBAAiB;IAoBpB,SAAS,CAAC,eAAe,IAAI,QAAQ,GAAG,KAAK;CAG9C"}