@geekmidas/cli 10.0.0-alpha.26 → 10.0.0-alpha.27

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 (59) hide show
  1. package/dist/{config-Dn9DW2Fz.cjs → config-7R_-WyHq.cjs} +24 -3
  2. package/dist/{config-Dn9DW2Fz.cjs.map → config-7R_-WyHq.cjs.map} +1 -1
  3. package/dist/{config-DBGpRTUy.mjs → config-DXrrYvob.mjs} +19 -4
  4. package/dist/{config-DBGpRTUy.mjs.map → config-DXrrYvob.mjs.map} +1 -1
  5. package/dist/config.cjs +3 -2
  6. package/dist/config.d.cts +12 -1
  7. package/dist/config.d.cts.map +1 -1
  8. package/dist/config.d.mts +12 -1
  9. package/dist/config.d.mts.map +1 -1
  10. package/dist/config.mjs +3 -3
  11. package/dist/{github-D5SBlOx5.mjs → github-Ba5kXEJo.mjs} +4 -4
  12. package/dist/{github-D5SBlOx5.mjs.map → github-Ba5kXEJo.mjs.map} +1 -1
  13. package/dist/{github-D58lt7RR.cjs → github-CQflOKKV.cjs} +4 -4
  14. package/dist/{github-D58lt7RR.cjs.map → github-CQflOKKV.cjs.map} +1 -1
  15. package/dist/{index-RCUizGxL.d.cts → index-BPN7kghQ.d.cts} +2 -12
  16. package/dist/{index-B4H4XF7A.d.mts.map → index-BPN7kghQ.d.cts.map} +1 -1
  17. package/dist/{index-B4H4XF7A.d.mts → index-BqWKWRm0.d.mts} +2 -12
  18. package/dist/{index-RCUizGxL.d.cts.map → index-BqWKWRm0.d.mts.map} +1 -1
  19. package/dist/index.cjs +100 -170
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.mjs +51 -121
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/{openapi-DHQlstv6.mjs → openapi-3NLVvtz-.mjs} +2 -2
  24. package/dist/{openapi-DHQlstv6.mjs.map → openapi-3NLVvtz-.mjs.map} +1 -1
  25. package/dist/{openapi-BAKQLho-.cjs → openapi-rhJdy2GC.cjs} +2 -2
  26. package/dist/{openapi-BAKQLho-.cjs.map → openapi-rhJdy2GC.cjs.map} +1 -1
  27. package/dist/openapi.cjs +1 -1
  28. package/dist/openapi.mjs +1 -1
  29. package/dist/{generator-LfZU7NlU.mjs → reconcile-DhbCvh4K.mjs} +111 -2
  30. package/dist/reconcile-DhbCvh4K.mjs.map +1 -0
  31. package/dist/{generator-Wdfp0jCS.cjs → reconcile-szmJw_Sb.cjs} +130 -3
  32. package/dist/reconcile-szmJw_Sb.cjs.map +1 -0
  33. package/dist/{transfer-CAJs_vhu.mjs → transfer-BV00TxZv.mjs} +4 -4
  34. package/dist/{transfer-CAJs_vhu.mjs.map → transfer-BV00TxZv.mjs.map} +1 -1
  35. package/dist/{transfer-D2qLFXsw.cjs → transfer-BYIn7z8m.cjs} +4 -4
  36. package/dist/{transfer-D2qLFXsw.cjs.map → transfer-BYIn7z8m.cjs.map} +1 -1
  37. package/dist/workspace/index.cjs +1 -2
  38. package/dist/workspace/index.d.cts +2 -2
  39. package/dist/workspace/index.d.mts +2 -2
  40. package/dist/workspace/index.mjs +2 -2
  41. package/dist/{workspace-CRD9YinV.cjs → workspace-Bav3TVrP.cjs} +47 -78
  42. package/dist/workspace-Bav3TVrP.cjs.map +1 -0
  43. package/dist/{credentials-DI9kJcaP.mjs → workspace-CUmR_k4J.mjs} +228 -492
  44. package/dist/workspace-CUmR_k4J.mjs.map +1 -0
  45. package/dist/{credentials-fQSAe4Nb.cjs → workspace-DgeVgxmm.cjs} +229 -517
  46. package/dist/workspace-DgeVgxmm.cjs.map +1 -0
  47. package/dist/{workspace-Bu3xNCej.mjs → workspace-T4IVGSoB.mjs} +48 -73
  48. package/dist/workspace-T4IVGSoB.mjs.map +1 -0
  49. package/package.json +14 -14
  50. package/dist/credentials-DI9kJcaP.mjs.map +0 -1
  51. package/dist/credentials-fQSAe4Nb.cjs.map +0 -1
  52. package/dist/generator-LfZU7NlU.mjs.map +0 -1
  53. package/dist/generator-Wdfp0jCS.cjs.map +0 -1
  54. package/dist/reconcile-gb1lz1Dk.mjs +0 -113
  55. package/dist/reconcile-gb1lz1Dk.mjs.map +0 -1
  56. package/dist/reconcile-hx_vBvux.cjs +0 -136
  57. package/dist/reconcile-hx_vBvux.cjs.map +0 -1
  58. package/dist/workspace-Bu3xNCej.mjs.map +0 -1
  59. package/dist/workspace-CRD9YinV.cjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -2,15 +2,14 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_rolldown_runtime = require("./rolldown-runtime-C0BPl7ul.cjs");
4
4
  const require_discover = require("./discover-B_HtYJCr.cjs");
5
- const require_config = require("./config-Dn9DW2Fz.cjs");
6
- const require_workspace = require("./workspace-CRD9YinV.cjs");
7
- const require_credentials = require("./credentials-fQSAe4Nb.cjs");
8
- const require_generator = require("./generator-Wdfp0jCS.cjs");
5
+ const require_config = require("./config-7R_-WyHq.cjs");
6
+ const require_workspace = require("./workspace-Bav3TVrP.cjs");
9
7
  const require_storage = require("./storage-DgypfSD6.cjs");
10
- const require_openapi = require("./openapi-BAKQLho-.cjs");
8
+ const require_workspace$1 = require("./workspace-DgeVgxmm.cjs");
9
+ const require_openapi = require("./openapi-rhJdy2GC.cjs");
11
10
  const require_emit = require("./emit-BdoPFjZf.cjs");
12
- const require_reconcile = require("./reconcile-hx_vBvux.cjs");
13
- const require_transfer = require("./transfer-D2qLFXsw.cjs");
11
+ const require_reconcile = require("./reconcile-szmJw_Sb.cjs");
12
+ const require_transfer = require("./transfer-BYIn7z8m.cjs");
14
13
  let commander = require("commander");
