@geekmidas/cli 10.0.0-alpha.65 → 10.0.0-alpha.67

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 (229) hide show
  1. package/README.md +123 -177
  2. package/dist/{HostingerProvider-x9gQTAGZ.mjs → HostingerProvider-D85ayzTi.mjs} +4 -4
  3. package/dist/HostingerProvider-D85ayzTi.mjs.map +1 -0
  4. package/dist/{HostingerProvider-Dlmbfass.cjs → HostingerProvider-dxkwynSs.cjs} +4 -4
  5. package/dist/HostingerProvider-dxkwynSs.cjs.map +1 -0
  6. package/dist/{LegacyStateStore-BGoo__sO.cjs → LegacyStateStore-BZiO9-Lw.cjs} +2 -2
  7. package/dist/{LegacyStateStore-BGoo__sO.cjs.map → LegacyStateStore-BZiO9-Lw.cjs.map} +1 -1
  8. package/dist/{LegacyStateStore-BUu1nQ5u.mjs → LegacyStateStore-C39UKwmf.mjs} +2 -2
  9. package/dist/{LegacyStateStore-BUu1nQ5u.mjs.map → LegacyStateStore-C39UKwmf.mjs.map} +1 -1
  10. package/dist/{LocalStateStore-93urXyQe.cjs → LocalStateStore-DHVsZLyF.cjs} +2 -2
  11. package/dist/{LocalStateStore-93urXyQe.cjs.map → LocalStateStore-DHVsZLyF.cjs.map} +1 -1
  12. package/dist/{LocalStateStore-BRhMQRuy.mjs → LocalStateStore-Dk3Wbvzk.mjs} +2 -2
  13. package/dist/{LocalStateStore-BRhMQRuy.mjs.map → LocalStateStore-Dk3Wbvzk.mjs.map} +1 -1
  14. package/dist/{OpenApiTsGenerator-BWuDRHe9.cjs → OpenApiTsGenerator-B2zrdyP4.cjs} +2 -2
  15. package/dist/{OpenApiTsGenerator-BWuDRHe9.cjs.map → OpenApiTsGenerator-B2zrdyP4.cjs.map} +1 -1
  16. package/dist/{OpenApiTsGenerator-C6v-IeHt.mjs → OpenApiTsGenerator-BmUAcR7d.mjs} +2 -2
  17. package/dist/{OpenApiTsGenerator-C6v-IeHt.mjs.map → OpenApiTsGenerator-BmUAcR7d.mjs.map} +1 -1
  18. package/dist/{Route53Provider-DVILBsvV.cjs → Route53Provider-Bllus2NR.cjs} +2 -2
  19. package/dist/Route53Provider-Bllus2NR.cjs.map +1 -0
  20. package/dist/{Route53Provider-Cvj40A8I.mjs → Route53Provider-QXxjkZO1.mjs} +2 -2
  21. package/dist/Route53Provider-QXxjkZO1.mjs.map +1 -0
  22. package/dist/{S3StateStore-F4dxw6kS.cjs → S3StateStore--4tYVMAL.cjs} +2 -2
  23. package/dist/{S3StateStore-F4dxw6kS.cjs.map → S3StateStore--4tYVMAL.cjs.map} +1 -1
  24. package/dist/{S3StateStore-pw1GhWwt.mjs → S3StateStore-B_ZF9eHt.mjs} +2 -2
  25. package/dist/{S3StateStore-pw1GhWwt.mjs.map → S3StateStore-B_ZF9eHt.mjs.map} +1 -1
  26. package/dist/{SSMStateStore-Bt9acuAF.cjs → SSMStateStore-ACZ8hRvZ.cjs} +2 -2
  27. package/dist/{SSMStateStore-Bt9acuAF.cjs.map → SSMStateStore-ACZ8hRvZ.cjs.map} +1 -1
  28. package/dist/{SSMStateStore-Dmj7zzFO.mjs → SSMStateStore-DjPuKqrm.mjs} +2 -2
  29. package/dist/{SSMStateStore-Dmj7zzFO.mjs.map → SSMStateStore-DjPuKqrm.mjs.map} +1 -1
  30. package/dist/{backup-provisioner-DIVCbfee.mjs → backup-provisioner-C8DnCmxK.mjs} +2 -2
  31. package/dist/backup-provisioner-C8DnCmxK.mjs.map +1 -0
  32. package/dist/{backup-provisioner-BmhIO_Yr.cjs → backup-provisioner-oDEsPj02.cjs} +2 -2
  33. package/dist/backup-provisioner-oDEsPj02.cjs.map +1 -0
  34. package/dist/{bundler-D_14JLZF.mjs → bundler-Bq3HaLOZ.mjs} +20 -5
  35. package/dist/bundler-Bq3HaLOZ.mjs.map +1 -0
  36. package/dist/{bundler-D6MlIfBT.cjs → bundler-pyLj-gS0.cjs} +20 -5
  37. package/dist/bundler-pyLj-gS0.cjs.map +1 -0
  38. package/dist/{cli-P56vvrDQ.mjs → cli-C2Tjbn27.mjs} +6 -5
  39. package/dist/cli-C2Tjbn27.mjs.map +1 -0
  40. package/dist/{cli-BfH1deAT.cjs → cli-DR7B2_fX.cjs} +6 -5
  41. package/dist/cli-DR7B2_fX.cjs.map +1 -0
  42. package/dist/{compose-391oEKj1.cjs → compose-5oNHAKNT.cjs} +137 -667
  43. package/dist/compose-5oNHAKNT.cjs.map +1 -0
  44. package/dist/{compose-DprE3ASm.mjs → compose-BjToENzG.mjs} +130 -569
  45. package/dist/compose-BjToENzG.mjs.map +1 -0
  46. package/dist/{config-V_X_BMpm.d.cts → config-4XFxX1al.d.cts} +3 -3
  47. package/dist/{config-BonvTW8p.d.mts.map → config-4XFxX1al.d.cts.map} +1 -1
  48. package/dist/{config-BonvTW8p.d.mts → config-UtKzhpFb.d.mts} +3 -3
  49. package/dist/{config-V_X_BMpm.d.cts.map → config-UtKzhpFb.d.mts.map} +1 -1
  50. package/dist/config.cjs +3 -3
  51. package/dist/config.d.cts +3 -3
  52. package/dist/config.d.mts +3 -3
  53. package/dist/config.mjs +3 -3
  54. package/dist/{credentials-Bzbg23n8.cjs → credentials-BVs7mrtw.cjs} +239 -3
  55. package/dist/credentials-BVs7mrtw.cjs.map +1 -0
  56. package/dist/{credentials-Dq1MnWQf.mjs → credentials-pAtB70k3.mjs} +223 -5
  57. package/dist/credentials-pAtB70k3.mjs.map +1 -0
  58. package/dist/databases-C2p5LGAp.cjs +419 -0
  59. package/dist/databases-C2p5LGAp.cjs.map +1 -0
  60. package/dist/databases-hUHTuwhx.mjs +346 -0
  61. package/dist/databases-hUHTuwhx.mjs.map +1 -0
  62. package/dist/deploy/public.cjs +37 -28
  63. package/dist/deploy/public.cjs.map +1 -1
  64. package/dist/deploy/public.d.cts +136 -19
  65. package/dist/deploy/public.d.cts.map +1 -1
  66. package/dist/deploy/public.d.mts +136 -19
  67. package/dist/deploy/public.d.mts.map +1 -1
  68. package/dist/deploy/public.mjs +11 -11
  69. package/dist/deploy-BucRfbvX.cjs +511 -0
  70. package/dist/deploy-BucRfbvX.cjs.map +1 -0
  71. package/dist/deploy-DRAwTG72.mjs +488 -0
  72. package/dist/deploy-DRAwTG72.mjs.map +1 -0
  73. package/dist/{discover-LMrqsWSU.mjs → discover-BFoJWKGD.mjs} +4 -2
  74. package/dist/discover-BFoJWKGD.mjs.map +1 -0
  75. package/dist/{discover-DHdECueV.cjs → discover-OEfZ9OkA.cjs} +4 -2
  76. package/dist/discover-OEfZ9OkA.cjs.map +1 -0
  77. package/dist/dokploy-DIt1IZl1.mjs +38 -0
  78. package/dist/dokploy-DIt1IZl1.mjs.map +1 -0
  79. package/dist/dokploy-m345Zx02.cjs +38 -0
  80. package/dist/dokploy-m345Zx02.cjs.map +1 -0
  81. package/dist/{encryption-DF_hgIpl.mjs → encryption-Ccbahik7.mjs} +3 -5
  82. package/dist/{encryption-DF_hgIpl.mjs.map → encryption-Ccbahik7.mjs.map} +1 -1
  83. package/dist/{encryption-B1wJwgae.cjs → encryption-rZ3BghXy.cjs} +5 -7
  84. package/dist/{encryption-B1wJwgae.cjs.map → encryption-rZ3BghXy.cjs.map} +1 -1
  85. package/dist/{deploy-Cy8igpQF.cjs → engine-Cx_dvx9q.cjs} +1491 -1260
  86. package/dist/engine-Cx_dvx9q.cjs.map +1 -0
  87. package/dist/{deploy-CZ5nlpsu.mjs → engine-Gs0abjuj.mjs} +1450 -1261
  88. package/dist/engine-Gs0abjuj.mjs.map +1 -0
  89. package/dist/{github-B0YYE98x.mjs → github-CJANTYqi.mjs} +3 -3
  90. package/dist/{github-B0YYE98x.mjs.map → github-CJANTYqi.mjs.map} +1 -1
  91. package/dist/{github-CYcmTdFs.cjs → github-CrcGFkfD.cjs} +7 -7
  92. package/dist/{github-CYcmTdFs.cjs.map → github-CrcGFkfD.cjs.map} +1 -1
  93. package/dist/{index-DPUAGJaK.d.cts → index-CyApaHVe.d.cts} +2 -2
  94. package/dist/{index-DPUAGJaK.d.cts.map → index-CyApaHVe.d.cts.map} +1 -1
  95. package/dist/{index-DwKD_8lt.d.mts → index-DD1FfUHh.d.mts} +2 -2
  96. package/dist/{index-DwKD_8lt.d.mts.map → index-DD1FfUHh.d.mts.map} +1 -1
  97. package/dist/index.cjs +285 -91
  98. package/dist/index.cjs.map +1 -1
  99. package/dist/index.mjs +258 -68
  100. package/dist/index.mjs.map +1 -1
  101. package/dist/{migrate-q4pPAXtO.cjs → migrate-CQdSpttI.cjs} +16 -16
  102. package/dist/{migrate-q4pPAXtO.cjs.map → migrate-CQdSpttI.cjs.map} +1 -1
  103. package/dist/{migrate-B2qL5wj4.mjs → migrate-DCVo5gLS.mjs} +6 -6
  104. package/dist/{migrate-B2qL5wj4.mjs.map → migrate-DCVo5gLS.mjs.map} +1 -1
  105. package/dist/openapi.cjs +1 -1
  106. package/dist/openapi.d.cts +1 -1
  107. package/dist/openapi.d.mts +1 -1
  108. package/dist/openapi.mjs +1 -1
  109. package/dist/provider-B3Sv_a74.cjs +173 -0
  110. package/dist/provider-B3Sv_a74.cjs.map +1 -0
  111. package/dist/provider-D7rQzzzf.mjs +138 -0
  112. package/dist/provider-D7rQzzzf.mjs.map +1 -0
  113. package/dist/{ready-bQfu9GES.mjs → ready-2s3-CndS.mjs} +3 -3
  114. package/dist/{ready-bQfu9GES.mjs.map → ready-2s3-CndS.mjs.map} +1 -1
  115. package/dist/{ready-brEhh68f.cjs → ready-B6uHr4sm.cjs} +3 -3
  116. package/dist/{ready-brEhh68f.cjs.map → ready-B6uHr4sm.cjs.map} +1 -1
  117. package/dist/reconcile/public.cjs +1 -1
  118. package/dist/reconcile/public.d.cts +1 -1
  119. package/dist/reconcile/public.d.mts +1 -1
  120. package/dist/reconcile/public.mjs +1 -1
  121. package/dist/{resolve-N_i4XNd-.cjs → resolve-BexmDcsN.cjs} +4 -4
  122. package/dist/{resolve-N_i4XNd-.cjs.map → resolve-BexmDcsN.cjs.map} +1 -1
  123. package/dist/{resolve-DLkIXTct.mjs → resolve-DhZgtvZe.mjs} +4 -4
  124. package/dist/{resolve-DLkIXTct.mjs.map → resolve-DhZgtvZe.mjs.map} +1 -1
  125. package/dist/rollback-BnY7KuG_.cjs +161 -0
  126. package/dist/rollback-BnY7KuG_.cjs.map +1 -0
  127. package/dist/rollback-m4Yeym5x.mjs +132 -0
  128. package/dist/rollback-m4Yeym5x.mjs.map +1 -0
  129. package/dist/run-BJLIerMM.mjs +133 -0
  130. package/dist/run-BJLIerMM.mjs.map +1 -0
  131. package/dist/run-fVZ-rLnc.cjs +174 -0
  132. package/dist/run-fVZ-rLnc.cjs.map +1 -0
  133. package/dist/{runtime-BnD7Nn96.d.cts → runtime-BRqFOvPM.d.cts} +2 -2
  134. package/dist/{runtime-BnD7Nn96.d.cts.map → runtime-BRqFOvPM.d.cts.map} +1 -1
  135. package/dist/{runtime-j-tmFL65.d.mts → runtime-CEk5n4VH.d.mts} +2 -2
  136. package/dist/{runtime-j-tmFL65.d.mts.map → runtime-CEk5n4VH.d.mts.map} +1 -1
  137. package/dist/sandbox/discover-worker.cjs +1 -1
  138. package/dist/sandbox/discover-worker.mjs +1 -1
  139. package/dist/sandbox/migrate-worker.cjs +61 -0
  140. package/dist/sandbox/migrate-worker.cjs.map +1 -0
  141. package/dist/sandbox/migrate-worker.d.cts +1 -0
  142. package/dist/sandbox/migrate-worker.d.mts +1 -0
  143. package/dist/sandbox/migrate-worker.mjs +62 -0
  144. package/dist/sandbox/migrate-worker.mjs.map +1 -0
  145. package/dist/{schemas-D2LCF689.mjs → schemas-Cfhtpdo0.mjs} +10 -2
  146. package/dist/{schemas-Ckm_aBnF.cjs.map → schemas-Cfhtpdo0.mjs.map} +1 -1
  147. package/dist/{schemas-Ckm_aBnF.cjs → schemas-RUlKHu27.cjs} +15 -1
  148. package/dist/{schemas-D2LCF689.mjs.map → schemas-RUlKHu27.cjs.map} +1 -1
  149. package/dist/{sniffer-BZ-OJO4Y.mjs → sniffer-BdFeLSmA.mjs} +97 -600
  150. package/dist/sniffer-BdFeLSmA.mjs.map +1 -0
  151. package/dist/{sniffer-BSwaL-dX.cjs → sniffer-D66HIvi9.cjs} +110 -674
  152. package/dist/sniffer-D66HIvi9.cjs.map +1 -0
  153. package/dist/{sst-B2HbrDR3.mjs → sst-DRi3H5TB.mjs} +3 -3
  154. package/dist/{sst-B2HbrDR3.mjs.map → sst-DRi3H5TB.mjs.map} +1 -1
  155. package/dist/{sst-DcfsVH6x.cjs → sst-hBrKouBy.cjs} +5 -5
  156. package/dist/{sst-DcfsVH6x.cjs.map → sst-hBrKouBy.cjs.map} +1 -1
  157. package/dist/{state-DF26e_lo.cjs → state-DgmM4EKq.cjs} +2787 -1890
  158. package/dist/state-DgmM4EKq.cjs.map +1 -0
  159. package/dist/{state-B8YwmUZU.mjs → state-DkUStoqJ.mjs} +2813 -2084
  160. package/dist/state-DkUStoqJ.mjs.map +1 -0
  161. package/dist/target/public.cjs +1 -1
  162. package/dist/target/public.d.cts +2 -2
  163. package/dist/target/public.d.mts +2 -2
  164. package/dist/target/public.mjs +1 -1
  165. package/dist/{terminal-CfbiYUbZ.mjs → terminal-C3cv-OQu.mjs} +5 -5
  166. package/dist/{terminal-CfbiYUbZ.mjs.map → terminal-C3cv-OQu.mjs.map} +1 -1
  167. package/dist/{terminal-Bs5E1oxm.cjs → terminal-DjzgLu6m.cjs} +12 -16
  168. package/dist/{terminal-Bs5E1oxm.cjs.map → terminal-DjzgLu6m.cjs.map} +1 -1
  169. package/dist/{types-ByMWkXKP.d.cts → types-CSw2w69a.d.mts} +68 -10
  170. package/dist/types-CSw2w69a.d.mts.map +1 -0
  171. package/dist/{types-BCzMWBb6.d.mts → types-D5WIxRDP.d.cts} +69 -9
  172. package/dist/types-D5WIxRDP.d.cts.map +1 -0
  173. package/dist/vitest.cjs +1 -1
  174. package/dist/vitest.mjs +1 -1
  175. package/dist/workspace/index.cjs +1 -1
  176. package/dist/workspace/index.d.cts +2 -2
  177. package/dist/workspace/index.d.mts +2 -2
  178. package/dist/workspace/index.mjs +1 -1
  179. package/dist/{workspace-C06_pW4g.mjs → workspace-Be6uBhlF.mjs} +10 -3
  180. package/dist/workspace-Be6uBhlF.mjs.map +1 -0
  181. package/dist/{workspace-BewAHZIo.cjs → workspace-ON-bqiJz.cjs} +10 -3
  182. package/dist/workspace-ON-bqiJz.cjs.map +1 -0
  183. package/package.json +13 -13
  184. package/dist/HostingerProvider-Dlmbfass.cjs.map +0 -1
  185. package/dist/HostingerProvider-x9gQTAGZ.mjs.map +0 -1
  186. package/dist/Route53Provider-Cvj40A8I.mjs.map +0 -1
  187. package/dist/Route53Provider-DVILBsvV.cjs.map +0 -1
  188. package/dist/backup-provisioner-BmhIO_Yr.cjs.map +0 -1
  189. package/dist/backup-provisioner-DIVCbfee.mjs.map +0 -1
  190. package/dist/bundler-D6MlIfBT.cjs.map +0 -1
  191. package/dist/bundler-D_14JLZF.mjs.map +0 -1
  192. package/dist/cli-BfH1deAT.cjs.map +0 -1
  193. package/dist/cli-P56vvrDQ.mjs.map +0 -1
  194. package/dist/compose-391oEKj1.cjs.map +0 -1
  195. package/dist/compose-DprE3ASm.mjs.map +0 -1
  196. package/dist/credentials-Bzbg23n8.cjs.map +0 -1
  197. package/dist/credentials-Dq1MnWQf.mjs.map +0 -1
  198. package/dist/deploy-9MBG_QLd.mjs +0 -137
  199. package/dist/deploy-9MBG_QLd.mjs.map +0 -1
  200. package/dist/deploy-B80idPUZ.cjs +0 -142
  201. package/dist/deploy-B80idPUZ.cjs.map +0 -1
  202. package/dist/deploy-CZ5nlpsu.mjs.map +0 -1
  203. package/dist/deploy-Cy8igpQF.cjs.map +0 -1
  204. package/dist/discover-DHdECueV.cjs.map +0 -1
  205. package/dist/discover-LMrqsWSU.mjs.map +0 -1
  206. package/dist/dokploy-BdtBePjp.mjs +0 -32
  207. package/dist/dokploy-BdtBePjp.mjs.map +0 -1
  208. package/dist/dokploy-iFY8MY-L.cjs +0 -32
  209. package/dist/dokploy-iFY8MY-L.cjs.map +0 -1
  210. package/dist/local-BdH4XN0E.cjs +0 -409
  211. package/dist/local-BdH4XN0E.cjs.map +0 -1
  212. package/dist/local-CWR4Y_kW.mjs +0 -350
  213. package/dist/local-CWR4Y_kW.mjs.map +0 -1
  214. package/dist/sniffer-BSwaL-dX.cjs.map +0 -1
  215. package/dist/sniffer-BZ-OJO4Y.mjs.map +0 -1
  216. package/dist/state-B8YwmUZU.mjs.map +0 -1
  217. package/dist/state-DF26e_lo.cjs.map +0 -1
  218. package/dist/storage-BzaUxmqe.mjs +0 -124
  219. package/dist/storage-BzaUxmqe.mjs.map +0 -1
  220. package/dist/storage-CSGoC3bK.cjs +0 -152
  221. package/dist/storage-CSGoC3bK.cjs.map +0 -1
  222. package/dist/store-CJF1Tqkq.cjs +0 -510
  223. package/dist/store-CJF1Tqkq.cjs.map +0 -1
  224. package/dist/store-CLiHnqOY.mjs +0 -415
  225. package/dist/store-CLiHnqOY.mjs.map +0 -1
  226. package/dist/types-BCzMWBb6.d.mts.map +0 -1
  227. package/dist/types-ByMWkXKP.d.cts.map +0 -1
  228. package/dist/workspace-BewAHZIo.cjs.map +0 -1
  229. package/dist/workspace-C06_pW4g.mjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env -S npx tsx
