@geekmidas/cli 10.0.0-alpha.113 → 10.0.0-alpha.115

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 (123) hide show
  1. package/dist/{GoDaddyProvider-DWrDIXzQ.cjs → GoDaddyProvider-BDvIMTO-.cjs} +2 -2
  2. package/dist/{GoDaddyProvider-DWrDIXzQ.cjs.map → GoDaddyProvider-BDvIMTO-.cjs.map} +1 -1
  3. package/dist/{GoDaddyProvider-CPabc3XW.mjs → GoDaddyProvider-eW1mre1g.mjs} +2 -2
  4. package/dist/{GoDaddyProvider-CPabc3XW.mjs.map → GoDaddyProvider-eW1mre1g.mjs.map} +1 -1
  5. package/dist/{LegacyStateStore-BdXoAlYY.mjs → LegacyStateStore-Ba1_x0cr.mjs} +3 -3
  6. package/dist/{LegacyStateStore-BdXoAlYY.mjs.map → LegacyStateStore-Ba1_x0cr.mjs.map} +1 -1
  7. package/dist/{LegacyStateStore-fsyPGBWu.cjs → LegacyStateStore-DFeykTd8.cjs} +3 -3
  8. package/dist/{LegacyStateStore-fsyPGBWu.cjs.map → LegacyStateStore-DFeykTd8.cjs.map} +1 -1
  9. package/dist/{LocalStateStore-BrAX5yy7.mjs → LocalStateStore-C1rUUvBr.mjs} +2 -2
  10. package/dist/{LocalStateStore-BrAX5yy7.mjs.map → LocalStateStore-C1rUUvBr.mjs.map} +1 -1
  11. package/dist/{LocalStateStore-AtviUBky.cjs → LocalStateStore-CV-04jpI.cjs} +2 -2
  12. package/dist/{LocalStateStore-AtviUBky.cjs.map → LocalStateStore-CV-04jpI.cjs.map} +1 -1
  13. package/dist/{S3StateStore-tn5g80Sx.cjs → S3StateStore-CqYi-1sb.cjs} +2 -2
  14. package/dist/{S3StateStore-tn5g80Sx.cjs.map → S3StateStore-CqYi-1sb.cjs.map} +1 -1
  15. package/dist/{S3StateStore-Cx7njkBz.mjs → S3StateStore-Dszt4fN5.mjs} +2 -2
  16. package/dist/{S3StateStore-Cx7njkBz.mjs.map → S3StateStore-Dszt4fN5.mjs.map} +1 -1
  17. package/dist/{SSMStateStore-sqZ3oDmn.mjs → SSMStateStore-BYRUyMkE.mjs} +2 -2
  18. package/dist/{SSMStateStore-sqZ3oDmn.mjs.map → SSMStateStore-BYRUyMkE.mjs.map} +1 -1
  19. package/dist/{SSMStateStore-CAFde-Fq.cjs → SSMStateStore-zpHjDCAW.cjs} +2 -2
  20. package/dist/{SSMStateStore-CAFde-Fq.cjs.map → SSMStateStore-zpHjDCAW.cjs.map} +1 -1
  21. package/dist/{add-Cs8yT5iH.cjs → add-0XI8_HOf.cjs} +3 -3
  22. package/dist/{add-Cs8yT5iH.cjs.map → add-0XI8_HOf.cjs.map} +1 -1
  23. package/dist/{add-DJE7zqJ4.mjs → add-DXdJjp0b.mjs} +3 -3
  24. package/dist/{add-DJE7zqJ4.mjs.map → add-DXdJjp0b.mjs.map} +1 -1
  25. package/dist/{bundler-DrySVbXF.mjs → bundler-B2ysiCTa.mjs} +5 -5
  26. package/dist/{bundler-DrySVbXF.mjs.map → bundler-B2ysiCTa.mjs.map} +1 -1
  27. package/dist/{bundler-NrtItVBp.cjs → bundler-hvCgi0EG.cjs} +5 -5
  28. package/dist/{bundler-NrtItVBp.cjs.map → bundler-hvCgi0EG.cjs.map} +1 -1
  29. package/dist/{cli-CHzpFBh-.cjs → cli-5k6kV_i4.cjs} +2 -2
  30. package/dist/{cli-CHzpFBh-.cjs.map → cli-5k6kV_i4.cjs.map} +1 -1
  31. package/dist/{cli-DDY3jfTt.mjs → cli-H0uB_znq.mjs} +2 -2
  32. package/dist/{cli-DDY3jfTt.mjs.map → cli-H0uB_znq.mjs.map} +1 -1
  33. package/dist/{compose-CDC2bCme.mjs → compose-BEiJWrB7.mjs} +3 -3
  34. package/dist/{compose-CDC2bCme.mjs.map → compose-BEiJWrB7.mjs.map} +1 -1
  35. package/dist/{compose-ByIbIrzs.cjs → compose-CYeMW2_o.cjs} +3 -3
  36. package/dist/{compose-ByIbIrzs.cjs.map → compose-CYeMW2_o.cjs.map} +1 -1
  37. package/dist/deploy/public.cjs +6 -6
  38. package/dist/deploy/public.mjs +6 -6
  39. package/dist/{deploy-DLq9-m6H.mjs → deploy-Cyx5fSb7.mjs} +5 -5
  40. package/dist/{deploy-DLq9-m6H.mjs.map → deploy-Cyx5fSb7.mjs.map} +1 -1
  41. package/dist/{deploy-Dl_NavYE.cjs → deploy-Q5qo1OP-.cjs} +5 -5
  42. package/dist/{deploy-Dl_NavYE.cjs.map → deploy-Q5qo1OP-.cjs.map} +1 -1
  43. package/dist/{dns-pzftumxg.mjs → dns-CsApfzLc.mjs} +2 -2
  44. package/dist/{dns-pzftumxg.mjs.map → dns-CsApfzLc.mjs.map} +1 -1
  45. package/dist/{dns-C2TGXUF4.cjs → dns-v9viladZ.cjs} +2 -2
  46. package/dist/{dns-C2TGXUF4.cjs.map → dns-v9viladZ.cjs.map} +1 -1
  47. package/dist/{dokploy-B7-OwY2s.mjs → dokploy-DfUo_QRw.mjs} +2 -2
  48. package/dist/{dokploy-B7-OwY2s.mjs.map → dokploy-DfUo_QRw.mjs.map} +1 -1
  49. package/dist/{dokploy-OqBh8G4g.cjs → dokploy-Di7rC2z0.cjs} +2 -2
  50. package/dist/{dokploy-OqBh8G4g.cjs.map → dokploy-Di7rC2z0.cjs.map} +1 -1
  51. package/dist/{eas-Cne743nQ.cjs → eas-CIvNT6qa.cjs} +2 -2
  52. package/dist/{eas-Cne743nQ.cjs.map → eas-CIvNT6qa.cjs.map} +1 -1
  53. package/dist/{eas-DEpwISrQ.mjs → eas-CTfRmndW.mjs} +2 -2
  54. package/dist/{eas-DEpwISrQ.mjs.map → eas-CTfRmndW.mjs.map} +1 -1
  55. package/dist/{encryption-DoVnVU82.cjs → encryption--U4NsK7N.cjs} +2 -2
  56. package/dist/{encryption-DoVnVU82.cjs.map → encryption--U4NsK7N.cjs.map} +1 -1
  57. package/dist/{encryption-DJv_jEXi.mjs → encryption-BpTPmd7h.mjs} +2 -2
  58. package/dist/{encryption-DJv_jEXi.mjs.map → encryption-BpTPmd7h.mjs.map} +1 -1
  59. package/dist/{engine-Db71-OZL.mjs → engine-BFmHfek1.mjs} +3 -3
  60. package/dist/{engine-Db71-OZL.mjs.map → engine-BFmHfek1.mjs.map} +1 -1
  61. package/dist/{engine-CJhQb50j.cjs → engine-Ovl1PB6i.cjs} +3 -3
  62. package/dist/{engine-CJhQb50j.cjs.map → engine-Ovl1PB6i.cjs.map} +1 -1
  63. package/dist/{github-C3gblUvr.cjs → github-CTlPQ5Ra.cjs} +4 -4
  64. package/dist/{github-C3gblUvr.cjs.map → github-CTlPQ5Ra.cjs.map} +1 -1
  65. package/dist/{github-BMakI-k3.mjs → github-tWAGuR9i.mjs} +4 -4
  66. package/dist/{github-BMakI-k3.mjs.map → github-tWAGuR9i.mjs.map} +1 -1
  67. package/dist/{googlePlay-B6uiHi65.cjs → googlePlay-BNH729It.cjs} +3 -3
  68. package/dist/{googlePlay-B6uiHi65.cjs.map → googlePlay-BNH729It.cjs.map} +1 -1
  69. package/dist/{googlePlay-BYZ-J5sC.mjs → googlePlay-m1De-qIJ.mjs} +3 -3
  70. package/dist/{googlePlay-BYZ-J5sC.mjs.map → googlePlay-m1De-qIJ.mjs.map} +1 -1
  71. package/dist/index.cjs +104 -68
  72. package/dist/index.cjs.map +1 -1
  73. package/dist/index.mjs +104 -68
  74. package/dist/index.mjs.map +1 -1
  75. package/dist/{migrate-CQUGbptv.mjs → migrate-4B4RgAjU.mjs} +2 -2
  76. package/dist/{migrate-CQUGbptv.mjs.map → migrate-4B4RgAjU.mjs.map} +1 -1
  77. package/dist/{migrate-bDQzFvBN.cjs → migrate-BYEmpoIg.cjs} +2 -2
  78. package/dist/{migrate-bDQzFvBN.cjs.map → migrate-BYEmpoIg.cjs.map} +1 -1
  79. package/dist/{migrate-GLBZlrlJ.cjs → migrate-DZ2--SaO.cjs} +2 -2
  80. package/dist/{migrate-GLBZlrlJ.cjs.map → migrate-DZ2--SaO.cjs.map} +1 -1
  81. package/dist/{migrate-xHYaeBkd.mjs → migrate-X0Y7fz3N.mjs} +2 -2
  82. package/dist/{migrate-xHYaeBkd.mjs.map → migrate-X0Y7fz3N.mjs.map} +1 -1
  83. package/dist/{publish-SDG1WfYn.cjs → publish-BUvYjiZH.cjs} +2 -2
  84. package/dist/{publish-SDG1WfYn.cjs.map → publish-BUvYjiZH.cjs.map} +1 -1
  85. package/dist/{publish-CSctCNf4.mjs → publish-hhgraEhO.mjs} +2 -2
  86. package/dist/{publish-CSctCNf4.mjs.map → publish-hhgraEhO.mjs.map} +1 -1
  87. package/dist/{resolve-wG49Woex.cjs → resolve-DdFKTx8l.cjs} +3 -3
  88. package/dist/{resolve-wG49Woex.cjs.map → resolve-DdFKTx8l.cjs.map} +1 -1
  89. package/dist/{resolve-CxDqDmCD.mjs → resolve-DotGHvtX.mjs} +3 -3
  90. package/dist/{resolve-CxDqDmCD.mjs.map → resolve-DotGHvtX.mjs.map} +1 -1
  91. package/dist/{rollback-BQgEdr_p.mjs → rollback-9t9G3c_u.mjs} +4 -4
  92. package/dist/{rollback-BQgEdr_p.mjs.map → rollback-9t9G3c_u.mjs.map} +1 -1
  93. package/dist/{rollback-Cw-Z0mWn.cjs → rollback-D4xeUQvG.cjs} +4 -4
  94. package/dist/{rollback-Cw-Z0mWn.cjs.map → rollback-D4xeUQvG.cjs.map} +1 -1
  95. package/dist/{seeds-CIk0l4SC.mjs → seeds-CRkKeyW0.mjs} +19 -6
  96. package/dist/seeds-CRkKeyW0.mjs.map +1 -0
  97. package/dist/{seeds-Dk8YkLkM.cjs → seeds-DbKNcs3o.cjs} +19 -6
  98. package/dist/seeds-DbKNcs3o.cjs.map +1 -0
  99. package/dist/{serverSetup-BCbD8ksJ.cjs → serverSetup-CcWgNtiC.cjs} +93 -21
  100. package/dist/serverSetup-CcWgNtiC.cjs.map +1 -0
  101. package/dist/{serverSetup--O61SRvg.mjs → serverSetup-DlRKRfTi.mjs} +93 -21
  102. package/dist/serverSetup-DlRKRfTi.mjs.map +1 -0
  103. package/dist/{sniffer-2aK7cB2u.cjs → sniffer-B6T6za4n.cjs} +6 -6
  104. package/dist/{sniffer-2aK7cB2u.cjs.map → sniffer-B6T6za4n.cjs.map} +1 -1
  105. package/dist/{sniffer-CABMO-Bh.mjs → sniffer-CakkKKqQ.mjs} +6 -6
  106. package/dist/{sniffer-CABMO-Bh.mjs.map → sniffer-CakkKKqQ.mjs.map} +1 -1
  107. package/dist/{stage-ClKTHQoM.mjs → stage-Mp6qQIoD.mjs} +4 -4
  108. package/dist/{stage-ClKTHQoM.mjs.map → stage-Mp6qQIoD.mjs.map} +1 -1
  109. package/dist/{stage-DrCS0vKD.cjs → stage-W3PUt7ar.cjs} +4 -4
  110. package/dist/{stage-DrCS0vKD.cjs.map → stage-W3PUt7ar.cjs.map} +1 -1
  111. package/dist/{stages-DJrOYLZ-.mjs → stages-Cb9rqRbN.mjs} +16 -2
  112. package/dist/stages-Cb9rqRbN.mjs.map +1 -0
  113. package/dist/{stages-_3RVNG83.cjs → stages-D4SnG5yl.cjs} +16 -2
  114. package/dist/stages-D4SnG5yl.cjs.map +1 -0
  115. package/dist/target/public.cjs +1 -1
  116. package/dist/target/public.mjs +1 -1
  117. package/package.json +15 -15
  118. package/dist/seeds-CIk0l4SC.mjs.map +0 -1
  119. package/dist/seeds-Dk8YkLkM.cjs.map +0 -1
  120. package/dist/serverSetup--O61SRvg.mjs.map +0 -1
  121. package/dist/serverSetup-BCbD8ksJ.cjs.map +0 -1
  122. package/dist/stages-DJrOYLZ-.mjs.map +0 -1
  123. package/dist/stages-_3RVNG83.cjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -3,25 +3,25 @@ import { n as __require, t as __exportAll } from "./rolldown-runtime-BhDjJH2R.mj
