@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,17 @@
1
+ import { INFRA_PACKAGE_VERSION } from '../constants.js';
2
+ import type { InfraCommandContext } from '../types/infraCli.js';
3
+
4
+ /*** Create the process-backed command context used by the standalone executable. */
5
+ export function createDefaultInfraCommandContext(): InfraCommandContext {
6
+ return {
7
+ cwd: process.cwd(),
8
+ env: process.env,
9
+ version: INFRA_PACKAGE_VERSION,
10
+ writeStdout(text: string) {
11
+ process.stdout.write(text);
12
+ },
13
+ writeStderr(text: string) {
14
+ process.stderr.write(text);
15
+ },
16
+ };
17
+ }
@@ -0,0 +1,35 @@
1
+ import type { AnkhRuntimeCommandProvider } from '@ankhorage/ankh';
2
+
3
+ import {
4
+ INFRA_CAPABILITIES,
5
+ INFRA_COMMAND_CATEGORY,
6
+ INFRA_PACKAGE_NAME,
7
+ INFRA_PACKAGE_VERSION,
8
+ } from '../constants.js';
9
+ import type { CreateInfraRuntimeProviderOptions } from '../types/infraCli.js';
10
+ import { INFRA_COMMANDS } from './constants.js';
11
+ import { createProviderCommandDescriptors } from './createProviderCommandDescriptors.js';
12
+ import { runInfraCommandAsync } from './runInfraCommandAsync.js';
13
+
14
+ /*** Compose the canonical Infra command surface as an Ankh runtime provider. */
15
+ export function createInfraRuntimeProvider(
16
+ options: CreateInfraRuntimeProviderOptions = {},
17
+ ): AnkhRuntimeCommandProvider {
18
+ const runCommandImpl = options.runCommandImpl ?? runInfraCommandAsync;
19
+ return {
20
+ id: INFRA_PACKAGE_NAME,
21
+ category: INFRA_COMMAND_CATEGORY,
22
+ version: INFRA_PACKAGE_VERSION,
23
+ capabilities: [...INFRA_CAPABILITIES],
24
+ commands: createProviderCommandDescriptors(),
25
+ handlers: INFRA_COMMANDS.map((command) => ({
26
+ path: command.path,
27
+ handler(request) {
28
+ return runCommandImpl(
29
+ { argv: request.argv, command, context: request.context },
30
+ { services: options.services },
31
+ );
32
+ },
33
+ })),
34
+ } satisfies AnkhRuntimeCommandProvider;
35
+ }
@@ -0,0 +1,8 @@
1
+ import type { AnkhCommandDescriptor } from '@ankhorage/contracts/cli';
2
+
3
+ import { INFRA_COMMANDS } from './constants.js';
4
+
5
+ /*** Expose the same eight commands through Ankh provider discovery. */
6
+ export function createProviderCommandDescriptors(): readonly AnkhCommandDescriptor[] {
7
+ return INFRA_COMMANDS.map(({ capability, path, summary }) => ({ capability, path, summary }));
8
+ }
@@ -0,0 +1,7 @@
1
+ import type { InfraCommandDefinition } from '../types/infraCli.js';
2
+ import { INFRA_COMMANDS } from './constants.js';
3
+
4
+ /*** Resolve one exact standalone Infra command name without guessing intent. */
5
+ export function findInfraCommand(value: string): InfraCommandDefinition | null {
6
+ return INFRA_COMMANDS.find((candidate) => candidate.standaloneName === value) ?? null;
7
+ }
@@ -1,32 +1,24 @@
1
1
  import type { AnkhRuntimeCommandProvider } from '@ankhorage/ankh';
2
2
  import { describe, expect, test } from 'bun:test';
3
3
 
4
- import { createProviderCommandDescriptors, INFRA_COMMANDS } from '../commands.js';
4
+ import { createProviderCommandDescriptors } from './createProviderCommandDescriptors.js';
5
5
  import provider, { createInfraRuntimeProvider } from './index.js';
6
6
 
