@geekmidas/cli 10.0.0-alpha.10 → 10.0.0-alpha.11

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 (138) hide show
  1. package/dist/{CachedStateProvider-CqPdW7CB.cjs → CachedStateProvider-BEBl2wQT.cjs} +1 -1
  2. package/dist/{CachedStateProvider-CqPdW7CB.cjs.map → CachedStateProvider-BEBl2wQT.cjs.map} +1 -1
  3. package/dist/CachedStateProvider-C-8wtlto.mjs +3 -0
  4. package/dist/{CachedStateProvider-DTniehMP.mjs → CachedStateProvider-Co4n5Wvs.mjs} +1 -1
  5. package/dist/{CachedStateProvider-DTniehMP.mjs.map → CachedStateProvider-Co4n5Wvs.mjs.map} +1 -1
  6. package/dist/{CachedStateProvider-BLo7zv7S.cjs → CachedStateProvider-DqhGpzsm.cjs} +1 -1
  7. package/dist/{HostingerProvider-h3EbEp-Z.cjs → HostingerProvider-BOvsgATO.cjs} +1 -1
  8. package/dist/{HostingerProvider-h3EbEp-Z.cjs.map → HostingerProvider-BOvsgATO.cjs.map} +1 -1
  9. package/dist/{HostingerProvider-Cft7lEYr.mjs → HostingerProvider-BcyFRbqV.mjs} +1 -1
  10. package/dist/{HostingerProvider-Cft7lEYr.mjs.map → HostingerProvider-BcyFRbqV.mjs.map} +1 -1
  11. package/dist/{LocalStateProvider-Bn6tS-oL.mjs → LocalStateProvider-Bq-0C0sg.mjs} +1 -1
  12. package/dist/{LocalStateProvider-Bn6tS-oL.mjs.map → LocalStateProvider-Bq-0C0sg.mjs.map} +1 -1
  13. package/dist/{LocalStateProvider-Db9SEjyH.cjs → LocalStateProvider-yjXZXZDM.cjs} +1 -1
  14. package/dist/{LocalStateProvider-Db9SEjyH.cjs.map → LocalStateProvider-yjXZXZDM.cjs.map} +1 -1
  15. package/dist/{Route53Provider-RdpUDJQk.mjs → Route53Provider-C0xmer8U.mjs} +1 -1
  16. package/dist/{Route53Provider-RdpUDJQk.mjs.map → Route53Provider-C0xmer8U.mjs.map} +1 -1
  17. package/dist/{Route53Provider-di2fMM5N.cjs → Route53Provider-CH9XH7bz.cjs} +1 -1
  18. package/dist/{Route53Provider-di2fMM5N.cjs.map → Route53Provider-CH9XH7bz.cjs.map} +1 -1
  19. package/dist/{SSMStateProvider-DyX8s9HI.cjs → SSMStateProvider-CXtNgPfy.cjs} +1 -1
  20. package/dist/{SSMStateProvider-DyX8s9HI.cjs.map → SSMStateProvider-CXtNgPfy.cjs.map} +1 -1
  21. package/dist/{SSMStateProvider-BRt2py-A.mjs → SSMStateProvider-DOZifZfE.mjs} +1 -1
  22. package/dist/{SSMStateProvider-BRt2py-A.mjs.map → SSMStateProvider-DOZifZfE.mjs.map} +1 -1
  23. package/dist/{backup-provisioner-Bgj5Vi_L.mjs → backup-provisioner-DXXg6FIL.mjs} +1 -1
  24. package/dist/{backup-provisioner-Bgj5Vi_L.mjs.map → backup-provisioner-DXXg6FIL.mjs.map} +1 -1
  25. package/dist/{backup-provisioner-BrsHwYG0.cjs → backup-provisioner-cE2PuCTb.cjs} +1 -1
  26. package/dist/{backup-provisioner-BrsHwYG0.cjs.map → backup-provisioner-cE2PuCTb.cjs.map} +1 -1
  27. package/dist/{bundler-BY1OmV1e.cjs → bundler-CaTGtiaO.cjs} +3 -3
  28. package/dist/{bundler-BY1OmV1e.cjs.map → bundler-CaTGtiaO.cjs.map} +1 -1
  29. package/dist/{bundler-Be8Zg4Wd.mjs → bundler-S3ek7ea-.mjs} +3 -3
  30. package/dist/{bundler-Be8Zg4Wd.mjs.map → bundler-S3ek7ea-.mjs.map} +1 -1
  31. package/dist/{config-DVVph9yz.mjs → config-B0L2tvvC.mjs} +2 -2
  32. package/dist/{config-DVVph9yz.mjs.map → config-B0L2tvvC.mjs.map} +1 -1
  33. package/dist/{config-BZ1F0WuA.cjs → config-HhDpJmLO.cjs} +2 -2
  34. package/dist/{config-BZ1F0WuA.cjs.map → config-HhDpJmLO.cjs.map} +1 -1
  35. package/dist/config.cjs +2 -2
  36. package/dist/config.d.mts +2 -2
  37. package/dist/config.mjs +2 -2
  38. package/dist/{credentials-Xamqe_NJ.cjs → credentials-B2Pyh3bJ.cjs} +5 -5
  39. package/dist/{credentials-Xamqe_NJ.cjs.map → credentials-B2Pyh3bJ.cjs.map} +1 -1
  40. package/dist/{credentials-dP8vRVRv.mjs → credentials-CZrys9C5.mjs} +5 -5
  41. package/dist/{credentials-dP8vRVRv.mjs.map → credentials-CZrys9C5.mjs.map} +1 -1
  42. package/dist/dokploy-api-5cK2InBm.cjs +3 -0
  43. package/dist/dokploy-api-D2Ny4Jrc.mjs +3 -0
  44. package/dist/{dokploy-api-aTFPz7_4.mjs → dokploy-api-pdaBryoY.mjs} +1 -1
  45. package/dist/{dokploy-api-aTFPz7_4.mjs.map → dokploy-api-pdaBryoY.mjs.map} +1 -1
  46. package/dist/{dokploy-api-BsVH0y_s.cjs → dokploy-api-zqKe9lHH.cjs} +1 -1
  47. package/dist/{dokploy-api-BsVH0y_s.cjs.map → dokploy-api-zqKe9lHH.cjs.map} +1 -1
  48. package/dist/{emit-CiZS_5Ub.mjs → emit-CIlvnDvV.mjs} +1 -1
  49. package/dist/{emit-CiZS_5Ub.mjs.map → emit-CIlvnDvV.mjs.map} +1 -1
  50. package/dist/{emit-CbcRolsa.cjs → emit-CUD1BWls.cjs} +1 -1
  51. package/dist/{emit-CbcRolsa.cjs.map → emit-CUD1BWls.cjs.map} +1 -1
  52. package/dist/{encryption-C6jaU0hE.cjs → encryption-D2pL3tHH.cjs} +1 -1
  53. package/dist/{encryption-C6jaU0hE.cjs.map → encryption-D2pL3tHH.cjs.map} +1 -1
  54. package/dist/encryption-YDsXXi6w.mjs +3 -0
  55. package/dist/{encryption-D-abyhZx.mjs → encryption-_4zwjOAR.mjs} +1 -1
  56. package/dist/{encryption-D-abyhZx.mjs.map → encryption-_4zwjOAR.mjs.map} +1 -1
  57. package/dist/{encryption-CHzzeR8a.cjs → encryption-sQ2Oxx0d.cjs} +1 -1
  58. package/dist/{fullstack-secrets-C-GGohke.cjs → fullstack-secrets-D6MyHhQP.cjs} +1 -1
  59. package/dist/{fullstack-secrets-C-GGohke.cjs.map → fullstack-secrets-D6MyHhQP.cjs.map} +1 -1
  60. package/dist/{fullstack-secrets-D1o9-G5l.mjs → fullstack-secrets-METaRLS1.mjs} +1 -1
  61. package/dist/{fullstack-secrets-D1o9-G5l.mjs.map → fullstack-secrets-METaRLS1.mjs.map} +1 -1
  62. package/dist/github-BrvaPkFf.cjs +197 -0
  63. package/dist/github-BrvaPkFf.cjs.map +1 -0
  64. package/dist/github-CrpsXSfV.mjs +196 -0
  65. package/dist/github-CrpsXSfV.mjs.map +1 -0
  66. package/dist/{index-C6e-ULLx.d.mts → index-Ayxg_DQY.d.mts} +2 -2
  67. package/dist/{index-C6e-ULLx.d.mts.map → index-Ayxg_DQY.d.mts.map} +1 -1
  68. package/dist/index.cjs +109 -63
  69. package/dist/index.cjs.map +1 -1
  70. package/dist/index.mjs +108 -62
  71. package/dist/index.mjs.map +1 -1
  72. package/dist/keystore-C9rint2E.cjs +101 -0
  73. package/dist/keystore-C9rint2E.cjs.map +1 -0
  74. package/dist/keystore-TxeYM7an.mjs +83 -0
  75. package/dist/keystore-TxeYM7an.mjs.map +1 -0
  76. package/dist/{openapi-SjsgARie.cjs → openapi-DaKlTKxz.cjs} +2 -2
  77. package/dist/{openapi-SjsgARie.cjs.map → openapi-DaKlTKxz.cjs.map} +1 -1
  78. package/dist/{openapi-react-query-CmJ1xDbn.cjs → openapi-react-query-BKH334Ug.cjs} +1 -1
  79. package/dist/{openapi-react-query-CmJ1xDbn.cjs.map → openapi-react-query-BKH334Ug.cjs.map} +1 -1
  80. package/dist/{openapi-react-query-Byltvm_7.mjs → openapi-react-query-DoR5CmzQ.mjs} +1 -1
  81. package/dist/{openapi-react-query-Byltvm_7.mjs.map → openapi-react-query-DoR5CmzQ.mjs.map} +1 -1
  82. package/dist/openapi-react-query.cjs +1 -1
  83. package/dist/openapi-react-query.mjs +1 -1
  84. package/dist/{openapi-Xx0A7Wg0.mjs → openapi-y1d7Kalt.mjs} +2 -2
  85. package/dist/{openapi-Xx0A7Wg0.mjs.map → openapi-y1d7Kalt.mjs.map} +1 -1
  86. package/dist/openapi.cjs +3 -3
  87. package/dist/openapi.d.mts +1 -1
  88. package/dist/openapi.mjs +3 -3
  89. package/dist/reconcile/public.cjs +1 -1
  90. package/dist/reconcile/public.d.mts +1 -1
  91. package/dist/reconcile/public.mjs +1 -1
  92. package/dist/{reconcile-CFs8C_1a.mjs → reconcile-C13ERt1U.mjs} +2 -2
  93. package/dist/{reconcile-CFs8C_1a.mjs.map → reconcile-C13ERt1U.mjs.map} +1 -1
  94. package/dist/{reconcile-D0pimNiy.cjs → reconcile-CYMhFSYy.cjs} +2 -2
  95. package/dist/{reconcile-D0pimNiy.cjs.map → reconcile-CYMhFSYy.cjs.map} +1 -1
  96. package/dist/setup-BWgMs4gg.mjs +12 -0
  97. package/dist/{setup-hC6hI86f.cjs → setup-DOv92pIu.cjs} +6 -6
  98. package/dist/{setup-hC6hI86f.cjs.map → setup-DOv92pIu.cjs.map} +1 -1
  99. package/dist/{setup-C8KOx8_8.mjs → setup-DQo_h_yK.mjs} +6 -6
  100. package/dist/{setup-C8KOx8_8.mjs.map → setup-DQo_h_yK.mjs.map} +1 -1
  101. package/dist/setup-lCx_DcUo.cjs +12 -0
  102. package/dist/{storage-Bi24WfoW.mjs → storage-B020InPW.mjs} +4 -79
  103. package/dist/storage-B020InPW.mjs.map +1 -0
  104. package/dist/{storage-BJmzYxt8.cjs → storage-CSNplaJn.cjs} +4 -85
  105. package/dist/storage-CSNplaJn.cjs.map +1 -0
  106. package/dist/{storage-CYlGwWTj.mjs → storage-DGBzMLZa.mjs} +2 -1
  107. package/dist/{storage-BM9hGpgv.cjs → storage-DlVol_oj.cjs} +2 -1
  108. package/dist/{sync-SizaChmC.cjs → sync-0ILCb-1S.cjs} +2 -2
  109. package/dist/{sync-SizaChmC.cjs.map → sync-0ILCb-1S.cjs.map} +1 -1
  110. package/dist/{sync-CmEuNZsB.mjs → sync-CzHXiR9c.mjs} +2 -2
  111. package/dist/{sync-CmEuNZsB.mjs.map → sync-CzHXiR9c.mjs.map} +1 -1
  112. package/dist/sync-DYENfOt4.cjs +4 -0
  113. package/dist/{sync-hOqAWHR6.mjs → sync-HAau6h_R.mjs} +1 -1
  114. package/dist/{types-6pkp2RRj.d.mts → types-CL7jPFM2.d.mts} +1 -1
  115. package/dist/{types-6pkp2RRj.d.mts.map → types-CL7jPFM2.d.mts.map} +1 -1
  116. package/dist/workspace/index.cjs +1 -1
  117. package/dist/workspace/index.d.mts +2 -2
  118. package/dist/workspace/index.mjs +1 -1
  119. package/dist/{workspace-C6VJQVtG.cjs → workspace-C-a3G_U0.cjs} +30 -4
  120. package/dist/workspace-C-a3G_U0.cjs.map +1 -0
  121. package/dist/workspace-DQxxs7Jk.cjs +10 -0
  122. package/dist/{workspace-zoqRbihZ.mjs → workspace-DaEX7FEg.mjs} +25 -5
  123. package/dist/workspace-DaEX7FEg.mjs.map +1 -0
  124. package/dist/workspace-DbI580qS.mjs +9 -0
  125. package/package.json +11 -11
  126. package/dist/CachedStateProvider-BxoAm-B2.mjs +0 -3
  127. package/dist/dokploy-api-BS2xnJLZ.mjs +0 -3
  128. package/dist/dokploy-api-BuxDRo3l.cjs +0 -3
  129. package/dist/encryption-CQUncu7v.mjs +0 -3
  130. package/dist/setup-BA8ciTPU.mjs +0 -11
  131. package/dist/setup-BsZvZP6f.cjs +0 -11
  132. package/dist/storage-BJmzYxt8.cjs.map +0 -1
  133. package/dist/storage-Bi24WfoW.mjs.map +0 -1
  134. package/dist/sync-D306yOWu.cjs +0 -4
  135. package/dist/workspace-BzrG_2SI.mjs +0 -8
  136. package/dist/workspace-C6VJQVtG.cjs.map +0 -1
  137. package/dist/workspace-XXtNhqJl.cjs +0 -9
  138. package/dist/workspace-zoqRbihZ.mjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -1,21 +1,22 @@
