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

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 (117) hide show
  1. package/dist/{add-BvOICikp.cjs → add-HF9POevk.cjs} +7 -7
  2. package/dist/{add-BvOICikp.cjs.map → add-HF9POevk.cjs.map} +1 -1
  3. package/dist/{add-D2XKszYP.mjs → add-UFiIrlTj.mjs} +2 -2
  4. package/dist/{add-D2XKszYP.mjs.map → add-UFiIrlTj.mjs.map} +1 -1
  5. package/dist/{bundler-CtHzKqnZ.mjs → bundler-C45BuRdY.mjs} +3 -3
  6. package/dist/{bundler-CtHzKqnZ.mjs.map → bundler-C45BuRdY.mjs.map} +1 -1
  7. package/dist/{bundler-C6T-1OLT.cjs → bundler-RAoSRuvp.cjs} +3 -3
  8. package/dist/{bundler-C6T-1OLT.cjs.map → bundler-RAoSRuvp.cjs.map} +1 -1
  9. package/dist/{cli-K6Vj_pPW.cjs → cli-C3hsEwLK.cjs} +4 -4
  10. package/dist/{cli-K6Vj_pPW.cjs.map → cli-C3hsEwLK.cjs.map} +1 -1
  11. package/dist/{cli-BgPyhx1i.mjs → cli-gvc3urUl.mjs} +3 -3
  12. package/dist/{cli-BgPyhx1i.mjs.map → cli-gvc3urUl.mjs.map} +1 -1
  13. package/dist/{compose-DByK353T.mjs → compose-C40Wk9m6.mjs} +36 -8
  14. package/dist/{compose-DByK353T.mjs.map → compose-C40Wk9m6.mjs.map} +1 -1
  15. package/dist/{compose-B7MC19eC.cjs → compose-CtUP07r3.cjs} +88 -60
  16. package/dist/{compose-B7MC19eC.cjs.map → compose-CtUP07r3.cjs.map} +1 -1
  17. package/dist/{config-Bql0AmJt.d.mts → config-L_6NivCp.d.mts} +3 -3
  18. package/dist/{config-Bql0AmJt.d.mts.map → config-L_6NivCp.d.mts.map} +1 -1
  19. package/dist/{config-DlNpHK8p.d.cts → config-Mr4rcXFC.d.cts} +3 -3
  20. package/dist/{config-DlNpHK8p.d.cts.map → config-Mr4rcXFC.d.cts.map} +1 -1
  21. package/dist/config.d.cts +3 -3
  22. package/dist/config.d.mts +3 -3
  23. package/dist/{databases-C2p5LGAp.cjs → databases-BY-pEImp.cjs} +185 -7
  24. package/dist/databases-BY-pEImp.cjs.map +1 -0
  25. package/dist/{databases-hUHTuwhx.mjs → databases-CzszQV0N.mjs} +153 -5
  26. package/dist/databases-CzszQV0N.mjs.map +1 -0
  27. package/dist/deploy/public.cjs +12 -11
  28. package/dist/deploy/public.d.cts +19 -3
  29. package/dist/deploy/public.d.cts.map +1 -1
  30. package/dist/deploy/public.d.mts +19 -3
  31. package/dist/deploy/public.d.mts.map +1 -1
  32. package/dist/deploy/public.mjs +6 -6
  33. package/dist/{deploy-BerP7ppB.mjs → deploy-BjsZpUQ3.mjs} +3 -3
  34. package/dist/{deploy-BerP7ppB.mjs.map → deploy-BjsZpUQ3.mjs.map} +1 -1
  35. package/dist/{deploy-Dt42xiQA.cjs → deploy-DPzauQsm.cjs} +9 -9
  36. package/dist/{deploy-Dt42xiQA.cjs.map → deploy-DPzauQsm.cjs.map} +1 -1
  37. package/dist/{dokploy-ssZQRK2C.mjs → dokploy-BoH0DMyS.mjs} +2 -2
  38. package/dist/{dokploy-ssZQRK2C.mjs.map → dokploy-BoH0DMyS.mjs.map} +1 -1
  39. package/dist/{dokploy-NG9UrVrP.cjs → dokploy-Cj1EHd4Y.cjs} +2 -2
  40. package/dist/{dokploy-NG9UrVrP.cjs.map → dokploy-Cj1EHd4Y.cjs.map} +1 -1
  41. package/dist/{encryption-CbMI24fI.cjs → encryption-D2z16vsS.cjs} +5 -5
  42. package/dist/{encryption-CbMI24fI.cjs.map → encryption-D2z16vsS.cjs.map} +1 -1
  43. package/dist/{encryption-De6MN0O5.mjs → encryption-MeDrE-rZ.mjs} +2 -2
  44. package/dist/{encryption-De6MN0O5.mjs.map → encryption-MeDrE-rZ.mjs.map} +1 -1
  45. package/dist/{engine-DOjGIgl4.mjs → engine-B-Yq0yQu.mjs} +53 -17
  46. package/dist/engine-B-Yq0yQu.mjs.map +1 -0
  47. package/dist/{engine-CoCsNoW_.cjs → engine-C3T39eTO.cjs} +118 -82
  48. package/dist/engine-C3T39eTO.cjs.map +1 -0
  49. package/dist/{github-D9vGqdLk.cjs → github-B8dDa8xf.cjs} +6 -6
  50. package/dist/{github-D9vGqdLk.cjs.map → github-B8dDa8xf.cjs.map} +1 -1
  51. package/dist/{github-CwX9z89E.mjs → github-Dyrjo0xd.mjs} +2 -2
  52. package/dist/{github-CwX9z89E.mjs.map → github-Dyrjo0xd.mjs.map} +1 -1
  53. package/dist/{index-BXO0vlme.d.mts → index-C0UmP_lg.d.mts} +2 -2
  54. package/dist/{index-BXO0vlme.d.mts.map → index-C0UmP_lg.d.mts.map} +1 -1
  55. package/dist/{index-Rs0Fua-q.d.cts → index-DTEPwLml.d.cts} +2 -2
  56. package/dist/{index-Rs0Fua-q.d.cts.map → index-DTEPwLml.d.cts.map} +1 -1
  57. package/dist/index.cjs +114 -114
  58. package/dist/index.cjs.map +1 -1
  59. package/dist/index.mjs +41 -41
  60. package/dist/index.mjs.map +1 -1
  61. package/dist/{migrate-CNKaQl3K.mjs → migrate-A2CLFl9G.mjs} +3 -4
  62. package/dist/{migrate-CNKaQl3K.mjs.map → migrate-A2CLFl9G.mjs.map} +1 -1
  63. package/dist/{migrate-Cgoy58Sh.cjs → migrate-CTqICj1B.cjs} +8 -9
  64. package/dist/{migrate-Cgoy58Sh.cjs.map → migrate-CTqICj1B.cjs.map} +1 -1
  65. package/dist/{migrate-BQ4wVKq_.mjs → migrate-DWUbYY5r.mjs} +2 -2
  66. package/dist/{migrate-BQ4wVKq_.mjs.map → migrate-DWUbYY5r.mjs.map} +1 -1
  67. package/dist/{migrate-B4GBvCNY.cjs → migrate-DvIAITiG.cjs} +4 -4
  68. package/dist/{migrate-B4GBvCNY.cjs.map → migrate-DvIAITiG.cjs.map} +1 -1
  69. package/dist/openapi.d.cts +1 -1
  70. package/dist/openapi.d.mts +1 -1
  71. package/dist/reconcile/public.d.cts +1 -1
  72. package/dist/reconcile/public.d.mts +1 -1
  73. package/dist/{resolve-mvaystiE.mjs → resolve-CHwetPdo.mjs} +3 -3
  74. package/dist/{resolve-mvaystiE.mjs.map → resolve-CHwetPdo.mjs.map} +1 -1
  75. package/dist/{resolve-CEaqRBzY.cjs → resolve-DOXcAOcn.cjs} +3 -3
  76. package/dist/{resolve-CEaqRBzY.cjs.map → resolve-DOXcAOcn.cjs.map} +1 -1
  77. package/dist/{rollback-S2C-Y9pB.mjs → rollback-Cq5s3WnD.mjs} +3 -3
  78. package/dist/{rollback-S2C-Y9pB.mjs.map → rollback-Cq5s3WnD.mjs.map} +1 -1
  79. package/dist/{rollback-F3P-rA-r.cjs → rollback-DUoOaws3.cjs} +5 -5
  80. package/dist/{rollback-F3P-rA-r.cjs.map → rollback-DUoOaws3.cjs.map} +1 -1
  81. package/dist/{runtime-D9AxGzrw.d.cts → runtime-D6A-C6zh.d.cts} +2 -2
  82. package/dist/{runtime-D9AxGzrw.d.cts.map → runtime-D6A-C6zh.d.cts.map} +1 -1
  83. package/dist/{runtime-Dflki3Vs.d.mts → runtime-ekxfPNM-.d.mts} +2 -2
  84. package/dist/{runtime-Dflki3Vs.d.mts.map → runtime-ekxfPNM-.d.mts.map} +1 -1
  85. package/dist/sandbox/migrate-worker.cjs +22 -8
  86. package/dist/sandbox/migrate-worker.cjs.map +1 -1
  87. package/dist/sandbox/migrate-worker.mjs +22 -8
  88. package/dist/sandbox/migrate-worker.mjs.map +1 -1
  89. package/dist/{stale-C5FqIVc8.mjs → seeds-DiXON7R8.mjs} +61 -3
  90. package/dist/seeds-DiXON7R8.mjs.map +1 -0
  91. package/dist/{stale-BsiPJI7Y.cjs → seeds-qX13ubmO.cjs} +78 -2
  92. package/dist/seeds-qX13ubmO.cjs.map +1 -0
  93. package/dist/sniffer-BjG-1mlD.cjs.map +1 -1
  94. package/dist/sniffer-ByWtH28i.mjs.map +1 -1
  95. package/dist/target/public.cjs +1 -1
  96. package/dist/target/public.d.cts +2 -2
  97. package/dist/target/public.d.mts +2 -2
  98. package/dist/target/public.mjs +1 -1
  99. package/dist/{types-DKxkXsKC.d.mts → types-BzCavjGt.d.mts} +29 -2
  100. package/dist/types-BzCavjGt.d.mts.map +1 -0
  101. package/dist/{types-ByY0zi3n.d.cts → types-DZtj9jeI.d.cts} +29 -2
  102. package/dist/types-DZtj9jeI.d.cts.map +1 -0
  103. package/dist/workspace/index.d.cts +2 -2
  104. package/dist/workspace/index.d.mts +2 -2
  105. package/package.json +15 -15
  106. package/dist/databases-C2p5LGAp.cjs.map +0 -1
  107. package/dist/databases-hUHTuwhx.mjs.map +0 -1
  108. package/dist/engine-CoCsNoW_.cjs.map +0 -1
  109. package/dist/engine-DOjGIgl4.mjs.map +0 -1
  110. package/dist/provider-B3Sv_a74.cjs +0 -173
  111. package/dist/provider-B3Sv_a74.cjs.map +0 -1
  112. package/dist/provider-D7rQzzzf.mjs +0 -138
  113. package/dist/provider-D7rQzzzf.mjs.map +0 -1
  114. package/dist/stale-BsiPJI7Y.cjs.map +0 -1
  115. package/dist/stale-C5FqIVc8.mjs.map +0 -1
  116. package/dist/types-ByY0zi3n.d.cts.map +0 -1
  117. package/dist/types-DKxkXsKC.d.mts.map +0 -1
