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

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 (129) hide show
  1. package/dist/{add-D2XKszYP.mjs → add-CIxT-Iq6.mjs} +2 -2
  2. package/dist/{add-D2XKszYP.mjs.map → add-CIxT-Iq6.mjs.map} +1 -1
  3. package/dist/{add-BvOICikp.cjs → add-DJ0VE-y-.cjs} +7 -7
  4. package/dist/{add-BvOICikp.cjs.map → add-DJ0VE-y-.cjs.map} +1 -1
  5. package/dist/{aws-Bja4zGSs.mjs → aws-B-6uEhgP.mjs} +8 -2
  6. package/dist/{aws-Bja4zGSs.mjs.map → aws-B-6uEhgP.mjs.map} +1 -1
  7. package/dist/{aws-CQAuluiu.cjs → aws-BTawF0F-.cjs} +19 -2
  8. package/dist/{aws-CQAuluiu.cjs.map → aws-BTawF0F-.cjs.map} +1 -1
  9. package/dist/{bundler-C6T-1OLT.cjs → bundler-BlbSLFLn.cjs} +3 -3
  10. package/dist/{bundler-C6T-1OLT.cjs.map → bundler-BlbSLFLn.cjs.map} +1 -1
  11. package/dist/{bundler-CtHzKqnZ.mjs → bundler-D4pl87A5.mjs} +3 -3
  12. package/dist/{bundler-CtHzKqnZ.mjs.map → bundler-D4pl87A5.mjs.map} +1 -1
  13. package/dist/{cli-BgPyhx1i.mjs → cli-7aLfgIGt.mjs} +3 -3
  14. package/dist/{cli-BgPyhx1i.mjs.map → cli-7aLfgIGt.mjs.map} +1 -1
  15. package/dist/{cli-K6Vj_pPW.cjs → cli-BkNZBe_-.cjs} +4 -4
  16. package/dist/{cli-K6Vj_pPW.cjs.map → cli-BkNZBe_-.cjs.map} +1 -1
  17. package/dist/{compose-B7MC19eC.cjs → compose-Bn4OJONR.cjs} +88 -60
  18. package/dist/{compose-B7MC19eC.cjs.map → compose-Bn4OJONR.cjs.map} +1 -1
  19. package/dist/{compose-DByK353T.mjs → compose-n7K8H5j8.mjs} +36 -8
  20. package/dist/{compose-DByK353T.mjs.map → compose-n7K8H5j8.mjs.map} +1 -1
  21. package/dist/{config-Bql0AmJt.d.mts → config-L_6NivCp.d.mts} +3 -3
  22. package/dist/{config-Bql0AmJt.d.mts.map → config-L_6NivCp.d.mts.map} +1 -1
  23. package/dist/{config-DlNpHK8p.d.cts → config-Mr4rcXFC.d.cts} +3 -3
  24. package/dist/{config-DlNpHK8p.d.cts.map → config-Mr4rcXFC.d.cts.map} +1 -1
  25. package/dist/config.d.cts +3 -3
  26. package/dist/config.d.mts +3 -3
  27. package/dist/{databases-C2p5LGAp.cjs → databases-BY-pEImp.cjs} +185 -7
  28. package/dist/databases-BY-pEImp.cjs.map +1 -0
  29. package/dist/{databases-hUHTuwhx.mjs → databases-CzszQV0N.mjs} +153 -5
  30. package/dist/databases-CzszQV0N.mjs.map +1 -0
  31. package/dist/deploy/public.cjs +12 -11
  32. package/dist/deploy/public.d.cts +19 -3
  33. package/dist/deploy/public.d.cts.map +1 -1
  34. package/dist/deploy/public.d.mts +19 -3
  35. package/dist/deploy/public.d.mts.map +1 -1
  36. package/dist/deploy/public.mjs +6 -6
  37. package/dist/{deploy-BerP7ppB.mjs → deploy-DK4Y6ev4.mjs} +3 -3
  38. package/dist/{deploy-BerP7ppB.mjs.map → deploy-DK4Y6ev4.mjs.map} +1 -1
  39. package/dist/{deploy-Dt42xiQA.cjs → deploy-Ppnh8MHS.cjs} +9 -9
  40. package/dist/{deploy-Dt42xiQA.cjs.map → deploy-Ppnh8MHS.cjs.map} +1 -1
  41. package/dist/{dokploy-ssZQRK2C.mjs → dokploy-Bjq05wkw.mjs} +2 -2
  42. package/dist/{dokploy-ssZQRK2C.mjs.map → dokploy-Bjq05wkw.mjs.map} +1 -1
  43. package/dist/{dokploy-NG9UrVrP.cjs → dokploy-CJvdoNc3.cjs} +2 -2
  44. package/dist/{dokploy-NG9UrVrP.cjs.map → dokploy-CJvdoNc3.cjs.map} +1 -1
  45. package/dist/{encryption-De6MN0O5.mjs → encryption-BrsOJFFz.mjs} +2 -2
  46. package/dist/{encryption-De6MN0O5.mjs.map → encryption-BrsOJFFz.mjs.map} +1 -1
  47. package/dist/{encryption-CbMI24fI.cjs → encryption-CAyR6D7B.cjs} +5 -5
  48. package/dist/{encryption-CbMI24fI.cjs.map → encryption-CAyR6D7B.cjs.map} +1 -1
  49. package/dist/{engine-CoCsNoW_.cjs → engine-DzBZR5D0.cjs} +118 -82
  50. package/dist/engine-DzBZR5D0.cjs.map +1 -0
  51. package/dist/{engine-DOjGIgl4.mjs → engine-ba9CvjTo.mjs} +53 -17
  52. package/dist/engine-ba9CvjTo.mjs.map +1 -0
  53. package/dist/github-BLjU59Ye.cjs +669 -0
  54. package/dist/github-BLjU59Ye.cjs.map +1 -0
  55. package/dist/github-CVdbVlT5.mjs +669 -0
  56. package/dist/github-CVdbVlT5.mjs.map +1 -0
  57. package/dist/{index-BXO0vlme.d.mts → index-C0UmP_lg.d.mts} +2 -2
  58. package/dist/{index-BXO0vlme.d.mts.map → index-C0UmP_lg.d.mts.map} +1 -1
  59. package/dist/{index-Rs0Fua-q.d.cts → index-DTEPwLml.d.cts} +2 -2
  60. package/dist/{index-Rs0Fua-q.d.cts.map → index-DTEPwLml.d.cts.map} +1 -1
  61. package/dist/index.cjs +114 -114
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.mjs +41 -41
  64. package/dist/index.mjs.map +1 -1
  65. package/dist/{migrate-Cgoy58Sh.cjs → migrate-DkB833Jj.cjs} +8 -9
  66. package/dist/{migrate-Cgoy58Sh.cjs.map → migrate-DkB833Jj.cjs.map} +1 -1
  67. package/dist/{migrate-CNKaQl3K.mjs → migrate-DlBgATa-.mjs} +3 -4
  68. package/dist/{migrate-CNKaQl3K.mjs.map → migrate-DlBgATa-.mjs.map} +1 -1
  69. package/dist/{migrate-B4GBvCNY.cjs → migrate-iEdyEx4S.cjs} +4 -4
  70. package/dist/{migrate-B4GBvCNY.cjs.map → migrate-iEdyEx4S.cjs.map} +1 -1
  71. package/dist/{migrate-BQ4wVKq_.mjs → migrate-pfu4aYzX.mjs} +2 -2
  72. package/dist/{migrate-BQ4wVKq_.mjs.map → migrate-pfu4aYzX.mjs.map} +1 -1
  73. package/dist/openapi.d.cts +1 -1
  74. package/dist/openapi.d.mts +1 -1
  75. package/dist/reconcile/public.d.cts +1 -1
  76. package/dist/reconcile/public.d.mts +1 -1
  77. package/dist/{resolve-CEaqRBzY.cjs → resolve-4_5N67Fk.cjs} +3 -3
  78. package/dist/{resolve-CEaqRBzY.cjs.map → resolve-4_5N67Fk.cjs.map} +1 -1
  79. package/dist/{resolve-mvaystiE.mjs → resolve-CQPn66jr.mjs} +3 -3
  80. package/dist/{resolve-mvaystiE.mjs.map → resolve-CQPn66jr.mjs.map} +1 -1
  81. package/dist/{rollback-S2C-Y9pB.mjs → rollback-C0cbdsM-.mjs} +3 -3
  82. package/dist/{rollback-S2C-Y9pB.mjs.map → rollback-C0cbdsM-.mjs.map} +1 -1
  83. package/dist/{rollback-F3P-rA-r.cjs → rollback-CgYUPLbq.cjs} +5 -5
  84. package/dist/{rollback-F3P-rA-r.cjs.map → rollback-CgYUPLbq.cjs.map} +1 -1
  85. package/dist/{runtime-D9AxGzrw.d.cts → runtime-D6A-C6zh.d.cts} +2 -2
  86. package/dist/{runtime-D9AxGzrw.d.cts.map → runtime-D6A-C6zh.d.cts.map} +1 -1
  87. package/dist/{runtime-Dflki3Vs.d.mts → runtime-ekxfPNM-.d.mts} +2 -2
  88. package/dist/{runtime-Dflki3Vs.d.mts.map → runtime-ekxfPNM-.d.mts.map} +1 -1
  89. package/dist/sandbox/migrate-worker.cjs +22 -8
  90. package/dist/sandbox/migrate-worker.cjs.map +1 -1
  91. package/dist/sandbox/migrate-worker.mjs +22 -8
  92. package/dist/sandbox/migrate-worker.mjs.map +1 -1
  93. package/dist/{secretsManager-Ti0oZwsS.mjs → secretsManager-Chs9VV2r.mjs} +8 -2
  94. package/dist/{secretsManager-Ti0oZwsS.mjs.map → secretsManager-Chs9VV2r.mjs.map} +1 -1
  95. package/dist/{secretsManager-DUXW3fQt.cjs → secretsManager-DcMlHnRC.cjs} +19 -2
  96. package/dist/{secretsManager-DUXW3fQt.cjs.map → secretsManager-DcMlHnRC.cjs.map} +1 -1
  97. package/dist/{stale-C5FqIVc8.mjs → seeds-BdkFpW0P.mjs} +64 -6
  98. package/dist/seeds-BdkFpW0P.mjs.map +1 -0
  99. package/dist/{stale-BsiPJI7Y.cjs → seeds-ZljwYV_p.cjs} +81 -5
  100. package/dist/seeds-ZljwYV_p.cjs.map +1 -0
  101. package/dist/sniffer-BjG-1mlD.cjs.map +1 -1
  102. package/dist/sniffer-ByWtH28i.mjs.map +1 -1
  103. package/dist/target/public.cjs +1 -1
  104. package/dist/target/public.d.cts +2 -2
  105. package/dist/target/public.d.mts +2 -2
  106. package/dist/target/public.mjs +1 -1
  107. package/dist/{types-DKxkXsKC.d.mts → types-BzCavjGt.d.mts} +29 -2
  108. package/dist/types-BzCavjGt.d.mts.map +1 -0
  109. package/dist/{types-ByY0zi3n.d.cts → types-DZtj9jeI.d.cts} +29 -2
  110. package/dist/types-DZtj9jeI.d.cts.map +1 -0
  111. package/dist/workspace/index.d.cts +2 -2
  112. package/dist/workspace/index.d.mts +2 -2
  113. package/package.json +15 -15
  114. package/dist/databases-C2p5LGAp.cjs.map +0 -1
  115. package/dist/databases-hUHTuwhx.mjs.map +0 -1
  116. package/dist/engine-CoCsNoW_.cjs.map +0 -1
  117. package/dist/engine-DOjGIgl4.mjs.map +0 -1
  118. package/dist/github-CwX9z89E.mjs +0 -213
  119. package/dist/github-CwX9z89E.mjs.map +0 -1
  120. package/dist/github-D9vGqdLk.cjs +0 -213
  121. package/dist/github-D9vGqdLk.cjs.map +0 -1
  122. package/dist/provider-B3Sv_a74.cjs +0 -173
  123. package/dist/provider-B3Sv_a74.cjs.map +0 -1
  124. package/dist/provider-D7rQzzzf.mjs +0 -138
  125. package/dist/provider-D7rQzzzf.mjs.map +0 -1
  126. package/dist/stale-BsiPJI7Y.cjs.map +0 -1
  127. package/dist/stale-C5FqIVc8.mjs.map +0 -1
  128. package/dist/types-ByY0zi3n.d.cts.map +0 -1
  129. package/dist/types-DKxkXsKC.d.mts.map +0 -1
