@geekmidas/cli 10.0.0-alpha.83 → 10.0.0-alpha.84

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 (167) hide show
  1. package/dist/{EndpointGenerator-DtnIGafh.mjs → EndpointGenerator-CVc6Oi1Y.mjs} +185 -82
  2. package/dist/EndpointGenerator-CVc6Oi1Y.mjs.map +1 -0
  3. package/dist/{EndpointGenerator-cKlnllIu.cjs → EndpointGenerator-CwLjBCFE.cjs} +203 -82
  4. package/dist/EndpointGenerator-CwLjBCFE.cjs.map +1 -0
  5. package/dist/{LegacyStateStore-DFO3aJgs.mjs → LegacyStateStore-CTsUFLNQ.mjs} +2 -2
  6. package/dist/{LegacyStateStore-DFO3aJgs.mjs.map → LegacyStateStore-CTsUFLNQ.mjs.map} +1 -1
  7. package/dist/{LegacyStateStore-iUWVxrXU.cjs → LegacyStateStore-EDT2TUSe.cjs} +2 -2
  8. package/dist/{LegacyStateStore-iUWVxrXU.cjs.map → LegacyStateStore-EDT2TUSe.cjs.map} +1 -1
  9. package/dist/{LocalStateStore-BsFHdSeA.cjs → LocalStateStore-CdpzTvPn.cjs} +2 -2
  10. package/dist/{LocalStateStore-BsFHdSeA.cjs.map → LocalStateStore-CdpzTvPn.cjs.map} +1 -1
  11. package/dist/{LocalStateStore-DIfuh0Z1.mjs → LocalStateStore-D1VfxRuK.mjs} +2 -2
  12. package/dist/{LocalStateStore-DIfuh0Z1.mjs.map → LocalStateStore-D1VfxRuK.mjs.map} +1 -1
  13. package/dist/{OpenApiTsGenerator-CdUM6Hvv.cjs → OpenApiTsGenerator-B--HV-sW.cjs} +2 -2
  14. package/dist/{OpenApiTsGenerator-CdUM6Hvv.cjs.map → OpenApiTsGenerator-B--HV-sW.cjs.map} +1 -1
  15. package/dist/{OpenApiTsGenerator-ByRPMbBN.mjs → OpenApiTsGenerator-CkvsPdgg.mjs} +2 -2
  16. package/dist/{OpenApiTsGenerator-ByRPMbBN.mjs.map → OpenApiTsGenerator-CkvsPdgg.mjs.map} +1 -1
  17. package/dist/{S3StateStore-ytvpIiv8.cjs → S3StateStore-BPM74zwv.cjs} +2 -2
  18. package/dist/{S3StateStore-ytvpIiv8.cjs.map → S3StateStore-BPM74zwv.cjs.map} +1 -1
  19. package/dist/{S3StateStore-DR2f78Dj.mjs → S3StateStore-DVZ1YuGJ.mjs} +2 -2
  20. package/dist/{S3StateStore-DR2f78Dj.mjs.map → S3StateStore-DVZ1YuGJ.mjs.map} +1 -1
  21. package/dist/{SSMStateStore-BZ3XL0Mr.mjs → SSMStateStore-DLvnGyyl.mjs} +2 -2
  22. package/dist/{SSMStateStore-BZ3XL0Mr.mjs.map → SSMStateStore-DLvnGyyl.mjs.map} +1 -1
  23. package/dist/{SSMStateStore-C1JruCD9.cjs → SSMStateStore-qerm5c36.cjs} +2 -2
  24. package/dist/{SSMStateStore-C1JruCD9.cjs.map → SSMStateStore-qerm5c36.cjs.map} +1 -1
  25. package/dist/{SubscriberGenerator-DQZeGkDW.mjs → SubscriberGenerator-BPqQf8fB.mjs} +2 -2
  26. package/dist/{SubscriberGenerator-DQZeGkDW.mjs.map → SubscriberGenerator-BPqQf8fB.mjs.map} +1 -1
  27. package/dist/{SubscriberGenerator-CYriX5BV.cjs → SubscriberGenerator-BVn7cQ-2.cjs} +2 -2
  28. package/dist/{SubscriberGenerator-CYriX5BV.cjs.map → SubscriberGenerator-BVn7cQ-2.cjs.map} +1 -1
  29. package/dist/{add-Bwddb4KD.cjs → add-BQ8v1ZII.cjs} +3 -3
  30. package/dist/{add-Bwddb4KD.cjs.map → add-BQ8v1ZII.cjs.map} +1 -1
  31. package/dist/{add-DkBEZ5_s.mjs → add-DbnzC7Kl.mjs} +3 -3
  32. package/dist/{add-DkBEZ5_s.mjs.map → add-DbnzC7Kl.mjs.map} +1 -1
  33. package/dist/{bundler-B8TGsunu.mjs → bundler-D4030Afw.mjs} +5 -5
  34. package/dist/{bundler-B8TGsunu.mjs.map → bundler-D4030Afw.mjs.map} +1 -1
  35. package/dist/{bundler-BkH1kPEX.cjs → bundler-DjrRffko.cjs} +5 -5
  36. package/dist/{bundler-BkH1kPEX.cjs.map → bundler-DjrRffko.cjs.map} +1 -1
  37. package/dist/{cli-DO7DQqCq.cjs → cli-D8YQAYUX.cjs} +3 -3
  38. package/dist/{cli-DO7DQqCq.cjs.map → cli-D8YQAYUX.cjs.map} +1 -1
  39. package/dist/{cli-BgDd4cZB.mjs → cli-DwTa9d_8.mjs} +3 -3
  40. package/dist/{cli-BgDd4cZB.mjs.map → cli-DwTa9d_8.mjs.map} +1 -1
  41. package/dist/{compose-BPJ9bUKp.mjs → compose-C5wz8mf9.mjs} +64 -24
  42. package/dist/compose-C5wz8mf9.mjs.map +1 -0
  43. package/dist/{compose-CGyxYe-h.cjs → compose-DqWh1TaO.cjs} +64 -24
  44. package/dist/compose-DqWh1TaO.cjs.map +1 -0
  45. package/dist/{config-DMdzdO5u.d.cts → config-BzIfP8a-.d.cts} +16 -3
  46. package/dist/config-BzIfP8a-.d.cts.map +1 -0
  47. package/dist/{config-BBFiH4qk.d.mts → config-DhdzmndX.d.mts} +16 -3
  48. package/dist/config-DhdzmndX.d.mts.map +1 -0
  49. package/dist/config.cjs +1 -1
  50. package/dist/config.d.cts +3 -3
  51. package/dist/config.d.mts +3 -3
  52. package/dist/config.mjs +1 -1
  53. package/dist/deploy/public.cjs +6 -6
  54. package/dist/deploy/public.d.cts +3 -3
  55. package/dist/deploy/public.d.cts.map +1 -1
  56. package/dist/deploy/public.d.mts +3 -3
  57. package/dist/deploy/public.d.mts.map +1 -1
  58. package/dist/deploy/public.mjs +6 -6
  59. package/dist/{deploy-0XpZDYAr.mjs → deploy-BwIKGxWH.mjs} +14 -5
  60. package/dist/deploy-BwIKGxWH.mjs.map +1 -0
  61. package/dist/{deploy-BlZx6J5x.cjs → deploy-C8sWg81_.cjs} +14 -5
  62. package/dist/deploy-C8sWg81_.cjs.map +1 -0
  63. package/dist/{dokploy-rjXmkuwH.cjs → dokploy-BkRxJbfi.cjs} +2 -2
  64. package/dist/{dokploy-rjXmkuwH.cjs.map → dokploy-BkRxJbfi.cjs.map} +1 -1
  65. package/dist/{dokploy-Crh4uDmP.mjs → dokploy-ijjms1-h.mjs} +2 -2
  66. package/dist/{dokploy-Crh4uDmP.mjs.map → dokploy-ijjms1-h.mjs.map} +1 -1
  67. package/dist/{drivers-B4RP2B2O.mjs → drivers-DTZzxeIl.mjs} +2 -2
  68. package/dist/{drivers-B4RP2B2O.mjs.map → drivers-DTZzxeIl.mjs.map} +1 -1
  69. package/dist/{drivers-CJx76mcb.cjs → drivers-LYSdQDmd.cjs} +2 -2
  70. package/dist/{drivers-CJx76mcb.cjs.map → drivers-LYSdQDmd.cjs.map} +1 -1
  71. package/dist/{encryption-0eo9aY_H.mjs → encryption-BRcBAmjL.mjs} +3 -3
  72. package/dist/{encryption-0eo9aY_H.mjs.map → encryption-BRcBAmjL.mjs.map} +1 -1
  73. package/dist/{encryption-CxTfRx4h.cjs → encryption-g6PzwwfL.cjs} +3 -3
  74. package/dist/{encryption-CxTfRx4h.cjs.map → encryption-g6PzwwfL.cjs.map} +1 -1
  75. package/dist/{engine-DxWswfXe.mjs → engine-BP0CZ5fh.mjs} +33 -13
  76. package/dist/engine-BP0CZ5fh.mjs.map +1 -0
  77. package/dist/{engine-CMzSebbs.cjs → engine-DLEJsZ3i.cjs} +33 -13
  78. package/dist/engine-DLEJsZ3i.cjs.map +1 -0
  79. package/dist/{github-Dukt5cJe.cjs → github-B8YjwdLK.cjs} +3 -3
  80. package/dist/{github-Dukt5cJe.cjs.map → github-B8YjwdLK.cjs.map} +1 -1
  81. package/dist/{github-HOfOpFI_.mjs → github-Zs-dVJbR.mjs} +3 -3
  82. package/dist/{github-HOfOpFI_.mjs.map → github-Zs-dVJbR.mjs.map} +1 -1
  83. package/dist/{index-Wuqpf316.d.mts → index-D1ODeM9s.d.cts} +2 -2
  84. package/dist/{index-DFrbhRwg.d.cts.map → index-D1ODeM9s.d.cts.map} +1 -1
  85. package/dist/{index-DFrbhRwg.d.cts → index-f77HdqN5.d.mts} +2 -2
  86. package/dist/{index-Wuqpf316.d.mts.map → index-f77HdqN5.d.mts.map} +1 -1
  87. package/dist/index.cjs +173 -70
  88. package/dist/index.cjs.map +1 -1
  89. package/dist/index.mjs +173 -70
  90. package/dist/index.mjs.map +1 -1
  91. package/dist/{migrate-BgPWVnAZ.cjs → migrate-BfZN1S32.cjs} +3 -3
  92. package/dist/{migrate-BgPWVnAZ.cjs.map → migrate-BfZN1S32.cjs.map} +1 -1
  93. package/dist/{migrate-1dGEzuJ-.mjs → migrate-CdXcX0XR.mjs} +3 -3
  94. package/dist/{migrate-1dGEzuJ-.mjs.map → migrate-CdXcX0XR.mjs.map} +1 -1
  95. package/dist/{migrate-C14NNbFx.mjs → migrate-DOMU4uKe.mjs} +3 -3
  96. package/dist/{migrate-C14NNbFx.mjs.map → migrate-DOMU4uKe.mjs.map} +1 -1
  97. package/dist/{migrate-Bemd4tkz.cjs → migrate-FoL_mZIz.cjs} +3 -3
  98. package/dist/{migrate-Bemd4tkz.cjs.map → migrate-FoL_mZIz.cjs.map} +1 -1
  99. package/dist/openapi.cjs +3 -3
  100. package/dist/openapi.d.cts +1 -1
  101. package/dist/openapi.d.mts +1 -1
  102. package/dist/openapi.mjs +3 -3
  103. package/dist/{ready-4kx2pAhm.cjs → ready-BpNbORRB.cjs} +5 -5
  104. package/dist/{ready-4kx2pAhm.cjs.map → ready-BpNbORRB.cjs.map} +1 -1
  105. package/dist/{ready-DhZbZtFw.mjs → ready-b6vm0-W-.mjs} +5 -5
  106. package/dist/{ready-DhZbZtFw.mjs.map → ready-b6vm0-W-.mjs.map} +1 -1
  107. package/dist/reconcile/public.d.cts +1 -1
  108. package/dist/reconcile/public.d.mts +1 -1
  109. package/dist/{resolve-DCTcD823.cjs → resolve-T2I-5FcT.cjs} +3 -3
  110. package/dist/{resolve-DCTcD823.cjs.map → resolve-T2I-5FcT.cjs.map} +1 -1
  111. package/dist/{resolve-y1PkSZrF.mjs → resolve-r7PAs6ng.mjs} +3 -3
  112. package/dist/{resolve-y1PkSZrF.mjs.map → resolve-r7PAs6ng.mjs.map} +1 -1
  113. package/dist/{rollback-CwVhG_xa.mjs → rollback-BSdxnW3X.mjs} +5 -5
  114. package/dist/{rollback-CwVhG_xa.mjs.map → rollback-BSdxnW3X.mjs.map} +1 -1
  115. package/dist/{rollback-BVQFDjxr.cjs → rollback-CPSDjGse.cjs} +5 -5
  116. package/dist/{rollback-BVQFDjxr.cjs.map → rollback-CPSDjGse.cjs.map} +1 -1
  117. package/dist/{runtime-ekxfPNM-.d.mts → runtime-CNu2C2hB.d.mts} +2 -2
  118. package/dist/{runtime-D6A-C6zh.d.cts.map → runtime-CNu2C2hB.d.mts.map} +1 -1
  119. package/dist/{runtime-D6A-C6zh.d.cts → runtime-DMLgL26v.d.cts} +2 -2
  120. package/dist/{runtime-ekxfPNM-.d.mts.map → runtime-DMLgL26v.d.cts.map} +1 -1
  121. package/dist/{seeds-BoKQ74Od.mjs → seeds-BK8caVMm.mjs} +1707 -1612
  122. package/dist/seeds-BK8caVMm.mjs.map +1 -0
  123. package/dist/{seeds-Ccju3zGl.cjs → seeds-DQ0FG57Z.cjs} +2558 -2421
  124. package/dist/seeds-DQ0FG57Z.cjs.map +1 -0
  125. package/dist/{sniffer-6oYI-MpT.mjs → sniffer-CqE_KTTp.mjs} +6 -6
  126. package/dist/{sniffer-6oYI-MpT.mjs.map → sniffer-CqE_KTTp.mjs.map} +1 -1
  127. package/dist/{sniffer-DeyYI9Iv.cjs → sniffer-hSf5mRgV.cjs} +6 -6
  128. package/dist/{sniffer-DeyYI9Iv.cjs.map → sniffer-hSf5mRgV.cjs.map} +1 -1
  129. package/dist/{stages-CwrYVX9u.cjs → stages-CS1sjcRb.cjs} +2 -2
  130. package/dist/{stages-CwrYVX9u.cjs.map → stages-CS1sjcRb.cjs.map} +1 -1
  131. package/dist/{stages-CHF9RFog.mjs → stages-CSXt7N2b.mjs} +2 -2
  132. package/dist/{stages-CHF9RFog.mjs.map → stages-CSXt7N2b.mjs.map} +1 -1
  133. package/dist/target/public.cjs +1 -1
  134. package/dist/target/public.d.cts +2 -2
  135. package/dist/target/public.d.mts +2 -2
  136. package/dist/target/public.mjs +1 -1
  137. package/dist/{types-BzCavjGt.d.mts → types-BZn-8ssD.d.mts} +75 -21
  138. package/dist/types-BZn-8ssD.d.mts.map +1 -0
  139. package/dist/{types-DZtj9jeI.d.cts → types-DiZj6hqp.d.cts} +75 -21
  140. package/dist/types-DiZj6hqp.d.cts.map +1 -0
  141. package/dist/vitest.cjs +1 -1
  142. package/dist/vitest.mjs +1 -1
  143. package/dist/workspace/index.cjs +1 -1
  144. package/dist/workspace/index.d.cts +3 -3
  145. package/dist/workspace/index.d.mts +3 -3
  146. package/dist/workspace/index.mjs +1 -1
  147. package/dist/{workspace-4i6Jwsoa.cjs → workspace-Bic_R3tz.cjs} +324 -98
  148. package/dist/workspace-Bic_R3tz.cjs.map +1 -0
  149. package/dist/{workspace-DD9mtPy8.mjs → workspace-Drz4jsvy.mjs} +305 -97
  150. package/dist/workspace-Drz4jsvy.mjs.map +1 -0
  151. package/package.json +15 -15
  152. package/dist/EndpointGenerator-DtnIGafh.mjs.map +0 -1
  153. package/dist/EndpointGenerator-cKlnllIu.cjs.map +0 -1
  154. package/dist/compose-BPJ9bUKp.mjs.map +0 -1
  155. package/dist/compose-CGyxYe-h.cjs.map +0 -1
  156. package/dist/config-BBFiH4qk.d.mts.map +0 -1
  157. package/dist/config-DMdzdO5u.d.cts.map +0 -1
  158. package/dist/deploy-0XpZDYAr.mjs.map +0 -1
  159. package/dist/deploy-BlZx6J5x.cjs.map +0 -1
  160. package/dist/engine-CMzSebbs.cjs.map +0 -1
  161. package/dist/engine-DxWswfXe.mjs.map +0 -1
  162. package/dist/seeds-BoKQ74Od.mjs.map +0 -1
  163. package/dist/seeds-Ccju3zGl.cjs.map +0 -1
  164. package/dist/types-BzCavjGt.d.mts.map +0 -1
  165. package/dist/types-DZtj9jeI.d.cts.map +0 -1
  166. package/dist/workspace-4i6Jwsoa.cjs.map +0 -1
  167. package/dist/workspace-DD9mtPy8.mjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -5,22 +5,22 @@ const require_run = require("./run-fVZ-rLnc.cjs");
