@geekmidas/cli 10.0.0-alpha.91 → 10.0.0-alpha.92

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 (303) hide show
  1. package/dist/{EndpointGenerator-CVc6Oi1Y.mjs → EndpointGenerator-Bor2tZCm.mjs} +14 -4
  2. package/dist/EndpointGenerator-Bor2tZCm.mjs.map +1 -0
  3. package/dist/{EndpointGenerator-CwLjBCFE.cjs → EndpointGenerator-De03t1hd.cjs} +14 -4
  4. package/dist/EndpointGenerator-De03t1hd.cjs.map +1 -0
  5. package/dist/{GoDaddyProvider-DSStJVAv.mjs → GoDaddyProvider-BqYGk9XT.mjs} +11 -10
  6. package/dist/GoDaddyProvider-BqYGk9XT.mjs.map +1 -0
  7. package/dist/{GoDaddyProvider-DqZ1qD_F.cjs → GoDaddyProvider-CJwg2r_9.cjs} +11 -10
  8. package/dist/GoDaddyProvider-CJwg2r_9.cjs.map +1 -0
  9. package/dist/{HostingerProvider-BI6J7oJr.mjs → HostingerProvider-1mqD6aG8.mjs} +2 -2
  10. package/dist/{HostingerProvider-BI6J7oJr.mjs.map → HostingerProvider-1mqD6aG8.mjs.map} +1 -1
  11. package/dist/{HostingerProvider-CyTpG_jy.cjs → HostingerProvider-C6t-PSNe.cjs} +2 -2
  12. package/dist/{HostingerProvider-CyTpG_jy.cjs.map → HostingerProvider-C6t-PSNe.cjs.map} +1 -1
  13. package/dist/{LegacyStateStore-DXmNA7hy.cjs → LegacyStateStore-CeEwayMB.cjs} +2 -2
  14. package/dist/{LegacyStateStore-DXmNA7hy.cjs.map → LegacyStateStore-CeEwayMB.cjs.map} +1 -1
  15. package/dist/{LegacyStateStore-ZkdmiUFZ.mjs → LegacyStateStore-DdJ1bCRV.mjs} +2 -2
  16. package/dist/{LegacyStateStore-ZkdmiUFZ.mjs.map → LegacyStateStore-DdJ1bCRV.mjs.map} +1 -1
  17. package/dist/{LocalStateStore-BBeTlRTH.cjs → LocalStateStore-BMfseje2.cjs} +2 -2
  18. package/dist/{LocalStateStore-BBeTlRTH.cjs.map → LocalStateStore-BMfseje2.cjs.map} +1 -1
  19. package/dist/{LocalStateStore-CU-O0SBp.mjs → LocalStateStore-Y8XHdoCR.mjs} +2 -2
  20. package/dist/{LocalStateStore-CU-O0SBp.mjs.map → LocalStateStore-Y8XHdoCR.mjs.map} +1 -1
  21. package/dist/{OpenApiTsGenerator-B--HV-sW.cjs → OpenApiTsGenerator-CS_RtWOz.cjs} +2 -2
  22. package/dist/{OpenApiTsGenerator-B--HV-sW.cjs.map → OpenApiTsGenerator-CS_RtWOz.cjs.map} +1 -1
  23. package/dist/{OpenApiTsGenerator-CkvsPdgg.mjs → OpenApiTsGenerator-DWAF-7Fu.mjs} +2 -2
  24. package/dist/{OpenApiTsGenerator-CkvsPdgg.mjs.map → OpenApiTsGenerator-DWAF-7Fu.mjs.map} +1 -1
  25. package/dist/{S3StateStore-bwxcI_wQ.mjs → S3StateStore-BfoY4MvD.mjs} +2 -2
  26. package/dist/{S3StateStore-bwxcI_wQ.mjs.map → S3StateStore-BfoY4MvD.mjs.map} +1 -1
  27. package/dist/{S3StateStore-Br8VMY22.cjs → S3StateStore-BmMt2HhW.cjs} +2 -2
  28. package/dist/{S3StateStore-Br8VMY22.cjs.map → S3StateStore-BmMt2HhW.cjs.map} +1 -1
  29. package/dist/{SSMStateStore-CsOS0W1y.mjs → SSMStateStore-Bdyw_0Jj.mjs} +2 -2
  30. package/dist/{SSMStateStore-CsOS0W1y.mjs.map → SSMStateStore-Bdyw_0Jj.mjs.map} +1 -1
  31. package/dist/{SSMStateStore-DoZE1Wi1.cjs → SSMStateStore-D9K62wM4.cjs} +2 -2
  32. package/dist/{SSMStateStore-DoZE1Wi1.cjs.map → SSMStateStore-D9K62wM4.cjs.map} +1 -1
  33. package/dist/{SubscriberGenerator-BPqQf8fB.mjs → SubscriberGenerator-CyN2VF5X.mjs} +6 -5
  34. package/dist/SubscriberGenerator-CyN2VF5X.mjs.map +1 -0
  35. package/dist/{SubscriberGenerator-BVn7cQ-2.cjs → SubscriberGenerator-Dvz7EzqK.cjs} +6 -5
  36. package/dist/SubscriberGenerator-Dvz7EzqK.cjs.map +1 -0
  37. package/dist/{add-BSHk5Ngn.mjs → add-2Opn2VVE.mjs} +7 -6
  38. package/dist/add-2Opn2VVE.mjs.map +1 -0
  39. package/dist/{add-DmmBDV2e.cjs → add-oN0b18HN.cjs} +7 -6
  40. package/dist/add-oN0b18HN.cjs.map +1 -0
  41. package/dist/{aws-BTawF0F-.cjs → aws-BTReGjpY.cjs} +24 -6
  42. package/dist/aws-BTReGjpY.cjs.map +1 -0
  43. package/dist/{aws-B-6uEhgP.mjs → aws-Dz2bYxK1.mjs} +24 -6
  44. package/dist/aws-Dz2bYxK1.mjs.map +1 -0
  45. package/dist/awsStore-B5We7bMg.cjs +136 -0
  46. package/dist/awsStore-B5We7bMg.cjs.map +1 -0
  47. package/dist/awsStore-BWa1KNY-.mjs +119 -0
  48. package/dist/awsStore-BWa1KNY-.mjs.map +1 -0
  49. package/dist/{bundler-D6eBfVkl.mjs → bundler-C-AdesaG.mjs} +5 -5
  50. package/dist/{bundler-D6eBfVkl.mjs.map → bundler-C-AdesaG.mjs.map} +1 -1
  51. package/dist/{bundler-BQJiB7Ub.cjs → bundler-CXQDrhzN.cjs} +5 -5
  52. package/dist/{bundler-BQJiB7Ub.cjs.map → bundler-CXQDrhzN.cjs.map} +1 -1
  53. package/dist/{cli-BE9mqeX8.cjs → cli-BRZFYvdb.cjs} +5 -5
  54. package/dist/{cli-BE9mqeX8.cjs.map → cli-BRZFYvdb.cjs.map} +1 -1
  55. package/dist/{cli-DD-Yk-I5.mjs → cli-BjhaVObS.mjs} +5 -5
  56. package/dist/{cli-DD-Yk-I5.mjs.map → cli-BjhaVObS.mjs.map} +1 -1
  57. package/dist/{compose-Bhmf0n4o.mjs → compose-CTdVeeVk.mjs} +45 -34
  58. package/dist/compose-CTdVeeVk.mjs.map +1 -0
  59. package/dist/{compose-CvpU6ooi.cjs → compose-fnYmPk_c.cjs} +45 -34
  60. package/dist/compose-fnYmPk_c.cjs.map +1 -0
  61. package/dist/{config-pST7E0CS.d.cts → config-BJo8Wggp.d.mts} +8 -8
  62. package/dist/{config-CdEcTrjG.d.mts.map → config-BJo8Wggp.d.mts.map} +1 -1
  63. package/dist/{config-CdEcTrjG.d.mts → config-C9zx7KsX.d.cts} +8 -8
  64. package/dist/{config-pST7E0CS.d.cts.map → config-C9zx7KsX.d.cts.map} +1 -1
  65. package/dist/config.cjs +8 -7
  66. package/dist/config.cjs.map +1 -1
  67. package/dist/config.d.cts +3 -3
  68. package/dist/config.d.mts +3 -3
  69. package/dist/config.mjs +8 -7
  70. package/dist/config.mjs.map +1 -1
  71. package/dist/{credentialSchemas-BJqRJNK4.mjs → credentialSchemas-BJFvfkaz.mjs} +5 -4
  72. package/dist/credentialSchemas-BJFvfkaz.mjs.map +1 -0
  73. package/dist/{credentialSchemas-DCR4Wd1W.cjs → credentialSchemas-CAPKFkrG.cjs} +5 -4
  74. package/dist/credentialSchemas-CAPKFkrG.cjs.map +1 -0
  75. package/dist/{credentials-CnVqoXMb.mjs → credentials-C4KII3PD.mjs} +3 -2
  76. package/dist/{credentials-CnVqoXMb.mjs.map → credentials-C4KII3PD.mjs.map} +1 -1
  77. package/dist/{credentials-BKfIugu2.cjs → credentials-QBu7VgaQ.cjs} +3 -2
  78. package/dist/credentials-QBu7VgaQ.cjs.map +1 -0
  79. package/dist/{databases-CzszQV0N.mjs → databases-BeGP5eDh.mjs} +11 -10
  80. package/dist/databases-BeGP5eDh.mjs.map +1 -0
  81. package/dist/{databases-BY-pEImp.cjs → databases-DGALFDG3.cjs} +11 -10
  82. package/dist/databases-DGALFDG3.cjs.map +1 -0
  83. package/dist/{define-DR8xGYfL.mjs → define-6poNqm5O.mjs} +12 -3
  84. package/dist/define-6poNqm5O.mjs.map +1 -0
  85. package/dist/{define-DzRz8FgH.cjs → define-crmMcXFS.cjs} +12 -3
  86. package/dist/define-crmMcXFS.cjs.map +1 -0
  87. package/dist/deploy/public.cjs +17 -16
  88. package/dist/deploy/public.cjs.map +1 -1
  89. package/dist/deploy/public.d.cts +30 -30
  90. package/dist/deploy/public.d.cts.map +1 -1
  91. package/dist/deploy/public.d.mts +30 -30
  92. package/dist/deploy/public.d.mts.map +1 -1
  93. package/dist/deploy/public.mjs +17 -16
  94. package/dist/deploy/public.mjs.map +1 -1
  95. package/dist/{deploy-CuHasEA4.cjs → deploy-6ToUHJmM.cjs} +14 -13
  96. package/dist/deploy-6ToUHJmM.cjs.map +1 -0
  97. package/dist/{deploy-QNtx_eWR.mjs → deploy-yuJHlkY0.mjs} +14 -13
  98. package/dist/deploy-yuJHlkY0.mjs.map +1 -0
  99. package/dist/{discover-CU0paUyH.d.cts → discover-CRMhvHG9.d.cts} +2 -2
  100. package/dist/{discover-CU0paUyH.d.cts.map → discover-CRMhvHG9.d.cts.map} +1 -1
  101. package/dist/{discover-D1It5r_h.cjs → discover-DPgu-ScS.cjs} +4 -3
  102. package/dist/discover-DPgu-ScS.cjs.map +1 -0
  103. package/dist/{discover-DFiJxwfv.d.mts → discover-G76EQ4vY.d.mts} +2 -2
  104. package/dist/{discover-DFiJxwfv.d.mts.map → discover-G76EQ4vY.d.mts.map} +1 -1
  105. package/dist/{discover-BPelzeGW.mjs → discover-qjFapetL.mjs} +4 -3
  106. package/dist/discover-qjFapetL.mjs.map +1 -0
  107. package/dist/{dokploy-CYcMLh9-.mjs → dokploy-BvbJ_A4Q.mjs} +3 -3
  108. package/dist/{dokploy-CYcMLh9-.mjs.map → dokploy-BvbJ_A4Q.mjs.map} +1 -1
  109. package/dist/{dokploy-DIowwyIB.cjs → dokploy-Bvvfj2qe.cjs} +3 -3
  110. package/dist/{dokploy-DIowwyIB.cjs.map → dokploy-Bvvfj2qe.cjs.map} +1 -1
  111. package/dist/{drivers-DTZzxeIl.mjs → drivers-CTaWrA_L.mjs} +2 -2
  112. package/dist/{drivers-DTZzxeIl.mjs.map → drivers-CTaWrA_L.mjs.map} +1 -1
  113. package/dist/{drivers-LYSdQDmd.cjs → drivers-DDojgzz0.cjs} +2 -2
  114. package/dist/{drivers-LYSdQDmd.cjs.map → drivers-DDojgzz0.cjs.map} +1 -1
  115. package/dist/{encryption-BrEef7Jk.mjs → encryption-C9Jm9dfn.mjs} +7 -6
  116. package/dist/encryption-C9Jm9dfn.mjs.map +1 -0
  117. package/dist/{encryption-CjYdUb2s.cjs → encryption-CgW167LO.cjs} +7 -6
  118. package/dist/encryption-CgW167LO.cjs.map +1 -0
  119. package/dist/{engine-2h4k5ICq.mjs → engine-C8Ye9MUm.mjs} +36 -25
  120. package/dist/engine-C8Ye9MUm.mjs.map +1 -0
  121. package/dist/{engine-BhJ7ZP9K.cjs → engine-Dj7ZKO8H.cjs} +36 -25
  122. package/dist/engine-Dj7ZKO8H.cjs.map +1 -0
  123. package/dist/errors-D8Gwp5kU.mjs +23 -0
  124. package/dist/errors-D8Gwp5kU.mjs.map +1 -0
  125. package/dist/errors-DMC4Umsb.cjs +34 -0
  126. package/dist/errors-DMC4Umsb.cjs.map +1 -0
  127. package/dist/{github-BCDF6xVH.mjs → github-B1k42hIt.mjs} +31 -9
  128. package/dist/github-B1k42hIt.mjs.map +1 -0
  129. package/dist/{github-B5Bw4HIu.cjs → github-BD051KZZ.cjs} +31 -9
  130. package/dist/github-BD051KZZ.cjs.map +1 -0
  131. package/dist/{index-YFNxR5Ns.d.mts → index-B5uuwx-Y.d.cts} +6 -6
  132. package/dist/{index-D-F_hTDz.d.cts.map → index-B5uuwx-Y.d.cts.map} +1 -1
  133. package/dist/{index-D-F_hTDz.d.cts → index-D1pHwqkK.d.mts} +6 -6
  134. package/dist/{index-YFNxR5Ns.d.mts.map → index-D1pHwqkK.d.mts.map} +1 -1
  135. package/dist/index.cjs +159 -208
  136. package/dist/index.cjs.map +1 -1
  137. package/dist/index.mjs +159 -208
  138. package/dist/index.mjs.map +1 -1
  139. package/dist/{local-BjxDfPvy.cjs → local-B61kUh0w.cjs} +3 -3
  140. package/dist/{local-BjxDfPvy.cjs.map → local-B61kUh0w.cjs.map} +1 -1
  141. package/dist/{local-IuoIF3CT.mjs → local-Otp74ak0.mjs} +3 -3
  142. package/dist/{local-IuoIF3CT.mjs.map → local-Otp74ak0.mjs.map} +1 -1
  143. package/dist/{migrate-DbtcuOr_.mjs → migrate-BSbZ7-9n.mjs} +8 -7
  144. package/dist/migrate-BSbZ7-9n.mjs.map +1 -0
  145. package/dist/{migrate-q2YYLJLE.cjs → migrate-D3VVsiHp.cjs} +8 -7
  146. package/dist/migrate-D3VVsiHp.cjs.map +1 -0
  147. package/dist/{migrate-DWZz9kah.mjs → migrate-IZsYyZ5F.mjs} +8 -7
  148. package/dist/migrate-IZsYyZ5F.mjs.map +1 -0
  149. package/dist/{migrate-CGaancHY.cjs → migrate-f6JDjyCp.cjs} +8 -7
  150. package/dist/migrate-f6JDjyCp.cjs.map +1 -0
  151. package/dist/openapi.cjs +3 -3
  152. package/dist/openapi.d.cts +1 -10
  153. package/dist/openapi.d.cts.map +1 -1
  154. package/dist/openapi.d.mts +1 -10
  155. package/dist/openapi.d.mts.map +1 -1
  156. package/dist/openapi.mjs +3 -3
  157. package/dist/{provider-C9_-45d5.cjs → provider-BqpjG9QM.cjs} +4 -3
  158. package/dist/provider-BqpjG9QM.cjs.map +1 -0
  159. package/dist/{provider-q4lsYzYG.mjs → provider-CEOKk8NS.mjs} +4 -3
  160. package/dist/provider-CEOKk8NS.mjs.map +1 -0
  161. package/dist/{ready-BpNbORRB.cjs → ready-D3PIjx3S.cjs} +9 -8
  162. package/dist/ready-D3PIjx3S.cjs.map +1 -0
  163. package/dist/{ready-b6vm0-W-.mjs → ready-naOSJpeJ.mjs} +9 -8
  164. package/dist/ready-naOSJpeJ.mjs.map +1 -0
  165. package/dist/reconcile/public.cjs +1 -1
  166. package/dist/reconcile/public.d.cts +2 -2
  167. package/dist/reconcile/public.d.mts +2 -2
  168. package/dist/reconcile/public.mjs +1 -1
  169. package/dist/{resolve-DNg0icnh.mjs → resolve-Be4bF1w4.mjs} +12 -11
  170. package/dist/resolve-Be4bF1w4.mjs.map +1 -0
  171. package/dist/{resolve-Cns0v6dN.cjs → resolve-DUp65SnJ.cjs} +12 -11
  172. package/dist/resolve-DUp65SnJ.cjs.map +1 -0
  173. package/dist/{rollback-CFrNLmxs.mjs → rollback-D1d-fW0r.mjs} +11 -10
  174. package/dist/rollback-D1d-fW0r.mjs.map +1 -0
  175. package/dist/{rollback-UIjS25F1.cjs → rollback-DDHtd0GJ.cjs} +11 -10
  176. package/dist/rollback-DDHtd0GJ.cjs.map +1 -0
  177. package/dist/{runtime-CN_kmqxo.d.cts → runtime-DDrHlYe5.d.cts} +11 -19
  178. package/dist/runtime-DDrHlYe5.d.cts.map +1 -0
  179. package/dist/{runtime-Cjvon3oj.d.mts → runtime-Es1V4e9M.d.mts} +11 -19
  180. package/dist/runtime-Es1V4e9M.d.mts.map +1 -0
  181. package/dist/sandbox/credentials-worker.cjs +3 -3
  182. package/dist/sandbox/credentials-worker.mjs +3 -3
  183. package/dist/sandbox/discover-worker.cjs +1 -1
  184. package/dist/sandbox/discover-worker.mjs +1 -1
  185. package/dist/sandbox/migrate-worker.cjs +3 -3
  186. package/dist/sandbox/migrate-worker.mjs +3 -3
  187. package/dist/{sandbox-M8UnLhXE.d.cts → sandbox-C3WsTa5m.d.mts} +4 -26
  188. package/dist/sandbox-C3WsTa5m.d.mts.map +1 -0
  189. package/dist/{sandbox-CL--ZDui.cjs → sandbox-CHv3OYXg.cjs} +4 -3
  190. package/dist/sandbox-CHv3OYXg.cjs.map +1 -0
  191. package/dist/{sandbox-Dm247NGx.mjs → sandbox-CbVB7uOD.mjs} +4 -3
  192. package/dist/sandbox-CbVB7uOD.mjs.map +1 -0
  193. package/dist/{sandbox-M8UnLhXE.d.mts → sandbox-MaxSeU92.d.cts} +4 -26
  194. package/dist/sandbox-MaxSeU92.d.cts.map +1 -0
  195. package/dist/{secretsManager-Chs9VV2r.mjs → secretsManager-C6wm-9uZ.mjs} +24 -3
  196. package/dist/secretsManager-C6wm-9uZ.mjs.map +1 -0
  197. package/dist/{secretsManager-DcMlHnRC.cjs → secretsManager-Cwwgs81g.cjs} +24 -3
  198. package/dist/secretsManager-Cwwgs81g.cjs.map +1 -0
  199. package/dist/{seeds-CkIPFGNO.cjs → seeds-BKoJYsE7.cjs} +58 -57
  200. package/dist/seeds-BKoJYsE7.cjs.map +1 -0
  201. package/dist/{seeds-odfgSCmu.mjs → seeds-CvGQJnPO.mjs} +58 -57
  202. package/dist/seeds-CvGQJnPO.mjs.map +1 -0
  203. package/dist/{sniffer-BTtX3NUM.mjs → sniffer-BTtGAtm3.mjs} +14 -8
  204. package/dist/sniffer-BTtGAtm3.mjs.map +1 -0
  205. package/dist/{sniffer-IAQEpsQb.cjs → sniffer-Dq5BS98f.cjs} +14 -8
  206. package/dist/{sniffer-IAQEpsQb.cjs.map → sniffer-Dq5BS98f.cjs.map} +1 -1
  207. package/dist/{sst-CJzvyrEz.mjs → sst-BaRXp2Dd.mjs} +18 -8
  208. package/dist/sst-BaRXp2Dd.mjs.map +1 -0
  209. package/dist/{sst-BgcOsaBi.cjs → sst-CnKY-CSh.cjs} +18 -8
  210. package/dist/sst-CnKY-CSh.cjs.map +1 -0
  211. package/dist/{stages-CUn6gvXL.cjs → stages-BI8JvPzI.cjs} +6 -5
  212. package/dist/stages-BI8JvPzI.cjs.map +1 -0
  213. package/dist/{stages-CnZRYmkI.mjs → stages-DY-fQKmo.mjs} +6 -5
  214. package/dist/stages-DY-fQKmo.mjs.map +1 -0
  215. package/dist/target/public.cjs +3 -3
  216. package/dist/target/public.d.cts +2 -2
  217. package/dist/target/public.d.mts +2 -2
  218. package/dist/target/public.mjs +3 -3
  219. package/dist/{terminal-DuapRxh6.cjs → terminal-8XngdSTo.cjs} +6 -5
  220. package/dist/terminal-8XngdSTo.cjs.map +1 -0
  221. package/dist/{terminal-D8TPK7o9.mjs → terminal-Dtd6BZX9.mjs} +6 -5
  222. package/dist/terminal-Dtd6BZX9.mjs.map +1 -0
  223. package/dist/{types-ZHuZ89hv.d.mts → types-B3Gqs175.d.mts} +19 -23
  224. package/dist/types-B3Gqs175.d.mts.map +1 -0
  225. package/dist/{types-NqX1Hz4P.d.cts → types-Bk9st2cd.d.cts} +19 -23
  226. package/dist/types-Bk9st2cd.d.cts.map +1 -0
  227. package/dist/vitest.cjs +1 -1
  228. package/dist/vitest.mjs +1 -1
  229. package/dist/workspace/index.cjs +1 -1
  230. package/dist/workspace/index.d.cts +2 -2
  231. package/dist/workspace/index.d.mts +2 -2
  232. package/dist/workspace/index.mjs +1 -1
  233. package/dist/{workspace-CJ0lKFq-.mjs → workspace-Bzw7Zs82.mjs} +34 -33
  234. package/dist/workspace-Bzw7Zs82.mjs.map +1 -0
  235. package/dist/{workspace-CwW3Gkru.cjs → workspace-CHOB2Xg3.cjs} +34 -33
  236. package/dist/workspace-CHOB2Xg3.cjs.map +1 -0
  237. package/package.json +15 -15
  238. package/dist/EndpointGenerator-CVc6Oi1Y.mjs.map +0 -1
  239. package/dist/EndpointGenerator-CwLjBCFE.cjs.map +0 -1
  240. package/dist/GoDaddyProvider-DSStJVAv.mjs.map +0 -1
  241. package/dist/GoDaddyProvider-DqZ1qD_F.cjs.map +0 -1
  242. package/dist/SubscriberGenerator-BPqQf8fB.mjs.map +0 -1
  243. package/dist/SubscriberGenerator-BVn7cQ-2.cjs.map +0 -1
  244. package/dist/add-BSHk5Ngn.mjs.map +0 -1
  245. package/dist/add-DmmBDV2e.cjs.map +0 -1
  246. package/dist/aws-B-6uEhgP.mjs.map +0 -1
  247. package/dist/aws-BTawF0F-.cjs.map +0 -1
  248. package/dist/awsStore-7VmS_cZR.cjs +0 -54
  249. package/dist/awsStore-7VmS_cZR.cjs.map +0 -1
  250. package/dist/awsStore-B529csle.mjs +0 -43
  251. package/dist/awsStore-B529csle.mjs.map +0 -1
  252. package/dist/compose-Bhmf0n4o.mjs.map +0 -1
  253. package/dist/compose-CvpU6ooi.cjs.map +0 -1
  254. package/dist/credentialSchemas-BJqRJNK4.mjs.map +0 -1
  255. package/dist/credentialSchemas-DCR4Wd1W.cjs.map +0 -1
  256. package/dist/credentials-BKfIugu2.cjs.map +0 -1
  257. package/dist/databases-BY-pEImp.cjs.map +0 -1
  258. package/dist/databases-CzszQV0N.mjs.map +0 -1
  259. package/dist/define-DR8xGYfL.mjs.map +0 -1
  260. package/dist/define-DzRz8FgH.cjs.map +0 -1
  261. package/dist/deploy-CuHasEA4.cjs.map +0 -1
  262. package/dist/deploy-QNtx_eWR.mjs.map +0 -1
  263. package/dist/discover-BPelzeGW.mjs.map +0 -1
  264. package/dist/discover-D1It5r_h.cjs.map +0 -1
  265. package/dist/encryption-BrEef7Jk.mjs.map +0 -1
  266. package/dist/encryption-CjYdUb2s.cjs.map +0 -1
  267. package/dist/engine-2h4k5ICq.mjs.map +0 -1
  268. package/dist/engine-BhJ7ZP9K.cjs.map +0 -1
  269. package/dist/github-B5Bw4HIu.cjs.map +0 -1
  270. package/dist/github-BCDF6xVH.mjs.map +0 -1
  271. package/dist/migrate-CGaancHY.cjs.map +0 -1
  272. package/dist/migrate-DWZz9kah.mjs.map +0 -1
  273. package/dist/migrate-DbtcuOr_.mjs.map +0 -1
  274. package/dist/migrate-q2YYLJLE.cjs.map +0 -1
  275. package/dist/provider-C9_-45d5.cjs.map +0 -1
  276. package/dist/provider-q4lsYzYG.mjs.map +0 -1
  277. package/dist/ready-BpNbORRB.cjs.map +0 -1
  278. package/dist/ready-b6vm0-W-.mjs.map +0 -1
  279. package/dist/resolve-Cns0v6dN.cjs.map +0 -1
  280. package/dist/resolve-DNg0icnh.mjs.map +0 -1
  281. package/dist/rollback-CFrNLmxs.mjs.map +0 -1
  282. package/dist/rollback-UIjS25F1.cjs.map +0 -1
  283. package/dist/runtime-CN_kmqxo.d.cts.map +0 -1
  284. package/dist/runtime-Cjvon3oj.d.mts.map +0 -1
  285. package/dist/sandbox-CL--ZDui.cjs.map +0 -1
  286. package/dist/sandbox-Dm247NGx.mjs.map +0 -1
  287. package/dist/sandbox-M8UnLhXE.d.cts.map +0 -1
  288. package/dist/sandbox-M8UnLhXE.d.mts.map +0 -1
  289. package/dist/secretsManager-Chs9VV2r.mjs.map +0 -1
  290. package/dist/secretsManager-DcMlHnRC.cjs.map +0 -1
  291. package/dist/seeds-CkIPFGNO.cjs.map +0 -1
  292. package/dist/seeds-odfgSCmu.mjs.map +0 -1
  293. package/dist/sniffer-BTtX3NUM.mjs.map +0 -1
  294. package/dist/sst-BgcOsaBi.cjs.map +0 -1
  295. package/dist/sst-CJzvyrEz.mjs.map +0 -1
  296. package/dist/stages-CUn6gvXL.cjs.map +0 -1
  297. package/dist/stages-CnZRYmkI.mjs.map +0 -1
  298. package/dist/terminal-D8TPK7o9.mjs.map +0 -1
  299. package/dist/terminal-DuapRxh6.cjs.map +0 -1
  300. package/dist/types-NqX1Hz4P.d.cts.map +0 -1
  301. package/dist/types-ZHuZ89hv.d.mts.map +0 -1
  302. package/dist/workspace-CJ0lKFq-.mjs.map +0 -1
  303. package/dist/workspace-CwW3Gkru.cjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -1,25 +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 { _ as storeDokployCredentials, d as getDokployRegistryId, f as getDokployToken, g as removeGoDaddyCredentials, h as removeDokployCredentials, i as CommandFailed, l as getCredentialsPath, m as readCredentials, o as DEFAULT_TIMEOUT_MS, t as MissingCredential, u as getDokployCredentials, v as storeGoDaddyToken, y as storeHostingerToken } from "./credentials-CnVqoXMb.mjs";
