@ankhorage/infra 4.1.10 → 5.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 (521) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +21 -32
  3. package/dist/cli/bin.d.ts +1 -8
  4. package/dist/cli/bin.d.ts.map +1 -1
  5. package/dist/cli/bin.js +2 -34
  6. package/dist/cli/bin.js.map +1 -1
  7. package/dist/cli/commands/destroy.d.ts +11 -0
  8. package/dist/cli/commands/destroy.d.ts.map +1 -0
  9. package/dist/cli/commands/destroy.js +51 -0
  10. package/dist/cli/commands/destroy.js.map +1 -0
  11. package/dist/cli/commands/down.d.ts +11 -0
  12. package/dist/cli/commands/down.d.ts.map +1 -0
  13. package/dist/cli/commands/down.js +27 -0
  14. package/dist/cli/commands/down.js.map +1 -0
  15. package/dist/cli/commands/generate.d.ts +11 -0
  16. package/dist/cli/commands/generate.d.ts.map +1 -0
  17. package/dist/cli/commands/generate.js +29 -0
  18. package/dist/cli/commands/generate.js.map +1 -0
  19. package/dist/cli/commands/outputs.d.ts +11 -0
  20. package/dist/cli/commands/outputs.d.ts.map +1 -0
  21. package/dist/cli/commands/outputs.js +25 -0
  22. package/dist/cli/commands/outputs.js.map +1 -0
  23. package/dist/cli/commands/plan.d.ts +11 -0
  24. package/dist/cli/commands/plan.d.ts.map +1 -0
  25. package/dist/cli/commands/plan.js +19 -0
  26. package/dist/cli/commands/plan.js.map +1 -0
  27. package/dist/cli/commands/status.d.ts +11 -0
  28. package/dist/cli/commands/status.d.ts.map +1 -0
  29. package/dist/cli/commands/status.js +19 -0
  30. package/dist/cli/commands/status.js.map +1 -0
  31. package/dist/cli/commands/up.d.ts +11 -0
  32. package/dist/cli/commands/up.d.ts.map +1 -0
  33. package/dist/cli/commands/up.js +28 -0
  34. package/dist/cli/commands/up.js.map +1 -0
  35. package/dist/cli/commands/validate.d.ts +11 -0
  36. package/dist/cli/commands/validate.d.ts.map +1 -0
  37. package/dist/cli/commands/validate.js +19 -0
  38. package/dist/cli/commands/validate.js.map +1 -0
  39. package/dist/cli/constants.d.ts +66 -0
  40. package/dist/cli/constants.d.ts.map +1 -0
  41. package/dist/cli/constants.js +19 -0
  42. package/dist/cli/constants.js.map +1 -0
  43. package/dist/cli/createDefaultInfraCommandContext.d.ts +4 -0
  44. package/dist/cli/createDefaultInfraCommandContext.d.ts.map +1 -0
  45. package/dist/{commandContext.js → cli/createDefaultInfraCommandContext.js} +4 -3
  46. package/dist/cli/createDefaultInfraCommandContext.js.map +1 -0
  47. package/dist/cli/createInfraRuntimeProvider.d.ts +5 -0
  48. package/dist/cli/createInfraRuntimeProvider.d.ts.map +1 -0
  49. package/dist/cli/createInfraRuntimeProvider.js +22 -0
  50. package/dist/cli/createInfraRuntimeProvider.js.map +1 -0
  51. package/dist/cli/createProviderCommandDescriptors.d.ts +4 -0
  52. package/dist/cli/createProviderCommandDescriptors.d.ts.map +1 -0
  53. package/dist/cli/createProviderCommandDescriptors.js +6 -0
  54. package/dist/cli/createProviderCommandDescriptors.js.map +1 -0
  55. package/dist/cli/findInfraCommand.d.ts +4 -0
  56. package/dist/cli/findInfraCommand.d.ts.map +1 -0
  57. package/dist/cli/findInfraCommand.js +6 -0
  58. package/dist/cli/findInfraCommand.js.map +1 -0
  59. package/dist/cli/index.d.ts +3 -8
  60. package/dist/cli/index.d.ts.map +1 -1
  61. package/dist/cli/index.js +2 -24
  62. package/dist/cli/index.js.map +1 -1
  63. package/dist/cli/renderInfraRootHelp.d.ts +3 -0
  64. package/dist/cli/renderInfraRootHelp.d.ts.map +1 -0
  65. package/dist/cli/renderInfraRootHelp.js +21 -0
  66. package/dist/cli/renderInfraRootHelp.js.map +1 -0
  67. package/dist/cli/renderUnknownInfraCommand.d.ts +3 -0
  68. package/dist/cli/renderUnknownInfraCommand.d.ts.map +1 -0
  69. package/dist/cli/renderUnknownInfraCommand.js +5 -0
  70. package/dist/cli/renderUnknownInfraCommand.js.map +1 -0
  71. package/dist/cli/runInfraCliAsync.d.ts +10 -0
  72. package/dist/cli/runInfraCliAsync.d.ts.map +1 -0
  73. package/dist/cli/runInfraCliAsync.js +34 -0
  74. package/dist/cli/runInfraCliAsync.js.map +1 -0
  75. package/dist/cli/runInfraCommandAsync.d.ts +4 -0
  76. package/dist/cli/runInfraCommandAsync.d.ts.map +1 -0
  77. package/dist/cli/runInfraCommandAsync.js +100 -0
  78. package/dist/cli/runInfraCommandAsync.js.map +1 -0
  79. package/dist/cli/utils/prepareInfraCommandOperationAsync.d.ts +4 -0
  80. package/dist/cli/utils/prepareInfraCommandOperationAsync.d.ts.map +1 -0
  81. package/dist/cli/utils/prepareInfraCommandOperationAsync.js +45 -0
  82. package/dist/cli/utils/prepareInfraCommandOperationAsync.js.map +1 -0
  83. package/dist/cli/utils/requireInfraSuccess.d.ts +7 -0
  84. package/dist/cli/utils/requireInfraSuccess.d.ts.map +1 -0
  85. package/dist/cli/utils/requireInfraSuccess.js +17 -0
  86. package/dist/cli/utils/requireInfraSuccess.js.map +1 -0
  87. package/dist/cli/utils/resolveInfraPersistence.d.ts +4 -0
  88. package/dist/cli/utils/resolveInfraPersistence.d.ts.map +1 -0
  89. package/dist/cli/utils/resolveInfraPersistence.js +17 -0
  90. package/dist/cli/utils/resolveInfraPersistence.js.map +1 -0
  91. package/dist/cli/utils/writeInfraEnvironmentOutputs.d.ts +5 -0
  92. package/dist/cli/utils/writeInfraEnvironmentOutputs.d.ts.map +1 -0
  93. package/dist/cli/utils/writeInfraEnvironmentOutputs.js +16 -0
  94. package/dist/cli/utils/writeInfraEnvironmentOutputs.js.map +1 -0
  95. package/dist/cli/utils/writeInfraStructured.d.ts +4 -0
  96. package/dist/cli/utils/writeInfraStructured.d.ts.map +1 -0
  97. package/dist/cli/utils/writeInfraStructured.js +8 -0
  98. package/dist/cli/utils/writeInfraStructured.js.map +1 -0
  99. package/dist/constants.d.ts +10 -0
  100. package/dist/constants.d.ts.map +1 -0
  101. package/dist/{packageMetadata.js → constants.js} +6 -3
  102. package/dist/constants.js.map +1 -0
  103. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraCredentialPort.d.ts +4 -0
  104. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraCredentialPort.d.ts.map +1 -0
  105. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraCredentialPort.js +35 -0
  106. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraCredentialPort.js.map +1 -0
  107. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraSecretPort.d.ts +4 -0
  108. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraSecretPort.d.ts.map +1 -0
  109. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraSecretPort.js +23 -0
  110. package/dist/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraSecretPort.js.map +1 -0
  111. package/dist/features/environment-lifecycle/adapters/outbound/createNodeInfraAdapterPackageResolver.d.ts +4 -0
  112. package/dist/features/environment-lifecycle/adapters/outbound/createNodeInfraAdapterPackageResolver.d.ts.map +1 -0
  113. package/dist/features/environment-lifecycle/adapters/outbound/createNodeInfraAdapterPackageResolver.js +9 -0
  114. package/dist/features/environment-lifecycle/adapters/outbound/createNodeInfraAdapterPackageResolver.js.map +1 -0
  115. package/dist/features/environment-lifecycle/adapters/outbound/readStoredInfraStateAsync.d.ts +5 -0
  116. package/dist/features/environment-lifecycle/adapters/outbound/readStoredInfraStateAsync.d.ts.map +1 -0
  117. package/dist/features/environment-lifecycle/adapters/outbound/readStoredInfraStateAsync.js +28 -0
  118. package/dist/features/environment-lifecycle/adapters/outbound/readStoredInfraStateAsync.js.map +1 -0
  119. package/dist/features/environment-lifecycle/adapters/outbound/removeStoredInfraStateAsync.d.ts +4 -0
  120. package/dist/features/environment-lifecycle/adapters/outbound/removeStoredInfraStateAsync.d.ts.map +1 -0
  121. package/dist/features/environment-lifecycle/adapters/outbound/removeStoredInfraStateAsync.js +7 -0
  122. package/dist/features/environment-lifecycle/adapters/outbound/removeStoredInfraStateAsync.js.map +1 -0
  123. package/dist/features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.d.ts +7 -0
  124. package/dist/features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.d.ts.map +1 -0
  125. package/dist/{project.js → features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.js} +10 -34
  126. package/dist/features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.js.map +1 -0
  127. package/dist/features/environment-lifecycle/adapters/outbound/writeInfraGeneratedArtifactsAsync.d.ts +5 -0
  128. package/dist/features/environment-lifecycle/adapters/outbound/writeInfraGeneratedArtifactsAsync.d.ts.map +1 -0
  129. package/dist/features/environment-lifecycle/adapters/outbound/writeInfraGeneratedArtifactsAsync.js +28 -0
  130. package/dist/features/environment-lifecycle/adapters/outbound/writeInfraGeneratedArtifactsAsync.js.map +1 -0
  131. package/dist/features/environment-lifecycle/adapters/outbound/writeStoredInfraStateAsync.d.ts +4 -0
  132. package/dist/features/environment-lifecycle/adapters/outbound/writeStoredInfraStateAsync.d.ts.map +1 -0
  133. package/dist/features/environment-lifecycle/adapters/outbound/writeStoredInfraStateAsync.js +16 -0
  134. package/dist/features/environment-lifecycle/adapters/outbound/writeStoredInfraStateAsync.js.map +1 -0
  135. package/dist/features/environment-lifecycle/application/ports/outbound/infraAdapterPackage.d.ts +9 -0
  136. package/dist/features/environment-lifecycle/application/ports/outbound/infraAdapterPackage.d.ts.map +1 -0
  137. package/dist/features/environment-lifecycle/application/ports/outbound/infraAdapterPackage.js +2 -0
  138. package/dist/features/environment-lifecycle/application/ports/outbound/infraAdapterPackage.js.map +1 -0
  139. package/dist/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.d.ts +4 -0
  140. package/dist/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.d.ts.map +1 -0
  141. package/dist/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.js +15 -0
  142. package/dist/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.js.map +1 -0
  143. package/dist/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.d.ts +4 -0
  144. package/dist/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.d.ts.map +1 -0
  145. package/dist/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.js +84 -0
  146. package/dist/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.js.map +1 -0
  147. package/dist/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.d.ts +4 -0
  148. package/dist/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.d.ts.map +1 -0
  149. package/dist/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.js +55 -0
  150. package/dist/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.js.map +1 -0
  151. package/dist/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.d.ts +4 -0
  152. package/dist/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.d.ts.map +1 -0
  153. package/dist/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.js +38 -0
  154. package/dist/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.js.map +1 -0
  155. package/dist/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.d.ts +4 -0
  156. package/dist/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.d.ts.map +1 -0
  157. package/dist/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.js +34 -0
  158. package/dist/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.js.map +1 -0
  159. package/dist/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.d.ts +4 -0
  160. package/dist/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.d.ts.map +1 -0
  161. package/dist/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.js +57 -0
  162. package/dist/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.js.map +1 -0
  163. package/dist/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.d.ts +5 -0
  164. package/dist/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.d.ts.map +1 -0
  165. package/dist/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.js +109 -0
  166. package/dist/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.js.map +1 -0
  167. package/dist/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.d.ts +6 -0
  168. package/dist/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.d.ts.map +1 -0
  169. package/dist/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.js +181 -0
  170. package/dist/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.js.map +1 -0
  171. package/dist/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.d.ts +4 -0
  172. package/dist/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.d.ts.map +1 -0
  173. package/dist/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.js +68 -0
  174. package/dist/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.js.map +1 -0
  175. package/dist/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.d.ts +4 -0
  176. package/dist/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.d.ts.map +1 -0
  177. package/dist/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.js +98 -0
  178. package/dist/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.js.map +1 -0
  179. package/dist/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.d.ts +5 -0
  180. package/dist/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.d.ts.map +1 -0
  181. package/dist/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.js +17 -0
  182. package/dist/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.js.map +1 -0
  183. package/dist/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.d.ts +4 -0
  184. package/dist/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.d.ts.map +1 -0
  185. package/dist/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.js +13 -0
  186. package/dist/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.js.map +1 -0
  187. package/dist/features/environment-lifecycle/composition/createInfraCommandServices.d.ts +4 -0
  188. package/dist/features/environment-lifecycle/composition/createInfraCommandServices.d.ts.map +1 -0
  189. package/dist/features/environment-lifecycle/composition/createInfraCommandServices.js +43 -0
  190. package/dist/features/environment-lifecycle/composition/createInfraCommandServices.js.map +1 -0
  191. package/dist/features/environment-lifecycle/domain/orderInfraPlanActions.d.ts +4 -0
  192. package/dist/features/environment-lifecycle/domain/orderInfraPlanActions.d.ts.map +1 -0
  193. package/dist/features/environment-lifecycle/domain/orderInfraPlanActions.js +54 -0
  194. package/dist/features/environment-lifecycle/domain/orderInfraPlanActions.js.map +1 -0
  195. package/dist/features/environment-lifecycle/domain/resolveInfraEnvironment.d.ts +5 -0
  196. package/dist/features/environment-lifecycle/domain/resolveInfraEnvironment.d.ts.map +1 -0
  197. package/dist/features/environment-lifecycle/domain/resolveInfraEnvironment.js +39 -0
  198. package/dist/features/environment-lifecycle/domain/resolveInfraEnvironment.js.map +1 -0
  199. package/dist/features/environment-lifecycle/utils/appendInfraFailure.d.ts +7 -0
  200. package/dist/features/environment-lifecycle/utils/appendInfraFailure.d.ts.map +1 -0
  201. package/dist/features/environment-lifecycle/utils/appendInfraFailure.js +5 -0
  202. package/dist/features/environment-lifecycle/utils/appendInfraFailure.js.map +1 -0
  203. package/dist/features/environment-lifecycle/utils/createInfraExecutionContext.d.ts +5 -0
  204. package/dist/features/environment-lifecycle/utils/createInfraExecutionContext.d.ts.map +1 -0
  205. package/dist/features/environment-lifecycle/utils/createInfraExecutionContext.js +13 -0
  206. package/dist/features/environment-lifecycle/utils/createInfraExecutionContext.js.map +1 -0
  207. package/dist/features/environment-lifecycle/utils/createInfraFailure.d.ts +4 -0
  208. package/dist/features/environment-lifecycle/utils/createInfraFailure.d.ts.map +1 -0
  209. package/dist/features/environment-lifecycle/utils/createInfraFailure.js +5 -0
  210. package/dist/features/environment-lifecycle/utils/createInfraFailure.js.map +1 -0
  211. package/dist/features/environment-lifecycle/utils/createInfraLedger.d.ts +12 -0
  212. package/dist/features/environment-lifecycle/utils/createInfraLedger.d.ts.map +1 -0
  213. package/dist/features/environment-lifecycle/utils/createInfraLedger.js +14 -0
  214. package/dist/features/environment-lifecycle/utils/createInfraLedger.js.map +1 -0
  215. package/dist/features/environment-lifecycle/utils/infraIdentityKey.d.ts +4 -0
  216. package/dist/features/environment-lifecycle/utils/infraIdentityKey.d.ts.map +1 -0
  217. package/dist/features/environment-lifecycle/utils/infraIdentityKey.js +5 -0
  218. package/dist/features/environment-lifecycle/utils/infraIdentityKey.js.map +1 -0
  219. package/dist/features/environment-lifecycle/utils/isInfraStoredState.d.ts +4 -0
  220. package/dist/features/environment-lifecycle/utils/isInfraStoredState.d.ts.map +1 -0
  221. package/dist/features/environment-lifecycle/utils/isInfraStoredState.js +103 -0
  222. package/dist/features/environment-lifecycle/utils/isInfraStoredState.js.map +1 -0
  223. package/dist/features/environment-lifecycle/utils/mergeInfraOutputs.d.ts +4 -0
  224. package/dist/features/environment-lifecycle/utils/mergeInfraOutputs.d.ts.map +1 -0
  225. package/dist/features/environment-lifecycle/utils/mergeInfraOutputs.js +10 -0
  226. package/dist/features/environment-lifecycle/utils/mergeInfraOutputs.js.map +1 -0
  227. package/dist/features/environment-lifecycle/utils/mergeInfraResources.d.ts +4 -0
  228. package/dist/features/environment-lifecycle/utils/mergeInfraResources.d.ts.map +1 -0
  229. package/dist/features/environment-lifecycle/utils/mergeInfraResources.js +10 -0
  230. package/dist/features/environment-lifecycle/utils/mergeInfraResources.js.map +1 -0
  231. package/dist/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.d.ts +3 -0
  232. package/dist/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.d.ts.map +1 -0
  233. package/dist/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.js +8 -0
  234. package/dist/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.js.map +1 -0
  235. package/dist/features/environment-lifecycle/utils/resolveInfraStatePath.d.ts +4 -0
  236. package/dist/features/environment-lifecycle/utils/resolveInfraStatePath.d.ts.map +1 -0
  237. package/dist/features/environment-lifecycle/utils/resolveInfraStatePath.js +11 -0
  238. package/dist/features/environment-lifecycle/utils/resolveInfraStatePath.js.map +1 -0
  239. package/dist/features/environment-lifecycle/utils/resolveProjectFile.d.ts +3 -0
  240. package/dist/features/environment-lifecycle/utils/resolveProjectFile.d.ts.map +1 -0
  241. package/dist/features/environment-lifecycle/utils/resolveProjectFile.js +19 -0
  242. package/dist/features/environment-lifecycle/utils/resolveProjectFile.js.map +1 -0
  243. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.d.ts +4 -0
  244. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.d.ts.map +1 -0
  245. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.js +6 -0
  246. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.js.map +1 -0
  247. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterResources.d.ts +4 -0
  248. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterResources.d.ts.map +1 -0
  249. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterResources.js +6 -0
  250. package/dist/features/environment-lifecycle/utils/retainUnchangedAdapterResources.js.map +1 -0
  251. package/dist/index.d.ts +16 -6
  252. package/dist/index.d.ts.map +1 -1
  253. package/dist/index.js +14 -15
  254. package/dist/index.js.map +1 -1
  255. package/dist/metadata/index.d.ts +1 -1
  256. package/dist/metadata/index.d.ts.map +1 -1
  257. package/dist/metadata/index.js +1 -1
  258. package/dist/metadata/index.js.map +1 -1
  259. package/dist/project/index.d.ts +7 -5
  260. package/dist/project/index.d.ts.map +1 -1
  261. package/dist/project/index.js +6 -5
  262. package/dist/project/index.js.map +1 -1
  263. package/dist/readme-usage.js +17 -26
  264. package/dist/readme-usage.js.map +1 -1
  265. package/dist/testSupport.d.ts +1 -1
  266. package/dist/testSupport.d.ts.map +1 -1
  267. package/dist/testSupport.js +11 -1
  268. package/dist/testSupport.js.map +1 -1
  269. package/dist/types/infraCli.d.ts +91 -0
  270. package/dist/types/infraCli.d.ts.map +1 -0
  271. package/dist/types/infraCli.js +2 -0
  272. package/dist/types/infraCli.js.map +1 -0
  273. package/dist/types/infraOrchestration.d.ts +84 -0
  274. package/dist/types/infraOrchestration.d.ts.map +1 -0
  275. package/dist/types/infraOrchestration.js +2 -0
  276. package/dist/types/infraOrchestration.js.map +1 -0
  277. package/dist/{project.d.ts → types/infraProject.d.ts} +6 -6
  278. package/dist/types/infraProject.d.ts.map +1 -0
  279. package/dist/types/infraProject.js +2 -0
  280. package/dist/types/infraProject.js.map +1 -0
  281. package/package.json +21 -11
  282. package/src/adapterPackages.integration.test.ts +79 -0
  283. package/src/cli/bin.ts +2 -61
  284. package/src/cli/cli.test.ts +35 -126
  285. package/src/cli/commands/destroy.ts +57 -0
  286. package/src/cli/commands/down.ts +28 -0
  287. package/src/cli/commands/generate.ts +34 -0
  288. package/src/cli/commands/outputs.ts +25 -0
  289. package/src/cli/commands/plan.ts +20 -0
  290. package/src/cli/commands/status.ts +20 -0
  291. package/src/cli/commands/up.ts +29 -0
  292. package/src/cli/commands/validate.ts +20 -0
  293. package/src/cli/constants.ts +19 -0
  294. package/src/cli/createDefaultInfraCommandContext.ts +17 -0
  295. package/src/cli/createInfraRuntimeProvider.ts +35 -0
  296. package/src/cli/createProviderCommandDescriptors.ts +8 -0
  297. package/src/cli/findInfraCommand.ts +7 -0
  298. package/src/cli/index.test.ts +12 -20
  299. package/src/cli/index.ts +7 -49
  300. package/src/cli/renderInfraRootHelp.ts +23 -0
  301. package/src/cli/renderUnknownInfraCommand.ts +4 -0
  302. package/src/cli/runInfraCliAsync.ts +51 -0
  303. package/src/cli/runInfraCommandAsync.ts +114 -0
  304. package/src/cli/utils/prepareInfraCommandOperationAsync.ts +64 -0
  305. package/src/cli/utils/requireInfraSuccess.ts +24 -0
  306. package/src/cli/utils/resolveInfraPersistence.ts +22 -0
  307. package/src/cli/utils/writeInfraEnvironmentOutputs.ts +24 -0
  308. package/src/cli/utils/writeInfraStructured.ts +11 -0
  309. package/src/commands.test.ts +198 -196
  310. package/src/{packageMetadata.ts → constants.ts} +5 -2
  311. package/src/environmentLifecycle.test.ts +193 -0
  312. package/src/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraCredentialPort.ts +52 -0
  313. package/src/features/environment-lifecycle/adapters/outbound/createEnvironmentInfraSecretPort.ts +32 -0
  314. package/src/features/environment-lifecycle/adapters/outbound/createNodeInfraAdapterPackageResolver.ts +10 -0
  315. package/src/features/environment-lifecycle/adapters/outbound/readStoredInfraStateAsync.ts +34 -0
  316. package/src/features/environment-lifecycle/adapters/outbound/removeStoredInfraStateAsync.ts +12 -0
  317. package/src/{project.ts → features/environment-lifecycle/adapters/outbound/resolveInfraProjectAsync.ts} +10 -45
  318. package/src/features/environment-lifecycle/adapters/outbound/writeInfraGeneratedArtifactsAsync.ts +34 -0
  319. package/src/features/environment-lifecycle/adapters/outbound/writeStoredInfraStateAsync.ts +21 -0
  320. package/src/features/environment-lifecycle/application/ports/outbound/infraAdapterPackage.ts +10 -0
  321. package/src/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.ts +25 -0
  322. package/src/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.ts +119 -0
  323. package/src/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.ts +65 -0
  324. package/src/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.ts +51 -0
  325. package/src/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.ts +41 -0
  326. package/src/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.ts +67 -0
  327. package/src/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.ts +137 -0
  328. package/src/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.ts +257 -0
  329. package/src/features/environment-lifecycle/application/use-cases/statusInfraEnvironmentAsync.ts +80 -0
  330. package/src/features/environment-lifecycle/application/use-cases/upInfraEnvironmentAsync.ts +126 -0
  331. package/src/features/environment-lifecycle/application/use-cases/validateInfraAdaptersAsync.ts +25 -0
  332. package/src/features/environment-lifecycle/application/use-cases/validateInfraEnvironmentAsync.ts +21 -0
  333. package/src/features/environment-lifecycle/composition/createInfraCommandServices.ts +47 -0
  334. package/src/features/environment-lifecycle/domain/orderInfraPlanActions.ts +64 -0
  335. package/src/features/environment-lifecycle/domain/resolveInfraEnvironment.ts +62 -0
  336. package/src/features/environment-lifecycle/utils/appendInfraFailure.ts +9 -0
  337. package/src/features/environment-lifecycle/utils/createInfraExecutionContext.ts +24 -0
  338. package/src/features/environment-lifecycle/utils/createInfraFailure.ts +6 -0
  339. package/src/features/environment-lifecycle/utils/createInfraLedger.ts +30 -0
  340. package/src/features/environment-lifecycle/utils/infraIdentityKey.ts +6 -0
  341. package/src/features/environment-lifecycle/utils/isInfraStoredState.ts +141 -0
  342. package/src/features/environment-lifecycle/utils/mergeInfraOutputs.ts +14 -0
  343. package/src/features/environment-lifecycle/utils/mergeInfraResources.ts +14 -0
  344. package/src/features/environment-lifecycle/utils/normalizeInfraEnvironmentKey.ts +7 -0
  345. package/src/features/environment-lifecycle/utils/resolveInfraStatePath.ts +12 -0
  346. package/src/features/environment-lifecycle/utils/resolveProjectFile.ts +22 -0
  347. package/src/features/environment-lifecycle/utils/retainUnchangedAdapterOutputs.ts +15 -0
  348. package/src/features/environment-lifecycle/utils/retainUnchangedAdapterResources.ts +15 -0
  349. package/src/index.test.ts +22 -315
  350. package/src/index.ts +41 -53
  351. package/src/infraComposition.integration.test.ts +128 -0
  352. package/src/infraOperations.test.ts +386 -0
  353. package/src/infraUp.test.ts +260 -0
  354. package/src/metadata/index.ts +1 -1
  355. package/src/package.test.ts +4 -2
  356. package/src/project/index.test.ts +8 -188
  357. package/src/project/index.ts +7 -22
  358. package/src/project.test.ts +39 -189
  359. package/src/projectContractsParser.test.ts +2 -2
  360. package/src/projectInfrastructure.test.ts +121 -167
  361. package/src/readme-usage.ts +17 -26
  362. package/src/testSupport.ts +12 -2
  363. package/src/types/infraCli.ts +115 -0
  364. package/src/types/infraOrchestration.ts +126 -0
  365. package/src/types/infraProject.ts +15 -0
  366. package/dist/adapters/minikube/auth/index.d.ts +0 -8
  367. package/dist/adapters/minikube/auth/index.d.ts.map +0 -1
  368. package/dist/adapters/minikube/auth/index.js +0 -29
  369. package/dist/adapters/minikube/auth/index.js.map +0 -1
  370. package/dist/adapters/minikube/auth/oauthRuntime.d.ts +0 -4
  371. package/dist/adapters/minikube/auth/oauthRuntime.d.ts.map +0 -1
  372. package/dist/adapters/minikube/auth/oauthRuntime.js +0 -138
  373. package/dist/adapters/minikube/auth/oauthRuntime.js.map +0 -1
  374. package/dist/adapters/minikube/auth/supabase/index.d.ts +0 -7
  375. package/dist/adapters/minikube/auth/supabase/index.d.ts.map +0 -1
  376. package/dist/adapters/minikube/auth/supabase/index.js +0 -232
  377. package/dist/adapters/minikube/auth/supabase/index.js.map +0 -1
  378. package/dist/adapters/minikube/auth/supabase/profile.d.ts +0 -20
  379. package/dist/adapters/minikube/auth/supabase/profile.d.ts.map +0 -1
  380. package/dist/adapters/minikube/auth/supabase/profile.js +0 -452
  381. package/dist/adapters/minikube/auth/supabase/profile.js.map +0 -1
  382. package/dist/adapters/minikube/auth/targetAwareOAuthRuntime.d.ts +0 -7
  383. package/dist/adapters/minikube/auth/targetAwareOAuthRuntime.d.ts.map +0 -1
  384. package/dist/adapters/minikube/auth/targetAwareOAuthRuntime.js +0 -104
  385. package/dist/adapters/minikube/auth/targetAwareOAuthRuntime.js.map +0 -1
  386. package/dist/adapters/minikube/authz/cerbos/index.d.ts +0 -13
  387. package/dist/adapters/minikube/authz/cerbos/index.d.ts.map +0 -1
  388. package/dist/adapters/minikube/authz/cerbos/index.js +0 -382
  389. package/dist/adapters/minikube/authz/cerbos/index.js.map +0 -1
  390. package/dist/adapters/minikube/authz/index.d.ts +0 -9
  391. package/dist/adapters/minikube/authz/index.d.ts.map +0 -1
  392. package/dist/adapters/minikube/authz/index.js +0 -23
  393. package/dist/adapters/minikube/authz/index.js.map +0 -1
  394. package/dist/adapters/minikube/base/index.d.ts +0 -14
  395. package/dist/adapters/minikube/base/index.d.ts.map +0 -1
  396. package/dist/adapters/minikube/base/index.js +0 -3433
  397. package/dist/adapters/minikube/base/index.js.map +0 -1
  398. package/dist/adapters/minikube/base/supabaseMigrations.d.ts +0 -2
  399. package/dist/adapters/minikube/base/supabaseMigrations.d.ts.map +0 -1
  400. package/dist/adapters/minikube/base/supabaseMigrations.js +0 -6
  401. package/dist/adapters/minikube/base/supabaseMigrations.js.map +0 -1
  402. package/dist/adapters/minikube/contracts.d.ts +0 -34
  403. package/dist/adapters/minikube/contracts.d.ts.map +0 -1
  404. package/dist/adapters/minikube/contracts.js +0 -10
  405. package/dist/adapters/minikube/contracts.js.map +0 -1
  406. package/dist/adapters/minikube/index.d.ts +0 -3
  407. package/dist/adapters/minikube/index.d.ts.map +0 -1
  408. package/dist/adapters/minikube/index.js +0 -136
  409. package/dist/adapters/minikube/index.js.map +0 -1
  410. package/dist/adapters/minikube/secrets/index.d.ts +0 -7
  411. package/dist/adapters/minikube/secrets/index.d.ts.map +0 -1
  412. package/dist/adapters/minikube/secrets/index.js +0 -13
  413. package/dist/adapters/minikube/secrets/index.js.map +0 -1
  414. package/dist/adapters/minikube/secrets/supabase-vault/index.d.ts +0 -8
  415. package/dist/adapters/minikube/secrets/supabase-vault/index.d.ts.map +0 -1
  416. package/dist/adapters/minikube/secrets/supabase-vault/index.js +0 -118
  417. package/dist/adapters/minikube/secrets/supabase-vault/index.js.map +0 -1
  418. package/dist/adapters/minikube/storage/index.d.ts +0 -7
  419. package/dist/adapters/minikube/storage/index.d.ts.map +0 -1
  420. package/dist/adapters/minikube/storage/index.js +0 -77
  421. package/dist/adapters/minikube/storage/index.js.map +0 -1
  422. package/dist/adapters/minikube/storage/supabase/index.d.ts +0 -7
  423. package/dist/adapters/minikube/storage/supabase/index.d.ts.map +0 -1
  424. package/dist/adapters/minikube/storage/supabase/index.js +0 -82
  425. package/dist/adapters/minikube/storage/supabase/index.js.map +0 -1
  426. package/dist/authRedirects.d.ts +0 -19
  427. package/dist/authRedirects.d.ts.map +0 -1
  428. package/dist/authRedirects.js +0 -80
  429. package/dist/authRedirects.js.map +0 -1
  430. package/dist/authTargetRedirects.d.ts +0 -12
  431. package/dist/authTargetRedirects.d.ts.map +0 -1
  432. package/dist/authTargetRedirects.js +0 -32
  433. package/dist/authTargetRedirects.js.map +0 -1
  434. package/dist/commandContext.d.ts +0 -12
  435. package/dist/commandContext.d.ts.map +0 -1
  436. package/dist/commandContext.js.map +0 -1
  437. package/dist/commands.d.ts +0 -95
  438. package/dist/commands.d.ts.map +0 -1
  439. package/dist/commands.js +0 -256
  440. package/dist/commands.js.map +0 -1
  441. package/dist/infraValidation.d.ts +0 -4
  442. package/dist/infraValidation.d.ts.map +0 -1
  443. package/dist/infraValidation.js +0 -63
  444. package/dist/infraValidation.js.map +0 -1
  445. package/dist/packageMetadata.d.ts +0 -10
  446. package/dist/packageMetadata.d.ts.map +0 -1
  447. package/dist/packageMetadata.js.map +0 -1
  448. package/dist/project.d.ts.map +0 -1
  449. package/dist/project.js.map +0 -1
  450. package/dist/projectDatabase.d.ts +0 -5
  451. package/dist/projectDatabase.d.ts.map +0 -1
  452. package/dist/projectDatabase.js +0 -22
  453. package/dist/projectDatabase.js.map +0 -1
  454. package/dist/projectEnvironment.d.ts +0 -6
  455. package/dist/projectEnvironment.d.ts.map +0 -1
  456. package/dist/projectEnvironment.js +0 -45
  457. package/dist/projectEnvironment.js.map +0 -1
  458. package/dist/projectInfrastructure.d.ts +0 -38
  459. package/dist/projectInfrastructure.d.ts.map +0 -1
  460. package/dist/projectInfrastructure.js +0 -145
  461. package/dist/projectInfrastructure.js.map +0 -1
  462. package/dist/runtime.d.ts +0 -54
  463. package/dist/runtime.d.ts.map +0 -1
  464. package/dist/runtime.js +0 -151
  465. package/dist/runtime.js.map +0 -1
  466. package/dist/secretStore.d.ts +0 -19
  467. package/dist/secretStore.d.ts.map +0 -1
  468. package/dist/secretStore.js +0 -22
  469. package/dist/secretStore.js.map +0 -1
  470. package/dist/types.d.ts +0 -70
  471. package/dist/types.d.ts.map +0 -1
  472. package/dist/types.js +0 -2
  473. package/dist/types.js.map +0 -1
  474. package/src/adapters/minikube/README.md +0 -115
  475. package/src/adapters/minikube/appRuntimeServing.test.ts +0 -28
  476. package/src/adapters/minikube/auth/index.ts +0 -40
  477. package/src/adapters/minikube/auth/oauthRuntime.ts +0 -163
  478. package/src/adapters/minikube/auth/supabase/index.test.ts +0 -227
  479. package/src/adapters/minikube/auth/supabase/index.ts +0 -293
  480. package/src/adapters/minikube/auth/supabase/oauthRuntime.test.ts +0 -154
  481. package/src/adapters/minikube/auth/supabase/profile.integration.test.ts +0 -1028
  482. package/src/adapters/minikube/auth/supabase/profile.ts +0 -526
  483. package/src/adapters/minikube/auth/supabase/providerAssignments.test.ts +0 -36
  484. package/src/adapters/minikube/auth/targetAwareOAuthRuntime.test.ts +0 -83
  485. package/src/adapters/minikube/auth/targetAwareOAuthRuntime.ts +0 -136
  486. package/src/adapters/minikube/authz/cerbos/index.ts +0 -486
  487. package/src/adapters/minikube/authz/index.ts +0 -32
  488. package/src/adapters/minikube/base/appImageBuild.test.ts +0 -352
  489. package/src/adapters/minikube/base/index.test.ts +0 -693
  490. package/src/adapters/minikube/base/index.ts +0 -3763
  491. package/src/adapters/minikube/base/portForwardRuntime.test.ts +0 -624
  492. package/src/adapters/minikube/base/supabaseMigrations.test.ts +0 -168
  493. package/src/adapters/minikube/base/supabaseMigrations.ts +0 -5
  494. package/src/adapters/minikube/base/twoAppIsolation.integration.test.ts +0 -898
  495. package/src/adapters/minikube/base/upgradeReconciliation.test.ts +0 -135
  496. package/src/adapters/minikube/contracts.ts +0 -46
  497. package/src/adapters/minikube/index.ts +0 -172
  498. package/src/adapters/minikube/secrets/index.test.ts +0 -147
  499. package/src/adapters/minikube/secrets/index.ts +0 -19
  500. package/src/adapters/minikube/secrets/supabase-vault/index.ts +0 -139
  501. package/src/adapters/minikube/storage/index.ts +0 -91
  502. package/src/adapters/minikube/storage/supabase/index.ts +0 -108
  503. package/src/apiInfrastructure.test.ts +0 -69
  504. package/src/authRedirects.test.ts +0 -63
  505. package/src/authRedirects.ts +0 -113
  506. package/src/authTargetRedirects.test.ts +0 -62
  507. package/src/authTargetRedirects.ts +0 -46
  508. package/src/commandContext.ts +0 -27
  509. package/src/commands.ts +0 -404
  510. package/src/generatedApiLedgerCleanup.test.ts +0 -72
  511. package/src/infraApiValidation.test.ts +0 -42
  512. package/src/infraValidation.ts +0 -99
  513. package/src/minikubeImageLifecycle.test.ts +0 -35
  514. package/src/projectDatabase.ts +0 -27
  515. package/src/projectEnvironment.ts +0 -51
  516. package/src/projectInfrastructure.ts +0 -221
  517. package/src/runtime.test.ts +0 -124
  518. package/src/runtime.ts +0 -234
  519. package/src/secretStore.test.ts +0 -76
  520. package/src/secretStore.ts +0 -44
  521. package/src/types.ts +0 -82
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=infraAdapterPackage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infraAdapterPackage.js","sourceRoot":"","sources":["../../../../../../src/features/environment-lifecycle/application/ports/outbound/infraAdapterPackage.ts"],"names":[],"mappings":"","sourcesContent":["import type { InfraAdapterDescriptor } from '@ankhorage/contracts/infra';\n\nexport interface InfraAdapterPackageResolver {\n loadAsync(packageName: string): Promise<unknown>;\n}\n\nexport interface InfraAdapterPackageModule {\n readonly infraAdapterDescriptor: InfraAdapterDescriptor;\n readonly createInfraAdapter: () => unknown;\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { InfraExecutionContext, InfraResult, InfraServiceAdapter, InfraWorkloadSpec } from '@ankhorage/contracts/infra';
2
+ /*** Collect each service workload graph once in deterministic adapter order. */
3
+ export declare function collectInfraWorkloadsAsync(context: InfraExecutionContext, services: readonly InfraServiceAdapter[]): Promise<InfraResult<readonly InfraWorkloadSpec[]>>;
4
+ //# sourceMappingURL=collectInfraWorkloadsAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectInfraWorkloadsAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qBAAqB,EACrB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AAIpC,gFAAgF;AAChF,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,SAAS,mBAAmB,EAAE,GACvC,OAAO,CAAC,WAAW,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC,CAUpD"}
@@ -0,0 +1,15 @@
1
+ import { appendInfraFailure } from '../../utils/appendInfraFailure.js';
2
+ /*** Collect each service workload graph once in deterministic adapter order. */
3
+ export async function collectInfraWorkloadsAsync(context, services) {
4
+ const workloads = [];
5
+ const diagnostics = [];
6
+ for (const service of services) {
7
+ const desired = await service.desiredWorkloadsAsync(context);
8
+ if (!desired.ok)
9
+ return appendInfraFailure(diagnostics, desired);
10
+ workloads.push(...desired.value);
11
+ diagnostics.push(...desired.diagnostics);
12
+ }
13
+ return { ok: true, value: workloads, diagnostics };
14
+ }
15
+ //# sourceMappingURL=collectInfraWorkloadsAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectInfraWorkloadsAsync.js","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/collectInfraWorkloadsAsync.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAA8B,EAC9B,QAAwC;IAExC,MAAM,SAAS,GAAwB,EAAE,CAAC;IAC1C,MAAM,WAAW,GAAsB,EAAE,CAAC;IAC1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjE,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AACrD,CAAC","sourcesContent":["import type {\n InfraDiagnostic,\n InfraExecutionContext,\n InfraResult,\n InfraServiceAdapter,\n InfraWorkloadSpec,\n} from '@ankhorage/contracts/infra';\n\nimport { appendInfraFailure } from '../../utils/appendInfraFailure.js';\n\n/*** Collect each service workload graph once in deterministic adapter order. */\nexport async function collectInfraWorkloadsAsync(\n context: InfraExecutionContext,\n services: readonly InfraServiceAdapter[],\n): Promise<InfraResult<readonly InfraWorkloadSpec[]>> {\n const workloads: InfraWorkloadSpec[] = [];\n const diagnostics: InfraDiagnostic[] = [];\n for (const service of services) {\n const desired = await service.desiredWorkloadsAsync(context);\n if (!desired.ok) return appendInfraFailure(diagnostics, desired);\n workloads.push(...desired.value);\n diagnostics.push(...desired.diagnostics);\n }\n return { ok: true, value: workloads, diagnostics };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { InfraDestroyOperationRequest, InfraDestroyOperationResult, InfraOrchestrationDependencies } from '../../../../types/infraOrchestration.js';
2
+ /*** Destroy exact owned resources in reverse dependency order behind explicit scope confirmation. */
3
+ export declare function destroyInfraEnvironmentAsync(request: InfraDestroyOperationRequest, dependencies: InfraOrchestrationDependencies): Promise<InfraDestroyOperationResult>;
4
+ //# sourceMappingURL=destroyInfraEnvironmentAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destroyInfraEnvironmentAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAC3B,8BAA8B,EAC/B,MAAM,yCAAyC,CAAC;AAQjD,qGAAqG;AACrG,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,4BAA4B,EACrC,YAAY,EAAE,8BAA8B,GAC3C,OAAO,CAAC,2BAA2B,CAAC,CAyDtC"}
@@ -0,0 +1,84 @@
1
+ import { appendInfraFailure } from '../../utils/appendInfraFailure.js';
2
+ import { createInfraLedger } from '../../utils/createInfraLedger.js';
3
+ import { infraIdentityKey } from '../../utils/infraIdentityKey.js';
4
+ import { mergeInfraOutputs } from '../../utils/mergeInfraOutputs.js';
5
+ import { mergeInfraResources } from '../../utils/mergeInfraResources.js';
6
+ import { prepareInfraOperationAsync } from './prepareInfraOperationAsync.js';
7
+ /*** Destroy exact owned resources in reverse dependency order behind explicit scope confirmation. */
8
+ export async function destroyInfraEnvironmentAsync(request, dependencies) {
9
+ const prepared = await prepareInfraOperationAsync(request, 'destroy', dependencies);
10
+ if (!prepared.ok)
11
+ return prepared;
12
+ const destroyRequest = {
13
+ projectId: request.projectId,
14
+ environment: prepared.value.environment.id,
15
+ confirmation: request.confirmation,
16
+ persistence: request.persistence,
17
+ };
18
+ const safety = validateDestroyRequest(destroyRequest, request.previous?.resources ?? []);
19
+ if (!safety.ok)
20
+ return safety;
21
+ const diagnostics = [...prepared.diagnostics];
22
+ const resources = [];
23
+ const outputs = [];
24
+ for (const service of [...prepared.value.adapters.services].reverse()) {
25
+ const result = await service.destroyAsync(prepared.value.context, destroyRequest);
26
+ if (!result.ok)
27
+ return appendInfraFailure(diagnostics, result);
28
+ resources.push(...result.value.resources);
29
+ outputs.push(...result.value.outputs);
30
+ diagnostics.push(...result.diagnostics);
31
+ }
32
+ if (prepared.value.runtimeDesired.targets.length > 0) {
33
+ const runtime = await prepared.value.adapters.runtime.destroyAsync(prepared.value.context, prepared.value.runtimeDesired, destroyRequest);
34
+ if (!runtime.ok)
35
+ return appendInfraFailure(diagnostics, runtime);
36
+ resources.push(...runtime.value.resources);
37
+ outputs.push(...runtime.value.outputs);
38
+ diagnostics.push(...runtime.diagnostics);
39
+ }
40
+ const compute = await prepared.value.adapters.compute.destroyAsync(prepared.value.context, destroyRequest);
41
+ if (!compute.ok)
42
+ return appendInfraFailure(diagnostics, compute);
43
+ resources.push(...compute.value.resources);
44
+ outputs.push(...compute.value.outputs);
45
+ diagnostics.push(...compute.diagnostics);
46
+ const remainingResources = mergeInfraResources(resources);
47
+ const remainingOutputs = mergeInfraOutputs(outputs);
48
+ const ledger = remainingResources.length === 0 && remainingOutputs.length === 0
49
+ ? null
50
+ : createInfraLedger({
51
+ projectId: request.projectId,
52
+ environment: prepared.value.environment.id,
53
+ targets: [],
54
+ resources: remainingResources,
55
+ outputs: remainingOutputs,
56
+ });
57
+ return {
58
+ ok: true,
59
+ value: { environment: prepared.value.environment.id, ledger },
60
+ diagnostics,
61
+ };
62
+ }
63
+ /*** Refuse cross-project confirmation and unowned persistent deletion before any mutation. */
64
+ function validateDestroyRequest(request, previous) {
65
+ if (request.confirmation.projectId !== request.projectId ||
66
+ request.confirmation.environment !== request.environment) {
67
+ return destroyFailure('infra-destroy-confirmation-mismatch', 'Infra destroy confirmation must exactly match the selected project and environment.');
68
+ }
69
+ if (request.persistence.policy === 'retain') {
70
+ return { ok: true, value: null, diagnostics: [] };
71
+ }
72
+ const owned = new Set(previous.map(({ identity }) => infraIdentityKey(identity)));
73
+ const invalid = request.persistence.confirmedResources.some((identity) => identity.projectId !== request.projectId ||
74
+ identity.environment !== request.environment ||
75
+ !owned.has(infraIdentityKey(identity)));
76
+ return invalid
77
+ ? destroyFailure('infra-destroy-resource-unowned', 'Persistent deletion confirmation contains a resource outside the stored Infra scope.')
78
+ : { ok: true, value: null, diagnostics: [] };
79
+ }
80
+ /*** Create one stable non-provider-specific destroy safety failure. */
81
+ function destroyFailure(code, message) {
82
+ return { ok: false, diagnostics: [{ severity: 'error', code, message }] };
83
+ }
84
+ //# sourceMappingURL=destroyInfraEnvironmentAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destroyInfraEnvironmentAsync.js","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/destroyInfraEnvironmentAsync.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n InfraDestroyRequest,\n InfraDiagnostic,\n InfraOutput,\n InfraOwnedResource,\n InfraResult,\n} from '@ankhorage/contracts/infra';\n\nimport type {\n InfraDestroyOperationRequest,\n InfraDestroyOperationResult,\n InfraOrchestrationDependencies,\n} from '../../../../types/infraOrchestration.js';\nimport { appendInfraFailure } from '../../utils/appendInfraFailure.js';\nimport { createInfraLedger } from '../../utils/createInfraLedger.js';\nimport { infraIdentityKey } from '../../utils/infraIdentityKey.js';\nimport { mergeInfraOutputs } from '../../utils/mergeInfraOutputs.js';\nimport { mergeInfraResources } from '../../utils/mergeInfraResources.js';\nimport { prepareInfraOperationAsync } from './prepareInfraOperationAsync.js';\n\n/*** Destroy exact owned resources in reverse dependency order behind explicit scope confirmation. */\nexport async function destroyInfraEnvironmentAsync(\n request: InfraDestroyOperationRequest,\n dependencies: InfraOrchestrationDependencies,\n): Promise<InfraDestroyOperationResult> {\n const prepared = await prepareInfraOperationAsync(request, 'destroy', dependencies);\n if (!prepared.ok) return prepared;\n const destroyRequest: InfraDestroyRequest = {\n projectId: request.projectId,\n environment: prepared.value.environment.id,\n confirmation: request.confirmation,\n persistence: request.persistence,\n };\n const safety = validateDestroyRequest(destroyRequest, request.previous?.resources ?? []);\n if (!safety.ok) return safety;\n const diagnostics: InfraDiagnostic[] = [...prepared.diagnostics];\n const resources: InfraOwnedResource[] = [];\n const outputs: InfraOutput[] = [];\n for (const service of [...prepared.value.adapters.services].reverse()) {\n const result = await service.destroyAsync(prepared.value.context, destroyRequest);\n if (!result.ok) return appendInfraFailure(diagnostics, result);\n resources.push(...result.value.resources);\n outputs.push(...result.value.outputs);\n diagnostics.push(...result.diagnostics);\n }\n if (prepared.value.runtimeDesired.targets.length > 0) {\n const runtime = await prepared.value.adapters.runtime.destroyAsync(\n prepared.value.context,\n prepared.value.runtimeDesired,\n destroyRequest,\n );\n if (!runtime.ok) return appendInfraFailure(diagnostics, runtime);\n resources.push(...runtime.value.resources);\n outputs.push(...runtime.value.outputs);\n diagnostics.push(...runtime.diagnostics);\n }\n const compute = await prepared.value.adapters.compute.destroyAsync(\n prepared.value.context,\n destroyRequest,\n );\n if (!compute.ok) return appendInfraFailure(diagnostics, compute);\n resources.push(...compute.value.resources);\n outputs.push(...compute.value.outputs);\n diagnostics.push(...compute.diagnostics);\n const remainingResources = mergeInfraResources(resources);\n const remainingOutputs = mergeInfraOutputs(outputs);\n const ledger =\n remainingResources.length === 0 && remainingOutputs.length === 0\n ? null\n : createInfraLedger({\n projectId: request.projectId,\n environment: prepared.value.environment.id,\n targets: [],\n resources: remainingResources,\n outputs: remainingOutputs,\n });\n return {\n ok: true,\n value: { environment: prepared.value.environment.id, ledger },\n diagnostics,\n };\n}\n\n/*** Refuse cross-project confirmation and unowned persistent deletion before any mutation. */\nfunction validateDestroyRequest(\n request: InfraDestroyRequest,\n previous: readonly InfraOwnedResource[],\n): InfraResult<null> {\n if (\n request.confirmation.projectId !== request.projectId ||\n request.confirmation.environment !== request.environment\n ) {\n return destroyFailure(\n 'infra-destroy-confirmation-mismatch',\n 'Infra destroy confirmation must exactly match the selected project and environment.',\n );\n }\n if (request.persistence.policy === 'retain') {\n return { ok: true, value: null, diagnostics: [] };\n }\n const owned = new Set(previous.map(({ identity }) => infraIdentityKey(identity)));\n const invalid = request.persistence.confirmedResources.some(\n (identity) =>\n identity.projectId !== request.projectId ||\n identity.environment !== request.environment ||\n !owned.has(infraIdentityKey(identity)),\n );\n return invalid\n ? destroyFailure(\n 'infra-destroy-resource-unowned',\n 'Persistent deletion confirmation contains a resource outside the stored Infra scope.',\n )\n : { ok: true, value: null, diagnostics: [] };\n}\n\n/*** Create one stable non-provider-specific destroy safety failure. */\nfunction destroyFailure(code: string, message: string): InfraResult<never> {\n return { ok: false, diagnostics: [{ severity: 'error', code, message }] };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { InfraDownOperationResult, InfraOperationRequest, InfraOrchestrationDependencies } from '../../../../types/infraOrchestration.js';
2
+ /*** Reversibly suspend services and runtime while retaining compute and persistent data. */
3
+ export declare function downInfraEnvironmentAsync(request: InfraOperationRequest, dependencies: InfraOrchestrationDependencies): Promise<InfraDownOperationResult>;
4
+ //# sourceMappingURL=downInfraEnvironmentAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downInfraEnvironmentAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,8BAA8B,EAC/B,MAAM,yCAAyC,CAAC;AAOjD,4FAA4F;AAC5F,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,qBAAqB,EAC9B,YAAY,EAAE,8BAA8B,GAC3C,OAAO,CAAC,wBAAwB,CAAC,CA+CnC"}
@@ -0,0 +1,55 @@
1
+ import { appendInfraFailure } from '../../utils/appendInfraFailure.js';
2
+ import { createInfraLedger } from '../../utils/createInfraLedger.js';
3
+ import { retainUnchangedAdapterOutputs } from '../../utils/retainUnchangedAdapterOutputs.js';
4
+ import { retainUnchangedAdapterResources } from '../../utils/retainUnchangedAdapterResources.js';
5
+ import { prepareInfraOperationAsync } from './prepareInfraOperationAsync.js';
6
+ /*** Reversibly suspend services and runtime while retaining compute and persistent data. */
7
+ export async function downInfraEnvironmentAsync(request, dependencies) {
8
+ const prepared = await prepareInfraOperationAsync(request, 'down', dependencies);
9
+ if (!prepared.ok)
10
+ return prepared;
11
+ const diagnostics = [...prepared.diagnostics];
12
+ const resources = [];
13
+ const outputs = [];
14
+ const replacedAdapters = new Set();
15
+ for (const service of [...prepared.value.adapters.services].reverse()) {
16
+ if (service.suspendAsync === undefined)
17
+ continue;
18
+ const result = await service.suspendAsync(prepared.value.context);
19
+ if (!result.ok)
20
+ return appendInfraFailure(diagnostics, result);
21
+ replacedAdapters.add(service.descriptor.id);
22
+ resources.push(...result.value.resources);
23
+ outputs.push(...result.value.outputs);
24
+ diagnostics.push(...result.diagnostics);
25
+ }
26
+ if (prepared.value.runtimeDesired.targets.length > 0) {
27
+ const runtime = await prepared.value.adapters.runtime.suspendAsync(prepared.value.context, prepared.value.runtimeDesired);
28
+ if (!runtime.ok)
29
+ return appendInfraFailure(diagnostics, runtime);
30
+ replacedAdapters.add(prepared.value.adapters.runtime.descriptor.id);
31
+ resources.push(...runtime.value.resources);
32
+ outputs.push(...runtime.value.outputs);
33
+ diagnostics.push(...runtime.diagnostics);
34
+ }
35
+ const previousResources = request.previous?.resources ?? [];
36
+ const previousOutputs = request.previous?.outputs ?? [];
37
+ return {
38
+ ok: true,
39
+ value: {
40
+ environment: prepared.value.environment.id,
41
+ ledger: createInfraLedger({
42
+ projectId: request.projectId,
43
+ environment: prepared.value.environment.id,
44
+ targets: prepared.value.compute.targets.length > 0
45
+ ? prepared.value.compute.targets
46
+ : (request.previous?.targets ?? []),
47
+ resources: retainUnchangedAdapterResources(previousResources, resources, replacedAdapters),
48
+ outputs: retainUnchangedAdapterOutputs(previousOutputs, outputs, replacedAdapters),
49
+ previous: request.previous,
50
+ }),
51
+ },
52
+ diagnostics,
53
+ };
54
+ }
55
+ //# sourceMappingURL=downInfraEnvironmentAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downInfraEnvironmentAsync.js","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/downInfraEnvironmentAsync.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAA8B,EAC9B,YAA4C;IAE5C,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACjF,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,MAAM,WAAW,GAAsB,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjE,MAAM,SAAS,GAAyB,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACtE,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;YAAE,SAAS;QACjD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/D,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5C,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAChE,QAAQ,CAAC,KAAK,CAAC,OAAO,EACtB,QAAQ,CAAC,KAAK,CAAC,cAAc,CAC9B,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpE,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;IAC5D,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;IACxD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE;YACL,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YAC1C,MAAM,EAAE,iBAAiB,CAAC;gBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;gBAC1C,OAAO,EACL,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;oBACvC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;oBAChC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;gBACvC,SAAS,EAAE,+BAA+B,CAAC,iBAAiB,EAAE,SAAS,EAAE,gBAAgB,CAAC;gBAC1F,OAAO,EAAE,6BAA6B,CAAC,eAAe,EAAE,OAAO,EAAE,gBAAgB,CAAC;gBAClF,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC;SACH;QACD,WAAW;KACZ,CAAC;AACJ,CAAC","sourcesContent":["import type { InfraDiagnostic, InfraOutput, InfraOwnedResource } from '@ankhorage/contracts/infra';\n\nimport type {\n InfraDownOperationResult,\n InfraOperationRequest,\n InfraOrchestrationDependencies,\n} from '../../../../types/infraOrchestration.js';\nimport { appendInfraFailure } from '../../utils/appendInfraFailure.js';\nimport { createInfraLedger } from '../../utils/createInfraLedger.js';\nimport { retainUnchangedAdapterOutputs } from '../../utils/retainUnchangedAdapterOutputs.js';\nimport { retainUnchangedAdapterResources } from '../../utils/retainUnchangedAdapterResources.js';\nimport { prepareInfraOperationAsync } from './prepareInfraOperationAsync.js';\n\n/*** Reversibly suspend services and runtime while retaining compute and persistent data. */\nexport async function downInfraEnvironmentAsync(\n request: InfraOperationRequest,\n dependencies: InfraOrchestrationDependencies,\n): Promise<InfraDownOperationResult> {\n const prepared = await prepareInfraOperationAsync(request, 'down', dependencies);\n if (!prepared.ok) return prepared;\n const diagnostics: InfraDiagnostic[] = [...prepared.diagnostics];\n const resources: InfraOwnedResource[] = [];\n const outputs: InfraOutput[] = [];\n const replacedAdapters = new Set<string>();\n for (const service of [...prepared.value.adapters.services].reverse()) {\n if (service.suspendAsync === undefined) continue;\n const result = await service.suspendAsync(prepared.value.context);\n if (!result.ok) return appendInfraFailure(diagnostics, result);\n replacedAdapters.add(service.descriptor.id);\n resources.push(...result.value.resources);\n outputs.push(...result.value.outputs);\n diagnostics.push(...result.diagnostics);\n }\n if (prepared.value.runtimeDesired.targets.length > 0) {\n const runtime = await prepared.value.adapters.runtime.suspendAsync(\n prepared.value.context,\n prepared.value.runtimeDesired,\n );\n if (!runtime.ok) return appendInfraFailure(diagnostics, runtime);\n replacedAdapters.add(prepared.value.adapters.runtime.descriptor.id);\n resources.push(...runtime.value.resources);\n outputs.push(...runtime.value.outputs);\n diagnostics.push(...runtime.diagnostics);\n }\n const previousResources = request.previous?.resources ?? [];\n const previousOutputs = request.previous?.outputs ?? [];\n return {\n ok: true,\n value: {\n environment: prepared.value.environment.id,\n ledger: createInfraLedger({\n projectId: request.projectId,\n environment: prepared.value.environment.id,\n targets:\n prepared.value.compute.targets.length > 0\n ? prepared.value.compute.targets\n : (request.previous?.targets ?? []),\n resources: retainUnchangedAdapterResources(previousResources, resources, replacedAdapters),\n outputs: retainUnchangedAdapterOutputs(previousOutputs, outputs, replacedAdapters),\n previous: request.previous,\n }),\n },\n diagnostics,\n };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { InfraGenerateOperationResult, InfraOperationRequest, InfraOrchestrationDependencies } from '../../../../types/infraOrchestration.js';
2
+ /*** Generate deterministic review artifacts without mutating local or remote infrastructure. */
3
+ export declare function generateInfraEnvironmentAsync(request: InfraOperationRequest, dependencies: InfraOrchestrationDependencies): Promise<InfraGenerateOperationResult>;
4
+ //# sourceMappingURL=generateInfraEnvironmentAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateInfraEnvironmentAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,4BAA4B,EAC5B,qBAAqB,EACrB,8BAA8B,EAC/B,MAAM,yCAAyC,CAAC;AAOjD,gGAAgG;AAChG,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,qBAAqB,EAC9B,YAAY,EAAE,8BAA8B,GAC3C,OAAO,CAAC,4BAA4B,CAAC,CAiCvC"}
@@ -0,0 +1,38 @@
1
+ import { appendInfraFailure } from '../../utils/appendInfraFailure.js';
2
+ import { createInfraLedger } from '../../utils/createInfraLedger.js';
3
+ import { mergeInfraOutputs } from '../../utils/mergeInfraOutputs.js';
4
+ import { mergeInfraResources } from '../../utils/mergeInfraResources.js';
5
+ import { prepareInfraOperationAsync } from './prepareInfraOperationAsync.js';
6
+ /*** Generate deterministic review artifacts without mutating local or remote infrastructure. */
7
+ export async function generateInfraEnvironmentAsync(request, dependencies) {
8
+ const prepared = await prepareInfraOperationAsync(request, 'generate', dependencies);
9
+ if (!prepared.ok)
10
+ return prepared;
11
+ const diagnostics = [...prepared.diagnostics];
12
+ const { runtime } = prepared.value.adapters;
13
+ const artifacts = runtime.generateAsync === undefined || prepared.value.runtimeDesired.targets.length === 0
14
+ ? { ok: true, value: [], diagnostics: [] }
15
+ : await runtime.generateAsync(prepared.value.context, prepared.value.runtimeDesired);
16
+ if (!artifacts.ok)
17
+ return appendInfraFailure(diagnostics, artifacts);
18
+ diagnostics.push(...artifacts.diagnostics);
19
+ return {
20
+ ok: true,
21
+ value: {
22
+ environment: prepared.value.environment.id,
23
+ artifacts: artifacts.value,
24
+ ledger: createInfraLedger({
25
+ projectId: request.projectId,
26
+ environment: prepared.value.environment.id,
27
+ targets: prepared.value.compute.targets.length > 0
28
+ ? prepared.value.compute.targets
29
+ : (request.previous?.targets ?? []),
30
+ resources: mergeInfraResources(request.previous?.resources ?? [], prepared.value.compute.resources),
31
+ outputs: mergeInfraOutputs(request.previous?.outputs ?? [], prepared.value.compute.outputs),
32
+ artifacts: artifacts.value,
33
+ }),
34
+ },
35
+ diagnostics,
36
+ };
37
+ }
38
+ //# sourceMappingURL=generateInfraEnvironmentAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateInfraEnvironmentAsync.js","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/generateInfraEnvironmentAsync.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAA8B,EAC9B,YAA4C;IAE5C,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACrF,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,MAAM,WAAW,GAAsB,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC5C,MAAM,SAAS,GACb,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QACvF,CAAC,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;QACnD,CAAC,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACzF,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACrE,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE;YACL,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YAC1C,SAAS,EAAE,SAAS,CAAC,KAAK;YAC1B,MAAM,EAAE,iBAAiB,CAAC;gBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;gBAC1C,OAAO,EACL,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;oBACvC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;oBAChC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;gBACvC,SAAS,EAAE,mBAAmB,CAC5B,OAAO,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,EACjC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CACjC;gBACD,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC3F,SAAS,EAAE,SAAS,CAAC,KAAK;aAC3B,CAAC;SACH;QACD,WAAW;KACZ,CAAC;AACJ,CAAC","sourcesContent":["import type { InfraDiagnostic } from '@ankhorage/contracts/infra';\n\nimport type {\n InfraGenerateOperationResult,\n InfraOperationRequest,\n InfraOrchestrationDependencies,\n} from '../../../../types/infraOrchestration.js';\nimport { appendInfraFailure } from '../../utils/appendInfraFailure.js';\nimport { createInfraLedger } from '../../utils/createInfraLedger.js';\nimport { mergeInfraOutputs } from '../../utils/mergeInfraOutputs.js';\nimport { mergeInfraResources } from '../../utils/mergeInfraResources.js';\nimport { prepareInfraOperationAsync } from './prepareInfraOperationAsync.js';\n\n/*** Generate deterministic review artifacts without mutating local or remote infrastructure. */\nexport async function generateInfraEnvironmentAsync(\n request: InfraOperationRequest,\n dependencies: InfraOrchestrationDependencies,\n): Promise<InfraGenerateOperationResult> {\n const prepared = await prepareInfraOperationAsync(request, 'generate', dependencies);\n if (!prepared.ok) return prepared;\n const diagnostics: InfraDiagnostic[] = [...prepared.diagnostics];\n const { runtime } = prepared.value.adapters;\n const artifacts =\n runtime.generateAsync === undefined || prepared.value.runtimeDesired.targets.length === 0\n ? { ok: true as const, value: [], diagnostics: [] }\n : await runtime.generateAsync(prepared.value.context, prepared.value.runtimeDesired);\n if (!artifacts.ok) return appendInfraFailure(diagnostics, artifacts);\n diagnostics.push(...artifacts.diagnostics);\n return {\n ok: true,\n value: {\n environment: prepared.value.environment.id,\n artifacts: artifacts.value,\n ledger: createInfraLedger({\n projectId: request.projectId,\n environment: prepared.value.environment.id,\n targets:\n prepared.value.compute.targets.length > 0\n ? prepared.value.compute.targets\n : (request.previous?.targets ?? []),\n resources: mergeInfraResources(\n request.previous?.resources ?? [],\n prepared.value.compute.resources,\n ),\n outputs: mergeInfraOutputs(request.previous?.outputs ?? [], prepared.value.compute.outputs),\n artifacts: artifacts.value,\n }),\n },\n diagnostics,\n };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { InfraOperationRequest, InfraOutputsOperationResult } from '../../../../types/infraOrchestration.js';
2
+ /*** Return only safe serialized public outputs and secret references from the canonical ledger. */
3
+ export declare function getInfraEnvironmentOutputs(request: InfraOperationRequest): InfraOutputsOperationResult;
4
+ //# sourceMappingURL=getInfraEnvironmentOutputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getInfraEnvironmentOutputs.d.ts","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,2BAA2B,EAC5B,MAAM,yCAAyC,CAAC;AAGjD,mGAAmG;AACnG,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,qBAAqB,GAC7B,2BAA2B,CA+B7B"}
@@ -0,0 +1,34 @@
1
+ import { resolveInfraEnvironment } from '../../domain/resolveInfraEnvironment.js';
2
+ /*** Return only safe serialized public outputs and secret references from the canonical ledger. */
3
+ export function getInfraEnvironmentOutputs(request) {
4
+ const environment = resolveInfraEnvironment({
5
+ manifest: request.manifest,
6
+ environment: request.environment,
7
+ operation: 'outputs',
8
+ });
9
+ if (!environment.ok)
10
+ return environment;
11
+ if (request.previous !== undefined &&
12
+ (request.previous.projectId !== request.projectId ||
13
+ request.previous.environment !== environment.value.id)) {
14
+ return {
15
+ ok: false,
16
+ diagnostics: [
17
+ {
18
+ severity: 'error',
19
+ code: 'infra-ledger-scope-mismatch',
20
+ message: 'Stored Infra state does not belong to the selected project and environment.',
21
+ },
22
+ ],
23
+ };
24
+ }
25
+ return {
26
+ ok: true,
27
+ value: {
28
+ environment: environment.value.id,
29
+ outputs: request.previous?.outputs ?? [],
30
+ },
31
+ diagnostics: environment.diagnostics,
32
+ };
33
+ }
34
+ //# sourceMappingURL=getInfraEnvironmentOutputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getInfraEnvironmentOutputs.js","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/getInfraEnvironmentOutputs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,mGAAmG;AACnG,MAAM,UAAU,0BAA0B,CACxC,OAA8B;IAE9B,MAAM,WAAW,GAAG,uBAAuB,CAAC;QAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,SAAS,EAAE,SAAS;KACrB,CAAC,CAAC;IACH,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC;IACxC,IACE,OAAO,CAAC,QAAQ,KAAK,SAAS;QAC9B,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;YAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EACxD,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,WAAW,EAAE;gBACX;oBACE,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,6BAA6B;oBACnC,OAAO,EAAE,6EAA6E;iBACvF;aACF;SACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE;YACL,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE;YACjC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE;SACzC;QACD,WAAW,EAAE,WAAW,CAAC,WAAW;KACrC,CAAC;AACJ,CAAC","sourcesContent":["import type {\n InfraOperationRequest,\n InfraOutputsOperationResult,\n} from '../../../../types/infraOrchestration.js';\nimport { resolveInfraEnvironment } from '../../domain/resolveInfraEnvironment.js';\n\n/*** Return only safe serialized public outputs and secret references from the canonical ledger. */\nexport function getInfraEnvironmentOutputs(\n request: InfraOperationRequest,\n): InfraOutputsOperationResult {\n const environment = resolveInfraEnvironment({\n manifest: request.manifest,\n environment: request.environment,\n operation: 'outputs',\n });\n if (!environment.ok) return environment;\n if (\n request.previous !== undefined &&\n (request.previous.projectId !== request.projectId ||\n request.previous.environment !== environment.value.id)\n ) {\n return {\n ok: false,\n diagnostics: [\n {\n severity: 'error',\n code: 'infra-ledger-scope-mismatch',\n message: 'Stored Infra state does not belong to the selected project and environment.',\n },\n ],\n };\n }\n return {\n ok: true,\n value: {\n environment: environment.value.id,\n outputs: request.previous?.outputs ?? [],\n },\n diagnostics: environment.diagnostics,\n };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { InfraOperationRequest, InfraOrchestrationDependencies, InfraPlanOperationResult } from '../../../../types/infraOrchestration.js';
2
+ /*** Aggregate a side-effect-free dependency-ordered plan from all selected adapters. */
3
+ export declare function planInfraEnvironmentAsync(request: InfraOperationRequest, dependencies: InfraOrchestrationDependencies): Promise<InfraPlanOperationResult>;
4
+ //# sourceMappingURL=planInfraEnvironmentAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planInfraEnvironmentAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,8BAA8B,EAC9B,wBAAwB,EACzB,MAAM,yCAAyC,CAAC;AAKjD,wFAAwF;AACxF,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,qBAAqB,EAC9B,YAAY,EAAE,8BAA8B,GAC3C,OAAO,CAAC,wBAAwB,CAAC,CAmDnC"}
@@ -0,0 +1,57 @@
1
+ import { orderInfraPlanActions } from '../../domain/orderInfraPlanActions.js';
2
+ import { appendInfraFailure } from '../../utils/appendInfraFailure.js';
3
+ import { prepareInfraOperationAsync } from './prepareInfraOperationAsync.js';
4
+ /*** Aggregate a side-effect-free dependency-ordered plan from all selected adapters. */
5
+ export async function planInfraEnvironmentAsync(request, dependencies) {
6
+ const prepared = await prepareInfraOperationAsync(request, 'plan', dependencies);
7
+ if (!prepared.ok)
8
+ return prepared;
9
+ const diagnostics = [...prepared.diagnostics];
10
+ const actions = [];
11
+ const compute = await prepared.value.adapters.compute.planAsync(prepared.value.context, prepared.value.environment.desired.deployment.compute);
12
+ if (!compute.ok)
13
+ return appendInfraFailure(diagnostics, compute);
14
+ actions.push(...compute.value);
15
+ diagnostics.push(...compute.diagnostics);
16
+ if (prepared.value.runtimeDesired.targets.length === 0) {
17
+ actions.push({
18
+ owner: {
19
+ projectId: request.projectId,
20
+ environment: prepared.value.environment.id,
21
+ adapter: prepared.value.adapters.runtime.descriptor.id,
22
+ resourceId: 'runtime',
23
+ },
24
+ operation: 'create',
25
+ impact: 'none',
26
+ detail: 'Runtime planning is deferred until the planned compute target exists.',
27
+ dependsOn: compute.value.map(({ owner }) => owner),
28
+ });
29
+ }
30
+ else {
31
+ const runtime = await prepared.value.adapters.runtime.planAsync(prepared.value.context, prepared.value.runtimeDesired);
32
+ if (!runtime.ok)
33
+ return appendInfraFailure(diagnostics, runtime);
34
+ actions.push(...runtime.value);
35
+ diagnostics.push(...runtime.diagnostics);
36
+ }
37
+ for (const service of prepared.value.adapters.services) {
38
+ const plan = await service.planAsync(prepared.value.context);
39
+ if (!plan.ok)
40
+ return appendInfraFailure(diagnostics, plan);
41
+ actions.push(...plan.value);
42
+ diagnostics.push(...plan.diagnostics);
43
+ }
44
+ const ordered = orderInfraPlanActions(actions);
45
+ if (!ordered.ok)
46
+ return appendInfraFailure(diagnostics, ordered);
47
+ return {
48
+ ok: true,
49
+ value: {
50
+ projectId: request.projectId,
51
+ environment: prepared.value.environment.id,
52
+ actions: ordered.value,
53
+ },
54
+ diagnostics,
55
+ };
56
+ }
57
+ //# sourceMappingURL=planInfraEnvironmentAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planInfraEnvironmentAsync.js","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/planInfraEnvironmentAsync.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InfraDiagnostic, InfraPlanAction } from '@ankhorage/contracts/infra';\n\nimport type {\n InfraOperationRequest,\n InfraOrchestrationDependencies,\n InfraPlanOperationResult,\n} from '../../../../types/infraOrchestration.js';\nimport { orderInfraPlanActions } from '../../domain/orderInfraPlanActions.js';\nimport { appendInfraFailure } from '../../utils/appendInfraFailure.js';\nimport { prepareInfraOperationAsync } from './prepareInfraOperationAsync.js';\n\n/*** Aggregate a side-effect-free dependency-ordered plan from all selected adapters. */\nexport async function planInfraEnvironmentAsync(\n request: InfraOperationRequest,\n dependencies: InfraOrchestrationDependencies,\n): Promise<InfraPlanOperationResult> {\n const prepared = await prepareInfraOperationAsync(request, 'plan', dependencies);\n if (!prepared.ok) return prepared;\n const diagnostics: InfraDiagnostic[] = [...prepared.diagnostics];\n const actions: InfraPlanAction[] = [];\n const compute = await prepared.value.adapters.compute.planAsync(\n prepared.value.context,\n prepared.value.environment.desired.deployment.compute,\n );\n if (!compute.ok) return appendInfraFailure(diagnostics, compute);\n actions.push(...compute.value);\n diagnostics.push(...compute.diagnostics);\n if (prepared.value.runtimeDesired.targets.length === 0) {\n actions.push({\n owner: {\n projectId: request.projectId,\n environment: prepared.value.environment.id,\n adapter: prepared.value.adapters.runtime.descriptor.id,\n resourceId: 'runtime',\n },\n operation: 'create',\n impact: 'none',\n detail: 'Runtime planning is deferred until the planned compute target exists.',\n dependsOn: compute.value.map(({ owner }) => owner),\n });\n } else {\n const runtime = await prepared.value.adapters.runtime.planAsync(\n prepared.value.context,\n prepared.value.runtimeDesired,\n );\n if (!runtime.ok) return appendInfraFailure(diagnostics, runtime);\n actions.push(...runtime.value);\n diagnostics.push(...runtime.diagnostics);\n }\n for (const service of prepared.value.adapters.services) {\n const plan = await service.planAsync(prepared.value.context);\n if (!plan.ok) return appendInfraFailure(diagnostics, plan);\n actions.push(...plan.value);\n diagnostics.push(...plan.diagnostics);\n }\n const ordered = orderInfraPlanActions(actions);\n if (!ordered.ok) return appendInfraFailure(diagnostics, ordered);\n return {\n ok: true,\n value: {\n projectId: request.projectId,\n environment: prepared.value.environment.id,\n actions: ordered.value,\n },\n diagnostics,\n };\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import type { InfraResult } from '@ankhorage/contracts/infra';
2
+ import type { InfraOperationRequest, InfraOrchestrationDependencies, PreparedInfraOperation } from '../../../../types/infraOrchestration.js';
3
+ /*** Resolve and validate one operation without creating, updating or deleting infrastructure. */
4
+ export declare function prepareInfraOperationAsync(request: InfraOperationRequest, operation: 'validate' | 'plan' | 'generate' | 'status' | 'outputs' | 'down' | 'destroy', dependencies: InfraOrchestrationDependencies): Promise<InfraResult<PreparedInfraOperation>>;
5
+ //# sourceMappingURL=prepareInfraOperationAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareInfraOperationAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE/E,OAAO,KAAK,EACV,qBAAqB,EACrB,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,yCAAyC,CAAC;AAQjD,iGAAiG;AACjG,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EACvF,YAAY,EAAE,8BAA8B,GAC3C,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CA6E9C"}
@@ -0,0 +1,109 @@
1
+ import { resolveInfraEnvironment } from '../../domain/resolveInfraEnvironment.js';
2
+ import { appendInfraFailure } from '../../utils/appendInfraFailure.js';
3
+ import { createInfraExecutionContext } from '../../utils/createInfraExecutionContext.js';
4
+ import { collectInfraWorkloadsAsync } from './collectInfraWorkloadsAsync.js';
5
+ import { resolveInfraAdaptersAsync } from './resolveInfraAdaptersAsync.js';
6
+ import { validateInfraAdaptersAsync } from './validateInfraAdaptersAsync.js';
7
+ /*** Resolve and validate one operation without creating, updating or deleting infrastructure. */
8
+ export async function prepareInfraOperationAsync(request, operation, dependencies) {
9
+ const diagnostics = [];
10
+ const environment = resolveInfraEnvironment({
11
+ manifest: request.manifest,
12
+ environment: request.environment,
13
+ operation,
14
+ });
15
+ if (!environment.ok)
16
+ return environment;
17
+ diagnostics.push(...environment.diagnostics);
18
+ if (request.previous !== undefined &&
19
+ request.previousDesired !== undefined &&
20
+ !hasSameProviderSelection(request.previousDesired, environment.value.desired)) {
21
+ return {
22
+ ok: false,
23
+ diagnostics: [
24
+ ...diagnostics,
25
+ {
26
+ severity: 'error',
27
+ code: 'infra-provider-selection-changed',
28
+ message: 'Stored Infra resources use another provider selection. Destroy that environment before applying the new selection.',
29
+ },
30
+ ],
31
+ };
32
+ }
33
+ const adapters = await resolveInfraAdaptersAsync(environment.value.desired, dependencies.adapterResolver);
34
+ if (!adapters.ok)
35
+ return appendInfraFailure(diagnostics, adapters);
36
+ diagnostics.push(...adapters.diagnostics);
37
+ const context = createInfraExecutionContext(request, environment.value, dependencies);
38
+ const validation = await validateInfraAdaptersAsync(context, adapters.value);
39
+ if (!validation.ok)
40
+ return appendInfraFailure(diagnostics, validation);
41
+ diagnostics.push(...validation.diagnostics);
42
+ const workloads = await collectInfraWorkloadsAsync(context, adapters.value.services);
43
+ if (!workloads.ok)
44
+ return appendInfraFailure(diagnostics, workloads);
45
+ diagnostics.push(...workloads.diagnostics);
46
+ const compute = await adapters.value.compute.inspectAsync(context, environment.value.desired.deployment.compute);
47
+ if (!compute.ok)
48
+ return appendInfraFailure(diagnostics, compute);
49
+ diagnostics.push(...compute.diagnostics);
50
+ const runtimeDesired = {
51
+ selection: environment.value.desired.deployment.runtime,
52
+ targets: compute.value.targets.length > 0
53
+ ? compute.value.targets
54
+ : (request.previous?.targets ?? compute.value.targets),
55
+ workloads: [...(environment.value.desired.workloads ?? []), ...workloads.value],
56
+ availableOutputs: mergeOutputs(request.previous?.outputs ?? [], compute.value.outputs),
57
+ };
58
+ if (runtimeDesired.targets.length === 0) {
59
+ diagnostics.push({
60
+ severity: 'info',
61
+ code: 'infra-runtime-target-deferred',
62
+ message: 'Runtime validation is deferred until compute exposes a portable target.',
63
+ });
64
+ }
65
+ else {
66
+ const runtime = await adapters.value.runtime.validateAsync(context, runtimeDesired);
67
+ if (!runtime.ok)
68
+ return appendInfraFailure(diagnostics, runtime);
69
+ diagnostics.push(...runtime.diagnostics);
70
+ }
71
+ return {
72
+ ok: true,
73
+ value: {
74
+ environment: environment.value,
75
+ context,
76
+ adapters: adapters.value,
77
+ compute: compute.value,
78
+ runtimeDesired,
79
+ },
80
+ diagnostics,
81
+ };
82
+ }
83
+ /*** Compare provider identity only; configuration changes remain normal in-place reconciliation. */
84
+ function hasSameProviderSelection(previous, current) {
85
+ return providerSelection(previous).join('\0') === providerSelection(current).join('\0');
86
+ }
87
+ /*** Read the closed provider slots in stable capability order. */
88
+ function providerSelection(desired) {
89
+ return [
90
+ desired.deployment.compute.provider,
91
+ desired.deployment.runtime.provider,
92
+ desired.database?.provider,
93
+ desired.objectStorage?.provider,
94
+ desired.auth?.provider,
95
+ desired.authz?.provider,
96
+ desired.secretStore?.provider,
97
+ ];
98
+ }
99
+ /*** Prefer freshly inspected outputs while preserving unrelated safe prior values. */
100
+ function mergeOutputs(previous, current) {
101
+ const currentKeys = new Set(current.map(outputKey));
102
+ return [...previous.filter((output) => !currentKeys.has(outputKey(output))), ...current];
103
+ }
104
+ /*** Create one stable public-or-secret output identity without reading its value. */
105
+ function outputKey(output) {
106
+ const { owner } = output;
107
+ return `${owner.projectId}\0${owner.environment}\0${owner.adapter}\0${owner.resourceId}\0${output.name}`;
108
+ }
109
+ //# sourceMappingURL=prepareInfraOperationAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareInfraOperationAsync.js","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/prepareInfraOperationAsync.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InfraDiagnostic, InfraResult } from '@ankhorage/contracts/infra';\n\nimport type {\n InfraOperationRequest,\n InfraOrchestrationDependencies,\n PreparedInfraOperation,\n} from '../../../../types/infraOrchestration.js';\nimport { resolveInfraEnvironment } from '../../domain/resolveInfraEnvironment.js';\nimport { appendInfraFailure } from '../../utils/appendInfraFailure.js';\nimport { createInfraExecutionContext } from '../../utils/createInfraExecutionContext.js';\nimport { collectInfraWorkloadsAsync } from './collectInfraWorkloadsAsync.js';\nimport { resolveInfraAdaptersAsync } from './resolveInfraAdaptersAsync.js';\nimport { validateInfraAdaptersAsync } from './validateInfraAdaptersAsync.js';\n\n/*** Resolve and validate one operation without creating, updating or deleting infrastructure. */\nexport async function prepareInfraOperationAsync(\n request: InfraOperationRequest,\n operation: 'validate' | 'plan' | 'generate' | 'status' | 'outputs' | 'down' | 'destroy',\n dependencies: InfraOrchestrationDependencies,\n): Promise<InfraResult<PreparedInfraOperation>> {\n const diagnostics: InfraDiagnostic[] = [];\n const environment = resolveInfraEnvironment({\n manifest: request.manifest,\n environment: request.environment,\n operation,\n });\n if (!environment.ok) return environment;\n diagnostics.push(...environment.diagnostics);\n if (\n request.previous !== undefined &&\n request.previousDesired !== undefined &&\n !hasSameProviderSelection(request.previousDesired, environment.value.desired)\n ) {\n return {\n ok: false,\n diagnostics: [\n ...diagnostics,\n {\n severity: 'error',\n code: 'infra-provider-selection-changed',\n message:\n 'Stored Infra resources use another provider selection. Destroy that environment before applying the new selection.',\n },\n ],\n };\n }\n const adapters = await resolveInfraAdaptersAsync(\n environment.value.desired,\n dependencies.adapterResolver,\n );\n if (!adapters.ok) return appendInfraFailure(diagnostics, adapters);\n diagnostics.push(...adapters.diagnostics);\n const context = createInfraExecutionContext(request, environment.value, dependencies);\n const validation = await validateInfraAdaptersAsync(context, adapters.value);\n if (!validation.ok) return appendInfraFailure(diagnostics, validation);\n diagnostics.push(...validation.diagnostics);\n const workloads = await collectInfraWorkloadsAsync(context, adapters.value.services);\n if (!workloads.ok) return appendInfraFailure(diagnostics, workloads);\n diagnostics.push(...workloads.diagnostics);\n const compute = await adapters.value.compute.inspectAsync(\n context,\n environment.value.desired.deployment.compute,\n );\n if (!compute.ok) return appendInfraFailure(diagnostics, compute);\n diagnostics.push(...compute.diagnostics);\n const runtimeDesired = {\n selection: environment.value.desired.deployment.runtime,\n targets:\n compute.value.targets.length > 0\n ? compute.value.targets\n : (request.previous?.targets ?? compute.value.targets),\n workloads: [...(environment.value.desired.workloads ?? []), ...workloads.value],\n availableOutputs: mergeOutputs(request.previous?.outputs ?? [], compute.value.outputs),\n };\n if (runtimeDesired.targets.length === 0) {\n diagnostics.push({\n severity: 'info',\n code: 'infra-runtime-target-deferred',\n message: 'Runtime validation is deferred until compute exposes a portable target.',\n });\n } else {\n const runtime = await adapters.value.runtime.validateAsync(context, runtimeDesired);\n if (!runtime.ok) return appendInfraFailure(diagnostics, runtime);\n diagnostics.push(...runtime.diagnostics);\n }\n return {\n ok: true,\n value: {\n environment: environment.value,\n context,\n adapters: adapters.value,\n compute: compute.value,\n runtimeDesired,\n },\n diagnostics,\n };\n}\n\n/*** Compare provider identity only; configuration changes remain normal in-place reconciliation. */\nfunction hasSameProviderSelection(\n previous: PreparedInfraOperation['environment']['desired'],\n current: PreparedInfraOperation['environment']['desired'],\n): boolean {\n return providerSelection(previous).join('\\0') === providerSelection(current).join('\\0');\n}\n\n/*** Read the closed provider slots in stable capability order. */\nfunction providerSelection(\n desired: PreparedInfraOperation['environment']['desired'],\n): readonly (string | undefined)[] {\n return [\n desired.deployment.compute.provider,\n desired.deployment.runtime.provider,\n desired.database?.provider,\n desired.objectStorage?.provider,\n desired.auth?.provider,\n desired.authz?.provider,\n desired.secretStore?.provider,\n ];\n}\n\n/*** Prefer freshly inspected outputs while preserving unrelated safe prior values. */\nfunction mergeOutputs(\n previous: PreparedInfraOperation['runtimeDesired']['availableOutputs'],\n current: PreparedInfraOperation['runtimeDesired']['availableOutputs'],\n): PreparedInfraOperation['runtimeDesired']['availableOutputs'] {\n const currentKeys = new Set(current.map(outputKey));\n return [...previous.filter((output) => !currentKeys.has(outputKey(output))), ...current];\n}\n\n/*** Create one stable public-or-secret output identity without reading its value. */\nfunction outputKey(\n output: PreparedInfraOperation['runtimeDesired']['availableOutputs'][number],\n): string {\n const { owner } = output;\n return `${owner.projectId}\\0${owner.environment}\\0${owner.adapter}\\0${owner.resourceId}\\0${output.name}`;\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { type InfraEnvironmentSpec, type InfraResult } from '@ankhorage/contracts/infra';
2
+ import type { ResolvedInfraAdapters } from '../../../../types/infraOrchestration.js';
3
+ import type { InfraAdapterPackageResolver } from '../ports/outbound/infraAdapterPackage.js';
4
+ /*** Resolve exactly the selected provider packages and validate their public adapter boundaries. */
5
+ export declare function resolveInfraAdaptersAsync(environment: InfraEnvironmentSpec, resolver: InfraAdapterPackageResolver): Promise<InfraResult<ResolvedInfraAdapters>>;
6
+ //# sourceMappingURL=resolveInfraAdaptersAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveInfraAdaptersAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/environment-lifecycle/application/use-cases/resolveInfraAdaptersAsync.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAKjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,KAAK,EAEV,2BAA2B,EAC5B,MAAM,0CAA0C,CAAC;AAElD,oGAAoG;AACpG,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,oBAAoB,EACjC,QAAQ,EAAE,2BAA2B,GACpC,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,CA2B7C"}