1
1
  #!/usr/bin/env -S npx tsx
2
2
  import { __require } from "./chunk-Duj1WY3L.mjs";
3
3
  import { ConstructGenerator, DEFAULT_CACHE, discover, isPartitionedRoutes } from "./discover-CAlFgYec.mjs";
4
- import { derivedApps, getAppNameFromCwd, loadAppConfig, loadConfig, loadWorkspaceConfig, parseModuleConfig } from "./config-DVVph9yz.mjs";
5
- import { allConstructGlobs, assertDeployedStage, deployedProblems, getAppBuildOrder, getAppGkmConfig, getDependencyEnvVars, getDeployTargetError, getPublicEnvPrefix, isDeployTargetSupported, stageProblems, stripPublicPrefix } from "./workspace-zoqRbihZ.mjs";
4
+ import { derivedApps, getAppNameFromCwd, loadAppConfig, loadConfig, loadWorkspaceConfig, parseModuleConfig } from "./config-B0L2tvvC.mjs";
5
+ import { InvalidStages, allConstructGlobs, assertDeployedStage, deployedProblems, getAppBuildOrder, getAppGkmConfig, getDependencyEnvVars, getDeployTargetError, getPublicEnvPrefix, isDeployTargetSupported, stageProblems, stripPublicPrefix } from "./workspace-DaEX7FEg.mjs";
6
6
  import { getCredentialsPath, getDokployCredentials, getDokployRegistryId, getDokployToken, removeDokployCredentials, storeDokployCredentials, storeDokployRegistryId, storeHostingerToken } from "./credentials-B5zRHdAl.mjs";