15
14
  let node_process = require("node:process");
16
15
  let node_readline_promises = require("node:readline/promises");
@@ -25,13 +24,13 @@ let fast_glob = require("fast-glob");
25
24
  fast_glob = require_rolldown_runtime.__toESM(fast_glob, 1);
26
25
  let chokidar = require("chokidar");
27
26
  chokidar = require_rolldown_runtime.__toESM(chokidar, 1);
28
- let yaml = require("yaml");
29
27
  let node_crypto = require("node:crypto");
28
+ let node_url = require("node:url");
30
29
  let _geekmidas_db_pg_roles = require("@geekmidas/db/pg/roles");
31
30
  let pg = require("pg");
31
+ let yaml = require("yaml");
32
32
  let node_util = require("node:util");
33
33
  let _geekmidas_cache_postgres = require("@geekmidas/cache/postgres");
34
- let node_url = require("node:url");
35
34
  let _geekmidas_constructs_crons = require("@geekmidas/constructs/crons");
36
35
  let _geekmidas_constructs_functions = require("@geekmidas/constructs/functions");
37
36
  let _geekmidas_constructs_queue = require("@geekmidas/constructs/queue");
@@ -44,7 +43,7 @@ prompts = require_rolldown_runtime.__toESM(prompts, 1);
44
43
  let _geekmidas_envkit = require("@geekmidas/envkit");
45
44
  let _geekmidas_services = require("@geekmidas/services");
46
45
  //#region package.json
47
- var version = "10.0.0-alpha.26";
46
+ var version = "10.0.0-alpha.27";
48
47
  //#endregion
49
48
  //#region src/auth/credentials.ts