package/dist/index.cjs CHANGED
@@ -7,7 +7,7 @@ const require_discover = require("./discover-D1It5r_h.cjs");
7
7
  const require_derive = require("./derive-DAbo49sm.cjs");
8
8
  const require_workspace = require("./workspace-Bp8FEkF-.cjs");
9
9
  const require_config = require("./config.cjs");
10
- const require_stale = require("./stale-BsiPJI7Y.cjs");
10
+ const require_seeds = require("./seeds-qX13ubmO.cjs");
11
11
  const require_EndpointGenerator = require("./EndpointGenerator-CP6sBvQV.cjs");
12
12
  const require_openapi = require("./openapi.cjs");
13
13
  const require_SubscriberGenerator = require("./SubscriberGenerator-CajwOa5W.cjs");
@@ -15,8 +15,8 @@ const require_appPorts = require("./appPorts-Cu79hJF6.cjs");
15
15
  const require_drivers = require("./drivers-BdvtCKc7.cjs");
16
16
  const require_emit = require("./emit-Dmc1nvdS.cjs");
17
17
  const require_sniffer = require("./sniffer-BjG-1mlD.cjs");
18
- const require_deploy = require("./deploy-Dt42xiQA.cjs");
19
- const require_compose = require("./compose-B7MC19eC.cjs");
18
+ const require_deploy = require("./deploy-DPzauQsm.cjs");
19
+ const require_compose = require("./compose-CtUP07r3.cjs");
20
20
  const require_credentialSchemas = require("./credentialSchemas-DCR4Wd1W.cjs");
21
21
  const require_LocalStateStore = require("./LocalStateStore-Bocb8dmZ.cjs");
22
22
  const require_utils = require("./utils-D2Nk1Nv2.cjs");
@@ -53,7 +53,7 @@ crypto = require_rolldown_runtime.__toESM(crypto, 1);
53
53
  let _geekmidas_constructs_functions = require("@geekmidas/constructs/functions");
54
54
  let _geekmidas_constructs_topic = require("@geekmidas/constructs/topic");
55
55
  //#region package.json
56
- var version = "10.0.0-alpha.78";
56
+ var version = "10.0.0-alpha.79";
57
57
  //#endregion
58
58
  //#region src/prompt.ts
59
59
  /**
@@ -304,7 +304,7 @@ function installation(platform, certificate) {
304
304
  */