4
- import { l as withOwningTsconfigJsx, r as discover, u as ConstructGenerator } from "./discover-BPelzeGW.mjs";
3
+ import { n as isGkmError, t as GkmError } from "./errors-D8Gwp5kU.mjs";
4
+ import { _ as storeDokployCredentials, d as getDokployRegistryId, f as getDokployToken, g as removeGoDaddyCredentials, h as removeDokployCredentials, i as CommandFailed, l as getCredentialsPath, m as readCredentials, o as DEFAULT_TIMEOUT_MS, t as MissingCredential, u as getDokployCredentials, v as storeGoDaddyToken, y as storeHostingerToken } from "./credentials-C4KII3PD.mjs";
5
+ import { l as withOwningTsconfigJsx, r as discover, u as ConstructGenerator } from "./discover-qjFapetL.mjs";
5
6
  import { t as appKey } from "./derive-B4vDpzgP.mjs";
6
- import { A as InvalidStages, F as stageProblems, P as deployedProblems, R as stageSampleRate, a as allConstructGlobs, d as getAppGkmConfig, j as TEST_STAGE, u as getAppBuildOrder } from "./workspace-CJ0lKFq-.mjs";
7
+ import { A as InvalidStages, F as stageProblems, P as deployedProblems, R as stageSampleRate, a as allConstructGlobs, d as getAppGkmConfig, j as TEST_STAGE, u as getAppBuildOrder } from "./workspace-Bzw7Zs82.mjs";
7
8
  import { ConfigNotFound, NotABackendApp, NotInAnApp, loadAppConfig, loadConfig, loadWorkspaceConfig, loadWorkspaceSettings, parseModuleConfig } from "./config.mjs";
