@geekmidas/cli 10.0.0-alpha.76 → 10.0.0-alpha.78

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 (133) hide show
  1. package/dist/{LegacyStateStore-dyq07_Ir.mjs → LegacyStateStore-Ceq7A_75.mjs} +2 -2
  2. package/dist/{LegacyStateStore-dyq07_Ir.mjs.map → LegacyStateStore-Ceq7A_75.mjs.map} +1 -1
  3. package/dist/{LegacyStateStore-DwngfJxr.cjs → LegacyStateStore-Z-EKUGSX.cjs} +2 -2
  4. package/dist/{LegacyStateStore-DwngfJxr.cjs.map → LegacyStateStore-Z-EKUGSX.cjs.map} +1 -1
  5. package/dist/{LocalStateStore-B0NCde8Z.cjs → LocalStateStore-Bocb8dmZ.cjs} +2 -2
  6. package/dist/{LocalStateStore-B0NCde8Z.cjs.map → LocalStateStore-Bocb8dmZ.cjs.map} +1 -1
  7. package/dist/{LocalStateStore-DLxCCatI.mjs → LocalStateStore-C72bwpG2.mjs} +2 -2
  8. package/dist/{LocalStateStore-DLxCCatI.mjs.map → LocalStateStore-C72bwpG2.mjs.map} +1 -1
  9. package/dist/{S3StateStore-BOenb-3o.cjs → S3StateStore-35YfcdL_.cjs} +2 -2
  10. package/dist/{S3StateStore-BOenb-3o.cjs.map → S3StateStore-35YfcdL_.cjs.map} +1 -1
  11. package/dist/{S3StateStore-CGK_4hlo.mjs → S3StateStore-C9upSW5o.mjs} +2 -2
  12. package/dist/{S3StateStore-CGK_4hlo.mjs.map → S3StateStore-C9upSW5o.mjs.map} +1 -1
  13. package/dist/{SSMStateStore-DYeD__7p.cjs → SSMStateStore-W-Ps22AQ.cjs} +2 -2
  14. package/dist/{SSMStateStore-DYeD__7p.cjs.map → SSMStateStore-W-Ps22AQ.cjs.map} +1 -1
  15. package/dist/{SSMStateStore-B_5_RqY-.mjs → SSMStateStore-dOmFO6g1.mjs} +2 -2
  16. package/dist/{SSMStateStore-B_5_RqY-.mjs.map → SSMStateStore-dOmFO6g1.mjs.map} +1 -1
  17. package/dist/{add-j2yI3cbS.cjs → add-BvOICikp.cjs} +8 -8
  18. package/dist/{add-j2yI3cbS.cjs.map → add-BvOICikp.cjs.map} +1 -1
  19. package/dist/{add-B7IMXzou.mjs → add-D2XKszYP.mjs} +3 -3
  20. package/dist/{add-B7IMXzou.mjs.map → add-D2XKszYP.mjs.map} +1 -1
  21. package/dist/{bundler-Cf6OgaOe.cjs → bundler-C6T-1OLT.cjs} +5 -5
  22. package/dist/{bundler-Cf6OgaOe.cjs.map → bundler-C6T-1OLT.cjs.map} +1 -1
  23. package/dist/{bundler-DO6bHhnb.mjs → bundler-CtHzKqnZ.mjs} +5 -5
  24. package/dist/{bundler-DO6bHhnb.mjs.map → bundler-CtHzKqnZ.mjs.map} +1 -1
  25. package/dist/{cli-BCPOHmg9.mjs → cli-BgPyhx1i.mjs} +3 -3
  26. package/dist/{cli-BCPOHmg9.mjs.map → cli-BgPyhx1i.mjs.map} +1 -1
  27. package/dist/{cli-CNanUB7a.cjs → cli-K6Vj_pPW.cjs} +4 -4
  28. package/dist/{cli-CNanUB7a.cjs.map → cli-K6Vj_pPW.cjs.map} +1 -1
  29. package/dist/{compose-h_6oNnHC.cjs → compose-B7MC19eC.cjs} +668 -110
  30. package/dist/compose-B7MC19eC.cjs.map +1 -0
  31. package/dist/{compose-Dq4VCtu5.mjs → compose-DByK353T.mjs} +606 -66
  32. package/dist/compose-DByK353T.mjs.map +1 -0
  33. package/dist/{config-CqAvPP-f.d.mts → config-Bql0AmJt.d.mts} +3 -3
  34. package/dist/{config-CWyhLSY1.d.cts.map → config-Bql0AmJt.d.mts.map} +1 -1
  35. package/dist/{config-CWyhLSY1.d.cts → config-DlNpHK8p.d.cts} +3 -3
  36. package/dist/{config-CqAvPP-f.d.mts.map → config-DlNpHK8p.d.cts.map} +1 -1
  37. package/dist/config.cjs +1 -1
  38. package/dist/config.d.cts +3 -3
  39. package/dist/config.d.mts +3 -3
  40. package/dist/config.mjs +1 -1
  41. package/dist/deploy/public.cjs +12 -12
  42. package/dist/deploy/public.d.cts +3 -3
  43. package/dist/deploy/public.d.cts.map +1 -1
  44. package/dist/deploy/public.d.mts +3 -3
  45. package/dist/deploy/public.d.mts.map +1 -1
  46. package/dist/deploy/public.mjs +6 -6
  47. package/dist/{deploy-CVXEx7Nm.mjs → deploy-BerP7ppB.mjs} +5 -5
  48. package/dist/{deploy-CVXEx7Nm.mjs.map → deploy-BerP7ppB.mjs.map} +1 -1
  49. package/dist/{deploy-CT3R9de9.cjs → deploy-Dt42xiQA.cjs} +11 -11
  50. package/dist/{deploy-CT3R9de9.cjs.map → deploy-Dt42xiQA.cjs.map} +1 -1
  51. package/dist/{dokploy-eSGmlhhj.cjs → dokploy-NG9UrVrP.cjs} +2 -2
  52. package/dist/{dokploy-eSGmlhhj.cjs.map → dokploy-NG9UrVrP.cjs.map} +1 -1
  53. package/dist/{dokploy-CYm2ozFs.mjs → dokploy-ssZQRK2C.mjs} +2 -2
  54. package/dist/{dokploy-CYm2ozFs.mjs.map → dokploy-ssZQRK2C.mjs.map} +1 -1
  55. package/dist/{encryption-vS3Qzw73.cjs → encryption-CbMI24fI.cjs} +6 -6
  56. package/dist/{encryption-vS3Qzw73.cjs.map → encryption-CbMI24fI.cjs.map} +1 -1
  57. package/dist/{encryption-DC0rsR1W.mjs → encryption-De6MN0O5.mjs} +3 -3
  58. package/dist/{encryption-DC0rsR1W.mjs.map → encryption-De6MN0O5.mjs.map} +1 -1
  59. package/dist/{engine-C0N2d1i5.cjs → engine-CoCsNoW_.cjs} +73 -68
  60. package/dist/{engine-C0N2d1i5.cjs.map → engine-CoCsNoW_.cjs.map} +1 -1
  61. package/dist/{engine-BOO5TWZd.mjs → engine-DOjGIgl4.mjs} +9 -4
  62. package/dist/{engine-BOO5TWZd.mjs.map → engine-DOjGIgl4.mjs.map} +1 -1
  63. package/dist/{github-CEaFDL6t.mjs → github-CwX9z89E.mjs} +3 -3
  64. package/dist/{github-CEaFDL6t.mjs.map → github-CwX9z89E.mjs.map} +1 -1
  65. package/dist/{github-ClkdCOL9.cjs → github-D9vGqdLk.cjs} +7 -7
  66. package/dist/{github-ClkdCOL9.cjs.map → github-D9vGqdLk.cjs.map} +1 -1
  67. package/dist/{index-DOxmDKqv.d.mts → index-BXO0vlme.d.mts} +2 -2
  68. package/dist/{index-Ccu0f_2m.d.cts.map → index-BXO0vlme.d.mts.map} +1 -1
  69. package/dist/{index-Ccu0f_2m.d.cts → index-Rs0Fua-q.d.cts} +2 -2
  70. package/dist/{index-DOxmDKqv.d.mts.map → index-Rs0Fua-q.d.cts.map} +1 -1
  71. package/dist/index.cjs +180 -219
  72. package/dist/index.cjs.map +1 -1
  73. package/dist/index.mjs +108 -147
  74. package/dist/index.mjs.map +1 -1
  75. package/dist/{migrate-BRbYtFXG.cjs → migrate-B4GBvCNY.cjs} +5 -5
  76. package/dist/{migrate-BRbYtFXG.cjs.map → migrate-B4GBvCNY.cjs.map} +1 -1
  77. package/dist/{migrate-D3NAT7Ns.mjs → migrate-BQ4wVKq_.mjs} +3 -3
  78. package/dist/{migrate-D3NAT7Ns.mjs.map → migrate-BQ4wVKq_.mjs.map} +1 -1
  79. package/dist/{migrate-DrO2p9Rl.mjs → migrate-CNKaQl3K.mjs} +3 -3
  80. package/dist/{migrate-DrO2p9Rl.mjs.map → migrate-CNKaQl3K.mjs.map} +1 -1
  81. package/dist/{migrate-D5_-ylI1.cjs → migrate-Cgoy58Sh.cjs} +8 -8
  82. package/dist/{migrate-D5_-ylI1.cjs.map → migrate-Cgoy58Sh.cjs.map} +1 -1
  83. package/dist/openapi.cjs +1 -1
  84. package/dist/openapi.d.cts +1 -1
  85. package/dist/openapi.d.mts +1 -1
  86. package/dist/openapi.mjs +1 -1
  87. package/dist/reconcile/public.d.cts +1 -1
  88. package/dist/reconcile/public.d.mts +1 -1
  89. package/dist/{resolve-Fa1Ii0BK.cjs → resolve-CEaqRBzY.cjs} +3 -3
  90. package/dist/{resolve-Fa1Ii0BK.cjs.map → resolve-CEaqRBzY.cjs.map} +1 -1
  91. package/dist/{resolve-C1muFos5.mjs → resolve-mvaystiE.mjs} +3 -3
  92. package/dist/{resolve-C1muFos5.mjs.map → resolve-mvaystiE.mjs.map} +1 -1
  93. package/dist/{rollback-C9N5lKVf.cjs → rollback-F3P-rA-r.cjs} +7 -7
  94. package/dist/{rollback-C9N5lKVf.cjs.map → rollback-F3P-rA-r.cjs.map} +1 -1
  95. package/dist/{rollback-DeQzbRqM.mjs → rollback-S2C-Y9pB.mjs} +5 -5
  96. package/dist/{rollback-DeQzbRqM.mjs.map → rollback-S2C-Y9pB.mjs.map} +1 -1
  97. package/dist/{runtime-Cm7QA53H.d.cts → runtime-D9AxGzrw.d.cts} +2 -2
  98. package/dist/{runtime-BSvzPqXW.d.mts.map → runtime-D9AxGzrw.d.cts.map} +1 -1
  99. package/dist/{runtime-BSvzPqXW.d.mts → runtime-Dflki3Vs.d.mts} +2 -2
  100. package/dist/{runtime-Cm7QA53H.d.cts.map → runtime-Dflki3Vs.d.mts.map} +1 -1
  101. package/dist/{sniffer-Y6GQOCXB.cjs → sniffer-BjG-1mlD.cjs} +6 -6
  102. package/dist/{sniffer-Y6GQOCXB.cjs.map → sniffer-BjG-1mlD.cjs.map} +1 -1
  103. package/dist/{sniffer-DR8AlRCk.mjs → sniffer-ByWtH28i.mjs} +6 -6
  104. package/dist/{sniffer-DR8AlRCk.mjs.map → sniffer-ByWtH28i.mjs.map} +1 -1
  105. package/dist/{state-C2qi0iQw.cjs → stale-BsiPJI7Y.cjs} +111 -25
  106. package/dist/stale-BsiPJI7Y.cjs.map +1 -0
  107. package/dist/{state-CUecOCNJ.mjs → stale-C5FqIVc8.mjs} +106 -26
  108. package/dist/stale-C5FqIVc8.mjs.map +1 -0
  109. package/dist/target/public.cjs +1 -1
  110. package/dist/target/public.d.cts +2 -2
  111. package/dist/target/public.d.mts +2 -2
  112. package/dist/target/public.mjs +1 -1
  113. package/dist/{types-BdptGBFS.d.cts → types-ByY0zi3n.d.cts} +42 -3
  114. package/dist/types-ByY0zi3n.d.cts.map +1 -0
  115. package/dist/{types-OxE0OAn2.d.mts → types-DKxkXsKC.d.mts} +42 -3
  116. package/dist/types-DKxkXsKC.d.mts.map +1 -0
  117. package/dist/workspace/index.cjs +1 -1
  118. package/dist/workspace/index.d.cts +2 -2
  119. package/dist/workspace/index.d.mts +2 -2
  120. package/dist/workspace/index.mjs +1 -1
  121. package/dist/{workspace-QUTqYmVy.mjs → workspace-BBdqmkch.mjs} +114 -17
  122. package/dist/workspace-BBdqmkch.mjs.map +1 -0
  123. package/dist/{workspace-DOm81oUo.cjs → workspace-Bp8FEkF-.cjs} +130 -15
  124. package/dist/workspace-Bp8FEkF-.cjs.map +1 -0
  125. package/package.json +15 -15
  126. package/dist/compose-Dq4VCtu5.mjs.map +0 -1
  127. package/dist/compose-h_6oNnHC.cjs.map +0 -1
  128. package/dist/state-C2qi0iQw.cjs.map +0 -1
  129. package/dist/state-CUecOCNJ.mjs.map +0 -1
  130. package/dist/types-BdptGBFS.d.cts.map +0 -1
  131. package/dist/types-OxE0OAn2.d.mts.map +0 -1
  132. package/dist/workspace-DOm81oUo.cjs.map +0 -1
  133. package/dist/workspace-QUTqYmVy.mjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -4,20 +4,20 @@ import { r as DEFAULT_TIMEOUT_MS, t as CommandFailed } from "./run-BJLIerMM.mjs"