305
305
  async function trustCommand(options = {}) {
306
306
  const { workspace } = await require_config.loadWorkspaceConfig();
307
- const certificate = (0, node_path.join)(workspace.root, require_stale.LOCAL_CA_PATH);
307
+ const certificate = (0, node_path.join)(workspace.root, require_seeds.LOCAL_CA_PATH);
308
308
  if (!(0, node_fs.existsSync)(certificate)) throw new NoLocalAuthority(certificate);
309
309
  const { describe, asks, steps } = installation(process.platform, certificate);
310
310
  logger$7.log(`\n🔐 Trusting the local authority in ${describe}`);
@@ -1488,7 +1488,7 @@ async function serveFakes(fakes, ports) {
1488
1488
  const served = [];
1489
1489
  for (const [id, local] of Object.entries(fakes)) {
1490
1490
  if (local.image) continue;
1491
- const port = ports[require_stale.fakeKey(id)];
1491
+ const port = ports[require_seeds.fakeKey(id)];
1492
1492
  if (port === void 0) continue;
1493
1493
  const { handler } = (await import((0, node_url.pathToFileURL)(local.file).href)).default;
1494
1494
  const server = serve({
@@ -1531,16 +1531,16 @@ var NoCommandSpecified = class extends Error {
1531
1531
  async function execCommand(commandArgs, options = {}) {
1532
1532
  const cwd = options.cwd ?? process.cwd();
1533
1533
  if (!commandArgs[0]) throw new NoCommandSpecified();
1534
- const defaultEnv = require_stale.loadEnvFiles(".env");
1534
+ const defaultEnv = require_seeds.loadEnvFiles(".env");
1535
1535
  if (defaultEnv.loaded.length > 0) logger$6.log(`📦 Loaded env: ${defaultEnv.loaded.join(", ")}`);
1536
- const { credentials, secretsJsonPath, appName } = require_stale.isImageBuild() ? await imageBuildEntry(cwd) : await require_stale.prepareEntryCredentials({ cwd });
1536
+ const { credentials, secretsJsonPath, appName } = require_seeds.isImageBuild() ? await imageBuildEntry(cwd) : await require_seeds.prepareEntryCredentials({ cwd });
1537
1537
  if (appName) logger$6.log(`📦 App: ${appName}`);
1538
1538
  const secretCount = Object.keys(credentials).filter((k) => k !== "PORT").length;
1539
- if (secretCount > 0 && !require_stale.isImageBuild()) logger$6.log(`🔐 Loaded ${secretCount} secret(s)`);
1539
+ if (secretCount > 0 && !require_seeds.isImageBuild()) logger$6.log(`🔐 Loaded ${secretCount} secret(s)`);
1540
1540
  const preloadDir = (0, node_path.join)(cwd, ".gkm");
1541
1541
  await (0, node_fs_promises.mkdir)(preloadDir, { recursive: true });
1542
1542
  const preloadPath = (0, node_path.join)(preloadDir, "credentials-preload.mjs");
1543
- await require_stale.createCredentialsPreload(preloadPath, secretsJsonPath);
1543
+ await require_seeds.createCredentialsPreload(preloadPath, secretsJsonPath);
1544
1544
  const [cmd, ...args] = commandArgs;
1545
1545
  logger$6.log(`🚀 Running: ${[cmd, ...args].join(" ")}`);
1546
1546
  const nodeOptions = [(process.env.NODE_OPTIONS ?? "").replace(/--import[= ]\S+/g, "").trim(), `--import=${preloadPath}`].filter(Boolean).join(" ");
@@ -1568,7 +1568,7 @@ async function execCommand(commandArgs, options = {}) {
1568
1568
  * secret read and no address resolved.
1569
1569
  */
1570
1570
  async function imageBuildEntry(cwd) {
1571
- const credentials = require_stale.imageBuildCredentials();
1571
+ const credentials = require_seeds.imageBuildCredentials();
1572
1572
  logger$6.log(`🐳 Image build: ${Object.keys(credentials).length} public value(s) from the build args`);
1573
1573
  const dir = (0, node_path.join)(cwd, ".gkm");
1574
1574
  await (0, node_fs_promises.mkdir)(dir, { recursive: true });
@@ -1649,7 +1649,7 @@ const SUBSCRIBERS_ENV = "GKM_SUBSCRIBERS";
1649
1649
  async function devCommand(options) {
1650
1650
  if (options.subscribers === false) process.env[SUBSCRIBERS_ENV] = "off";
1651
1651
  if (options.entry) return entryDevCommand(options);
1652
- const defaultEnv = require_stale.loadEnvFiles(".env");
1652
+ const defaultEnv = require_seeds.loadEnvFiles(".env");
1653
1653
  if (defaultEnv.loaded.length > 0) logger$5.log(`📦 Loaded env: ${defaultEnv.loaded.join(", ")}`);
1654
1654
  const appConfig = await require_config.loadAppConfig().catch((error) => {
1655
1655
  if (error instanceof require_config.NotInAnApp || error instanceof require_config.NotABackendApp) return;
@@ -1665,7 +1665,7 @@ async function devCommand(options) {
1665
1665
  const secretsRoot = appConfig.workspaceRoot;
1666
1666
  const workspaceAppName = appConfig.appName;
1667
1667
  const assigned = await require_appPorts.assignAppPorts(appConfig.workspace, [workspaceAppName], {
1668
- free: require_stale.isPortAvailable,
1668
+ free: require_seeds.isPortAvailable,
1669
1669
  holder: require_appPorts.holderOf
1670
1670
  });
1671
1671
  if (assigned.running.length > 0) throw new WorkspacePortsInUse(assigned.running);
@@ -1683,7 +1683,7 @@ async function devCommand(options) {
1683
1683
  });
1684
1684
  }
1685
1685
  if (config.env) {
1686
- const { loaded, missing } = require_stale.loadEnvFiles(config.env, appRoot);
1686
+ const { loaded, missing } = require_seeds.loadEnvFiles(config.env, appRoot);
1687
1687
  if (loaded.length > 0) logger$5.log(`📦 Loaded env: ${loaded.join(", ")}`);
1688
1688
  if (missing.length > 0) logger$5.warn(`⚠️ Missing env files: ${missing.join(", ")}`);
1689
1689
  }
@@ -1696,8 +1696,8 @@ async function devCommand(options) {
1696
1696
  appRoot,
1697
1697
  target: "server",
1698
1698
  enableOpenApi,
1699
- cacheBackend: require_stale.cacheBackendFor(require_stale.providerOf(workspace ?? config)),
1700
- eventsBackend: require_stale.eventsBackendFor(require_stale.providerOf(workspace ?? config)),
1699
+ cacheBackend: require_seeds.cacheBackendFor(require_seeds.providerOf(workspace ?? config)),
1700
+ eventsBackend: require_seeds.eventsBackendFor(require_seeds.providerOf(workspace ?? config)),
1701
1701
  telescope,
1702
1702
  databaseApi: true,
1703
1703
  hooks,
@@ -1711,16 +1711,16 @@ async function devCommand(options) {
1711
1711
  let secretsJsonPath;
1712
1712
  let publicUrl;
1713
1713
  let manifest;
1714
- const appSecrets = await require_stale.loadSecretsForApp(workspace ? await require_stale.secretsStoreFor(workspace, config.stages.local) : new require_stale.FileSecretsStore(secretsRoot), config.stages.local);
1714
+ const appSecrets = await require_seeds.loadSecretsForApp(workspace ? await require_seeds.secretsStoreFor(workspace, config.stages.local) : new require_seeds.FileSecretsStore(secretsRoot), config.stages.local);
1715
1715
  if (workspace) {
1716
- const reconciled = await require_stale.reconcileWorkspace(workspace, {
1716
+ const reconciled = await require_seeds.reconcileWorkspace(workspace, {
1717
1717
  stage: workspace.stages.local,
1718
1718
  ...options.fake ? { fake: true } : {},
1719
1719
  progress: (message) => logger$5.log(message)
1720
1720
  });
1721
1721
  if (reconciled.services.length > 0) {
1722
1722
  logger$5.log("🐳 Services");
1723
- for (const line of require_stale.describeServices(reconciled.services)) logger$5.log(line);
1723
+ for (const line of require_seeds.describeServices(reconciled.services)) logger$5.log(line);
1724
1724
  }
1725
1725
  Object.assign(appSecrets, reconciled.env);
1726
1726
  const own = reconciled.plan.resources.find((r) => (r.kind === "rest-api" || r.kind === "site") && require_derive.appKey(r.id) === workspaceAppName);
@@ -1999,8 +1999,8 @@ async function validateFrontendApps(workspace) {
1999
1999
  async function loadDevSecrets(workspace) {
2000
2000
  if (!workspace.secrets.enabled) return {};
2001
2001
  const stage = workspace.stages.local;
2002
- const secrets = await (await require_stale.secretsStoreFor(workspace, stage)).read(stage);
2003
- if (secrets) return require_stale.toEmbeddableSecrets(secrets);
2002
+ const secrets = await (await require_seeds.secretsStoreFor(workspace, stage)).read(stage);
2003
+ if (secrets) return require_seeds.toEmbeddableSecrets(secrets);
2004
2004
  return {};
2005
2005
  }
2006
2006
  /**
@@ -2015,7 +2015,7 @@ async function loadDevSecrets(workspace) {
2015
2015
  async function workspaceDevCommand(configured, options) {
2016
2016
  const scoped = options.app ? [options.app] : options.filter ? [] : Object.keys(configured.apps);
2017
2017
  const assigned = await require_appPorts.assignAppPorts(configured, scoped, {
2018
- free: require_stale.isPortAvailable,
2018
+ free: require_seeds.isPortAvailable,
2019
2019
  holder: require_appPorts.holderOf
2020
2020
  });
2021
2021
  if (assigned.running.length > 0) throw new WorkspacePortsInUse(assigned.running);
@@ -2042,14 +2042,14 @@ async function workspaceDevCommand(configured, options) {
2042
2042
  if (hasErrors) throw new Error("Frontend app validation failed. Fix the issues above and try again.");
2043
2043
  }
2044
2044
  const rawSecrets = await loadDevSecrets(workspace);
2045
- const reconciled = await require_stale.reconcileWorkspace(workspace, {
2045
+ const reconciled = await require_seeds.reconcileWorkspace(workspace, {
2046
2046
  stage: workspace.stages.local,
2047
2047
  ...options.fake ? { fake: true } : {},
2048
2048
  progress: (message) => logger$5.log(message)
2049
2049
  });
2050
2050
  if (reconciled.services.length > 0) {
2051
2051
  logger$5.log("🐳 Services");
2052
- for (const line of require_stale.describeServices(reconciled.services)) logger$5.log(line);
2052
+ for (const line of require_seeds.describeServices(reconciled.services)) logger$5.log(line);
2053
2053
  }
2054
2054
  const secretsEnv = {
2055
2055
  ...rawSecrets,
@@ -2059,9 +2059,9 @@ async function workspaceDevCommand(configured, options) {
2059
2059
  for (const { id, port } of fakes) logger$5.log(`🎭 ${id} fake: http://localhost:${port}`);
2060
2060
  logger$5.log(options.migrate || options.seed ? "🗄️ Migrating the databases" : "🗄️ Checking for pending migrations");
2061
2061
  if (options.migrate || options.seed) {
2062
- const { prepareDevDatabases } = await Promise.resolve().then(() => require("./migrate-Cgoy58Sh.cjs"));
2062
+ const { prepareDevDatabases } = await Promise.resolve().then(() => require("./migrate-CTqICj1B.cjs"));
2063
2063
  await prepareDevDatabases(workspace, reconciled.env, { seed: !!options.seed });
2064
- } else await Promise.resolve().then(() => require("./migrate-Cgoy58Sh.cjs")).then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2064
+ } else await Promise.resolve().then(() => require("./migrate-CTqICj1B.cjs")).then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2065
2065
  logger$5.log(`⚠️ Could not check for pending migrations: ${error instanceof Error ? error.message : String(error)}`);
2066
2066
  });
2067
2067
  const appUrls = {};
@@ -2147,7 +2147,7 @@ async function workspaceDevCommand(configured, options) {
2147
2147
  ...secretsEnv,
2148
2148
  NODE_ENV: "development",
2149
2149
  ...configPath ? { GKM_CONFIG_PATH: configPath } : {},
2150
- ...options.fake ? { [require_stale.FAKE_ENV]: "1" } : {},
2150
+ ...options.fake ? { [require_seeds.FAKE_ENV]: "1" } : {},
2151
2151
  [DISCOVERY_QUIET_ENV]: "1"
2152
2152
  };
2153
2153
  logger$5.log(`🚀 Starting ${appCount} app(s) — each builds before it answers, and says so when it is ready`);
@@ -2210,16 +2210,16 @@ async function entryDevCommand(options) {
2210
2210
  if (!entry) throw new Error("--entry requires a file path");
2211
2211
  const entryPath = (0, node_path.resolve)(process.cwd(), entry);
2212
2212
  if (!(0, node_fs.existsSync)(entryPath)) throw new Error(`Entry file not found: ${entryPath}`);
2213
- const defaultEnv = require_stale.loadEnvFiles(".env");
2213
+ const defaultEnv = require_seeds.loadEnvFiles(".env");
2214
2214
  if (defaultEnv.loaded.length > 0) logger$5.log(`📦 Loaded env: ${defaultEnv.loaded.join(", ")}`);
2215
- const { credentials, resolvedPort, secretsJsonPath, appName } = await require_stale.prepareEntryCredentials({ explicitPort: options.portExplicit ? options.port : void 0 });
2215
+ const { credentials, resolvedPort, secretsJsonPath, appName } = await require_seeds.prepareEntryCredentials({ explicitPort: options.portExplicit ? options.port : void 0 });
2216
2216
  if (appName) logger$5.log(`📦 App: ${appName} (port ${resolvedPort})`);
2217
2217
  logger$5.log(`🚀 Starting entry file: ${entry} on port ${resolvedPort}`);
2218
2218
  if (Object.keys(credentials).length > 1) logger$5.log(`🔐 Loaded ${Object.keys(credentials).length - 1} secret(s) + PORT`);
2219
2219
  const wrapperDir = (0, node_path.join)(process.cwd(), ".gkm");
2220
2220
  await (0, node_fs_promises.mkdir)(wrapperDir, { recursive: true });
2221
2221
  const wrapperPath = (0, node_path.join)(wrapperDir, "entry-wrapper.ts");
2222
- await require_stale.createEntryWrapper(wrapperPath, entryPath, secretsJsonPath);
2222
+ await require_seeds.createEntryWrapper(wrapperPath, entryPath, secretsJsonPath);
2223
2223
  const runner = new EntryRunner(wrapperPath, entryPath, watch, resolvedPort);
2224
2224
  await runner.start();
2225
2225
  let isShuttingDown = false;
@@ -2528,10 +2528,10 @@ var DevServer = class {
2528
2528
  this.startTime = Date.now();
2529
2529
  if (this.isRunning) await this.stop();
2530
2530
  if (this.portExplicit) {
2531
- if (!await require_stale.isPortAvailable(this.requestedPort)) throw new DevPortInUse(this.requestedPort, listenerOn(this.requestedPort));
2531
+ if (!await require_seeds.isPortAvailable(this.requestedPort)) throw new DevPortInUse(this.requestedPort, listenerOn(this.requestedPort));
2532
2532
  this.actualPort = this.requestedPort;
2533
2533
  } else {
2534
- this.actualPort = await require_stale.findAvailablePort(this.requestedPort);
2534
+ this.actualPort = await require_seeds.findAvailablePort(this.requestedPort);
2535
2535
  if (this.actualPort !== this.requestedPort) logger$5.log(`ℹ️ Port ${this.requestedPort} was in use, using port ${this.actualPort} instead`);
2536
2536
  }
2537
2537
  const serverEntryPath = (0, node_path.join)(this.appRoot, ".gkm", "server", "server.ts");
@@ -2602,7 +2602,7 @@ var DevServer = class {
2602
2602
  await this.stop();
2603
2603
  let attempts = 0;
2604
2604
  while (attempts < 30) {
2605
- if (await require_stale.isPortAvailable(portToReuse)) break;
2605
+ if (await require_seeds.isPortAvailable(portToReuse)) break;
2606
2606
  await new Promise((resolve) => setTimeout(resolve, 100));
2607
2607
  attempts++;
2608
2608
  }
@@ -2943,7 +2943,7 @@ async function buildCommand(options) {
2943
2943
  }
2944
2944
  }
2945
2945
  const config = loadedConfig.type !== "workspace" ? await require_config.loadConfig() : (0, node_path.resolve)(process.cwd()) === (0, node_path.resolve)(loadedConfig.workspace.root) ? rootGkmConfig(loadedConfig.workspace) : (await require_config.loadAppConfig()).gkmConfig;
2946
- const target = options.provider ?? require_stale.providerOf(loadedConfig.workspace);
2946
+ const target = options.provider ?? require_seeds.providerOf(loadedConfig.workspace);
2947
2947
  const workspaceRoot = loadedConfig.workspace.root;
2948
2948
  const appRoot = process.cwd();
2949
2949
  const output = await buildOneApp({
@@ -2975,15 +2975,15 @@ async function declaredIn(config, cwd) {
2975
2975
  */
2976
2976
  function backendsOf(workspace) {
2977
2977
  return {
2978
- cache: require_stale.cacheBackendFor(require_stale.providerOf(workspace)),
2978
+ cache: require_seeds.cacheBackendFor(require_seeds.providerOf(workspace)),
2979
2979
  email: "ses"
2980
2980
  };
2981
2981
  }
2982
2982
  /** One app's build, from its config and the command's options. */
2983
2983
  async function buildOneApp(input) {
2984
2984
  const { config, options, workspace, appRoot, target } = input;
2985
- const cacheBackend = options.cache ?? require_stale.cacheBackendFor(require_stale.providerOf(workspace));
2986
- const eventsBackend = require_stale.eventsBackendFor(require_stale.providerOf(workspace));
2985
+ const cacheBackend = options.cache ?? require_seeds.cacheBackendFor(require_seeds.providerOf(workspace));
2986
+ const eventsBackend = require_seeds.eventsBackendFor(require_seeds.providerOf(workspace));
2987
2987
  const production = normalizeProductionConfig(options.production ?? false);
2988
2988
  if (production) logger$4.log(`🏭 Building for PRODUCTION`);
2989
2989
  logger$4.log(`Building for ${target}`);
@@ -3069,7 +3069,7 @@ async function buildApp(input) {
3069
3069
  if (production?.bundle && !input.skipBundle) {
3070
3070
  const outputDir = (0, node_path.join)(appRoot, ".gkm", "server");
3071
3071
  const entryPoint = await writeSurfaceServer(outputDir, production);
3072
- const { bundleServer } = await Promise.resolve().then(() => require("./bundler-C6T-1OLT.cjs"));
3072
+ const { bundleServer } = await Promise.resolve().then(() => require("./bundler-RAoSRuvp.cjs"));
3073
3073
  await bundleServer({
3074
3074
  entryPoint,
3075
3075
  outputDir: (0, node_path.join)(outputDir, "dist"),
@@ -3113,9 +3113,9 @@ async function buildApp(input) {
3113
3113
  };
3114
3114
  const endpointGenerator = new require_EndpointGenerator.EndpointGenerator();
3115
3115
  const functionGenerator = new FunctionGenerator();
3116
- const cronGenerator = new require_stale.CronGenerator();
3116
+ const cronGenerator = new require_seeds.CronGenerator();
3117
3117
  const subscriberGenerator = new require_SubscriberGenerator.SubscriberGenerator();
3118
- const queueGenerator = new require_stale.QueueGenerator();
3118
+ const queueGenerator = new require_seeds.QueueGenerator();
3119
3119
  const topicGenerator = new TopicGenerator();
3120
3120
  const code = constructGlobs;
3121
3121
  const [loadedEndpoints, allFunctions, allCrons, allSubscribers, allQueues, allTopics] = await Promise.all([
@@ -3154,7 +3154,7 @@ async function buildApp(input) {
3154
3154
  const appName = Object.entries(input.workspace.apps).find(([, app]) => (0, node_path.resolve)(input.workspace.root, app.path) === (0, node_path.resolve)(appRoot))?.[0];
3155
3155
  await buildWorkers({
3156
3156
  context: buildContext,
3157
- workers: require_stale.workerUnits(input.workspace, declared, background).filter((unit) => unit.app === appName),
3157
+ workers: require_seeds.workerUnits(input.workspace, declared, background).filter((unit) => unit.app === appName),
3158
3158
  serverDir: (0, node_path.join)(appRoot, ".gkm", "server"),
3159
3159
  crons: allCrons,
3160
3160
  queues: allQueues,
@@ -3177,7 +3177,7 @@ async function buildApp(input) {
3177
3177
  * runnables built from that worker, and nothing built from another.
3178
3178
  */
3179
3179
  async function buildWorkers(input) {
3180
- const generator = new require_stale.WorkerGenerator();
3180
+ const generator = new require_seeds.WorkerGenerator();
3181
3181
  for (const worker of input.workers) {
3182
3182
  const owned = (list) => list.filter(({ construct }) => construct.owner === worker.id);
3183
3183
  const crons = owned(input.crons);
@@ -3186,15 +3186,15 @@ async function buildWorkers(input) {
3186
3186
  const entryPoint = await generator.build({
3187
3187
  context: input.context,
3188
3188
  workerId: worker.id,
3189
- outputDir: require_stale.workerEntryDir(input.serverDir, worker.id),
3189
+ outputDir: require_seeds.workerEntryDir(input.serverDir, worker.id),
3190
3190
  crons,
3191
3191
  queues,
3192
3192
  subscribers
3193
3193
  });
3194
3194
  logger$4.log(`Generated worker ${worker.id}: ${crons.length} crons, ${queues.length} queues, ${subscribers.length} subscribers`);
3195
3195
  if (!input.bundle) continue;
3196
- const { bundleServer } = await Promise.resolve().then(() => require("./bundler-C6T-1OLT.cjs"));
3197
- const outfile = require_stale.workerBundleName(worker.id);
3196
+ const { bundleServer } = await Promise.resolve().then(() => require("./bundler-RAoSRuvp.cjs"));
3197
+ const outfile = require_seeds.workerBundleName(worker.id);
3198
3198
  await bundleServer({
3199
3199
  entryPoint,
3200
3200
  outputDir: (0, node_path.join)(input.serverDir, "dist"),
@@ -3263,7 +3263,7 @@ async function buildForTarget(target, context, appRoot, workspaceRoot, endpointG
3263
3263
  let masterKey;
3264
3264
  if (context.production?.bundle && !skipBundle) {
3265
3265
  logger$4.log(`\n📦 Bundling production server...`);
3266
- const { bundleServer } = await Promise.resolve().then(() => require("./bundler-C6T-1OLT.cjs"));
3266
+ const { bundleServer } = await Promise.resolve().then(() => require("./bundler-RAoSRuvp.cjs"));
3267
3267
  const allConstructs = [
3268
3268
  ...endpoints.map((e) => e.construct),
3269
3269
  ...functions.map((f) => f.construct),
@@ -3394,7 +3394,7 @@ async function workspaceBuildCommand(workspace, options) {
3394
3394
  const buildOrder = require_workspace.getAppBuildOrder(workspace);
3395
3395
  logger$4.log(` Build order: ${buildOrder.join(" → ")}`);
3396
3396
  try {
3397
- const target = options.provider ?? require_stale.providerOf(workspace);
3397
+ const target = options.provider ?? require_seeds.providerOf(workspace);
3398
3398
  const builds = [];
3399
3399
  for (const appName of buildOrder) {
3400
3400
  const app = workspace.apps[appName];
@@ -3517,14 +3517,14 @@ async function composeCommand(options, deps = {}) {
3517
3517
  if (options.push && !options.build) throw new require_compose.ComposePushNeedsBuild();
3518
3518
  const pulls = !options.build && (options.pull || options.tag !== void 0);
3519
3519
  if (options.digestsFile && !options.push && !pulls) throw new require_compose.ComposePinNeedsPull();
3520
- const allowDevServices = require_stale.parseDevServices(options.allowDevServices);
3520
+ const allowDevServices = require_seeds.parseDevServices(options.allowDevServices);
3521
3521
  const cwd = (0, node_path.resolve)(options.cwd ?? process.cwd());
3522
3522
  const { workspace } = await require_config.loadWorkspaceConfig(cwd);
3523
3523
  const { stage } = options;
3524
3524
  if (options.down) {
3525
3525
  const override = require_compose.stackOverrideFile(workspace.root, stage);
3526
3526
  const ref = {
3527
- project: require_compose.composeProject(require_stale.deployIdentity(workspace, stage)),
3527
+ project: require_compose.composeProject(require_seeds.deployIdentity(workspace, stage)),
3528
3528
  file: (0, node_path.join)(workspace.root, require_compose.stackDir(stage), "docker-compose.yml"),
3529
3529
  ...(0, node_fs.existsSync)(override) ? { overrides: [override] } : {},
3530
3530
  cwd: workspace.root
@@ -4965,25 +4965,25 @@ function loadPackageJson() {
4965
4965
  * Run: pnpm --filter @geekmidas/cli sync-versions
4966
4966
  */
4967
4967
  const GEEKMIDAS_VERSIONS = {
4968
- "@geekmidas/audit": "~10.0.0-alpha.78",
4969
- "@geekmidas/auth": "~10.0.0-alpha.78",
4970
- "@geekmidas/cache": "~10.0.0-alpha.78",
4971
- "@geekmidas/client": "~10.0.0-alpha.78",
4972
- "@geekmidas/cloud": "~10.0.0-alpha.78",
4973
- "@geekmidas/constructs": "~10.0.0-alpha.78",
4974
- "@geekmidas/db": "~10.0.0-alpha.78",
4975
- "@geekmidas/emailkit": "~10.0.0-alpha.78",
4976
- "@geekmidas/envkit": "~10.0.0-alpha.78",
4977
- "@geekmidas/errors": "~10.0.0-alpha.78",
4978
- "@geekmidas/events": "~10.0.0-alpha.78",
4979
- "@geekmidas/logger": "~10.0.0-alpha.78",
4980
- "@geekmidas/manifest": "~10.0.0-alpha.78",
4981
- "@geekmidas/rate-limit": "~10.0.0-alpha.78",
4982
- "@geekmidas/schema": "~10.0.0-alpha.78",
4983
- "@geekmidas/services": "~10.0.0-alpha.78",
4984
- "@geekmidas/storage": "~10.0.0-alpha.78",
4985
- "@geekmidas/telescope": "~10.0.0-alpha.78",
4986
- "@geekmidas/testkit": "~10.0.0-alpha.78",
4968
+ "@geekmidas/audit": "~10.0.0-alpha.79",
4969
+ "@geekmidas/auth": "~10.0.0-alpha.79",
4970
+ "@geekmidas/cache": "~10.0.0-alpha.79",
4971
+ "@geekmidas/client": "~10.0.0-alpha.79",
4972
+ "@geekmidas/cloud": "~10.0.0-alpha.79",
4973
+ "@geekmidas/constructs": "~10.0.0-alpha.79",
4974
+ "@geekmidas/db": "~10.0.0-alpha.79",
4975
+ "@geekmidas/emailkit": "~10.0.0-alpha.79",
4976
+ "@geekmidas/envkit": "~10.0.0-alpha.79",
4977
+ "@geekmidas/errors": "~10.0.0-alpha.79",
4978
+ "@geekmidas/events": "~10.0.0-alpha.79",
4979
+ "@geekmidas/logger": "~10.0.0-alpha.79",
4980
+ "@geekmidas/manifest": "~10.0.0-alpha.79",
4981
+ "@geekmidas/rate-limit": "~10.0.0-alpha.79",
4982
+ "@geekmidas/schema": "~10.0.0-alpha.79",
4983
+ "@geekmidas/services": "~10.0.0-alpha.79",
4984
+ "@geekmidas/storage": "~10.0.0-alpha.79",
4985
+ "@geekmidas/telescope": "~10.0.0-alpha.79",
4986
+ "@geekmidas/testkit": "~10.0.0-alpha.79",
4987
4987
  "@geekmidas/cli": `~${loadPackageJson().version}`
4988
4988
  };
4989
4989
  //#endregion
@@ -5566,7 +5566,7 @@ function deploy(options) {
5566
5566
  role-to-assume: \${{ vars.AWS_ROLE_ARN }}
5567
5567
  aws-region: ${options.region}
5568
5568
  ` : "";
5569
- const keyDir = `~/.gkm/keys/${require_stale.projectKey({ name: options.name })}`;
5569
+ const keyDir = `~/.gkm/keys/${require_seeds.projectKey({ name: options.name })}`;
5570
5570
  const stageSecrets = sst ? credentials : `
5571
5571
  # The stage's secrets are kept in the encrypted .gkm/secrets/<stage>.json,
5572
5572
  # and each environment holds its key as GKM_SECRETS_KEY. .gkm/ is
@@ -9902,11 +9902,11 @@ async function initCommand(projectName, options = {}) {
9902
9902
  }
9903
9903
  devSecrets.custom = customSecrets;
9904
9904
  const keys = {
9905
- key: require_stale.projectKey({ name }),
9905
+ key: require_seeds.projectKey({ name }),
9906
9906
  legacy: [(0, node_path.basename)(targetDir)]
9907
9907
  };
9908
- await new require_stale.FileSecretsStore(targetDir, keys).write(local, devSecrets);
9909
- const keyPath = require_stale.getKeyPath(local, keys);
9908
+ await new require_seeds.FileSecretsStore(targetDir, keys).write(local, devSecrets);
9909
+ const keyPath = require_seeds.getKeyPath(local, keys);
9910
9910
  console.log(` Secrets: .gkm/secrets/${local}.json (encrypted)`);
9911
9911
  console.log(` Key: ${keyPath}\n`);
9912
9912
  if (!options.skipInstall) {
@@ -10101,9 +10101,9 @@ const logger$2 = console;
10101
10101
  */
10102
10102
  async function storeFor(stage) {
10103
10103
  try {
10104
- return await require_stale.secretsStoreFor(await require_config.loadWorkspaceSettings(), stage);
10104
+ return await require_seeds.secretsStoreFor(await require_config.loadWorkspaceSettings(), stage);
10105
10105
  } catch (error) {
10106
- if (error instanceof require_config.ConfigNotFound) return new require_stale.FileSecretsStore(process.cwd());
10106
+ if (error instanceof require_config.ConfigNotFound) return new require_seeds.FileSecretsStore(process.cwd());
10107
10107
  throw error;
10108
10108
  }
10109
10109
  }
@@ -10174,7 +10174,7 @@ async function secretsSetCommand(key, value, options) {
10174
10174
  process.exit(1);
10175
10175
  }
10176
10176
  await assertCredentialValue(key, secretValue, stage);
10177
- await store.write(stage, require_stale.withCustomSecret(secrets, key, secretValue));
10177
+ await store.write(stage, require_seeds.withCustomSecret(secrets, key, secretValue));
10178
10178
  logger$2.log(`\n✓ Secret "${key}" set for stage "${stage}" (${store.name})`);
10179
10179
  }
10180
10180
  /** `gkm secrets:unset` for a key the stage does not hold. */
@@ -10237,7 +10237,7 @@ async function assertCredentialValue(key, value, stage) {
10237
10237
  }
10238
10238
  const check = await (await require_credentialSchemas.loadCredentialSchemas({
10239
10239
  root: workspace.root,
10240
- patterns: require_stale.constructGlobs(workspace)
10240
+ patterns: require_seeds.constructGlobs(workspace)
10241
10241
  })).check(key, value);
10242
10242
  if (!check.ok) throw new require_credentialSchemas.CredentialsInvalid(stage, [{
10243
10243
  key,
@@ -10263,7 +10263,7 @@ async function secretsShowCommand(options) {
10263
10263
  logger$2.log(` host: ${creds.host}`);
10264
10264
  logger$2.log(` port: ${creds.port}`);
10265
10265
  logger$2.log(` username: ${creds.username}`);
10266
- logger$2.log(` password: ${reveal ? creds.password : require_stale.maskPassword(creds.password)}`);
10266
+ logger$2.log(` password: ${reveal ? creds.password : require_seeds.maskPassword(creds.password)}`);
10267
10267
  if (creds.database) logger$2.log(` database: ${creds.database}`);
10268
10268
  if (creds.bucket) logger$2.log(` bucket: ${creds.bucket}`);
10269
10269
  }
@@ -10273,7 +10273,7 @@ async function secretsShowCommand(options) {
10273
10273
  if (secrets.urls.STORAGE_ENDPOINT) logger$2.log(` STORAGE_ENDPOINT: ${secrets.urls.STORAGE_ENDPOINT}`);
10274
10274
  if (Object.keys(secrets.custom).length > 0) {
10275
10275
  logger$2.log("\nCustom Secrets:");
10276
- for (const [key, value] of Object.entries(secrets.custom)) logger$2.log(` ${key}: ${reveal ? value : require_stale.maskPassword(value)}`);
10276
+ for (const [key, value] of Object.entries(secrets.custom)) logger$2.log(` ${key}: ${reveal ? value : require_seeds.maskPassword(value)}`);
10277
10277
  }
10278
10278
  if (!reveal) logger$2.log("\nUse --reveal to show actual values");
10279
10279
  }
@@ -10353,7 +10353,7 @@ async function secretsImportCommand(file, options) {
10353
10353
  function maskUrl(url) {
10354
10354
  try {
10355
10355
  const parsed = new URL(url);
10356
- if (parsed.password) parsed.password = require_stale.maskPassword(parsed.password);
10356
+ if (parsed.password) parsed.password = require_seeds.maskPassword(parsed.password);
10357
10357
  return parsed.toString();
10358
10358
  } catch {
10359
10359
  return url;
@@ -10408,7 +10408,7 @@ async function setupCommand(options = {}) {
10408
10408
  * free and quiet.
10409
10409
  */
10410
10410
  async function reconcileLocal(workspace, stage, options) {
10411
- const result = await require_stale.reconcileWorkspace(workspace, { stage });
10411
+ const result = await require_seeds.reconcileWorkspace(workspace, { stage });
10412
10412
  if (result.plan.containers.length === 0) {
10413
10413
  logger$1.log("🐳 No containers declared");
10414
10414
  return;
@@ -10418,7 +10418,7 @@ async function reconcileLocal(workspace, stage, options) {
10418
10418
  return;
10419
10419
  }
10420
10420
  logger$1.log("🐳 Services");
10421
- for (const line of require_stale.describeServices(result.services)) logger$1.log(line);
10421
+ for (const line of require_seeds.describeServices(result.services)) logger$1.log(line);
10422
10422
  const url = result.plan.resources.filter((r) => r.kind === "rest-api" || r.kind === "site" || r.kind === "file-server").map((r) => result.env[r.envKey]).find((address) => address?.startsWith("https://"));
10423
10423
  if (url) await ensureTrusted(workspace.root, url, { ...options.yes ? { assumeYes: true } : {} });
10424
10424
  }
@@ -10435,11 +10435,11 @@ async function resolveSecrets(stage, workspace, options) {
10435
10435
  logger$1.log("🔐 Generating fresh secrets (--force)...");
10436
10436
  return generateFreshSecrets(stage, workspace);
10437
10437
  }
10438
- const store = await require_stale.secretsStoreFor(workspace, stage);
10438
+ const store = await require_seeds.secretsStoreFor(workspace, stage);
10439
10439
  const secrets = await store.read(stage);
10440
10440
  if (secrets) {
10441
10441
  logger$1.log("🔐 Using existing secrets");
10442
- const reconciled = reconcileSecrets(secrets, workspace, await require_stale.derivedContainers(workspace, stage));
10442
+ const reconciled = reconcileSecrets(secrets, workspace, await require_seeds.derivedContainers(workspace, stage));
10443
10443
  if (reconciled) await store.write(stage, reconciled);
10444
10444
  return reconciled ?? secrets;
10445
10445
  }
@@ -10541,9 +10541,9 @@ function createFreshWorkspaceSecrets(stage, workspace, containers = []) {
10541
10541
  */
10542
10542
  async function ensureStageSecrets(stage, cwd = process.cwd()) {
10543
10543
  const { workspace } = await require_config.loadWorkspaceConfig(cwd);
10544
- const store = await require_stale.secretsStoreFor(workspace, stage);
10544
+ const store = await require_seeds.secretsStoreFor(workspace, stage);
10545
10545
  if (await store.read(stage)) return false;
10546
- const secrets = createFreshWorkspaceSecrets(stage, workspace, await require_stale.derivedContainers(workspace, stage));
10546
+ const secrets = createFreshWorkspaceSecrets(stage, workspace, await require_seeds.derivedContainers(workspace, stage));
10547
10547
  await store.write(stage, secrets);
10548
10548
  return true;
10549
10549
  }
@@ -10551,8 +10551,8 @@ async function ensureStageSecrets(stage, cwd = process.cwd()) {
10551
10551
  * Generate fresh secrets for the workspace.
10552
10552
  */
10553
10553
  async function generateFreshSecrets(stage, workspace) {
10554
- const secrets = createFreshWorkspaceSecrets(stage, workspace, await require_stale.derivedContainers(workspace, stage));
10555
- const store = await require_stale.secretsStoreFor(workspace, stage);
10554
+ const secrets = createFreshWorkspaceSecrets(stage, workspace, await require_seeds.derivedContainers(workspace, stage));
10555
+ const store = await require_seeds.secretsStoreFor(workspace, stage);
10556
10556
  await store.write(stage, secrets);
10557
10557
  logger$1.log(` Secrets written to the "${stage}" store (${store.name})`);
10558
10558
  return secrets;
@@ -10592,7 +10592,7 @@ function printSummary(workspace, stage) {
10592
10592
  * A no-op when nothing is recorded — no run yet, or one already torn down —
10593
10593
  * so running it twice, or before a setup, is harmless.
10594
10594
  */
10595
- async function dropTestDatabases(cwd, root, sql = require_stale.pgClient) {
10595
+ async function dropTestDatabases(cwd, root, sql = require_seeds.pgClient) {
10596
10596
  const readyPath = (0, node_path.join)(cwd, require_ready.TEST_READY_FILE);
10597
10597
  const ready = await readReady(readyPath);
10598
10598
  const recorded = ready?.databases;
@@ -10600,9 +10600,9 @@ async function dropTestDatabases(cwd, root, sql = require_stale.pgClient) {
10600
10600
  const client = sql(recorded.port);
10601
10601
  for (const name of recorded.names) {
10602
10602
  if (!name.endsWith(`_test`)) throw new NotATestDatabase(name);
10603
- await client.query(void 0, `DROP DATABASE IF EXISTS ${require_stale.quoteIdentifier(name)} WITH (FORCE)`);
10603
+ await client.query(void 0, `DROP DATABASE IF EXISTS ${require_seeds.quoteIdentifier(name)} WITH (FORCE)`);
10604
10604
  }
10605
- await require_stale.forgetState(root, require_workspace.TEST_STAGE);
10605
+ await require_seeds.forgetState(root, require_workspace.TEST_STAGE);
10606
10606
  const { databases: _dropped, ...rest } = ready;
10607
10607
  await (0, node_fs_promises.writeFile)(readyPath, JSON.stringify(rest, null, 2));
10608
10608
  return recorded.names;
@@ -10642,10 +10642,10 @@ async function testCommand(options = {}) {
10642
10642
  const { ensureStageSecrets } = await Promise.resolve().then(() => setup_exports);
10643
10643
  if (await ensureStageSecrets(stage, cwd)) console.log(` 🔐 Generated fresh ${stage} secrets (auto-setup)`);
10644
10644
  }
10645
- const defaultEnv = require_stale.loadEnvFiles(".env");
10645
+ const defaultEnv = require_seeds.loadEnvFiles(".env");
10646
10646
  if (defaultEnv.loaded.length > 0) console.log(` 📦 Loaded env: ${defaultEnv.loaded.join(", ")}`);
10647
10647
  if (!options.prepare) await teardown(cwd);
10648
- const result = await require_stale.prepareEntryCredentials({
10648
+ const result = await require_seeds.prepareEntryCredentials({
10649
10649
  stage,
10650
10650
  startDocker: !options.prepare,
10651
10651
  secretsFileName: "test-secrets.json",
@@ -10666,14 +10666,14 @@ async function testCommand(options = {}) {
10666
10666
  await (0, node_fs_promises.writeFile)(result.secretsJsonPath, JSON.stringify(finalCredentials, null, 2));
10667
10667
  const gkmDir = (0, node_path.join)(cwd, ".gkm");
10668
10668
  const preloadPath = (0, node_path.join)(gkmDir, "test-credentials-preload.ts");
10669
- await require_stale.createCredentialsPreload(preloadPath, result.secretsJsonPath);
10669
+ await require_seeds.createCredentialsPreload(preloadPath, result.secretsJsonPath);
10670
10670
  const workspace = await require_config.loadWorkspaceConfig(cwd).then((loaded) => loaded.workspace).catch(() => void 0);
10671
10671
  const manifestPath = workspace ? await require_ready.writeTestHarness({
10672
10672
  root: workspace.root,
10673
10673
  targets: [workspace.root, ...Object.values(workspace.apps).map((app) => (0, node_path.isAbsolute)(app.path) ? app.path : (0, node_path.join)(workspace.root, app.path))],
10674
- patterns: require_stale.constructGlobs(workspace),
10675
- cacheBackend: require_stale.backendsOf(workspace).cache,
10676
- eventsBackend: require_stale.backendsOf(workspace).events,
10674
+ patterns: require_seeds.constructGlobs(workspace),
10675
+ cacheBackend: require_seeds.backendsOf(workspace).cache,
10676
+ eventsBackend: require_seeds.backendsOf(workspace).events,
10677
10677
  stage: require_workspace.TEST_STAGE,
10678
10678
  env: finalCredentials,
10679
10679
  factories: (0, node_path.join)(workspace.root, workspace.test.factories ?? "test/factories")
@@ -10736,8 +10736,8 @@ async function teardown(cwd) {
10736
10736
  * the plan provisions, on the port the shared container answers.
10737
10737
  */
10738
10738
  function testDatabases(reconciled) {
10739
- const port = reconciled?.ports[require_stale.primaryPortKey("postgres")];
10740
- const names = reconciled ? require_stale.postgresDatabaseNames(reconciled.plan) : [];
10739
+ const port = reconciled?.ports[require_seeds.primaryPortKey("postgres")];
10740
+ const names = reconciled ? require_seeds.postgresDatabaseNames(reconciled.plan) : [];
10741
10741
  return port !== void 0 && names.length > 0 ? { databases: {
10742
10742
  port,
10743
10743
  names
@@ -10748,11 +10748,11 @@ function testDatabases(reconciled) {
10748
10748
  * starts without the reference data the app needs.
10749
10749
  */
10750
10750
  async function migrateTestStage(workspace, env) {
10751
- const { migrateAndSeed } = await Promise.resolve().then(() => require("./migrate-Cgoy58Sh.cjs"));
10751
+ const { migrateAndSeed } = await Promise.resolve().then(() => require("./migrate-CTqICj1B.cjs"));
10752
10752
  const { discover } = await Promise.resolve().then(() => require("./discover-D1It5r_h.cjs")).then((n) => n.discover_exports);
10753
10753
  const sources = {};
10754
10754
  const manifest = await discover({
10755
- patterns: require_stale.constructGlobs(workspace),
10755
+ patterns: require_seeds.constructGlobs(workspace),
10756
10756
  cwd: workspace.root,
10757
10757
  sources
10758
10758
  });
@@ -11181,7 +11181,7 @@ program.command("migrate").description("Apply each database construct's migratio
11181
11181
  try {
11182
11182
  const globalOptions = program.opts();
11183
11183
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11184
- const { migrateCommand } = await Promise.resolve().then(() => require("./migrate-Cgoy58Sh.cjs"));
11184
+ const { migrateCommand } = await Promise.resolve().then(() => require("./migrate-CTqICj1B.cjs"));
11185
11185
  await migrateCommand({
11186
11186
  ...options,
11187
11187
  ...construct ? { construct } : {}
@@ -11195,7 +11195,7 @@ program.command("seed").description("Migrate, then run each database construct's
11195
11195
  try {
11196
11196
  const globalOptions = program.opts();
11197
11197
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11198
- const { seedCommand } = await Promise.resolve().then(() => require("./migrate-Cgoy58Sh.cjs"));
11198
+ const { seedCommand } = await Promise.resolve().then(() => require("./migrate-CTqICj1B.cjs"));
11199
11199
  await seedCommand({
11200
11200
  ...options,
11201
11201
  ...construct ? { construct } : {}
@@ -11209,7 +11209,7 @@ program.command("migration").description("Write a construct's next migration: an
11209
11209
  try {
11210
11210
  const globalOptions = program.opts();
11211
11211
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11212
- const { migrationCommand } = await Promise.resolve().then(() => require("./migrate-Cgoy58Sh.cjs"));
11212
+ const { migrationCommand } = await Promise.resolve().then(() => require("./migrate-CTqICj1B.cjs"));
11213
11213
  await migrationCommand({
11214
11214
  construct,
11215
11215
  ...name ? { name } : {}
@@ -11248,7 +11248,7 @@ program.command("docker").description("Generate Docker deployment files").option
11248
11248
  try {
11249
11249
  const globalOptions = program.opts();
11250
11250
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11251
- await require_stale.dockerCommand(options);
11251
+ await require_seeds.dockerCommand(options);
11252
11252
  } catch (error) {
11253
11253
  console.error(formatError(error));
11254
11254
  process.exit(1);
@@ -11268,7 +11268,7 @@ program.command("prepack").description("Generate Docker files for production dep
11268
11268
  try {
11269
11269
  const globalOptions = program.opts();
11270
11270
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11271
- await require_stale.dockerCommand({
11271
+ await require_seeds.dockerCommand({
11272
11272
  build: options.build,
11273
11273
  push: options.push,
11274
11274
  tag: options.tag,
@@ -11313,7 +11313,7 @@ program.command("secrets:add").description("Build the keys a stage must be given
11313
11313
  try {
11314
11314
  const globalOptions = program.opts();
11315
11315
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11316
- const { secretsAddCommand } = await Promise.resolve().then(() => require("./add-BvOICikp.cjs"));
11316
+ const { secretsAddCommand } = await Promise.resolve().then(() => require("./add-HF9POevk.cjs"));
11317
11317
  await secretsAddCommand(options);
11318
11318
  } catch (error) {
11319
11319
  console.error(formatError(error));
@@ -11324,7 +11324,7 @@ program.command("encryption:rotate").description("Add a new current key to an En
11324
11324
  try {
11325
11325
  const globalOptions = program.opts();
11326
11326
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11327
- const { encryptionRotateCommand } = await Promise.resolve().then(() => require("./encryption-CbMI24fI.cjs"));
11327
+ const { encryptionRotateCommand } = await Promise.resolve().then(() => require("./encryption-D2z16vsS.cjs"));
11328
11328
  await encryptionRotateCommand(construct, options);
11329
11329
  } catch (error) {
11330
11330
  console.error(formatError(error));
@@ -11335,7 +11335,7 @@ program.command("encryption:retire").description("Remove an old key from an Encr
11335
11335
  try {
11336
11336
  const globalOptions = program.opts();
11337
11337
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11338
- const { encryptionRetireCommand } = await Promise.resolve().then(() => require("./encryption-CbMI24fI.cjs"));
11338
+ const { encryptionRetireCommand } = await Promise.resolve().then(() => require("./encryption-D2z16vsS.cjs"));
11339
11339
  await encryptionRetireCommand(construct, key, options);
11340
11340
  } catch (error) {
11341
11341
  console.error(formatError(error));
@@ -11378,7 +11378,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
11378
11378
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11379
11379
  const { loadWorkspaceConfig } = await Promise.resolve().then(() => require("./config.cjs"));
11380
11380
  const { reconcileMissingSecrets } = await Promise.resolve().then(() => require("./reconcile-CuCQBa5-.cjs"));
11381
- const { secretsStoreFor } = await Promise.resolve().then(() => require("./stale-BsiPJI7Y.cjs")).then((n) => n.store_exports);
11381
+ const { secretsStoreFor } = await Promise.resolve().then(() => require("./seeds-qX13ubmO.cjs")).then((n) => n.store_exports);
11382
11382
  const { workspace } = await loadWorkspaceConfig();
11383
11383
  const stage = options.stage ?? workspace.stages.local;
11384
11384
  const store = await secretsStoreFor(workspace, stage);
@@ -11387,7 +11387,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
11387
11387
  console.error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
11388
11388
  process.exit(1);
11389
11389
  }
11390
- const { derivedContainers } = await Promise.resolve().then(() => require("./stale-BsiPJI7Y.cjs")).then((n) => n.workspace_exports);
11390
+ const { derivedContainers } = await Promise.resolve().then(() => require("./seeds-qX13ubmO.cjs")).then((n) => n.workspace_exports);
11391
11391
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers(workspace, stage));
11392
11392
  if (!result) {
11393
11393
  console.log(`\n✓ Secrets for stage "${stage}" are up-to-date`);
@@ -11405,7 +11405,7 @@ program.command("secrets:migrate").description("Copy a deployed stage's secrets
11405
11405
  try {
11406
11406
  const globalOptions = program.opts();
11407
11407
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11408
- const { secretsMigrateCommand } = await Promise.resolve().then(() => require("./migrate-B4GBvCNY.cjs"));
11408
+ const { secretsMigrateCommand } = await Promise.resolve().then(() => require("./migrate-DvIAITiG.cjs"));
11409
11409
  await secretsMigrateCommand(options);
11410
11410
  } catch (error) {
11411
11411
  console.error(formatError(error));
@@ -11413,7 +11413,7 @@ program.command("secrets:migrate").description("Copy a deployed stage's secrets
11413
11413
  }
11414
11414
  });
11415
11415
  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) => {
11416
- const { deployCli } = await Promise.resolve().then(() => require("./cli-K6Vj_pPW.cjs"));
11416
+ const { deployCli } = await Promise.resolve().then(() => require("./cli-C3hsEwLK.cjs"));
11417
11417
  const globalOptions = program.opts();
11418
11418
  const code = await deployCli({
11419
11419
  cwd: (0, node_path.resolve)(globalOptions.cwd ?? process.cwd()),
@@ -11430,7 +11430,7 @@ program.command("deploy").description("Deploy a stage through its target").optio
11430
11430
  });
11431
11431
  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) => {
11432
11432
  try {
11433
- const { rollbackStage } = await Promise.resolve().then(() => require("./rollback-F3P-rA-r.cjs")).then((n) => n.rollback_exports);
11433
+ const { rollbackStage } = await Promise.resolve().then(() => require("./rollback-DUoOaws3.cjs")).then((n) => n.rollback_exports);
11434
11434
  const { terminalCredentials } = await Promise.resolve().then(() => require("./terminal-BL5E0xbR.cjs"));
11435
11435
  const globalOptions = program.opts();
11436
11436
  await rollbackStage({
@@ -11466,7 +11466,7 @@ program.command("deploy:github").description("Let GitHub Actions deploy a stage:
11466
11466
  try {
11467
11467
  const globalOptions = program.opts();
11468
11468
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11469
- const { deployGithubCommand } = await Promise.resolve().then(() => require("./github-D9vGqdLk.cjs"));
11469
+ const { deployGithubCommand } = await Promise.resolve().then(() => require("./github-B8dDa8xf.cjs"));
11470
11470
  await deployGithubCommand(options);
11471
11471
  } catch (error) {
11472
11472
  console.error(formatError(error));