5
5
  const require_credentials = require("./credentials-BVs7mrtw.cjs");
6
6
  const require_discover = require("./discover-D1It5r_h.cjs");
7
7
  const require_derive = require("./derive-DAbo49sm.cjs");
8
- const require_workspace = require("./workspace-4i6Jwsoa.cjs");
8
+ const require_workspace = require("./workspace-Bic_R3tz.cjs");
9
9
  const require_config = require("./config.cjs");
10
- const require_seeds = require("./seeds-Ccju3zGl.cjs");
11
- const require_EndpointGenerator = require("./EndpointGenerator-cKlnllIu.cjs");
10
+ const require_seeds = require("./seeds-DQ0FG57Z.cjs");
11
+ const require_EndpointGenerator = require("./EndpointGenerator-CwLjBCFE.cjs");
12
12
  const require_openapi = require("./openapi.cjs");
13
- const require_SubscriberGenerator = require("./SubscriberGenerator-CYriX5BV.cjs");
13
+ const require_SubscriberGenerator = require("./SubscriberGenerator-BVn7cQ-2.cjs");
14
14
  const require_appPorts = require("./appPorts-Cu79hJF6.cjs");
15
- const require_drivers = require("./drivers-CJx76mcb.cjs");
15
+ const require_drivers = require("./drivers-LYSdQDmd.cjs");
16
16
  const require_emit = require("./emit-Dmc1nvdS.cjs");