7
- describe('infra package cli provider', () => {
8
- test('publishes the expected runtime provider shape', () => {
9
- const expectedProvider = createInfraRuntimeProvider() satisfies AnkhRuntimeCommandProvider;
10
-
11
- expect(expectedProvider.id).toBe('@ankhorage/infra');
12
- expect(expectedProvider.category).toBe('infra');
13
- expect(expectedProvider.capabilities).toEqual([
7
+ describe('Infra Ankh provider', () => {
8
+ test('publishes all eight canonical capabilities and handlers', () => {
9
+ const expected = createInfraRuntimeProvider() satisfies AnkhRuntimeCommandProvider;
10
+ expect(expected.capabilities).toEqual([
14
11
  'infra.validate',
12
+ 'infra.plan',
15
13
  'infra.generate',
16
- 'infra.status',
17
14
  'infra.up',
15
+ 'infra.status',
16
+ 'infra.outputs',
18
17
  'infra.down',
18
+ 'infra.destroy',
19
19
  ]);
20
- expect(expectedProvider.commands).toEqual(createProviderCommandDescriptors());
21
- expect(expectedProvider.handlers?.map((handler) => handler.path.join(' '))).toEqual(
22
- INFRA_COMMANDS.map((command) => command.path.join(' ')),
23
- );
24
- expect(JSON.stringify(expectedProvider)).not.toContain('port-forward');
25
- });
26
-
27
- test('default export is the runtime provider', () => {
28
- expect(provider.category).toBe('infra');
29
- expect(provider.commands).toHaveLength(5);
30
- expect(provider.handlers).toHaveLength(5);
20
+ expect(expected.commands).toEqual(createProviderCommandDescriptors());
21
+ expect(expected.handlers).toHaveLength(8);
22
+ expect(provider.handlers).toHaveLength(8);
31
23
  });
32
24
  });
package/src/cli/index.ts CHANGED
@@ -1,53 +1,11 @@
1
- import type { AnkhRuntimeCommandProvider } from '@ankhorage/ankh';
2
-
3
- import {
4
- createProviderCommandDescriptors,
5
- INFRA_COMMANDS,
6
- type InfraCommandServices,
7
- runInfraCommand,
8
- type RunInfraCommandImpl,
9
- } from '../commands.js';
10
- import {
11
- INFRA_CAPABILITIES,
12
- INFRA_COMMAND_CATEGORY,
13
- INFRA_PACKAGE_NAME,
14
- INFRA_PACKAGE_VERSION,
15
- } from '../packageMetadata.js';
16
-
17
- export interface CreateInfraRuntimeProviderOptions {
18
- readonly runCommandImpl?: RunInfraCommandImpl;
19
- readonly services?: Partial<InfraCommandServices>;
20
- }
21
-
22
- export function createInfraRuntimeProvider(
23
- options: CreateInfraRuntimeProviderOptions = {},
24
- ): AnkhRuntimeCommandProvider {
25
- const runCommandImpl = options.runCommandImpl ?? runInfraCommand;
26
-
27
- return {
28
- id: INFRA_PACKAGE_NAME,
29
- category: INFRA_COMMAND_CATEGORY,
30
- version: INFRA_PACKAGE_VERSION,
31
- capabilities: [...INFRA_CAPABILITIES],
32
- commands: createProviderCommandDescriptors(),
33
- handlers: INFRA_COMMANDS.map((command) => ({
34
- path: command.path,
35
- handler(request) {
36
- return runCommandImpl(
37
- {
38
- argv: request.argv,
39
- command,
40
- context: request.context,
41
- },
42
- {
43
- services: options.services,
44
- },
45
- );
46
- },
47
- })),
48
- } satisfies AnkhRuntimeCommandProvider;
49
- }
1
+ import { createInfraRuntimeProvider } from './createInfraRuntimeProvider.js';
50
2
 
51
3
  const provider = createInfraRuntimeProvider();
52
4
 
5
+ export type {
6
+ CreateInfraRuntimeProviderOptions,
7
+ InfraCommandServices,
8
+ RunInfraCommandImpl,
9
+ } from '../types/infraCli.js';
10
+ export { createInfraRuntimeProvider } from './createInfraRuntimeProvider.js';
53
11
  export default provider;
@@ -0,0 +1,23 @@
1
+ import { INFRA_COMMAND_CATEGORY } from '../constants.js';
2
+ import { INFRA_COMMANDS } from './constants.js';
3
+
4
+ /*** Render the standalone Infra command surface and environment safety rules. */
5
+ export function renderInfraRootHelp(version: string): string {
6
+ const commands = INFRA_COMMANDS.map(
7
+ ({ standaloneName, summary }) => ` ${standaloneName.padEnd(8, ' ')} ${summary}`,
8
+ ).join('\n');
9
+ return [
10
+ `@ankhorage/infra v${version}`,
11
+ '',
12
+ 'Usage:',
13
+ ' ankhorage-infra <command> [project] [--environment <environment>]',
14
+ ` ankh ${INFRA_COMMAND_CATEGORY} <command> [project] [--environment <environment>]`,
15
+ '',
16
+ 'Commands:',
17
+ commands,
18
+ '',
19
+ 'Safety:',
20
+ ' local is the only implicit environment; destroy always requires --environment and --confirm.',
21
+ '',
22
+ ].join('\n');
23
+ }
@@ -0,0 +1,4 @@
1
+ /*** Render an invalid standalone Infra command without guessing intent. */
2
+ export function renderUnknownInfraCommand(value: string): string {
3
+ return [`Unknown infra command: ${value}`, '', 'Run ankhorage-infra --help', ''].join('\n');
4
+ }
@@ -0,0 +1,51 @@
1
+ import type {
2
+ InfraCommandContext,
3
+ InfraCommandRunResult,
4
+ InfraCommandServices,
5
+ RunInfraCommandImpl,
6
+ } from '../types/infraCli.js';
7
+ import { createDefaultInfraCommandContext } from './createDefaultInfraCommandContext.js';
8
+ import { findInfraCommand } from './findInfraCommand.js';
9
+ import { renderInfraRootHelp } from './renderInfraRootHelp.js';
10
+ import { renderUnknownInfraCommand } from './renderUnknownInfraCommand.js';
11
+ import { runInfraCommandAsync } from './runInfraCommandAsync.js';
12
+
13
+ /*** Dispatch the standalone executable arguments through the canonical Infra command surface. */
14
+ export async function runInfraCliAsync(
15
+ argv: readonly string[],
16
+ options: InfraCliOptions = {},
17
+ ): Promise<InfraCommandRunResult> {
18
+ const context = options.context ?? createDefaultInfraCommandContext();
19
+ const runCommand = options.runCommandImpl ?? runInfraCommandAsync;
20
+ const [firstToken, ...restTokens] = argv;
21
+ if (firstToken === undefined || isHelpToken(firstToken)) {
22
+ context.writeStdout(renderInfraRootHelp(context.version));
23
+ return { exitCode: 0 };
24
+ }
25
+ if (isVersionToken(firstToken)) {
26
+ context.writeStdout(`${context.version}\n`);
27
+ return { exitCode: 0 };
28
+ }
29
+ const command = findInfraCommand(firstToken);
30
+ if (command === null) {
31
+ context.writeStderr(renderUnknownInfraCommand(firstToken));
32
+ return { exitCode: 1 };
33
+ }
34
+ return runCommand({ argv: restTokens, command, context }, { services: options.services });
35
+ }
36
+
37
+ interface InfraCliOptions {
38
+ readonly context?: InfraCommandContext;
39
+ readonly runCommandImpl?: RunInfraCommandImpl;
40
+ readonly services?: Partial<InfraCommandServices>;
41
+ }
42
+
43
+ /*** Recognize standalone help tokens. */
44
+ function isHelpToken(value: string): boolean {
45
+ return value === '--help' || value === '-h' || value === 'help';
46
+ }
47
+
48
+ /*** Recognize standalone version tokens. */
49
+ function isVersionToken(value: string): boolean {
50
+ return value === '--version' || value === '-v' || value === 'version';
51
+ }
@@ -0,0 +1,114 @@
1
+ import { APP_ENVIRONMENT_IDS } from '@ankhorage/contracts/environments';
2
+
3
+ import { INFRA_COMMAND_CATEGORY } from '../constants.js';
4
+ import { createInfraCommandServices } from '../features/environment-lifecycle/composition/createInfraCommandServices.js';
5
+ import type {
6
+ InfraCommandDefinition,
7
+ InfraCommandInvocation,
8
+ InfraCommandRunResult,
9
+ ParsedInfraArguments,
10
+ RunInfraCommandOptions,
11
+ } from '../types/infraCli.js';
12
+
13
+ /*** Run one standalone or provider-backed Infra command through the shared typed lifecycle. */
14
+ export async function runInfraCommandAsync(
15
+ request: InfraCommandInvocation,
16
+ options: RunInfraCommandOptions = {},
17
+ ): Promise<InfraCommandRunResult> {
18
+ const services = createInfraCommandServices(options.services);
19
+ try {
20
+ const parsed = parseCommandArguments(request.command, request.argv);
21
+ if (parsed === null) {
22
+ request.context.writeStdout(renderCommandHelp(request.command));
23
+ return { exitCode: 0 };
24
+ }
25
+ return await request.command.run({ context: request.context, arguments: parsed }, services);
26
+ } catch (error) {
27
+ request.context.writeStderr(
28
+ `Infra ${request.command.standaloneName} failed: ${getErrorMessage(error)}\n`,
29
+ );
30
+ return { exitCode: 1 };
31
+ }
32
+ }
33
+
34
+ /*** Parse the common project, environment, output and destruction options. */
35
+ function parseCommandArguments(
36
+ commandDefinition: InfraCommandDefinition,
37
+ argv: readonly string[],
38
+ ): ParsedInfraArguments | null {
39
+ if (argv.length === 1 && isHelpToken(argv.at(0))) return null;
40
+ let projectId: string | undefined;
41
+ let environment: ParsedInfraArguments['environment'];
42
+ let format: ParsedInfraArguments['format'] = 'human';
43
+ let confirmation: string | undefined;
44
+ const deleteResources: string[] = [];
45
+ for (let index = 0; index < argv.length; index += 1) {
46
+ const token = argv.at(index);
47
+ if (token === '--environment') {
48
+ environment = parseEnvironment(readOptionValue(argv, ++index, token));
49
+ } else if (token === '--format') {
50
+ format = parseFormat(readOptionValue(argv, ++index, token));
51
+ } else if (token === '--confirm') {
52
+ confirmation = readOptionValue(argv, ++index, token);
53
+ } else if (token === '--delete-resource') {
54
+ deleteResources.push(readOptionValue(argv, ++index, token));
55
+ } else if (token?.startsWith('-') === true) {
56
+ throw new Error(`Unknown Infra ${commandDefinition.standaloneName} option: ${token}`);
57
+ } else if (projectId === undefined && token !== undefined) {
58
+ projectId = token;
59
+ } else {
60
+ throw new Error(
61
+ `Infra ${commandDefinition.standaloneName} accepts at most one project argument.`,
62
+ );
63
+ }
64
+ }
65
+ if (format === 'env' && commandDefinition.standaloneName !== 'outputs') {
66
+ throw new Error('--format env is supported only by Infra outputs.');
67
+ }
68
+ if (commandDefinition.standaloneName === 'destroy' && environment === undefined) {
69
+ throw new Error('Infra destroy requires --environment <local|preview|production>.');
70
+ }
71
+ return { projectId, environment, format, confirmation, deleteResources };
72
+ }
73
+
74
+ /*** Parse one environment identifier against the canonical closed set. */
75
+ function parseEnvironment(value: string): ParsedInfraArguments['environment'] {
76
+ const environment = APP_ENVIRONMENT_IDS.find((candidate) => candidate === value);
77
+ if (environment === undefined) throw new Error(`Unknown Infra environment: ${value}.`);
78
+ return environment;
79
+ }
80
+
81
+ /*** Parse the supported command output formats. */
82
+ function parseFormat(value: string): ParsedInfraArguments['format'] {
83
+ if (value === 'human' || value === 'json' || value === 'env') return value;
84
+ throw new Error(`Unknown Infra output format: ${value}.`);
85
+ }
86
+
87
+ /*** Read one required CLI option value. */
88
+ function readOptionValue(argv: readonly string[], index: number, option: string): string {
89
+ const value = argv.at(index);
90
+ if (value === undefined || value.startsWith('-')) throw new Error(`${option} requires a value.`);
91
+ return value;
92
+ }
93
+
94
+ /*** Render command-specific standalone and provider usage. */
95
+ function renderCommandHelp(commandDefinition: InfraCommandDefinition): string {
96
+ return [
97
+ commandDefinition.summary,
98
+ '',
99
+ 'Usage:',
100
+ ` ankhorage-infra ${commandDefinition.standaloneName} [project] [--environment <environment>]`,
101
+ ` ankh ${INFRA_COMMAND_CATEGORY} ${commandDefinition.path.join(' ')} [project] [--environment <environment>]`,
102
+ '',
103
+ ].join('\n');
104
+ }
105
+
106
+ /*** Normalize arbitrary command failures for the CLI boundary. */
107
+ function getErrorMessage(error: unknown): string {
108
+ return error instanceof Error ? error.message : String(error);
109
+ }
110
+
111
+ /*** Recognize the command-local help tokens. */
112
+ function isHelpToken(value: string | undefined): boolean {
113
+ return value === '--help' || value === '-h' || value === 'help';
114
+ }
@@ -0,0 +1,64 @@
1
+ import type { AppEnvironmentId } from '@ankhorage/contracts/environments';
2
+ import type { InfraEnvironmentSpec, InfraManifest } from '@ankhorage/contracts/infra';
3
+
4
+ import type {
5
+ InfraCommandRunRequest,
6
+ InfraCommandServices,
7
+ PreparedInfraCommandOperation,
8
+ } from '../../types/infraCli.js';
9
+
10
+ /*** Resolve one command's project, desired environment, stored ownership and adapter dependencies. */
11
+ export async function prepareInfraCommandOperationAsync(
12
+ request: InfraCommandRunRequest,
13
+ services: InfraCommandServices,
14
+ useStoredDesired = false,
15
+ ): Promise<PreparedInfraCommandOperation> {
16
+ const project = await services.resolveProject({
17
+ cwd: request.context.cwd,
18
+ ...(request.arguments.projectId === undefined
19
+ ? {}
20
+ : { projectId: request.arguments.projectId }),
21
+ });
22
+ const environment = request.arguments.environment ?? 'local';
23
+ const state = await services.readState(project.projectPath, environment);
24
+ const currentDesired = environmentDesired(project.manifest.infra, environment);
25
+ const desired = useStoredDesired && state !== null ? state.desired : currentDesired;
26
+ if (desired === undefined) {
27
+ throw new Error(`Infra environment "${environment}" is not configured.`);
28
+ }
29
+ const manifest = replaceEnvironment(project.manifest.infra, environment, desired);
30
+ return {
31
+ project,
32
+ state,
33
+ desired,
34
+ operation: {
35
+ projectId: project.projectId,
36
+ manifest,
37
+ ...(request.arguments.environment === undefined ? {} : { environment }),
38
+ ...(state === null ? {} : { previous: state.ledger, previousDesired: state.desired }),
39
+ },
40
+ dependencies: services.createDependencies(request.context),
41
+ };
42
+ }
43
+
44
+ /*** Select one exact environment specification from the canonical manifest. */
45
+ function environmentDesired(
46
+ manifest: InfraManifest,
47
+ environment: AppEnvironmentId,
48
+ ): InfraEnvironmentSpec | undefined {
49
+ if (environment === 'local') return manifest.environments.local;
50
+ if (environment === 'preview') return manifest.environments.preview;
51
+ return manifest.environments.production;
52
+ }
53
+
54
+ /*** Replace one environment while preserving the rest of the canonical manifest. */
55
+ function replaceEnvironment(
56
+ manifest: InfraManifest,
57
+ environment: AppEnvironmentId,
58
+ desired: InfraEnvironmentSpec,
59
+ ): InfraManifest {
60
+ return {
61
+ ...manifest,
62
+ environments: { ...manifest.environments, [environment]: desired },
63
+ };
64
+ }
@@ -0,0 +1,24 @@
1
+ import type { InfraDiagnostic, InfraResult } from '@ankhorage/contracts/infra';
2
+
3
+ import type { InfraCommandContext } from '../../types/infraCli.js';
4
+
5
+ /*** Emit diagnostics and narrow a provider-neutral result before command rendering continues. */
6
+ export function requireInfraSuccess<T>(
7
+ result: InfraResult<T>,
8
+ context: InfraCommandContext,
9
+ ): asserts result is Extract<InfraResult<T>, { readonly ok: true }> {
10
+ writeDiagnostics(context, result.diagnostics);
11
+ if (!result.ok) throw new Error(result.diagnostics.map(({ message }) => message).join(' '));
12
+ }
13
+
14
+ /*** Render diagnostics to the matching process channel without provider-specific formatting. */
15
+ function writeDiagnostics(
16
+ context: InfraCommandContext,
17
+ diagnostics: readonly InfraDiagnostic[],
18
+ ): void {
19
+ for (const diagnostic of diagnostics) {
20
+ const line = `${diagnostic.severity}: ${diagnostic.code}: ${diagnostic.message}\n`;
21
+ if (diagnostic.severity === 'info') context.writeStdout(line);
22
+ else context.writeStderr(line);
23
+ }
24
+ }
@@ -0,0 +1,22 @@
1
+ import type { InfraDestroyRequest, InfraLedger } from '@ankhorage/contracts/infra';
2
+
3
+ /*** Convert explicit owned-resource selectors into the canonical persistent deletion policy. */
4
+ export function resolveInfraPersistence(
5
+ ledger: InfraLedger | undefined,
6
+ resourceSelectors: readonly string[],
7
+ ): InfraDestroyRequest['persistence'] {
8
+ if (resourceSelectors.length === 0) return { policy: 'retain' };
9
+ if (ledger === undefined) {
10
+ throw new Error('Persistent deletion requires stored Infra ownership state.');
11
+ }
12
+ const confirmedResources = resourceSelectors.map((selector) => {
13
+ const resource = ledger.resources.find(
14
+ ({ identity }) => `${identity.adapter}:${identity.resourceId}` === selector,
15
+ );
16
+ if (!resource?.persistent) {
17
+ throw new Error(`Persistent resource is not owned by this environment: ${selector}`);
18
+ }
19
+ return resource.identity;
20
+ });
21
+ return { policy: 'delete', confirmedResources };
22
+ }
@@ -0,0 +1,24 @@
1
+ import type { InfraOutput } from '@ankhorage/contracts/infra';
2
+
3
+ import type { InfraCommandContext } from '../../types/infraCli.js';
4
+
5
+ /*** Print public environment-variable outputs while keeping secret values as references. */
6
+ export function writeInfraEnvironmentOutputs(
7
+ context: InfraCommandContext,
8
+ outputs: readonly InfraOutput[],
9
+ ): void {
10
+ for (const output of outputs) {
11
+ if (output.visibility === 'public' && output.environmentVariable !== undefined) {
12
+ context.writeStdout(`${output.environmentVariable}=${quoteEnvironmentValue(output.value)}\n`);
13
+ } else if (output.visibility === 'secret') {
14
+ context.writeStderr(
15
+ `Secret output ${output.owner.adapter}/${output.owner.resourceId}/${output.name} remains a reference and was not printed.\n`,
16
+ );
17
+ }
18
+ }
19
+ }
20
+
21
+ /*** Quote one scalar value for portable shell environment consumption. */
22
+ function quoteEnvironmentValue(value: string | number | boolean): string {
23
+ return `'${String(value).replaceAll("'", "'\\''")}'`;
24
+ }
@@ -0,0 +1,11 @@
1
+ import type { InfraCommandContext, ParsedInfraArguments } from '../../types/infraCli.js';
2
+
3
+ /*** Render one serializable command result in the requested human or compact JSON form. */
4
+ export function writeInfraStructured(
5
+ context: InfraCommandContext,
6
+ format: ParsedInfraArguments['format'],
7
+ value: unknown,
8
+ ): void {
9
+ if (format === 'json') context.writeStdout(`${JSON.stringify(value)}\n`);
10
+ else context.writeStdout(`${JSON.stringify(value, null, 2)}\n`);
11
+ }