3
3
  import { n as isGkmError, t as GkmError } from "./errors-D8Gwp5kU.mjs";
4
4
  import { r as DEFAULT_TIMEOUT_MS, t as CommandFailed } from "./run-BJLIerMM.mjs";
5
5
  import { a as getDokployCredentials, d as removeGoDaddyCredentials, f as storeDokployCredentials, i as getCredentialsPath, l as readCredentials, m as storeHostingerToken, o as getDokployRegistryId, p as storeGoDaddyToken, s as getDokployToken, u as removeDokployCredentials } from "./credentials-B5N5yKk6.mjs";
6
- import { C as dockerCompose, S as sshTarget, _ as parseDigests, b as dockerHost, c as edgeRef, f as derivedCredentials, h as EDGE_PROJECT, i as ComposePushNeedsBuild, l as removeEdgeRoutes, m as stackPlan, o as stackOverrideFile, p as stackDir, r as ComposePinNeedsPull, t as composeTarget, u as composeProject, v as pinnedRef, w as projectNetwork, y as composeServer } from "./compose-CDC2bCme.mjs";
6
+ import { C as dockerCompose, S as sshTarget, _ as parseDigests, b as dockerHost, c as edgeRef, f as derivedCredentials, h as EDGE_PROJECT, i as ComposePushNeedsBuild, l as removeEdgeRoutes, m as stackPlan, o as stackOverrideFile, p as stackDir, r as ComposePinNeedsPull, t as composeTarget, u as composeProject, v as pinnedRef, w as projectNetwork, y as composeServer } from "./compose-BEiJWrB7.mjs";
7
7
  import { A as InvalidStages, F as stageProblems, P as deployedProblems, R as stageSampleRate, a as allConstructGlobs, d as getAppGkmConfig, j as TEST_STAGE, u as getAppBuildOrder } from "./workspace-D1QbNd55.mjs";