50
49
  /**
@@ -434,19 +433,16 @@ var NoCommandSpecified = class extends Error {
434
433
  async function execCommand(commandArgs, options = {}) {
435
434
  const cwd = options.cwd ?? process.cwd();
436
435
  if (!commandArgs[0]) throw new NoCommandSpecified();
437
- const defaultEnv = require_credentials.loadEnvFiles(".env");
436
+ const defaultEnv = require_workspace$1.loadEnvFiles(".env");
438
437
  if (defaultEnv.loaded.length > 0) logger$12.log(`📦 Loaded env: ${defaultEnv.loaded.join(", ")}`);
439
- const { credentials, secretsJsonPath, appName } = await require_credentials.prepareEntryCredentials({
440
- cwd,
441
- resolveDockerPorts: "readonly"
442
- });
438
+ const { credentials, secretsJsonPath, appName } = await require_workspace$1.prepareEntryCredentials({ cwd });
443
439
  if (appName) logger$12.log(`📦 App: ${appName}`);
444
440
  const secretCount = Object.keys(credentials).filter((k) => k !== "PORT").length;
445
441
  if (secretCount > 0) logger$12.log(`🔐 Loaded ${secretCount} secret(s)`);
446
442
  const preloadDir = (0, node_path.join)(cwd, ".gkm");
447
443
  await (0, node_fs_promises.mkdir)(preloadDir, { recursive: true });
448
444
  const preloadPath = (0, node_path.join)(preloadDir, "credentials-preload.mjs");
449
- await require_credentials.createCredentialsPreload(preloadPath, secretsJsonPath);
445
+ await require_workspace$1.createCredentialsPreload(preloadPath, secretsJsonPath);
450
446
  const [cmd, ...args] = commandArgs;
451
447
  logger$12.log(`🚀 Running: ${[cmd, ...args].join(" ")}`);
452
448
  const nodeOptions = [(process.env.NODE_OPTIONS ?? "").replace(/--import[= ]\S+/g, "").trim(), `--import=${preloadPath}`].filter(Boolean).join(" ");
@@ -563,7 +559,7 @@ function getProductionConfigFromGkm(config) {
563
559
  }
564
560
  async function devCommand(options) {
565
561
  if (options.entry) return entryDevCommand(options);
566
- const defaultEnv = require_credentials.loadEnvFiles(".env");
562
+ const defaultEnv = require_workspace$1.loadEnvFiles(".env");
567
563
  if (defaultEnv.loaded.length > 0) logger$11.log(`📦 Loaded env: ${defaultEnv.loaded.join(", ")}`);
568
564
  const appName = require_config.getAppNameFromCwd();
569
565
  let config;
@@ -597,6 +593,7 @@ async function devCommand(options) {
597
593
  return workspaceDevCommand(loadedConfig.workspace, options);
598
594
  }
599
595
  config = loadedConfig.raw;
596
+ workspace = loadedConfig.workspace;
600
597
  }
601
598
  else {
602
599
  const loadedConfig = await require_config.loadWorkspaceConfig();
@@ -608,7 +605,7 @@ async function devCommand(options) {
608
605
  workspace = loadedConfig.workspace;
609
606
  }
610
607
  if (config.env) {
611
- const { loaded, missing } = require_credentials.loadEnvFiles(config.env, appRoot);
608
+ const { loaded, missing } = require_workspace$1.loadEnvFiles(config.env, appRoot);
612
609
  if (loaded.length > 0) logger$11.log(`📦 Loaded env: ${loaded.join(", ")}`);
613
610
  if (missing.length > 0) logger$11.warn(`⚠️ Missing env files: ${missing.join(", ")}`);
614
611
  }
@@ -629,7 +626,7 @@ async function devCommand(options) {
629
626
  appRoot,
630
627
  providers: ["server"],
631
628
  enableOpenApi,
632
- cacheBackend: require_credentials.cacheBackendFor(require_credentials.providerOf(workspace ?? config)),
629
+ cacheBackend: require_workspace$1.cacheBackendFor(require_workspace$1.providerOf(workspace ?? config)),
633
630
  telescope,
634
631
  studio,
635
632
  hooks,
@@ -640,25 +637,14 @@ async function devCommand(options) {
640
637
  const initial = await build();
641
638
  const runtime = config.runtime ?? "node";
642
639
  let secretsJsonPath;
643
- const appSecrets = await require_credentials.loadSecretsForApp(secretsRoot, config.stages.local, workspaceAppName);
644
- if (workspace && require_credentials.usesConstructs(workspace)) {
645
- const reconciled = await require_credentials.reconcileWorkspace(workspace, { stage: workspace.stages.local });
640
+ const appSecrets = await require_workspace$1.loadSecretsForApp(secretsRoot, config.stages.local, workspaceAppName);
641
+ if (workspace) {
642
+ const reconciled = await require_workspace$1.reconcileWorkspace(workspace, { stage: workspace.stages.local });
646
643
  if (reconciled.changed && reconciled.plan.containers.length > 0) {
647
644
  logger$11.log(`🐳 Services: ${reconciled.plan.containers.join(", ")}`);
648
645
  for (const [container, address] of Object.entries(reconciled.addresses)) logger$11.log(` ${container}: ${address}`);
649
646
  }
650
647
  Object.assign(appSecrets, reconciled.env);
651
- } else {
652
- const resolvedPorts = await require_credentials.resolveServicePorts(secretsRoot);
653
- if (Object.keys(resolvedPorts.ports).length > 0) {
654
- const rewritten = require_credentials.rewriteUrlsWithPorts(appSecrets, resolvedPorts);
655
- Object.assign(appSecrets, rewritten);
656
- logger$11.log(`🔌 Applied ${Object.keys(resolvedPorts.ports).length} port mapping(s)`);
657
- }
658
- }
659
- if (workspace && workspaceAppName) {
660
- const depEnv = require_workspace.getDependencyEnvVars(workspace, workspaceAppName);
661
- for (const [key, value] of Object.entries(depEnv)) appSecrets[key] ??= value;
662
648
  }
663
649
  if (Object.keys(appSecrets).length > 0) {
664
650
  const secretsDir = (0, node_path.join)(secretsRoot, ".gkm");
@@ -727,19 +713,6 @@ async function devCommand(options) {
727
713
  process.on("SIGTERM", shutdown);
728
714
  }
729
715
  /**
730
- * Generate all dependency environment variables for all apps.
731
- * Returns a flat object with all {APP_NAME}_URL variables.
732
- * @internal Exported for testing
733
- */
734
- function generateAllDependencyEnvVars(workspace, urlPrefix = "http://localhost") {
735
- const env = {};
736
- for (const appName of Object.keys(workspace.apps)) {
737
- const appEnv = require_workspace.getDependencyEnvVars(workspace, appName, urlPrefix);
738
- Object.assign(env, appEnv);
739
- }
740
- return env;
741
- }
742
- /**
743
716
  * Check for port conflicts across all apps.
744
717
  * Returns list of conflicts if any ports are duplicated.
745
718
  * @internal Exported for testing
@@ -964,38 +937,26 @@ async function workspaceDevCommand(workspace, options) {
964
937
  logger$11.log("✅ Frontend apps validated");
965
938
  }
966
939
  const rawSecrets = await loadDevSecrets(workspace);
967
- let secretsEnv;
940
+ const reconciled = await require_workspace$1.reconcileWorkspace(workspace, { stage: workspace.stages.local });
941
+ if (reconciled.changed && reconciled.plan.containers.length > 0) {
942
+ logger$11.log(`🐳 Services: ${reconciled.plan.containers.join(", ")}`);
943
+ for (const [container, address] of Object.entries(reconciled.addresses)) logger$11.log(` ${container}: ${address}`);
944
+ }
945
+ const secretsEnv = {
946
+ ...rawSecrets,
947
+ ...reconciled.env
948
+ };
968
949
  const appUrls = {};
969
- if (require_credentials.usesConstructs(workspace)) {
970
- const reconciled = await require_credentials.reconcileWorkspace(workspace, { stage: workspace.stages.local });
971
- if (reconciled.changed && reconciled.plan.containers.length > 0) {
972
- logger$11.log(`🐳 Services: ${reconciled.plan.containers.join(", ")}`);
973
- for (const [container, address] of Object.entries(reconciled.addresses)) logger$11.log(` ${container}: ${address}`);
974
- }
975
- secretsEnv = {
976
- ...rawSecrets,
977
- ...reconciled.env
978
- };
979
- for (const resource of reconciled.plan.resources) {
980
- if (resource.kind !== "rest-api" && resource.kind !== "site") continue;
981
- const address = reconciled.env[resource.envKey];
982
- if (address) appUrls[resource.id] = address;
983
- }
984
- } else {
985
- const resolvedPorts = await require_credentials.resolveServicePorts(workspace.root);
986
- await require_credentials.startWorkspaceServices(workspace, resolvedPorts.dockerEnv, rawSecrets);
987
- secretsEnv = require_credentials.rewriteUrlsWithPorts(rawSecrets, resolvedPorts);
950
+ for (const resource of reconciled.plan.resources) {
951
+ if (resource.kind !== "rest-api" && resource.kind !== "site") continue;
952
+ const address = reconciled.env[resource.envKey];
953
+ if (address) appUrls[resource.id] = address;
988
954
  }
989
955
  if (Object.keys(secretsEnv).length > 0) logger$11.log(` Loaded ${Object.keys(secretsEnv).length} secret(s)`);
990
956
  if (Object.keys(appUrls).length > 0) {
991
957
  logger$11.log("🔒 App URLs:");
992
958
  for (const [id, address] of Object.entries(appUrls)) logger$11.log(` ${id}: ${address}`);
993
959
  }
994
- const dependencyEnv = Object.fromEntries(Object.entries(generateAllDependencyEnvVars(workspace)).filter(([key]) => secretsEnv[key] === void 0));
995
- if (Object.keys(dependencyEnv).length > 0) {
996
- logger$11.log("📡 Dependency URLs:");
997
- for (const [key, value] of Object.entries(dependencyEnv)) logger$11.log(` ${key}=${value}`);
998
- }
999
960
  let turboFilter = [];
1000
961
  if (options.app) {
1001
962
  if (!workspace.apps[options.app]) {
@@ -1038,7 +999,6 @@ async function workspaceDevCommand(workspace, options) {
1038
999
  const turboEnv = {
1039
1000
  ...process.env,
1040
1001
  ...secretsEnv,
1041
- ...dependencyEnv,
1042
1002
  NODE_ENV: "development",
1043
1003
  ...configPath ? { GKM_CONFIG_PATH: configPath } : {}
1044
1004
  };
@@ -1046,7 +1006,7 @@ async function workspaceDevCommand(workspace, options) {
1046
1006
  const held = [];
1047
1007
  for (const appName of scoped) {
1048
1008
  const port = workspace.apps[appName]?.port;
1049
- if (port && !await require_credentials.isPortAvailable(port)) held.push({
1009
+ if (port && !await require_workspace$1.isPortAvailable(port)) held.push({
1050
1010
  app: appName,
1051
1011
  port,
1052
1012
  holder: listenerOn(port)
@@ -1111,16 +1071,16 @@ async function entryDevCommand(options) {
1111
1071
  if (!entry) throw new Error("--entry requires a file path");
1112
1072
  const entryPath = (0, node_path.resolve)(process.cwd(), entry);
1113
1073
  if (!(0, node_fs.existsSync)(entryPath)) throw new Error(`Entry file not found: ${entryPath}`);
1114
- const defaultEnv = require_credentials.loadEnvFiles(".env");
1074
+ const defaultEnv = require_workspace$1.loadEnvFiles(".env");
1115
1075
  if (defaultEnv.loaded.length > 0) logger$11.log(`📦 Loaded env: ${defaultEnv.loaded.join(", ")}`);
1116
- const { credentials, resolvedPort, secretsJsonPath, appName } = await require_credentials.prepareEntryCredentials({ explicitPort: options.portExplicit ? options.port : void 0 });
1076
+ const { credentials, resolvedPort, secretsJsonPath, appName } = await require_workspace$1.prepareEntryCredentials({ explicitPort: options.portExplicit ? options.port : void 0 });
1117
1077
  if (appName) logger$11.log(`📦 App: ${appName} (port ${resolvedPort})`);
1118
1078
  logger$11.log(`🚀 Starting entry file: ${entry} on port ${resolvedPort}`);
1119
1079
  if (Object.keys(credentials).length > 1) logger$11.log(`🔐 Loaded ${Object.keys(credentials).length - 1} secret(s) + PORT`);
1120
1080
  const wrapperDir = (0, node_path.join)(process.cwd(), ".gkm");
1121
1081
  await (0, node_fs_promises.mkdir)(wrapperDir, { recursive: true });
1122
1082
  const wrapperPath = (0, node_path.join)(wrapperDir, "entry-wrapper.ts");
1123
- await require_credentials.createEntryWrapper(wrapperPath, entryPath, secretsJsonPath);
1083
+ await require_workspace$1.createEntryWrapper(wrapperPath, entryPath, secretsJsonPath);
1124
1084
  const runner = new EntryRunner(wrapperPath, entryPath, watch, resolvedPort);
1125
1085
  await runner.start();
1126
1086
  let isShuttingDown = false;
@@ -1380,10 +1340,10 @@ var DevServer = class {
1380
1340
  this.startTime = Date.now();
1381
1341
  if (this.isRunning) await this.stop();
1382
1342
  if (this.portExplicit) {
1383
- if (!await require_credentials.isPortAvailable(this.requestedPort)) throw new DevPortInUse(this.requestedPort, listenerOn(this.requestedPort));
1343
+ if (!await require_workspace$1.isPortAvailable(this.requestedPort)) throw new DevPortInUse(this.requestedPort, listenerOn(this.requestedPort));
1384
1344
  this.actualPort = this.requestedPort;
1385
1345
  } else {
1386
- this.actualPort = await require_credentials.findAvailablePort(this.requestedPort);
1346
+ this.actualPort = await require_workspace$1.findAvailablePort(this.requestedPort);
1387
1347
  if (this.actualPort !== this.requestedPort) logger$11.log(`ℹ️ Port ${this.requestedPort} was in use, using port ${this.actualPort} instead`);
1388
1348
  }
1389
1349
  const serverEntryPath = (0, node_path.join)(this.appRoot, ".gkm", this.provider, "server.ts");
@@ -1456,7 +1416,7 @@ var DevServer = class {
1456
1416
  await this.stop();
1457
1417
  let attempts = 0;
1458
1418
  while (attempts < 30) {
1459
- if (await require_credentials.isPortAvailable(portToReuse)) break;
1419
+ if (await require_workspace$1.isPortAvailable(portToReuse)) break;
1460
1420
  await new Promise((resolve) => setTimeout(resolve, 100));
1461
1421
  attempts++;
1462
1422
  }
@@ -2632,7 +2592,7 @@ async function buildCommand(options) {
2632
2592
  }
2633
2593
  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;
2634
2594
  const resolved = resolveProviders(config, options);
2635
- const cacheBackend = require_credentials.cacheBackendFor(require_credentials.providerOf(loadedConfig.workspace));
2595
+ const cacheBackend = require_workspace$1.cacheBackendFor(require_workspace$1.providerOf(loadedConfig.workspace));
2636
2596
  const productionConfigFromGkm = getProductionConfigFromGkm(config);
2637
2597
  const production = normalizeProductionConfig(options.production ?? false, productionConfigFromGkm);
2638
2598
  if (production) logger$9.log(`🏭 Building for PRODUCTION`);
@@ -3066,7 +3026,7 @@ const PROVISIONERS = {
3066
3026
  */