2
2
  import { n as __require, t as __exportAll } from "./rolldown-runtime-BhDjJH2R.mjs";
3
- import { C as loginCommand, E as whoamiCommand, S as keyFingerprint, g as createStateStore, n as sniffAppEnvironment, r as DokployApi, w as logoutCommand } from "./sniffer-BZ-OJO4Y.mjs";
4
- import { i as CommandFailed, o as DEFAULT_TIMEOUT_MS, t as LocalSandbox } from "./local-CWR4Y_kW.mjs";
5
- import { a as getDokployCredentials, o as getDokployRegistryId, s as getDokployToken } from "./credentials-Dq1MnWQf.mjs";
6
- import { l as withOwningTsconfigJsx, r as discover, u as ConstructGenerator } from "./discover-LMrqsWSU.mjs";
3
+ import { r as DEFAULT_TIMEOUT_MS, t as CommandFailed } from "./run-BJLIerMM.mjs";
4
+ import { c as getDokployCredentials, f as removeDokployCredentials, i as LocalSandbox, l as getDokployRegistryId, m as storeHostingerToken, p as storeDokployCredentials, s as getCredentialsPath, u as getDokployToken } from "./credentials-pAtB70k3.mjs";
5
+ import { l as withOwningTsconfigJsx, r as discover, u as ConstructGenerator } from "./discover-BFoJWKGD.mjs";
7
6
  import { t as appKey } from "./derive-B4vDpzgP.mjs";
