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

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 (208) hide show
  1. package/README.md +14 -0
  2. package/dist/{HostingerProvider-Dlmbfass.cjs → HostingerProvider-BznqRC2S.cjs} +3 -3
  3. package/dist/HostingerProvider-BznqRC2S.cjs.map +1 -0
  4. package/dist/{HostingerProvider-x9gQTAGZ.mjs → HostingerProvider-CY_VpVud.mjs} +3 -3
  5. package/dist/HostingerProvider-CY_VpVud.mjs.map +1 -0
  6. package/dist/{LegacyStateStore-BGoo__sO.cjs → LegacyStateStore-BFcTT2QL.cjs} +2 -2
  7. package/dist/{LegacyStateStore-BGoo__sO.cjs.map → LegacyStateStore-BFcTT2QL.cjs.map} +1 -1
  8. package/dist/{LegacyStateStore-BUu1nQ5u.mjs → LegacyStateStore-CFheFo62.mjs} +2 -2
  9. package/dist/{LegacyStateStore-BUu1nQ5u.mjs.map → LegacyStateStore-CFheFo62.mjs.map} +1 -1
  10. package/dist/{LocalStateStore-93urXyQe.cjs → LocalStateStore-BVUexSvu.cjs} +2 -2
  11. package/dist/{LocalStateStore-93urXyQe.cjs.map → LocalStateStore-BVUexSvu.cjs.map} +1 -1
  12. package/dist/{LocalStateStore-BRhMQRuy.mjs → LocalStateStore-Bm3x9oOg.mjs} +2 -2
  13. package/dist/{LocalStateStore-BRhMQRuy.mjs.map → LocalStateStore-Bm3x9oOg.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-pw1GhWwt.mjs → S3StateStore-BFHuctWM.mjs} +2 -2
  23. package/dist/{S3StateStore-pw1GhWwt.mjs.map → S3StateStore-BFHuctWM.mjs.map} +1 -1
  24. package/dist/{S3StateStore-F4dxw6kS.cjs → S3StateStore-CoXBhILd.cjs} +2 -2
  25. package/dist/{S3StateStore-F4dxw6kS.cjs.map → S3StateStore-CoXBhILd.cjs.map} +1 -1
  26. package/dist/{SSMStateStore-Bt9acuAF.cjs → SSMStateStore-BqCA9TP2.cjs} +2 -2
  27. package/dist/{SSMStateStore-Bt9acuAF.cjs.map → SSMStateStore-BqCA9TP2.cjs.map} +1 -1
  28. package/dist/{SSMStateStore-Dmj7zzFO.mjs → SSMStateStore-C1kvHScY.mjs} +2 -2
  29. package/dist/{SSMStateStore-Dmj7zzFO.mjs.map → SSMStateStore-C1kvHScY.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-Dvaiud0h.mjs} +4 -4
  35. package/dist/{bundler-D_14JLZF.mjs.map → bundler-Dvaiud0h.mjs.map} +1 -1
  36. package/dist/{bundler-D6MlIfBT.cjs → bundler-orRqUJNZ.cjs} +4 -4
  37. package/dist/{bundler-D6MlIfBT.cjs.map → bundler-orRqUJNZ.cjs.map} +1 -1
  38. package/dist/{cli-P56vvrDQ.mjs → cli-CfHm0AO7.mjs} +5 -4
  39. package/dist/cli-CfHm0AO7.mjs.map +1 -0
  40. package/dist/{cli-BfH1deAT.cjs → cli-D1JkkOwg.cjs} +5 -4
  41. package/dist/cli-D1JkkOwg.cjs.map +1 -0
  42. package/dist/{compose-DprE3ASm.mjs → compose-CNQL8BnO.mjs} +18 -482
  43. package/dist/compose-CNQL8BnO.mjs.map +1 -0
  44. package/dist/{compose-391oEKj1.cjs → compose-jrLy7KGO.cjs} +16 -571
  45. package/dist/compose-jrLy7KGO.cjs.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/databases-C2p5LGAp.cjs +419 -0
  55. package/dist/databases-C2p5LGAp.cjs.map +1 -0
  56. package/dist/databases-hUHTuwhx.mjs +346 -0
  57. package/dist/databases-hUHTuwhx.mjs.map +1 -0
  58. package/dist/deploy/public.cjs +26 -17
  59. package/dist/deploy/public.d.cts +136 -19
  60. package/dist/deploy/public.d.cts.map +1 -1
  61. package/dist/deploy/public.d.mts +136 -19
  62. package/dist/deploy/public.d.mts.map +1 -1
  63. package/dist/deploy/public.mjs +8 -8
  64. package/dist/deploy-B7aJi_Ah.cjs +511 -0
  65. package/dist/deploy-B7aJi_Ah.cjs.map +1 -0
  66. package/dist/deploy-DWn7YfIc.mjs +488 -0
  67. package/dist/deploy-DWn7YfIc.mjs.map +1 -0
  68. package/dist/{discover-LMrqsWSU.mjs → discover-BFoJWKGD.mjs} +4 -2
  69. package/dist/discover-BFoJWKGD.mjs.map +1 -0
  70. package/dist/{discover-DHdECueV.cjs → discover-OEfZ9OkA.cjs} +4 -2
  71. package/dist/discover-OEfZ9OkA.cjs.map +1 -0
  72. package/dist/dokploy-B4LcYG1E.cjs +38 -0
  73. package/dist/dokploy-B4LcYG1E.cjs.map +1 -0
  74. package/dist/dokploy-DalwLML5.mjs +38 -0
  75. package/dist/dokploy-DalwLML5.mjs.map +1 -0
  76. package/dist/{encryption-B1wJwgae.cjs → encryption-3KlGS1sl.cjs} +5 -7
  77. package/dist/{encryption-B1wJwgae.cjs.map → encryption-3KlGS1sl.cjs.map} +1 -1
  78. package/dist/{encryption-DF_hgIpl.mjs → encryption-CPfENwWO.mjs} +3 -5
  79. package/dist/{encryption-DF_hgIpl.mjs.map → encryption-CPfENwWO.mjs.map} +1 -1
  80. package/dist/{deploy-CZ5nlpsu.mjs → engine-CunvOG3s.mjs} +2100 -1733
  81. package/dist/engine-CunvOG3s.mjs.map +1 -0
  82. package/dist/{deploy-Cy8igpQF.cjs → engine-DR6KurWX.cjs} +2136 -1727
  83. package/dist/engine-DR6KurWX.cjs.map +1 -0
  84. package/dist/{github-CYcmTdFs.cjs → github-BJ5gh9bw.cjs} +7 -7
  85. package/dist/{github-CYcmTdFs.cjs.map → github-BJ5gh9bw.cjs.map} +1 -1
  86. package/dist/{github-B0YYE98x.mjs → github-MXA9v7Ge.mjs} +3 -3
  87. package/dist/{github-B0YYE98x.mjs.map → github-MXA9v7Ge.mjs.map} +1 -1
  88. package/dist/{index-DwKD_8lt.d.mts → index-CyApaHVe.d.cts} +2 -2
  89. package/dist/{index-DPUAGJaK.d.cts.map → index-CyApaHVe.d.cts.map} +1 -1
  90. package/dist/{index-DPUAGJaK.d.cts → index-DD1FfUHh.d.mts} +2 -2
  91. package/dist/{index-DwKD_8lt.d.mts.map → index-DD1FfUHh.d.mts.map} +1 -1
  92. package/dist/index.cjs +276 -68
  93. package/dist/index.cjs.map +1 -1
  94. package/dist/index.mjs +254 -50
  95. package/dist/index.mjs.map +1 -1
  96. package/dist/{migrate-B2qL5wj4.mjs → migrate-BJBcm4sG.mjs} +6 -6
  97. package/dist/{migrate-B2qL5wj4.mjs.map → migrate-BJBcm4sG.mjs.map} +1 -1
  98. package/dist/{migrate-q4pPAXtO.cjs → migrate-CF4J4GQS.cjs} +16 -16
  99. package/dist/{migrate-q4pPAXtO.cjs.map → migrate-CF4J4GQS.cjs.map} +1 -1
  100. package/dist/openapi.cjs +1 -1
  101. package/dist/openapi.d.cts +1 -1
  102. package/dist/openapi.d.mts +1 -1
  103. package/dist/openapi.mjs +1 -1
  104. package/dist/provider-B3Sv_a74.cjs +173 -0
  105. package/dist/provider-B3Sv_a74.cjs.map +1 -0
  106. package/dist/provider-D7rQzzzf.mjs +138 -0
  107. package/dist/provider-D7rQzzzf.mjs.map +1 -0
  108. package/dist/{ready-bQfu9GES.mjs → ready-2s3-CndS.mjs} +3 -3
  109. package/dist/{ready-bQfu9GES.mjs.map → ready-2s3-CndS.mjs.map} +1 -1
  110. package/dist/{ready-brEhh68f.cjs → ready-B6uHr4sm.cjs} +3 -3
  111. package/dist/{ready-brEhh68f.cjs.map → ready-B6uHr4sm.cjs.map} +1 -1
  112. package/dist/reconcile/public.cjs +1 -1
  113. package/dist/reconcile/public.d.cts +1 -1
  114. package/dist/reconcile/public.d.mts +1 -1
  115. package/dist/reconcile/public.mjs +1 -1
  116. package/dist/{resolve-N_i4XNd-.cjs → resolve-CVmch0wI.cjs} +3 -3
  117. package/dist/{resolve-N_i4XNd-.cjs.map → resolve-CVmch0wI.cjs.map} +1 -1
  118. package/dist/{resolve-DLkIXTct.mjs → resolve-Db0tNlrW.mjs} +3 -3
  119. package/dist/{resolve-DLkIXTct.mjs.map → resolve-Db0tNlrW.mjs.map} +1 -1
  120. package/dist/rollback-DvAo4OKS.mjs +133 -0
  121. package/dist/rollback-DvAo4OKS.mjs.map +1 -0
  122. package/dist/rollback-DxJK84hy.cjs +162 -0
  123. package/dist/rollback-DxJK84hy.cjs.map +1 -0
  124. package/dist/{runtime-BnD7Nn96.d.cts → runtime-BRqFOvPM.d.cts} +2 -2
  125. package/dist/{runtime-BnD7Nn96.d.cts.map → runtime-BRqFOvPM.d.cts.map} +1 -1
  126. package/dist/{runtime-j-tmFL65.d.mts → runtime-CEk5n4VH.d.mts} +2 -2
  127. package/dist/{runtime-j-tmFL65.d.mts.map → runtime-CEk5n4VH.d.mts.map} +1 -1
  128. package/dist/sandbox/discover-worker.cjs +1 -1
  129. package/dist/sandbox/discover-worker.mjs +1 -1
  130. package/dist/sandbox/migrate-worker.cjs +61 -0
  131. package/dist/sandbox/migrate-worker.cjs.map +1 -0
  132. package/dist/sandbox/migrate-worker.d.cts +1 -0
  133. package/dist/sandbox/migrate-worker.d.mts +1 -0
  134. package/dist/sandbox/migrate-worker.mjs +62 -0
  135. package/dist/sandbox/migrate-worker.mjs.map +1 -0
  136. package/dist/{schemas-D2LCF689.mjs → schemas-Cfhtpdo0.mjs} +10 -2
  137. package/dist/{schemas-Ckm_aBnF.cjs.map → schemas-Cfhtpdo0.mjs.map} +1 -1
  138. package/dist/{schemas-Ckm_aBnF.cjs → schemas-RUlKHu27.cjs} +15 -1
  139. package/dist/{schemas-D2LCF689.mjs.map → schemas-RUlKHu27.cjs.map} +1 -1
  140. package/dist/{sniffer-BSwaL-dX.cjs → sniffer-5xmrkh2a.cjs} +112 -606
  141. package/dist/sniffer-5xmrkh2a.cjs.map +1 -0
  142. package/dist/{sniffer-BZ-OJO4Y.mjs → sniffer-BAQhLEsI.mjs} +95 -546
  143. package/dist/sniffer-BAQhLEsI.mjs.map +1 -0
  144. package/dist/{state-DF26e_lo.cjs → state-Y6ATakMX.cjs} +744 -20
  145. package/dist/state-Y6ATakMX.cjs.map +1 -0
  146. package/dist/{state-B8YwmUZU.mjs → state-uuYqnRVO.mjs} +605 -19
  147. package/dist/state-uuYqnRVO.mjs.map +1 -0
  148. package/dist/target/public.cjs +1 -1
  149. package/dist/target/public.d.cts +2 -2
  150. package/dist/target/public.d.mts +2 -2
  151. package/dist/target/public.mjs +1 -1
  152. package/dist/{terminal-Bs5E1oxm.cjs → terminal-CHy_MdjG.cjs} +11 -15
  153. package/dist/{terminal-Bs5E1oxm.cjs.map → terminal-CHy_MdjG.cjs.map} +1 -1
  154. package/dist/{terminal-CfbiYUbZ.mjs → terminal-DUhcZ1ND.mjs} +4 -4
  155. package/dist/{terminal-CfbiYUbZ.mjs.map → terminal-DUhcZ1ND.mjs.map} +1 -1
  156. package/dist/{types-ByMWkXKP.d.cts → types-CSw2w69a.d.mts} +68 -10
  157. package/dist/types-CSw2w69a.d.mts.map +1 -0
  158. package/dist/{types-BCzMWBb6.d.mts → types-D5WIxRDP.d.cts} +69 -9
  159. package/dist/types-D5WIxRDP.d.cts.map +1 -0
  160. package/dist/vitest.cjs +1 -1
  161. package/dist/vitest.mjs +1 -1
  162. package/dist/workspace/index.cjs +1 -1
  163. package/dist/workspace/index.d.cts +2 -2
  164. package/dist/workspace/index.d.mts +2 -2
  165. package/dist/workspace/index.mjs +1 -1
  166. package/dist/{workspace-C06_pW4g.mjs → workspace-Be6uBhlF.mjs} +10 -3
  167. package/dist/workspace-Be6uBhlF.mjs.map +1 -0
  168. package/dist/{workspace-BewAHZIo.cjs → workspace-ON-bqiJz.cjs} +10 -3
  169. package/dist/workspace-ON-bqiJz.cjs.map +1 -0
  170. package/package.json +13 -13
  171. package/dist/HostingerProvider-Dlmbfass.cjs.map +0 -1
  172. package/dist/HostingerProvider-x9gQTAGZ.mjs.map +0 -1
  173. package/dist/Route53Provider-Cvj40A8I.mjs.map +0 -1
  174. package/dist/Route53Provider-DVILBsvV.cjs.map +0 -1
  175. package/dist/backup-provisioner-BmhIO_Yr.cjs.map +0 -1
  176. package/dist/backup-provisioner-DIVCbfee.mjs.map +0 -1
  177. package/dist/cli-BfH1deAT.cjs.map +0 -1
  178. package/dist/cli-P56vvrDQ.mjs.map +0 -1
  179. package/dist/compose-391oEKj1.cjs.map +0 -1
  180. package/dist/compose-DprE3ASm.mjs.map +0 -1
  181. package/dist/deploy-9MBG_QLd.mjs +0 -137
  182. package/dist/deploy-9MBG_QLd.mjs.map +0 -1
  183. package/dist/deploy-B80idPUZ.cjs +0 -142
  184. package/dist/deploy-B80idPUZ.cjs.map +0 -1
  185. package/dist/deploy-CZ5nlpsu.mjs.map +0 -1
  186. package/dist/deploy-Cy8igpQF.cjs.map +0 -1
  187. package/dist/discover-DHdECueV.cjs.map +0 -1
  188. package/dist/discover-LMrqsWSU.mjs.map +0 -1
  189. package/dist/dokploy-BdtBePjp.mjs +0 -32
  190. package/dist/dokploy-BdtBePjp.mjs.map +0 -1
  191. package/dist/dokploy-iFY8MY-L.cjs +0 -32
  192. package/dist/dokploy-iFY8MY-L.cjs.map +0 -1
  193. package/dist/sniffer-BSwaL-dX.cjs.map +0 -1
  194. package/dist/sniffer-BZ-OJO4Y.mjs.map +0 -1
  195. package/dist/state-B8YwmUZU.mjs.map +0 -1
  196. package/dist/state-DF26e_lo.cjs.map +0 -1
  197. package/dist/storage-BzaUxmqe.mjs +0 -124
  198. package/dist/storage-BzaUxmqe.mjs.map +0 -1
  199. package/dist/storage-CSGoC3bK.cjs +0 -152
  200. package/dist/storage-CSGoC3bK.cjs.map +0 -1
  201. package/dist/store-CJF1Tqkq.cjs +0 -510
  202. package/dist/store-CJF1Tqkq.cjs.map +0 -1
  203. package/dist/store-CLiHnqOY.mjs +0 -415
  204. package/dist/store-CLiHnqOY.mjs.map +0 -1
  205. package/dist/types-BCzMWBb6.d.mts.map +0 -1
  206. package/dist/types-ByMWkXKP.d.cts.map +0 -1
  207. package/dist/workspace-BewAHZIo.cjs.map +0 -1
  208. package/dist/workspace-C06_pW4g.mjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,27 +1,28 @@