4
4
  import { c as getDokployCredentials, f as removeDokployCredentials, i as LocalSandbox, l as getDokployRegistryId, m as storeHostingerToken, p as storeDokployCredentials, s as getCredentialsPath, u as getDokployToken } from "./credentials-pAtB70k3.mjs";
5
5
  import { l as withOwningTsconfigJsx, r as discover, u as ConstructGenerator } from "./discover-BPelzeGW.mjs";
6
6
  import { t as appKey } from "./derive-B4vDpzgP.mjs";
7
- import { A as deployedProblems, D as InvalidStages, O as TEST_STAGE, c as getAppGkmConfig, j as stageProblems, n as allConstructGlobs, s as getAppBuildOrder } from "./workspace-QUTqYmVy.mjs";
7
+ import { A as deployedProblems, D as InvalidStages, O as TEST_STAGE, c as getAppGkmConfig, j as stageProblems, n as allConstructGlobs, s as getAppBuildOrder } from "./workspace-BBdqmkch.mjs";
8
8
  import { ConfigNotFound, NotABackendApp, NotInAnApp, loadAppConfig, loadConfig, loadWorkspaceConfig, loadWorkspaceSettings, parseModuleConfig } from "./config.mjs";
9
- import { $ as LOCAL_CA_PATH, At as providerOf, Bt as isPortAvailable, Dt as isImageBuild, Et as imageBuildCredentials, G as QueueGenerator, Gt as secretsStoreFor, H as WorkerGenerator, Ht as loadSecretsForApp, It as primaryPortKey, J as backendsOf$1, Jt as FileSecretsStore, K as CronGenerator, L as parseDevServices, Lt as createCredentialsPreload, Nt as describeServices, Ot as cacheBackendFor, Pt as fakeKey, Rt as createEntryWrapper, U as workerBundleName, Ut as prepareEntryCredentials, V as workerUnits, Vt as loadEnvFiles, W as workerEntryDir, X as derivedContainers, Y as constructGlobs, Yt as getKeyPath, Z as reconcileWorkspace, Zt as projectKey, at as postgresDatabaseNames, cn as maskPassword, dn as withCustomSecret, en as deployIdentity, et as forgetState, kt as eventsBackendFor, q as FAKE_ENV, st as quoteIdentifier, un as toEmbeddableSecrets, ut as pgClient, v as dockerCommand, zt as findAvailablePort } from "./state-CUecOCNJ.mjs";
9
+ import { At as eventsBackendFor, Bt as findAvailablePort, Dt as imageBuildCredentials, Ft as fakeKey, G as workerEntryDir, H as workerUnits, Ht as loadEnvFiles, J as FAKE_ENV, K as QueueGenerator, Kt as secretsStoreFor, Lt as primaryPortKey, Ot as isImageBuild, Pt as describeServices, Q as reconcileWorkspace, Qt as projectKey, R as parseDevServices, Rt as createCredentialsPreload, U as WorkerGenerator, Ut as loadSecretsForApp, Vt as isPortAvailable, W as workerBundleName, Wt as prepareEntryCredentials, X as constructGlobs, Xt as getKeyPath, Y as backendsOf$1, Yt as FileSecretsStore, Z as derivedContainers, ct as quoteIdentifier, dn as toEmbeddableSecrets, dt as pgClient, et as LOCAL_CA_PATH, fn as withCustomSecret, jt as providerOf, kt as cacheBackendFor, ln as maskPassword, ot as postgresDatabaseNames, q as CronGenerator, tn as deployIdentity, tt as forgetState, y as dockerCommand, zt as createEntryWrapper } from "./stale-C5FqIVc8.mjs";
10
10
  import { i as telemetryFor, n as runtimeFor, t as EndpointGenerator } from "./EndpointGenerator-DftalLYg.mjs";