@@ -5,9 +5,9 @@ const require_discover = require("./discover-D1It5r_h.cjs");
5
5
  const require_sandbox = require("./sandbox-CL--ZDui.cjs");
6
6
  const require_derive = require("./derive-DAbo49sm.cjs");
7
7
  const require_workspace = require("./workspace-Bp8FEkF-.cjs");
8
- const require_stale = require("./stale-BsiPJI7Y.cjs");
8
+ const require_seeds = require("./seeds-ZljwYV_p.cjs");
9
9
  const require_sniffer = require("./sniffer-BjG-1mlD.cjs");
10
- const require_provider = require("./provider-B3Sv_a74.cjs");
10
+ const require_databases = require("./databases-BY-pEImp.cjs");
11
11
  const require_credentialSchemas = require("./credentialSchemas-DCR4Wd1W.cjs");
12
12
  let node_path = require("node:path");
13
13
  let node_fs_promises = require("node:fs/promises");
@@ -97,7 +97,7 @@ async function writeCredentialsFile(credentials) {
97
97
  async function buildImage(imageRef, buildArgs, credentials, { cwd, dockerfile, signal, stdio }) {
98
98
  logger$3.log(`\n🔨 Building Docker image: ${imageRef}`);
99
99
  logger$3.log(" Generating Dockerfile...");
100
- const { buildRoot } = await require_stale.dockerCommand({ cwd });
100
+ const { buildRoot } = await require_seeds.dockerCommand({ cwd });
101
101
  const dockerfilePath = (0, node_path.relative)(buildRoot, dockerfile);
102
102
  const secret = credentials ? await writeCredentialsFile(credentials) : void 0;
103
103
  try {
@@ -117,7 +117,7 @@ async function buildImage(imageRef, buildArgs, credentials, { cwd, dockerfile, s
117
117
  });
118
118
  logger$3.log(`✅ Image built: ${imageRef}`);
119
119
  } catch (error) {
120
- throw new require_stale.DockerBuildFailed(imageRef, error);
120
+ throw new require_seeds.DockerBuildFailed(imageRef, error);
121
121
  } finally {
122
122
  await secret?.cleanup();
123
123
  }
@@ -135,7 +135,7 @@ async function pushImage(imageRef, { cwd, signal, stdio }) {
135
135
  });
136
136
  logger$3.log(`✅ Image pushed: ${imageRef}`);
137
137
  } catch (error) {
138
- throw new require_stale.DockerPushFailed(imageRef, error);
138
+ throw new require_seeds.DockerPushFailed(imageRef, error);
139
139
  }