17
- const require_sniffer = require("./sniffer-DeyYI9Iv.cjs");
18
- const require_deploy = require("./deploy-BlZx6J5x.cjs");
19
- const require_compose = require("./compose-CGyxYe-h.cjs");
17
+ const require_sniffer = require("./sniffer-hSf5mRgV.cjs");
18
+ const require_deploy = require("./deploy-C8sWg81_.cjs");
19
+ const require_compose = require("./compose-DqWh1TaO.cjs");
20
20
  const require_credentialSchemas = require("./credentialSchemas-DCR4Wd1W.cjs");
21
- const require_LocalStateStore = require("./LocalStateStore-BsFHdSeA.cjs");
21
+ const require_LocalStateStore = require("./LocalStateStore-CdpzTvPn.cjs");
22
22
  const require_utils = require("./utils-D2Nk1Nv2.cjs");
23
- const require_ready = require("./ready-4kx2pAhm.cjs");
23
+ const require_ready = require("./ready-BpNbORRB.cjs");
24
24
  let node_path = require("node:path");
25
25
  let commander = require("commander");
26
26
  let node_process = require("node:process");
@@ -53,7 +53,7 @@ crypto = require_rolldown_runtime.__toESM(crypto, 1);
53
53
  let _geekmidas_constructs_functions = require("@geekmidas/constructs/functions");
54
54
  let _geekmidas_constructs_topic = require("@geekmidas/constructs/topic");
55
55
  //#region package.json
56
- var version = "10.0.0-alpha.83";
56
+ var version = "10.0.0-alpha.84";
57
57
  //#endregion
58
58
  //#region src/prompt.ts
59
59
  /**
@@ -136,7 +136,7 @@ const logger$8 = console;
136
136
  * Validate Dokploy token by making a test API call
137
137
  */
