@caelo-cms/provisioning 0.10.61 → 0.10.62

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 (281) hide show
  1. package/caddy/Caddyfile.production +7 -0
  2. package/caddy/Caddyfile.staging +7 -0
  3. package/dist/admin-internal-answer.d.ts +12 -0
  4. package/dist/admin-internal-answer.d.ts.map +1 -0
  5. package/dist/admin-internal-answer.js +32 -0
  6. package/dist/admin-internal-answer.js.map +1 -0
  7. package/dist/admin-internal-google.d.ts +4 -0
  8. package/dist/admin-internal-google.d.ts.map +1 -0
  9. package/dist/admin-internal-google.js +161 -0
  10. package/dist/admin-internal-google.js.map +1 -0
  11. package/dist/admin-internal-self-hosted.d.ts +30 -0
  12. package/dist/admin-internal-self-hosted.d.ts.map +1 -0
  13. package/dist/admin-internal-self-hosted.js +92 -0
  14. package/dist/admin-internal-self-hosted.js.map +1 -0
  15. package/dist/admin-internal.d.ts +33 -12
  16. package/dist/admin-internal.d.ts.map +1 -1
  17. package/dist/admin-internal.js +27 -159
  18. package/dist/admin-internal.js.map +1 -1
  19. package/dist/agent/command.d.ts +7 -0
  20. package/dist/agent/command.d.ts.map +1 -1
  21. package/dist/agent/command.js +1 -0
  22. package/dist/agent/command.js.map +1 -1
  23. package/dist/agent/lock.d.ts +13 -1
  24. package/dist/agent/lock.d.ts.map +1 -1
  25. package/dist/agent/lock.js +62 -5
  26. package/dist/agent/lock.js.map +1 -1
  27. package/dist/agent/run.d.ts +5 -1
  28. package/dist/agent/run.d.ts.map +1 -1
  29. package/dist/agent/run.js +8 -1
  30. package/dist/agent/run.js.map +1 -1
  31. package/dist/agent-db.js +192 -90
  32. package/dist/caddy.d.ts.map +1 -1
  33. package/dist/caddy.js +11 -1
  34. package/dist/caddy.js.map +1 -1
  35. package/dist/cli-routing.js +1 -1
  36. package/dist/cli-routing.js.map +1 -1
  37. package/dist/cli.js +95 -38
  38. package/dist/cli.js.map +1 -1
  39. package/dist/compose.d.ts +7 -0
  40. package/dist/compose.d.ts.map +1 -1
  41. package/dist/compose.js +5 -0
  42. package/dist/compose.js.map +1 -1
  43. package/dist/converge-job-gcp.d.ts.map +1 -1
  44. package/dist/converge-job-gcp.js +10 -7
  45. package/dist/converge-job-gcp.js.map +1 -1
  46. package/dist/converge-job-preflight.d.ts +21 -0
  47. package/dist/converge-job-preflight.d.ts.map +1 -0
  48. package/dist/converge-job-preflight.js +111 -0
  49. package/dist/converge-job-preflight.js.map +1 -0
  50. package/dist/converge-job.d.ts +8 -2
  51. package/dist/converge-job.d.ts.map +1 -1
  52. package/dist/converge-job.js +14 -0
  53. package/dist/converge-job.js.map +1 -1
  54. package/dist/gateway-credentials.d.ts +5 -3
  55. package/dist/gateway-credentials.d.ts.map +1 -1
  56. package/dist/gateway-credentials.js +5 -8
  57. package/dist/gateway-credentials.js.map +1 -1
  58. package/dist/gcloud.d.ts +29 -0
  59. package/dist/gcloud.d.ts.map +1 -1
  60. package/dist/gcloud.js +66 -0
  61. package/dist/gcloud.js.map +1 -1
  62. package/dist/infra-contract.d.ts +1 -1
  63. package/dist/infra-contract.d.ts.map +1 -1
  64. package/dist/infra-contract.js +10 -1
  65. package/dist/infra-contract.js.map +1 -1
  66. package/dist/install-job.d.ts +3 -1
  67. package/dist/install-job.d.ts.map +1 -1
  68. package/dist/install-job.js.map +1 -1
  69. package/dist/install-state.d.ts +10 -0
  70. package/dist/install-state.d.ts.map +1 -1
  71. package/dist/install-state.js +12 -0
  72. package/dist/install-state.js.map +1 -1
  73. package/dist/lifecycle.d.ts +12 -0
  74. package/dist/lifecycle.d.ts.map +1 -1
  75. package/dist/lifecycle.js +113 -28
  76. package/dist/lifecycle.js.map +1 -1
  77. package/dist/mcp-iap.d.ts +2 -0
  78. package/dist/mcp-iap.d.ts.map +1 -1
  79. package/dist/mcp-iap.js +50 -17
  80. package/dist/mcp-iap.js.map +1 -1
  81. package/dist/owner-reset.d.ts +16 -19
  82. package/dist/owner-reset.d.ts.map +1 -1
  83. package/dist/owner-reset.js +92 -19
  84. package/dist/owner-reset.js.map +1 -1
  85. package/dist/preview-plan.d.ts +71 -0
  86. package/dist/preview-plan.d.ts.map +1 -0
  87. package/dist/preview-plan.js +168 -0
  88. package/dist/preview-plan.js.map +1 -0
  89. package/dist/public-role-isolation.d.ts +2 -0
  90. package/dist/public-role-isolation.d.ts.map +1 -1
  91. package/dist/public-role-isolation.js +9 -3
  92. package/dist/public-role-isolation.js.map +1 -1
  93. package/dist/release-contract.d.ts.map +1 -1
  94. package/dist/release-contract.js +4 -0
  95. package/dist/release-contract.js.map +1 -1
  96. package/dist/self-hosted-internal-secret.d.ts +27 -0
  97. package/dist/self-hosted-internal-secret.d.ts.map +1 -0
  98. package/dist/self-hosted-internal-secret.js +69 -0
  99. package/dist/self-hosted-internal-secret.js.map +1 -0
  100. package/dist/self-hosted-release.d.ts +3 -1
  101. package/dist/self-hosted-release.d.ts.map +1 -1
  102. package/dist/self-hosted-release.js +6 -2
  103. package/dist/self-hosted-release.js.map +1 -1
  104. package/dist/self-hosted-upgrade.d.ts +13 -1
  105. package/dist/self-hosted-upgrade.d.ts.map +1 -1
  106. package/dist/self-hosted-upgrade.js +26 -2
  107. package/dist/self-hosted-upgrade.js.map +1 -1
  108. package/dist/stack-converge.d.ts +5 -2
  109. package/dist/stack-converge.d.ts.map +1 -1
  110. package/dist/stack-converge.js +73 -8
  111. package/dist/stack-converge.js.map +1 -1
  112. package/dist/staging-admin.d.ts +4 -1
  113. package/dist/staging-admin.d.ts.map +1 -1
  114. package/dist/staging-admin.js.map +1 -1
  115. package/dist/state-backend.d.ts +3 -2
  116. package/dist/state-backend.d.ts.map +1 -1
  117. package/dist/state-backend.js +3 -2
  118. package/dist/state-backend.js.map +1 -1
  119. package/dist/state-command.d.ts +17 -0
  120. package/dist/state-command.d.ts.map +1 -1
  121. package/dist/state-command.js +34 -5
  122. package/dist/state-command.js.map +1 -1
  123. package/dist/state-migrate.d.ts +14 -3
  124. package/dist/state-migrate.d.ts.map +1 -1
  125. package/dist/state-migrate.js +31 -7
  126. package/dist/state-migrate.js.map +1 -1
  127. package/dist/state-pulumi.d.ts +0 -2
  128. package/dist/state-pulumi.d.ts.map +1 -1
  129. package/dist/state-pulumi.js +19 -20
  130. package/dist/state-pulumi.js.map +1 -1
  131. package/dist/static-security-headers.d.ts +86 -0
  132. package/dist/static-security-headers.d.ts.map +1 -0
  133. package/dist/static-security-headers.js +126 -0
  134. package/dist/static-security-headers.js.map +1 -0
  135. package/dist/static-svg-gcp.d.ts +28 -0
  136. package/dist/static-svg-gcp.d.ts.map +1 -0
  137. package/dist/static-svg-gcp.js +106 -0
  138. package/dist/static-svg-gcp.js.map +1 -0
  139. package/dist/upgrade/app-roll.d.ts +3 -0
  140. package/dist/upgrade/app-roll.d.ts.map +1 -1
  141. package/dist/upgrade/app-roll.js +12 -5
  142. package/dist/upgrade/app-roll.js.map +1 -1
  143. package/dist/upgrade/backup.d.ts +2 -0
  144. package/dist/upgrade/backup.d.ts.map +1 -1
  145. package/dist/upgrade/backup.js +5 -4
  146. package/dist/upgrade/backup.js.map +1 -1
  147. package/dist/upgrade/converge.d.ts +7 -0
  148. package/dist/upgrade/converge.d.ts.map +1 -1
  149. package/dist/upgrade/converge.js +19 -7
  150. package/dist/upgrade/converge.js.map +1 -1
  151. package/dist/upgrade/gcp-lookup.d.ts +38 -3
  152. package/dist/upgrade/gcp-lookup.d.ts.map +1 -1
  153. package/dist/upgrade/gcp-lookup.js +31 -9
  154. package/dist/upgrade/gcp-lookup.js.map +1 -1
  155. package/dist/upgrade/health.d.ts +31 -5
  156. package/dist/upgrade/health.d.ts.map +1 -1
  157. package/dist/upgrade/health.js +114 -25
  158. package/dist/upgrade/health.js.map +1 -1
  159. package/dist/upgrade/release-images.d.ts +17 -0
  160. package/dist/upgrade/release-images.d.ts.map +1 -1
  161. package/dist/upgrade/release-images.js +23 -12
  162. package/dist/upgrade/release-images.js.map +1 -1
  163. package/dist/upgrade/reporter.d.ts +2 -0
  164. package/dist/upgrade/reporter.d.ts.map +1 -1
  165. package/dist/upgrade/reporter.js +1 -0
  166. package/dist/upgrade/reporter.js.map +1 -1
  167. package/dist/upgrade/upgrade.d.ts +11 -1
  168. package/dist/upgrade/upgrade.d.ts.map +1 -1
  169. package/dist/upgrade/upgrade.js +5 -2
  170. package/dist/upgrade/upgrade.js.map +1 -1
  171. package/dist/upgrader-gcp.d.ts +12 -2
  172. package/dist/upgrader-gcp.d.ts.map +1 -1
  173. package/dist/upgrader-gcp.js +22 -13
  174. package/dist/upgrader-gcp.js.map +1 -1
  175. package/dist/upgrader-iam-preflight.d.ts +16 -3
  176. package/dist/upgrader-iam-preflight.d.ts.map +1 -1
  177. package/dist/upgrader-iam-preflight.js +9 -4
  178. package/dist/upgrader-iam-preflight.js.map +1 -1
  179. package/dist/upgrader-job.d.ts.map +1 -1
  180. package/dist/upgrader-job.js +10 -8
  181. package/dist/upgrader-job.js.map +1 -1
  182. package/dist/upgrader-reporter.d.ts.map +1 -1
  183. package/dist/upgrader-reporter.js +1 -0
  184. package/dist/upgrader-reporter.js.map +1 -1
  185. package/dist/wizards/gcp-pulumi.d.ts +70 -23
  186. package/dist/wizards/gcp-pulumi.d.ts.map +1 -1
  187. package/dist/wizards/gcp-pulumi.js +118 -39
  188. package/dist/wizards/gcp-pulumi.js.map +1 -1
  189. package/dist/wizards/gcp.d.ts.map +1 -1
  190. package/dist/wizards/gcp.js +67 -11
  191. package/dist/wizards/gcp.js.map +1 -1
  192. package/package.json +2 -2
  193. package/src/admin-internal-answer.ts +43 -0
  194. package/src/admin-internal-google.ts +187 -0
  195. package/src/admin-internal-self-hosted.test.ts +70 -0
  196. package/src/admin-internal-self-hosted.ts +128 -0
  197. package/src/admin-internal.ts +59 -174
  198. package/src/admin-memory.test.ts +1 -0
  199. package/src/agent/command.ts +3 -0
  200. package/src/agent/lock-config.test.ts +57 -2
  201. package/src/agent/lock.ts +68 -5
  202. package/src/agent/run.test.ts +18 -1
  203. package/src/agent/run.ts +17 -6
  204. package/src/caddy-redirects.test.ts +1 -0
  205. package/src/caddy.ts +12 -0
  206. package/src/cli-routing.ts +1 -1
  207. package/src/cli.ts +102 -44
  208. package/src/compose.ts +12 -0
  209. package/src/converge-job-gcp.ts +16 -11
  210. package/src/converge-job-preflight.test.ts +108 -0
  211. package/src/converge-job-preflight.ts +124 -0
  212. package/src/converge-job.test.ts +50 -0
  213. package/src/converge-job.ts +38 -2
  214. package/src/gateway-credentials.test.ts +4 -3
  215. package/src/gateway-credentials.ts +6 -10
  216. package/src/gateway-env-isolation.test.ts +1 -0
  217. package/src/gcloud.test.ts +93 -1
  218. package/src/gcloud.ts +82 -0
  219. package/src/index.test.ts +38 -1
  220. package/src/infra-contract.test.ts +4 -3
  221. package/src/infra-contract.ts +10 -1
  222. package/src/install-job.ts +5 -2
  223. package/src/install-state.ts +13 -0
  224. package/src/lifecycle.ts +134 -28
  225. package/src/mcp-iap.test.ts +66 -5
  226. package/src/mcp-iap.ts +55 -17
  227. package/src/owner-reset-providers.test.ts +370 -0
  228. package/src/owner-reset.test.ts +2 -2
  229. package/src/owner-reset.ts +108 -19
  230. package/src/preview-plan.test.ts +233 -0
  231. package/src/preview-plan.ts +226 -0
  232. package/src/public-role-isolation.test.ts +13 -2
  233. package/src/public-role-isolation.ts +14 -4
  234. package/src/release-contract.ts +4 -0
  235. package/src/self-hosted-compose.test.ts +25 -0
  236. package/src/self-hosted-internal-secret.test.ts +61 -0
  237. package/src/self-hosted-internal-secret.ts +80 -0
  238. package/src/self-hosted-release.ts +10 -3
  239. package/src/self-hosted-upgrade.test.ts +35 -1
  240. package/src/self-hosted-upgrade.ts +40 -3
  241. package/src/stack-contract.test.ts +1 -0
  242. package/src/stack-converge.test.ts +89 -5
  243. package/src/stack-converge.ts +81 -8
  244. package/src/staging-admin.test.ts +1 -1
  245. package/src/staging-admin.ts +2 -1
  246. package/src/state-backend.ts +3 -2
  247. package/src/state-command.test.ts +31 -0
  248. package/src/state-command.ts +35 -8
  249. package/src/state-migrate.test.ts +58 -7
  250. package/src/state-migrate.ts +48 -10
  251. package/src/state-pulumi.ts +20 -21
  252. package/src/static-security-headers.test.ts +124 -0
  253. package/src/static-security-headers.ts +154 -0
  254. package/src/static-svg-gcp.test.ts +133 -0
  255. package/src/static-svg-gcp.ts +140 -0
  256. package/src/upgrade/app-roll.ts +18 -7
  257. package/src/upgrade/backup.ts +14 -5
  258. package/src/upgrade/converge.ts +25 -7
  259. package/src/upgrade/gcp-lookup.test.ts +80 -1
  260. package/src/upgrade/gcp-lookup.ts +61 -11
  261. package/src/upgrade/health.test.ts +132 -8
  262. package/src/upgrade/health.ts +169 -31
  263. package/src/upgrade/release-images.test.ts +17 -0
  264. package/src/upgrade/release-images.ts +26 -14
  265. package/src/upgrade/reporter.ts +3 -0
  266. package/src/upgrade/upgrade.test.ts +137 -8
  267. package/src/upgrade/upgrade.ts +14 -2
  268. package/src/upgrader-gcp.ts +28 -13
  269. package/src/upgrader-iam-preflight.test.ts +6 -3
  270. package/src/upgrader-iam-preflight.ts +26 -5
  271. package/src/upgrader-job.ts +14 -6
  272. package/src/upgrader-reporter.ts +1 -0
  273. package/src/wizards/gcp-pulumi.test.ts +1 -1
  274. package/src/wizards/gcp-pulumi.ts +147 -38
  275. package/src/wizards/gcp.ts +89 -9
  276. package/src/wizards/stack-work-dir.test.ts +175 -0
  277. package/stacks/aws/index.ts +40 -0
  278. package/stacks/azure/index.ts +22 -1
  279. package/stacks/gcp/README.md +4 -0
  280. package/stacks/gcp/index.ts +6 -2
  281. package/stacks/gcp/Pulumi.production.yaml +0 -16
