@caelo-cms/provisioning 0.10.43 → 0.10.46

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 (141) hide show
  1. package/dist/adapter.d.ts +1 -1
  2. package/dist/adc-impersonation.d.ts +28 -0
  3. package/dist/adc-impersonation.d.ts.map +1 -0
  4. package/dist/adc-impersonation.js +126 -0
  5. package/dist/adc-impersonation.js.map +1 -0
  6. package/dist/caddy.js +1 -1
  7. package/dist/checkpoint-secrets.d.ts.map +1 -1
  8. package/dist/checkpoint-secrets.js +2 -1
  9. package/dist/checkpoint-secrets.js.map +1 -1
  10. package/dist/cli.js +208 -43
  11. package/dist/cli.js.map +1 -1
  12. package/dist/compose.d.ts +45 -0
  13. package/dist/compose.d.ts.map +1 -1
  14. package/dist/compose.js +112 -29
  15. package/dist/compose.js.map +1 -1
  16. package/dist/gcloud-retry.d.ts +5 -1
  17. package/dist/gcloud-retry.d.ts.map +1 -1
  18. package/dist/gcloud-retry.js.map +1 -1
  19. package/dist/gcloud.d.ts +2 -1
  20. package/dist/gcloud.d.ts.map +1 -1
  21. package/dist/gcloud.js +11 -13
  22. package/dist/gcloud.js.map +1 -1
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +3 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/infra-contract.d.ts +24 -0
  28. package/dist/infra-contract.d.ts.map +1 -0
  29. package/dist/infra-contract.js +25 -0
  30. package/dist/infra-contract.js.map +1 -0
  31. package/dist/install-state.d.ts +68 -2
  32. package/dist/install-state.d.ts.map +1 -1
  33. package/dist/install-state.js +166 -22
  34. package/dist/install-state.js.map +1 -1
  35. package/dist/lifecycle.d.ts +6 -0
  36. package/dist/lifecycle.d.ts.map +1 -1
  37. package/dist/lifecycle.js +185 -819
  38. package/dist/lifecycle.js.map +1 -1
  39. package/dist/mcp-iap.js +1 -1
  40. package/dist/migration-runner.d.ts +3 -0
  41. package/dist/migration-runner.d.ts.map +1 -1
  42. package/dist/migration-runner.js +7 -5
  43. package/dist/migration-runner.js.map +1 -1
  44. package/dist/ops-backend.d.ts +46 -0
  45. package/dist/ops-backend.d.ts.map +1 -0
  46. package/dist/ops-backend.js +370 -0
  47. package/dist/ops-backend.js.map +1 -0
  48. package/dist/provisioner-identity.d.ts +103 -0
  49. package/dist/provisioner-identity.d.ts.map +1 -0
  50. package/dist/provisioner-identity.js +323 -0
  51. package/dist/provisioner-identity.js.map +1 -0
  52. package/dist/regions.d.ts.map +1 -1
  53. package/dist/regions.js +2 -1
  54. package/dist/regions.js.map +1 -1
  55. package/dist/release-contract.d.ts +37 -0
  56. package/dist/release-contract.d.ts.map +1 -0
  57. package/dist/release-contract.js +55 -0
  58. package/dist/release-contract.js.map +1 -0
  59. package/dist/release-manifest.d.ts +140 -0
  60. package/dist/release-manifest.d.ts.map +1 -0
  61. package/dist/release-manifest.js +319 -0
  62. package/dist/release-manifest.js.map +1 -0
  63. package/dist/self-command.d.ts +16 -0
  64. package/dist/self-command.d.ts.map +1 -0
  65. package/dist/self-command.js +20 -0
  66. package/dist/self-command.js.map +1 -0
  67. package/dist/self-hosted-release.d.ts +81 -0
  68. package/dist/self-hosted-release.d.ts.map +1 -0
  69. package/dist/self-hosted-release.js +148 -0
  70. package/dist/self-hosted-release.js.map +1 -0
  71. package/dist/self-hosted-upgrade.d.ts +91 -0
  72. package/dist/self-hosted-upgrade.d.ts.map +1 -0
  73. package/dist/self-hosted-upgrade.js +355 -0
  74. package/dist/self-hosted-upgrade.js.map +1 -0
  75. package/dist/stack-contract.js +2 -2
  76. package/dist/stack-converge.d.ts.map +1 -1
  77. package/dist/stack-converge.js +2 -1
  78. package/dist/stack-converge.js.map +1 -1
  79. package/dist/staging-admin.js +3 -3
  80. package/dist/state-backend.d.ts +103 -0
  81. package/dist/state-backend.d.ts.map +1 -0
  82. package/dist/state-backend.js +180 -0
  83. package/dist/state-backend.js.map +1 -0
  84. package/dist/state-store.d.ts +55 -0
  85. package/dist/state-store.d.ts.map +1 -0
  86. package/dist/state-store.js +140 -0
  87. package/dist/state-store.js.map +1 -0
  88. package/dist/upgrade/app-roll.d.ts +164 -0
  89. package/dist/upgrade/app-roll.d.ts.map +1 -0
  90. package/dist/upgrade/app-roll.js +270 -0
  91. package/dist/upgrade/app-roll.js.map +1 -0
  92. package/dist/upgrade/backup.d.ts +48 -0
  93. package/dist/upgrade/backup.d.ts.map +1 -0
  94. package/dist/upgrade/backup.js +71 -0
  95. package/dist/upgrade/backup.js.map +1 -0
  96. package/dist/upgrade/converge.d.ts +45 -0
  97. package/dist/upgrade/converge.d.ts.map +1 -0
  98. package/dist/upgrade/converge.js +287 -0
  99. package/dist/upgrade/converge.js.map +1 -0
  100. package/dist/upgrade/gcp-lookup.d.ts +23 -0
  101. package/dist/upgrade/gcp-lookup.d.ts.map +1 -0
  102. package/dist/upgrade/gcp-lookup.js +95 -0
  103. package/dist/upgrade/gcp-lookup.js.map +1 -0
  104. package/dist/upgrade/health.d.ts +99 -0
  105. package/dist/upgrade/health.d.ts.map +1 -0
  106. package/dist/upgrade/health.js +214 -0
  107. package/dist/upgrade/health.js.map +1 -0
  108. package/dist/upgrade/release-images.d.ts +125 -0
  109. package/dist/upgrade/release-images.d.ts.map +1 -0
  110. package/dist/upgrade/release-images.js +315 -0
  111. package/dist/upgrade/release-images.js.map +1 -0
  112. package/dist/upgrade/reporter.d.ts +17 -0
  113. package/dist/upgrade/reporter.d.ts.map +1 -0
  114. package/dist/upgrade/reporter.js +28 -0
  115. package/dist/upgrade/reporter.js.map +1 -0
  116. package/dist/upgrade/upgrade.d.ts +79 -0
  117. package/dist/upgrade/upgrade.d.ts.map +1 -0
  118. package/dist/upgrade/upgrade.js +105 -0
  119. package/dist/upgrade/upgrade.js.map +1 -0
  120. package/dist/wizard.d.ts.map +1 -1
  121. package/dist/wizard.js +7 -3
  122. package/dist/wizard.js.map +1 -1
  123. package/dist/wizards/gcp-cost.d.ts.map +1 -1
  124. package/dist/wizards/gcp-cost.js +7 -1
  125. package/dist/wizards/gcp-cost.js.map +1 -1
  126. package/dist/wizards/gcp-pulumi.d.ts +99 -8
  127. package/dist/wizards/gcp-pulumi.d.ts.map +1 -1
  128. package/dist/wizards/gcp-pulumi.js +157 -50
  129. package/dist/wizards/gcp-pulumi.js.map +1 -1
  130. package/dist/wizards/gcp.d.ts.map +1 -1
  131. package/dist/wizards/gcp.js +185 -61
  132. package/dist/wizards/gcp.js.map +1 -1
  133. package/package.json +4 -3
  134. package/stacks/aws/README.md +1 -1
  135. package/stacks/gcp/Pulumi.yaml +1 -1
  136. package/stacks/gcp/README.md +1 -1
  137. package/stacks/gcp/index.ts +1 -1
  138. package/stacks/gcp-firebase/Pulumi.yaml +1 -1
  139. package/stacks/gcp-firebase/index.ts +2 -2
  140. package/stacks/self-hosted/README.md +4 -0
  141. package/stacks/self-hosted/index.ts +10 -2