8
- import { $n as LOCAL_LOGS_EMAIL, $t as isImageBuild, An as prepareEntryCredentials, Cn as createCredentialsPreload, Dn as loadEnvFiles, Dt as LOCAL_CA_PATH, En as isPortAvailable, Fn as FileSecretsStore, Ft as quoteIdentifier, In as getKeyPath, Mn as secretsStoreFor, Nt as postgresDatabaseNames, On as loadPortState, Ot as forgetState, Qn as withCustomSecret, Qt as imageBuildCredentials, Rn as projectKey, Sn as primaryPortKey, Tn as findAvailablePort, U as createStateStore, Vn as deployIdentity, X as assertDevServicesFlag, Yn as maskPassword, Zn as toEmbeddableSecrets, a as provisionStage, at as WorkerGenerator, ct as QueueGenerator, dn as appTelemetry, dt as backendsOf$1, en as cacheBackendFor, ft as constructGlobs, h as dockerCommand, hn as telemetryOf, in as CLUSTER_DATABASE, it as workerUnits, kn as loadSecretsForApp, lt as CronGenerator, mn as surfaceClientTraced, mt as reconcileWorkspace, nn as providerOf, ot as workerBundleName, pn as scopeTelemetryEnv, pt as derivedContainers, sn as TELEMETRY_CONTAINER, st as workerEntryDir, tn as eventsBackendFor, u as provisionCommand, ut as FAKE_ENV, vn as describeServices, wn as createEntryWrapper, xn as portsOf, yn as fakeKey, yt as readLocalCredentials, zt as pgClient } from "./seeds-odfgSCmu.mjs";
9
- import { c as startTelemetryCode, l as telemetryFor, n as runtimeFor, o as mountRequestSpansCode, r as parseTelemetryFlag, s as routeTelemetry, t as EndpointGenerator, u as writeTelemetryModule } from "./EndpointGenerator-CVc6Oi1Y.mjs";
9
+ import { $n as LOCAL_LOGS_EMAIL, $t as isImageBuild, An as prepareEntryCredentials, Cn as createCredentialsPreload, Dn as loadEnvFiles, Dt as LOCAL_CA_PATH, En as isPortAvailable, Fn as FileSecretsStore, Ft as quoteIdentifier, In as getKeyPath, Mn as secretsStoreFor, Nt as postgresDatabaseNames, On as loadPortState, Ot as forgetState, Qn as withCustomSecret, Qt as imageBuildCredentials, Rn as projectKey, Sn as primaryPortKey, Tn as findAvailablePort, U as createStateStore, Vn as deployIdentity, X as assertDevServicesFlag, Yn as maskPassword, Zn as toEmbeddableSecrets, a as provisionStage, at as WorkerGenerator, ct as QueueGenerator, dn as appTelemetry, dt as backendsOf$1, en as cacheBackendFor, ft as constructGlobs, h as dockerCommand, hn as telemetryOf, in as CLUSTER_DATABASE, it as workerUnits, kn as loadSecretsForApp, lt as CronGenerator, mn as surfaceClientTraced, mt as reconcileWorkspace, nn as providerOf, ot as workerBundleName, pn as scopeTelemetryEnv, pt as derivedContainers, sn as TELEMETRY_CONTAINER, st as workerEntryDir, tn as eventsBackendFor, u as provisionCommand, ut as FAKE_ENV, vn as describeServices, wn as createEntryWrapper, xn as portsOf, yn as fakeKey, yt as readLocalCredentials, zt as pgClient } from "./seeds-CvGQJnPO.mjs";
10
+ import { c as startTelemetryCode, l as telemetryFor, n as runtimeFor, o as mountRequestSpansCode, r as parseTelemetryFlag, s as routeTelemetry, t as EndpointGenerator, u as writeTelemetryModule } from "./EndpointGenerator-Bor2tZCm.mjs";
10
11
  import { generateOpenApi, openapiCommand, resolveOpenApiConfig } from "./openapi.mjs";
11
- import { s as isCacheBackend, t as SubscriberGenerator } from "./SubscriberGenerator-BPqQf8fB.mjs";
12
+ import { s as isCacheBackend, t as SubscriberGenerator } from "./SubscriberGenerator-CyN2VF5X.mjs";
12
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";
13
- import { n as driversFor, r as eventsBackendsIn, t as cacheBackendsIn } from "./drivers-DTZzxeIl.mjs";
14
+ import { n as driversFor, r as eventsBackendsIn, t as cacheBackendsIn } from "./drivers-CTaWrA_L.mjs";
14
15
  import { n as withCompute, r as withRoutes, t as manifestModule } from "./emit-C1e8qD08.mjs";