1
1
  #!/usr/bin/env -S npx tsx
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_rolldown_runtime = require("./rolldown-runtime-C0BPl7ul.cjs");
4
- const require_sniffer = require("./sniffer-BSwaL-dX.cjs");
5
4
  const require_local = require("./local-BdH4XN0E.cjs");
6
5
  const require_credentials = require("./credentials-Bzbg23n8.cjs");
7
- const require_discover = require("./discover-DHdECueV.cjs");
6
+ const require_discover = require("./discover-OEfZ9OkA.cjs");
8
7
  const require_derive = require("./derive-DAbo49sm.cjs");
9
- const require_workspace = require("./workspace-BewAHZIo.cjs");
8
+ const require_workspace = require("./workspace-ON-bqiJz.cjs");
10
9
  const require_config = require("./config.cjs");
11
- const require_storage = require("./storage-CSGoC3bK.cjs");
12
- const require_store = require("./store-CJF1Tqkq.cjs");
13
- const require_state = require("./state-DF26e_lo.cjs");
14
- const require_OpenApiTsGenerator = require("./OpenApiTsGenerator-BWuDRHe9.cjs");
10
+ const require_state = require("./state-Y6ATakMX.cjs");
11
+ const require_OpenApiTsGenerator = require("./OpenApiTsGenerator-B2zrdyP4.cjs");
12
+ const require_sniffer = require("./sniffer-5xmrkh2a.cjs");
15
13
  const require_openapi = require("./openapi.cjs");