8
- import { A as deployedProblems, D as InvalidStages, O as TEST_STAGE, c as getAppGkmConfig, j as stageProblems, n as allConstructGlobs, s as getAppBuildOrder } from "./workspace-C06_pW4g.mjs";
7
+ import { A as deployedProblems, D as InvalidStages, O as TEST_STAGE, c as getAppGkmConfig, j as stageProblems, n as allConstructGlobs, s as getAppBuildOrder } from "./workspace-Be6uBhlF.mjs";
9
8
  import { ConfigNotFound, NotABackendApp, NotInAnApp, loadAppConfig, loadConfig, loadWorkspaceConfig, loadWorkspaceSettings, parseModuleConfig } from "./config.mjs";
10
- import { a as withCustomSecret, i as toEmbeddableSecrets, n as maskPassword } from "./storage-BzaUxmqe.mjs";
11
- import { a as getKeyPath, i as FileSecretsStore, n as secretsStoreFor, s as projectKey, u as deployIdentity } from "./store-CLiHnqOY.mjs";
12
- import { D as constructGlobs, E as backendsOf$1, I as quoteIdentifier, J as providerOf, K as cacheBackendFor, M as forgetState, O as derivedContainers, P as postgresDatabaseNames, Q as fakeKey, R as pgClient, T as FAKE_ENV, Z as describeServices, _ as dockerCommand, at as loadEnvFiles, et as primaryPortKey, it as isPortAvailable, j as LOCAL_CA_PATH, k as reconcileWorkspace, nt as createEntryWrapper, ot as loadSecretsForApp, rt as findAvailablePort, st as prepareEntryCredentials, tt as createCredentialsPreload } from "./state-B8YwmUZU.mjs";
13
- import { i as telemetryFor, n as EndpointGenerator, r as runtimeFor } from "./OpenApiTsGenerator-C6v-IeHt.mjs";
9
+ import { $ as cacheBackendFor, A as derivedContainers, B as pgClient, D as FAKE_ENV, E as keyFingerprint, Ft as withCustomSecret, I as postgresDatabaseNames, Mt as maskPassword, N as LOCAL_CA_PATH, O as backendsOf$1, P as forgetState, Pt as toEmbeddableSecrets, R as quoteIdentifier, at as fakeKey, ct as createCredentialsPreload, dt as isPortAvailable, ft as loadEnvFiles, gt as secretsStoreFor, it as describeServices, j as reconcileWorkspace, k as constructGlobs, lt as createEntryWrapper, mt as prepareEntryCredentials, pt as loadSecretsForApp, st as primaryPortKey, tt as providerOf, ut as findAvailablePort, vt as FileSecretsStore, wt as deployIdentity, xt as projectKey, y as dockerCommand, yt as getKeyPath } from "./state-DkUStoqJ.mjs";
10
+ import { i as telemetryFor, n as EndpointGenerator, r as runtimeFor } from "./OpenApiTsGenerator-BmUAcR7d.mjs";
11
+ import { g as createStateStore, n as sniffAppEnvironment, o as DokployApi } from "./sniffer-BdFeLSmA.mjs";
14
12
  import { generateOpenApi, openapiCommand, resolveOpenApiConfig } from "./openapi.mjs";