@@ -3,10 +3,10 @@ import { gcpNamePrefix, upgraderJobName } from "./gcp-names.js";
3
3
  import { StateLockHeldError } from "./state-store.js";
4
4
  import { executeAppRoll, planAppRoll, } from "./upgrade/app-roll.js";
5
5
  import { restoreCommand, takeSqlBackup } from "./upgrade/backup.js";
6
- import { findServingImage, resolveGcpResourceName, servingImageDigests, } from "./upgrade/gcp-lookup.js";
6
+ import { findServingImage, lookupFailure, resolveGcpResourceName, servingImageDigests, } from "./upgrade/gcp-lookup.js";
7
7
  import { releaseImageRef } from "./upgrade/release-images.js";
8
8
  import { assessUpgradeRequest } from "./upgrader-assess.js";
9
- import { preflightErrorReason, preflightMissingReason, runIamPreflight, upgraderAccessChecks, } from "./upgrader-iam-preflight.js";
9
+ import { preflightErrorReason, preflightMissingReason, runIamPreflight, UPGRADER_PREFLIGHT_VOICE, upgraderAccessChecks, } from "./upgrader-iam-preflight.js";
10
10
  import { findServingRelease, recordMatchesServing, } from "./upgrader-records.js";
11
11
  import { eventReporter } from "./upgrader-reporter.js";