7
- import { applyPostgres, cacheBackendOf, constructGlobs, createCredentialsPreload, createEntryWrapper, derivedContainers, emailBackendOf, findAvailablePort, isPortAvailable, loadEnvFiles, loadSecretsForApp, prepareEntryCredentials, providerOf, reconcileWorkspace, resolveServicePorts, resourceName, rewriteUrlsWithPorts, startWorkspaceServices, storageBackendOf, usesConstructs } from "./credentials-dP8vRVRv.mjs";
7
+ import { applyPostgres, cacheBackendOf, constructGlobs, createCredentialsPreload, createEntryWrapper, derivedContainers, emailBackendOf, findAvailablePort, isPortAvailable, loadEnvFiles, loadSecretsForApp, prepareEntryCredentials, providerOf, reconcileWorkspace, resolveServicePorts, resourceName, rewriteUrlsWithPorts, startWorkspaceServices, storageBackendOf, usesConstructs } from "./credentials-CZrys9C5.mjs";
8
8
  import { createStageSecrets, rotateServicePassword } from "./generator-VE2JrFlY.mjs";
9
- import { getKeyPath, maskPassword, readStageSecrets, secretsExist, setCustomSecret, toEmbeddableSecrets, writeStageSecrets } from "./storage-Bi24WfoW.mjs";
10
- import { EndpointGenerator, OPENAPI_OUTPUT_PATH, generateOpenApi, generateOpenApiFrom, normalizeRoutes, openapiCommand, resolveOpenApiConfig, runtimeFor } from "./openapi-Xx0A7Wg0.mjs";
11
- import { withCompute, withRoutes } from "./emit-CiZS_5Ub.mjs";
12
- import { DokployApi } from "./dokploy-api-aTFPz7_4.mjs";
13
- import { encryptSecrets } from "./encryption-D-abyhZx.mjs";
14
- import { CachedStateProvider } from "./CachedStateProvider-DTniehMP.mjs";
15
- import { generateDbPassword, generateDbUrl, generateFullstackCustomSecrets } from "./fullstack-secrets-D1o9-G5l.mjs";
16
- import { generateReactQueryCommand } from "./openapi-react-query-Byltvm_7.mjs";
17
- import "./sync-CmEuNZsB.mjs";
18
- import { setupCommand, trustCommand } from "./setup-C8KOx8_8.mjs";
9
+ import { getKeyPath } from "./keystore-TxeYM7an.mjs";
10
+ import { maskPassword, readStageSecrets, secretsExist, setCustomSecret, toEmbeddableSecrets, writeStageSecrets } from "./storage-B020InPW.mjs";
11
+ import { EndpointGenerator, OPENAPI_OUTPUT_PATH, generateOpenApi, generateOpenApiFrom, normalizeRoutes, openapiCommand, resolveOpenApiConfig, runtimeFor } from "./openapi-y1d7Kalt.mjs";
12
+ import { withCompute, withRoutes } from "./emit-CIlvnDvV.mjs";
13
+ import { DokployApi } from "./dokploy-api-pdaBryoY.mjs";
14
+ import { encryptSecrets } from "./encryption-_4zwjOAR.mjs";
15
+ import { CachedStateProvider } from "./CachedStateProvider-Co4n5Wvs.mjs";
16
+ import { generateDbPassword, generateDbUrl, generateFullstackCustomSecrets } from "./fullstack-secrets-METaRLS1.mjs";
17
+ import { generateReactQueryCommand } from "./openapi-react-query-DoR5CmzQ.mjs";
18
+ import "./sync-CzHXiR9c.mjs";
19
+ import { setupCommand, trustCommand } from "./setup-DQo_h_yK.mjs";
19
20
  import { createRequire } from "node:module";