15
13
  import { a as describeHolder, i as assignAppPorts, o as holderOf, r as appTag, s as withAppPorts, t as APP_TAG_ENV } from "./appPorts-C9z9Pzn9.mjs";
16
- import { a as writeTestHarness, c as driversFor, i as TEST_MANIFEST_ENV, n as TEST_READY_FILE, o as SubscriberGenerator, s as cacheBackendsIn, t as TEST_READY_ENV } from "./ready-bQfu9GES.mjs";
14
+ import { a as writeTestHarness, c as driversFor, i as TEST_MANIFEST_ENV, n as TEST_READY_FILE, o as SubscriberGenerator, s as cacheBackendsIn, t as TEST_READY_ENV } from "./ready-2s3-CndS.mjs";
17
15
  import { n as withCompute, r as withRoutes, t as manifestModule } from "./emit-C1e8qD08.mjs";
18
- import { t as deploy$1 } from "./deploy-9MBG_QLd.mjs";
19
- import { b as dockerCompose, t as composeTarget, v as composeProject, y as stackDir } from "./compose-DprE3ASm.mjs";
20
- import { t as LocalStateStore } from "./LocalStateStore-BRhMQRuy.mjs";
16
+ import { t as deploy$1 } from "./deploy-DRAwTG72.mjs";
17
+ import { a as dockerCompose, i as stackDir, r as composeProject, t as composeTarget } from "./compose-BjToENzG.mjs";
18
+ import { t as LocalStateStore } from "./LocalStateStore-Dk3Wbvzk.mjs";
21
19
  import { a as getExecCommand, c as validateProjectName, i as findWorkspaceRoot, n as detectPackageManager$1, o as getInstallCommand, r as findWorkspacePackages, s as getRunCommand, t as checkDirectoryExists } from "./utils-D_fxUqvU.mjs";