12
12
  const ROLLED_PHASES = new Set(["roll", "health"]);
@@ -240,10 +240,10 @@ export async function runUpgraderJob(deps) {
240
240
  // cannot match (#799) ends the run here, all of them named, not halfway.
241
241
  const access = await runIamPreflight(upgraderAccessChecks({ projectId: deps.projectId, region: deps.region, env: deps.env }), deps.iam);
242
242
  if (access.kind === "missing") {
243
- return stopWith("needs_cloud_shell", ["iam-preflight"], preflightMissingReason(access.missing));
243
+ return stopWith("needs_cloud_shell", ["iam-preflight"], preflightMissingReason(access.missing, UPGRADER_PREFLIGHT_VOICE));
244
244
  }
245
245
  if (access.kind === "error") {
246
- return stopWith("failed", ["iam-preflight"], preflightErrorReason(access.errors));
246
+ return stopWith("failed", ["iam-preflight"], preflightErrorReason(access.errors, UPGRADER_PREFLIGHT_VOICE));
247
247
  }
248
248
  r.info("The upgrader has every permission this update needs.");
249
249
  const m = decision.manifest;
@@ -261,6 +261,7 @@ export async function runUpgraderJob(deps) {
261
261
  env: deps.env,
262
262
  domain: meta.domain,
263
263
  stagingHost: meta.stagingDomain ?? `staging.${meta.domain}`,
264
+ credentials: "job",
264
265
  }, images, deps.run);