3067
3027
  database: async (declaration, context) => {
3068
3028
  if (declaration.kind !== "database") throw new WrongKind(declaration.kind);
3069
- const name = require_credentials.resourceName(declaration.id, declaration.kind, context.stage);
3029
+ const name = require_workspace$1.resourceName(declaration.id, declaration.kind, context.stage);
3070
3030
  const { postgres } = await context.api.findOrCreatePostgres(serviceName({
3071
3031
  stage: context.stage,
3072
3032
  app: context.project
@@ -3102,7 +3062,7 @@ const PROVISIONERS = {
3102
3062
  if (declaration.kind !== "database-schema") throw new WrongKind(declaration.kind);
3103
3063
  const parent = context.provisioned[declaration.of];
3104
3064
  if (!parent) throw new UnresolvedParent(declaration.id, declaration.of);
3105
- const runtime = require_credentials.resourceName(declaration.id, declaration.kind, context.stage);
3065
+ const runtime = require_workspace$1.resourceName(declaration.id, declaration.kind, context.stage);
3106
3066
  const owner = (0, _geekmidas_db_pg_roles.ownerRole)(runtime);
3107
3067
  const reads = readsFrom(context.manifest, declaration.id);
3108
3068
  const parentUrl = new URL(parent.provides[(0, _geekmidas_manifest.provideKey)(declaration.of, "url")] ?? "");
@@ -3204,7 +3164,7 @@ const PROVISIONERS = {
3204
3164
  stage: context.stage,
3205
3165
  app: context.project
3206
3166
  }, declaration.id);
3207
- const bucket = require_credentials.resourceName(declaration.id, declaration.kind, context.stage);
3167
+ const bucket = require_workspace$1.resourceName(declaration.id, declaration.kind, context.stage);
3208
3168
  const user = `${bucket}-root`;
3209
3169
  const password = derivedPassword(context, `objects:${declaration.id}`);
3210
3170
  const { compose } = await context.api.findOrCreateCompose(service, context.projectId, context.environmentId, minioCompose({
@@ -3572,10 +3532,6 @@ var UnprovisionableBucket = class extends Error {
3572
3532
  */
3573
3533
  /**
3574
3534
  * Provision everything the workspace declares, and return what it resolved.
3575
- *
3576
- * Nothing happens for a project that has not adopted the model: `usesConstructs`
3577
- * is the same hard switch reconcile reads, so an existing deploy is untouched
3578
- * until it declares something.
3579
3535
  */
3580
3536
  async function provisionDeclared(options) {
3581
3537
  const { workspace } = options;
@@ -3585,9 +3541,8 @@ async function provisionDeclared(options) {
3585
3541
  provisioned: {},
3586
3542
  clusters: {}
3587
3543
  };
3588
- if (!require_credentials.usesConstructs(workspace)) return empty;
3589
3544
  const manifest = options.manifest ?? await require_discover.discover({
3590
- patterns: require_credentials.constructGlobs(workspace),
3545
+ patterns: require_workspace$1.constructGlobs(workspace),
3591
3546
  cwd: workspace.root
3592
3547
  });
3593
3548
  if (Object.keys(manifest).length === 0) return empty;
@@ -3599,9 +3554,9 @@ async function provisionDeclared(options) {
3599
3554
  environmentId: options.environmentId,
3600
3555
  stage: options.stage,
3601
3556
  project: workspace.name,
3602
- cache: require_credentials.cacheBackendFor(require_credentials.providerOf(workspace)),
3603
- events: require_credentials.eventsBackendFor(require_credentials.providerOf(workspace)),
3604
- storage: require_credentials.storageBackendFor(require_credentials.providerOf(workspace)),
3557
+ cache: require_workspace$1.cacheBackendFor(require_workspace$1.providerOf(workspace)),
3558
+ events: require_workspace$1.eventsBackendFor(require_workspace$1.providerOf(workspace)),
3559
+ storage: require_workspace$1.storageBackendFor(require_workspace$1.providerOf(workspace)),
3605
3560
  addresses: surfaceAddresses(workspace, manifest, options.appUrls),
3606
3561
  ...options.secrets ? { secrets: options.secrets } : {},
3607
3562
  deferred: [],
@@ -3638,7 +3593,7 @@ async function provisionDeclared(options) {
3638
3593
  * run again.
3639
3594
  */
3640
3595
  async function applyDeclared(client, statements) {
3641
- return (await require_credentials.applyPostgres(client, statements)).filter((entry) => entry.created).length;
3596
+ return (await require_workspace$1.applyPostgres(client, statements)).filter((entry) => entry.created).length;
3642
3597
  }
3643
3598
  /**
3644
3599
  * The provisioning order, with queues and topics moved to the end.
@@ -5328,7 +5283,7 @@ async function workspaceDockerCommand(workspace) {
5328
5283
  await (0, node_fs_promises.writeFile)(dockerignorePath, dockerignore);
5329
5284
  logger$7.log(`\n Generated: .dockerignore (workspace root)`);
5330
5285
  const composePath = await writeConstructsCompose(workspace);
5331
- logger$7.log(`\n✅ Generated ${results.length} Dockerfile(s) + ${require_credentials.COMPOSE_PATH}`);
5286
+ logger$7.log(`\n✅ Generated ${results.length} Dockerfile(s) + ${require_workspace$1.COMPOSE_PATH}`);
5332
5287
  logger$7.log("\n📋 Build commands:");
5333
5288
  for (const result of results) {
5334
5289
  const icon = result.type === "backend" ? "⚙️" : result.type === "mobile" ? "📱" : "🌐";
@@ -5349,18 +5304,18 @@ async function workspaceDockerCommand(workspace) {
5349
5304
  * describes and what `gkm dev` runs cannot disagree. Nothing is started.
5350
5305
  */
5351
5306
  async function writeConstructsCompose(workspace) {
5352
- await require_credentials.reconcileWorkspace(workspace, {
5307
+ await require_workspace$1.reconcileWorkspace(workspace, {
5353
5308
  stage: workspace.stages.local,
5354
5309
  start: false
5355
5310
  });
5356
- logger$7.log(` Generated: ${require_credentials.COMPOSE_PATH} (project root)`);
5357
- return (0, node_path.join)(workspace.root, require_credentials.COMPOSE_PATH);
5311
+ logger$7.log(` Generated: ${require_workspace$1.COMPOSE_PATH} (project root)`);
5312
+ return (0, node_path.join)(workspace.root, require_workspace$1.COMPOSE_PATH);
5358
5313
  }
5359
5314
  function printRunInstructions(workspace) {
5360
5315
  const project = (0, node_fs.existsSync)((0, node_path.join)(workspace.root, "docker-compose.yml")) ? " -f docker-compose.yml" : "";
5361
5316
  logger$7.log("\n📋 Run everything (the apps sit behind the \"apps\" profile):");
5362
5317
  logger$7.log(" gkm setup # starts the containers and creates what they hold");
5363
- logger$7.log(` docker compose -f ${require_credentials.COMPOSE_PATH}${project} --profile apps up --build`);
5318
+ logger$7.log(` docker compose -f ${require_workspace$1.COMPOSE_PATH}${project} --profile apps up --build`);
5364
5319
  }
5365
5320
  //#endregion
5366
5321
  //#region src/deploy/docker.ts
@@ -7043,7 +6998,7 @@ function requiredOf(requirements) {
7043
6998
  async function workspaceDeployCommand(configured, options) {
7044
6999
  const { provider, stage, tag, apps: selectedApps } = options;
7045
7000
  const manifest = await require_discover.discover({
7046
- patterns: require_credentials.constructGlobs(configured),
7001
+ patterns: require_workspace$1.constructGlobs(configured),
7047
7002
  cwd: configured.root
7048
7003
  });
7049
7004
  const units = deployUnits(manifest, configured);
@@ -8597,26 +8552,26 @@ function loadPackageJson() {
8597
8552
  * Run: pnpm --filter @geekmidas/cli sync-versions
8598
8553
  */
8599
8554
  const GEEKMIDAS_VERSIONS = {
8600
- "@geekmidas/audit": "~10.0.0-alpha.26",
8601
- "@geekmidas/auth": "~10.0.0-alpha.26",
8602
- "@geekmidas/cache": "~10.0.0-alpha.26",
8603
- "@geekmidas/client": "~10.0.0-alpha.26",
8604
- "@geekmidas/cloud": "~10.0.0-alpha.26",
8605
- "@geekmidas/constructs": "~10.0.0-alpha.26",
8606
- "@geekmidas/db": "~10.0.0-alpha.26",
8607
- "@geekmidas/emailkit": "~10.0.0-alpha.26",
8608
- "@geekmidas/envkit": "~10.0.0-alpha.26",
8609
- "@geekmidas/errors": "~10.0.0-alpha.26",
8610
- "@geekmidas/events": "~10.0.0-alpha.26",
8611
- "@geekmidas/logger": "~10.0.0-alpha.26",
8612
- "@geekmidas/manifest": "~10.0.0-alpha.26",
8613
- "@geekmidas/rate-limit": "~10.0.0-alpha.26",
8614
- "@geekmidas/schema": "~10.0.0-alpha.26",
8615
- "@geekmidas/services": "~10.0.0-alpha.26",
8616
- "@geekmidas/storage": "~10.0.0-alpha.26",
8617
- "@geekmidas/studio": "~10.0.0-alpha.26",
8618
- "@geekmidas/telescope": "~10.0.0-alpha.26",
8619
- "@geekmidas/testkit": "~10.0.0-alpha.26",
8555
+ "@geekmidas/audit": "~10.0.0-alpha.27",
8556
+ "@geekmidas/auth": "~10.0.0-alpha.27",
8557
+ "@geekmidas/cache": "~10.0.0-alpha.27",
8558
+ "@geekmidas/client": "~10.0.0-alpha.27",
8559
+ "@geekmidas/cloud": "~10.0.0-alpha.27",
8560
+ "@geekmidas/constructs": "~10.0.0-alpha.27",
8561
+ "@geekmidas/db": "~10.0.0-alpha.27",
8562
+ "@geekmidas/emailkit": "~10.0.0-alpha.27",
8563
+ "@geekmidas/envkit": "~10.0.0-alpha.27",
8564
+ "@geekmidas/errors": "~10.0.0-alpha.27",
8565
+ "@geekmidas/events": "~10.0.0-alpha.27",
8566
+ "@geekmidas/logger": "~10.0.0-alpha.27",
8567
+ "@geekmidas/manifest": "~10.0.0-alpha.27",
8568
+ "@geekmidas/rate-limit": "~10.0.0-alpha.27",
8569
+ "@geekmidas/schema": "~10.0.0-alpha.27",
8570
+ "@geekmidas/services": "~10.0.0-alpha.27",
8571
+ "@geekmidas/storage": "~10.0.0-alpha.27",
8572
+ "@geekmidas/studio": "~10.0.0-alpha.27",
8573
+ "@geekmidas/telescope": "~10.0.0-alpha.27",
8574
+ "@geekmidas/testkit": "~10.0.0-alpha.27",
8620
8575
  "@geekmidas/cli": `~${loadPackageJson().version}`
8621
8576
  };
8622
8577
  //#endregion
@@ -14531,7 +14486,7 @@ async function initCommand(projectName, options = {}) {
14531
14486
  }
14532
14487
  console.log("🔐 Initializing encrypted secrets...\n");
14533
14488
  const local = templateOptions.stages.local;
14534
- const devSecrets = require_generator.createStageSecrets(local, [], { projectName: name });
14489
+ const devSecrets = require_reconcile.createStageSecrets(local, [], { projectName: name });
14535
14490
  const customSecrets = {
14536
14491
  PORT: "3000",
14537
14492
  LOG_LEVEL: "debug",
@@ -14716,7 +14671,7 @@ async function secretsInitCommand(options) {
14716
14671
  logger$3.log(" Detected workspace mode — generating per-app secrets");
14717
14672
  }
14718
14673
  } catch {}
14719
- const secrets = require_generator.createStageSecrets(stage, [], { projectName });
14674
+ const secrets = require_reconcile.createStageSecrets(stage, [], { projectName });
14720
14675
  if (workspaceSecrets) secrets.custom = workspaceSecrets;
14721
14676
  await require_storage.writeStageSecrets(secrets);
14722
14677
  logger$3.log(`\n✓ Secrets initialized for stage "${stage}"`);
@@ -14814,13 +14769,13 @@ async function secretsRotateCommand(options) {
14814
14769
  logger$3.error(`Service "${service}" not configured in stage "${stage}"`);
14815
14770
  process.exit(1);
14816
14771
  }
14817
- const updated = require_generator.rotateServicePassword(secrets, service);
14772
+ const updated = require_reconcile.rotateServicePassword(secrets, service);
14818
14773
  await require_storage.writeStageSecrets(updated);
14819
14774
  logger$3.log(`\n✓ Password rotated for ${service} in stage "${stage}"`);
14820
14775
  } else {
14821
14776
  let updated = secrets;
14822
14777
  const services = Object.keys(secrets.services);
14823
- for (const svc of services) updated = require_generator.rotateServicePassword(updated, svc);
14778
+ for (const svc of services) updated = require_reconcile.rotateServicePassword(updated, svc);
14824
14779
  await require_storage.writeStageSecrets(updated);
14825
14780
  logger$3.log(`\n✓ Passwords rotated for all services in stage "${stage}": ${services.join(", ")}`);
14826
14781
  }
@@ -14944,7 +14899,7 @@ function installation(platform, certificate) {
14944
14899
  */
14945
14900
  async function trustCommand(options = {}) {
14946
14901
  const { workspace } = await require_config.loadWorkspaceConfig();
14947
- const certificate = (0, node_path.join)(workspace.root, require_credentials.LOCAL_CA_PATH);
14902
+ const certificate = (0, node_path.join)(workspace.root, require_workspace$1.LOCAL_CA_PATH);
14948
14903
  if (!(0, node_fs.existsSync)(certificate)) throw new NoLocalAuthority(certificate);
14949
14904
  const { describe, steps } = installation(process.platform, certificate);
14950
14905
  logger$2.log(`\n🔐 Trusting the local authority in ${describe}`);
@@ -15087,7 +15042,7 @@ async function setupCommand(options = {}) {
15087
15042
  logger$1.error("❌ Failed to resolve secrets. Exiting.");
15088
15043
  process.exit(1);
15089
15044
  }
15090
- const containers = await require_credentials.derivedContainers(workspace, stage);
15045
+ const containers = await require_workspace$1.derivedContainers(workspace, stage);
15091
15046
  if (isMultiApp && containers.includes("postgres")) {
15092
15047
  await require_reconcile.writeDockerEnvFromSecrets(secrets, workspace.root);
15093
15048
  logger$1.log("📄 Generated docker/.env with database passwords");
@@ -15106,7 +15061,7 @@ async function setupCommand(options = {}) {
15106
15061
  * free and quiet.
15107
15062
  */
15108
15063
  async function reconcileLocal(workspace, stage, options) {
15109
- const result = await require_credentials.reconcileWorkspace(workspace, { stage });
15064
+ const result = await require_workspace$1.reconcileWorkspace(workspace, { stage });
15110
15065
  if (result.plan.containers.length === 0) {
15111
15066
  logger$1.log("🐳 No containers declared");
15112
15067
  return;
@@ -15138,7 +15093,7 @@ async function resolveSecrets(stage, workspace, options) {
15138
15093
  logger$1.log("🔐 Using existing local secrets");
15139
15094
  const secrets = await require_storage.readStageSecrets(stage, workspace.root);
15140
15095
  if (secrets) {
15141
- const reconciled = reconcileSecrets(secrets, workspace, await require_credentials.derivedContainers(workspace, stage));
15096
+ const reconciled = reconcileSecrets(secrets, workspace, await require_workspace$1.derivedContainers(workspace, stage));
15142
15097
  if (reconciled) await require_storage.writeStageSecrets(reconciled, workspace.root);
15143
15098
  return reconciled ?? secrets;
15144
15099
  }
@@ -15186,7 +15141,7 @@ function reconcileSecrets(secrets, workspace, containers = []) {
15186
15141
  let changed = false;
15187
15142
  let result = { ...secrets };
15188
15143
  for (const name of credentialedServices(containers)) if (!result.services[name]) {
15189
- const creds = require_generator.generateServiceCredentials(name);
15144
+ const creds = require_reconcile.generateServiceCredentials(name);
15190
15145
  if (name === "minio") {
15191
15146
  creds.bucket = workspace.name;
15192
15147
  creds.username = workspace.name;
@@ -15198,7 +15153,7 @@ function reconcileSecrets(secrets, workspace, containers = []) {
15198
15153
  [name]: creds
15199
15154
  }
15200
15155
  };
15201
- result.urls = require_generator.generateConnectionUrls(result.services, result.eventsBackend);
15156
+ result.urls = require_reconcile.generateConnectionUrls(result.services, result.eventsBackend);
15202
15157
  logger$1.log(` 🔄 Adding missing service credentials: ${name}`);
15203
15158
  changed = true;
15204
15159
  }
@@ -15211,12 +15166,12 @@ function reconcileSecrets(secrets, workspace, containers = []) {
15211
15166
  host: result.services.postgres.host,
15212
15167
  port: result.services.postgres.port,
15213
15168
  username: "pgboss",
15214
- password: require_generator.generateSecurePassword(),
15169
+ password: require_reconcile.generateSecurePassword(),
15215
15170
  database: result.services.postgres.database ?? "app"
15216
15171
  }
15217
15172
  }
15218
15173
  };
15219
- result.urls = require_generator.generateConnectionUrls(result.services, result.eventsBackend);
15174
+ result.urls = require_reconcile.generateConnectionUrls(result.services, result.eventsBackend);
15220
15175
  logger$1.log(" 🔄 Adding missing service credentials: pgboss");
15221
15176
  changed = true;
15222
15177
  }
@@ -15251,7 +15206,7 @@ function reconcileSecrets(secrets, workspace, containers = []) {
15251
15206
  */
15252
15207
  function createFreshWorkspaceSecrets(stage, workspace, containers = []) {
15253
15208
  const serviceNames = credentialedServices(containers);
15254
- const secrets = require_generator.createStageSecrets(stage, serviceNames, { projectName: workspace.name });
15209
+ const secrets = require_reconcile.createStageSecrets(stage, serviceNames, { projectName: workspace.name });
15255
15210
  if (Object.keys(workspace.apps).length > 1) secrets.custom = require_reconcile.generateFullstackCustomSecrets(workspace, containers);
15256
15211
  else secrets.custom = {
15257
15212
  PORT: "3000",
@@ -15273,7 +15228,7 @@ function createFreshWorkspaceSecrets(stage, workspace, containers = []) {
15273
15228
  async function ensureStageSecrets(stage, cwd = process.cwd()) {
15274
15229
  const { workspace } = await require_config.loadWorkspaceConfig(cwd);
15275
15230
  if (require_storage.secretsExist(stage, workspace.root)) return false;
15276
- const secrets = createFreshWorkspaceSecrets(stage, workspace, await require_credentials.derivedContainers(workspace, stage));
15231
+ const secrets = createFreshWorkspaceSecrets(stage, workspace, await require_workspace$1.derivedContainers(workspace, stage));
15277
15232
  await require_storage.writeStageSecrets(secrets, workspace.root);
15278
15233
  return true;
15279
15234
  }
@@ -15281,7 +15236,7 @@ async function ensureStageSecrets(stage, cwd = process.cwd()) {
15281
15236
  * Generate fresh secrets for the workspace.
15282
15237
  */
15283
15238
  async function generateFreshSecrets(stage, workspace, options) {
15284
- const secrets = createFreshWorkspaceSecrets(stage, workspace, await require_credentials.derivedContainers(workspace, stage));
15239
+ const secrets = createFreshWorkspaceSecrets(stage, workspace, await require_workspace$1.derivedContainers(workspace, stage));
15285
15240
  await require_storage.writeStageSecrets(secrets, workspace.root);
15286
15241
  logger$1.log(` Secrets written to .gkm/secrets/${stage}.json`);
15287
15242
  if (require_transfer.isRemoteStore(workspace, stage) && !options.yes) {
@@ -15556,13 +15511,12 @@ async function testCommand(options = {}) {
15556
15511
  const { ensureStageSecrets } = await Promise.resolve().then(() => setup_exports);
15557
15512
  if (await ensureStageSecrets(stage, cwd)) console.log(` 🔐 Generated fresh ${stage} secrets (auto-setup)`);
15558
15513
  }
15559
- const defaultEnv = require_credentials.loadEnvFiles(".env");
15514
+ const defaultEnv = require_workspace$1.loadEnvFiles(".env");
15560
15515
  if (defaultEnv.loaded.length > 0) console.log(` 📦 Loaded env: ${defaultEnv.loaded.join(", ")}`);
15561
- const result = await require_credentials.prepareEntryCredentials({
15516
+ const result = await require_workspace$1.prepareEntryCredentials({
15562
15517
  stage,
15563
15518
  startDocker: !options.prepare,
15564
15519
  secretsFileName: "test-secrets.json",
15565
- resolveDockerPorts: "full",
15566
15520
  reconcileStage: "test"
15567
15521
  });
15568
15522
  let finalCredentials = { ...result.credentials };
@@ -15576,18 +15530,17 @@ async function testCommand(options = {}) {
15576
15530
  console.log(` 🔍 Sniffed ${sniffed.requiredEnvVars.length} required env var(s)` + (result.declaredKeys.length > 0 ? `, kept ${result.declaredKeys.length} declared` : ""));
15577
15531
  }
15578
15532
  }
15579
- finalCredentials = rewriteDatabaseUrlForTests(finalCredentials);
15580
15533
  console.log("");
15581
15534
  await (0, node_fs_promises.writeFile)(result.secretsJsonPath, JSON.stringify(finalCredentials, null, 2));
15582
15535
  const gkmDir = (0, node_path.join)(cwd, ".gkm");
15583
15536
  const preloadPath = (0, node_path.join)(gkmDir, "test-credentials-preload.ts");
15584
- await require_credentials.createCredentialsPreload(preloadPath, result.secretsJsonPath);
15537
+ await require_workspace$1.createCredentialsPreload(preloadPath, result.secretsJsonPath);
15585
15538
  const workspace = await require_config.loadWorkspaceConfig(cwd).then((loaded) => loaded.workspace).catch(() => void 0);
15586
- const manifestPath = workspace && require_credentials.usesConstructs(workspace) ? await writeTestHarness({
15539
+ const manifestPath = workspace ? await writeTestHarness({
15587
15540
  root: workspace.root,
15588
15541
  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))],
15589
- patterns: require_credentials.constructGlobs(workspace),
15590
- cacheBackend: require_credentials.backendsOf(workspace).cache,
15542
+ patterns: require_workspace$1.constructGlobs(workspace),
15543
+ cacheBackend: require_workspace$1.backendsOf(workspace).cache,
15591
15544
  stage: require_workspace.TEST_STAGE,
15592
15545
  env: finalCredentials
15593
15546
  }) : void 0;
@@ -15627,29 +15580,6 @@ async function testCommand(options = {}) {
15627
15580
  });
15628
15581
  });
15629
15582
  }
15630
- const TEST_DB_SUFFIX = "_test";
15631
- /**
15632
- * Rewrite DATABASE_URL to point to a separate test database.
15633
- * Appends `_test` to the database name (e.g., `app` -> `app_test`).
15634
- * @internal Exported for testing
15635
- */
15636
- function rewriteDatabaseUrlForTests(env) {
15637
- const result = { ...env };
15638
- for (const key of Object.keys(result)) {
15639
- if (!key.includes("DATABASE_URL")) continue;
15640
- const value = result[key];
15641
- try {
15642
- const url = new URL(value);
15643
- const dbName = url.pathname.slice(1);
15644
- if (dbName && !dbName.endsWith(TEST_DB_SUFFIX)) {
15645
- url.pathname = `/${dbName}${TEST_DB_SUFFIX}`;
15646
- result[key] = url.toString();
15647
- console.log(` 🧪 ${key}: using test database "${dbName}${TEST_DB_SUFFIX}"`);
15648
- }
15649
- } catch {}
15650
- }
15651
- return result;
15652
- }
15653
15583
  /** `gkm test` outside a project that declares stages, with none named. */
15654
15584
  var NoStageToTest = class extends Error {
15655
15585
  constructor() {
@@ -16190,7 +16120,7 @@ program.command("secrets:push").description("Send a deployed stage's secrets to
16190
16120
  const globalOptions = program.opts();
16191
16121
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16192
16122
  const { loadWorkspaceConfig } = await Promise.resolve().then(() => require("./config.cjs"));
16193
- const { pushStageSecrets } = await Promise.resolve().then(() => require("./transfer-D2qLFXsw.cjs")).then((n) => n.transfer_exports);
16123
+ const { pushStageSecrets } = await Promise.resolve().then(() => require("./transfer-BYIn7z8m.cjs")).then((n) => n.transfer_exports);
16194
16124
  const { workspace } = await loadWorkspaceConfig();
16195
16125
  const { addedKeys } = await pushStageSecrets(workspace, options.stage, { profile: options.profile });
16196
16126
  for (const key of addedKeys) console.log(` + ${key} (reconciled)`);
@@ -16205,7 +16135,7 @@ program.command("secrets:pull").description("Bring a deployed stage's secrets fr
16205
16135
  const globalOptions = program.opts();
16206
16136
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16207
16137
  const { loadWorkspaceConfig } = await Promise.resolve().then(() => require("./config.cjs"));
16208
- const { pullStageSecrets } = await Promise.resolve().then(() => require("./transfer-D2qLFXsw.cjs")).then((n) => n.transfer_exports);
16138
+ const { pullStageSecrets } = await Promise.resolve().then(() => require("./transfer-BYIn7z8m.cjs")).then((n) => n.transfer_exports);
16209
16139
  const { workspace } = await loadWorkspaceConfig();
16210
16140
  const { addedKeys } = await pullStageSecrets(workspace, options.stage, { profile: options.profile });
16211
16141
  for (const key of addedKeys) console.log(` + ${key} (reconciled)`);
@@ -16220,7 +16150,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
16220
16150
  const globalOptions = program.opts();
16221
16151
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16222
16152
  const { loadWorkspaceConfig } = await Promise.resolve().then(() => require("./config.cjs"));
16223
- const { reconcileMissingSecrets } = await Promise.resolve().then(() => require("./reconcile-hx_vBvux.cjs")).then((n) => n.reconcile_exports);
16153
+ const { reconcileMissingSecrets } = await Promise.resolve().then(() => require("./reconcile-szmJw_Sb.cjs")).then((n) => n.reconcile_exports);
16224
16154
  const { readStageSecrets, writeStageSecrets } = await Promise.resolve().then(() => require("./storage-DgypfSD6.cjs")).then((n) => n.storage_exports);
16225
16155
  const { workspace } = await loadWorkspaceConfig();
16226
16156
  const stage = options.stage ?? workspace.stages.local;
@@ -16229,7 +16159,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
16229
16159
  console.error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
16230
16160
  process.exit(1);
16231
16161
  }
16232
- const { derivedContainers } = await Promise.resolve().then(() => require("./credentials-fQSAe4Nb.cjs")).then((n) => n.workspace_exports);
16162
+ const { derivedContainers } = await Promise.resolve().then(() => require("./workspace-DgeVgxmm.cjs")).then((n) => n.workspace_exports);
16233
16163
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers(workspace, stage));
16234
16164
  if (!result) {
16235
16165
  console.log(`\n✓ Secrets for stage "${stage}" are up-to-date`);
@@ -16288,7 +16218,7 @@ program.command("deploy:github").description("Let GitHub Actions deploy a stage:
16288
16218
  try {
16289
16219
  const globalOptions = program.opts();
16290
16220
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16291
- const { deployGithubCommand } = await Promise.resolve().then(() => require("./github-D58lt7RR.cjs"));
16221
+ const { deployGithubCommand } = await Promise.resolve().then(() => require("./github-CQflOKKV.cjs"));
16292
16222
  await deployGithubCommand(options);
16293
16223
  } catch (error) {
16294
16224
  console.error(formatError(error));