22
20
  import { createRequire } from "node:module";
23
21
  import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
24
22
  import { Command } from "commander";
23
+ import { stdin, stdout } from "node:process";
24
+ import * as readline from "node:readline/promises";
25
25
  import { existsSync, linkSync, mkdirSync, readFileSync, readdirSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
26
26
  import { chmod, mkdir, readFile, rm, writeFile } from "node:fs/promises";
27
27
  import { homedir } from "node:os";
@@ -46,7 +46,192 @@ import { Function } from "@geekmidas/constructs/functions";
46
46
  import { Queue } from "@geekmidas/constructs/queue";
47
47
  import { Topic } from "@geekmidas/constructs/topic";
48
48
  //#region package.json
49
- var version = "10.0.0-alpha.65";
49
+ var version = "10.0.0-alpha.67";
50
+ //#endregion
51
+ //#region src/prompt.ts
52
+ /**
53
+ * Asking the person at the terminal.
54
+ *
55
+ * CLI layer only: a command's action may prompt, nothing it calls may. A
56
+ * library call (`deploy()`) that needs something it was not given raises a
57
+ * named error instead, and the command decides whether to ask.
58
+ */
59
+ /** A prompt was needed with no terminal to ask at. */
60
+ var PromptNeedsTerminal = class extends Error {
61
+ question;
62
+ instead;
63
+ constructor(question, instead) {
64
+ super(`Interactive input required. ${instead}`);
65
+ this.question = question;
66
+ this.instead = instead;
67
+ this.name = "PromptNeedsTerminal";
68
+ }
69
+ };
70
+ /** Whether there is a person at a terminal to ask. */
71
+ function canPrompt() {
72
+ return process.stdin.isTTY === true;
73
+ }
74
+ /**
75
+ * Ask `message` and resolve with the line typed — without echoing it when
76
+ * `hidden`. Ctrl+C at a hidden prompt exits, as it would anywhere else in a
77
+ * terminal program: raw mode has taken the signal away from the shell.
78
+ */
79
+ async function prompt(message, options) {
80
+ if (!canPrompt()) throw new PromptNeedsTerminal(message, options.instead);
81
+ if (options.hidden) {
82
+ process.stdout.write(message);
83
+ return new Promise((resolve, reject) => {
84
+ let value = "";
85
+ const cleanup = () => {
86
+ process.stdin.setRawMode(false);
87
+ process.stdin.pause();
88
+ process.stdin.removeListener("data", onData);
89
+ process.stdin.removeListener("error", onError);
90
+ };
91
+ const onError = (err) => {
92
+ cleanup();
93
+ reject(err);
94
+ };
95
+ const onData = (char) => {
96
+ const c = char.toString();
97
+ if (c === "\n" || c === "\r") {
98
+ cleanup();
99
+ process.stdout.write("\n");
100
+ resolve(value);
101
+ } else if (c === "") {
102
+ cleanup();
103
+ process.stdout.write("\n");
104
+ process.exit(1);
105
+ } else if (c === "" || c === "\b") {
106
+ if (value.length > 0) value = value.slice(0, -1);
107
+ } else value += c;
108
+ };
109
+ process.stdin.setRawMode(true);
110
+ process.stdin.resume();
111
+ process.stdin.on("data", onData);
112
+ process.stdin.on("error", onError);
113
+ });
114
+ }
115
+ const rl = readline.createInterface({
116
+ input: stdin,
117
+ output: stdout
118
+ });
119
+ try {
120
+ return await rl.question(message);
121
+ } finally {
122
+ rl.close();
123
+ }
124
+ }
125
+ //#endregion
126
+ //#region src/auth/index.ts
127
+ const logger$8 = console;
128
+ /**
129
+ * Validate Dokploy token by making a test API call
130
+ */
131
+ async function validateDokployToken(endpoint, token) {
132
+ const { DokployApi } = await import("./sniffer-BdFeLSmA.mjs").then((n) => n.c);
133
+ return new DokployApi({
134
+ baseUrl: endpoint,
135
+ token
136
+ }).validateToken();
137
+ }
138
+ /** What answers a login prompt without a terminal. */
139
+ const LOGIN_INSTEAD = "Please provide --token option.";
140
+ /**
141
+ * Login to a service
142
+ */
143
+ async function loginCommand(options) {
144
+ const { provider, token: providedToken, endpoint: providedEndpoint } = options;
145
+ if (provider === "dokploy") {
146
+ logger$8.log("\n🔐 Logging in to Dokploy...\n");
147
+ let endpoint = providedEndpoint;
148
+ if (!endpoint) endpoint = await prompt("Dokploy URL (e.g., https://dokploy.example.com): ", { instead: LOGIN_INSTEAD });
149
+ endpoint = endpoint.replace(/\/$/, "");
150
+ try {
151
+ new URL(endpoint);
152
+ } catch {
153
+ logger$8.error("Invalid URL format");
154
+ process.exit(1);
155
+ }
156
+ let token = providedToken;
157
+ if (!token) {
158
+ logger$8.log(`\nGenerate a token at: ${endpoint}/settings/profile\n`);
159
+ token = await prompt("API Token: ", {
160
+ hidden: true,
161
+ instead: LOGIN_INSTEAD
162
+ });
163
+ }
164
+ if (!token) {
165
+ logger$8.error("Token is required");
166
+ process.exit(1);
167
+ }
168
+ logger$8.log("\nValidating credentials...");
169
+ if (!await validateDokployToken(endpoint, token)) {
170
+ logger$8.error("\n✗ Invalid credentials. Please check your token and try again.");
171
+ process.exit(1);
172
+ }
173
+ await storeDokployCredentials(token, endpoint);
174
+ logger$8.log("\n✓ Successfully logged in to Dokploy!");
175
+ logger$8.log(` Endpoint: ${endpoint}`);
176
+ logger$8.log(` Credentials stored in: ${getCredentialsPath()}`);
177
+ logger$8.log("\nYou can now use deploy commands without setting DOKPLOY_API_TOKEN.");
178
+ }
179
+ if (provider === "hostinger") {
180
+ logger$8.log("\n🔐 Logging in to Hostinger...\n");
181
+ let token = providedToken;
182
+ if (!token) {
183
+ logger$8.log("\nGenerate a token at: https://hpanel.hostinger.com/profile/api\n");
184
+ token = await prompt("API Token: ", {
185
+ hidden: true,
186
+ instead: LOGIN_INSTEAD
187
+ });
188
+ }
189
+ if (!token) {
190
+ logger$8.error("Token is required");
191
+ process.exit(1);
192
+ }
193
+ await storeHostingerToken(token);
194
+ logger$8.log("\n✓ Hostinger token stored.");
195
+ logger$8.log(` Credentials stored in: ${getCredentialsPath()}`);
196
+ logger$8.log(" Not validated here: every DNS endpoint is scoped to a domain, so the\n first deploy that touches DNS is where a bad token reports itself.");
197
+ logger$8.log("\nYou can now use it as a DNS provider without setting HOSTINGER_API_TOKEN.");
198
+ }
199
+ }
200
+ /**
201
+ * Logout from a service
202
+ */
203
+ async function logoutCommand(options) {
204
+ const { provider = "dokploy" } = options;
205
+ if (provider === "all") {
206
+ if (await removeDokployCredentials()) logger$8.log("\n✓ Logged out from all services");
207
+ else logger$8.log("\nNo stored credentials found");
208
+ return;
209
+ }
210
+ if (provider === "dokploy") {
211
+ if (await removeDokployCredentials()) logger$8.log("\n✓ Logged out from Dokploy");
212
+ else logger$8.log("\nNo Dokploy credentials found");
213
+ }
214
+ }
215
+ /**
216
+ * Show current login status
217
+ */
218
+ async function whoamiCommand() {
219
+ logger$8.log("\n📋 Current credentials:\n");
220
+ const dokploy = await getDokployCredentials();
221
+ if (dokploy) {
222
+ logger$8.log(" Dokploy:");
223
+ logger$8.log(` Endpoint: ${dokploy.endpoint}`);
224
+ logger$8.log(` Token: ${maskToken(dokploy.token)}`);
225
+ } else logger$8.log(" Dokploy: Not logged in");
226
+ logger$8.log(`\n Credentials file: ${getCredentialsPath()}`);
227
+ }
228
+ /**
229
+ * Mask a token for display
230
+ */
231
+ function maskToken(token) {
232
+ if (token.length <= 8) return "****";
233
+ return `${token.slice(0, 4)}...${token.slice(-4)}`;
234
+ }
50
235
  //#endregion
51
236
  //#region src/trust/index.ts
52
237
  /**
@@ -1850,9 +2035,9 @@ async function workspaceDevCommand(configured, options) {
1850
2035
  for (const { id, port } of fakes) logger$5.log(`🎭 ${id} fake: http://localhost:${port}`);
1851
2036
  logger$5.log(options.migrate || options.seed ? "🗄️ Migrating the databases" : "🗄️ Checking for pending migrations");
1852
2037
  if (options.migrate || options.seed) {
1853
- const { prepareDevDatabases } = await import("./migrate-B2qL5wj4.mjs");
2038
+ const { prepareDevDatabases } = await import("./migrate-DCVo5gLS.mjs");
1854
2039
  await prepareDevDatabases(workspace, reconciled.env, { seed: !!options.seed });
1855
- } else await import("./migrate-B2qL5wj4.mjs").then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2040
+ } else await import("./migrate-DCVo5gLS.mjs").then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
1856
2041
  logger$5.log(`⚠️ Could not check for pending migrations: ${error instanceof Error ? error.message : String(error)}`);
1857
2042
  });
1858
2043
  const appUrls = {};
@@ -3232,7 +3417,7 @@ async function buildApp(input) {
3232
3417
  if (production?.bundle && !input.skipBundle) {
3233
3418
  const outputDir = join(appRoot, ".gkm", "server");
3234
3419
  const entryPoint = await writeSurfaceServer(outputDir, production);
3235
- const { bundleServer } = await import("./bundler-D_14JLZF.mjs");
3420
+ const { bundleServer } = await import("./bundler-Bq3HaLOZ.mjs");
3236
3421
  await bundleServer({
3237
3422
  entryPoint,
3238
3423
  outputDir: join(outputDir, "dist"),
@@ -3370,7 +3555,7 @@ async function buildForTarget(target, context, appRoot, workspaceRoot, endpointG
3370
3555
  let masterKey;
3371
3556
  if (context.production?.bundle && !skipBundle) {
3372
3557
  logger$4.log(`\n📦 Bundling production server...`);
3373
- const { bundleServer } = await import("./bundler-D_14JLZF.mjs");
3558
+ const { bundleServer } = await import("./bundler-Bq3HaLOZ.mjs");
3374
3559
  const allConstructs = [
3375
3560
  ...endpoints.map((e) => e.construct),
3376
3561
  ...functions.map((f) => f.construct),
@@ -5065,25 +5250,25 @@ function loadPackageJson() {
5065
5250
  * Run: pnpm --filter @geekmidas/cli sync-versions
5066
5251
  */
5067
5252
  const GEEKMIDAS_VERSIONS = {
5068
- "@geekmidas/audit": "~10.0.0-alpha.65",
5069
- "@geekmidas/auth": "~10.0.0-alpha.65",
5070
- "@geekmidas/cache": "~10.0.0-alpha.65",
5071
- "@geekmidas/client": "~10.0.0-alpha.65",
5072
- "@geekmidas/cloud": "~10.0.0-alpha.65",
5073
- "@geekmidas/constructs": "~10.0.0-alpha.65",
5074
- "@geekmidas/db": "~10.0.0-alpha.65",
5075
- "@geekmidas/emailkit": "~10.0.0-alpha.65",
5076
- "@geekmidas/envkit": "~10.0.0-alpha.65",
5077
- "@geekmidas/errors": "~10.0.0-alpha.65",
5078
- "@geekmidas/events": "~10.0.0-alpha.65",
5079
- "@geekmidas/logger": "~10.0.0-alpha.65",
5080
- "@geekmidas/manifest": "~10.0.0-alpha.65",
5081
- "@geekmidas/rate-limit": "~10.0.0-alpha.65",
5082
- "@geekmidas/schema": "~10.0.0-alpha.65",
5083
- "@geekmidas/services": "~10.0.0-alpha.65",
5084
- "@geekmidas/storage": "~10.0.0-alpha.65",
5085
- "@geekmidas/telescope": "~10.0.0-alpha.65",
5086
- "@geekmidas/testkit": "~10.0.0-alpha.65",
5253
+ "@geekmidas/audit": "~10.0.0-alpha.67",
5254
+ "@geekmidas/auth": "~10.0.0-alpha.67",
5255
+ "@geekmidas/cache": "~10.0.0-alpha.67",
5256
+ "@geekmidas/client": "~10.0.0-alpha.67",
5257
+ "@geekmidas/cloud": "~10.0.0-alpha.67",
5258
+ "@geekmidas/constructs": "~10.0.0-alpha.67",
5259
+ "@geekmidas/db": "~10.0.0-alpha.67",
5260
+ "@geekmidas/emailkit": "~10.0.0-alpha.67",
5261
+ "@geekmidas/envkit": "~10.0.0-alpha.67",
5262
+ "@geekmidas/errors": "~10.0.0-alpha.67",
5263
+ "@geekmidas/events": "~10.0.0-alpha.67",
5264
+ "@geekmidas/logger": "~10.0.0-alpha.67",
5265
+ "@geekmidas/manifest": "~10.0.0-alpha.67",
5266
+ "@geekmidas/rate-limit": "~10.0.0-alpha.67",
5267
+ "@geekmidas/schema": "~10.0.0-alpha.67",
5268
+ "@geekmidas/services": "~10.0.0-alpha.67",
5269
+ "@geekmidas/storage": "~10.0.0-alpha.67",
5270
+ "@geekmidas/telescope": "~10.0.0-alpha.67",
5271
+ "@geekmidas/testkit": "~10.0.0-alpha.67",
5087
5272
  "@geekmidas/cli": `~${loadPackageJson().version}`
5088
5273
  };
5089
5274
  //#endregion
@@ -10846,8 +11031,8 @@ function testDatabases(reconciled) {
10846
11031
  * starts without the reference data the app needs.
10847
11032
  */
10848
11033
  async function migrateTestStage(workspace, env) {
10849
- const { migrateAndSeed } = await import("./migrate-B2qL5wj4.mjs");
10850
- const { discover } = await import("./discover-LMrqsWSU.mjs").then((n) => n.i);
11034
+ const { migrateAndSeed } = await import("./migrate-DCVo5gLS.mjs");
11035
+ const { discover } = await import("./discover-BFoJWKGD.mjs").then((n) => n.i);
10851
11036
  const sources = {};
10852
11037
  const manifest = await discover({
10853
11038
  patterns: constructGlobs(workspace),
@@ -11277,7 +11462,7 @@ program.command("migrate").description("Apply each database construct's migratio
11277
11462
  try {
11278
11463
  const globalOptions = program.opts();
11279
11464
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11280
- const { migrateCommand } = await import("./migrate-B2qL5wj4.mjs");
11465
+ const { migrateCommand } = await import("./migrate-DCVo5gLS.mjs");
11281
11466
  await migrateCommand({
11282
11467
  ...options,
11283
11468
  ...construct ? { construct } : {}
@@ -11291,7 +11476,7 @@ program.command("seed").description("Migrate, then run each database construct's
11291
11476
  try {
11292
11477
  const globalOptions = program.opts();
11293
11478
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11294
- const { seedCommand } = await import("./migrate-B2qL5wj4.mjs");
11479
+ const { seedCommand } = await import("./migrate-DCVo5gLS.mjs");
11295
11480
  await seedCommand({
11296
11481
  ...options,
11297
11482
  ...construct ? { construct } : {}
@@ -11305,7 +11490,7 @@ program.command("migration").description("Write a construct's next migration: an
11305
11490
  try {
11306
11491
  const globalOptions = program.opts();
11307
11492
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11308
- const { migrationCommand } = await import("./migrate-B2qL5wj4.mjs");
11493
+ const { migrationCommand } = await import("./migrate-DCVo5gLS.mjs");
11309
11494
  await migrationCommand({
11310
11495
  construct,
11311
11496
  ...name ? { name } : {}
@@ -11340,7 +11525,7 @@ program.command("openapi").description("Generate OpenAPI specification from endp
11340
11525
  process.exit(1);
11341
11526
  }
11342
11527
  });
11343
- program.command("docker").description("Generate Docker deployment files").option("--build", "Build Docker image after generating files").option("--push", "Push image to registry after building").option("--tag <tag>", "Image tag", "latest").option("--registry <registry>", "Container registry URL").option("--slim", "Use slim Dockerfile (assumes pre-built bundle exists)").option("--turbo", "Use turbo prune for monorepo optimization").option("--turbo-package <name>", "Package name for turbo prune").action(async (options) => {
11528
+ program.command("docker").description("Generate Docker deployment files").option("--build", "Build Docker image after generating files").option("--push", "Push image to registry after building").option("--tag <tag>", "Image tag", "latest").option("--registry <registry>", "Container registry URL").action(async (options) => {
11344
11529
  try {
11345
11530
  const globalOptions = program.opts();
11346
11531
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
@@ -11360,30 +11545,16 @@ program.command("compose").description("Run the workspace's APIs and sites for a
11360
11545
  process.exit(1);
11361
11546
  }
11362
11547
  });
11363
- program.command("prepack").description("Generate Docker files for production deployment").option("--build", "Build Docker image after generating files").option("--push", "Push image to registry after building").option("--tag <tag>", "Image tag", "latest").option("--registry <registry>", "Container registry URL").option("--slim", "Build locally first, then use slim Dockerfile").option("--skip-bundle", "Skip bundling step (only with --slim)").option("--turbo", "Use turbo prune for monorepo optimization").option("--turbo-package <name>", "Package name for turbo prune").action(async (options) => {
11548
+ program.command("prepack").description("Generate Docker files for production deployment").option("--build", "Build Docker image after generating files").option("--push", "Push image to registry after building").option("--tag <tag>", "Image tag", "latest").option("--registry <registry>", "Container registry URL").action(async (options) => {
11364
11549
  try {
11365
11550
  const globalOptions = program.opts();
11366
11551
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11367
- if (options.slim) await buildCommand({
11368
- provider: "server",
11369
- production: true,
11370
- skipBundle: options.skipBundle
11371
- });
11372
11552
  await dockerCommand({
11373
11553
  build: options.build,
11374
11554
  push: options.push,
11375
11555
  tag: options.tag,
11376
- registry: options.registry,
11377
- slim: options.slim,
11378
- turbo: options.turbo,
11379
- turboPackage: options.turboPackage
11556
+ registry: options.registry
11380
11557
  });
11381
- if (options.slim) {}
11382
- if (options.build) {
11383
- const tag = options.tag ?? "latest";
11384
- const registry = options.registry;
11385
- registry ? `${registry}${tag}` : `${tag}`;
11386
- }
11387
11558
  } catch (error) {
11388
11559
  console.error(formatError(error));
11389
11560
  process.exit(1);
@@ -11413,7 +11584,7 @@ program.command("encryption:rotate").description("Add a new current key to an En
11413
11584
  try {
11414
11585
  const globalOptions = program.opts();
11415
11586
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11416
- const { encryptionRotateCommand } = await import("./encryption-DF_hgIpl.mjs");
11587
+ const { encryptionRotateCommand } = await import("./encryption-Ccbahik7.mjs");
11417
11588
  await encryptionRotateCommand(construct, options);
11418
11589
  } catch (error) {
11419
11590
  console.error(formatError(error));
@@ -11424,7 +11595,7 @@ program.command("encryption:retire").description("Remove an old key from an Encr
11424
11595
  try {
11425
11596
  const globalOptions = program.opts();
11426
11597
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11427
- const { encryptionRetireCommand } = await import("./encryption-DF_hgIpl.mjs");
11598
+ const { encryptionRetireCommand } = await import("./encryption-Ccbahik7.mjs");
11428
11599
  await encryptionRetireCommand(construct, key, options);
11429
11600
  } catch (error) {
11430
11601
  console.error(formatError(error));
@@ -11467,7 +11638,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
11467
11638
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11468
11639
  const { loadWorkspaceConfig } = await import("./config.mjs");
11469
11640
  const { reconcileMissingSecrets } = await import("./reconcile--I7V4Klj.mjs");
11470
- const { secretsStoreFor } = await import("./store-CLiHnqOY.mjs").then((n) => n.r);
11641
+ const { secretsStoreFor } = await import("./state-DkUStoqJ.mjs").then((n) => n._t);
11471
11642
  const { workspace } = await loadWorkspaceConfig();
11472
11643
  const stage = options.stage ?? workspace.stages.local;
11473
11644
  const store = await secretsStoreFor(workspace, stage);
@@ -11476,7 +11647,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
11476
11647
  console.error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
11477
11648
  process.exit(1);
11478
11649
  }
11479
- const { derivedContainers } = await import("./state-B8YwmUZU.mjs").then((n) => n.A);
11650
+ const { derivedContainers } = await import("./state-DkUStoqJ.mjs").then((n) => n.M);
11480
11651
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers(workspace, stage));
11481
11652
  if (!result) {
11482
11653
  console.log(`\n✓ Secrets for stage "${stage}" are up-to-date`);
@@ -11490,8 +11661,8 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
11490
11661
  process.exit(1);
11491
11662
  }
11492
11663
  });
11493
- program.command("deploy").description("Deploy a stage through its target").option("--target <name>", "Deploy target: dokploy, compose, sst, or one named in deploy.targets (default: deploy.default)").option("--provider <provider>", "[DEPRECATED] Use --target instead").requiredOption("--stage <stage>", "Deployment stage (e.g., production, staging)").option("--tag <tag>", "Image tag (default: stage-timestamp; compose: the commit). Compose pulls a given tag").option("--skip-push", "Skip pushing image to registry").option("--skip-build", "Skip build step (use existing build)").option("--json", "Write events as JSON lines instead of progress; never prompts").option("--dry-run", "Show what would be created or reused; change, build and push nothing").action(async (options) => {
11494
- const { deployCli } = await import("./cli-P56vvrDQ.mjs");
11664
+ program.command("deploy").description("Deploy a stage through its target").option("--target <name>", "Deploy target: dokploy, compose, sst, or one named in deploy.targets (default: deploy.default)").option("--provider <provider>", "[DEPRECATED] Use --target instead").requiredOption("--stage <stage>", "Deployment stage (e.g., production, staging)").option("--tag <tag>", "Image tag (default: stage-timestamp; compose: the commit). Compose pulls a given tag").option("--skip-push", "Skip pushing image to registry").option("--skip-build", "Skip build step (use existing build)").option("--json", "Write events as JSON lines instead of progress; never prompts").option("--dry-run", "Show what would be created or reused; change, build and push nothing").option("--atomic", "If the release fails, roll back every app it released, not only the failed ones").action(async (options) => {
11665
+ const { deployCli } = await import("./cli-C2Tjbn27.mjs");
11495
11666
  const globalOptions = program.opts();
11496
11667
  const code = await deployCli({
11497
11668
  cwd: resolve(globalOptions.cwd ?? process.cwd()),
@@ -11500,10 +11671,29 @@ program.command("deploy").description("Deploy a stage through its target").optio
11500
11671
  stage: options.stage,
11501
11672
  ...options.tag ? { tag: options.tag } : {},
11502
11673
  ...options.json ? { json: true } : {},
11503
- ...options.dryRun ? { dryRun: true } : {}
11674
+ ...options.dryRun ? { dryRun: true } : {},
11675
+ ...options.atomic ? { atomic: true } : {}
11504
11676
  });
11505
11677
  if (code !== 0) process.exit(code);
11506
11678
  });
11679
+ program.command("deploy:rollback").description("Put a stage's app back on its previous release (Dokploy): one app with --app, every app with --atomic").requiredOption("--stage <stage>", "A deployed stage").option("--app <app>", "The app to roll back").option("--atomic", "Roll back every app that has an earlier release").action(async (options) => {
11680
+ try {
11681
+ const { rollbackStage } = await import("./rollback-m4Yeym5x.mjs").then((n) => n.a);
11682
+ const { terminalCredentials } = await import("./terminal-C3cv-OQu.mjs");
11683
+ const globalOptions = program.opts();
11684
+ await rollbackStage({
11685
+ cwd: resolve(globalOptions.cwd ?? process.cwd()),
11686
+ stage: options.stage,
11687
+ ...options.app ? { app: options.app } : {},
11688
+ ...options.atomic ? { atomic: true } : {},
11689
+ credentials: terminalCredentials(),
11690
+ log: (line) => console.log(line)
11691
+ });
11692
+ } catch (error) {
11693
+ console.error(formatError(error));
11694
+ process.exit(1);
11695
+ }
11696
+ });
11507
11697
  program.command("deploy:init").description("Initialize Dokploy deployment (create project and application)").option("--endpoint <url>", "Dokploy server URL (uses stored credentials if logged in)").requiredOption("--project <name>", "Project name (creates if not exists)").requiredOption("--app <name>", "Application name").option("--project-id <id>", "Use existing project ID instead of creating").option("--registry-id <id>", "Configure registry for the application").action(async (options) => {
11508
11698
  try {
11509
11699
  const globalOptions = program.opts();
@@ -11524,7 +11714,7 @@ program.command("deploy:github").description("Let GitHub Actions deploy a stage:
11524
11714
  try {
11525
11715
  const globalOptions = program.opts();
11526
11716
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11527
- const { deployGithubCommand } = await import("./github-B0YYE98x.mjs");
11717
+ const { deployGithubCommand } = await import("./github-CJANTYqi.mjs");
11528
11718
  await deployGithubCommand(options);
11529
11719
  } catch (error) {
11530
11720
  console.error(formatError(error));
@@ -11659,6 +11849,6 @@ program.command("upgrade").description("Upgrade @geekmidas/cli (with --all, ever
11659
11849
  });
11660
11850
  program.parse();
11661
11851
  //#endregion
11662
- export { formatError as i, slug as n, stamp as r, generateFullstackCustomSecrets as t };
11852
+ export { validateDokployToken as a, formatError as i, slug as n, canPrompt as o, stamp as r, prompt as s, generateFullstackCustomSecrets as t };
11663
11853
 
11664
11854
  //# sourceMappingURL=index.mjs.map