@@ -50,7 +50,7 @@ done
50
50
  pulumi up
51
51
 
52
52
  # Sync outputs into cms_admin.provisioning_outputs so the admin's
53
- # /security/dns page surfaces the required DNS records.
53
+ # /settings/dns page surfaces the required DNS records.
54
54
  CAELO_INTERNAL_SECRET=$(gcloud secrets versions access latest \
55
55
  --secret=caelo-production-internal-secret --project=$PROJECT) \
56
56
  CAELO_ADMIN_URL=https://admin.example.com \
@@ -199,7 +199,7 @@ const postgresPassword = pulumi.secret(pgPasswordBytes.hex);
199
199
  // via `valueSource.secretKeyRef` below.
200
200
  const caeloSecretKek = pulumi.secret(kekBytes.hex);
201
201
  // v0.3.2 — anthropic-api-key Secret + Pulumi config dropped. The
202
- // runtime AI provider configuration lives at /security/ai (key
202
+ // runtime AI provider configuration lives at /settings/ai (key
203
203
  // encrypted under the project KEK + stored in ai_providers).
204
204
  // Pre-v0.3.2 the wizard prompted for a key + Pulumi provisioned a
205
205
  // Secret + SecretVersion, but the Cloud Run service never read it
@@ -31,7 +31,7 @@ config:
31
31
  type: string
32
32
  description: GCP project id (also the Firebase project — Firebase Hosting requires the Firebase Management API to be enabled on the same project).