11
11
  import { generateOpenApi, openapiCommand, resolveOpenApiConfig } from "./openapi.mjs";
12
12
  import { s as isCacheBackend, t as SubscriberGenerator } from "./SubscriberGenerator-5looQ3gB.mjs";
13
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";
14
14
  import { n as driversFor, r as eventsBackendsIn, t as cacheBackendsIn } from "./drivers-Ch1rJitn.mjs";
15
15
  import { n as withCompute, r as withRoutes, t as manifestModule } from "./emit-C1e8qD08.mjs";
16
- import { g as createStateStore, n as sniffAppEnvironment, o as DokployApi, x as keyFingerprint } from "./sniffer-DR8AlRCk.mjs";
17
- import { t as deploy$1 } from "./deploy-CVXEx7Nm.mjs";
18
- import { a as stackOverrideFile, c as parseDigests, i as ComposePushNeedsBuild, l as pinnedRef, o as composeProject, r as ComposePinNeedsPull, s as stackDir, t as composeTarget, u as dockerCompose } from "./compose-Dq4VCtu5.mjs";
16
+ import { g as createStateStore, n as sniffAppEnvironment, o as DokployApi, x as keyFingerprint } from "./sniffer-ByWtH28i.mjs";
17
+ import { t as deploy$1 } from "./deploy-BerP7ppB.mjs";
18
+ import { a as stackOverrideFile, c as parseDigests, d as removeEdgeRoutes, f as EDGE_PROJECT, i as ComposePushNeedsBuild, l as pinnedRef, o as composeProject, p as dockerCompose, r as ComposePinNeedsPull, s as stackDir, t as composeTarget, u as edgeDir } from "./compose-DByK353T.mjs";
19
19
  import { o as loadCredentialSchemas, t as CredentialsInvalid } from "./credentialSchemas-BJqRJNK4.mjs";