15
- import { t as LocalSandbox } from "./local-IuoIF3CT.mjs";
16
- import { f as keyFingerprint, n as sniffAppEnvironment, o as DokployApi } from "./sniffer-BTtX3NUM.mjs";
17
- import { t as deploy$1 } from "./deploy-QNtx_eWR.mjs";
18
- import { _ as planStackDns, a as stackOverrideFile, b as serverAddressHint, d as pinnedRef, f as edgeDir, g as applyStackDns, h as dockerCompose, i as ComposePushNeedsBuild, m as EDGE_PROJECT, o as composeProject, p as removeEdgeRoutes, r as ComposePinNeedsPull, s as stackDir, t as composeTarget, u as parseDigests, v as requiredServerAddress, x as stackHosts, y as serverAddress } from "./compose-Bhmf0n4o.mjs";
19
- import { o as loadCredentialSchemas, t as CredentialsInvalid } from "./credentialSchemas-BJqRJNK4.mjs";
20
- import { t as LocalStateStore } from "./LocalStateStore-CU-O0SBp.mjs";
16
+ import { t as LocalSandbox } from "./local-Otp74ak0.mjs";
17
+ import { f as keyFingerprint, n as sniffAppEnvironment, o as DokployApi } from "./sniffer-BTtGAtm3.mjs";
18
+ import { t as deploy$1 } from "./deploy-yuJHlkY0.mjs";
19
+ import { _ as planStackDns, a as stackOverrideFile, b as serverAddressHint, d as pinnedRef, f as edgeDir, g as applyStackDns, h as dockerCompose, i as ComposePushNeedsBuild, m as EDGE_PROJECT, o as composeProject, p as removeEdgeRoutes, r as ComposePinNeedsPull, s as stackDir, t as composeTarget, u as parseDigests, v as requiredServerAddress, x as stackHosts, y as serverAddress } from "./compose-CTdVeeVk.mjs";
20
+ import { o as loadCredentialSchemas, t as CredentialsInvalid } from "./credentialSchemas-BJFvfkaz.mjs";
21
+ import { t as LocalStateStore } from "./LocalStateStore-Y8XHdoCR.mjs";
21
22
  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
- import { a as writeTestHarness, i as TEST_MANIFEST_ENV, n as TEST_READY_FILE, t as TEST_READY_ENV } from "./ready-b6vm0-W-.mjs";
23
+ import "./awsStore-BWa1KNY-.mjs";
24
+ import { a as writeTestHarness, i as TEST_MANIFEST_ENV, n as TEST_READY_FILE, t as TEST_READY_ENV } from "./ready-naOSJpeJ.mjs";
23
25
  import { createRequire } from "node:module";
24
26
  import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
25
27
  import { Command, Option } from "commander";
@@ -47,7 +49,7 @@ import crypto from "crypto";
47
49
  import { Function } from "@geekmidas/constructs/functions";
48
50
  import { Topic } from "@geekmidas/constructs/topic";
49
51
  //#region package.json
50
- var version = "10.0.0-alpha.91";
52
+ var version = "10.0.0-alpha.92";
51
53
  //#endregion
52
54
  //#region src/prompt.ts
53
55
  /**
@@ -58,7 +60,7 @@ var version = "10.0.0-alpha.91";
58
60
  * named error instead, and the command decides whether to ask.
59
61
  */
60
62
  /** A prompt was needed with no terminal to ask at. */