16
14
  const require_appPorts = require("./appPorts-Cu79hJF6.cjs");
17
- const require_ready = require("./ready-brEhh68f.cjs");
15
+ const require_ready = require("./ready-B6uHr4sm.cjs");
18
16
  const require_emit = require("./emit-Dmc1nvdS.cjs");
19
- const require_deploy = require("./deploy-B80idPUZ.cjs");
20
- const require_compose = require("./compose-391oEKj1.cjs");
21
- const require_LocalStateStore = require("./LocalStateStore-93urXyQe.cjs");
17
+ const require_deploy = require("./deploy-B7aJi_Ah.cjs");
18
+ const require_compose = require("./compose-jrLy7KGO.cjs");
19
+ const require_LocalStateStore = require("./LocalStateStore-BVUexSvu.cjs");
22
20
  const require_utils = require("./utils-D2Nk1Nv2.cjs");
23
21
  let node_path = require("node:path");
24
22
  let commander = require("commander");
23
+ let node_process = require("node:process");
24
+ let node_readline_promises = require("node:readline/promises");
25
+ node_readline_promises = require_rolldown_runtime.__toESM(node_readline_promises, 1);
25
26
  let node_fs = require("node:fs");
26
27
  let node_fs_promises = require("node:fs/promises");
27
28
  let node_os = require("node:os");