20
- import { t as LocalStateStore } from "./LocalStateStore-DLxCCatI.mjs";
20
+ import { t as LocalStateStore } from "./LocalStateStore-C72bwpG2.mjs";
21
21
  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
22
  import { a as writeTestHarness, i as TEST_MANIFEST_ENV, n as TEST_READY_FILE, t as TEST_READY_ENV } from "./ready-ZZoNskrr.mjs";
23
23
  import { createRequire } from "node:module";
@@ -47,7 +47,7 @@ import crypto from "crypto";
47
47
  import { Function } from "@geekmidas/constructs/functions";
48
48
  import { Topic } from "@geekmidas/constructs/topic";
49
49
  //#region package.json
50
- var version = "10.0.0-alpha.76";
50
+ var version = "10.0.0-alpha.78";
51
51
  //#endregion
52
52
  //#region src/prompt.ts
53
53
  /**
@@ -130,7 +130,7 @@ const logger$8 = console;
130
130
  * Validate Dokploy token by making a test API call
131
131
  */
132
132
  async function validateDokployToken(endpoint, token) {
133
- const { DokployApi } = await import("./sniffer-DR8AlRCk.mjs").then((n) => n.c);
133
+ const { DokployApi } = await import("./sniffer-ByWtH28i.mjs").then((n) => n.c);
134
134
  return new DokployApi({
135
135
  baseUrl: endpoint,
136
136
  token
@@ -1705,7 +1705,7 @@ async function devCommand(options) {
1705
1705
  let secretsJsonPath;
1706
1706
  let publicUrl;
1707
1707
  let manifest;
1708
- const appSecrets = await loadSecretsForApp(workspace ? await secretsStoreFor(workspace, config.stages.local) : new FileSecretsStore(secretsRoot), config.stages.local, workspaceAppName);
1708
+ const appSecrets = await loadSecretsForApp(workspace ? await secretsStoreFor(workspace, config.stages.local) : new FileSecretsStore(secretsRoot), config.stages.local);
1709
1709
  if (workspace) {
1710
1710
  const reconciled = await reconcileWorkspace(workspace, {
1711
1711
  stage: workspace.stages.local,
@@ -2053,9 +2053,9 @@ async function workspaceDevCommand(configured, options) {
2053
2053
  for (const { id, port } of fakes) logger$5.log(`🎭 ${id} fake: http://localhost:${port}`);
2054
2054
  logger$5.log(options.migrate || options.seed ? "🗄️ Migrating the databases" : "🗄️ Checking for pending migrations");
2055
2055
  if (options.migrate || options.seed) {
2056
- const { prepareDevDatabases } = await import("./migrate-DrO2p9Rl.mjs");
2056
+ const { prepareDevDatabases } = await import("./migrate-CNKaQl3K.mjs");
2057
2057
  await prepareDevDatabases(workspace, reconciled.env, { seed: !!options.seed });
2058
- } else await import("./migrate-DrO2p9Rl.mjs").then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2058
+ } else await import("./migrate-CNKaQl3K.mjs").then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2059
2059
  logger$5.log(`⚠️ Could not check for pending migrations: ${error instanceof Error ? error.message : String(error)}`);
2060
2060
  });
2061
2061
  const appUrls = {};
@@ -3063,7 +3063,7 @@ async function buildApp(input) {
3063
3063
  if (production?.bundle && !input.skipBundle) {
3064
3064
  const outputDir = join(appRoot, ".gkm", "server");
3065
3065
  const entryPoint = await writeSurfaceServer(outputDir, production);
3066
- const { bundleServer } = await import("./bundler-DO6bHhnb.mjs");
3066
+ const { bundleServer } = await import("./bundler-CtHzKqnZ.mjs");
3067
3067
  await bundleServer({
3068
3068
  entryPoint,
3069
3069
  outputDir: join(outputDir, "dist"),
@@ -3187,7 +3187,7 @@ async function buildWorkers(input) {
3187
3187
  });
3188
3188
  logger$4.log(`Generated worker ${worker.id}: ${crons.length} crons, ${queues.length} queues, ${subscribers.length} subscribers`);
3189
3189
  if (!input.bundle) continue;
3190
- const { bundleServer } = await import("./bundler-DO6bHhnb.mjs");
3190
+ const { bundleServer } = await import("./bundler-CtHzKqnZ.mjs");
3191
3191
  const outfile = workerBundleName(worker.id);
3192
3192
  await bundleServer({
3193
3193
  entryPoint,
@@ -3257,7 +3257,7 @@ async function buildForTarget(target, context, appRoot, workspaceRoot, endpointG
3257
3257
  let masterKey;
3258
3258
  if (context.production?.bundle && !skipBundle) {
3259
3259
  logger$4.log(`\n📦 Bundling production server...`);
3260
- const { bundleServer } = await import("./bundler-DO6bHhnb.mjs");
3260
+ const { bundleServer } = await import("./bundler-CtHzKqnZ.mjs");
3261
3261
  const allConstructs = [
3262
3262
  ...endpoints.map((e) => e.construct),
3263
3263
  ...functions.map((f) => f.construct),
@@ -3523,6 +3523,7 @@ async function composeCommand(options, deps = {}) {
3523
3523
  ...existsSync(override) ? { overrides: [override] } : {},
3524
3524
  cwd: workspace.root
3525
3525
  };
3526
+ if (await removeEdgeRoutes(edgeDir(deps.env ?? process.env), ref.project)) console.log(`🌐 Removed ${ref.project}'s routes from ${EDGE_PROJECT}.`);
3526
3527
  await (deps.docker ?? dockerCompose).down(ref);
3527
3528
  console.log(`🛑 Stopped ${ref.project}. Its volumes are kept.`);
3528
3529
  return;
@@ -4027,13 +4028,6 @@ const SERVICE_DEFAULTS = {
4027
4028
  region: "us-east-1"
4028
4029
  }
4029
4030
  };
4030
- /** Default credentials for pgboss (not a Docker service, reuses postgres) */
4031
- const PGBOSS_DEFAULTS = {
4032
- host: "localhost",
4033
- port: 5432,
4034
- username: "pgboss",
4035
- database: "app"
4036
- };
4037
4031
  /**
4038
4032
  * Generate credentials for a specific service.
4039
4033
  */
@@ -4073,14 +4067,6 @@ function generateMinioEndpoint(creds) {
4073
4067
  return `http://${host}:${port}`;
4074
4068
  }
4075
4069
  /**
4076
- * Generate connection URL for pg-boss (uses PostgreSQL protocol).
4077
- * Format: pgboss://user:pass@host:port/db?schema=pgboss
4078
- */
4079
- function generatePgBossUrl(creds) {
4080
- const { username, password, host, port, database } = creds;
4081
- return `pgboss://${username}:${encodeURIComponent(password)}@${host}:${port}/${database}?schema=pgboss`;
4082
- }
4083
- /**
4084
4070
  * Generate connection URLs from service credentials.
4085
4071
  */
4086
4072
  function generateConnectionUrls(services) {
@@ -4088,7 +4074,6 @@ function generateConnectionUrls(services) {
4088
4074
  if (services.postgres) urls.DATABASE_URL = generatePostgresUrl(services.postgres);
4089
4075
  if (services.redis) urls.REDIS_URL = generateRedisUrl(services.redis);
4090
4076
  if (services.minio) urls.STORAGE_ENDPOINT = generateMinioEndpoint(services.minio);
4091
- if (services.pgboss) urls.EVENT_PUBLISHER_CONNECTION_STRING = generatePgBossUrl(services.pgboss);
4092
4077
  if (services.mailpit) {
4093
4078
  urls.SMTP_HOST = services.mailpit.host;
4094
4079
  urls.SMTP_PORT = String(services.mailpit.port);
@@ -4112,13 +4097,6 @@ function createStageSecrets(stage, services, options) {
4112
4097
  serviceCredentials.minio.username = options.projectName;
4113
4098
  }
4114
4099
  }
4115
- if (serviceCredentials.postgres && !serviceCredentials.pgboss) serviceCredentials.pgboss = {
4116
- ...PGBOSS_DEFAULTS,
4117
- password: generateSecurePassword(),
4118
- host: serviceCredentials.postgres.host,
4119
- port: serviceCredentials.postgres.port,
4120
- database: serviceCredentials.postgres.database
4121
- };
4122
4100
  return {
4123
4101
  stage,
4124
4102
  createdAt: now,
@@ -4981,25 +4959,25 @@ function loadPackageJson() {
4981
4959
  * Run: pnpm --filter @geekmidas/cli sync-versions
4982
4960
  */
4983
4961
  const GEEKMIDAS_VERSIONS = {
4984
- "@geekmidas/audit": "~10.0.0-alpha.76",
4985
- "@geekmidas/auth": "~10.0.0-alpha.76",
4986
- "@geekmidas/cache": "~10.0.0-alpha.76",
4987
- "@geekmidas/client": "~10.0.0-alpha.76",
4988
- "@geekmidas/cloud": "~10.0.0-alpha.76",
4989
- "@geekmidas/constructs": "~10.0.0-alpha.76",
4990
- "@geekmidas/db": "~10.0.0-alpha.76",
4991
- "@geekmidas/emailkit": "~10.0.0-alpha.76",
4992
- "@geekmidas/envkit": "~10.0.0-alpha.76",
4993
- "@geekmidas/errors": "~10.0.0-alpha.76",
4994
- "@geekmidas/events": "~10.0.0-alpha.76",
4995
- "@geekmidas/logger": "~10.0.0-alpha.76",
4996
- "@geekmidas/manifest": "~10.0.0-alpha.76",
4997
- "@geekmidas/rate-limit": "~10.0.0-alpha.76",
4998
- "@geekmidas/schema": "~10.0.0-alpha.76",
4999
- "@geekmidas/services": "~10.0.0-alpha.76",
5000
- "@geekmidas/storage": "~10.0.0-alpha.76",
5001
- "@geekmidas/telescope": "~10.0.0-alpha.76",
5002
- "@geekmidas/testkit": "~10.0.0-alpha.76",
4962
+ "@geekmidas/audit": "~10.0.0-alpha.78",
4963
+ "@geekmidas/auth": "~10.0.0-alpha.78",
4964
+ "@geekmidas/cache": "~10.0.0-alpha.78",
4965
+ "@geekmidas/client": "~10.0.0-alpha.78",
4966
+ "@geekmidas/cloud": "~10.0.0-alpha.78",
4967
+ "@geekmidas/constructs": "~10.0.0-alpha.78",
4968
+ "@geekmidas/db": "~10.0.0-alpha.78",
4969
+ "@geekmidas/emailkit": "~10.0.0-alpha.78",
4970
+ "@geekmidas/envkit": "~10.0.0-alpha.78",
4971
+ "@geekmidas/errors": "~10.0.0-alpha.78",
4972
+ "@geekmidas/events": "~10.0.0-alpha.78",
4973
+ "@geekmidas/logger": "~10.0.0-alpha.78",
4974
+ "@geekmidas/manifest": "~10.0.0-alpha.78",
4975
+ "@geekmidas/rate-limit": "~10.0.0-alpha.78",
4976
+ "@geekmidas/schema": "~10.0.0-alpha.78",
4977
+ "@geekmidas/services": "~10.0.0-alpha.78",
4978
+ "@geekmidas/storage": "~10.0.0-alpha.78",
4979
+ "@geekmidas/telescope": "~10.0.0-alpha.78",
4980
+ "@geekmidas/testkit": "~10.0.0-alpha.78",
5003
4981
  "@geekmidas/cli": `~${loadPackageJson().version}`
5004
4982
  };
5005
4983
  //#endregion
@@ -6844,7 +6822,6 @@ docker-compose.constructs.yml
6844
6822
  .env
6845
6823
  .env.local
6846
6824
  .env.*.local
6847
- docker/.env
6848
6825
 
6849
6826
  # IDE
6850
6827
  .idea/
@@ -9913,7 +9890,6 @@ async function initCommand(projectName, options = {}) {
9913
9890
  };
9914
9891
  if (isFullstack) {
9915
9892
  customSecrets.AUTH_PORT = "3002";
9916
- customSecrets.AUTH_URL = "http://localhost:3002";
9917
9893
  customSecrets.BETTER_AUTH_SECRET = `better-auth-${Date.now()}-${Math.random().toString(36).slice(2)}`;
9918
9894
  customSecrets.BETTER_AUTH_URL = "http://localhost:3002";
9919
9895
  customSecrets.BETTER_AUTH_TRUSTED_ORIGINS = "http://localhost:3000,http://localhost:3001";
@@ -10077,27 +10053,18 @@ var NotAnAwsRegion = class extends Error {
10077
10053
  //#endregion
10078
10054
  //#region src/setup/fullstack-secrets.ts
10079
10055
  /**
10080
- * Generate a secure random password for database users.
10081
- * Uses a combination of timestamp and random bytes for uniqueness.
10082
- */
10083
- function generateDbPassword() {
10084
- return `${Date.now().toString(36)}${Math.random().toString(36).slice(2)}${Math.random().toString(36).slice(2)}`;
10085
- }
10086
- /**
10087
- * Generate database URL for an app.
10088
- * All apps connect to the same database, but use different users/schemas.
10089
- */
10090
- function generateDbUrl(appName, password, projectName, host = "localhost", port = 5432) {
10091
- return `postgresql://${appName.replace(/-/g, "_")}:${password}@${host}:${port}/${`${projectName.replace(/-/g, "_")}_dev`}`;
10092
- }
10093
- /**
10094
10056
  * Generate fullstack-aware custom secrets for a workspace.
10095
10057
  *
10096
10058
  * Generates:
10097
10059
  * - Common secrets: PORT, LOG_LEVEL, JWT_SECRET (no `NODE_ENV` — the command
10098
10060
  * decides that; see `gkm init`)
10099
- * - Per-app database passwords and URLs for backend apps with db service
10100
10061
  * - Better-auth secrets for apps using the better-auth framework
10062
+ *
10063
+ * No address of anything a construct declares — a database's or a tenant's
10064
+ * URL, a surface's or a site's. Those are derived from the construct, with
10065
+ * passwords from the stage, and one stored here would be a value set by hand,
10066
+ * which wins over the derived one: a `localhost` URL handed to a container,
10067
+ * with a password no role has.
10101
10068
  */
10102
10069
  function generateFullstackCustomSecrets(workspace, containers = []) {
10103
10070
  const hasDb = containers.includes("postgres");
@@ -10107,22 +10074,10 @@ function generateFullstackCustomSecrets(workspace, containers = []) {
10107
10074
  JWT_SECRET: `dev-${Date.now()}-${Math.random().toString(36).slice(2)}`
10108
10075
  };
10109
10076
  if (!hasDb) return customs;
10110
- const frontendPorts = [];
10111
- for (const [appName, appConfig] of Object.entries(workspace.apps)) {
10112
- if (appConfig.type === "web") {
10113
- frontendPorts.push(appConfig.port);
10114
- const upperName = appName.toUpperCase();
10115
- customs[`${upperName}_URL`] = `http://localhost:${appConfig.port}`;
10116
- continue;
10117
- }
10118
- if (appConfig.type === "mobile") continue;
10119
- const password = generateDbPassword();
10120
- const upperName = appName.toUpperCase();
10121
- customs[`${upperName}_DATABASE_URL`] = generateDbUrl(appName, password, workspace.name);
10122
- customs[`${upperName}_DB_PASSWORD`] = password;
10077
+ for (const appConfig of Object.values(workspace.apps)) {
10078
+ if (appConfig.type === "web" || appConfig.type === "mobile") continue;
10123
10079
  if (appConfig.framework === "better-auth") {
10124
10080
  customs.AUTH_PORT = String(appConfig.port);
10125
- customs.AUTH_URL = `http://localhost:${appConfig.port}`;
10126
10081
  customs.BETTER_AUTH_SECRET = `better-auth-${Date.now()}-${generateSecurePassword(16)}`;
10127
10082
  customs.BETTER_AUTH_URL = `http://localhost:${appConfig.port}`;
10128
10083
  }
@@ -10130,25 +10085,6 @@ function generateFullstackCustomSecrets(workspace, containers = []) {
10130
10085
  if (customs.BETTER_AUTH_SECRET) customs.BETTER_AUTH_TRUSTED_ORIGINS = Object.values(workspace.apps).map((a) => a.port).map((p) => `http://localhost:${p}`).join(",");
10131
10086
  return customs;
10132
10087
  }
10133
- /**
10134
- * Extract *_DB_PASSWORD keys from secrets and write docker/.env.
10135
- *
10136
- * The docker/.env file contains database passwords that the PostgreSQL
10137
- * init script reads to create per-app database users.
10138
- */
10139
- async function writeDockerEnvFromSecrets(secrets, workspaceRoot) {
10140
- const dbPasswordEntries = Object.entries(secrets.custom).filter(([key]) => key.endsWith("_DB_PASSWORD"));
10141
- if (secrets.services.pgboss && !dbPasswordEntries.some(([key]) => key === "PGBOSS_DB_PASSWORD")) dbPasswordEntries.push(["PGBOSS_DB_PASSWORD", secrets.services.pgboss.password]);
10142
- if (dbPasswordEntries.length === 0) return;
10143
- const envContent = `# Auto-generated docker environment file
10144
- # Contains database passwords for docker-compose postgres init
10145
- # This file is gitignored - do not commit to version control
10146
- ${dbPasswordEntries.map(([key, value]) => `${key}=${value}`).join("\n")}
10147
- `;
10148
- const envPath = join(workspaceRoot, "docker", ".env");
10149
- await mkdir(dirname(envPath), { recursive: true });
10150
- await writeFile(envPath, envContent);
10151
- }
10152
10088
  //#endregion
10153
10089
  //#region src/secrets/index.ts
10154
10090
  const logger$2 = console;
@@ -10235,6 +10171,47 @@ async function secretsSetCommand(key, value, options) {
10235
10171
  await store.write(stage, withCustomSecret(secrets, key, secretValue));
10236
10172
  logger$2.log(`\n✓ Secret "${key}" set for stage "${stage}" (${store.name})`);
10237
10173
  }
10174
+ /** `gkm secrets:unset` for a key the stage does not hold. */
10175
+ var SecretNotSet = class extends Error {
10176
+ key;
10177
+ stage;
10178
+ constructor(key, stage) {
10179
+ super(`The stage '${stage}' holds no secret '${key}'. List what it holds with gkm secrets:show --stage ${stage}.`);
10180
+ this.key = key;
10181
+ this.stage = stage;
10182
+ this.name = "SecretNotSet";
10183
+ }
10184
+ };
10185
+ /** `gkm secrets:unset` on a stage that has no secrets at all. */
10186
+ var StageSecretsNotFound = class extends Error {
10187
+ stage;
10188
+ constructor(stage) {
10189
+ super(`The stage '${stage}' has no secrets, so there is nothing to remove.`);
10190
+ this.stage = stage;
10191
+ this.name = "StageSecretsNotFound";
10192
+ }
10193
+ };
10194
+ /**
10195
+ * Remove a custom secret from a stage, in the stage's own store — the file,
10196
+ * SSM or Secrets Manager. The rest of the stage is written back as it was.
10197
+ *
10198
+ * @throws {StageSecretsNotFound} when the stage holds no secrets
10199
+ * @throws {SecretNotSet} when it holds none by that key
10200
+ */
10201
+ async function secretsUnsetCommand(key, options) {
10202
+ const { stage } = options;
10203
+ const store = await storeFor(stage);
10204
+ const secrets = await store.read(stage);
10205
+ if (!secrets) throw new StageSecretsNotFound(stage);
10206
+ if (!(key in secrets.custom)) throw new SecretNotSet(key, stage);
10207
+ const { [key]: _removed, ...custom } = secrets.custom;
10208
+ await store.write(stage, {
10209
+ ...secrets,
10210
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
10211
+ custom
10212
+ });
10213
+ logger$2.log(`\n✓ Secret "${key}" removed from stage "${stage}" (${store.name})`);
10214
+ }
10238
10215
  /**
10239
10216
  * A third party's credentials, checked against the schema of the construct
10240
10217
  * that reads them before they are stored — what the app would otherwise
@@ -10391,8 +10368,7 @@ const logger$1 = console;
10391
10368
  * Orchestrates:
10392
10369
  * 1. Load workspace config
10393
10370
  * 2. Resolve secrets (local → the stage's store → generate fresh)
10394
- * 3. Write docker/.env from secrets
10395
- * 4. Start Docker services
10371
+ * 3. Start Docker services
10396
10372
  */
10397
10373
  async function setupCommand(options = {}) {
10398
10374
  logger$1.log("\n🔧 Setting up the local environment...\n");
@@ -10405,20 +10381,13 @@ async function setupCommand(options = {}) {
10405
10381
  }
10406
10382
  const stage = options.stage ?? loadedConfig.workspace.stages.local;
10407
10383
  const { workspace } = loadedConfig;
10408
- const isMultiApp = Object.keys(workspace.apps).length > 1;
10409
10384
  logger$1.log(`📦 Workspace: ${workspace.name}`);
10410
10385
  logger$1.log(`📱 Apps: ${Object.keys(workspace.apps).join(", ")}`);
10411
10386
  logger$1.log(`🔑 Stage: ${stage}\n`);
10412
- const secrets = await resolveSecrets(stage, workspace, options);
10413
- if (!secrets) {
10387
+ if (!await resolveSecrets(stage, workspace, options)) {
10414
10388
  logger$1.error("❌ Failed to resolve secrets. Exiting.");
10415
10389
  process.exit(1);
10416
10390
  }
10417
- const containers = await derivedContainers(workspace, stage);
10418
- if (isMultiApp && containers.includes("postgres")) {
10419
- await writeDockerEnvFromSecrets(secrets, workspace.root);
10420
- logger$1.log("📄 Generated docker/.env with database passwords");
10421
- }
10422
10391
  if (!options.skipDocker) {
10423
10392
  logger$1.log("");
10424
10393
  await reconcileLocal(workspace, stage, options);
@@ -10515,24 +10484,6 @@ function reconcileSecrets(secrets, workspace, containers = []) {
10515
10484
  logger$1.log(` 🔄 Adding missing service credentials: ${name}`);
10516
10485
  changed = true;
10517
10486
  }
10518
- if (result.services.postgres && !result.services.pgboss) {
10519
- result = {
10520
- ...result,
10521
- services: {
10522
- ...result.services,
10523
- pgboss: {
10524
- host: result.services.postgres.host,
10525
- port: result.services.postgres.port,
10526
- username: "pgboss",
10527
- password: generateSecurePassword(),
10528
- database: result.services.postgres.database ?? "app"
10529
- }
10530
- }
10531
- };
10532
- result.urls = generateConnectionUrls(result.services);
10533
- logger$1.log(" 🔄 Adding missing service credentials: pgboss");
10534
- changed = true;
10535
- }
10536
10487
  if (Object.keys(workspace.apps).length > 1) {
10537
10488
  const expected = generateFullstackCustomSecrets(workspace, containers);
10538
10489
  const missing = {};
@@ -10791,7 +10742,7 @@ function testDatabases(reconciled) {
10791
10742
  * starts without the reference data the app needs.
10792
10743
  */
10793
10744
  async function migrateTestStage(workspace, env) {
10794
- const { migrateAndSeed } = await import("./migrate-DrO2p9Rl.mjs");
10745
+ const { migrateAndSeed } = await import("./migrate-CNKaQl3K.mjs");
10795
10746
  const { discover } = await import("./discover-BPelzeGW.mjs").then((n) => n.i);
10796
10747
  const sources = {};
10797
10748
  const manifest = await discover({
@@ -11224,7 +11175,7 @@ program.command("migrate").description("Apply each database construct's migratio
11224
11175
  try {
11225
11176
  const globalOptions = program.opts();
11226
11177
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11227
- const { migrateCommand } = await import("./migrate-DrO2p9Rl.mjs");
11178
+ const { migrateCommand } = await import("./migrate-CNKaQl3K.mjs");
11228
11179
  await migrateCommand({
11229
11180
  ...options,
11230
11181
  ...construct ? { construct } : {}
@@ -11238,7 +11189,7 @@ program.command("seed").description("Migrate, then run each database construct's
11238
11189
  try {
11239
11190
  const globalOptions = program.opts();
11240
11191
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11241
- const { seedCommand } = await import("./migrate-DrO2p9Rl.mjs");
11192
+ const { seedCommand } = await import("./migrate-CNKaQl3K.mjs");
11242
11193
  await seedCommand({
11243
11194
  ...options,
11244
11195
  ...construct ? { construct } : {}
@@ -11252,7 +11203,7 @@ program.command("migration").description("Write a construct's next migration: an
11252
11203
  try {
11253
11204
  const globalOptions = program.opts();
11254
11205
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11255
- const { migrationCommand } = await import("./migrate-DrO2p9Rl.mjs");
11206
+ const { migrationCommand } = await import("./migrate-CNKaQl3K.mjs");
11256
11207
  await migrationCommand({
11257
11208
  construct,
11258
11209
  ...name ? { name } : {}
@@ -11342,11 +11293,21 @@ program.command("secrets:set").description("Set a custom secret for a stage").ar
11342
11293
  process.exit(1);
11343
11294
  }
11344
11295
  });
11296
+ 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) => {
11297
+ try {
11298
+ const globalOptions = program.opts();
11299
+ if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11300
+ await secretsUnsetCommand(key, options);
11301
+ } catch (error) {
11302
+ console.error(formatError(error));
11303
+ process.exit(1);
11304
+ }
11305
+ });
11345
11306
  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) => {
11346
11307
  try {
11347
11308
  const globalOptions = program.opts();
11348
11309
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11349
- const { secretsAddCommand } = await import("./add-B7IMXzou.mjs");
11310
+ const { secretsAddCommand } = await import("./add-D2XKszYP.mjs");
11350
11311
  await secretsAddCommand(options);
11351
11312
  } catch (error) {
11352
11313
  console.error(formatError(error));
@@ -11357,7 +11318,7 @@ program.command("encryption:rotate").description("Add a new current key to an En
11357
11318
  try {
11358
11319
  const globalOptions = program.opts();
11359
11320
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11360
- const { encryptionRotateCommand } = await import("./encryption-DC0rsR1W.mjs");
11321
+ const { encryptionRotateCommand } = await import("./encryption-De6MN0O5.mjs");
11361
11322
  await encryptionRotateCommand(construct, options);
11362
11323
  } catch (error) {
11363
11324
  console.error(formatError(error));
@@ -11368,7 +11329,7 @@ program.command("encryption:retire").description("Remove an old key from an Encr
11368
11329
  try {
11369
11330
  const globalOptions = program.opts();
11370
11331
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11371
- const { encryptionRetireCommand } = await import("./encryption-DC0rsR1W.mjs");
11332
+ const { encryptionRetireCommand } = await import("./encryption-De6MN0O5.mjs");
11372
11333
  await encryptionRetireCommand(construct, key, options);
11373
11334
  } catch (error) {
11374
11335
  console.error(formatError(error));
@@ -11411,7 +11372,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
11411
11372
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11412
11373
  const { loadWorkspaceConfig } = await import("./config.mjs");
11413
11374
  const { reconcileMissingSecrets } = await import("./reconcile--I7V4Klj.mjs");
11414
- const { secretsStoreFor } = await import("./state-CUecOCNJ.mjs").then((n) => n.qt);
11375
+ const { secretsStoreFor } = await import("./stale-C5FqIVc8.mjs").then((n) => n.Jt);
11415
11376
  const { workspace } = await loadWorkspaceConfig();
11416
11377
  const stage = options.stage ?? workspace.stages.local;
11417
11378
  const store = await secretsStoreFor(workspace, stage);
@@ -11420,7 +11381,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
11420
11381
  console.error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
11421
11382
  process.exit(1);
11422
11383
  }
11423
- const { derivedContainers } = await import("./state-CUecOCNJ.mjs").then((n) => n.Q);
11384
+ const { derivedContainers } = await import("./stale-C5FqIVc8.mjs").then((n) => n.$);
11424
11385
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers(workspace, stage));
11425
11386
  if (!result) {
11426
11387
  console.log(`\n✓ Secrets for stage "${stage}" are up-to-date`);
@@ -11438,7 +11399,7 @@ program.command("secrets:migrate").description("Copy a deployed stage's secrets
11438
11399
  try {
11439
11400
  const globalOptions = program.opts();
11440
11401
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11441
- const { secretsMigrateCommand } = await import("./migrate-D3NAT7Ns.mjs");
11402
+ const { secretsMigrateCommand } = await import("./migrate-BQ4wVKq_.mjs");
11442
11403
  await secretsMigrateCommand(options);
11443
11404
  } catch (error) {
11444
11405
  console.error(formatError(error));
@@ -11446,7 +11407,7 @@ program.command("secrets:migrate").description("Copy a deployed stage's secrets
11446
11407
  }
11447
11408
  });
11448
11409
  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 <list>", "Server targets: run MinIO and/or Mailpit (minio,mailpit) for mail and buckets the stage's secrets don't configure. Not production-grade").action(async (options) => {
11449
- const { deployCli } = await import("./cli-BCPOHmg9.mjs");
11410
+ const { deployCli } = await import("./cli-BgPyhx1i.mjs");
11450
11411
  const globalOptions = program.opts();
11451
11412
  const code = await deployCli({
11452
11413
  cwd: resolve(globalOptions.cwd ?? process.cwd()),
@@ -11463,7 +11424,7 @@ program.command("deploy").description("Deploy a stage through its target").optio
11463
11424
  });
11464
11425
  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) => {
11465
11426
  try {
11466
- const { rollbackStage } = await import("./rollback-DeQzbRqM.mjs").then((n) => n.a);
11427
+ const { rollbackStage } = await import("./rollback-S2C-Y9pB.mjs").then((n) => n.a);
11467
11428
  const { terminalCredentials } = await import("./terminal-BdvrmkaC.mjs");
11468
11429
  const globalOptions = program.opts();
11469
11430
  await rollbackStage({
@@ -11499,7 +11460,7 @@ program.command("deploy:github").description("Let GitHub Actions deploy a stage:
11499
11460
  try {
11500
11461
  const globalOptions = program.opts();
11501
11462
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11502
- const { deployGithubCommand } = await import("./github-CEaFDL6t.mjs");
11463
+ const { deployGithubCommand } = await import("./github-CwX9z89E.mjs");
11503
11464
  await deployGithubCommand(options);
11504
11465
  } catch (error) {
11505
11466
  console.error(formatError(error));