61
- var PromptNeedsTerminal = class extends Error {
63
+ var PromptNeedsTerminal = class extends GkmError {
62
64
  question;
63
65
  instead;
64
66
  constructor(question, instead) {
@@ -130,7 +132,7 @@ const logger$8 = console;
130
132
  * Validate Dokploy token by making a test API call
131
133
  */
132
134
  async function validateDokployToken(endpoint, token) {
133
- const { DokployApi } = await import("./sniffer-BTtX3NUM.mjs").then((n) => n.c);
135
+ const { DokployApi } = await import("./sniffer-BTtGAtm3.mjs").then((n) => n.c);
134
136
  return new DokployApi({
135
137
  baseUrl: endpoint,
136
138
  token
@@ -514,7 +516,7 @@ async function isTrusted(url) {
514
516
  }
515
517
  }
516
518
  /** The edge has not run, so there is no authority to trust yet. */
517
- var NoLocalAuthority = class extends Error {
519
+ var NoLocalAuthority = class extends GkmError {
518
520
  path;
519
521
  constructor(path) {
520
522
  super(`No local certificate authority at ${path}. It is generated the first time the edge starts, so run "gkm setup" (or "gkm dev") once — and if this project declares no file server, nothing needs one.`);
@@ -523,7 +525,7 @@ var NoLocalAuthority = class extends Error {
523
525
  }
524
526
  };
525
527
  /** A platform with no trust store this knows how to write to. */
526
- var UnsupportedPlatform = class extends Error {
528
+ var UnsupportedPlatform = class extends GkmError {
527
529
  platform;
528
530
  certificate;
529
531
  constructor(platform, certificate) {
@@ -608,7 +610,7 @@ const SIGNED_IN = [
608
610
  "localstack"
609
611
  ];
610
612
  /** Nothing has generated this workspace's local logins yet. */
611
- var NoLocalCredentials = class extends Error {
613
+ var NoLocalCredentials = class extends GkmError {
612
614
  workspace;
613
615
  constructor(workspace) {
614
616
  super(`'${workspace}' has no local logins on this machine yet: they are generated the first time gkm dev, gkm test or gkm setup starts its services. Run one of them, then this again.`);
@@ -658,7 +660,7 @@ const DISCOVERY_QUIET_ENV = "GKM_DISCOVERY_QUIET";
658
660
  /** The route everything is served under. */
659
661
  const BASE = "/__gkm";
660
662
  /** `GKM_DISCOVERY_PORT` is set to something that is not a port. */
661
- var InvalidDiscoveryPort = class extends Error {
663
+ var InvalidDiscoveryPort = class extends GkmError {
662
664
  value;
663
665
  constructor(value) {
664
666
  super(`${DISCOVERY_PORT_ENV}=${value} is not a port. Set it to a number from 0 to 65535 (0 serves discovery on a free port of its own), or unset it to use dev.discoveryPort.`);
@@ -1748,7 +1750,7 @@ function closeFakes(served) {
1748
1750
  //#region src/exec/index.ts
1749
1751
  const logger$6 = console;
1750
1752
  /** `gkm exec` was given nothing to run. */
1751
- var NoCommandSpecified = class extends Error {
1753
+ var NoCommandSpecified = class extends GkmError {
1752
1754
  constructor() {
1753
1755
  super("No command specified. Usage: gkm exec -- <command>");
1754
1756
  this.name = "NoCommandSpecified";
@@ -2324,9 +2326,9 @@ async function workspaceDevCommand(configured, options) {
2324
2326
  for (const { id, port } of fakes) logger$5.log(`🎭 ${id} fake: http://localhost:${port}`);
2325
2327
  logger$5.log(options.migrate || options.seed ? "🗄️ Migrating the databases" : "🗄️ Checking for pending migrations");
2326
2328
  if (options.migrate || options.seed) {
2327
- const { prepareDevDatabases } = await import("./migrate-DbtcuOr_.mjs");
2329
+ const { prepareDevDatabases } = await import("./migrate-BSbZ7-9n.mjs");
2328
2330
  await prepareDevDatabases(workspace, reconciled.env, { seed: !!options.seed });
2329
- } else await import("./migrate-DbtcuOr_.mjs").then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2331
+ } else await import("./migrate-BSbZ7-9n.mjs").then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2330
2332
  logger$5.log(`⚠️ Could not check for pending migrations: ${error instanceof Error ? error.message : String(error)}`);
2331
2333
  });
2332
2334
  const appUrls = {};
@@ -2736,7 +2738,7 @@ function tsxCommand(appRoot, args) {
2736
2738
  }
2737
2739
  }
2738
2740
  /** A port this app must serve on is held by something else. */
2739
- var DevPortInUse = class extends Error {
2741
+ var DevPortInUse = class extends GkmError {
2740
2742
  port;
2741
2743
  holder;
2742
2744
  constructor(port, holder) {
@@ -2753,7 +2755,7 @@ var DevPortInUse = class extends Error {
2753
2755
  * Only these are refused: a port another project holds is moved off instead
2754
2756
  * (see `assignAppPorts`), but moving off our own would start a second copy.
2755
2757
  */
2756
- var WorkspacePortsInUse = class extends Error {
2758
+ var WorkspacePortsInUse = class extends GkmError {
2757
2759
  held;
2758
2760
  constructor(held) {
2759
2761
  super(`This workspace's apps are already running:\n${held.map(({ app, port, holder }) => ` ${app}: ${port} — ${describeHolder(holder)}`).join("\n")}\nA previous \`gkm dev\` left them behind. Stop them (kill the pids above) and start again. Nothing was started.`);
@@ -3210,7 +3212,7 @@ const SUPERSEDED_OUTPUT = [
3210
3212
  function isMainProvider(value) {
3211
3213
  return value === "aws" || value === "server";
3212
3214
  }
3213
- var UnknownBuildProvider = class extends Error {
3215
+ var UnknownBuildProvider = class extends GkmError {
3214
3216
  provider;
3215
3217
  constructor(provider) {
3216
3218
  super(`'${provider}' is not a build target. Pass --provider aws or --provider server, or leave it out to build for where gkm.config.ts deploys.`);
@@ -3219,7 +3221,7 @@ var UnknownBuildProvider = class extends Error {
3219
3221
  }
3220
3222
  };
3221
3223
  /** `--cache` named something that is not a cache backend. */
3222
- var UnknownCacheBackend = class extends Error {
3224
+ var UnknownCacheBackend = class extends GkmError {
3223
3225
  backend;
3224
3226
  constructor(backend) {
3225
3227
  super(`'${backend}' is not a cache backend. Pass --cache upstash, elasticache, db or redis, or leave it out to register the deploy target's.`);
@@ -3379,7 +3381,7 @@ async function buildApp(input) {
3379
3381
  ...production,
3380
3382
  ...telemetry ? { telemetry } : {}
3381
3383
  });
3382
- const { bundleServer } = await import("./bundler-D6eBfVkl.mjs");
3384
+ const { bundleServer } = await import("./bundler-C-AdesaG.mjs");
3383
3385
  await bundleServer({
3384
3386
  entryPoint,
3385
3387
  outputDir: join(outputDir, "dist"),
@@ -3524,7 +3526,7 @@ async function buildWorkers(input) {
3524
3526
  });
3525
3527
  logger$4.log(`Generated worker ${worker.id}: ${crons.length} crons, ${queues.length} queues, ${subscribers.length} subscribers`);
3526
3528
  if (!input.bundle) continue;
3527
- const { bundleServer } = await import("./bundler-D6eBfVkl.mjs");
3529
+ const { bundleServer } = await import("./bundler-C-AdesaG.mjs");
3528
3530
  const outfile = workerBundleName(worker.id);
3529
3531
  await bundleServer({
3530
3532
  entryPoint,
@@ -3610,7 +3612,7 @@ async function buildForTarget(target, context, appRoot, workspaceRoot, endpointG
3610
3612
  let masterKey;
3611
3613
  if (context.production?.bundle && !skipBundle) {
3612
3614
  logger$4.log(`\n📦 Bundling production server...`);
3613
- const { bundleServer } = await import("./bundler-D6eBfVkl.mjs");
3615
+ const { bundleServer } = await import("./bundler-C-AdesaG.mjs");
3614
3616
  const allConstructs = [
3615
3617
  ...endpoints.map((e) => e.construct),
3616
3618
  ...functions.map((f) => f.construct),
@@ -3848,7 +3850,7 @@ function formatRoutes(routes) {
3848
3850
  * `deploy()` as any other target, so there is one way a stack comes up.
3849
3851
  */
3850
3852
  /** `--build` and `--pull` together ask for two different things. */
3851
- var ComposeModeConflict = class extends Error {
3853
+ var ComposeModeConflict = class extends GkmError {
3852
3854
  constructor() {
3853
3855
  super("--build and --pull ask for opposite things: build images from this checkout, or pull a tag CI pushed. Pass one of them.");
3854
3856
  this.name = "ComposeModeConflict";
@@ -3930,12 +3932,37 @@ async function composeCommand(options, deps = {}) {
3930
3932
  deploy: result
3931
3933
  };
3932
3934
  }
3935
+ //#endregion
3936
+ //#region src/debug.ts
3937
+ let _debug = false;
3938
+ /**
3939
+ * Enable debug mode globally.
3940
+ * When enabled, verbose error details are shown everywhere.
3941
+ */
3942
+ function enableDebug() {
3943
+ _debug = true;
3944
+ }
3945
+ /**
3946
+ * Check if debug mode is active.
3947
+ * Activated by `--debug` flag or `GKM_DEBUG=1` env var.
3948
+ */
3949
+ function isDebug() {
3950
+ return _debug || process.env.GKM_DEBUG === "1";
3951
+ }
3933
3952
  /**
3934
3953
  * Format a fatal error for display.
3935
- * Always includes the full stack trace since these are process-ending errors.
3954
+ *
3955
+ * An error gkm raised on purpose ({@link isGkmError}) is `Name: message` —
3956
+ * its message is the answer, and a stack would only point into gkm. Anything
3957
+ * else is unexpected, and prints its stack and every cause beneath it. Debug
3958
+ * mode prints the stack of both.
3936
3959
  */
3937
3960
  function formatError(error) {
3938
3961
  if (!(error instanceof Error)) return String(error);
3962
+ if (isGkmError(error) && !isDebug()) {
3963
+ const cause = error.cause;
3964
+ return cause === void 0 ? `${error.name}: ${error.message}` : `${error.name}: ${error.message}\n\nCaused by: ${cause instanceof Error ? `${cause.name}: ${cause.message}` : String(cause)}`;
3965
+ }
3939
3966
  let output = error.stack ?? error.message;
3940
3967
  let cause = error.cause;
3941
3968
  while (cause) if (cause instanceof Error) {
@@ -3947,6 +3974,14 @@ function formatError(error) {
3947
3974
  }
3948
3975
  return output;
3949
3976
  }
3977
+ /**
3978
+ * End a command that failed: print the error ({@link formatError}) on stderr
3979
+ * and exit 1. What every command's action does with what it throws.
3980
+ */
3981
+ function exitWithError(error) {
3982
+ console.error(formatError(error));
3983
+ process.exit(1);
3984
+ }
3950
3985
  //#endregion
3951
3986
  //#region src/deploy/init.ts
3952
3987
  const logger$3 = console;
@@ -5312,25 +5347,25 @@ function loadPackageJson() {
5312
5347
  * Run: pnpm --filter @geekmidas/cli sync-versions
5313
5348
  */
5314
5349
  const GEEKMIDAS_VERSIONS = {
5315
- "@geekmidas/audit": "~10.0.0-alpha.91",
5316
- "@geekmidas/auth": "~10.0.0-alpha.91",
5317
- "@geekmidas/cache": "~10.0.0-alpha.91",
5318
- "@geekmidas/client": "~10.0.0-alpha.91",
5319
- "@geekmidas/cloud": "~10.0.0-alpha.91",
5320
- "@geekmidas/constructs": "~10.0.0-alpha.91",
5321
- "@geekmidas/db": "~10.0.0-alpha.91",
5322
- "@geekmidas/emailkit": "~10.0.0-alpha.91",
5323
- "@geekmidas/envkit": "~10.0.0-alpha.91",
5324
- "@geekmidas/errors": "~10.0.0-alpha.91",
5325
- "@geekmidas/events": "~10.0.0-alpha.91",
5326
- "@geekmidas/logger": "~10.0.0-alpha.91",
5327
- "@geekmidas/manifest": "~10.0.0-alpha.91",
5328
- "@geekmidas/rate-limit": "~10.0.0-alpha.91",
5329
- "@geekmidas/schema": "~10.0.0-alpha.91",
5330
- "@geekmidas/services": "~10.0.0-alpha.91",
5331
- "@geekmidas/storage": "~10.0.0-alpha.91",
5332
- "@geekmidas/telescope": "~10.0.0-alpha.91",
5333
- "@geekmidas/testkit": "~10.0.0-alpha.91",
5350
+ "@geekmidas/audit": "~10.0.0-alpha.92",
5351
+ "@geekmidas/auth": "~10.0.0-alpha.92",
5352
+ "@geekmidas/cache": "~10.0.0-alpha.92",
5353
+ "@geekmidas/client": "~10.0.0-alpha.92",
5354
+ "@geekmidas/cloud": "~10.0.0-alpha.92",
5355
+ "@geekmidas/constructs": "~10.0.0-alpha.92",
5356
+ "@geekmidas/db": "~10.0.0-alpha.92",
5357
+ "@geekmidas/emailkit": "~10.0.0-alpha.92",
5358
+ "@geekmidas/envkit": "~10.0.0-alpha.92",
5359
+ "@geekmidas/errors": "~10.0.0-alpha.92",
5360
+ "@geekmidas/events": "~10.0.0-alpha.92",
5361
+ "@geekmidas/logger": "~10.0.0-alpha.92",
5362
+ "@geekmidas/manifest": "~10.0.0-alpha.92",
5363
+ "@geekmidas/rate-limit": "~10.0.0-alpha.92",
5364
+ "@geekmidas/schema": "~10.0.0-alpha.92",
5365
+ "@geekmidas/services": "~10.0.0-alpha.92",
5366
+ "@geekmidas/storage": "~10.0.0-alpha.92",
5367
+ "@geekmidas/telescope": "~10.0.0-alpha.92",
5368
+ "@geekmidas/testkit": "~10.0.0-alpha.92",
5334
5369
  "@geekmidas/cli": `~${loadPackageJson().version}`
5335
5370
  };
5336
5371
  //#endregion
@@ -5731,7 +5766,7 @@ const COMMIT = /^[0-9a-f]{40}$/;
5731
5766
  * The `uses:` value for the stages action, with a comment saying which CLI
5732
5767
  * release the pinned commit is.
5733
5768
  */
5734
- function stagesActionUses(commit = "b0922ee71407fefc3e94a0352793ef5e78c1bdea", version = cliVersion()) {
5769
+ function stagesActionUses(commit = "446c06603533dd304ee5655661784b7a4f07e2b7", version = cliVersion()) {
5735
5770
  return commit && COMMIT.test(commit) ? `${STAGES_ACTION}@${commit} # @geekmidas/cli ${version}` : `${STAGES_ACTION}@main # pin to a commit SHA: see the action's README`;
5736
5771
  }
5737
5772
  //#endregion
@@ -7242,7 +7277,7 @@ ${inputs.join("\n")}
7242
7277
  * An SST scaffold asked for without a region. `init` always resolves one —
7243
7278
  * asked, `--region`, or eu-west-1 under `--yes` — so this is a caller's bug.
7244
7279
  */
7245
- var SstNeedsRegion = class extends Error {
7280
+ var SstNeedsRegion = class extends GkmError {
7246
7281
  constructor() {
7247
7282
  super("An SST deploy needs a region: pass --region, e.g. eu-west-1.");
7248
7283
  this.name = "SstNeedsRegion";
@@ -10682,7 +10717,7 @@ function resolveStages(options, answers) {
10682
10717
  return stages;
10683
10718
  }
10684
10719
  /** `--deploy` naming a target init has no scaffold for. */
10685
- var UnknownDeployTarget = class extends Error {
10720
+ var UnknownDeployTarget = class extends GkmError {
10686
10721
  target;
10687
10722
  known;
10688
10723
  constructor(target, known) {
@@ -10701,7 +10736,7 @@ function defaultRegistry(name) {
10701
10736
  return `ghcr.io/${(name ?? "my-org").toLowerCase()}`;
10702
10737
  }
10703
10738
  /** `--region` that is not shaped like one, e.g. `europe` for `eu-west-1`. */
10704
- var NotAnAwsRegion = class extends Error {
10739
+ var NotAnAwsRegion = class extends GkmError {
10705
10740
  region;
10706
10741
  constructor(region) {
10707
10742
  super(`"${region}" is not an AWS region. Use one like eu-west-1.`);
@@ -10831,7 +10866,7 @@ async function secretsSetCommand(key, value, options) {
10831
10866
  logger$2.log(`\n✓ Secret "${key}" set for stage "${stage}" (${store.name})`);
10832
10867
  }
10833
10868
  /** `gkm secrets:unset` for a key the stage does not hold. */
10834
- var SecretNotSet = class extends Error {
10869
+ var SecretNotSet = class extends GkmError {
10835
10870
  key;
10836
10871
  stage;
10837
10872
  constructor(key, stage) {
@@ -10842,7 +10877,7 @@ var SecretNotSet = class extends Error {
10842
10877
  }
10843
10878
  };
10844
10879
  /** `gkm secrets:unset` on a stage that has no secrets at all. */
10845
- var StageSecretsNotFound = class extends Error {
10880
+ var StageSecretsNotFound = class extends GkmError {
10846
10881
  stage;
10847
10882
  constructor(stage) {
10848
10883
  super(`The stage '${stage}' has no secrets, so there is nothing to remove.`);
@@ -11049,8 +11084,8 @@ async function composeStageHosts(options) {
11049
11084
  ...options.profile ? { profile: options.profile } : {},
11050
11085
  ...options.home ? { home: options.home } : {}
11051
11086
  })).read(stage);
11052
- const { deployedStackSecrets } = await import("./compose-Bhmf0n4o.mjs").then((n) => n.l);
11053
- const { composeStack } = await import("./compose-Bhmf0n4o.mjs").then((n) => n.c);
11087
+ const { deployedStackSecrets } = await import("./compose-CTdVeeVk.mjs").then((n) => n.l);
11088
+ const { composeStack } = await import("./compose-CTdVeeVk.mjs").then((n) => n.c);
11054
11089
  const { secrets } = deployedStackSecrets(workspace, stage, stored, manifest);
11055
11090
  const stack = composeStack({
11056
11091
  workspace,
@@ -11144,7 +11179,6 @@ async function provisionStageDns(options) {
11144
11179
  //#endregion
11145
11180
  //#region src/setup/index.ts
11146
11181
  var setup_exports = /* @__PURE__ */ __exportAll({
11147
- StageSecretsUnreadable: () => StageSecretsUnreadable,
11148
11182
  createFreshWorkspaceSecrets: () => createFreshWorkspaceSecrets,
11149
11183
  ensureStageSecrets: () => ensureStageSecrets,
11150
11184
  reconcileSecrets: () => reconcileSecrets,
@@ -11176,7 +11210,7 @@ async function setupCommand(options = {}) {
11176
11210
  logger$1.log(`📦 Workspace: ${workspace.name}`);
11177
11211
  logger$1.log(`📱 Apps: ${Object.keys(workspace.apps).join(", ")}`);
11178
11212
  logger$1.log(`🔑 Stage: ${stage}\n`);
11179
- if (!local) assertStageServer(workspace, stage, await readStageSecrets(await secretsStoreFor(workspace, stage, { ...options.profile ? { profile: options.profile } : {} }), stage, options));
11213
+ if (!local) assertStageServer(workspace, stage, await (await secretsStoreFor(workspace, stage, { ...options.profile ? { profile: options.profile } : {} })).read(stage));
11180
11214
  if (!local && options.dryRun) {
11181
11215
  await provisionDeployed(workspace, stage, options);
11182
11216
  return;
@@ -11195,48 +11229,6 @@ async function setupCommand(options = {}) {
11195
11229
  }
11196
11230
  printSummary(workspace, stage);
11197
11231
  }
11198
- /** Where each AWS store keeps a stage's secrets, as a person reads it. */
11199
- const AWS_STORES = {
11200
- ssm: "SSM Parameter Store",
11201
- "secrets-manager": "Secrets Manager"
11202
- };
11203
- /**
11204
- * A deployed stage's secrets are kept in its AWS account, and no AWS
11205
- * credentials were found to read them with.
11206
- *
11207
- * Raised before any provider runs: even a dry run reads the stage's secrets,
11208
- * since its plan needs the server they name (`GKM_SERVER_IPV4`).
11209
- */
11210
- var StageSecretsUnreadable = class extends Error {
11211
- stage;
11212
- store;
11213
- profile;
11214
- dryRun;
11215
- constructor(stage, store, profile, dryRun, cause) {
11216
- const where = AWS_STORES[store] ?? `the '${store}' store`;
11217
- const command = `gkm setup --stage ${stage}${dryRun ? " --dry-run" : ""}`;
11218
- super(`The '${stage}' stage's secrets are kept in ${where}, in the stage's AWS account, and ` + (profile ? `the AWS profile '${profile}' has no credentials to read them with. Sign in to it (aws sso login --profile ${profile}) or name another: ${command} --profile <profile>.` : `no AWS credentials were found to read them with. Name the account's profile: ${command} --profile <profile>, or AWS_PROFILE=<profile> ${command}.`) + (dryRun ? " A dry run still reads them: its plan needs the server the stage names (GKM_SERVER_IPV4)." : ""), { cause });
11219
- this.stage = stage;
11220
- this.store = store;
11221
- this.profile = profile;
11222
- this.dryRun = dryRun;
11223
- this.name = "StageSecretsUnreadable";
11224
- }
11225
- };
11226
- /**
11227
- * The stage's secrets from its store, refused with
11228
- * {@link StageSecretsUnreadable} when there are no AWS credentials to read
11229
- * them — matched by the SDK's error name, its message being free to change.
11230
- * Any other failure is the store's own, and passes through.
11231
- */
11232
- async function readStageSecrets(store, stage, options) {
11233
- try {
11234
- return await store.read(stage);
11235
- } catch (error) {
11236
- if (error?.name === "CredentialsProviderError") throw new StageSecretsUnreadable(stage, store.name, options.profile, options.dryRun === true, error);
11237
- throw error;
11238
- }
11239
- }
11240
11232
  /**
11241
11233
  * A deployed stage's providers: each one's `ensure()`, in the stage's own
11242
11234
  * account, its keys written into the stage's secrets.
@@ -11479,7 +11471,7 @@ async function readReady(path) {
11479
11471
  }
11480
11472
  }
11481
11473
  /** A name recorded for the test stage without the test stage's suffix. */
11482
- var NotATestDatabase = class extends Error {
11474
+ var NotATestDatabase = class extends GkmError {
11483
11475
  database;
11484
11476
  constructor(database) {
11485
11477
  super(`Refusing to drop '${database}': only the test stage's databases (named '…_${TEST_STAGE}') are dropped after a suite. Delete ${TEST_READY_FILE} if it was edited by hand.`);
@@ -11616,8 +11608,8 @@ function testDatabases(reconciled) {
11616
11608
  * starts without the reference data the app needs.
11617
11609
  */
11618
11610
  async function migrateTestStage(workspace, env) {
11619
- const { migrateAndSeed } = await import("./migrate-DbtcuOr_.mjs");
11620
- const { discover } = await import("./discover-BPelzeGW.mjs").then((n) => n.i);
11611
+ const { migrateAndSeed } = await import("./migrate-BSbZ7-9n.mjs");
11612
+ const { discover } = await import("./discover-qjFapetL.mjs").then((n) => n.i);
11621
11613
  const sources = {};
11622
11614
  const manifest = await discover({
11623
11615
  patterns: constructGlobs(workspace),
@@ -11635,7 +11627,7 @@ async function migrateTestStage(workspace, env) {
11635
11627
  for (const { target, seeded } of seeds) if (seeded.length > 0) console.log(` 🌱 ${target.seeds}: ran ${seeded.join(", ")}`);
11636
11628
  }
11637
11629
  /** `gkm test` outside a project that declares stages, with none named. */
11638
- var NoStageToTest = class extends Error {
11630
+ var NoStageToTest = class extends GkmError {
11639
11631
  constructor() {
11640
11632
  super("No stage to test with: add `stages` to gkm.config.ts, or pass --stage.");
11641
11633
  this.name = "NoStageToTest";
@@ -11903,7 +11895,7 @@ function install(pm, cwd) {
11903
11895
  }
11904
11896
  }
11905
11897
  /** npm did not answer for a package, so there is no version to compare. */
11906
- var RegistryUnavailable = class extends Error {
11898
+ var RegistryUnavailable = class extends GkmError {
11907
11899
  packageName;
11908
11900
  status;
11909
11901
  constructor(packageName, status) {
@@ -11914,7 +11906,7 @@ var RegistryUnavailable = class extends Error {
11914
11906
  }
11915
11907
  };
11916
11908
  /** A dist-tag npm does not have, e.g. `--tag beta` before any beta. */
11917
- var NoReleaseOnTag = class extends Error {
11909
+ var NoReleaseOnTag = class extends GkmError {
11918
11910
  tag;
11919
11911
  tags;
11920
11912
  constructor(tag, tags) {
@@ -11925,7 +11917,7 @@ var NoReleaseOnTag = class extends Error {
11925
11917
  }
11926
11918
  };
11927
11919
  /** The line asked for is behind what is installed; upgrade never goes back. */
11928
- var WouldDowngrade = class extends Error {
11920
+ var WouldDowngrade = class extends GkmError {
11929
11921
  installed;
11930
11922
  tag;
11931
11923
  target;
@@ -11950,7 +11942,7 @@ var InstallFailed = class extends Error {
11950
11942
  //#region src/index.ts
11951
11943
  const program = new Command();
11952
11944
  program.name("gkm").description("GeekMidas backend framework CLI").version(version).option("--cwd <path>", "Change working directory").option("--debug", "Enable debug mode (verbose errors with stack traces)").hook("preAction", () => {
11953
- if (program.opts().debug);
11945
+ if (program.opts().debug) enableDebug();
11954
11946
  });
11955
11947
  program.command("init").description("Scaffold a new project").argument("[name]", "Project name").option("--template <template>", "Project template (minimal, api, serverless, worker)").option("--skip-install", "Skip dependency installation", false).option("-y, --yes", "Skip prompts, use defaults", false).option("--monorepo", "Setup as monorepo with packages/models", false).option("--api-path <path>", "API app path in monorepo (default: apps/api)").option("--pm <manager>", "Package manager (pnpm, npm, yarn, bun)").option("--deploy <target>", "Where it deploys (dokploy, compose, sst, none)").option("--region <region>", "AWS region for an SST deploy (e.g. eu-west-1)").option("--registry <registry>", "Container registry for a compose deploy (e.g. ghcr.io/acme)").option("--stages <names>", "Deployed stages, comma-separated (e.g. staging,prod)").option("--protected-stage <name>", "Which deployed stage is production").option("--local-stage <name>", "What gkm dev runs as (e.g. dev)").action(async (name, options) => {
11956
11948
  try {
@@ -11958,8 +11950,7 @@ program.command("init").description("Scaffold a new project").argument("[name]",
11958
11950
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11959
11951
  await initCommand(name, options);
11960
11952
  } catch (error) {
11961
- console.error(formatError(error));
11962
- process.exit(1);
11953
+ exitWithError(error);
11963
11954
  }
11964
11955
  });
11965
11956
  program.command("trust").description("Trust the local edge's certificate authority, so a browser accepts https").option("--dry-run", "Print the commands instead of running them").action(async (options) => {
@@ -11968,8 +11959,7 @@ program.command("trust").description("Trust the local edge's certificate authori
11968
11959
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11969
11960
  await trustCommand(options);
11970
11961
  } catch (error) {
11971
- console.error(formatError(error));
11972
- process.exit(1);
11962
+ exitWithError(error);
11973
11963
  }
11974
11964
  });
11975
11965
  program.command("setup").description("Reconcile declared constructs — locally, containers and secrets; on a deployed stage, its providers (deploy.objects)").option("--stage <stage>", "Stage name (default: stages.local)").option("--force", "Regenerate secrets even if they exist").option("--skip-docker", "Skip starting Docker services").option("-y, --yes", "Skip prompts").option("--dry-run", "A deployed stage: print what its providers would create or change, and write nothing").option("--profile <profile>", "AWS profile for the stage's account").option("--rotate-keys", "A deployed stage: issue each provisioned key a successor (the old one is deleted after the next deploy)").option("--retire-old-keys", "A deployed stage: delete a rotated-out key now instead of after the next deploy").action(async (options) => {
@@ -11978,8 +11968,7 @@ program.command("setup").description("Reconcile declared constructs — locally,
11978
11968
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11979
11969
  await setupCommand(options);
11980
11970
  } catch (error) {
11981
- console.error(formatError(error));
11982
- process.exit(1);
11971
+ exitWithError(error);
11983
11972
  }
11984
11973
  });
11985
11974
  program.command("build").description("Build handlers and the manifest from declared constructs").option("--provider <provider>", "Build for aws or server (default: where gkm.config.ts deploys)").option("--enable-openapi", "Enable OpenAPI documentation generation for server builds").option("--production", "Build for production (no dev tools, bundled output)").option("--skip-bundle", "Skip bundling step in production build").option("--stage <stage>", "Inject encrypted secrets for deployment stage").option("--mark-optional", "Suffix optional env vars with ? in manifest envVars field (e.g. PORT?)").addOption(new Option("--cache <backend>", "Register the drivers for this cache backend rather than the target default").hideHelp()).action(async (options) => {
@@ -11998,8 +11987,7 @@ program.command("build").description("Build handlers and the manifest from decla
11998
11987
  markOptional: options.markOptional || false
11999
11988
  });
12000
11989
  } catch (error) {
12001
- console.error(formatError(error));
12002
- process.exit(1);
11990
+ exitWithError(error);
12003
11991
  }
12004
11992
  });
12005
11993
  program.command("dev").description("Reconcile constructs and start the dev server with automatic reload").option("-p, --port <port>", "Port to run the development server on").option("--entry <file>", "Entry file to run (bypasses gkm config)").option("--watch", "Watch for file changes (default: true with --entry)").option("--no-watch", "Disable file watching").option("--enable-openapi", "Enable OpenAPI documentation for development server", true).option("--migrate", "Apply pending migrations before the apps start").option("--seed", "Migrate, then run the seeds, before the apps start").option("--fake", "Call each external API’s fake (test/fakes/<id>.ts) instead of the provider").option("--no-subscribers", "Run no topic subscribers: nothing is subscribed, polled or pushed to").action(async (options) => {
@@ -12018,8 +12006,7 @@ program.command("dev").description("Reconcile constructs and start the dev serve
12018
12006
  subscribers: options.subscribers
12019
12007
  });
12020
12008
  } catch (error) {
12021
- console.error(formatError(error));
12022
- process.exit(1);
12009
+ exitWithError(error);
12023
12010
  }
12024
12011
  });
12025
12012
  program.command("dev:credentials").description("Print each local service's address and login — Postgres, MinIO, Mailpit, Redis, … — without starting anything").option("--json", "Print them as JSON, for a script").action(async (options) => {
@@ -12029,8 +12016,7 @@ program.command("dev:credentials").description("Print each local service's addre
12029
12016
  const { devCredentialsCommand } = await Promise.resolve().then(() => credentials_exports);
12030
12017
  await devCredentialsCommand(options);
12031
12018
  } catch (error) {
12032
- console.error(formatError(error));
12033
- process.exit(1);
12019
+ exitWithError(error);
12034
12020
  }
12035
12021
  });
12036
12022
  program.command("exec").description("Run a command with secrets injected into Credentials").argument("<command...>", "Command to run (use -- before command)").action(async (commandArgs) => {
@@ -12039,8 +12025,7 @@ program.command("exec").description("Run a command with secrets injected into Cr
12039
12025
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12040
12026
  await execCommand(commandArgs);
12041
12027
  } catch (error) {
12042
- console.error(formatError(error));
12043
- process.exit(1);
12028
+ exitWithError(error);
12044
12029
  }
12045
12030
  });
12046
12031
  program.command("test").description("Run tests with secrets loaded from environment").option("--stage <stage>", "Stage to load secrets from (default: stages.local)").option("--run", "Run tests once without watch mode").option("--watch", "Enable watch mode").option("--coverage", "Generate coverage report").option("--ui", "Open Vitest UI").option("--auto-setup", "Generate a fresh stage (secrets + key) from the workspace config when none exists (for CI; also via GKM_AUTO_SETUP)").option("--prepare", "Write the test manifest and #test harness, then stop — for a typecheck that runs before the suite").option("--setup", "Reconcile, migrate and seed the test stage and write the harness, then stop — what @geekmidas/cli/vitest runs").option("--teardown", "Drop the test stage's databases the last setup created, then stop — what @geekmidas/cli/vitest runs when the suite ends").argument("[pattern]", "Pattern to filter tests").action(async (pattern, options) => {
@@ -12052,50 +12037,46 @@ program.command("test").description("Run tests with secrets loaded from environm
12052
12037
  pattern
12053
12038
  });
12054
12039
  } catch (error) {
12055
- console.error(formatError(error));
12056
- process.exit(1);
12040
+ exitWithError(error);
12057
12041
  }
12058
12042
  });
12059
12043
  program.command("migrate").description("Apply each database construct's migrations from db/<construct>/migrations/, as its owner").argument("[construct]", "Only this construct, by name").option("--stage <stage>", "The local stage (default) or test — a deploy migrates its own stage").action(async (construct, options) => {
12060
12044
  try {
12061
12045
  const globalOptions = program.opts();
12062
12046
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12063
- const { migrateCommand } = await import("./migrate-DbtcuOr_.mjs");
12047
+ const { migrateCommand } = await import("./migrate-BSbZ7-9n.mjs");
12064
12048
  await migrateCommand({
12065
12049
  ...options,
12066
12050
  ...construct ? { construct } : {}
12067
12051
  });
12068
12052
  } catch (error) {
12069
- console.error(formatError(error));
12070
- process.exit(1);
12053
+ exitWithError(error);
12071
12054
  }
12072
12055
  });
12073
12056
  program.command("seed").description("Migrate, then run each database construct's seeds from db/<construct>/seeds/, as its owner").argument("[construct]", "Only this construct, by name").option("--stage <stage>", "The local stage (default) or test — a deploy seeds its own stage").action(async (construct, options) => {
12074
12057
  try {
12075
12058
  const globalOptions = program.opts();
12076
12059
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12077
- const { seedCommand } = await import("./migrate-DbtcuOr_.mjs");
12060
+ const { seedCommand } = await import("./migrate-BSbZ7-9n.mjs");
12078
12061
  await seedCommand({
12079
12062
  ...options,
12080
12063
  ...construct ? { construct } : {}
12081
12064
  });
12082
12065
  } catch (error) {
12083
- console.error(formatError(error));
12084
- process.exit(1);
12066
+ exitWithError(error);
12085
12067
  }
12086
12068
  });
12087
12069
  program.command("migration").description("Write a construct's next migration: an empty one for a database, the schema change for an auth server").argument("<construct>", "The construct, by name").argument("[name]", "What the migration is called").action(async (construct, name) => {
12088
12070
  try {
12089
12071
  const globalOptions = program.opts();
12090
12072
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12091
- const { migrationCommand } = await import("./migrate-DbtcuOr_.mjs");
12073
+ const { migrationCommand } = await import("./migrate-BSbZ7-9n.mjs");
12092
12074
  await migrationCommand({
12093
12075
  construct,
12094
12076
  ...name ? { name } : {}
12095
12077
  });
12096
12078
  } catch (error) {
12097
- console.error(formatError(error));
12098
- process.exit(1);
12079
+ exitWithError(error);
12099
12080
  }
12100
12081
  });
12101
12082
  program.command("cron").description("Manage cron jobs").action(() => {
@@ -12123,8 +12104,7 @@ program.command("openapi").description("Generate OpenAPI specification from endp
12123
12104
  ...telemetry !== void 0 ? { telemetry } : {}
12124
12105
  });
12125
12106
  } catch (error) {
12126
- console.error(formatError(error));
12127
- process.exit(1);
12107
+ exitWithError(error);
12128
12108
  }
12129
12109
  });
12130
12110
  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) => {
@@ -12133,8 +12113,7 @@ program.command("docker").description("Generate Docker deployment files").option
12133
12113
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12134
12114
  await dockerCommand(options);
12135
12115
  } catch (error) {
12136
- console.error(formatError(error));
12137
- process.exit(1);
12116
+ exitWithError(error);
12138
12117
  }
12139
12118
  });
12140
12119
  program.command("compose").description("Run the workspace's APIs and sites for a stage as one Docker Compose stack behind Caddy").requiredOption("--stage <stage>", "Stage to run — always named, so a stack is never a deployed stage by accident").option("--tag <tag>", "Run the images CI pushed at this tag (sites: <tag>-<stage>); nothing is built").option("--build", "Build images from this checkout, tagged with the commit").option("--pull", "Pull images (at --tag, or latest) rather than build them").option("--push", "With --build: push every image to deploy.registry and start nothing (for CI)").option("--digests-file <path>", "With --push: write each image as <ref>@sha256:… (JSON). With --tag: run the images at those digests").option("--dry-run", "Write the files and print the plan; start nothing").option("--down", "Stop the stage's stack (its volumes are kept)").option("--allow-dev-services", "Deployed stage: run the dev service (MinIO, Mailpit) for every bucket and mail the stage doesn't account for. Not production-grade").option("--skip-dns-check", "Deployed stage: do not check that each public host resolves to GKM_SERVER_IPV4 in the stage secrets before starting (a CDN or proxy in front)").action(async (options) => {
@@ -12143,8 +12122,7 @@ program.command("compose").description("Run the workspace's APIs and sites for a
12143
12122
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12144
12123
  await composeCommand(options);
12145
12124
  } catch (error) {
12146
- console.error(formatError(error));
12147
- process.exit(1);
12125
+ exitWithError(error);
12148
12126
  }
12149
12127
  });
12150
12128
  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) => {
@@ -12158,8 +12136,7 @@ program.command("prepack").description("Generate Docker files for production dep
12158
12136
  registry: options.registry
12159
12137
  });
12160
12138
  } catch (error) {
12161
- console.error(formatError(error));
12162
- process.exit(1);
12139
+ exitWithError(error);
12163
12140
  }
12164
12141
  });
12165
12142
  program.command("secrets:init").description("Initialize secrets for a deployment stage").requiredOption("--stage <stage>", "Stage name (e.g., production, staging)").option("--force", "Overwrite existing secrets").action(async (options) => {
@@ -12168,8 +12145,7 @@ program.command("secrets:init").description("Initialize secrets for a deployment
12168
12145
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12169
12146
  await secretsInitCommand(options);
12170
12147
  } catch (error) {
12171
- console.error(formatError(error));
12172
- process.exit(1);
12148
+ exitWithError(error);
12173
12149
  }
12174
12150
  });
12175
12151
  program.command("secrets:set").description("Set a custom secret for a stage").argument("<key>", "Secret key (e.g., API_KEY)").argument("[value]", "Secret value (reads from stdin if omitted)").requiredOption("--stage <stage>", "Stage name").action(async (key, value, options) => {
@@ -12178,8 +12154,7 @@ program.command("secrets:set").description("Set a custom secret for a stage").ar
12178
12154
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12179
12155
  await secretsSetCommand(key, value, options);
12180
12156
  } catch (error) {
12181
- console.error(formatError(error));
12182
- process.exit(1);
12157
+ exitWithError(error);
12183
12158
  }
12184
12159
  });
12185
12160
  program.command("secrets:unset").description("Remove a custom secret from a stage").argument("<key>", "Secret key (e.g., API_KEY)").requiredOption("--stage <stage>", "Stage name").action(async (key, options) => {
@@ -12188,41 +12163,37 @@ program.command("secrets:unset").description("Remove a custom secret from a stag
12188
12163
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12189
12164
  await secretsUnsetCommand(key, options);
12190
12165
  } catch (error) {
12191
- console.error(formatError(error));
12192
- process.exit(1);
12166
+ exitWithError(error);
12193
12167
  }
12194
12168
  });
12195
12169
  program.command("secrets:add").description("Build the keys a stage must be given — buckets, mail, file servers, third parties' credentials — across every app").requiredOption("--stage <stage>", "Stage name").option("--missing", "Only the keys the stage has not set").option("--json", "Print the keys as JSON and ask nothing").action(async (options) => {
12196
12170
  try {
12197
12171
  const globalOptions = program.opts();
12198
12172
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12199
- const { secretsAddCommand } = await import("./add-BSHk5Ngn.mjs");
12173
+ const { secretsAddCommand } = await import("./add-2Opn2VVE.mjs");
12200
12174
  await secretsAddCommand(options);
12201
12175
  } catch (error) {
12202
- console.error(formatError(error));
12203
- process.exit(1);
12176
+ exitWithError(error);
12204
12177
  }
12205
12178
  });
12206
12179
  program.command("encryption:rotate").description("Add a new current key to an Encryption construct's keyring on a server stage").argument("<construct>", "The Encryption construct (e.g. Pii)").requiredOption("--stage <stage>", "A deployed stage").action(async (construct, options) => {
12207
12180
  try {
12208
12181
  const globalOptions = program.opts();
12209
12182
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12210
- const { encryptionRotateCommand } = await import("./encryption-BrEef7Jk.mjs");
12183
+ const { encryptionRotateCommand } = await import("./encryption-C9Jm9dfn.mjs");
12211
12184
  await encryptionRotateCommand(construct, options);
12212
12185
  } catch (error) {
12213
- console.error(formatError(error));
12214
- process.exit(1);
12186
+ exitWithError(error);
12215
12187
  }
12216
12188
  });
12217
12189
  program.command("encryption:retire").description("Remove an old key from an Encryption construct's keyring, once nothing is under it").argument("<construct>", "The Encryption construct (e.g. Pii)").argument("<key>", "The key to retire (e.g. k1)").requiredOption("--stage <stage>", "A deployed stage").action(async (construct, key, options) => {
12218
12190
  try {
12219
12191
  const globalOptions = program.opts();
12220
12192
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12221
- const { encryptionRetireCommand } = await import("./encryption-BrEef7Jk.mjs");
12193
+ const { encryptionRetireCommand } = await import("./encryption-C9Jm9dfn.mjs");
12222
12194
  await encryptionRetireCommand(construct, key, options);
12223
12195
  } catch (error) {
12224
- console.error(formatError(error));
12225
- process.exit(1);
12196
+ exitWithError(error);
12226
12197
  }
12227
12198
  });
12228
12199
  program.command("secrets:show").description("Show secrets for a stage").requiredOption("--stage <stage>", "Stage name").option("--reveal", "Show actual secret values (not masked)").action(async (options) => {
@@ -12231,8 +12202,7 @@ program.command("secrets:show").description("Show secrets for a stage").required
12231
12202
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12232
12203
  await secretsShowCommand(options);
12233
12204
  } catch (error) {
12234
- console.error(formatError(error));
12235
- process.exit(1);
12205
+ exitWithError(error);
12236
12206
  }
12237
12207
  });
12238
12208
  program.command("secrets:rotate").description("Rotate service passwords").requiredOption("--stage <stage>", "Stage name").option("--service <service>", "Specific service to rotate (postgres, redis, minio, …)").action(async (options) => {
@@ -12241,8 +12211,7 @@ program.command("secrets:rotate").description("Rotate service passwords").requir
12241
12211
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12242
12212
  await secretsRotateCommand(options);
12243
12213
  } catch (error) {
12244
- console.error(formatError(error));
12245
- process.exit(1);
12214
+ exitWithError(error);
12246
12215
  }
12247
12216
  });
12248
12217
  program.command("secrets:import").description("Import secrets from a JSON file").argument("<file>", "JSON file path (e.g., secrets.json)").requiredOption("--stage <stage>", "Stage name").option("--no-merge", "Replace all custom secrets instead of merging").action(async (file, options) => {
@@ -12251,8 +12220,7 @@ program.command("secrets:import").description("Import secrets from a JSON file")
12251
12220
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12252
12221
  await secretsImportCommand(file, options);
12253
12222
  } catch (error) {
12254
- console.error(formatError(error));
12255
- process.exit(1);
12223
+ exitWithError(error);
12256
12224
  }
12257
12225
  });
12258
12226
  program.command("secrets:reconcile").description("Backfill missing custom secrets from workspace config").option("--stage <stage>", "Stage name (default: stages.local)").action(async (options) => {
@@ -12261,7 +12229,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
12261
12229
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12262
12230
  const { loadWorkspaceConfig } = await import("./config.mjs");
12263
12231
  const { reconcileMissingSecrets } = await import("./reconcile-Dh1Jk7WE.mjs");
12264
- const { secretsStoreFor } = await import("./seeds-odfgSCmu.mjs").then((n) => n.Pn);
12232
+ const { secretsStoreFor } = await import("./seeds-CvGQJnPO.mjs").then((n) => n.Pn);
12265
12233
  const { workspace } = await loadWorkspaceConfig();
12266
12234
  const stage = options.stage ?? workspace.stages.local;
12267
12235
  const store = await secretsStoreFor(workspace, stage);
@@ -12270,7 +12238,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
12270
12238
  console.error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
12271
12239
  process.exit(1);
12272
12240
  }
12273
- const { derivedContainers } = await import("./seeds-odfgSCmu.mjs").then((n) => n.ht);
12241
+ const { derivedContainers } = await import("./seeds-CvGQJnPO.mjs").then((n) => n.ht);
12274
12242
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers(workspace, stage));
12275
12243
  if (!result) {
12276
12244
  console.log(`\n✓ Secrets for stage "${stage}" are up-to-date`);
@@ -12280,23 +12248,21 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
12280
12248
  console.log(`\n✓ Reconciled ${result.addedKeys.length} missing secret(s) for stage "${stage}":`);
12281
12249
  for (const key of result.addedKeys) console.log(` + ${key}`);
12282
12250
  } catch (error) {
12283
- console.error(formatError(error));
12284
- process.exit(1);
12251
+ exitWithError(error);
12285
12252
  }
12286
12253
  });
12287
12254
  program.command("secrets:migrate").description("Copy a deployed stage's secrets from the configured store to another (file, ssm, secrets-manager)").requiredOption("--stage <stage>", "A deployed stage").requiredOption("--to <provider>", "file, ssm or secrets-manager").option("--region <region>", "The target's AWS region (default: the configured store's)").option("--profile <profile>", "AWS profile for the stage's account").option("--force", "Replace a stage the target already holds").action(async (options) => {
12288
12255
  try {
12289
12256
  const globalOptions = program.opts();
12290
12257
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12291
- const { secretsMigrateCommand } = await import("./migrate-DWZz9kah.mjs");
12258
+ const { secretsMigrateCommand } = await import("./migrate-IZsYyZ5F.mjs");
12292
12259
  await secretsMigrateCommand(options);
12293
12260
  } catch (error) {
12294
- console.error(formatError(error));
12295
- process.exit(1);
12261
+ exitWithError(error);
12296
12262
  }
12297
12263
  });
12298
12264
  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").option("--allow-dev-services", "Server targets: run the dev service (MinIO, Mailpit) for every bucket and mail the stage doesn't account for. Not production-grade").option("--skip-dns-check", "Compose: do not check that each public host resolves to GKM_SERVER_IPV4 in the stage secrets before starting (a CDN or proxy in front)").action(async (options) => {
12299
- const { deployCli } = await import("./cli-DD-Yk-I5.mjs");
12265
+ const { deployCli } = await import("./cli-BjhaVObS.mjs");
12300
12266
  const globalOptions = program.opts();
12301
12267
  const code = await deployCli({
12302
12268
  cwd: resolve(globalOptions.cwd ?? process.cwd()),
@@ -12314,8 +12280,8 @@ program.command("deploy").description("Deploy a stage through its target").optio
12314
12280
  });
12315
12281
  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) => {
12316
12282
  try {
12317
- const { rollbackStage } = await import("./rollback-CFrNLmxs.mjs").then((n) => n.a);
12318
- const { terminalCredentials } = await import("./terminal-D8TPK7o9.mjs");
12283
+ const { rollbackStage } = await import("./rollback-D1d-fW0r.mjs").then((n) => n.a);
12284
+ const { terminalCredentials } = await import("./terminal-Dtd6BZX9.mjs");
12319
12285
  const globalOptions = program.opts();
12320
12286
  await rollbackStage({
12321
12287
  cwd: resolve(globalOptions.cwd ?? process.cwd()),
@@ -12326,8 +12292,7 @@ program.command("deploy:rollback").description("Put a stage's app back on its pr
12326
12292
  log: (line) => console.log(line)
12327
12293
  });
12328
12294
  } catch (error) {
12329
- console.error(formatError(error));
12330
- process.exit(1);
12295
+ exitWithError(error);
12331
12296
  }
12332
12297
  });
12333
12298
  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) => {
@@ -12342,30 +12307,27 @@ program.command("deploy:init").description("Initialize Dokploy deployment (creat
12342
12307
  registryId: options.registryId
12343
12308
  });
12344
12309
  } catch (error) {
12345
- console.error(formatError(error));
12346
- process.exit(1);
12310
+ exitWithError(error);
12347
12311
  }
12348
12312
  });
12349
12313
  program.command("deploy:github").description("Let GitHub Actions deploy a stage: OIDC role in the stage's AWS account, and the GitHub environment the deploy workflow uses").requiredOption("--stage <stage>", "A deployed stage from gkm.config.ts").option("--profile <profile>", "AWS profile for the stage's account").option("--repo <owner/name>", "GitHub repository (default: this one)").option("--policy-arn <arn>", "Policy for the deploy role (default: AdministratorAccess)").option("--dry-run", "Show the plan without changing AWS or GitHub").action(async (options) => {
12350
12314
  try {
12351
12315
  const globalOptions = program.opts();
12352
12316
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12353
- const { deployGithubCommand } = await import("./github-BCDF6xVH.mjs");
12317
+ const { deployGithubCommand } = await import("./github-B1k42hIt.mjs");
12354
12318
  await deployGithubCommand(options);
12355
12319
  } catch (error) {
12356
- console.error(formatError(error));
12357
- process.exit(1);
12320
+ exitWithError(error);
12358
12321
  }
12359
12322
  });
12360
12323
  program.command("stages").description("The workspace's stages from gkm.config.ts: local, deployed and protected").option("--json", "Print them as JSON").option("--github-output", "Write the stages, and which this workflow run builds and deploys, to $GITHUB_OUTPUT").option("--event <name>", "The event to plan for (default: $GITHUB_EVENT_NAME)").option("--stage <stage>", "The stage a workflow_dispatch deploys").action(async (options) => {
12361
12324
  try {
12362
12325
  const globalOptions = program.opts();
12363
12326
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12364
- const { stagesCommand } = await import("./stages-CnZRYmkI.mjs");
12327
+ const { stagesCommand } = await import("./stages-DY-fQKmo.mjs");
12365
12328
  await stagesCommand(options);
12366
12329
  } catch (error) {
12367
- console.error(formatError(error));
12368
- process.exit(1);
12330
+ exitWithError(error);
12369
12331
  }
12370
12332
  });
12371
12333
  program.command("deploy:list").description("List Dokploy resources (projects, registries)").option("--endpoint <url>", "Dokploy server URL (uses stored credentials if logged in)").option("--projects", "List projects").option("--registries", "List registries").action(async (options) => {
@@ -12391,8 +12353,7 @@ program.command("deploy:list").description("List Dokploy resources (projects, re
12391
12353
  });
12392
12354
  }
12393
12355
  } catch (error) {
12394
- console.error(formatError(error));
12395
- process.exit(1);
12356
+ exitWithError(error);
12396
12357
  }
12397
12358
  });
12398
12359
  program.command("login").description("Authenticate with a deployment or DNS provider").option("--provider <provider>", "Provider to log in to (dokploy, hostinger, godaddy)", "dokploy").option("--service <provider>", "[DEPRECATED] Use --provider instead").option("--token <token>", "API token (will prompt if not provided)").option("--endpoint <url>", "Service endpoint URL").action(async (options) => {
@@ -12414,8 +12375,7 @@ program.command("login").description("Authenticate with a deployment or DNS prov
12414
12375
  endpoint: options.endpoint
12415
12376
  });
12416
12377
  } catch (error) {
12417
- console.error(formatError(error));
12418
- process.exit(1);
12378
+ exitWithError(error);
12419
12379
  }
12420
12380
  });
12421
12381
  program.command("logout").description("Remove stored credentials").option("--provider <provider>", "Whose credentials to remove (dokploy, godaddy, all)", "dokploy").option("--service <provider>", "[DEPRECATED] Use --provider instead").action(async (options) => {
@@ -12424,8 +12384,7 @@ program.command("logout").description("Remove stored credentials").option("--pro
12424
12384
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12425
12385
  await logoutCommand({ provider: options.service ?? options.provider });
12426
12386
  } catch (error) {
12427
- console.error(formatError(error));
12428
- process.exit(1);
12387
+ exitWithError(error);
12429
12388
  }
12430
12389
  });
12431
12390
  program.command("whoami").description("Show current authentication status").action(async () => {
@@ -12434,8 +12393,7 @@ program.command("whoami").description("Show current authentication status").acti
12434
12393
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12435
12394
  await whoamiCommand();
12436
12395
  } catch (error) {
12437
- console.error(formatError(error));
12438
- process.exit(1);
12396
+ exitWithError(error);
12439
12397
  }
12440
12398
  });
12441
12399
  program.command("state:pull").description("Pull deployment state from remote to local").requiredOption("--stage <stage>", "Deployment stage (e.g., production, staging)").action(async (options) => {
@@ -12444,8 +12402,7 @@ program.command("state:pull").description("Pull deployment state from remote to
12444
12402
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12445
12403
  await statePullCommand(options);
12446
12404
  } catch (error) {
12447
- console.error(formatError(error));
12448
- process.exit(1);
12405
+ exitWithError(error);
12449
12406
  }
12450
12407
  });
12451
12408
  program.command("state:push").description("Push deployment state from local to remote").requiredOption("--stage <stage>", "Deployment stage (e.g., production, staging)").action(async (options) => {
@@ -12454,8 +12411,7 @@ program.command("state:push").description("Push deployment state from local to r
12454
12411
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12455
12412
  await statePushCommand(options);
12456
12413
  } catch (error) {
12457
- console.error(formatError(error));
12458
- process.exit(1);
12414
+ exitWithError(error);
12459
12415
  }
12460
12416
  });
12461
12417
  program.command("state:show").description("Show deployment state for a stage").requiredOption("--stage <stage>", "Deployment stage (e.g., production, staging)").option("--json", "Output as JSON").action(async (options) => {
@@ -12464,8 +12420,7 @@ program.command("state:show").description("Show deployment state for a stage").r
12464
12420
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12465
12421
  await stateShowCommand(options);
12466
12422
  } catch (error) {
12467
- console.error(formatError(error));
12468
- process.exit(1);
12423
+ exitWithError(error);
12469
12424
  }
12470
12425
  });
12471
12426
  program.command("state:unlock").description("Release a stage deploy lock left behind by a run that crashed").requiredOption("--stage <stage>", "Deployment stage (e.g., production, staging)").action(async (options) => {
@@ -12474,8 +12429,7 @@ program.command("state:unlock").description("Release a stage deploy lock left be
12474
12429
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12475
12430
  await stateUnlockCommand(options);
12476
12431
  } catch (error) {
12477
- console.error(formatError(error));
12478
- process.exit(1);
12432
+ exitWithError(error);
12479
12433
  }
12480
12434
  });
12481
12435
  program.command("state:diff").description("Compare local and remote deployment state").requiredOption("--stage <stage>", "Deployment stage (e.g., production, staging)").action(async (options) => {
@@ -12484,8 +12438,7 @@ program.command("state:diff").description("Compare local and remote deployment s
12484
12438
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12485
12439
  await stateDiffCommand(options);
12486
12440
  } catch (error) {
12487
- console.error(formatError(error));
12488
- process.exit(1);
12441
+ exitWithError(error);
12489
12442
  }
12490
12443
  });
12491
12444
  program.command("upgrade").description("Upgrade @geekmidas/cli (with --all, every @geekmidas package) along the release line the project is on").option("--dry-run", "Show what would be upgraded without making changes").option("--all", "Every @geekmidas package, and the third-party packages their peers require").option("--tag <tag>", "npm dist-tag to follow (default: the line you are on)").action(async (options) => {
@@ -12494,15 +12447,13 @@ program.command("upgrade").description("Upgrade @geekmidas/cli (with --all, ever
12494
12447
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12495
12448
  await upgradeCommand(options);
12496
12449
  } catch (error) {
12497
- console.error(formatError(error));
12498
- process.exit(1);
12450
+ exitWithError(error);
12499
12451
  }
12500
12452
  });
12501
12453
  try {
12502
12454
  assertDevServicesFlag(process.argv.slice(2));
12503
12455
  } catch (error) {
12504
- console.error(formatError(error));
12505
- process.exit(1);
12456
+ exitWithError(error);
12506
12457
  }
12507
12458
  program.parse();
12508
12459
  //#endregion