8
- import { b as runTime, d as BACKUPS_URL_KEY, f as RUNNER_PATH, g as backupDatabases, u as BACKUPS_SERVICE, v as backupFile, x as stageBackups, y as backupsPrefix } from "./dns-pzftumxg.mjs";
9
- import { $t as isUnder, An as appTelemetry, At as isPortAvailable, Bn as fakeKey, Bt as maskPassword, Ct as cacheBackendFor, Dn as TELEMETRY_CONTAINER, Dt as createCredentialsPreload, G as CronGenerator, Gn as LOCAL_LOGS_EMAIL, H as workerBundleName, Hn as portsOf, Ht as toEmbeddableSecrets, It as secretsStoreFor, L as dockerCommand, Mn as scopeTelemetryEnv, Mt as loadPortState, Nn as surfaceClientTraced, Nt as loadSecretsForApp, Ot as createEntryWrapper, Pn as telemetryOf, Pt as prepareEntryCredentials, Q as assertDevServicesFlag, Tt as providerOf, U as workerEntryDir, Ut as withCustomSecret, V as WorkerGenerator, W as QueueGenerator, Wn as primaryPortKey, Xt as imageBuildCredentials, Zt as isImageBuild, a as dnsResources, an as postgresDatabaseNames, bt as pgClient, c as describeActor, dt as constructGlobs, en as workerUnits, fn as readLocalCredentials, ft as derivedContainers, gn as projectKey, gt as forgetState, ht as LOCAL_CA_PATH, jt as loadEnvFiles, kt as findAvailablePort, lt as FAKE_ENV, mn as getKeyPath, pn as FileSecretsStore, pt as reconcileWorkspace, sn as quoteIdentifier, ut as backendsOf$1, wt as eventsBackendFor, xt as CLUSTER_DATABASE, zn as describeServices } from "./seeds-CIk0l4SC.mjs";
8
+ import { b as runTime, d as BACKUPS_URL_KEY, f as RUNNER_PATH, g as backupDatabases, u as BACKUPS_SERVICE, v as backupFile, x as stageBackups, y as backupsPrefix } from "./dns-CsApfzLc.mjs";
9
+ import { $t as isUnder, An as appTelemetry, At as isPortAvailable, Bn as fakeKey, Bt as maskPassword, Ct as cacheBackendFor, Dn as TELEMETRY_CONTAINER, Dt as createCredentialsPreload, G as CronGenerator, Gn as LOCAL_LOGS_EMAIL, H as workerBundleName, Hn as portsOf, Ht as toEmbeddableSecrets, It as secretsStoreFor, L as dockerCommand, Mn as scopeTelemetryEnv, Mt as loadPortState, Nn as surfaceClientTraced, Nt as loadSecretsForApp, Ot as createEntryWrapper, Pn as telemetryOf, Pt as prepareEntryCredentials, Q as assertDevServicesFlag, Tt as providerOf, U as workerEntryDir, Ut as withCustomSecret, V as WorkerGenerator, W as QueueGenerator, Wn as primaryPortKey, Xt as imageBuildCredentials, Zt as isImageBuild, a as dnsResources, an as postgresDatabaseNames, bt as pgClient, c as describeActor, dt as constructGlobs, en as workerUnits, fn as readLocalCredentials, ft as derivedContainers, gn as projectKey, gt as forgetState, ht as LOCAL_CA_PATH, jt as loadEnvFiles, kt as findAvailablePort, lt as FAKE_ENV, mn as getKeyPath, pn as FileSecretsStore, pt as reconcileWorkspace, sn as quoteIdentifier, ut as backendsOf$1, wt as eventsBackendFor, xt as CLUSTER_DATABASE, zn as describeServices } from "./seeds-CRkKeyW0.mjs";
10
10
  import { t as appKey } from "./derive-B4vDpzgP.mjs";