@@ -51,7 +52,192 @@ let _geekmidas_constructs_functions = require("@geekmidas/constructs/functions")
51
52
  let _geekmidas_constructs_queue = require("@geekmidas/constructs/queue");
52
53
  let _geekmidas_constructs_topic = require("@geekmidas/constructs/topic");
53
54
  //#region package.json
54
- var version = "10.0.0-alpha.65";
55
+ var version = "10.0.0-alpha.66";
56
+ //#endregion
57
+ //#region src/prompt.ts
58
+ /**
59
+ * Asking the person at the terminal.
60
+ *
61
+ * CLI layer only: a command's action may prompt, nothing it calls may. A
62
+ * library call (`deploy()`) that needs something it was not given raises a
63
+ * named error instead, and the command decides whether to ask.
64
+ */
65
+ /** A prompt was needed with no terminal to ask at. */
66
+ var PromptNeedsTerminal = class extends Error {
67
+ question;
68
+ instead;
69
+ constructor(question, instead) {
70
+ super(`Interactive input required. ${instead}`);
71
+ this.question = question;
72
+ this.instead = instead;
73
+ this.name = "PromptNeedsTerminal";
74
+ }
75
+ };
76
+ /** Whether there is a person at a terminal to ask. */
77
+ function canPrompt() {
78
+ return process.stdin.isTTY === true;
79
+ }
80
+ /**
81
+ * Ask `message` and resolve with the line typed — without echoing it when
82
+ * `hidden`. Ctrl+C at a hidden prompt exits, as it would anywhere else in a
83
+ * terminal program: raw mode has taken the signal away from the shell.
84
+ */
85
+ async function prompt(message, options) {
86
+ if (!canPrompt()) throw new PromptNeedsTerminal(message, options.instead);
87
+ if (options.hidden) {
88
+ process.stdout.write(message);
89
+ return new Promise((resolve, reject) => {
90
+ let value = "";
91
+ const cleanup = () => {
92
+ process.stdin.setRawMode(false);
93
+ process.stdin.pause();
94
+ process.stdin.removeListener("data", onData);
95
+ process.stdin.removeListener("error", onError);
96
+ };
97
+ const onError = (err) => {
98
+ cleanup();
99
+ reject(err);
100
+ };
101
+ const onData = (char) => {
102
+ const c = char.toString();
103
+ if (c === "\n" || c === "\r") {
104
+ cleanup();
105
+ process.stdout.write("\n");
106
+ resolve(value);
107
+ } else if (c === "") {
108
+ cleanup();
109
+ process.stdout.write("\n");
110
+ process.exit(1);
111
+ } else if (c === "" || c === "\b") {
112
+ if (value.length > 0) value = value.slice(0, -1);
113
+ } else value += c;
114
+ };
115
+ process.stdin.setRawMode(true);
116
+ process.stdin.resume();
117
+ process.stdin.on("data", onData);
118
+ process.stdin.on("error", onError);
119
+ });
120
+ }
121
+ const rl = node_readline_promises.createInterface({
122
+ input: node_process.stdin,
123
+ output: node_process.stdout
124
+ });
125
+ try {
126
+ return await rl.question(message);
127
+ } finally {
128
+ rl.close();
129
+ }
130
+ }
131
+ //#endregion
132
+ //#region src/auth/index.ts
133
+ const logger$8 = console;
134
+ /**
135
+ * Validate Dokploy token by making a test API call
136
+ */
137
+ async function validateDokployToken(endpoint, token) {
138
+ const { DokployApi } = await Promise.resolve().then(() => require("./sniffer-5xmrkh2a.cjs")).then((n) => n.dokploy_api_exports);
139
+ return new DokployApi({
140
+ baseUrl: endpoint,
141
+ token
142
+ }).validateToken();
143
+ }
144
+ /** What answers a login prompt without a terminal. */
145
+ const LOGIN_INSTEAD = "Please provide --token option.";
146
+ /**
147
+ * Login to a service
148
+ */
149
+ async function loginCommand(options) {
150
+ const { provider, token: providedToken, endpoint: providedEndpoint } = options;
151
+ if (provider === "dokploy") {
152
+ logger$8.log("\n🔐 Logging in to Dokploy...\n");
153
+ let endpoint = providedEndpoint;
154
+ if (!endpoint) endpoint = await prompt("Dokploy URL (e.g., https://dokploy.example.com): ", { instead: LOGIN_INSTEAD });
155
+ endpoint = endpoint.replace(/\/$/, "");
156
+ try {
157
+ new URL(endpoint);
158
+ } catch {
159
+ logger$8.error("Invalid URL format");
160
+ process.exit(1);
161
+ }
162
+ let token = providedToken;
163
+ if (!token) {
164
+ logger$8.log(`\nGenerate a token at: ${endpoint}/settings/profile\n`);
165
+ token = await prompt("API Token: ", {
166
+ hidden: true,
167
+ instead: LOGIN_INSTEAD
168
+ });
169
+ }
170
+ if (!token) {
171
+ logger$8.error("Token is required");
172
+ process.exit(1);
173
+ }
174
+ logger$8.log("\nValidating credentials...");
175
+ if (!await validateDokployToken(endpoint, token)) {
176
+ logger$8.error("\n✗ Invalid credentials. Please check your token and try again.");
177
+ process.exit(1);
178
+ }
179
+ await require_credentials.storeDokployCredentials(token, endpoint);
180
+ logger$8.log("\n✓ Successfully logged in to Dokploy!");
181
+ logger$8.log(` Endpoint: ${endpoint}`);
182
+ logger$8.log(` Credentials stored in: ${require_credentials.getCredentialsPath()}`);
183
+ logger$8.log("\nYou can now use deploy commands without setting DOKPLOY_API_TOKEN.");
184
+ }
185
+ if (provider === "hostinger") {
186
+ logger$8.log("\n🔐 Logging in to Hostinger...\n");
187
+ let token = providedToken;
188
+ if (!token) {
189
+ logger$8.log("\nGenerate a token at: https://hpanel.hostinger.com/profile/api\n");
190
+ token = await prompt("API Token: ", {
191
+ hidden: true,
192
+ instead: LOGIN_INSTEAD
193
+ });
194
+ }
195
+ if (!token) {
196
+ logger$8.error("Token is required");
197
+ process.exit(1);
198
+ }
199
+ await require_credentials.storeHostingerToken(token);
200
+ logger$8.log("\n✓ Hostinger token stored.");
201
+ logger$8.log(` Credentials stored in: ${require_credentials.getCredentialsPath()}`);
202
+ 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.");
203
+ logger$8.log("\nYou can now use it as a DNS provider without setting HOSTINGER_API_TOKEN.");
204
+ }
205
+ }
206
+ /**
207
+ * Logout from a service
208
+ */
209
+ async function logoutCommand(options) {
210
+ const { provider = "dokploy" } = options;
211
+ if (provider === "all") {
212
+ if (await require_credentials.removeDokployCredentials()) logger$8.log("\n✓ Logged out from all services");
213
+ else logger$8.log("\nNo stored credentials found");
214
+ return;
215
+ }
216
+ if (provider === "dokploy") {
217
+ if (await require_credentials.removeDokployCredentials()) logger$8.log("\n✓ Logged out from Dokploy");
218
+ else logger$8.log("\nNo Dokploy credentials found");
219
+ }
220
+ }
221
+ /**
222
+ * Show current login status
223
+ */
224
+ async function whoamiCommand() {
225
+ logger$8.log("\n📋 Current credentials:\n");
226
+ const dokploy = await require_credentials.getDokployCredentials();
227
+ if (dokploy) {
228
+ logger$8.log(" Dokploy:");
229
+ logger$8.log(` Endpoint: ${dokploy.endpoint}`);
230
+ logger$8.log(` Token: ${maskToken(dokploy.token)}`);
231
+ } else logger$8.log(" Dokploy: Not logged in");
232
+ logger$8.log(`\n Credentials file: ${require_credentials.getCredentialsPath()}`);
233
+ }
234
+ /**
235
+ * Mask a token for display
236
+ */
237
+ function maskToken(token) {
238
+ if (token.length <= 8) return "****";
239
+ return `${token.slice(0, 4)}...${token.slice(-4)}`;
240
+ }
55
241
  //#endregion