33
33
  # v0.3.2 — anthropicApiKey config dropped. Runtime path is
34
- # /security/ai → ai_providers (KEK-encrypted).
34
+ # /settings/ai → ai_providers (KEK-encrypted).
35
35
  # The 7 cross-provider knobs (subset of gcp's 8 — no Cloud Armor adaptive protection here)
36
36
  caelo-gcp-firebase:region:
37
37
  type: string
@@ -172,14 +172,14 @@ const kekBytes = new random.RandomBytes(`${namePrefix}-secret-kek-bytes`, { leng
172
172
  const postgresPassword = pulumi.secret(pgPasswordBytes.hex);
173
173
  const caeloSecretKek = pulumi.secret(kekBytes.hex);
174
174
  // v0.3.2 — anthropic-api-key Secret + Pulumi config dropped. The
175
- // runtime AI provider configuration lives at /security/ai (key
175
+ // runtime AI provider configuration lives at /settings/ai (key
176
176
  // encrypted under the project KEK + stored in ai_providers).
177
177
  // Pre-v0.3.2 the wizard prompted for a key + Pulumi provisioned a
178
178
  // Secret + SecretVersion, but the Cloud Run service never read it
179
179
  // (no env-var mount existed). Dead code path removed.
180
180
  // v0.6.6 — resend-api-key secret + IAM binding removed. The Resend
181
181
  // API key now lives in the email_config DB row (set via the Owner UI
182
- // /security/email/pending flow per email_config_pending.ts), not in
182
+ // /settings/email/pending flow per email_config_pending.ts), not in
183
183
  // Secret Manager. The Pulumi-managed secret + binding were scaffolded
184
184
  // in v0.3.0 but never wired to runtime (transport.ts reads from
185
185
  // cfg.config.apiKey, never from Secret Manager). Drop to reduce
@@ -16,6 +16,10 @@ cd packages/provisioning/stacks/self-hosted
16
16
  pulumi stack init prod
17
17
  pulumi config set caelo-self-hosted:domain example.com
18
18
  pulumi config set caelo-self-hosted:ownerEmail me@example.com
19
+ # The signed release images, pinned by digest — the values `cms-provision init`
20
+ # verified and recorded in .caelo/release.json:
21
+ pulumi config set caelo-self-hosted:adminImage ghcr.io/caelo-cms/admin@sha256:<digest>
22
+ pulumi config set caelo-self-hosted:gatewayImage ghcr.io/caelo-cms/gateway@sha256:<digest>
19
23
  pulumi up
20
24
  ```
21
25
 
@@ -35,10 +35,17 @@ const ownerEmail = cfg.require("ownerEmail");
35
35
  const caeloDir = cfg.get("caeloDir") ?? "./.caelo";
36
36
  // #553 — same knob as every adapter; undefined = stack-contract default.
37
37
  const adminMemory = cfg.get("adminMemory");
38
+ // #696 — the prebuilt, cosign-verified release images, pinned by digest
39
+ // (`ghcr.io/caelo-cms/<svc>@sha256:…`; the generator refuses anything else).
40
+ // `cms-provision init` resolves + verifies them and records them in
41
+ // .caelo/release.json; copy those values here.
42
+ const adminImage = cfg.require("adminImage");
43
+ const gatewayImage = cfg.require("gatewayImage");
38
44
 
39
45
  const composePath = resolve(caeloDir, "docker-compose.yml");
40
46
  const caddyPath = resolve(caeloDir, "Caddyfile");
41
- const tokenPath = resolve(caeloDir, "pending-token.json");
47
+ // The admin container mounts only `<caeloDir>/bootstrap/` (compose.ts).
48
+ const tokenPath = resolve(caeloDir, "bootstrap", "pending-token.json");
42
49
 
43
50
  // Mint secrets at preview time. Pulumi's secret-handling encrypts these
44
51
  // in the state file; `pulumi stack output --show-secrets postgresPassword`
@@ -71,6 +78,7 @@ const composeYaml = pulumi
71
78
  resendApiKey: process.env.RESEND_API_KEY,
72
79
  diskSize: "20Gi",
73
80
  ...(adminMemory ? { adminMemory } : {}),
81
+ images: { mode: "release", admin: adminImage, gateway: gatewayImage },
74
82
  }),
75
83
  );
76
84
 
@@ -94,7 +102,7 @@ const tokenInfo = generateBootstrapToken();
94
102
  // Stage all three files via a single local.Command so a destroy
95
103
  // removes them transactionally.
96
104
  const writeFiles = new local.Command("caeloConfigFile", {
97
- create: pulumi.interpolate`mkdir -p ${caeloDir} && cat > ${composePath} <<'EOF'
105
+ create: pulumi.interpolate`mkdir -p ${caeloDir}/bootstrap && cat > ${composePath} <<'EOF'
98
106
  ${composeYaml}
99
107
  EOF
100
108
  cat > ${caddyPath} <<'EOF'