11
11
  import { l as isCacheBackend, n as assertTestCredentials, t as SubscriberGenerator } from "./SubscriberGenerator-DHnIYwUU.mjs";
12
12
  import { n as deployIdentity } from "./identity-CBXr4wNi.mjs";
13
13
  import { a as startTelemetryCode, c as parseTelemetryFlag, i as routeTelemetry, n as runtimeFor, o as telemetryFor, r as mountRequestSpansCode, s as writeTelemetryModule, t as EndpointGenerator } from "./EndpointGenerator-CvLX8bpx.mjs";
14
14
  import { d as ConstructGenerator, i as discover, r as consumedBy, u as withOwningTsconfigJsx } from "./discover-Ca8U75dl.mjs";
15
15
  import { ConfigNotFound, NotABackendApp, NotInAnApp, loadAppConfig, loadConfig, loadWorkspaceConfig, loadWorkspaceSettings, parseModuleConfig } from "./config.mjs";
16
- import { d as awsEndpoint, f as awsProvisioningCredentials, t as deploy$1, u as awsClientConfig } from "./deploy-DLq9-m6H.mjs";
16
+ import { d as awsEndpoint, f as awsProvisioningCredentials, t as deploy$1, u as awsClientConfig } from "./deploy-Cyx5fSb7.mjs";
17
17
  import { generateOpenApi, openapiCommand, resolveOpenApiConfig } from "./openapi.mjs";
18
18
  import { a as describeHolder, c as withAppPorts, i as assignAppPorts, o as describeMove, r as appTag, s as holderOf, t as APP_TAG_ENV } from "./appPorts-BoXMwolc.mjs";
19
19
  import { n as driversFor, r as eventsBackendsIn, t as cacheBackendsIn } from "./drivers-D11JHxrD.mjs";
20
20
  import { n as withCompute, r as withRoutes, t as manifestModule } from "./emit-C1e8qD08.mjs";
21
21
  import { t as LocalSandbox } from "./local-BwC2v2Y8.mjs";
22
- import { S as createStateStore, k as keyFingerprint, n as sniffAppEnvironment, o as DokployApi } from "./sniffer-CABMO-Bh.mjs";
22
+ import { S as createStateStore, k as keyFingerprint, n as sniffAppEnvironment, o as DokployApi } from "./sniffer-CakkKKqQ.mjs";
23
23
  import { o as loadCredentialSchemas, t as CredentialsInvalid } from "./credentialSchemas-Cf5Pf8VE.mjs";
24
- import { t as LocalStateStore } from "./LocalStateStore-BrAX5yy7.mjs";
24
+ import { t as LocalStateStore } from "./LocalStateStore-C1rUUvBr.mjs";
25
25
  import { a as getExecCommand, c as validateProjectName, i as findWorkspaceRoot, n as detectPackageManager$1, o as getInstallCommand, r as findWorkspacePackages, s as getRunCommand, t as checkDirectoryExists } from "./utils-D_fxUqvU.mjs";
26
26
  import { a as writeTestHarness, i as TEST_MANIFEST_ENV, n as TEST_READY_FILE, t as TEST_READY_ENV } from "./ready-CIt5SOtg.mjs";
27
27
  import { createRequire } from "node:module";
@@ -51,7 +51,7 @@ import crypto from "crypto";
51
51
  import { Function } from "@geekmidas/constructs/functions";
52
52
  import { Topic } from "@geekmidas/constructs/topic";
53
53
  //#region package.json
54
- var version = "10.0.0-alpha.113";
54
+ var version = "10.0.0-alpha.115";
55
55
  //#endregion
56
56
  //#region src/prompt.ts
57
57
  /**
@@ -134,7 +134,7 @@ const logger$8 = console;
134
134
  * Validate Dokploy token by making a test API call
135
135
  */