265
266
  if (!planned.ok) {
266
267
  return stopWith("failed", ["plan"], `Nothing was changed: ${planned.error}.`);
@@ -275,7 +276,7 @@ export async function runUpgraderJob(deps) {
275
276
  // 5. No backup, no change.
276
277
  r.phase("backup");
277
278
  const sBak = r.step("Backing up the database before anything changes...");
278
- const backup = await takeSqlBackup(deps.run, { projectId: deps.projectId, env: deps.env }, `pre-upgrade to ${m.version}`, deps.now);
279
+ const backup = await takeSqlBackup(deps.run, { projectId: deps.projectId, env: deps.env, credentials: "job" }, `pre-upgrade to ${m.version}`, deps.now);
279
280
  if (!backup.ok) {
280
281
  sBak.failed(`Backup failed: ${backup.error}`);
281
282
  return stopWith("failed", ["backup"], `The pre-upgrade database backup failed, so nothing was changed (${backup.error}). Try again later.`);
@@ -381,9 +382,10 @@ async function servingDigests(deps) {
381
382
  for (const slug of ["admin", "gateway"]) {
382
383
  const prefix = `${gcpNamePrefix(deps.env)}-${slug}`;
383
384
  const service = await resolveGcpResourceName(deps.run, "run-service", prefix, deps.projectId, deps.region);
384
- const image = service
385
- ? await findServingImage(deps.run, deps.projectId, deps.region, service)
386
- : null;
385
+ if (service.status !== "found") {
386
+ return { ok: false, error: lookupFailure(service, `${prefix}* Cloud Run service`, "job") };
387
+ }
388
+ const image = await findServingImage(deps.run, deps.projectId, deps.region, service.name);
387
389
  if (!image)
388
390
  return { ok: false, error: `could not read which image the ${slug} serves` };
389
391
  digests[slug] = servingImageDigests(image);
@@ -1 +1 @@
1
- {"version":3,"file":"upgrader-job.js","sourceRoot":"","sources":["../src/upgrader-job.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrader-job.js","sourceRoot":"","sources":["../src/upgrader-job.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upgrader-reporter.d.ts","sourceRoot":"","sources":["../src/upgrader-reporter.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAc,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEzE,4DAA4D;AAC5D,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,wBAAwB,EAC/B,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,yCAAyC;AACzC,MAAM,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC,KAAK,IAAI,CAAC;AAEX,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,sEAAsE;IACtE,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,gDAAgD;IAChD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAUrE;AASD,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CA0C5F"}
1
+ {"version":3,"file":"upgrader-reporter.d.ts","sourceRoot":"","sources":["../src/upgrader-reporter.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAc,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEzE,4DAA4D;AAC5D,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,wBAAwB,EAC/B,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,yCAAyC;AACzC,MAAM,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC,KAAK,IAAI,CAAC;AAEX,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,sEAAsE;IACtE,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,gDAAgD;IAChD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAUrE;AASD,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CA2C5F"}
@@ -71,6 +71,7 @@ export function eventReporter(sink, log, requestId) {
71
71
  done: (m) => emit("success", m),
72
72
  failed: (m) => emit("error", m),
73
73
  warned: (m) => emit("warn", m),
74
+ progress: (m) => emit("info", m),
74
75
  };
75
76
  },
76
77
  info: (m) => emit("info", m),
@@ -1 +1 @@
1
- {"version":3,"file":"upgrader-reporter.js","sourceRoot":"","sources":["../src/upgrader-reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrader-reporter.js","sourceRoot":"","sources":["../src/upgrader-reporter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as pulumi from "@pulumi/pulumi/automation";
2
- import type { ImageDigests } from "../install-state.js";
2
+ import { type ImageDigests } from "../install-state.js";
3
+ import { type PlannedStep } from "../preview-plan.js";
3
4
  import type { ResolvedBackend } from "../state-backend.js";
4
5
  /**
5
6
  * The §11.B knobs every wizard run sets (and the cost table prices). One
@@ -79,11 +80,44 @@ export interface PulumiUpResult {
79
80
  };
80
81
  }
81
82
  /**
82
- * Resolve the GCP stack workdir relative to the installed package.
83
- * Works whether the CLI runs from source (apps/admin/scripts/...)
84
- * or from the published npm tarball (node_modules/@caelo-cms/...).
83
+ * The stack program shipped in the package (`stacks/<provider>/`: its
84
+ * Pulumi.yaml and index.ts), whether the CLI runs from source or from the
85
+ * published tarball. Read-only at runtime: Pulumi runs in the install's own
86
+ * work dir (install-state.ts `stackWorkDir`, {@link prepareStackWorkDir}),
87
+ * never here.
85
88
  */
86
- export declare function gcpStackWorkDir(provider?: "gcp" | "gcp-firebase"): string;
89
+ export declare function packageStackDir(provider: "gcp" | "gcp-firebase"): string;
90
+ /**
91
+ * The package's project file with `main` pointing from `workDir` at the
92
+ * package's stack program, so Pulumi runs that program (its relative
93
+ * imports, tsconfig and node_modules resolve from the package) while the
94
+ * stack settings file stays in `workDir`. Pulumi joins `main` to the
95
+ * project dir, so it must be relative — and computed between real paths:
96
+ * Pulumi resolves the project dir through symlinks (macOS `/var` →
97
+ * `/private/var`, a symlinked home or package cache), so a path relative to
98
+ * the symlinked spelling points nowhere.
99
+ *
100
+ * @param programDir the package's stack dir, symlinks resolved
101
+ * @param workDir the install's work dir, symlinks resolved
102
+ */
103
+ export declare function workDirProjectFile(projectYaml: string, programDir: string, workDir: string): string;
104
+ /**
105
+ * Create or refresh the install's stack work dir (install-state.ts
106
+ * `stackWorkDir`) and
107
+ * return it. The project file is rewritten on every run: each `bunx`
108
+ * version unpacks the package somewhere else. The settings file is left as
109
+ * it is (it is the install's own). Atomic (temp file + rename), so two runs
110
+ * for the same install never leave a half-written project file.
111
+ */
112
+ export declare function prepareStackWorkDir(installRoot: string, provider: "gcp" | "gcp-firebase", programDir?: string): string;
113
+ /**
114
+ * Refuse to run Pulumi when the stack config names another project than
115
+ * the install's (#736, CLAUDE.md §2): a preview or `up` would plan the
116
+ * install's state against another install's project — replacing its
117
+ * Firebase site, buckets and IAM members. Defense in depth: each install
118
+ * has its own work dir, so nothing should ever put another project there.
119
+ */
120
+ export declare function assertStackProject(stack: pulumi.Stack, provider: "gcp" | "gcp-firebase", projectId: string): Promise<void>;
87
121
  /**
88
122
  * The stack config keys that pin each Cloud Run service's image
89
123
  * (`<ns>:image-digest-<service>`, read by `imageRef` / `imageTag` in the
@@ -105,6 +139,7 @@ export declare function imageDigestConfig(provider: "gcp" | "gcp-firebase", dige
105
139
  * @returns the override keys it removed.
106
140
  */
107
141
  export declare function writeImageDigestsToStack(inputs: {
142
+ installRoot: string;
108
143
  backend: ResolvedBackend;
109
144
  provider: "gcp" | "gcp-firebase";
110
145
  digests: ImageDigests;
@@ -125,19 +160,19 @@ export declare function presentImageOverrides(provider: "gcp" | "gcp-firebase",
125
160
  * @returns the output's value, or undefined when the stack has no such output
126
161
  */
127
162
  export declare function readStackOutput(inputs: {
163
+ installRoot: string;
128
164
  backend: ResolvedBackend;
129
165
  provider: "gcp" | "gcp-firebase";
130
166
  name: string;
131
167
  }): Promise<unknown>;
132
168
  /**
133
- * The stack's settings file in the package's stack dir with secrets
134
- * settings that can't contradict the install's state, or null when it is
135
- * already fine (#696).
169
+ * The install's stack settings file with secrets settings that can't
170
+ * contradict its state, or null when it is already fine (#696).
136
171
  *
137
- * That file (`Pulumi.production.yaml`) lives in the package, not with the
138
- * state: every `bunx` version unpacks its own, and installs of the same
139
- * provider on one machine share it, so it can name another install's
140
- * passphrase salt or KMS key. A file naming anything but the install's own
172
+ * That file (`Pulumi.production.yaml`, in the install's work dir) is not
173
+ * the state: `state migrate` moves the state to another backend and secrets
174
+ * provider, and the file can still name the old passphrase salt or KMS key.
175
+ * A file naming anything but the install's own
141
176
  * KMS key loses its secrets-provider fields and the `secure:` values
142
177
  * encrypted under them (no stack config the CLI sets is secret);
143
178
  * `PULUMI_FALLBACK_TO_STATE_SECRETS_MANAGER` (resolveBackend) then makes
@@ -148,10 +183,12 @@ export declare function readStackOutput(inputs: {
148
183
  */
149
184
  export declare function alignedStackSettings(settings: pulumi.StackSettings, backend: Pick<ResolvedBackend, "kind" | "secretsProvider">): pulumi.StackSettings | null;
150
185
  /**
151
- * Bring the package's stack settings file in line with the install's backend
186
+ * Bring the install's stack settings file in line with its backend
152
187
  * ({@link alignedStackSettings}) before Pulumi reads it.
188
+ *
189
+ * @param workDir the install's prepared work dir ({@link prepareStackWorkDir})
153
190
  */
154
- export declare function alignStackSettingsFile(backend: ResolvedBackend, provider: "gcp" | "gcp-firebase"): Promise<void>;
191
+ export declare function alignStackSettingsFile(workDir: string, backend: ResolvedBackend): Promise<void>;
155
192
  /**
156
193
  * The environment for a Pulumi call that only touches the stack's state
157
194
  * (select, config, outputs): the backend's variables, with ambient Google
@@ -160,8 +197,8 @@ export declare function alignStackSettingsFile(backend: ResolvedBackend, provide
160
197
  * not a stray key file in the shell.
161
198
  */
162
199
  export declare function stateOnlyEnv(backend: Pick<ResolvedBackend, "envVars">): Record<string, string>;
163
- /** The install's existing stack, on its backend. */
164
- export declare function selectInstallStack(backend: ResolvedBackend, provider: "gcp" | "gcp-firebase"): Promise<pulumi.Stack>;
200
+ /** The install's existing stack, on its backend, in its own work dir. */
201
+ export declare function selectInstallStack(installRoot: string, backend: ResolvedBackend, provider: "gcp" | "gcp-firebase"): Promise<pulumi.Stack>;
165
202
  /**
166
203
  * Pick the stack's `secretReplication` (see stacks/<provider>/index.ts).
167
204
  * A value already in config wins. Otherwise secrets that already exist
@@ -181,8 +218,8 @@ export interface StateResource {
181
218
  /**
182
219
  * The region an existing stack was deployed in, read from its state (the
183
220
  * stacks' explicit `gcp.Provider` carries it), or null for a stack with
184
- * nothing deployed. State, not stack config: the config file lives in the
185
- * package's stack dir, which a newer `bunx` version doesn't share.
221
+ * nothing deployed. State, not stack config: the state is authoritative,
222
+ * and the settings file of an install from before #736 starts empty.
186
223
  */
187
224
  export declare function deployedStackRegion(resources: ReadonlyArray<StateResource>): string | null;
188
225
  /**
@@ -196,10 +233,10 @@ export type StackConfigInputs = Pick<PulumiUpInputs, "projectId" | "domain" | "s
196
233
  };
197
234
  /**
198
235
  * Set every config value the stack reads, then its `secretReplication`
199
- * ({@link resolveSecretReplication}). The config file lives in the package's
200
- * stack dir, so every run sets all of it — the wizard before `up`, and
201
- * `state migrate` before the previews that prove a migration changed
202
- * nothing (#696).
236
+ * ({@link resolveSecretReplication}). The wizard sets all of it before every
237
+ * `up`, so install.json stays the source of truth; `state migrate` sets it
238
+ * before the previews that prove a migration changed nothing (#696) when
239
+ * the install's settings file does not hold it yet.
203
240
  *
204
241
  * @returns the secret replication now configured
205
242
  */
@@ -224,10 +261,20 @@ export declare function applyStackConfig(stack: pulumi.Stack, inputs: StackConfi
224
261
  * GCP provider plugin, not by the backend.
225
262
  */
226
263
  export declare function pulumiGcpEnv(base: NodeJS.ProcessEnv, inputs: Pick<PulumiUpInputs, "backend" | "impersonateServiceAccount">): Record<string, string>;
264
+ /** Thrown when the review (preview-plan.ts planGate) stops `pulumi up` after the preview. */
265
+ export declare class PulumiUpDeclinedError extends Error {
266
+ readonly name = "PulumiUpDeclinedError";
267
+ }
227
268
  /**
228
269
  * Run `pulumi up` against the GCP stack via the Automation SDK.
229
270
  * Streams resource-create events to the supplied onEvent callback so
230
271
  * the wizard can render a live progress bar.
272
+ *
273
+ * On a stack that already holds resources, a preview runs first (#737) and
274
+ * `review` sees its planned steps: it lists them and decides (planGate)
275
+ * whether `up` may apply them. Nothing is applied when it says no.
276
+ *
277
+ * @throws PulumiUpDeclinedError when `review` declines the plan
231
278
  */
232
- export declare function pulumiUpGcp(inputs: PulumiUpInputs, onEvent: (kind: "resource" | "error" | "log", message: string) => void): Promise<PulumiUpResult>;
279
+ export declare function pulumiUpGcp(inputs: PulumiUpInputs, onEvent: (kind: "resource" | "error" | "log", message: string) => void, review: (steps: readonly PlannedStep[]) => Promise<boolean>): Promise<PulumiUpResult>;
233
280
  //# sourceMappingURL=gcp-pulumi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gcp-pulumi.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp-pulumi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gcp-pulumi.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp-pulumi.ts"],"names":[],"mappings":"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"}
@@ -9,11 +9,14 @@
9
9
  * bucket + KMS key, or the local dir + passphrase of an older install),
10
10
  * config and up; failures surface inline with provider errors.
11
11
  */
12
- import { resolve as resolvePath } from "node:path";
12
+ import { mkdirSync, readFileSync, realpathSync, renameSync, writeFileSync } from "node:fs";
13
+ import { join, relative, resolve as resolvePath } from "node:path";
13
14
  import * as pulumi from "@pulumi/pulumi/automation";
14
15
  import { AUDIT_PARALLELISM_DEFAULT } from "../audit-job-setup.js";
15
16
  import { checkpointableOutputs } from "../checkpoint-secrets.js";
16
17
  import { GCP_STACK_ENV } from "../gcp-names.js";
18
+ import { stackWorkDir } from "../install-state.js";
19
+ import { collectPreviewSteps } from "../preview-plan.js";
17
20
  import { AMBIENT_GOOGLE_CREDENTIAL_ENV, withoutAmbientGoogleCredentials, } from "../provisioner-identity.js";
18
21
  import { ensureGeneratedSecrets, stackSecretReplication } from "../runtime-secrets.js";
19
22
  import { ADMIN_MEMORY_DEFAULT } from "../stack-contract.js";
@@ -37,17 +40,73 @@ export const GCP_STACK_KNOB_DEFAULTS = {
37
40
  auditParallelism: AUDIT_PARALLELISM_DEFAULT,
38
41
  };
39
42
  /**
40
- * Resolve the GCP stack workdir relative to the installed package.
41
- * Works whether the CLI runs from source (apps/admin/scripts/...)
42
- * or from the published npm tarball (node_modules/@caelo-cms/...).
43
+ * The stack program shipped in the package (`stacks/<provider>/`: its
44
+ * Pulumi.yaml and index.ts), whether the CLI runs from source or from the
45
+ * published tarball. Read-only at runtime: Pulumi runs in the install's own
46
+ * work dir (install-state.ts `stackWorkDir`, {@link prepareStackWorkDir}),
47
+ * never here.
43
48
  */
44
- export function gcpStackWorkDir(provider = "gcp") {
45
- // The Pulumi.yaml + stacks/<provider>/index.ts ship in the npm
46
- // tarball under `stacks/<provider>/`. From this file's location at
47
- // runtime (dist/wizards/gcp-pulumi.js), the stack dir is two
48
- // levels up + into the provider-specific stack folder.
49
+ export function packageStackDir(provider) {
50
+ // From this file at runtime (src/ or dist/wizards/), two levels up.
49
51
  return resolvePath(import.meta.dir, `../../stacks/${provider}`);
50
52
  }
53
+ /**
54
+ * The package's project file with `main` pointing from `workDir` at the
55
+ * package's stack program, so Pulumi runs that program (its relative
56
+ * imports, tsconfig and node_modules resolve from the package) while the
57
+ * stack settings file stays in `workDir`. Pulumi joins `main` to the
58
+ * project dir, so it must be relative — and computed between real paths:
59
+ * Pulumi resolves the project dir through symlinks (macOS `/var` →
60
+ * `/private/var`, a symlinked home or package cache), so a path relative to
61
+ * the symlinked spelling points nowhere.
62
+ *
63
+ * @param programDir the package's stack dir, symlinks resolved
64
+ * @param workDir the install's work dir, symlinks resolved
65
+ */
66
+ export function workDirProjectFile(projectYaml, programDir, workDir) {
67
+ const mains = [...projectYaml.matchAll(/^main:\s*(\S+)\s*$/gm)];
68
+ if (mains.length !== 1) {
69
+ throw new Error(`${join(programDir, "Pulumi.yaml")} must name its program in exactly one top-level "main:" line (found ${mains.length}); the CLI points the install's stack work dir at it.`);
70
+ }
71
+ const program = resolvePath(programDir, mains[0][1]);
72
+ return projectYaml.replace(/^main:\s*\S+\s*$/m, `main: ${relative(workDir, program)}`);
73
+ }
74
+ /**
75
+ * Create or refresh the install's stack work dir (install-state.ts
76
+ * `stackWorkDir`) and
77
+ * return it. The project file is rewritten on every run: each `bunx`
78
+ * version unpacks the package somewhere else. The settings file is left as
79
+ * it is (it is the install's own). Atomic (temp file + rename), so two runs
80
+ * for the same install never leave a half-written project file.
81
+ */
82
+ export function prepareStackWorkDir(installRoot, provider, programDir = packageStackDir(provider)) {
83
+ const workDir = stackWorkDir(installRoot, provider);
84
+ mkdirSync(workDir, { recursive: true, mode: 0o700 });
85
+ const project = workDirProjectFile(readFileSync(join(programDir, "Pulumi.yaml"), "utf8"), realpathSync(programDir), realpathSync(workDir));
86
+ const target = join(workDir, "Pulumi.yaml");
87
+ const tmp = `${target}.${process.pid}.tmp`;
88
+ writeFileSync(tmp, project, { mode: 0o600 });
89
+ renameSync(tmp, target);
90
+ return workDir;
91
+ }
92
+ /**
93
+ * Refuse to run Pulumi when the stack config names another project than
94
+ * the install's (#736, CLAUDE.md §2): a preview or `up` would plan the
95
+ * install's state against another install's project — replacing its
96
+ * Firebase site, buckets and IAM members. Defense in depth: each install
97
+ * has its own work dir, so nothing should ever put another project there.
98
+ */
99
+ export async function assertStackProject(stack, provider, projectId) {
100
+ const key = `caelo-${provider}:project`;
101
+ const configured = await stack.getConfig(key).then((v) => v.value, (e) => {
102
+ if (/not found/i.test(String(e)))
103
+ return undefined;
104
+ throw e;
105
+ });
106
+ if (configured !== projectId) {
107
+ throw new Error(`the stack config ${join(stack.workspace.workDir, `Pulumi.${GCP_STACK_ENV}.yaml`)} names project ${configured ?? "(none)"}, but this install is ${projectId}. Nothing was run. Delete that file and re-run: the CLI writes the install's config again.`);
108
+ }
109
+ }
51
110
  /**
52
111
  * The stack config keys that pin each Cloud Run service's image
53
112
  * (`<ns>:image-digest-<service>`, read by `imageRef` / `imageTag` in the
@@ -72,12 +131,12 @@ export function imageDigestConfig(provider, digests) {
72
131
  * @returns the override keys it removed.
73
132
  */
74
133
  export async function writeImageDigestsToStack(inputs) {
75
- const stack = await selectInstallStack(inputs.backend, inputs.provider);
134
+ const stack = await selectInstallStack(inputs.installRoot, inputs.backend, inputs.provider);
76
135
  await stack.setAllConfig(imageDigestConfig(inputs.provider, inputs.digests));
77
136
  // Read the settings file, not `getAllConfig()`: `pulumi config` refuses
78
137
  // to list a stack whose required keys (domain, project, …) are unset, and
79
- // the settings file in a freshly unpacked `bunx` package holds only what
80
- // this call just wrote — so every upgrade from a new CLI version failed.
138
+ // a settings file the installer never wrote (an install from before the
139
+ // per-install work dir, #736) holds only what this call just wrote.
81
140
  const settings = await stack.workspace.stackSettings(stack.name);
82
141
  const removedOverrides = presentImageOverrides(inputs.provider, settings.config);
83
142
  if (removedOverrides.length > 0)
@@ -100,19 +159,18 @@ export function presentImageOverrides(provider, config) {
100
159
  * @returns the output's value, or undefined when the stack has no such output
101
160
  */
102
161
  export async function readStackOutput(inputs) {
103
- const stack = await selectInstallStack(inputs.backend, inputs.provider);
162
+ const stack = await selectInstallStack(inputs.installRoot, inputs.backend, inputs.provider);
104
163
  const outputs = await stack.outputs();
105
164
  return outputs[inputs.name]?.value;
106
165
  }
107
166
  /**
108
- * The stack's settings file in the package's stack dir with secrets
109
- * settings that can't contradict the install's state, or null when it is
110
- * already fine (#696).
167
+ * The install's stack settings file with secrets settings that can't
168
+ * contradict its state, or null when it is already fine (#696).
111
169
  *
112
- * That file (`Pulumi.production.yaml`) lives in the package, not with the
113
- * state: every `bunx` version unpacks its own, and installs of the same
114
- * provider on one machine share it, so it can name another install's
115
- * passphrase salt or KMS key. A file naming anything but the install's own
170
+ * That file (`Pulumi.production.yaml`, in the install's work dir) is not
171
+ * the state: `state migrate` moves the state to another backend and secrets
172
+ * provider, and the file can still name the old passphrase salt or KMS key.
173
+ * A file naming anything but the install's own
116
174
  * KMS key loses its secrets-provider fields and the `secure:` values
117
175
  * encrypted under them (no stack config the CLI sets is secret);
118
176
  * `PULUMI_FALLBACK_TO_STATE_SECRETS_MANAGER` (resolveBackend) then makes
@@ -136,14 +194,13 @@ export function alignedStackSettings(settings, backend) {
136
194
  return { ...rest, config: kept };
137
195
  }
138
196
  /**
139
- * Bring the package's stack settings file in line with the install's backend
197
+ * Bring the install's stack settings file in line with its backend
140
198
  * ({@link alignedStackSettings}) before Pulumi reads it.
199
+ *
200
+ * @param workDir the install's prepared work dir ({@link prepareStackWorkDir})
141
201
  */
142
- export async function alignStackSettingsFile(backend, provider) {
143
- const ws = await pulumi.LocalWorkspace.create({
144
- workDir: gcpStackWorkDir(provider),
145
- envVars: stateOnlyEnv(backend),
146
- });
202
+ export async function alignStackSettingsFile(workDir, backend) {
203
+ const ws = await pulumi.LocalWorkspace.create({ workDir, envVars: stateOnlyEnv(backend) });
147
204
  let settings;
148
205
  try {
149
206
  settings = await ws.stackSettings(GCP_STACK_ENV);
@@ -170,10 +227,11 @@ export function stateOnlyEnv(backend) {
170
227
  ...backend.envVars,
171
228
  };
172
229
  }
173
- /** The install's existing stack, on its backend. */
174
- export async function selectInstallStack(backend, provider) {
175
- await alignStackSettingsFile(backend, provider);
176
- return pulumi.LocalWorkspace.selectStack({ stackName: GCP_STACK_ENV, workDir: gcpStackWorkDir(provider) }, { envVars: stateOnlyEnv(backend) });
230
+ /** The install's existing stack, on its backend, in its own work dir. */
231
+ export async function selectInstallStack(installRoot, backend, provider) {
232
+ const workDir = prepareStackWorkDir(installRoot, provider);
233
+ await alignStackSettingsFile(workDir, backend);
234
+ return pulumi.LocalWorkspace.selectStack({ stackName: GCP_STACK_ENV, workDir }, { envVars: stateOnlyEnv(backend) });
177
235
  }
178
236
  /**
179
237
  * Stack config keys that override the image a service runs, ahead of the
@@ -205,8 +263,8 @@ export function resolveSecretReplication(configured, stateResources) {
205
263
  /**
206
264
  * The region an existing stack was deployed in, read from its state (the
207
265
  * stacks' explicit `gcp.Provider` carries it), or null for a stack with
208
- * nothing deployed. State, not stack config: the config file lives in the
209
- * package's stack dir, which a newer `bunx` version doesn't share.
266
+ * nothing deployed. State, not stack config: the state is authoritative,
267
+ * and the settings file of an install from before #736 starts empty.
210
268
  */
211
269
  export function deployedStackRegion(resources) {
212
270
  const regions = new Set(resources
@@ -229,10 +287,10 @@ export function assertStackRegion(deployed, requested) {
229
287
  }
230
288
  /**
231
289
  * Set every config value the stack reads, then its `secretReplication`
232
- * ({@link resolveSecretReplication}). The config file lives in the package's
233
- * stack dir, so every run sets all of it — the wizard before `up`, and
234
- * `state migrate` before the previews that prove a migration changed
235
- * nothing (#696).
290
+ * ({@link resolveSecretReplication}). The wizard sets all of it before every
291
+ * `up`, so install.json stays the source of truth; `state migrate` sets it
292
+ * before the previews that prove a migration changed nothing (#696) when
293
+ * the install's settings file does not hold it yet.
236
294
  *
237
295
  * @returns the secret replication now configured
238
296
  */
@@ -298,17 +356,27 @@ export function pulumiGcpEnv(base, inputs) {
298
356
  ...inputs.backend.envVars,
299
357
  };
300
358
  }
359
+ /** Thrown when the review (preview-plan.ts planGate) stops `pulumi up` after the preview. */
360
+ export class PulumiUpDeclinedError extends Error {
361
+ name = "PulumiUpDeclinedError";
362
+ }
301
363
  /**
302
364
  * Run `pulumi up` against the GCP stack via the Automation SDK.
303
365
  * Streams resource-create events to the supplied onEvent callback so
304
366
  * the wizard can render a live progress bar.
367
+ *
368
+ * On a stack that already holds resources, a preview runs first (#737) and
369
+ * `review` sees its planned steps: it lists them and decides (planGate)
370
+ * whether `up` may apply them. Nothing is applied when it says no.
371
+ *
372
+ * @throws PulumiUpDeclinedError when `review` declines the plan
305
373
  */
306
- export async function pulumiUpGcp(inputs, onEvent) {
374
+ export async function pulumiUpGcp(inputs, onEvent, review) {
307
375
  const env = pulumiGcpEnv(process.env, inputs);
308
376
  const provider = inputs.provider ?? "gcp";
309
377
  const stackName = GCP_STACK_ENV;
310
- const workDir = gcpStackWorkDir(provider);
311
- await alignStackSettingsFile(inputs.backend, provider);
378
+ const workDir = prepareStackWorkDir(inputs.installRoot, provider);
379
+ await alignStackSettingsFile(workDir, inputs.backend);
312
380
  const workspaceOpts = {
313
381
  envVars: env,
314
382
  // Used when the stack is created: a new install's secrets are
@@ -341,7 +409,18 @@ export async function pulumiUpGcp(inputs, onEvent) {
341
409
  onEvent("log", `created ${o.id} (${o.detail})\n`);
342
410
  }
343
411
  // Refresh state first to detect drift from any out-of-band changes.
412
+ await assertStackProject(stack, provider, inputs.projectId);
344
413
  await stack.refresh({ onOutput: (msg) => onEvent("log", msg) });
414
+ // #737 — never `up` a deployed stack blind: list what it would change
415
+ // (replaces and deletes first) and let the review stop it. A first run
416
+ // on an empty stack only creates, so it skips the extra preview.
417
+ if (stateResources.length > 0) {
418
+ const collector = collectPreviewSteps();
419
+ await stack.preview({ onEvent: collector.onEvent });
420
+ if (!(await review(collector.steps()))) {
421
+ throw new PulumiUpDeclinedError("pulumi up was not run: the planned changes were declined.");
422
+ }
423
+ }
345
424
  // Run `up`. The onEvent callback receives the same JSON-RPC events
346
425
  // Pulumi prints to stdout in --json mode.
347
426
  const result = await stack.up({