56
242
  //#region src/trust/index.ts
57
243
  /**
@@ -1507,7 +1693,7 @@ async function devCommand(options) {
1507
1693
  let secretsJsonPath;
1508
1694
  let publicUrl;
1509
1695
  let manifest;
1510
- const appSecrets = await require_state.loadSecretsForApp(workspace ? await require_store.secretsStoreFor(workspace, config.stages.local) : new require_store.FileSecretsStore(secretsRoot), config.stages.local, workspaceAppName);
1696
+ const appSecrets = await require_state.loadSecretsForApp(workspace ? await require_state.secretsStoreFor(workspace, config.stages.local) : new require_state.FileSecretsStore(secretsRoot), config.stages.local, workspaceAppName);
1511
1697
  if (workspace) {
1512
1698
  const reconciled = await require_state.reconcileWorkspace(workspace, {
1513
1699
  stage: workspace.stages.local,
@@ -1795,8 +1981,8 @@ async function validateFrontendApps(workspace) {
1795
1981
  async function loadDevSecrets(workspace) {
1796
1982
  if (!workspace.secrets.enabled) return {};
1797
1983
  const stage = workspace.stages.local;
1798
- const secrets = await (await require_store.secretsStoreFor(workspace, stage)).read(stage);
1799
- if (secrets) return require_storage.toEmbeddableSecrets(secrets);
1984
+ const secrets = await (await require_state.secretsStoreFor(workspace, stage)).read(stage);
1985
+ if (secrets) return require_state.toEmbeddableSecrets(secrets);
1800
1986
  return {};
1801
1987
  }
1802
1988
  /**
@@ -1855,9 +2041,9 @@ async function workspaceDevCommand(configured, options) {
1855
2041
  for (const { id, port } of fakes) logger$5.log(`🎭 ${id} fake: http://localhost:${port}`);
1856
2042
  logger$5.log(options.migrate || options.seed ? "🗄️ Migrating the databases" : "🗄️ Checking for pending migrations");
1857
2043
  if (options.migrate || options.seed) {
1858
- const { prepareDevDatabases } = await Promise.resolve().then(() => require("./migrate-q4pPAXtO.cjs"));
2044
+ const { prepareDevDatabases } = await Promise.resolve().then(() => require("./migrate-CF4J4GQS.cjs"));
1859
2045
  await prepareDevDatabases(workspace, reconciled.env, { seed: !!options.seed });
1860
- } else await Promise.resolve().then(() => require("./migrate-q4pPAXtO.cjs")).then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2046
+ } else await Promise.resolve().then(() => require("./migrate-CF4J4GQS.cjs")).then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
1861
2047
  logger$5.log(`⚠️ Could not check for pending migrations: ${error instanceof Error ? error.message : String(error)}`);
1862
2048
  });
1863
2049
  const appUrls = {};
@@ -3237,7 +3423,7 @@ async function buildApp(input) {
3237
3423
  if (production?.bundle && !input.skipBundle) {
3238
3424
  const outputDir = (0, node_path.join)(appRoot, ".gkm", "server");
3239
3425
  const entryPoint = await writeSurfaceServer(outputDir, production);
3240
- const { bundleServer } = await Promise.resolve().then(() => require("./bundler-D6MlIfBT.cjs"));
3426
+ const { bundleServer } = await Promise.resolve().then(() => require("./bundler-orRqUJNZ.cjs"));
3241
3427
  await bundleServer({
3242
3428
  entryPoint,
3243
3429
  outputDir: (0, node_path.join)(outputDir, "dist"),
@@ -3375,7 +3561,7 @@ async function buildForTarget(target, context, appRoot, workspaceRoot, endpointG
3375
3561
  let masterKey;
3376
3562
  if (context.production?.bundle && !skipBundle) {
3377
3563
  logger$4.log(`\n📦 Bundling production server...`);
3378
- const { bundleServer } = await Promise.resolve().then(() => require("./bundler-D6MlIfBT.cjs"));
3564
+ const { bundleServer } = await Promise.resolve().then(() => require("./bundler-orRqUJNZ.cjs"));
3379
3565
  const allConstructs = [
3380
3566
  ...endpoints.map((e) => e.construct),
3381
3567
  ...functions.map((f) => f.construct),
@@ -3627,7 +3813,7 @@ async function composeCommand(options = {}, deps = {}) {
3627
3813
  const stage = options.stage ?? workspace.stages.local;
3628
3814
  if (options.down) {
3629
3815
  const ref = {
3630
- project: require_compose.composeProject(require_store.deployIdentity(workspace, stage)),
3816
+ project: require_compose.composeProject(require_state.deployIdentity(workspace, stage)),
3631
3817
  file: (0, node_path.join)(workspace.root, require_compose.stackDir(stage), "docker-compose.yml"),
3632
3818
  cwd: workspace.root
3633
3819
  };
@@ -5070,25 +5256,25 @@ function loadPackageJson() {
5070
5256
  * Run: pnpm --filter @geekmidas/cli sync-versions
5071
5257
  */