138
138
  async function validateDokployToken(endpoint, token) {
139
- const { DokployApi } = await Promise.resolve().then(() => require("./sniffer-DeyYI9Iv.cjs")).then((n) => n.dokploy_api_exports);
139
+ const { DokployApi } = await Promise.resolve().then(() => require("./sniffer-hSf5mRgV.cjs")).then((n) => n.dokploy_api_exports);
140
140
  return new DokployApi({
141
141
  baseUrl: endpoint,
142
142
  token
@@ -536,10 +536,9 @@ var NoLocalCredentials = class extends Error {
536
536
  /** The logins of every service the workspace last published. */
537
537
  function devCredentials(workspace, credentials, ports) {
538
538
  const containers = SIGNED_IN.filter((container) => require_seeds.portsOf(container).some((port) => ports[port.key] !== void 0));
539
- const logs = require_workspace.resolveLogs(workspace.deploy?.compose?.logs);
540
- const local = logs ? {
541
- url: logs.public ? `https://logs.${workspace.name}.localhost` : `http://localhost:${logs.port}`,
542
- via: `gkm compose --stage ${workspace.stages.local}`
539
+ const local = ports.openobserve !== void 0 ? {
540
+ url: `http://localhost:${ports.openobserve}`,
541
+ via: "gkm dev"
543
542
  } : void 0;
544
543
  return {
545
544
  workspace: workspace.name,
@@ -759,6 +758,7 @@ async function collect(records) {
759
758
  root,
760
759
  stage: lead.workspace.stage,
761
760
  manifest: group.find((r) => r.manifest)?.manifest ?? null,
761
+ telemetry: group.find((r) => r.telemetry)?.telemetry ?? null,
762
762
  apps: discovered,
763
763
  allowedOrigins: [...new Set(group.flatMap((r) => r.allowedOrigins))]
764
764
  });
@@ -1103,6 +1103,7 @@ var DiscoverySession = class DiscoverySession {
1103
1103
  workspace: options.workspace,
1104
1104
  allowedOrigins: [...options.allowedOrigins ?? []],
1105
1105
  ...options.manifest ? { manifest: options.manifest } : {},
1106
+ ...options.telemetry ? { telemetry: options.telemetry } : {},
1106
1107
  apps: options.apps
1107
1108
  };
1108
1109
  writeRecord(registry, record);
@@ -1856,7 +1857,8 @@ async function devCommand(options) {
1856
1857
  hooks,
1857
1858
  skipBundle: true,
1858
1859
  bustCache,
1859
- serveEmpty: true
1860
+ serveEmpty: true,
1861
+ workspaceName: workspace.name
1860
1862
  }));
1861
1863
  logger$5.log(`🔨 Building ${workspaceAppName ?? "the app"}`);
1862
1864
  const initial = await build();
@@ -1864,6 +1866,7 @@ async function devCommand(options) {
1864
1866
  let secretsJsonPath;
1865
1867
  let publicUrl;
1866
1868
  let manifest;
1869
+ let telemetryUi;
1867
1870
  const appSecrets = await require_seeds.loadSecretsForApp(workspace ? await require_seeds.secretsStoreFor(workspace, config.stages.local) : new require_seeds.FileSecretsStore(secretsRoot), config.stages.local);
1868
1871
  if (workspace) {
1869
1872
  const reconciled = await require_seeds.reconcileWorkspace(workspace, {
@@ -1875,10 +1878,25 @@ async function devCommand(options) {
1875
1878
  logger$5.log("🐳 Services");
1876
1879
  for (const line of require_seeds.describeServices(reconciled.services)) logger$5.log(line);
1877
1880
  }
1881
+ if (!process.env["GKM_DISCOVERY_QUIET"] && reconciled.credentials && reconciled.ports) {
1882
+ const { services: logins } = devCredentials(workspace, reconciled.credentials, reconciled.ports);
1883
+ if (logins.length > 0) {
1884
+ logger$5.log("🔑 Logins (again any time: gkm dev:credentials)");
1885
+ for (const line of describeLogins(logins)) logger$5.log(line);
1886
+ }
1887
+ }
1878
1888
  Object.assign(appSecrets, reconciled.env);
1889
+ const scoped = require_seeds.scopeTelemetryEnv(appSecrets, {
1890
+ uses: reconciled.manifest !== void 0 && require_seeds.appTelemetry(reconciled.manifest, workspaceAppName) !== void 0,
1891
+ serviceName: workspaceAppName,
1892
+ telemetry: reconciled.env
1893
+ });
1894
+ for (const key of Object.keys(appSecrets)) if (!(key in scoped)) delete appSecrets[key];
1895
+ Object.assign(appSecrets, scoped);
1879
1896
  const own = reconciled.plan.resources.find((r) => (r.kind === "rest-api" || r.kind === "site") && require_derive.appKey(r.id) === workspaceAppName);
1880
1897
  publicUrl = own ? reconciled.env[own.envKey] : void 0;
1881
1898
  manifest = reconciled.manifest;
1899
+ telemetryUi = telemetryUiOf(reconciled.services);
1882
1900
  }
1883
1901
  if (Object.keys(appSecrets).length > 0) {
1884
1902
  const secretsDir = (0, node_path.join)(secretsRoot, ".gkm");
@@ -1901,6 +1919,7 @@ async function devCommand(options) {
1901
1919
  },
1902
1920
  allowedOrigins: workspace.dev?.allowedOrigins ?? [],
1903
1921
  ...manifest ? { manifest } : {},
1922
+ ...telemetryUi ? { telemetry: telemetryUi } : {},
1904
1923
  apps: [{
1905
1924
  name: workspaceAppName,
1906
1925
  type: "backend",
@@ -2209,17 +2228,20 @@ async function workspaceDevCommand(configured, options) {
2209
2228
  logger$5.log("🔑 Logins (again any time: gkm dev:credentials)");
2210
2229
  for (const line of describeLogins(logins)) logger$5.log(line);
2211
2230
  }
2212
- const secretsEnv = {
2231
+ const secretsEnv = require_seeds.scopeTelemetryEnv({
2213
2232
  ...rawSecrets,
2214
2233
  ...reconciled.env
2215
- };
2234
+ }, {
2235
+ uses: false,
2236
+ serviceName: workspace.name
2237
+ });
2216
2238
  const fakes = options.fake ? await serveFakes(reconciled.fakes, reconciled.ports) : [];
2217
2239
  for (const { id, port } of fakes) logger$5.log(`🎭 ${id} fake: http://localhost:${port}`);
2218
2240
  logger$5.log(options.migrate || options.seed ? "🗄️ Migrating the databases" : "🗄️ Checking for pending migrations");
2219
2241
  if (options.migrate || options.seed) {
2220
- const { prepareDevDatabases } = await Promise.resolve().then(() => require("./migrate-BgPWVnAZ.cjs"));
2242
+ const { prepareDevDatabases } = await Promise.resolve().then(() => require("./migrate-BfZN1S32.cjs"));
2221
2243
  await prepareDevDatabases(workspace, reconciled.env, { seed: !!options.seed });
2222
- } else await Promise.resolve().then(() => require("./migrate-BgPWVnAZ.cjs")).then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2244
+ } else await Promise.resolve().then(() => require("./migrate-BfZN1S32.cjs")).then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2223
2245
  logger$5.log(`⚠️ Could not check for pending migrations: ${error instanceof Error ? error.message : String(error)}`);
2224
2246
  });
2225
2247
  const appUrls = {};
@@ -2274,6 +2296,7 @@ async function workspaceDevCommand(configured, options) {
2274
2296
  break;
2275
2297
  }
2276
2298
  }
2299
+ const workspaceTelemetry = telemetryUiOf(reconciled.services);
2277
2300
  const discovery = await joinDiscovery({
2278
2301
  role: "workspace",
2279
2302
  port: discoveryPort(workspace.dev),
@@ -2284,6 +2307,7 @@ async function workspaceDevCommand(configured, options) {
2284
2307
  },
2285
2308
  allowedOrigins: workspace.dev?.allowedOrigins ?? [],
2286
2309
  ...reconciled.manifest ? { manifest: reconciled.manifest } : {},
2310
+ ...workspaceTelemetry ? { telemetry: workspaceTelemetry } : {},
2287
2311
  apps: buildOrder.flatMap((name) => {
2288
2312
  const app = workspace.apps[name];
2289
2313
  if (!app) return [];
@@ -2481,6 +2505,18 @@ var EntryRunner = class {
2481
2505
  }
2482
2506
  };
2483
2507
  /**
2508
+ * Where the local OpenObserve is, and who signs in to it, when reconcile runs
2509
+ * one — for the discovery endpoint, which is told no password.
2510
+ */
2511
+ function telemetryUiOf(services) {
2512
+ const ui = services.find((s) => s.container === require_seeds.TELEMETRY_CONTAINER);
2513
+ if (!ui) return void 0;
2514
+ return {
2515
+ url: ui.address,
2516
+ email: require_seeds.LOCAL_LOGS_EMAIL
2517
+ };
2518
+ }
2519
+ /**
2484
2520
  * Generate the content of the dev server entry file (server.ts).
2485
2521
  * Uses dynamic import for createApp so Credentials are populated
2486
2522
  * before any app modules evaluate.
@@ -2526,6 +2562,7 @@ if (existsSync(secretsPath)) {
2526
2562
  injectWs(server);
2527
2563
  console.log('🔌 Telescope real-time updates enabled');
2528
2564
  }`;
2565
+ const telemetry = require_EndpointGenerator.startTelemetryCode(["/health", "/ready"]);
2529
2566
  if (selfServing) return `#!/usr/bin/env node
2530
2567
  /**
2531
2568
  * Development server entry point for a surface that serves itself
@@ -2535,8 +2572,17 @@ ${credentialsInjection}${parentWatch}const port = process.argv.includes('--port'
2535
2572
  ? Number.parseInt(process.argv[process.argv.indexOf('--port') + 1])
2536
2573
  : 3000;
2537
2574
 
2575
+ ${telemetry}
2538
2576
  // Dynamic import so Credentials are populated before the surface evaluates
2539
- const { app } = await import('${appImportPath}');
2577
+ const { app: surface } = await import('${appImportPath}');
2578
+
2579
+ // Behind the request spans when there are any, as the production server is.
2580
+ const { Hono } = await import('hono');
2581
+ const app = requestSpans ? new Hono() : surface;
2582
+ if (requestSpans) {
2583
+ ${require_EndpointGenerator.mountRequestSpansCode("app").trim().replace(/\n/g, "\n ")}
2584
+ app.route('/', surface);
2585
+ }
2540
2586
 
2541
2587
  ${serveCode.replace(/^ {4}/gm, "")}
2542
2588
  `;
@@ -2549,11 +2595,16 @@ ${credentialsInjection}${parentWatch}const port = process.argv.includes('--port'
2549
2595
  ? Number.parseInt(process.argv[process.argv.indexOf('--port') + 1])
2550
2596
  : 3000;
2551
2597
 
2598
+ ${telemetry}
2552
2599
  // Dynamic import so Credentials are populated before env.ts evaluates
2553
2600
  const { createApp } = await import('${appImportPath}');
2554
2601
 
2602
+ // The span middleware first, as the production server mounts it.
2603
+ const { Hono } = await import('hono');
2604
+ const root = new Hono();
2605
+ ${require_EndpointGenerator.mountRequestSpansCode("root")}
2555
2606
  // createApp is async to support optional WebSocket setup
2556
- const { app, start } = await createApp(undefined, ${enableOpenApi});
2607
+ const { app, start } = await createApp(root, ${enableOpenApi});
2557
2608
 
2558
2609
  // Start the server
2559
2610
  start({
@@ -2995,6 +3046,7 @@ export default app;
2995
3046
  */
2996
3047
  async function writeSurfaceServer(outputDir, options) {
2997
3048
  await (0, node_fs_promises.mkdir)(outputDir, { recursive: true });
3049
+ await require_EndpointGenerator.writeTelemetryModule(outputDir, options.telemetry);
2998
3050
  const shutdown = options.gracefulShutdown ? `
2999
3051
  // Stop taking requests, let in-flight ones finish, then close what the
3000
3052
  // construct opened — bounded by GKM_SHUTDOWN_TIMEOUT_MS, under Docker's 10s
@@ -3021,12 +3073,14 @@ process.on('SIGINT', shutdown);
3021
3073
  */
3022
3074
  import { serve } from '@hono/node-server';
3023
3075
  import { Hono } from 'hono';
3024
- ${options.gracefulShutdown ? "import { runShutdownHooks } from '@geekmidas/constructs';\n" : ""}import { app as surface } from './app.js';
3076
+ ${options.gracefulShutdown ? "import { runShutdownHooks } from '@geekmidas/constructs';\n" : ""}
3077
+ ${require_EndpointGenerator.startTelemetryCode([options.healthCheck])}
3078
+ const { app: surface } = await import('./app.js');
3025
3079
 
3026
3080
  const port = Number(process.env.PORT) || 3000;
3027
3081
 
3028
3082
  const app = new Hono();
3029
- // First, so a probe is answered without reaching the surface's own routes.
3083
+ ${require_EndpointGenerator.mountRequestSpansCode("app")}// First, so a probe is answered without reaching the surface's own routes.
3030
3084
  app.get(${JSON.stringify(options.healthCheck)}, (c) =>
3031
3085
  c.json({ status: 'ok', timestamp: Date.now() }),
3032
3086
  );
@@ -3223,11 +3277,23 @@ async function buildApp(input) {
3223
3277
  });
3224
3278
  if (selfServing) {
3225
3279
  await writeSurfaceEntry((0, node_path.join)(appRoot, ".gkm", "server"), selfServing.source);
3280
+ const telemetry = require_EndpointGenerator.telemetryFor({
3281
+ node: require_seeds.telemetryOf(declared, selfServing.id),
3282
+ appRoot,
3283
+ app: appNameOf(input),
3284
+ cwd: workspaceRoot,
3285
+ serviceName: selfServing.id,
3286
+ ...input.workspaceName && { workspaceName: input.workspaceName }
3287
+ });
3288
+ await require_EndpointGenerator.writeTelemetryModule((0, node_path.join)(appRoot, ".gkm", "server"), telemetry);
3226
3289
  logger$4.log(`Generated a server for ${selfServing.id} from its own declaration`);
3227
3290
  if (production?.bundle && !input.skipBundle) {
3228
3291
  const outputDir = (0, node_path.join)(appRoot, ".gkm", "server");
3229
- const entryPoint = await writeSurfaceServer(outputDir, production);
3230
- const { bundleServer } = await Promise.resolve().then(() => require("./bundler-BkH1kPEX.cjs"));
3292
+ const entryPoint = await writeSurfaceServer(outputDir, {
3293
+ ...production,
3294
+ ...telemetry ? { telemetry } : {}
3295
+ });
3296
+ const { bundleServer } = await Promise.resolve().then(() => require("./bundler-DjrRffko.cjs"));
3231
3297
  await bundleServer({
3232
3298
  entryPoint,
3233
3299
  outputDir: (0, node_path.join)(outputDir, "dist"),
@@ -3262,12 +3328,7 @@ async function buildApp(input) {
3262
3328
  events: eventsBackends
3263
3329
  }),
3264
3330
  eventsBackends,
3265
- markOptional: input.markOptional ?? false,
3266
- ...production && { telemetry: require_EndpointGenerator.telemetryFor({
3267
- appRoot,
3268
- surfaceId: derived.surface?.id,
3269
- workspaceName: input.workspaceName
3270
- }) }
3331
+ markOptional: input.markOptional ?? false
3271
3332
  };
3272
3333
  const endpointGenerator = new require_EndpointGenerator.EndpointGenerator();
3273
3334
  const functionGenerator = new FunctionGenerator();
@@ -3285,6 +3346,15 @@ async function buildApp(input) {
3285
3346
  topicGenerator.load(code, appRoot, bustCache)
3286
3347
  ]);
3287
3348
  const allEndpoints = servedBy(loadedEndpoints, derived.surface);
3349
+ if (target === "server") buildContext.telemetry = require_EndpointGenerator.telemetryFor({
3350
+ node: derived.surface ? require_seeds.telemetryOf(declared, derived.surface.id) : void 0,
3351
+ appRoot,
3352
+ app: appNameOf(input),
3353
+ cwd: workspaceRoot,
3354
+ serviceName: derived.surface?.id ?? (0, node_path.basename)(appRoot),
3355
+ ...input.workspaceName && { workspaceName: input.workspaceName },
3356
+ routes: require_EndpointGenerator.routeTelemetry(allEndpoints.map(({ construct }) => construct))
3357
+ });
3288
3358
  logger$4.log(`Found ${allEndpoints.length} endpoints`);
3289
3359
  logger$4.log(`Found ${allFunctions.length} functions`);
3290
3360
  logger$4.log(`Found ${allCrons.length} crons`);
@@ -3312,6 +3382,14 @@ async function buildApp(input) {
3312
3382
  const appName = Object.entries(input.workspace.apps).find(([, app]) => (0, node_path.resolve)(input.workspace.root, app.path) === (0, node_path.resolve)(appRoot))?.[0];
3313
3383
  await buildWorkers({
3314
3384
  context: buildContext,
3385
+ telemetry: (workerId) => require_EndpointGenerator.telemetryFor({
3386
+ node: require_seeds.telemetryOf(declared, workerId),
3387
+ appRoot,
3388
+ app: appNameOf(input),
3389
+ cwd: workspaceRoot,
3390
+ serviceName: workerId,
3391
+ ...input.workspaceName && { workspaceName: input.workspaceName }
3392
+ }),
3315
3393
  workers: require_seeds.workerUnits(input.workspace, declared, background).filter((unit) => unit.app === appName),
3316
3394
  serverDir: (0, node_path.join)(appRoot, ".gkm", "server"),
3317
3395
  crons: allCrons,
@@ -3323,7 +3401,14 @@ async function buildApp(input) {
3323
3401
  }
3324
3402
  await require_openapi.generateOpenApi(allEndpoints.map(({ construct }) => construct), {
3325
3403
  openapi: config.openapi,
3326
- root: workspaceRoot
3404
+ root: workspaceRoot,
3405
+ ...derived.surface ? clientTelemetry({
3406
+ manifest: declared,
3407
+ surfaceId: derived.surface.id,
3408
+ telemetry: input.workspace?.deploy?.telemetry,
3409
+ stage: input.stage,
3410
+ localStage: input.workspace?.stages.local ?? config.stages?.local
3411
+ }) : {}
3327
3412
  });
3328
3413
  return {
3329
3414
  ...result,
@@ -3341,9 +3426,11 @@ async function buildWorkers(input) {
3341
3426
  const crons = owned(input.crons);
3342
3427
  const queues = owned(input.queues);
3343
3428
  const subscribers = owned(input.subscribers);
3429
+ const telemetry = input.telemetry(worker.id);
3344
3430
  const entryPoint = await generator.build({
3345
3431
  context: input.context,
3346
3432
  workerId: worker.id,
3433
+ ...telemetry ? { telemetry } : {},
3347
3434
  outputDir: require_seeds.workerEntryDir(input.serverDir, worker.id),
3348
3435
  crons,
3349
3436
  queues,
@@ -3351,7 +3438,7 @@ async function buildWorkers(input) {
3351
3438
  });
3352
3439
  logger$4.log(`Generated worker ${worker.id}: ${crons.length} crons, ${queues.length} queues, ${subscribers.length} subscribers`);
3353
3440
  if (!input.bundle) continue;
3354
- const { bundleServer } = await Promise.resolve().then(() => require("./bundler-BkH1kPEX.cjs"));
3441
+ const { bundleServer } = await Promise.resolve().then(() => require("./bundler-DjrRffko.cjs"));
3355
3442
  const outfile = require_seeds.workerBundleName(worker.id);
3356
3443
  await bundleServer({
3357
3444
  entryPoint,
@@ -3370,6 +3457,22 @@ async function buildWorkers(input) {
3370
3457
  logger$4.log(`✅ Bundle complete: .gkm/server/dist/${outfile}`);
3371
3458
  }
3372
3459
  }
3460
+ /**
3461
+ * Whether the surface's generated client propagates trace context, and at
3462
+ * what rate: on when a site that calls it has an edge to a `Telemetry`
3463
+ * construct, at the stage's sample rate — every trace locally, and on a build
3464
+ * for no stage. Off for a stage that sends no telemetry.
3465
+ */
3466
+ function clientTelemetry(options) {
3467
+ if (!require_seeds.surfaceClientTraced(options.manifest, options.surfaceId)) return {};
3468
+ const local = !options.stage || options.stage === options.localStage;
3469
+ const sampleRate = require_workspace.stageSampleRate(options.telemetry, options.stage ?? "", local);
3470
+ return sampleRate === void 0 ? {} : { telemetry: { sampleRate } };
3471
+ }
3472
+ /** The app being built, by its workspace name or its directory's. */
3473
+ function appNameOf(input) {
3474
+ return (input.workspace ? Object.entries(input.workspace.apps).find(([, app]) => (0, node_path.resolve)(input.workspace.root, app.path) === (0, node_path.resolve)(input.appRoot))?.[0] : void 0) ?? (0, node_path.basename)(input.appRoot);
3475
+ }
3373
3476
  async function buildForTarget(target, context, appRoot, workspaceRoot, endpointGenerator, functionGenerator, cronGenerator, subscriberGenerator, queueGenerator, topicGenerator, endpoints, functions, crons, subscribers, queues, topics, enableOpenApi, skipBundle, stage) {
3374
3477
  const outputDir = (0, node_path.join)(appRoot, ".gkm", target);
3375
3478
  await Promise.all([...SUPERSEDED_OUTPUT.map((dir) => (0, node_path.join)(appRoot, ".gkm", dir)), ...appRoot === workspaceRoot ? [] : [(0, node_path.join)(appRoot, ".gkm", "manifest")]].map((dir) => (0, node_fs_promises.rm)(dir, {
@@ -3421,7 +3524,7 @@ async function buildForTarget(target, context, appRoot, workspaceRoot, endpointG
3421
3524
  let masterKey;
3422
3525
  if (context.production?.bundle && !skipBundle) {
3423
3526
  logger$4.log(`\n📦 Bundling production server...`);
3424
- const { bundleServer } = await Promise.resolve().then(() => require("./bundler-BkH1kPEX.cjs"));
3527
+ const { bundleServer } = await Promise.resolve().then(() => require("./bundler-DjrRffko.cjs"));
3425
3528
  const allConstructs = [
3426
3529
  ...endpoints.map((e) => e.construct),
3427
3530
  ...functions.map((f) => f.construct),
@@ -5123,25 +5226,25 @@ function loadPackageJson() {
5123
5226
  * Run: pnpm --filter @geekmidas/cli sync-versions
5124
5227
  */
5125
5228
  const GEEKMIDAS_VERSIONS = {
5126
- "@geekmidas/audit": "~10.0.0-alpha.83",
5127
- "@geekmidas/auth": "~10.0.0-alpha.83",
5128
- "@geekmidas/cache": "~10.0.0-alpha.83",
5129
- "@geekmidas/client": "~10.0.0-alpha.83",
5130
- "@geekmidas/cloud": "~10.0.0-alpha.83",
5131
- "@geekmidas/constructs": "~10.0.0-alpha.83",
5132
- "@geekmidas/db": "~10.0.0-alpha.83",
5133
- "@geekmidas/emailkit": "~10.0.0-alpha.83",
5134
- "@geekmidas/envkit": "~10.0.0-alpha.83",
5135
- "@geekmidas/errors": "~10.0.0-alpha.83",
5136
- "@geekmidas/events": "~10.0.0-alpha.83",
5137
- "@geekmidas/logger": "~10.0.0-alpha.83",
5138
- "@geekmidas/manifest": "~10.0.0-alpha.83",
5139
- "@geekmidas/rate-limit": "~10.0.0-alpha.83",
5140
- "@geekmidas/schema": "~10.0.0-alpha.83",
5141
- "@geekmidas/services": "~10.0.0-alpha.83",
5142
- "@geekmidas/storage": "~10.0.0-alpha.83",
5143
- "@geekmidas/telescope": "~10.0.0-alpha.83",
5144
- "@geekmidas/testkit": "~10.0.0-alpha.83",
5229
+ "@geekmidas/audit": "~10.0.0-alpha.84",
5230
+ "@geekmidas/auth": "~10.0.0-alpha.84",
5231
+ "@geekmidas/cache": "~10.0.0-alpha.84",
5232
+ "@geekmidas/client": "~10.0.0-alpha.84",
5233
+ "@geekmidas/cloud": "~10.0.0-alpha.84",
5234
+ "@geekmidas/constructs": "~10.0.0-alpha.84",
5235
+ "@geekmidas/db": "~10.0.0-alpha.84",
5236
+ "@geekmidas/emailkit": "~10.0.0-alpha.84",
5237
+ "@geekmidas/envkit": "~10.0.0-alpha.84",
5238
+ "@geekmidas/errors": "~10.0.0-alpha.84",
5239
+ "@geekmidas/events": "~10.0.0-alpha.84",
5240
+ "@geekmidas/logger": "~10.0.0-alpha.84",
5241
+ "@geekmidas/manifest": "~10.0.0-alpha.84",
5242
+ "@geekmidas/rate-limit": "~10.0.0-alpha.84",
5243
+ "@geekmidas/schema": "~10.0.0-alpha.84",
5244
+ "@geekmidas/services": "~10.0.0-alpha.84",
5245
+ "@geekmidas/storage": "~10.0.0-alpha.84",
5246
+ "@geekmidas/telescope": "~10.0.0-alpha.84",
5247
+ "@geekmidas/testkit": "~10.0.0-alpha.84",
5145
5248
  "@geekmidas/cli": `~${loadPackageJson().version}`
5146
5249
  };
5147
5250
  //#endregion
@@ -5542,7 +5645,7 @@ const COMMIT = /^[0-9a-f]{40}$/;
5542
5645
  * The `uses:` value for the stages action, with a comment saying which CLI
5543
5646
  * release the pinned commit is.
5544
5647
  */
5545
- function stagesActionUses(commit = "4dee60bc593ffdfbaa59bbf8d8fe9e3e64f23d41", version = cliVersion()) {
5648
+ function stagesActionUses(commit = "1a6631b7e6dc71b7dd7b7afb8ca5b82225454826", version = cliVersion()) {
5546
5649
  return commit && COMMIT.test(commit) ? `${STAGES_ACTION}@${commit} # @geekmidas/cli ${version}` : `${STAGES_ACTION}@main # pin to a commit SHA: see the action's README`;
5547
5650
  }
5548
5651
  //#endregion
@@ -11214,7 +11317,7 @@ function testDatabases(reconciled) {
11214
11317
  * starts without the reference data the app needs.
11215
11318
  */
11216
11319
  async function migrateTestStage(workspace, env) {
11217
- const { migrateAndSeed } = await Promise.resolve().then(() => require("./migrate-BgPWVnAZ.cjs"));
11320
+ const { migrateAndSeed } = await Promise.resolve().then(() => require("./migrate-BfZN1S32.cjs"));
11218
11321
  const { discover } = await Promise.resolve().then(() => require("./discover-D1It5r_h.cjs")).then((n) => n.discover_exports);
11219
11322
  const sources = {};
11220
11323
  const manifest = await discover({
@@ -11658,7 +11761,7 @@ program.command("migrate").description("Apply each database construct's migratio
11658
11761
  try {
11659
11762
  const globalOptions = program.opts();
11660
11763
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11661
- const { migrateCommand } = await Promise.resolve().then(() => require("./migrate-BgPWVnAZ.cjs"));
11764
+ const { migrateCommand } = await Promise.resolve().then(() => require("./migrate-BfZN1S32.cjs"));
11662
11765
  await migrateCommand({
11663
11766
  ...options,
11664
11767
  ...construct ? { construct } : {}
@@ -11672,7 +11775,7 @@ program.command("seed").description("Migrate, then run each database construct's
11672
11775
  try {
11673
11776
  const globalOptions = program.opts();
11674
11777
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11675
- const { seedCommand } = await Promise.resolve().then(() => require("./migrate-BgPWVnAZ.cjs"));
11778
+ const { seedCommand } = await Promise.resolve().then(() => require("./migrate-BfZN1S32.cjs"));
11676
11779
  await seedCommand({
11677
11780
  ...options,
11678
11781
  ...construct ? { construct } : {}
@@ -11686,7 +11789,7 @@ program.command("migration").description("Write a construct's next migration: an
11686
11789
  try {
11687
11790
  const globalOptions = program.opts();
11688
11791
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11689
- const { migrationCommand } = await Promise.resolve().then(() => require("./migrate-BgPWVnAZ.cjs"));
11792
+ const { migrationCommand } = await Promise.resolve().then(() => require("./migrate-BfZN1S32.cjs"));
11690
11793
  await migrationCommand({
11691
11794
  construct,
11692
11795
  ...name ? { name } : {}
@@ -11794,7 +11897,7 @@ program.command("secrets:add").description("Build the keys a stage must be given
11794
11897
  try {
11795
11898
  const globalOptions = program.opts();
11796
11899
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11797
- const { secretsAddCommand } = await Promise.resolve().then(() => require("./add-Bwddb4KD.cjs"));
11900
+ const { secretsAddCommand } = await Promise.resolve().then(() => require("./add-BQ8v1ZII.cjs"));
11798
11901
  await secretsAddCommand(options);
11799
11902
  } catch (error) {
11800
11903
  console.error(formatError(error));
@@ -11805,7 +11908,7 @@ program.command("encryption:rotate").description("Add a new current key to an En
11805
11908
  try {
11806
11909
  const globalOptions = program.opts();
11807
11910
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11808
- const { encryptionRotateCommand } = await Promise.resolve().then(() => require("./encryption-CxTfRx4h.cjs"));
11911
+ const { encryptionRotateCommand } = await Promise.resolve().then(() => require("./encryption-g6PzwwfL.cjs"));
11809
11912
  await encryptionRotateCommand(construct, options);
11810
11913
  } catch (error) {
11811
11914
  console.error(formatError(error));
@@ -11816,7 +11919,7 @@ program.command("encryption:retire").description("Remove an old key from an Encr
11816
11919
  try {
11817
11920
  const globalOptions = program.opts();
11818
11921
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11819
- const { encryptionRetireCommand } = await Promise.resolve().then(() => require("./encryption-CxTfRx4h.cjs"));
11922
+ const { encryptionRetireCommand } = await Promise.resolve().then(() => require("./encryption-g6PzwwfL.cjs"));
11820
11923
  await encryptionRetireCommand(construct, key, options);
11821
11924
  } catch (error) {
11822
11925
  console.error(formatError(error));
@@ -11859,7 +11962,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
11859
11962
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11860
11963
  const { loadWorkspaceConfig } = await Promise.resolve().then(() => require("./config.cjs"));
11861
11964
  const { reconcileMissingSecrets } = await Promise.resolve().then(() => require("./reconcile-CuCQBa5-.cjs"));
11862
- const { secretsStoreFor } = await Promise.resolve().then(() => require("./seeds-Ccju3zGl.cjs")).then((n) => n.store_exports);
11965
+ const { secretsStoreFor } = await Promise.resolve().then(() => require("./seeds-DQ0FG57Z.cjs")).then((n) => n.store_exports);
11863
11966
  const { workspace } = await loadWorkspaceConfig();
11864
11967
  const stage = options.stage ?? workspace.stages.local;
11865
11968
  const store = await secretsStoreFor(workspace, stage);
@@ -11868,7 +11971,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
11868
11971
  console.error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
11869
11972
  process.exit(1);
11870
11973
  }
11871
- const { derivedContainers } = await Promise.resolve().then(() => require("./seeds-Ccju3zGl.cjs")).then((n) => n.workspace_exports);
11974
+ const { derivedContainers } = await Promise.resolve().then(() => require("./seeds-DQ0FG57Z.cjs")).then((n) => n.workspace_exports);
11872
11975
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers(workspace, stage));
11873
11976
  if (!result) {
11874
11977
  console.log(`\n✓ Secrets for stage "${stage}" are up-to-date`);
@@ -11886,7 +11989,7 @@ program.command("secrets:migrate").description("Copy a deployed stage's secrets
11886
11989
  try {
11887
11990
  const globalOptions = program.opts();
11888
11991
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11889
- const { secretsMigrateCommand } = await Promise.resolve().then(() => require("./migrate-Bemd4tkz.cjs"));
11992
+ const { secretsMigrateCommand } = await Promise.resolve().then(() => require("./migrate-FoL_mZIz.cjs"));
11890
11993
  await secretsMigrateCommand(options);
11891
11994
  } catch (error) {
11892
11995
  console.error(formatError(error));
@@ -11894,7 +11997,7 @@ program.command("secrets:migrate").description("Copy a deployed stage's secrets
11894
11997
  }
11895
11998
  });
11896
11999
  program.command("deploy").description("Deploy a stage through its target").option("--target <name>", "Deploy target: dokploy, compose, sst, or one named in deploy.targets (default: deploy.default)").option("--provider <provider>", "[DEPRECATED] Use --target instead").requiredOption("--stage <stage>", "Deployment stage (e.g., production, staging)").option("--tag <tag>", "Image tag (default: stage-timestamp; compose: the commit). Compose pulls a given tag").option("--skip-push", "Skip pushing image to registry").option("--skip-build", "Skip build step (use existing build)").option("--json", "Write events as JSON lines instead of progress; never prompts").option("--dry-run", "Show what would be created or reused; change, build and push nothing").option("--atomic", "If the release fails, roll back every app it released, not only the failed ones").option("--allow-dev-services <list>", "Server targets: run MinIO and/or Mailpit (minio,mailpit) for mail and buckets the stage's secrets don't configure. Not production-grade").action(async (options) => {
11897
- const { deployCli } = await Promise.resolve().then(() => require("./cli-DO7DQqCq.cjs"));
12000
+ const { deployCli } = await Promise.resolve().then(() => require("./cli-D8YQAYUX.cjs"));
11898
12001
  const globalOptions = program.opts();
11899
12002
  const code = await deployCli({
11900
12003
  cwd: (0, node_path.resolve)(globalOptions.cwd ?? process.cwd()),
@@ -11911,7 +12014,7 @@ program.command("deploy").description("Deploy a stage through its target").optio
11911
12014
  });
11912
12015
  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) => {
11913
12016
  try {
11914
- const { rollbackStage } = await Promise.resolve().then(() => require("./rollback-BVQFDjxr.cjs")).then((n) => n.rollback_exports);
12017
+ const { rollbackStage } = await Promise.resolve().then(() => require("./rollback-CPSDjGse.cjs")).then((n) => n.rollback_exports);
11915
12018
  const { terminalCredentials } = await Promise.resolve().then(() => require("./terminal-BL5E0xbR.cjs"));
11916
12019
  const globalOptions = program.opts();
11917
12020
  await rollbackStage({
@@ -11947,7 +12050,7 @@ program.command("deploy:github").description("Let GitHub Actions deploy a stage:
11947
12050
  try {
11948
12051
  const globalOptions = program.opts();
11949
12052
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11950
- const { deployGithubCommand } = await Promise.resolve().then(() => require("./github-Dukt5cJe.cjs"));
12053
+ const { deployGithubCommand } = await Promise.resolve().then(() => require("./github-B8YjwdLK.cjs"));
11951
12054
  await deployGithubCommand(options);
11952
12055
  } catch (error) {
11953
12056
  console.error(formatError(error));
@@ -11958,7 +12061,7 @@ program.command("stages").description("The workspace's stages from gkm.config.ts
11958
12061
  try {
11959
12062
  const globalOptions = program.opts();
11960
12063
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
11961
- const { stagesCommand } = await Promise.resolve().then(() => require("./stages-CwrYVX9u.cjs"));
12064
+ const { stagesCommand } = await Promise.resolve().then(() => require("./stages-CS1sjcRb.cjs"));
11962
12065
  await stagesCommand(options);
11963
12066
  } catch (error) {
11964
12067
  console.error(formatError(error));