140
140
  }
141
141
  /**
@@ -174,11 +174,11 @@ async function pushedDigest(imageRef, { cwd, signal } = { cwd: process.cwd() })
174
174
  async function deployDocker(options) {
175
175
  const { stage, tag, skipPush, masterKey, config, buildArgs, credentials } = options;
176
176
  const imageName = config.imageName;
177
- const imageRef = require_stale.validateImageRef(getImageRef(config.registry, imageName, tag));
177
+ const imageRef = require_seeds.validateImageRef(getImageRef(config.registry, imageName, tag));
178
178
  const cwd = options.cwd ?? process.cwd();
179
179
  const docker = {
180
180
  cwd,
181
- dockerfile: (0, node_path.join)(cwd, options.dockerfile ?? require_stale.dockerfileOf(config.appName ?? imageName, options.appPath ?? ".")),
181
+ dockerfile: (0, node_path.join)(cwd, options.dockerfile ?? require_seeds.dockerfileOf(config.appName ?? imageName, options.appPath ?? ".")),
182
182
  ...options.signal ? { signal: options.signal } : {},
183
183
  ...options.stdio ? { stdio: options.stdio } : {}
184
184
  };
@@ -258,12 +258,12 @@ async function projectById(api, projectId) {
258
258
  * another identity's, raises `ProjectNotOwned` — it is never adopted.
259
259
  */