5072
5258
  const GEEKMIDAS_VERSIONS = {
5073
- "@geekmidas/audit": "~10.0.0-alpha.65",
5074
- "@geekmidas/auth": "~10.0.0-alpha.65",
5075
- "@geekmidas/cache": "~10.0.0-alpha.65",
5076
- "@geekmidas/client": "~10.0.0-alpha.65",
5077
- "@geekmidas/cloud": "~10.0.0-alpha.65",
5078
- "@geekmidas/constructs": "~10.0.0-alpha.65",
5079
- "@geekmidas/db": "~10.0.0-alpha.65",
5080
- "@geekmidas/emailkit": "~10.0.0-alpha.65",
5081
- "@geekmidas/envkit": "~10.0.0-alpha.65",
5082
- "@geekmidas/errors": "~10.0.0-alpha.65",
5083
- "@geekmidas/events": "~10.0.0-alpha.65",
5084
- "@geekmidas/logger": "~10.0.0-alpha.65",
5085
- "@geekmidas/manifest": "~10.0.0-alpha.65",
5086
- "@geekmidas/rate-limit": "~10.0.0-alpha.65",
5087
- "@geekmidas/schema": "~10.0.0-alpha.65",
5088
- "@geekmidas/services": "~10.0.0-alpha.65",
5089
- "@geekmidas/storage": "~10.0.0-alpha.65",
5090
- "@geekmidas/telescope": "~10.0.0-alpha.65",
5091
- "@geekmidas/testkit": "~10.0.0-alpha.65",
5259
+ "@geekmidas/audit": "~10.0.0-alpha.66",
5260
+ "@geekmidas/auth": "~10.0.0-alpha.66",
5261
+ "@geekmidas/cache": "~10.0.0-alpha.66",
5262
+ "@geekmidas/client": "~10.0.0-alpha.66",
5263
+ "@geekmidas/cloud": "~10.0.0-alpha.66",
5264
+ "@geekmidas/constructs": "~10.0.0-alpha.66",
5265
+ "@geekmidas/db": "~10.0.0-alpha.66",
5266
+ "@geekmidas/emailkit": "~10.0.0-alpha.66",
5267
+ "@geekmidas/envkit": "~10.0.0-alpha.66",
5268
+ "@geekmidas/errors": "~10.0.0-alpha.66",
5269
+ "@geekmidas/events": "~10.0.0-alpha.66",
5270
+ "@geekmidas/logger": "~10.0.0-alpha.66",
5271
+ "@geekmidas/manifest": "~10.0.0-alpha.66",
5272
+ "@geekmidas/rate-limit": "~10.0.0-alpha.66",
5273
+ "@geekmidas/schema": "~10.0.0-alpha.66",
5274
+ "@geekmidas/services": "~10.0.0-alpha.66",
5275
+ "@geekmidas/storage": "~10.0.0-alpha.66",
5276
+ "@geekmidas/telescope": "~10.0.0-alpha.66",
5277
+ "@geekmidas/testkit": "~10.0.0-alpha.66",
5092
5278
  "@geekmidas/cli": `~${loadPackageJson().version}`
5093
5279
  };
5094
5280
  //#endregion