20
21
  import { copyFileSync, existsSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
21
22
  import { basename, dirname, isAbsolute, join, parse, relative, resolve } from "node:path";
@@ -43,7 +44,7 @@ import prompts from "prompts";
43
44
 
44
45
  //#region package.json
45
46
  var name = "@geekmidas/cli";
46
- var version = "10.0.0-alpha.10";
47
+ var version = "10.0.0-alpha.11";
47
48
  var description = "CLI tools for building Lambda handlers, server applications, and generating OpenAPI specs";
48
49
  var private$1 = false;
49
50
  var type = "module";
@@ -188,7 +189,7 @@ const logger$11 = console;
188
189
  * Validate Dokploy token by making a test API call
189
190
  */
190
191
  async function validateDokployToken(endpoint, token) {
191
- const { DokployApi: DokployApi$1 } = await import("./dokploy-api-BS2xnJLZ.mjs");
192
+ const { DokployApi: DokployApi$1 } = await import("./dokploy-api-D2Ny4Jrc.mjs");
192
193
  const api = new DokployApi$1({
193
194
  baseUrl: endpoint,
194
195
  token
@@ -2639,7 +2640,7 @@ async function buildForProvider(provider, context, rootOutputDir, endpointGenera
2639
2640
  let masterKey;
2640
2641
  if (context.production?.bundle && !skipBundle) {
2641
2642
  logger$7.log(`\n📦 Bundling production server...`);
2642
- const { bundleServer } = await import("./bundler-Be8Zg4Wd.mjs");
2643
+ const { bundleServer } = await import("./bundler-S3ek7ea-.mjs");
2643
2644
  const allConstructs = [
2644
2645
  ...endpoints.map((e) => e.construct),
2645
2646
  ...functions.map((f) => f.construct),
@@ -3592,11 +3593,11 @@ async function createDnsProvider(options) {
3592
3593
  if (isDnsProvider(config.provider)) return config.provider;
3593
3594
  const provider = config.provider;
3594
3595
  if (provider === "hostinger") {
3595
- const { HostingerProvider } = await import("./HostingerProvider-Cft7lEYr.mjs");
3596
+ const { HostingerProvider } = await import("./HostingerProvider-BcyFRbqV.mjs");
3596
3597
  return new HostingerProvider();
3597
3598
  }
3598
3599
  if (provider === "route53") {
3599
- const { Route53Provider } = await import("./Route53Provider-RdpUDJQk.mjs");
3600
+ const { Route53Provider } = await import("./Route53Provider-C0xmer8U.mjs");
3600
3601
  const route53Config = config;
3601
3602
  return new Route53Provider({
3602
3603
  region: route53Config.region,
@@ -5923,20 +5924,20 @@ function isStateProvider(value) {
5923
5924
  async function createStateProvider(options) {
5924
5925
  const { config, workspaceRoot, workspaceName } = options;
5925
5926
  if (!config) {
5926
- const { LocalStateProvider } = await import("./LocalStateProvider-Bn6tS-oL.mjs");
5927
+ const { LocalStateProvider } = await import("./LocalStateProvider-Bq-0C0sg.mjs");
5927
5928
  return new LocalStateProvider(workspaceRoot);
5928
5929
  }
5929
5930
  if (isStateProvider(config.provider)) return config.provider;
5930
5931
  const provider = config.provider;
5931
5932
  if (provider === "local") {
5932
- const { LocalStateProvider } = await import("./LocalStateProvider-Bn6tS-oL.mjs");
5933
+ const { LocalStateProvider } = await import("./LocalStateProvider-Bq-0C0sg.mjs");
5933
5934
  return new LocalStateProvider(workspaceRoot);
5934
5935
  }
5935
5936
  if (provider === "ssm") {
5936
5937
  if (!workspaceName) throw new Error("Workspace name is required for SSM state provider. Set \"name\" in gkm.config.ts.");
5937
- const { LocalStateProvider } = await import("./LocalStateProvider-Bn6tS-oL.mjs");
5938
- const { SSMStateProvider } = await import("./SSMStateProvider-BRt2py-A.mjs");
5939
- const { CachedStateProvider: CachedStateProvider$1 } = await import("./CachedStateProvider-BxoAm-B2.mjs");
5938
+ const { LocalStateProvider } = await import("./LocalStateProvider-Bq-0C0sg.mjs");
5939
+ const { SSMStateProvider } = await import("./SSMStateProvider-DOZifZfE.mjs");
5940
+ const { CachedStateProvider: CachedStateProvider$1 } = await import("./CachedStateProvider-C-8wtlto.mjs");
5940
5941
  const ssmConfig = config;
5941
5942
  const local = new LocalStateProvider(workspaceRoot);
5942
5943
  const ssm = SSMStateProvider.create({
@@ -6812,7 +6813,7 @@ async function workspaceDeployCommand(configured, options) {
6812
6813
  const backupCluster = Object.values(declaredClusters)[0];
6813
6814
  if (workspace.deploy?.backups && backupCluster) {
6814
6815
  logger$3.log("\n💾 Provisioning backup destination...");
6815
- const { provisionBackupDestination } = await import("./backup-provisioner-Bgj5Vi_L.mjs");
6816
+ const { provisionBackupDestination } = await import("./backup-provisioner-DXXg6FIL.mjs");
6816
6817
  const backupState = await provisionBackupDestination({
6817
6818
  api,
6818
6819
  projectId: project.projectId,
@@ -8026,26 +8027,26 @@ const CLI_VERSION = `~${pkg.version}`;
8026
8027
  * Run: pnpm --filter @geekmidas/cli sync-versions
8027
8028
  */
8028
8029
  const GEEKMIDAS_VERSIONS = {
8029
- "@geekmidas/audit": "~10.0.0-alpha.10",
8030
- "@geekmidas/auth": "~10.0.0-alpha.10",
8031
- "@geekmidas/cache": "~10.0.0-alpha.10",
8032
- "@geekmidas/client": "~10.0.0-alpha.10",
8033
- "@geekmidas/cloud": "~10.0.0-alpha.10",
8034
- "@geekmidas/constructs": "~10.0.0-alpha.10",
8035
- "@geekmidas/db": "~10.0.0-alpha.10",
8036
- "@geekmidas/emailkit": "~10.0.0-alpha.10",
8037
- "@geekmidas/envkit": "~10.0.0-alpha.10",
8038
- "@geekmidas/errors": "~10.0.0-alpha.10",
8039
- "@geekmidas/events": "~10.0.0-alpha.10",
8040
- "@geekmidas/logger": "~10.0.0-alpha.10",
8041
- "@geekmidas/manifest": "~10.0.0-alpha.10",
8042
- "@geekmidas/rate-limit": "~10.0.0-alpha.10",
8043
- "@geekmidas/schema": "~10.0.0-alpha.10",
8044
- "@geekmidas/services": "~10.0.0-alpha.10",
8045
- "@geekmidas/storage": "~10.0.0-alpha.10",
8046
- "@geekmidas/studio": "~10.0.0-alpha.10",
8047
- "@geekmidas/telescope": "~10.0.0-alpha.10",
8048
- "@geekmidas/testkit": "~10.0.0-alpha.10",
8030
+ "@geekmidas/audit": "~10.0.0-alpha.11",
8031
+ "@geekmidas/auth": "~10.0.0-alpha.11",
8032
+ "@geekmidas/cache": "~10.0.0-alpha.11",
8033
+ "@geekmidas/client": "~10.0.0-alpha.11",
8034
+ "@geekmidas/cloud": "~10.0.0-alpha.11",
8035
+ "@geekmidas/constructs": "~10.0.0-alpha.11",
8036
+ "@geekmidas/db": "~10.0.0-alpha.11",
8037
+ "@geekmidas/emailkit": "~10.0.0-alpha.11",
8038
+ "@geekmidas/envkit": "~10.0.0-alpha.11",
8039
+ "@geekmidas/errors": "~10.0.0-alpha.11",
8040
+ "@geekmidas/events": "~10.0.0-alpha.11",
8041
+ "@geekmidas/logger": "~10.0.0-alpha.11",
8042
+ "@geekmidas/manifest": "~10.0.0-alpha.11",
8043
+ "@geekmidas/rate-limit": "~10.0.0-alpha.11",
8044
+ "@geekmidas/schema": "~10.0.0-alpha.11",
8045
+ "@geekmidas/services": "~10.0.0-alpha.11",
8046
+ "@geekmidas/storage": "~10.0.0-alpha.11",
8047
+ "@geekmidas/studio": "~10.0.0-alpha.11",
8048
+ "@geekmidas/telescope": "~10.0.0-alpha.11",
8049
+ "@geekmidas/testkit": "~10.0.0-alpha.11",
8049
8050
  "@geekmidas/cli": CLI_VERSION
8050
8051
  };
8051
8052
 
@@ -9842,7 +9843,7 @@ function deployPackage(options) {
9842
9843
  }
9843
9844
  function generateDeployFiles(options) {
9844
9845
  if (options.deployTarget !== "sst") return [];
9845
- if (!options.region) throw new Error("An SST deploy needs a region.");
9846
+ if (!options.region) throw new SstNeedsRegion();
9846
9847
  const db = databaseFor();
9847
9848
  const mail = emailFor();
9848
9849
  const hasDatabase = options.template === "fullstack" || options.services.db;
@@ -9910,6 +9911,16 @@ ${inputs.join("\n")}
9910
9911
  `
9911
9912
  }];
9912
9913
  }
9914
+ /**
9915
+ * An SST scaffold asked for without a region. `init` always resolves one —
9916
+ * asked, `--region`, or eu-west-1 under `--yes` — so this is a caller's bug.
9917
+ */
9918
+ var SstNeedsRegion = class extends Error {
9919
+ constructor() {
9920
+ super("An SST deploy needs a region: pass --region, e.g. eu-west-1.");
9921
+ this.name = "SstNeedsRegion";
9922
+ }
9923
+ };
9913
9924
 
9914
9925
  //#endregion
9915
9926
  //#region src/init/generators/monorepo.ts
@@ -14091,8 +14102,8 @@ const AWS_REGION = /^[a-z]{2}(-gov)?-[a-z]+-\d$/;
14091
14102
  async function initCommand(projectName, options = {}) {
14092
14103
  const cwd = process.cwd();
14093
14104
  const detectedPkgManager = detectPackageManager(cwd);
14094
- if (options.deploy && !deployTargetChoices.some((choice) => choice.value === options.deploy)) throw new Error(`Unknown deploy target "${options.deploy}". Use ${deployTargetChoices.map((c) => c.value).join(", ")}.`);
14095
- if (options.region && !AWS_REGION.test(options.region)) throw new Error(`"${options.region}" is not an AWS region. Use one like eu-west-1.`);
14105
+ if (options.deploy && !deployTargetChoices.some((choice) => choice.value === options.deploy)) throw new UnknownDeployTarget(options.deploy, deployTargetChoices.map((c) => c.value));
14106
+ if (options.region && !AWS_REGION.test(options.region)) throw new NotAnAwsRegion(options.region);
14096
14107
  if (options.stages || options.localStage || options.protectedStage) {
14097
14108
  const deployed = stageList(options.stages ?? "");
14098
14109
  const problems = [
@@ -14103,7 +14114,7 @@ async function initCommand(projectName, options = {}) {
14103
14114
  }) : [],
14104
14115
  ...options.protectedStage && !deployed.includes(options.protectedStage) ? [`--protected-stage "${options.protectedStage}" is not in --stages`] : []
14105
14116
  ];
14106
- if (problems.length) throw new Error([...new Set(problems)].join("\n"));
14117
+ if (problems.length) throw new InvalidStages([...new Set(problems)]);
14107
14118
  }
14108
14119
  let deployedSoFar = [];
14109
14120
  prompts.override({});
@@ -14511,9 +14522,26 @@ function resolveStages(options, answers) {
14511
14522
  ...kept ? { protected: [kept] } : {}
14512
14523
  };
14513
14524
  const problems = stageProblems(stages);
14514
- if (problems.length) throw new Error(problems.join("\n"));
14525
+ if (problems.length) throw new InvalidStages(problems);
14515
14526
  return stages;
14516
14527
  }
14528
+ /** `--deploy` naming a target init has no scaffold for. */
14529
+ var UnknownDeployTarget = class extends Error {
14530
+ constructor(target, known) {
14531
+ super(`Unknown deploy target "${target}". Use ${known.join(", ")}.`);
14532
+ this.target = target;
14533
+ this.known = known;
14534
+ this.name = "UnknownDeployTarget";
14535
+ }
14536
+ };
14537
+ /** `--region` that is not shaped like one, e.g. `europe` for `eu-west-1`. */
14538
+ var NotAnAwsRegion = class extends Error {
14539
+ constructor(region) {
14540
+ super(`"${region}" is not an AWS region. Use one like eu-west-1.`);
14541
+ this.region = region;
14542
+ this.name = "NotAnAwsRegion";
14543
+ }
14544
+ };
14517
14545
 
14518
14546
  //#endregion
14519
14547
  //#region src/secrets/index.ts
@@ -14726,11 +14754,11 @@ function maskUrl(url) {
14726
14754
  async function testCommand(options = {}) {
14727
14755
  const cwd = process.cwd();
14728
14756
  const stage = options.stage ?? await loadWorkspaceConfig(cwd).then((loaded) => loaded.workspace.stages.local).catch(() => void 0);
14729
- if (!stage) throw new Error("No stage to test with: add `stages` to gkm.config.ts, or pass --stage.");
14757
+ if (!stage) throw new NoStageToTest();
14730
14758
  console.log(`\n🧪 Running tests with ${stage} environment...\n`);
14731
14759
  const autoSetup = options.autoSetup || Boolean(process.env.GKM_AUTO_SETUP);
14732
14760
  if (autoSetup) {
14733
- const { ensureStageSecrets } = await import("./setup-BA8ciTPU.mjs");
14761
+ const { ensureStageSecrets } = await import("./setup-BWgMs4gg.mjs");
14734
14762
  const generated = await ensureStageSecrets(stage, cwd);
14735
14763
  if (generated) console.log(` 🔐 Generated fresh ${stage} secrets (auto-setup)`);
14736
14764
  }
@@ -14817,6 +14845,13 @@ function rewriteDatabaseUrlForTests(env) {
14817
14845
  }
14818
14846
  return result;
14819
14847
  }
14848
+ /** `gkm test` outside a project that declares stages, with none named. */
14849
+ var NoStageToTest = class extends Error {
14850
+ constructor() {
14851
+ super("No stage to test with: add `stages` to gkm.config.ts, or pass --stage.");
14852
+ this.name = "NoStageToTest";
14853
+ }
14854
+ };
14820
14855
 
14821
14856
  //#endregion
14822
14857
  //#region src/upgrade/version.ts
@@ -15359,13 +15394,13 @@ program.command("secrets:push").description("Push secrets to remote provider (SS
15359
15394
  const globalOptions = program.opts();
15360
15395
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
15361
15396
  const { loadWorkspaceConfig: loadWorkspaceConfig$1 } = await import("./config.mjs");
15362
- const { pushSecrets } = await import("./sync-hOqAWHR6.mjs");
15363
- const { reconcileMissingSecrets } = await import("./reconcile-CFs8C_1a.mjs");
15364
- const { readStageSecrets: readStageSecrets$1, writeStageSecrets: writeStageSecrets$1 } = await import("./storage-CYlGwWTj.mjs");
15397
+ const { pushSecrets } = await import("./sync-HAau6h_R.mjs");
15398
+ const { reconcileMissingSecrets } = await import("./reconcile-C13ERt1U.mjs");
15399
+ const { readStageSecrets: readStageSecrets$1, writeStageSecrets: writeStageSecrets$1 } = await import("./storage-DGBzMLZa.mjs");
15365
15400
  const { workspace } = await loadWorkspaceConfig$1();
15366
15401
  const secrets = await readStageSecrets$1(options.stage, workspace.root);
15367
15402
  if (secrets) {
15368
- const { derivedContainers: derivedContainers$1 } = await import("./workspace-BzrG_2SI.mjs");
15403
+ const { derivedContainers: derivedContainers$1 } = await import("./workspace-DbI580qS.mjs");
15369
15404
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers$1(workspace, options.stage));
15370
15405
  if (result) {
15371
15406
  await writeStageSecrets$1(result.secrets, workspace.root);
@@ -15385,16 +15420,16 @@ program.command("secrets:pull").description("Pull secrets from remote provider (
15385
15420
  const globalOptions = program.opts();
15386
15421
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
15387
15422
  const { loadWorkspaceConfig: loadWorkspaceConfig$1 } = await import("./config.mjs");
15388
- const { pullSecrets } = await import("./sync-hOqAWHR6.mjs");
15389
- const { writeStageSecrets: writeStageSecrets$1 } = await import("./storage-CYlGwWTj.mjs");
15390
- const { reconcileMissingSecrets } = await import("./reconcile-CFs8C_1a.mjs");
15423
+ const { pullSecrets } = await import("./sync-HAau6h_R.mjs");
15424
+ const { writeStageSecrets: writeStageSecrets$1 } = await import("./storage-DGBzMLZa.mjs");
15425
+ const { reconcileMissingSecrets } = await import("./reconcile-C13ERt1U.mjs");
15391
15426
  const { workspace } = await loadWorkspaceConfig$1();
15392
15427
  let secrets = await pullSecrets(options.stage, workspace);
15393
15428
  if (!secrets) {
15394
15429
  console.error(`No remote secrets found for stage "${options.stage}".`);
15395
15430
  process.exit(1);
15396
15431
  }
15397
- const { derivedContainers: derivedContainers$1 } = await import("./workspace-BzrG_2SI.mjs");
15432
+ const { derivedContainers: derivedContainers$1 } = await import("./workspace-DbI580qS.mjs");
15398
15433
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers$1(workspace, options.stage));
15399
15434
  if (result) {
15400
15435
  secrets = result.secrets;
@@ -15413,8 +15448,8 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
15413
15448
  const globalOptions = program.opts();
15414
15449
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
15415
15450
  const { loadWorkspaceConfig: loadWorkspaceConfig$1 } = await import("./config.mjs");
15416
- const { reconcileMissingSecrets } = await import("./reconcile-CFs8C_1a.mjs");
15417
- const { readStageSecrets: readStageSecrets$1, writeStageSecrets: writeStageSecrets$1 } = await import("./storage-CYlGwWTj.mjs");
15451
+ const { reconcileMissingSecrets } = await import("./reconcile-C13ERt1U.mjs");
15452
+ const { readStageSecrets: readStageSecrets$1, writeStageSecrets: writeStageSecrets$1 } = await import("./storage-DGBzMLZa.mjs");
15418
15453
  const { workspace } = await loadWorkspaceConfig$1();
15419
15454
  const stage = options.stage ?? workspace.stages.local;
15420
15455
  const secrets = await readStageSecrets$1(stage, workspace.root);
@@ -15422,7 +15457,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
15422
15457
  console.error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
15423
15458
  process.exit(1);
15424
15459
  }
15425
- const { derivedContainers: derivedContainers$1 } = await import("./workspace-BzrG_2SI.mjs");
15460
+ const { derivedContainers: derivedContainers$1 } = await import("./workspace-DbI580qS.mjs");
15426
15461
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers$1(workspace, stage));
15427
15462
  if (!result) {
15428
15463
  console.log(`\n✓ Secrets for stage "${stage}" are up-to-date`);
@@ -15477,6 +15512,17 @@ program.command("deploy:init").description("Initialize Dokploy deployment (creat
15477
15512
  process.exit(1);
15478
15513
  }
15479
15514
  });
15515
+ 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) => {
15516
+ try {
15517
+ const globalOptions = program.opts();
15518
+ if (globalOptions.cwd) process.chdir(globalOptions.cwd);
15519
+ const { deployGithubCommand } = await import("./github-CrpsXSfV.mjs");
15520
+ await deployGithubCommand(options);
15521
+ } catch (error) {
15522
+ console.error(formatError(error));
15523
+ process.exit(1);
15524
+ }
15525
+ });
15480
15526
  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) => {
15481
15527
  try {
15482
15528
  const globalOptions = program.opts();