260
260
  async function findProject(api, identity, stateProjectId) {
261
- const name = require_stale.projectName(identity);
262
- const marker = require_stale.ownershipMarker(identity);
261
+ const name = require_seeds.projectName(identity);
262
+ const marker = require_seeds.ownershipMarker(identity);
263
263
  if (stateProjectId) {
264
264
  const known = await projectById(api, stateProjectId);
265
265
  if (known) {
266
- const claimed = require_stale.markerOf(known.description);
266
+ const claimed = require_seeds.markerOf(known.description);
267
267
  if (claimed && claimed !== marker) throw new ProjectNotOwned(known.name, known.projectId, identity.key, claimed);
268
268
  return {
269
269
  projectId: known.projectId,
@@ -276,7 +276,7 @@ async function findProject(api, identity, stateProjectId) {
276
276
  }
277
277
  }
278
278
  const projects = await api.listProjects();
279
- const owned = projects.find((p) => p.name.toLowerCase() === name.toLowerCase() && require_stale.isOwnedBy(p.description, identity));
279
+ const owned = projects.find((p) => p.name.toLowerCase() === name.toLowerCase() && require_seeds.isOwnedBy(p.description, identity));
280
280
  if (owned) {
281
281
  const details = await api.getProject(owned.projectId);
282
282
  return {
@@ -289,7 +289,7 @@ async function findProject(api, identity, stateProjectId) {
289
289
  };
290
290
  }
291
291
  const clash = projects.find((p) => p.name.toLowerCase() === name.toLowerCase());
292
- if (clash) throw new ProjectNotOwned(clash.name, clash.projectId, identity.key, require_stale.markerOf(clash.description));
292
+ if (clash) throw new ProjectNotOwned(clash.name, clash.projectId, identity.key, require_seeds.markerOf(clash.description));
293
293
  return null;
294
294
  }
295
295
  /**
@@ -298,7 +298,7 @@ async function findProject(api, identity, stateProjectId) {
298
298
  * deploy without state still finds it — or a new one, marked.
299
299
  */
300
300
  async function resolveProject(api, identity, stateProjectId, log = () => {}, hooks = {}) {
301
- const marker = require_stale.ownershipMarker(identity);
301
+ const marker = require_seeds.ownershipMarker(identity);
302
302
  const found = await findProject(api, identity, stateProjectId);
303
303
  if (found) {
304
304
  if (found.needsClaim) {
@@ -316,7 +316,7 @@ async function resolveProject(api, identity, stateProjectId, log = () => {}, hoo
316
316
  };
317
317
  }
318
318
  await hooks.beforeCreate?.();
319
- const created = await api.createProject(require_stale.projectName(identity), withMarker("Deployed by gkm.", marker));
319
+ const created = await api.createProject(require_seeds.projectName(identity), withMarker("Deployed by gkm.", marker));
320
320
  return {
321
321
  projectId: created.project.projectId,
322
322
  name: created.project.name,
@@ -427,7 +427,7 @@ async function resolveRegistry(api, options) {
427
427
  * @returns Filtered secrets with found/missing tracking
428
428
  */
429
429
  function filterSecretsForApp(stageSecrets, sniffedEnv) {
430
- const allSecrets = require_stale.toEmbeddableSecrets(stageSecrets);
430
+ const allSecrets = require_seeds.toEmbeddableSecrets(stageSecrets);
431
431
  const filtered = {};
432
432
  const found = [];
433
433
  const missing = [];
@@ -582,7 +582,7 @@ const PROVISIONERS = {
582
582
  */
583
583
  database: async (declaration, context) => {
584
584
  if (declaration.kind !== "database") throw new WrongKind(declaration.kind);
585
- const name = require_stale.resourceName(declaration.id, declaration.kind, context.stage);
585
+ const name = require_seeds.resourceName(declaration.id, declaration.kind, context.stage);
586
586
  const { postgres } = await context.api.findOrCreatePostgres(serviceName({
587
587
  stage: context.stage,
588
588
  app: context.scope ?? context.project
@@ -619,7 +619,7 @@ const PROVISIONERS = {
619
619
  if (declaration.kind !== "database-schema") throw new WrongKind(declaration.kind);
620
620
  const parent = context.provisioned[declaration.of];
621
621
  if (!parent) throw new UnresolvedParent(declaration.id, declaration.of);
622
- const runtime = require_stale.resourceName(declaration.id, declaration.kind, context.stage);
622
+ const runtime = require_seeds.resourceName(declaration.id, declaration.kind, context.stage);
623
623
  const owner = (0, _geekmidas_db_pg_roles.ownerRole)(runtime);
624
624
  const reads = readsFrom(context.manifest, declaration.id);
625
625
  const parentUrl = new URL(parent.provides[(0, _geekmidas_manifest.provideKey)(declaration.of, "url")] ?? "");
@@ -734,7 +734,7 @@ const PROVISIONERS = {
734
734
  stage: context.stage,
735
735
  app: context.scope ?? context.project
736
736
  }, declaration.id);
737
- const bucket = require_stale.resourceName(declaration.id, declaration.kind, context.stage);
737
+ const bucket = require_seeds.resourceName(declaration.id, declaration.kind, context.stage);
738
738
  const user = context.supplied?.AWS_ACCESS_KEY_ID ?? `${bucket}-root`;
739
739
  const password = context.supplied?.AWS_SECRET_ACCESS_KEY ?? derivedPassword(context, `objects:${declaration.id}`);
740
740
  const { compose } = await context.api.findOrCreateCompose(service, context.projectId, context.environmentId, minioCompose({
@@ -1070,7 +1070,7 @@ function mailpitCompose(service) {
1070
1070
  */
1071
1071
  function storageKeys(values) {
1072
1072
  const keys = {};
1073
- for (const key of [...require_stale.STORAGE_KEY_PAIR, "AWS_REGION"]) {
1073
+ for (const key of [...require_seeds.STORAGE_KEY_PAIR, "AWS_REGION"]) {
1074
1074
  const value = values?.[key];
1075
1075
  if (value !== void 0) keys[key] = value;
1076
1076
  }
@@ -1081,7 +1081,7 @@ function storageKeys(values) {
1081
1081
  * `validate` already refused, should a provisioner be reached without it.
1082
1082
  */
1083
1083
  function notConfigured(id, kind, context) {
1084
- const { missing } = require_stale.externalServices({
1084
+ const { missing } = require_seeds.externalServices({
1085
1085
  stage: context.stage,
1086
1086
  declarations: [{
1087
1087
  id,
@@ -1091,7 +1091,7 @@ function notConfigured(id, kind, context) {
1091
1091
  allow: [],
1092
1092
  ...context.domain ? { domain: context.domain } : {}
1093
1093
  });
1094
- return new require_stale.ExternalServicesNotConfigured(context.stage, missing);
1094
+ return new require_seeds.ExternalServicesNotConfigured(context.stage, missing);
1095
1095
  }
1096
1096
  /** Whether anything reads through a reader on this construct. */
1097
1097
  function readsFrom(manifest, id) {
@@ -1265,7 +1265,7 @@ async function provisionDeclared(options) {
1265
1265
  clusters: {}
1266
1266
  };
1267
1267
  const manifest = options.manifest ?? await require_discover.discover({
1268
- patterns: require_stale.constructGlobs(workspace),
1268
+ patterns: require_seeds.constructGlobs(workspace),
1269
1269
  cwd: workspace.root
1270
1270
  });
1271
1271
  if (Object.keys(manifest).length === 0) return empty;
@@ -1278,9 +1278,9 @@ async function provisionDeclared(options) {
1278
1278
  stage: options.stage,
1279
1279
  project: workspace.name,
1280
1280
  scope: options.scope ?? workspace.name,
1281
- cache: require_stale.cacheBackendFor(require_stale.providerOf(workspace)),
1282
- events: require_stale.eventsBackendFor(require_stale.providerOf(workspace)),
1283
- storage: require_stale.storageBackendFor(require_stale.providerOf(workspace)),
1281
+ cache: require_seeds.cacheBackendFor(require_seeds.providerOf(workspace)),
1282
+ events: require_seeds.eventsBackendFor(require_seeds.providerOf(workspace)),
1283
+ storage: require_seeds.storageBackendFor(require_seeds.providerOf(workspace)),
1284
1284
  ...options.devServices ? { devServices: options.devServices } : {},
1285
1285
  ...workspace.deploy?.domains?.[options.stage] ? { domain: workspace.deploy.domains[options.stage] } : {},
1286
1286
  addresses: surfaceAddresses(manifest, options.appUrls),
@@ -1320,7 +1320,7 @@ async function provisionDeclared(options) {
1320
1320
  * run again.
1321
1321
  */
1322
1322
  async function applyDeclared(client, statements) {
1323
- return (await require_stale.applyPostgres(client, statements)).filter((entry) => entry.created).length;
1323
+ return (await require_seeds.applyPostgres(client, statements)).filter((entry) => entry.created).length;
1324
1324
  }
1325
1325
  /**
1326
1326
  * The provisioning order, with queues and topics moved to the end.
@@ -1653,7 +1653,7 @@ async function orchestrateDns(appHostnames, dnsConfig, dokployEndpoint, state) {
1653
1653
  hasFailures = true;
1654
1654
  }
1655
1655
  if (state) {
1656
- for (const record of domainRecords) if (record.created || record.existed) require_stale.setDnsRecord(state, {
1656
+ for (const record of domainRecords) if (record.created || record.existed) require_seeds.setDnsRecord(state, {
1657
1657
  domain: rootDomain,
1658
1658
  name: record.subdomain,
1659
1659
  type: record.type,
@@ -1688,7 +1688,7 @@ async function verifyDnsRecords(appHostnames, serverIp, state) {
1688
1688
  const results = [];
1689
1689
  logger$2.log("\n🔍 Verifying DNS records...");
1690
1690
  for (const [appName, hostname] of appHostnames) {
1691
- if (require_stale.isDnsVerified(state, hostname, serverIp)) {
1691
+ if (require_seeds.isDnsVerified(state, hostname, serverIp)) {
1692
1692
  logger$2.log(` ✓ ${hostname} (previously verified)`);
1693
1693
  results.push({
1694
1694
  hostname,
@@ -1702,7 +1702,7 @@ async function verifyDnsRecords(appHostnames, serverIp, state) {
1702
1702
  try {
1703
1703
  const resolvedIp = await resolveHostnameToIp(hostname);
1704
1704
  if (resolvedIp === serverIp) {
1705
- require_stale.setDnsVerification(state, hostname, serverIp);
1705
+ require_seeds.setDnsVerification(state, hostname, serverIp);
1706
1706
  logger$2.log(` ✓ ${hostname} → ${resolvedIp}`);
1707
1707
  results.push({
1708
1708
  hostname,
@@ -1763,10 +1763,10 @@ function generateSecret() {
1763
1763
  * Otherwise generates a new one and stores it.
1764
1764
  */
1765
1765
  function getOrGenerateSecret(state, appName, secretName) {
1766
- const existing = require_stale.getGeneratedSecret(state, appName, secretName);
1766
+ const existing = require_seeds.getGeneratedSecret(state, appName, secretName);
1767
1767
  if (existing) return existing;
1768
1768
  const generated = generateSecret();
1769
- require_stale.setGeneratedSecret(state, appName, secretName, generated);
1769
+ require_seeds.setGeneratedSecret(state, appName, secretName, generated);
1770
1770
  return generated;
1771
1771
  }
1772
1772
  /**
@@ -1914,15 +1914,17 @@ var DeployMigrationsFailed = class extends Error {
1914
1914
  }
1915
1915
  };
1916
1916
  /**
1917
- * The URLs a stage's migrations connect with, keyed as the migrator reads
1918
- * them, grouped by the database their cluster serves — for the targets that
1919
- * have a migration to apply. Empty when none does, so a deploy publishes
1920
- * nothing for a project that has not written one.
1917
+ * The URLs a stage's migrations and seeds connect with, keyed as the migrator
1918
+ * reads them, grouped by the database their cluster serves — for the targets
1919
+ * that have a migration or a seed to run. Empty when none does, so a deploy
1920
+ * publishes nothing for a project that has written neither.
1921
1921
  */
1922
1922
  async function migrationUrls(root, manifest, env) {
1923
1923
  const byDatabase = /* @__PURE__ */ new Map();
1924
1924
  for (const target of (0, _geekmidas_manifest.migrationTargets)(manifest)) {
1925
- if ((await require_provider.migrationFiles((0, node_path.join)(root, target.migrations))).size === 0) continue;
1925
+ const migrations = await require_databases.migrationFiles((0, node_path.join)(root, target.migrations));
1926
+ const seeds = await require_databases.migrationFiles((0, node_path.join)(root, target.seeds));
1927
+ if (migrations.size === 0 && seeds.size === 0) continue;
1926
1928
  for (const role of ["ownerUrl", "url"]) {
1927
1929
  const key = (0, _geekmidas_manifest.provideKey)(target.id, role);
1928
1930
  const url = env[key];
@@ -1939,8 +1941,14 @@ async function migrationUrls(root, manifest, env) {
1939
1941
  const answer = require_schemas.discriminatedUnion("reason", [require_schemas.object({
1940
1942
  reason: require_schemas.literal("migrated"),
1941
1943
  runs: require_schemas.array(require_schemas.object({
1944
+ construct: require_schemas.string(),
1942
1945
  migrations: require_schemas.string(),
1943
1946
  applied: require_schemas.array(require_schemas.string())
1947
+ })),
1948
+ seeds: require_schemas.array(require_schemas.object({
1949
+ construct: require_schemas.string(),
1950
+ seeds: require_schemas.string(),
1951
+ seeded: require_schemas.array(require_schemas.string())
1944
1952
  }))
1945
1953
  }), require_schemas.object({
1946
1954
  reason: require_schemas.literal("failed"),
@@ -1949,13 +1957,18 @@ const answer = require_schemas.discriminatedUnion("reason", [require_schemas.obj
1949
1957
  message: require_schemas.string()
1950
1958
  })
1951
1959
  })]);
1952
- /** Apply every pending migration, in the sandbox, as each construct's owner. */
1960
+ /**
1961
+ * Apply every pending migration, then run every seed, in the sandbox, as each
1962
+ * construct's owner. A failing migration throws `DeployMigrationsFailed`, a
1963
+ * failing seed `DeploySeedsFailed` — either before any app is released.
1964
+ */
1953
1965
  async function runMigrations(options) {
1954
1966
  const sandbox = options.sandbox ?? require_sandbox.activeSandbox() ?? new require_credentials.LocalSandbox({ root: options.root });
1955
1967
  const { value } = await require_discover.runWorker(sandbox, "migrations", {
1956
1968
  name: "migrate-worker",
1957
1969
  args: [JSON.stringify({
1958
1970
  root: options.root,
1971
+ stage: options.stage,
1959
1972
  manifest: options.manifest,
1960
1973
  patterns: options.patterns
1961
1974
  })],
@@ -1965,8 +1978,15 @@ async function runMigrations(options) {
1965
1978
  signal: options.signal,
1966
1979
  schema: answer
1967
1980
  });
1968
- if (value.reason === "failed") throw new DeployMigrationsFailed(options.stage, value.error.name, value.error.message);
1969
- return value.runs;
1981
+ if (value.reason === "failed") {
1982
+ const { error } = value;
1983
+ if (error.name === "SeedFailed") throw new require_seeds.DeploySeedsFailed(options.stage, String(error.construct ?? "unknown"), String(error.seed ?? "unknown"), error);
1984
+ throw new DeployMigrationsFailed(options.stage, error.name, error.message);
1985
+ }
1986
+ return {
1987
+ migrations: value.runs,
1988
+ seeds: value.seeds
1989
+ };
1970
1990
  }
1971
1991
  //#endregion
1972
1992
  //#region src/target/dokploy/postgres.ts
@@ -2275,29 +2295,29 @@ async function validateDokploy(phase) {
2275
2295
  ctx
2276
2296
  };
2277
2297
  const stored = await phase.secrets.read();
2278
- const services = require_stale.assertExternalServices({
2298
+ const services = require_seeds.assertExternalServices({
2279
2299
  stage,
2280
- declarations: require_stale.manifestServiceDeclarations(phase.manifest),
2300
+ declarations: require_seeds.manifestServiceDeclarations(phase.manifest),
2281
2301
  supplied: stored?.custom ?? {},
2282
2302
  allow: phase.allowDevServices,
2283
2303
  ...workspace.deploy?.domains?.[stage] ? { domain: workspace.deploy.domains[stage] } : {}
2284
2304
  });
2285
- require_stale.reportDevServices(phase, require_stale.devServicesUsed(services));
2286
- require_stale.assertNoStaleSecrets({
2305
+ require_seeds.reportDevServices(phase, require_seeds.devServicesUsed(services));
2306
+ require_seeds.assertNoStaleSecrets({
2287
2307
  manifest: phase.manifest,
2288
2308
  stage,
2289
2309
  supplied: stored?.custom ?? {}
2290
2310
  });
2291
2311
  await require_credentialSchemas.assertStageCredentials({
2292
2312
  root: workspace.root,
2293
- patterns: require_stale.constructGlobs(workspace),
2313
+ patterns: require_seeds.constructGlobs(workspace),
2294
2314
  manifest: phase.manifest,
2295
2315
  stage,
2296
2316
  supplied: stored?.custom ?? {}
2297
2317
  });
2298
2318
  const runnables = phase.runnables ?? {};
2299
2319
  const background = phase.background ?? {};
2300
- const workers = require_stale.workerUnits(workspace, phase.manifest, background).filter((worker) => appsToDeployNames.includes(worker.app));
2320
+ const workers = require_seeds.workerUnits(workspace, phase.manifest, background).filter((worker) => appsToDeployNames.includes(worker.app));
2301
2321
  if (workers.length > 0) logger.log(` Deploying workers: ${workers.map((w) => `${w.name} (from ${w.app})`).join(", ")}`);
2302
2322
  return {
2303
2323
  ...run,
@@ -2322,7 +2342,7 @@ async function preflight({ workspace, manifest, stage, secrets: secretsStore, ct
2322
2342
  logger.log("\n🔐 Loading secrets and analyzing environment requirements...");
2323
2343
  const stored = await secretsStore.read();
2324
2344
  if (!stored) logger.log(` ⚠️ No secrets found for stage "${stage}"; starting them`);
2325
- const { secrets: stageSecrets, generated } = require_stale.withGeneratedSecrets(stored ?? require_stale.initStageSecrets(stage), manifest);
2345
+ const { secrets: stageSecrets, generated } = require_seeds.withGeneratedSecrets(stored ?? require_seeds.initStageSecrets(stage), manifest);
2326
2346
  if (generated.length > 0) {
2327
2347
  if (ctx.dryRun) logger.log(` 🔑 Would generate for "${stage}" (${secretsStore.store}): ${generated.join(", ")}`);
2328
2348
  else {
@@ -2375,7 +2395,7 @@ async function provision(run) {
2375
2395
  };
2376
2396
  const { api, endpoint } = await dokployApi(workspace, ctx);
2377
2397
  logger.log("\n📋 Loading deploy state...");
2378
- const journal = await require_stale.DeployJournal.open(store, stage, () => require_stale.createEmptyState(stage, "", ""));
2398
+ const journal = await require_seeds.DeployJournal.open(store, stage, () => require_seeds.createEmptyState(stage, "", ""));
2379
2399
  const state = journal.state;
2380
2400
  if (journal.existed) logger.log(` Found existing state for stage "${stage}"`);
2381
2401
  else logger.log(` Creating new state for stage "${stage}"`);
@@ -2387,7 +2407,7 @@ async function provision(run) {
2387
2407
  key: "project",
2388
2408
  type: "project",
2389
2409
  data: {
2390
- name: require_stale.projectName(identity),
2410
+ name: require_seeds.projectName(identity),
2391
2411
  identity: identity.key
2392
2412
  }
2393
2413
  };
@@ -2514,10 +2534,10 @@ async function provision(run) {
2514
2534
  projectName: identity.scope,
2515
2535
  stage,
2516
2536
  config: workspace.deploy.backups,
2517
- existingState: require_stale.getBackupState(state),
2537
+ existingState: require_seeds.getBackupState(state),
2518
2538
  logger
2519
2539
  });
2520
- require_stale.setBackupState(state, backupState);
2540
+ require_seeds.setBackupState(state, backupState);
2521
2541
  if (!backupState.postgresBackupId) {
2522
2542
  const backupSchedule = workspace.deploy.backups.schedule ?? "0 2 * * *";
2523
2543
  const backupRetention = workspace.deploy.backups.retention ?? 30;
@@ -2531,7 +2551,7 @@ async function provision(run) {
2531
2551
  enabled: true,
2532
2552
  keepLatestCount: backupRetention
2533
2553
  });
2534
- require_stale.setPostgresBackupId(state, backup.backupId);
2554
+ require_seeds.setPostgresBackupId(state, backup.backupId);
2535
2555
  logger.log(` ✓ Postgres backup schedule created (${backupSchedule})`);
2536
2556
  } else logger.log(" ✓ Using existing postgres backup schedule");
2537
2557
  }
@@ -2650,7 +2670,7 @@ async function releaseDokploy(run) {
2650
2670
  intervalMs: run.verify.intervalMs,
2651
2671
  signal: ctx.signal
2652
2672
  });
2653
- require_stale.recordRelease(state, appName, {
2673
+ require_seeds.recordRelease(state, appName, {
2654
2674
  ...image,
2655
2675
  tag: imageTag
2656
2676
  });
@@ -2666,14 +2686,14 @@ async function releaseDokploy(run) {
2666
2686
  const app = workspace.apps[appName];
2667
2687
  logger.log(`\n ⚙️ Deploying ${appName}...`);
2668
2688
  try {
2669
- const application = await ensureApplication(api, journal, appName, require_stale.applicationName(identity, appName), project.projectId, environmentId, applied);
2689
+ const application = await ensureApplication(api, journal, appName, require_seeds.applicationName(identity, appName), project.projectId, environmentId, applied);
2670
2690
  const appSecrets = encryptedSecrets.get(appName);
2671
2691
  const credentials = appSecrets && appSecrets.secretCount > 0 ? {
2672
2692
  encrypted: appSecrets.payload.encrypted,
2673
2693
  iv: appSecrets.payload.iv
2674
2694
  } : void 0;
2675
2695
  if (appSecrets && credentials) logger.log(` Encrypted ${appSecrets.secretCount} secrets`);
2676
- const imageRef$1 = require_stale.imageRef(identity, appName, registry, imageTag);
2696
+ const imageRef$1 = require_seeds.imageRef(identity, appName, registry, imageTag);
2677
2697
  logger.log(` Building Docker image: ${imageRef$1}`);
2678
2698
  const image = await deployDocker({
2679
2699
  stage,
@@ -2681,7 +2701,7 @@ async function releaseDokploy(run) {
2681
2701
  skipPush: false,
2682
2702
  config: {
2683
2703
  registry,
2684
- imageName: require_stale.imageName(identity, appName),
2704
+ imageName: require_seeds.imageName(identity, appName),
2685
2705
  appName
2686
2706
  },
2687
2707
  credentials,
@@ -2715,7 +2735,7 @@ async function releaseDokploy(run) {
2715
2735
  const withDeclared = {
2716
2736
  ...resolved,
2717
2737
  ...declaredEnv,
2718
- ...require_stale.otelEnv(stageSecrets?.custom ?? {}, appName)
2738
+ ...require_seeds.otelEnv(stageSecrets?.custom ?? {}, appName)
2719
2739
  };
2720
2740
  const envVars = Object.entries(withDeclared).map(([key, value]) => `${key}=${value}`);
2721
2741
  if (Object.keys(withDeclared).length > 0) logger.log(` Resolved ${Object.keys(withDeclared).length} env vars: ${Object.keys(withDeclared).sort().join(", ")}`);
@@ -2752,8 +2772,8 @@ async function releaseDokploy(run) {
2752
2772
  ctx.signal?.throwIfAborted();
2753
2773
  logger.log(`\n 🧵 Deploying ${worker.name} (worker ${worker.id})...`);
2754
2774
  try {
2755
- const application = await ensureApplication(api, journal, worker.name, require_stale.applicationName(identity, worker.name), project.projectId, environmentId, applied);
2756
- const keys = [...require_stale.workerEnvKeys(run.manifest, worker.id, run.runnables) ?? []].sort();
2775
+ const application = await ensureApplication(api, journal, worker.name, require_seeds.applicationName(identity, worker.name), project.projectId, environmentId, applied);
2776
+ const keys = [...require_seeds.workerEnvKeys(run.manifest, worker.id, run.runnables) ?? []].sort();
2757
2777
  const secrets = prepareSecretsForApp(stageSecrets, {
2758
2778
  appName: worker.name,
2759
2779
  requiredEnvVars: keys,
@@ -2763,7 +2783,7 @@ async function releaseDokploy(run) {
2763
2783
  encrypted: secrets.payload.encrypted,
2764
2784
  iv: secrets.payload.iv
2765
2785
  } : void 0;
2766
- const imageRef$2 = require_stale.imageRef(identity, worker.name, registry, imageTag);
2786
+ const imageRef$2 = require_seeds.imageRef(identity, worker.name, registry, imageTag);
2767
2787
  logger.log(` Building Docker image: ${imageRef$2}`);
2768
2788
  const image = await deployDocker({
2769
2789
  stage,
@@ -2771,22 +2791,22 @@ async function releaseDokploy(run) {
2771
2791
  skipPush: false,
2772
2792
  config: {
2773
2793
  registry,
2774
- imageName: require_stale.imageName(identity, worker.name),
2794
+ imageName: require_seeds.imageName(identity, worker.name),
2775
2795
  appName: worker.name
2776
2796
  },
2777
2797
  credentials,
2778
2798
  cwd: workspace.root,
2779
- dockerfile: require_stale.workerDockerfileOf(worker.name),
2799
+ dockerfile: require_seeds.workerDockerfileOf(worker.name),
2780
2800
  ...ctx.signal ? { signal: ctx.signal } : {},
2781
2801
  ...ctx.stdio ? { stdio: ctx.stdio } : {}
2782
2802
  });
2783
2803
  built(worker.name, image, imageRef$2);
2784
2804
  const env = {
2785
2805
  ...Object.fromEntries(Object.entries(declaredEnv).filter(([key]) => keys.includes(key))),
2786
- ...require_stale.otelEnv(stageSecrets?.custom ?? {}, worker.name),
2806
+ ...require_seeds.otelEnv(stageSecrets?.custom ?? {}, worker.name),
2787
2807
  ...credentials ? { GKM_MASTER_KEY: secrets.masterKey } : {},
2788
2808
  NODE_ENV: "production",
2789
- PORT: String(require_stale.WORKER_PORT),
2809
+ PORT: String(require_seeds.WORKER_PORT),
2790
2810
  STAGE: stage
2791
2811
  };
2792
2812
  logger.log(` Resolved ${Object.keys(env).length} env vars: ${Object.keys(env).sort().join(", ")}`);
@@ -2819,7 +2839,7 @@ async function releaseDokploy(run) {
2819
2839
  const app = workspace.apps[appName];
2820
2840
  logger.log(`\n 🌐 Deploying ${appName}...`);
2821
2841
  try {
2822
- const application = await ensureApplication(api, journal, appName, require_stale.applicationName(identity, appName), project.projectId, environmentId, applied);
2842
+ const application = await ensureApplication(api, journal, appName, require_seeds.applicationName(identity, appName), project.projectId, environmentId, applied);
2823
2843
  const dependencyUrls = {};
2824
2844
  if (app.dependencies) {
2825
2845
  for (const dep of app.dependencies) if (publicUrls[dep]) dependencyUrls[dep] = publicUrls[dep];
@@ -2848,7 +2868,7 @@ async function releaseDokploy(run) {
2848
2868
  }
2849
2869
  }
2850
2870
  if (buildArgs.length > 0) logger.log(` Build args: ${publicUrlArgNames.join(", ")}`);
2851
- const imageRef$3 = require_stale.imageRef(identity, appName, registry, imageTag);
2871
+ const imageRef$3 = require_seeds.imageRef(identity, appName, registry, imageTag);
2852
2872
  logger.log(` Building Docker image: ${imageRef$3}`);
2853
2873
  const image = await deployDocker({
2854
2874
  stage,
@@ -2856,7 +2876,7 @@ async function releaseDokploy(run) {
2856
2876
  skipPush: false,
2857
2877
  config: {
2858
2878
  registry,
2859
- imageName: require_stale.imageName(identity, appName),
2879
+ imageName: require_seeds.imageName(identity, appName),
2860
2880
  appName
2861
2881
  },
2862
2882
  buildArgs,
@@ -2938,15 +2958,15 @@ function failed(run, appName, error) {
2938
2958
  });
2939
2959
  }
2940
2960
  /**
2941
- * The stage's pending migrations, applied in the deploy's sandbox against
2942
- * each cluster published for them. Nothing is published, and nothing runs,
2943
- * for a project with no migration to apply.
2961
+ * The stage's pending migrations applied, then every seed run, in the
2962
+ * deploy's sandbox against each cluster published for them. Nothing is
2963
+ * published, and nothing runs, for a project with neither.
2944
2964
  */
2945
2965
  async function migrate(run) {
2946
2966
  const { workspace, manifest, stage, ctx } = run;
2947
2967
  const { api, endpoint, migrations, declaredClusters } = run.provisioned;
2948
2968
  if (migrations.size === 0) return;
2949
- logger.log("\n🗄️ Applying migrations...");
2969
+ logger.log("\n🗄️ Applying migrations and seeds...");
2950
2970
  const host = serverHostname(endpoint);
2951
2971
  const urls = {};
2952
2972
  for (const [database, keys] of migrations) {
@@ -2959,15 +2979,24 @@ async function migrate(run) {
2959
2979
  }
2960
2980
  for (const [key, url] of Object.entries(keys)) urls[key] = publishedUrl(url, published);
2961
2981
  }
2962
- const runs = await runMigrations({
2982
+ const ran = await runMigrations({
2963
2983
  root: workspace.root,
2964
2984
  stage,
2965
2985
  manifest,
2966
- patterns: require_stale.constructGlobs(workspace),
2986
+ patterns: require_seeds.constructGlobs(workspace),
2967
2987
  urls,
2968
2988
  signal: ctx.signal
2969
2989
  });
2970
- for (const { migrations: folder, applied } of runs) logger.log(applied.length === 0 ? ` ✓ ${folder}: up to date` : ` ✓ ${folder}: applied ${applied.join(", ")}`);
2990
+ for (const { migrations: folder, applied } of ran.migrations) if (applied.length === 0) logger.log(` ✓ ${folder}: up to date`);
2991
+ require_seeds.reportDatabaseRuns(ran.migrations.map(({ construct, migrations: folder, applied }) => ({
2992
+ construct,
2993
+ folder,
2994
+ applied
2995
+ })), ran.seeds.map(({ construct, seeds: folder, seeded }) => ({
2996
+ construct,
2997
+ folder,
2998
+ seeded
2999
+ })), (line) => logger.log(` ${line}`), (event) => ctx.emit(event));
2971
3000
  }
2972
3001
  /**
2973
3002
  * DNS records for `apps`' hosts, their propagation, and Dokploy's validation
@@ -3074,7 +3103,7 @@ async function rollbackDokploy(run, failure) {
3074
3103
  verify: run.verify,
3075
3104
  signal: run.ctx.signal
3076
3105
  });
3077
- require_stale.recordRollback(state, appName, before);
3106
+ require_seeds.recordRollback(state, appName, before);
3078
3107
  await journal.save();
3079
3108
  logger.log(` ✓ ${appName} rolled back to ${before.ref}`);
3080
3109
  }
@@ -3143,7 +3172,7 @@ async function ensureApplication(api, journal, appName, dokployAppName, projectI
3143
3172
  action: via === "created" ? "create" : "reuse",
3144
3173
  id: resource.applicationId
3145
3174
  }, via);
3146
- require_stale.setApplicationId(journal.state, appName, resource.applicationId);
3175
+ require_seeds.setApplicationId(journal.state, appName, resource.applicationId);
3147
3176
  return resource;
3148
3177
  }
3149
3178
  /**
@@ -3225,7 +3254,7 @@ async function dokployApi(workspace, ctx) {
3225
3254
  /** Each app's public host, the same way the deploy resolves it. */
3226
3255
  function hostOf(workspace, appName, stage) {
3227
3256
  const app = workspace.apps[appName];
3228
- return require_stale.resolveHost(appName, app, stage, workspace.deploy?.domains, app.type === "web" && require_stale.isMainFrontendApp(appName, app, workspace.apps));
3257
+ return require_seeds.resolveHost(appName, app, stage, workspace.deploy?.domains, app.type === "web" && require_seeds.isMainFrontendApp(appName, app, workspace.apps));
3229
3258
  }
3230
3259
  /**
3231
3260
  * What a deploy would do, from the same lookups it starts with — and nothing
@@ -3259,7 +3288,7 @@ async function planDokploy(run) {
3259
3288
  key: "project",
3260
3289
  resourceType: "project",
3261
3290
  action: "create"
3262
- }, require_stale.projectName(identity));
3291
+ }, require_seeds.projectName(identity));
3263
3292
  const environment = project?.environments.find((e) => e.name.toLowerCase() === stage.toLowerCase());
3264
3293
  plan(environment ? {
3265
3294
  key: "environment",
@@ -3301,12 +3330,19 @@ async function planDokploy(run) {
3301
3330
  resourceType: declaration.kind,
3302
3331
  action: "ensure"
3303
3332
  }, declaration.kind);
3333
+ require_seeds.reportPlannedSeeds((await require_databases.plannedSeeds({
3334
+ root: workspace.root,
3335
+ manifest
3336
+ })).map(({ target, seeds }) => ({
3337
+ folder: target.seeds,
3338
+ seeds
3339
+ })), (line) => logger.log(` ${line}`));
3304
3340
  const apps = [];
3305
3341
  const urls = {};
3306
3342
  for (const appName of appsToDeployNames) {
3307
3343
  const app = workspace.apps[appName];
3308
3344
  if (app.type === "mobile") continue;
3309
- const dokployAppName = require_stale.applicationName(identity, appName);
3345
+ const dokployAppName = require_seeds.applicationName(identity, appName);
3310
3346
  const recordedId = state?.applications?.[appName];
3311
3347
  const existing = project && environment ? (recordedId ? await api.getApplication(recordedId).catch(() => null) : null) ?? await api.findApplicationByName(project.projectId, dokployAppName, environment.environmentId) : null;
3312
3348
  plan(existing ? {
@@ -3319,7 +3355,7 @@ async function planDokploy(run) {
3319
3355
  resourceType: "application",
3320
3356
  action: "create"
3321
3357
  }, dokployAppName);
3322
- const ref = require_stale.imageRef(identity, appName, workspace.deploy.registry, imageTag);
3358
+ const ref = require_seeds.imageRef(identity, appName, workspace.deploy.registry, imageTag);
3323
3359
  plan({
3324
3360
  key: `image:${appName}`,
3325
3361
  resourceType: "image",
@@ -3348,7 +3384,7 @@ async function planDokploy(run) {
3348
3384
  });
3349
3385
  }
3350
3386
  for (const worker of run.workers) {
3351
- const dokployAppName = require_stale.applicationName(identity, worker.name);
3387
+ const dokployAppName = require_seeds.applicationName(identity, worker.name);
3352
3388
  const recordedId = state?.applications?.[worker.name];
3353
3389
  const existing = project && environment ? (recordedId ? await api.getApplication(recordedId).catch(() => null) : null) ?? await api.findApplicationByName(project.projectId, dokployAppName, environment.environmentId) : null;
3354
3390
  plan(existing ? {
@@ -3361,7 +3397,7 @@ async function planDokploy(run) {
3361
3397
  resourceType: "application",
3362
3398
  action: "create"
3363
3399
  }, `${dokployAppName}, worker ${worker.id} — no domain`);
3364
- const ref = require_stale.imageRef(identity, worker.name, workspace.deploy.registry, imageTag);
3400
+ const ref = require_seeds.imageRef(identity, worker.name, workspace.deploy.registry, imageTag);
3365
3401
  plan({
3366
3402
  key: `image:${worker.name}`,
3367
3403
  resourceType: "image",
@@ -3510,4 +3546,4 @@ Object.defineProperty(exports, "verifySettings", {
3510
3546
  }
3511
3547
  });
3512
3548
 
3513
- //# sourceMappingURL=engine-CoCsNoW_.cjs.map
3549
+ //# sourceMappingURL=engine-DzBZR5D0.cjs.map