136
136
  async function validateDokployToken(endpoint, token) {
137
- const { DokployApi } = await import("./sniffer-CABMO-Bh.mjs").then((n) => n.c);
137
+ const { DokployApi } = await import("./sniffer-CakkKKqQ.mjs").then((n) => n.c);
138
138
  return new DokployApi({
139
139
  baseUrl: endpoint,
140
140
  token
@@ -2174,7 +2174,7 @@ async function execCommand(commandArgs, options = {}, stageDeps) {
2174
2174
  const cwd = options.cwd ?? process.cwd();
2175
2175
  if (!commandArgs[0]) throw new NoCommandSpecified();
2176
2176
  if (options.stage && !isImageBuild()) {
2177
- const { execOnStage } = await import("./stage-ClKTHQoM.mjs").then((n) => n.n);
2177
+ const { execOnStage } = await import("./stage-Mp6qQIoD.mjs").then((n) => n.n);
2178
2178
  const { loadWorkspaceConfig } = await import("./config.mjs");
2179
2179
  const { workspace } = await loadWorkspaceConfig(cwd);
2180
2180
  if (options.stage !== workspace.stages.local) {
@@ -2747,9 +2747,9 @@ async function workspaceDevCommand(configured, options) {
2747
2747
  for (const { id, port } of fakes) logger$5.log(`🎭 ${id} fake: http://localhost:${port}`);
2748
2748
  logger$5.log(options.migrate || options.seed ? "🗄️ Migrating the databases" : "🗄️ Checking for pending migrations");
2749
2749
  if (options.migrate || options.seed) {
2750
- const { prepareDevDatabases } = await import("./migrate-xHYaeBkd.mjs");
2750
+ const { prepareDevDatabases } = await import("./migrate-X0Y7fz3N.mjs");
2751
2751
  await prepareDevDatabases(workspace, reconciled.env, { seed: !!options.seed });
2752
- } else await import("./migrate-xHYaeBkd.mjs").then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2752
+ } else await import("./migrate-X0Y7fz3N.mjs").then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2753
2753
  logger$5.log(`⚠️ Could not check for pending migrations: ${error instanceof Error ? error.message : String(error)}`);
2754
2754
  });
2755
2755
  const appUrls = {};
@@ -3825,7 +3825,7 @@ async function buildApp(input) {
3825
3825
  ...production,
3826
3826
  ...telemetry ? { telemetry } : {}
3827
3827
  });
3828
- const { bundleServer } = await import("./bundler-DrySVbXF.mjs");
3828
+ const { bundleServer } = await import("./bundler-B2ysiCTa.mjs");
3829
3829
  await bundleServer({
3830
3830
  entryPoint,
3831
3831
  outputDir: join(outputDir, "dist"),
@@ -4024,7 +4024,7 @@ async function buildWorkers(input) {
4024
4024
  });
4025
4025
  logger$4.log(`Generated worker ${worker.id}: ${crons.length} crons, ${queues.length} queues, ${subscribers.length} subscribers`);
4026
4026
  if (!input.bundle) continue;
4027
- const { bundleServer } = await import("./bundler-DrySVbXF.mjs");
4027
+ const { bundleServer } = await import("./bundler-B2ysiCTa.mjs");
4028
4028
  const outfile = workerBundleName(worker.id);
4029
4029
  await bundleServer({
4030
4030
  entryPoint,
@@ -4110,7 +4110,7 @@ async function buildForTarget(target, context, appRoot, workspaceRoot, endpointG
4110
4110
  let masterKey;
4111
4111
  if (context.production?.bundle && !skipBundle) {
4112
4112
  logger$4.log(`\n📦 Bundling production server...`);
4113
- const { bundleServer } = await import("./bundler-DrySVbXF.mjs");
4113
+ const { bundleServer } = await import("./bundler-B2ysiCTa.mjs");
4114
4114
  const allConstructs = [
4115
4115
  ...endpoints.map((e) => e.construct),
4116
4116
  ...functions.map((f) => f.construct),
@@ -5833,6 +5833,7 @@ const DEPENDENCY_VERSIONS = {
5833
5833
  "better-auth": "~1.7.6",
5834
5834
  hono: "~4.13.9",
5835
5835
  "@hono/node-server": "~1.19.17",
5836
+ "@hono/node-ws": "~1.3.1",
5836
5837
  kysely: "~0.29.6",
5837
5838
  pg: "~8.23.0",
5838
5839
  pino: "~10.3.1",
@@ -5943,25 +5944,25 @@ function loadPackageJson() {
5943
5944
  * Run: pnpm --filter @geekmidas/cli sync-versions
5944
5945
  */
5945
5946
  const GEEKMIDAS_VERSIONS = {
5946
- "@geekmidas/audit": "~10.0.0-alpha.113",
5947
- "@geekmidas/auth": "~10.0.0-alpha.113",
5948
- "@geekmidas/cache": "~10.0.0-alpha.113",
5949
- "@geekmidas/client": "~10.0.0-alpha.113",
5950
- "@geekmidas/cloud": "~10.0.0-alpha.113",
5951
- "@geekmidas/constructs": "~10.0.0-alpha.113",
5952
- "@geekmidas/db": "~10.0.0-alpha.113",
5953
- "@geekmidas/emailkit": "~10.0.0-alpha.113",
5954
- "@geekmidas/envkit": "~10.0.0-alpha.113",
5955
- "@geekmidas/errors": "~10.0.0-alpha.113",
5956
- "@geekmidas/events": "~10.0.0-alpha.113",
5957
- "@geekmidas/logger": "~10.0.0-alpha.113",
5958
- "@geekmidas/manifest": "~10.0.0-alpha.113",
5959
- "@geekmidas/rate-limit": "~10.0.0-alpha.113",
5960
- "@geekmidas/schema": "~10.0.0-alpha.113",
5961
- "@geekmidas/services": "~10.0.0-alpha.113",
5962
- "@geekmidas/storage": "~10.0.0-alpha.113",
5963
- "@geekmidas/telescope": "~10.0.0-alpha.113",
5964
- "@geekmidas/testkit": "~10.0.0-alpha.113",
5947
+ "@geekmidas/audit": "~10.0.0-alpha.115",
5948
+ "@geekmidas/auth": "~10.0.0-alpha.115",
5949
+ "@geekmidas/cache": "~10.0.0-alpha.115",
5950
+ "@geekmidas/client": "~10.0.0-alpha.115",
5951
+ "@geekmidas/cloud": "~10.0.0-alpha.115",
5952
+ "@geekmidas/constructs": "~10.0.0-alpha.115",
5953
+ "@geekmidas/db": "~10.0.0-alpha.115",
5954
+ "@geekmidas/emailkit": "~10.0.0-alpha.115",
5955
+ "@geekmidas/envkit": "~10.0.0-alpha.115",
5956
+ "@geekmidas/errors": "~10.0.0-alpha.115",
5957
+ "@geekmidas/events": "~10.0.0-alpha.115",
5958
+ "@geekmidas/logger": "~10.0.0-alpha.115",
5959
+ "@geekmidas/manifest": "~10.0.0-alpha.115",
5960
+ "@geekmidas/rate-limit": "~10.0.0-alpha.115",
5961
+ "@geekmidas/schema": "~10.0.0-alpha.115",
5962
+ "@geekmidas/services": "~10.0.0-alpha.115",
5963
+ "@geekmidas/storage": "~10.0.0-alpha.115",
5964
+ "@geekmidas/telescope": "~10.0.0-alpha.115",
5965
+ "@geekmidas/testkit": "~10.0.0-alpha.115",
5965
5966
  "@geekmidas/cli": `~${loadPackageJson().version}`
5966
5967
  };
5967
5968
  //#endregion
@@ -7154,7 +7155,7 @@ const COMMIT = /^[0-9a-f]{40}$/;
7154
7155
  * The `uses:` value for the stages action, with a comment saying which CLI
7155
7156
  * release the pinned commit is.
7156
7157
  */
7157
- function stagesActionUses(commit = "18d6b7860652d3db231d361933ee2d5ec10f0941", version = cliVersion()) {
7158
+ function stagesActionUses(commit = "f1cb336edfa0ad66598783740950d96f53f1108c", version = cliVersion()) {
7158
7159
  return commit && COMMIT.test(commit) ? `${STAGES_ACTION}@${commit} # @geekmidas/cli ${version}` : `${STAGES_ACTION}@main # pin to a commit SHA: see the action's README`;
7159
7160
  }
7160
7161
  //#endregion
@@ -7406,6 +7407,7 @@ function stagesJob(options) {
7406
7407
  has-build: \${{ steps.stages.outputs.has-build }}
7407
7408
  has-deploy: \${{ steps.stages.outputs.has-deploy }}
7408
7409
  aws-region: \${{ steps.stages.outputs.aws-region }}
7410
+ registry: \${{ steps.stages.outputs.registry }}
7409
7411
  steps:
7410
7412
  - uses: actions/checkout@v4
7411
7413
 
@@ -7424,17 +7426,25 @@ ${pm.setup}
7424
7426
  `;
7425
7427
  }
7426
7428
  /**
7427
- * The registry login a compose build pushes with: GitHub's own token on
7428
- * ghcr.io, otherwise a username variable and a password secret.
7429
+ * The registry login a compose build pushes with, and a deploy pulls with.
7430
+ * The host is `deploy.registry`'s, read from gkm.config.ts by the stages
7431
+ * job at run time — never written here, so the workflow follows the config:
7432
+ * GitHub's own token on ghcr.io, otherwise the stage environment's
7433
+ * `REGISTRY_USERNAME` variable and `REGISTRY_PASSWORD` secret.
7429
7434
  */
7430
- function registryLogin(registry) {
7431
- const host = registry.split("/")[0];
7432
- const ghcr = host === "ghcr.io";
7433
- return ` - uses: docker/login-action@v3
7435
+ function registryLogin() {
7436
+ const ghcr = "needs.stages.outputs.registry == 'ghcr.io'";
7437
+ return ` # deploy.registry in gkm.config.ts: GitHub's registry with this
7438
+ # workflow's own token (the job's \`packages\` permission decides push
7439
+ # or pull), any other with the stage's REGISTRY_USERNAME variable and
7440
+ # REGISTRY_PASSWORD secret.
7441
+ - name: Log in to the registry
7442
+ if: needs.stages.outputs.registry != ''
7443
+ uses: docker/login-action@v3
7434
7444
  with:
7435
- registry: ${host}
7436
- username: ${ghcr ? "${{ github.actor }}" : "${{ vars.REGISTRY_USERNAME }}"}
7437
- password: ${ghcr ? "${{ secrets.GITHUB_TOKEN }}" : "${{ secrets.REGISTRY_PASSWORD }}"}
7445
+ registry: \${{ needs.stages.outputs.registry }}
7446
+ username: \${{ ${ghcr} && github.actor || vars.REGISTRY_USERNAME }}
7447
+ password: \${{ ${ghcr} && secrets.GITHUB_TOKEN || secrets.REGISTRY_PASSWORD }}
7438
7448
  `;
7439
7449
  }
7440
7450
  /**
@@ -7453,8 +7463,14 @@ function registryLogin(registry) {
7453
7463
  */
7454
7464
  function composeDeploy(options) {
7455
7465
  const pm = tooling(options);
7456
- const registry = options.registry ?? "";
7457
7466
  return `${deployHeader(true)}
7467
+ # A push to main builds main's newest commit: a later push cancels an earlier
7468
+ # push's run, so several merges in a row build once. A release or a manual
7469
+ # run shares no group (its run id is in the name), and is never cancelled.
7470
+ concurrency:
7471
+ group: \${{ github.workflow }}-\${{ github.event_name == 'push' && github.ref || github.run_id }}
7472
+ cancel-in-progress: \${{ github.event_name == 'push' }}
7473
+
7458
7474
  jobs:
7459
7475
  ${stagesJob(options)}
7460
7476
  build:
@@ -7473,13 +7489,22 @@ ${stagesJob(options)}
7473
7489
  packages: write
7474
7490
  id-token: write
7475
7491
  steps:
7492
+ # The runner's preinstalled toolchains, none of them used here: with
7493
+ # them, building every image of a workspace runs out of disk.
7494
+ - name: Free disk space
7495
+ run: |
7496
+ sudo rm -rf /usr/local/lib/android /usr/share/dotnet /opt/ghc \\
7497
+ /usr/local/.ghcup /opt/hostedtoolcache/CodeQL
7498
+ sudo docker image prune --all --force
7499
+ df -h /
7500
+
7476
7501
  - uses: actions/checkout@v4
7477
7502
 
7478
7503
  ${pm.setup}
7479
7504
  - name: Install
7480
7505
  run: ${pm.install}
7481
7506
 
7482
- ${registryLogin(registry)}
7507
+ ${registryLogin()}
7483
7508
  # A site's public URLs are built into it, so the build reads the stage's
7484
7509
  # secrets store. With secrets.store on S3, SSM or Secrets Manager the job
7485
7510
  # assumes the stage's role (AWS_ROLE_ARN, set by gkm deploy:github);
@@ -7505,6 +7530,7 @@ ${registryLogin(registry)}
7505
7530
  with:
7506
7531
  name: digests-\${{ matrix.stage }}
7507
7532
  path: digests.json
7533
+ if-no-files-found: error
7508
7534
  retention-days: 90
7509
7535
 
7510
7536
  deploy:
@@ -7538,8 +7564,14 @@ ${registryLogin(registry)}
7538
7564
  workflow_dispatch) ref="\${REF:-$SHA}" ;;
7539
7565
  *) ref="$SHA" ;;
7540
7566
  esac
7541
- sha=$(gh api "repos/$REPO/commits/$ref" --jq .sha)
7542
- echo "Deploying $sha"
7567
+ case "$ref" in
7568
+ ''|-*) echo "::error::Not a tag or commit: '$ref'"; exit 1 ;;
7569
+ esac
7570
+ if ! sha=$(gh api "repos/$REPO/commits/$ref" --jq .sha); then
7571
+ echo "::error::'$ref' is not a tag, branch or commit in this repository"
7572
+ exit 1
7573
+ fi
7574
+ echo "Deploying $ref = $sha"
7543
7575
  echo "sha=$sha" >> "$GITHUB_OUTPUT"
7544
7576
  env:
7545
7577
  GH_TOKEN: \${{ github.token }}
@@ -7560,7 +7592,7 @@ ${pm.setup}
7560
7592
 
7561
7593
  # The server's engine pulls with the login docker sends from here: it
7562
7594
  # holds none of its own.
7563
- ${registryLogin(registry)}
7595
+ ${registryLogin()}
7564
7596
  # The stage's secrets and deploy state are read and written here, with
7565
7597
  # the stage's role (AWS_ROLE_ARN, set by gkm deploy:github). With the
7566
7598
  # default 'file' secrets store there is no role, and no secrets file in
@@ -10669,7 +10701,10 @@ function generatePackageJson(options, template) {
10669
10701
  const devDependencies = { ...template.devDependencies };
10670
10702
  const scripts = { ...template.scripts };
10671
10703
  if (options.loggerType === "pino") dependencies.pino = DEPENDENCY_VERSIONS.pino;
10672
- if (telescope) dependencies["@geekmidas/telescope"] = GEEKMIDAS_VERSIONS["@geekmidas/telescope"];
10704
+ if (telescope) {
10705
+ dependencies["@geekmidas/telescope"] = GEEKMIDAS_VERSIONS["@geekmidas/telescope"];
10706
+ dependencies["@hono/node-ws"] = DEPENDENCY_VERSIONS["@hono/node-ws"];
10707
+ }
10673
10708
  const declares = !monorepo;
10674
10709
  if (declares && (database || uploads || cache || mail)) dependencies["@geekmidas/manifest"] = GEEKMIDAS_VERSIONS["@geekmidas/manifest"];
10675
10710
  if (declares && uploads) dependencies["@geekmidas/storage"] = GEEKMIDAS_VERSIONS["@geekmidas/storage"];
@@ -13040,6 +13075,7 @@ export default function RootLayout({
13040
13075
  `;
13041
13076
  const pages = app.key === "admin" ? adminPages() : webPages(options);
13042
13077
  const gitignore = `.next/
13078
+ next-env.d.ts
13043
13079
  node_modules/
13044
13080
  .env.local
13045
13081
  *.log
@@ -15990,7 +16026,7 @@ function testDatabases(reconciled) {
15990
16026
  * starts without the reference data the app needs.
15991
16027
  */
15992
16028
  async function migrateTestStage(workspace, env) {
15993
- const { migrateAndSeed } = await import("./migrate-xHYaeBkd.mjs");
16029
+ const { migrateAndSeed } = await import("./migrate-X0Y7fz3N.mjs");
15994
16030
  const { discover } = await import("./discover-Ca8U75dl.mjs").then((n) => n.a);
15995
16031
  const sources = {};
15996
16032
  const manifest = await discover({
@@ -16414,7 +16450,7 @@ program.command("eas:sync").description("Set up a mobile app's EAS project for a
16414
16450
  try {
16415
16451
  const globalOptions = program.opts();
16416
16452
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16417
- const { easSync } = await import("./eas-DEpwISrQ.mjs");
16453
+ const { easSync } = await import("./eas-CTfRmndW.mjs");
16418
16454
  await easSync(options);
16419
16455
  } catch (error) {
16420
16456
  exitWithError(error);
@@ -16424,7 +16460,7 @@ program.command("publish").description("Ship a mobile app for a deployed stage:
16424
16460
  try {
16425
16461
  const globalOptions = program.opts();
16426
16462
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16427
- const { publish, PublishModeConflict } = await import("./publish-CSctCNf4.mjs");
16463
+ const { publish, PublishModeConflict } = await import("./publish-hhgraEhO.mjs");
16428
16464
  if (options.build && options.update) throw new PublishModeConflict();
16429
16465
  const { build, update, ...rest } = options;
16430
16466
  await publish({
@@ -16440,7 +16476,7 @@ program.command("deploy:google-play").description("Let EAS Submit publish a mobi
16440
16476
  try {
16441
16477
  const globalOptions = program.opts();
16442
16478
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16443
- const { deployGooglePlay } = await import("./googlePlay-BYZ-J5sC.mjs");
16479
+ const { deployGooglePlay } = await import("./googlePlay-m1De-qIJ.mjs");
16444
16480
  await deployGooglePlay(options);
16445
16481
  } catch (error) {
16446
16482
  exitWithError(error);
@@ -16462,7 +16498,7 @@ program.command("migrate").description("Apply each database construct's migratio
16462
16498
  try {
16463
16499
  const globalOptions = program.opts();
16464
16500
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16465
- const { migrateCommand } = await import("./migrate-xHYaeBkd.mjs");
16501
+ const { migrateCommand } = await import("./migrate-X0Y7fz3N.mjs");
16466
16502
  await migrateCommand({
16467
16503
  ...options,
16468
16504
  ...construct ? { construct } : {}
@@ -16475,7 +16511,7 @@ program.command("seed").description("Migrate, then run each database construct's
16475
16511
  try {
16476
16512
  const globalOptions = program.opts();
16477
16513
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16478
- const { seedCommand } = await import("./migrate-xHYaeBkd.mjs");
16514
+ const { seedCommand } = await import("./migrate-X0Y7fz3N.mjs");
16479
16515
  await seedCommand({
16480
16516
  ...options,
16481
16517
  ...construct ? { construct } : {}
@@ -16488,7 +16524,7 @@ program.command("migration").description("Write a construct's next migration: an
16488
16524
  try {
16489
16525
  const globalOptions = program.opts();
16490
16526
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16491
- const { migrationCommand } = await import("./migrate-xHYaeBkd.mjs");
16527
+ const { migrationCommand } = await import("./migrate-X0Y7fz3N.mjs");
16492
16528
  await migrationCommand({
16493
16529
  construct,
16494
16530
  ...name ? { name } : {}
@@ -16588,7 +16624,7 @@ program.command("secrets:add").description("Build the keys a stage must be given
16588
16624
  try {
16589
16625
  const globalOptions = program.opts();
16590
16626
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16591
- const { secretsAddCommand } = await import("./add-DJE7zqJ4.mjs");
16627
+ const { secretsAddCommand } = await import("./add-DXdJjp0b.mjs");
16592
16628
  await secretsAddCommand(options);
16593
16629
  } catch (error) {
16594
16630
  exitWithError(error);
@@ -16598,7 +16634,7 @@ program.command("encryption:rotate").description("Add a new current key to an En
16598
16634
  try {
16599
16635
  const globalOptions = program.opts();
16600
16636
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16601
- const { encryptionRotateCommand } = await import("./encryption-DJv_jEXi.mjs");
16637
+ const { encryptionRotateCommand } = await import("./encryption-BpTPmd7h.mjs");
16602
16638
  await encryptionRotateCommand(construct, options);
16603
16639
  } catch (error) {
16604
16640
  exitWithError(error);
@@ -16608,7 +16644,7 @@ program.command("encryption:retire").description("Remove an old key from an Encr
16608
16644
  try {
16609
16645
  const globalOptions = program.opts();
16610
16646
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16611
- const { encryptionRetireCommand } = await import("./encryption-DJv_jEXi.mjs");
16647
+ const { encryptionRetireCommand } = await import("./encryption-BpTPmd7h.mjs");
16612
16648
  await encryptionRetireCommand(construct, key, options);
16613
16649
  } catch (error) {
16614
16650
  exitWithError(error);
@@ -16647,7 +16683,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
16647
16683
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16648
16684
  const { loadWorkspaceConfig } = await import("./config.mjs");
16649
16685
  const { reconcileMissingSecrets } = await import("./reconcile--I7V4Klj.mjs");
16650
- const { secretsStoreFor } = await import("./seeds-CIk0l4SC.mjs").then((n) => n.Rt);
16686
+ const { secretsStoreFor } = await import("./seeds-CRkKeyW0.mjs").then((n) => n.Rt);
16651
16687
  const { workspace } = await loadWorkspaceConfig();
16652
16688
  const stage = options.stage ?? workspace.stages.local;
16653
16689
  const store = await secretsStoreFor(workspace, stage);
@@ -16656,7 +16692,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
16656
16692
  console.error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
16657
16693
  process.exit(1);
16658
16694
  }
16659
- const { derivedContainers } = await import("./seeds-CIk0l4SC.mjs").then((n) => n.mt);
16695
+ const { derivedContainers } = await import("./seeds-CRkKeyW0.mjs").then((n) => n.mt);
16660
16696
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers(workspace, stage));
16661
16697
  if (!result) {
16662
16698
  console.log(`\n✓ Secrets for stage "${stage}" are up-to-date`);
@@ -16673,14 +16709,14 @@ program.command("secrets:migrate").description("Copy a deployed stage's secrets
16673
16709
  try {
16674
16710
  const globalOptions = program.opts();
16675
16711
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16676
- const { secretsMigrateCommand } = await import("./migrate-CQUGbptv.mjs");
16712
+ const { secretsMigrateCommand } = await import("./migrate-4B4RgAjU.mjs");
16677
16713
  await secretsMigrateCommand(options);
16678
16714
  } catch (error) {
16679
16715
  exitWithError(error);
16680
16716
  }
16681
16717
  });
16682
16718
  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", "Server targets: run the dev service (MinIO, Mailpit) for every bucket and mail the stage doesn't account for. Not production-grade").option("--skip-dns", "Compose: neither write the public hosts' DNS records nor check they point at GKM_SERVER_IPV4 (a CDN or proxy in front, or records written elsewhere)").option("--rotate-keys", "Deployed stage: each provider issues its runtime keys a successor (the old one is deleted by the next deploy)").option("--retire-old-keys", "Deployed stage: delete a rotated-out key now instead of on the next deploy").action(async (options) => {
16683
- const { deployCli } = await import("./cli-DDY3jfTt.mjs");
16719
+ const { deployCli } = await import("./cli-H0uB_znq.mjs");
16684
16720
  const globalOptions = program.opts();
16685
16721
  const code = await deployCli({
16686
16722
  cwd: resolve(globalOptions.cwd ?? process.cwd()),
@@ -16700,7 +16736,7 @@ program.command("deploy").description("Deploy a stage through its target").optio
16700
16736
  });
16701
16737
  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) => {
16702
16738
  try {
16703
- const { rollbackStage } = await import("./rollback-BQgEdr_p.mjs").then((n) => n.a);
16739
+ const { rollbackStage } = await import("./rollback-9t9G3c_u.mjs").then((n) => n.a);
16704
16740
  const { terminalCredentials } = await import("./terminal-CybB-cjk.mjs");
16705
16741
  const globalOptions = program.opts();
16706
16742
  await rollbackStage({
@@ -16715,11 +16751,11 @@ program.command("deploy:rollback").description("Put a stage's app back on its pr
16715
16751
  exitWithError(error);
16716
16752
  }
16717
16753
  });
16718
- program.command("compose:server").description("Set up a stage's server for compose deploys: harden it (SSH keys only, no root login, firewall, security updates, fail2ban), install Docker, create the deploy user, and give its key to GitHub").requiredOption("--stage <stage>", "A deployed stage from gkm.config.ts").option("--admin <user>", "The sudo user you log in to the server as — never root (asked when absent)").option("--key-file <path>", "The deploy key pair (default: ~/.ssh/gkm-<project>-<stage>)").option("--repo <owner/name>", "GitHub repository (default: this one)").option("--no-github", "Leave the GitHub environment's key and host alone").option("--yes", "Set the server up without asking first").option("--dry-run", "Print the plan and the script; connect to nothing").action(async (options) => {
16754
+ program.command("compose:server").description("Set up a stage's server for compose deploys: harden it (SSH keys only, no root login, firewall, security updates, fail2ban), install Docker, create the deploy user, and give its key to GitHub").requiredOption("--stage <stage>", "A deployed stage from gkm.config.ts").option("--admin <user>", "The sudo user you log in to the server as — never root (default: ssh's own user for the host)").option("--identity <path>", "The SSH key the admin logs in with (default: ssh's own choice)").option("--key-file <path>", "The deploy key pair (default: ~/.ssh/gkm-<project>-<stage>)").option("--repo <owner/name>", "GitHub repository (default: this one)").option("--no-github", "Leave the GitHub environment's key and host alone").option("--yes", "Set the server up without asking first").option("--dry-run", "Print the plan and the script; connect to nothing").action(async (options) => {
16719
16755
  try {
16720
16756
  const globalOptions = program.opts();
16721
16757
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16722
- const { composeServerCommand } = await import("./serverSetup--O61SRvg.mjs");
16758
+ const { composeServerCommand } = await import("./serverSetup-DlRKRfTi.mjs");
16723
16759
  await composeServerCommand(options);
16724
16760
  } catch (error) {
16725
16761
  exitWithError(error);
@@ -16744,7 +16780,7 @@ program.command("deploy:github").description("Let GitHub Actions deploy a stage:
16744
16780
  try {
16745
16781
  const globalOptions = program.opts();
16746
16782
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16747
- const { deployGithubCommand } = await import("./github-BMakI-k3.mjs");
16783
+ const { deployGithubCommand } = await import("./github-tWAGuR9i.mjs");
16748
16784
  await deployGithubCommand(options);
16749
16785
  } catch (error) {
16750
16786
  exitWithError(error);
@@ -16754,7 +16790,7 @@ program.command("stages").description("The workspace's stages from gkm.config.ts
16754
16790
  try {
16755
16791
  const globalOptions = program.opts();
16756
16792
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16757
- const { stagesCommand } = await import("./stages-DJrOYLZ-.mjs");
16793
+ const { stagesCommand } = await import("./stages-Cb9rqRbN.mjs");
16758
16794
  await stagesCommand(options);
16759
16795
  } catch (error) {
16760
16796
  exitWithError(error);