@@ -5671,7 +5857,7 @@ function deploy(options) {
5671
5857
  role-to-assume: \${{ vars.AWS_ROLE_ARN }}
5672
5858
  aws-region: ${options.region}
5673
5859
  ` : "";
5674
- const keyDir = `~/.gkm/keys/${require_store.projectKey({ name: options.name })}`;
5860
+ const keyDir = `~/.gkm/keys/${require_state.projectKey({ name: options.name })}`;
5675
5861
  const stageSecrets = sst ? credentials : `
5676
5862
  # The stage's secrets are kept in the encrypted .gkm/secrets/<stage>.json,
5677
5863
  # and each environment holds its key as GKM_SECRETS_KEY. .gkm/ is
@@ -10008,11 +10194,11 @@ async function initCommand(projectName, options = {}) {
10008
10194
  }
10009
10195
  devSecrets.custom = customSecrets;
10010
10196
  const keys = {
10011
- key: require_store.projectKey({ name }),
10197
+ key: require_state.projectKey({ name }),
10012
10198
  legacy: [(0, node_path.basename)(targetDir)]
10013
10199
  };
10014
- await new require_store.FileSecretsStore(targetDir, keys).write(local, devSecrets);
10015
- const keyPath = require_store.getKeyPath(local, keys);
10200
+ await new require_state.FileSecretsStore(targetDir, keys).write(local, devSecrets);
10201
+ const keyPath = require_state.getKeyPath(local, keys);
10016
10202
  console.log(` Secrets: .gkm/secrets/${local}.json (encrypted)`);
10017
10203
  console.log(` Key: ${keyPath}\n`);
10018
10204
  if (!options.skipInstall) {
@@ -10247,9 +10433,9 @@ const logger$2 = console;
10247
10433
  */
10248
10434
  async function storeFor(stage) {
10249
10435
  try {
10250
- return await require_store.secretsStoreFor(await require_config.loadWorkspaceSettings(), stage);
10436
+ return await require_state.secretsStoreFor(await require_config.loadWorkspaceSettings(), stage);
10251
10437
  } catch (error) {
10252
- if (error instanceof require_config.ConfigNotFound) return new require_store.FileSecretsStore(process.cwd());
10438
+ if (error instanceof require_config.ConfigNotFound) return new require_state.FileSecretsStore(process.cwd());
10253
10439
  throw error;
10254
10440
  }
10255
10441
  }
@@ -10319,7 +10505,7 @@ async function secretsSetCommand(key, value, options) {
10319
10505
  logger$2.error(`Secrets not found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
10320
10506
  process.exit(1);
10321
10507
  }
10322
- await store.write(stage, require_storage.withCustomSecret(secrets, key, secretValue));
10508
+ await store.write(stage, require_state.withCustomSecret(secrets, key, secretValue));
10323
10509
  logger$2.log(`\n✓ Secret "${key}" set for stage "${stage}" (${store.name})`);
10324
10510
  }
10325
10511
  /**
@@ -10341,7 +10527,7 @@ async function secretsShowCommand(options) {
10341
10527
  logger$2.log(` host: ${creds.host}`);
10342
10528
  logger$2.log(` port: ${creds.port}`);
10343
10529
  logger$2.log(` username: ${creds.username}`);
10344
- logger$2.log(` password: ${reveal ? creds.password : require_storage.maskPassword(creds.password)}`);
10530
+ logger$2.log(` password: ${reveal ? creds.password : require_state.maskPassword(creds.password)}`);
10345
10531
  if (creds.database) logger$2.log(` database: ${creds.database}`);
10346
10532
  if (creds.bucket) logger$2.log(` bucket: ${creds.bucket}`);
10347
10533
  }
@@ -10351,7 +10537,7 @@ async function secretsShowCommand(options) {
10351
10537
  if (secrets.urls.STORAGE_ENDPOINT) logger$2.log(` STORAGE_ENDPOINT: ${secrets.urls.STORAGE_ENDPOINT}`);
10352
10538
  if (Object.keys(secrets.custom).length > 0) {
10353
10539
  logger$2.log("\nCustom Secrets:");
10354
- for (const [key, value] of Object.entries(secrets.custom)) logger$2.log(` ${key}: ${reveal ? value : require_storage.maskPassword(value)}`);
10540
+ for (const [key, value] of Object.entries(secrets.custom)) logger$2.log(` ${key}: ${reveal ? value : require_state.maskPassword(value)}`);
10355
10541
  }
10356
10542
  if (!reveal) logger$2.log("\nUse --reveal to show actual values");
10357
10543
  }
@@ -10431,7 +10617,7 @@ async function secretsImportCommand(file, options) {
10431
10617
  function maskUrl(url) {
10432
10618
  try {
10433
10619
  const parsed = new URL(url);
10434
- if (parsed.password) parsed.password = require_storage.maskPassword(parsed.password);
10620
+ if (parsed.password) parsed.password = require_state.maskPassword(parsed.password);
10435
10621
  return parsed.toString();
10436
10622
  } catch {
10437
10623
  return url;
@@ -10521,7 +10707,7 @@ async function resolveSecrets(stage, workspace, options) {
10521
10707
  logger$1.log("🔐 Generating fresh secrets (--force)...");
10522
10708
  return generateFreshSecrets(stage, workspace);
10523
10709
  }
10524
- const store = await require_store.secretsStoreFor(workspace, stage);
10710
+ const store = await require_state.secretsStoreFor(workspace, stage);
10525
10711
  const secrets = await store.read(stage);
10526
10712
  if (secrets) {
10527
10713
  logger$1.log("🔐 Using existing secrets");
@@ -10645,7 +10831,7 @@ function createFreshWorkspaceSecrets(stage, workspace, containers = []) {
10645
10831
  */
10646
10832
  async function ensureStageSecrets(stage, cwd = process.cwd()) {
10647
10833
  const { workspace } = await require_config.loadWorkspaceConfig(cwd);
10648
- const store = await require_store.secretsStoreFor(workspace, stage);
10834
+ const store = await require_state.secretsStoreFor(workspace, stage);
10649
10835
  if (await store.read(stage)) return false;
10650
10836
  const secrets = createFreshWorkspaceSecrets(stage, workspace, await require_state.derivedContainers(workspace, stage));
10651
10837
  await store.write(stage, secrets);
@@ -10656,7 +10842,7 @@ async function ensureStageSecrets(stage, cwd = process.cwd()) {
10656
10842
  */
10657
10843
  async function generateFreshSecrets(stage, workspace) {
10658
10844
  const secrets = createFreshWorkspaceSecrets(stage, workspace, await require_state.derivedContainers(workspace, stage));
10659
- const store = await require_store.secretsStoreFor(workspace, stage);
10845
+ const store = await require_state.secretsStoreFor(workspace, stage);
10660
10846
  await store.write(stage, secrets);
10661
10847
  logger$1.log(` Secrets written to the "${stage}" store (${store.name})`);
10662
10848
  return secrets;
@@ -10851,8 +11037,8 @@ function testDatabases(reconciled) {
10851
11037
  * starts without the reference data the app needs.
10852
11038
  */
10853
11039
  async function migrateTestStage(workspace, env) {
10854
- const { migrateAndSeed } = await Promise.resolve().then(() => require("./migrate-q4pPAXtO.cjs"));
10855
- const { discover } = await Promise.resolve().then(() => require("./discover-DHdECueV.cjs")).then((n) => n.discover_exports);
11040
+ const { migrateAndSeed } = await Promise.resolve().then(() => require("./migrate-CF4J4GQS.cjs"));
11041
+ const { discover } = await Promise.resolve().then(() => require("./discover-OEfZ9OkA.cjs")).then((n) => n.discover_exports);
10856
11042
  const sources = {};
10857
11043
  const manifest = await discover({
10858
11044
  patterns: require_state.constructGlobs(workspace),
@@ -11282,7 +11468,7 @@ program.command("migrate").description("Apply each database construct's migratio
11282
11468
  try {
11283
11469
  const globalOptions = program.opts();
11284
11470
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11285
- const { migrateCommand } = await Promise.resolve().then(() => require("./migrate-q4pPAXtO.cjs"));
11471
+ const { migrateCommand } = await Promise.resolve().then(() => require("./migrate-CF4J4GQS.cjs"));
11286
11472
  await migrateCommand({
11287
11473
  ...options,
11288
11474
  ...construct ? { construct } : {}
@@ -11296,7 +11482,7 @@ program.command("seed").description("Migrate, then run each database construct's
11296
11482
  try {
11297
11483
  const globalOptions = program.opts();
11298
11484
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11299
- const { seedCommand } = await Promise.resolve().then(() => require("./migrate-q4pPAXtO.cjs"));
11485
+ const { seedCommand } = await Promise.resolve().then(() => require("./migrate-CF4J4GQS.cjs"));
11300
11486
  await seedCommand({
11301
11487
  ...options,
11302
11488
  ...construct ? { construct } : {}
@@ -11310,7 +11496,7 @@ program.command("migration").description("Write a construct's next migration: an
11310
11496
  try {
11311
11497
  const globalOptions = program.opts();
11312
11498
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11313
- const { migrationCommand } = await Promise.resolve().then(() => require("./migrate-q4pPAXtO.cjs"));
11499
+ const { migrationCommand } = await Promise.resolve().then(() => require("./migrate-CF4J4GQS.cjs"));
11314
11500
  await migrationCommand({
11315
11501
  construct,
11316
11502
  ...name ? { name } : {}
@@ -11418,7 +11604,7 @@ program.command("encryption:rotate").description("Add a new current key to an En
11418
11604
  try {
11419
11605
  const globalOptions = program.opts();
11420
11606
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11421
- const { encryptionRotateCommand } = await Promise.resolve().then(() => require("./encryption-B1wJwgae.cjs"));
11607
+ const { encryptionRotateCommand } = await Promise.resolve().then(() => require("./encryption-3KlGS1sl.cjs"));
11422
11608
  await encryptionRotateCommand(construct, options);
11423
11609
  } catch (error) {
11424
11610
  console.error(formatError(error));
@@ -11429,7 +11615,7 @@ program.command("encryption:retire").description("Remove an old key from an Encr
11429
11615
  try {
11430
11616
  const globalOptions = program.opts();
11431
11617
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11432
- const { encryptionRetireCommand } = await Promise.resolve().then(() => require("./encryption-B1wJwgae.cjs"));
11618
+ const { encryptionRetireCommand } = await Promise.resolve().then(() => require("./encryption-3KlGS1sl.cjs"));
11433
11619
  await encryptionRetireCommand(construct, key, options);
11434
11620
  } catch (error) {
11435
11621
  console.error(formatError(error));
@@ -11472,7 +11658,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
11472
11658
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11473
11659
  const { loadWorkspaceConfig } = await Promise.resolve().then(() => require("./config.cjs"));
11474
11660
  const { reconcileMissingSecrets } = await Promise.resolve().then(() => require("./reconcile-CuCQBa5-.cjs"));
11475
- const { secretsStoreFor } = await Promise.resolve().then(() => require("./store-CJF1Tqkq.cjs")).then((n) => n.store_exports);
11661
+ const { secretsStoreFor } = await Promise.resolve().then(() => require("./state-Y6ATakMX.cjs")).then((n) => n.store_exports);
11476
11662
  const { workspace } = await loadWorkspaceConfig();
11477
11663
  const stage = options.stage ?? workspace.stages.local;
11478
11664
  const store = await secretsStoreFor(workspace, stage);
@@ -11481,7 +11667,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
11481
11667
  console.error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
11482
11668
  process.exit(1);
11483
11669
  }
11484
- const { derivedContainers } = await Promise.resolve().then(() => require("./state-DF26e_lo.cjs")).then((n) => n.workspace_exports);
11670
+ const { derivedContainers } = await Promise.resolve().then(() => require("./state-Y6ATakMX.cjs")).then((n) => n.workspace_exports);
11485
11671
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers(workspace, stage));
11486
11672
  if (!result) {
11487
11673
  console.log(`\n✓ Secrets for stage "${stage}" are up-to-date`);
@@ -11495,8 +11681,8 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
11495
11681
  process.exit(1);
11496
11682
  }
11497
11683
  });
11498
- 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) => {
11499
- const { deployCli } = await Promise.resolve().then(() => require("./cli-BfH1deAT.cjs"));
11684
+ 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) => {
11685
+ const { deployCli } = await Promise.resolve().then(() => require("./cli-D1JkkOwg.cjs"));
11500
11686
  const globalOptions = program.opts();
11501
11687
  const code = await deployCli({
11502
11688
  cwd: (0, node_path.resolve)(globalOptions.cwd ?? process.cwd()),
@@ -11505,10 +11691,29 @@ program.command("deploy").description("Deploy a stage through its target").optio
11505
11691
  stage: options.stage,
11506
11692
  ...options.tag ? { tag: options.tag } : {},
11507
11693
  ...options.json ? { json: true } : {},
11508
- ...options.dryRun ? { dryRun: true } : {}
11694
+ ...options.dryRun ? { dryRun: true } : {},
11695
+ ...options.atomic ? { atomic: true } : {}
11509
11696
  });
11510
11697
  if (code !== 0) process.exit(code);
11511
11698
  });
11699
+ 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) => {
11700
+ try {
11701
+ const { rollbackStage } = await Promise.resolve().then(() => require("./rollback-DxJK84hy.cjs")).then((n) => n.rollback_exports);
11702
+ const { terminalCredentials } = await Promise.resolve().then(() => require("./terminal-CHy_MdjG.cjs"));
11703
+ const globalOptions = program.opts();
11704
+ await rollbackStage({
11705
+ cwd: (0, node_path.resolve)(globalOptions.cwd ?? process.cwd()),
11706
+ stage: options.stage,
11707
+ ...options.app ? { app: options.app } : {},
11708
+ ...options.atomic ? { atomic: true } : {},
11709
+ credentials: terminalCredentials(),
11710
+ log: (line) => console.log(line)
11711
+ });
11712
+ } catch (error) {
11713
+ console.error(formatError(error));
11714
+ process.exit(1);
11715
+ }
11716
+ });
11512
11717
  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) => {
11513
11718
  try {
11514
11719
  const globalOptions = program.opts();
@@ -11529,7 +11734,7 @@ program.command("deploy:github").description("Let GitHub Actions deploy a stage:
11529
11734
  try {
11530
11735
  const globalOptions = program.opts();
11531
11736
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11532
- const { deployGithubCommand } = await Promise.resolve().then(() => require("./github-CYcmTdFs.cjs"));
11737
+ const { deployGithubCommand } = await Promise.resolve().then(() => require("./github-BJ5gh9bw.cjs"));
11533
11738
  await deployGithubCommand(options);
11534
11739
  } catch (error) {
11535
11740
  console.error(formatError(error));
@@ -11572,7 +11777,7 @@ program.command("login").description("Authenticate with a deployment or DNS prov
11572
11777
  console.error(`Unknown provider: ${provider}. Supported: dokploy, hostinger`);
11573
11778
  process.exit(1);
11574
11779
  }
11575
- await require_sniffer.loginCommand({
11780
+ await loginCommand({
11576
11781
  provider,
11577
11782
  token: options.token,
11578
11783
  endpoint: options.endpoint
@@ -11586,7 +11791,7 @@ program.command("logout").description("Remove stored credentials").option("--pro
11586
11791
  try {
11587
11792
  const globalOptions = program.opts();
11588
11793
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11589
- await require_sniffer.logoutCommand({ provider: options.service ?? options.provider });
11794
+ await logoutCommand({ provider: options.service ?? options.provider });
11590
11795
  } catch (error) {
11591
11796
  console.error(formatError(error));
11592
11797
  process.exit(1);
@@ -11596,7 +11801,7 @@ program.command("whoami").description("Show current authentication status").acti
11596
11801
  try {
11597
11802
  const globalOptions = program.opts();
11598
11803
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11599
- await require_sniffer.whoamiCommand();
11804
+ await whoamiCommand();
11600
11805
  } catch (error) {
11601
11806
  console.error(formatError(error));
11602
11807
  process.exit(1);
@@ -11664,9 +11869,12 @@ program.command("upgrade").description("Upgrade @geekmidas/cli (with --all, ever
11664
11869
  });
11665
11870
  program.parse();
11666
11871
  //#endregion
11872
+ exports.canPrompt = canPrompt;
11667
11873
  exports.formatError = formatError;
11668
11874
  exports.generateFullstackCustomSecrets = generateFullstackCustomSecrets;
11875
+ exports.prompt = prompt;
11669
11876
  exports.slug = slug;
11670
11877
  exports.stamp = stamp;
11878
+ exports.validateDokployToken = validateDokployToken;
11671
11879
 
11672
11880
  //# sourceMappingURL=index.cjs.map