@caelo-cms/provisioning 0.10.47 → 0.10.48

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 (315) hide show
  1. package/dist/agent/apply.d.ts +45 -0
  2. package/dist/agent/apply.d.ts.map +1 -0
  3. package/dist/agent/apply.js +83 -0
  4. package/dist/agent/apply.js.map +1 -0
  5. package/dist/agent/cli-provenance.d.ts +42 -0
  6. package/dist/agent/cli-provenance.d.ts.map +1 -0
  7. package/dist/agent/cli-provenance.js +138 -0
  8. package/dist/agent/cli-provenance.js.map +1 -0
  9. package/dist/agent/command.d.ts +79 -0
  10. package/dist/agent/command.d.ts.map +1 -0
  11. package/dist/agent/command.js +454 -0
  12. package/dist/agent/command.js.map +1 -0
  13. package/dist/agent/config.d.ts +30 -0
  14. package/dist/agent/config.d.ts.map +1 -0
  15. package/dist/agent/config.js +60 -0
  16. package/dist/agent/config.js.map +1 -0
  17. package/dist/agent/lock.d.ts +13 -0
  18. package/dist/agent/lock.d.ts.map +1 -0
  19. package/dist/agent/lock.js +100 -0
  20. package/dist/agent/lock.js.map +1 -0
  21. package/dist/agent/queue.d.ts +35 -0
  22. package/dist/agent/queue.d.ts.map +1 -0
  23. package/dist/agent/queue.js +50 -0
  24. package/dist/agent/queue.js.map +1 -0
  25. package/dist/agent/run.d.ts +97 -0
  26. package/dist/agent/run.d.ts.map +1 -0
  27. package/dist/agent/run.js +198 -0
  28. package/dist/agent/run.js.map +1 -0
  29. package/dist/agent/systemd.d.ts +55 -0
  30. package/dist/agent/systemd.d.ts.map +1 -0
  31. package/dist/agent/systemd.js +171 -0
  32. package/dist/agent/systemd.js.map +1 -0
  33. package/dist/agent/units.d.ts +44 -0
  34. package/dist/agent/units.d.ts.map +1 -0
  35. package/dist/agent/units.js +127 -0
  36. package/dist/agent/units.js.map +1 -0
  37. package/dist/agent-db.js +18362 -0
  38. package/dist/cli.js +119 -16
  39. package/dist/cli.js.map +1 -1
  40. package/dist/cloudsql-iam-user.d.ts +39 -0
  41. package/dist/cloudsql-iam-user.d.ts.map +1 -0
  42. package/dist/cloudsql-iam-user.js +119 -0
  43. package/dist/cloudsql-iam-user.js.map +1 -0
  44. package/dist/compose.d.ts +16 -0
  45. package/dist/compose.d.ts.map +1 -1
  46. package/dist/compose.js +26 -1
  47. package/dist/compose.js.map +1 -1
  48. package/dist/dns/index.d.ts +2 -0
  49. package/dist/dns/index.d.ts.map +1 -1
  50. package/dist/dns/index.js +3 -2
  51. package/dist/dns/index.js.map +1 -1
  52. package/dist/dns/manual.d.ts +5 -0
  53. package/dist/dns/manual.d.ts.map +1 -1
  54. package/dist/dns/manual.js +28 -12
  55. package/dist/dns/manual.js.map +1 -1
  56. package/dist/gcloud.d.ts +2 -0
  57. package/dist/gcloud.d.ts.map +1 -1
  58. package/dist/gcloud.js +1 -1
  59. package/dist/gcloud.js.map +1 -1
  60. package/dist/gcp-names.d.ts +15 -0
  61. package/dist/gcp-names.d.ts.map +1 -1
  62. package/dist/gcp-names.js +23 -0
  63. package/dist/gcp-names.js.map +1 -1
  64. package/dist/index.d.ts +6 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +4 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/infra-contract.d.ts +1 -1
  69. package/dist/infra-contract.js +7 -1
  70. package/dist/infra-contract.js.map +1 -1
  71. package/dist/install-job-runner.d.ts +13 -0
  72. package/dist/install-job-runner.d.ts.map +1 -0
  73. package/dist/install-job-runner.js +155 -0
  74. package/dist/install-job-runner.js.map +1 -0
  75. package/dist/install-job.d.ts +210 -0
  76. package/dist/install-job.d.ts.map +1 -0
  77. package/dist/install-job.js +449 -0
  78. package/dist/install-job.js.map +1 -0
  79. package/dist/install-state.d.ts +10 -1
  80. package/dist/install-state.d.ts.map +1 -1
  81. package/dist/install-state.js +10 -2
  82. package/dist/install-state.js.map +1 -1
  83. package/dist/lifecycle.d.ts.map +1 -1
  84. package/dist/lifecycle.js +19 -4
  85. package/dist/lifecycle.js.map +1 -1
  86. package/dist/migration-runner.d.ts +5 -0
  87. package/dist/migration-runner.d.ts.map +1 -1
  88. package/dist/migration-runner.js +1 -1
  89. package/dist/migration-runner.js.map +1 -1
  90. package/dist/operator-access.d.ts +14 -8
  91. package/dist/operator-access.d.ts.map +1 -1
  92. package/dist/operator-access.js +16 -102
  93. package/dist/operator-access.js.map +1 -1
  94. package/dist/run-mode.d.ts +27 -0
  95. package/dist/run-mode.d.ts.map +1 -0
  96. package/dist/run-mode.js +22 -0
  97. package/dist/run-mode.js.map +1 -0
  98. package/dist/runtime-secrets.d.ts +19 -0
  99. package/dist/runtime-secrets.d.ts.map +1 -1
  100. package/dist/runtime-secrets.js +44 -0
  101. package/dist/runtime-secrets.js.map +1 -1
  102. package/dist/self-hosted-roles.d.ts +22 -1
  103. package/dist/self-hosted-roles.d.ts.map +1 -1
  104. package/dist/self-hosted-roles.js +81 -12
  105. package/dist/self-hosted-roles.js.map +1 -1
  106. package/dist/self-hosted-upgrade.d.ts +17 -0
  107. package/dist/self-hosted-upgrade.d.ts.map +1 -1
  108. package/dist/self-hosted-upgrade.js +16 -1
  109. package/dist/self-hosted-upgrade.js.map +1 -1
  110. package/dist/stack-contract.d.ts +6 -0
  111. package/dist/stack-contract.d.ts.map +1 -1
  112. package/dist/stack-contract.js +10 -1
  113. package/dist/stack-contract.js.map +1 -1
  114. package/dist/upgrade/converge.d.ts +6 -0
  115. package/dist/upgrade/converge.d.ts.map +1 -1
  116. package/dist/upgrade/converge.js +59 -2
  117. package/dist/upgrade/converge.js.map +1 -1
  118. package/dist/upgrade/gcp-lookup.d.ts +6 -0
  119. package/dist/upgrade/gcp-lookup.d.ts.map +1 -1
  120. package/dist/upgrade/gcp-lookup.js +25 -0
  121. package/dist/upgrade/gcp-lookup.js.map +1 -1
  122. package/dist/upgrade/release-images.d.ts +12 -0
  123. package/dist/upgrade/release-images.d.ts.map +1 -1
  124. package/dist/upgrade/release-images.js +31 -0
  125. package/dist/upgrade/release-images.js.map +1 -1
  126. package/dist/upgrade/upgrade.d.ts +5 -0
  127. package/dist/upgrade/upgrade.d.ts.map +1 -1
  128. package/dist/upgrade/upgrade.js +28 -1
  129. package/dist/upgrade/upgrade.js.map +1 -1
  130. package/dist/upgrader-assess.d.ts +82 -0
  131. package/dist/upgrader-assess.d.ts.map +1 -0
  132. package/dist/upgrader-assess.js +116 -0
  133. package/dist/upgrader-assess.js.map +1 -0
  134. package/dist/upgrader-gcp.d.ts +17 -0
  135. package/dist/upgrader-gcp.d.ts.map +1 -0
  136. package/dist/upgrader-gcp.js +87 -0
  137. package/dist/upgrader-gcp.js.map +1 -0
  138. package/dist/upgrader-job.d.ts +131 -0
  139. package/dist/upgrader-job.d.ts.map +1 -0
  140. package/dist/upgrader-job.js +259 -0
  141. package/dist/upgrader-job.js.map +1 -0
  142. package/dist/upgrader-reporter.d.ts +35 -0
  143. package/dist/upgrader-reporter.d.ts.map +1 -0
  144. package/dist/upgrader-reporter.js +79 -0
  145. package/dist/upgrader-reporter.js.map +1 -0
  146. package/dist/upgrader-setup.d.ts +59 -0
  147. package/dist/upgrader-setup.d.ts.map +1 -0
  148. package/dist/upgrader-setup.js +308 -0
  149. package/dist/upgrader-setup.js.map +1 -0
  150. package/dist/wizard.d.ts +6 -0
  151. package/dist/wizard.d.ts.map +1 -1
  152. package/dist/wizard.js +32 -4
  153. package/dist/wizard.js.map +1 -1
  154. package/dist/wizards/gcp-firebase.d.ts +3 -0
  155. package/dist/wizards/gcp-firebase.d.ts.map +1 -1
  156. package/dist/wizards/gcp-firebase.js +1 -0
  157. package/dist/wizards/gcp-firebase.js.map +1 -1
  158. package/dist/wizards/gcp-install-job.d.ts +74 -0
  159. package/dist/wizards/gcp-install-job.d.ts.map +1 -0
  160. package/dist/wizards/gcp-install-job.js +398 -0
  161. package/dist/wizards/gcp-install-job.js.map +1 -0
  162. package/dist/wizards/gcp-prompts.d.ts +3 -0
  163. package/dist/wizards/gcp-prompts.d.ts.map +1 -0
  164. package/dist/wizards/gcp-prompts.js +25 -0
  165. package/dist/wizards/gcp-prompts.js.map +1 -0
  166. package/dist/wizards/gcp-pulumi.d.ts +4 -2
  167. package/dist/wizards/gcp-pulumi.d.ts.map +1 -1
  168. package/dist/wizards/gcp-pulumi.js +1 -1
  169. package/dist/wizards/gcp-pulumi.js.map +1 -1
  170. package/dist/wizards/gcp.d.ts +40 -0
  171. package/dist/wizards/gcp.d.ts.map +1 -1
  172. package/dist/wizards/gcp.js +223 -59
  173. package/dist/wizards/gcp.js.map +1 -1
  174. package/package.json +6 -4
  175. package/src/adapter.ts +97 -0
  176. package/src/adc-impersonation.ts +176 -0
  177. package/src/admin-domain.test.ts +254 -0
  178. package/src/admin-domain.ts +245 -0
  179. package/src/admin-memory.test.ts +151 -0
  180. package/src/agent/apply.test.ts +185 -0
  181. package/src/agent/apply.ts +124 -0
  182. package/src/agent/cli-provenance.test.ts +159 -0
  183. package/src/agent/cli-provenance.ts +191 -0
  184. package/src/agent/command.test.ts +77 -0
  185. package/src/agent/command.ts +564 -0
  186. package/src/agent/config.ts +86 -0
  187. package/src/agent/lock-config.test.ts +97 -0
  188. package/src/agent/lock.ts +110 -0
  189. package/src/agent/queue.test.ts +10 -0
  190. package/src/agent/queue.ts +91 -0
  191. package/src/agent/run.test.ts +382 -0
  192. package/src/agent/run.ts +295 -0
  193. package/src/agent/systemd.ts +209 -0
  194. package/src/agent/units.test.ts +223 -0
  195. package/src/agent/units.ts +163 -0
  196. package/src/azure-front-door.test.ts +119 -0
  197. package/src/azure-front-door.ts +56 -0
  198. package/src/bootstrap-token.ts +20 -0
  199. package/src/caddy.ts +112 -0
  200. package/src/cdn-copy.ts +91 -0
  201. package/src/cert-wait.test.ts +194 -0
  202. package/src/cert-wait.ts +163 -0
  203. package/src/checkpoint-secrets.test.ts +380 -0
  204. package/src/checkpoint-secrets.ts +283 -0
  205. package/src/cli-routing.test.ts +45 -0
  206. package/src/cli-routing.ts +43 -0
  207. package/src/cli.ts +1491 -0
  208. package/src/cloudsql-iam-user.ts +147 -0
  209. package/src/compose.ts +334 -0
  210. package/src/default-firewall.test.ts +411 -0
  211. package/src/default-firewall.ts +342 -0
  212. package/src/deployed-release.test.ts +231 -0
  213. package/src/deployed-release.ts +220 -0
  214. package/src/dns/cloudflare.ts +182 -0
  215. package/src/dns/groups.test.ts +76 -0
  216. package/src/dns/groups.ts +86 -0
  217. package/src/dns/index.ts +56 -0
  218. package/src/dns/manual.ts +130 -0
  219. package/src/dns/types.ts +27 -0
  220. package/src/gateway-credentials.test.ts +180 -0
  221. package/src/gateway-credentials.ts +144 -0
  222. package/src/gcloud-components.test.ts +76 -0
  223. package/src/gcloud-components.ts +85 -0
  224. package/src/gcloud-retry.ts +41 -0
  225. package/src/gcloud-runner.test.ts +61 -0
  226. package/src/gcloud.test.ts +99 -0
  227. package/src/gcloud.ts +322 -0
  228. package/src/gcp-names.ts +135 -0
  229. package/src/index.test.ts +332 -0
  230. package/src/index.ts +114 -0
  231. package/src/infra-contract.ts +32 -0
  232. package/src/install-job-runner.ts +166 -0
  233. package/src/install-job.test.ts +566 -0
  234. package/src/install-job.ts +542 -0
  235. package/src/install-state.test.ts +239 -0
  236. package/src/install-state.ts +583 -0
  237. package/src/internal-token.ts +35 -0
  238. package/src/lifecycle.ts +900 -0
  239. package/src/mcp-iap-stacks.test.ts +58 -0
  240. package/src/mcp-iap.test.ts +149 -0
  241. package/src/mcp-iap.ts +131 -0
  242. package/src/media-volume.test.ts +296 -0
  243. package/src/migration-runner.ts +365 -0
  244. package/src/operator-access-stacks.test.ts +55 -0
  245. package/src/operator-access.test.ts +332 -0
  246. package/src/operator-access.ts +554 -0
  247. package/src/ops-backend.test.ts +320 -0
  248. package/src/ops-backend.ts +414 -0
  249. package/src/provisioner-identity.test.ts +482 -0
  250. package/src/provisioner-identity.ts +407 -0
  251. package/src/redirects-emit.ts +175 -0
  252. package/src/region-data.ts +428 -0
  253. package/src/regions.test.ts +277 -0
  254. package/src/regions.ts +370 -0
  255. package/src/release-contract.ts +57 -0
  256. package/src/release-manifest.test.ts +293 -0
  257. package/src/release-manifest.ts +430 -0
  258. package/src/run-mode.ts +40 -0
  259. package/src/runtime-secrets.test.ts +627 -0
  260. package/src/runtime-secrets.ts +754 -0
  261. package/src/self-command.test.ts +14 -0
  262. package/src/self-command.ts +21 -0
  263. package/src/self-hosted-compose.test.ts +177 -0
  264. package/src/self-hosted-release.ts +240 -0
  265. package/src/self-hosted-roles.integration.test.ts +161 -0
  266. package/src/self-hosted-roles.test.ts +124 -0
  267. package/src/self-hosted-roles.ts +203 -0
  268. package/src/self-hosted-upgrade.test.ts +394 -0
  269. package/src/self-hosted-upgrade.ts +548 -0
  270. package/src/stack-contract-parity.test.ts +199 -0
  271. package/src/stack-contract.test.ts +391 -0
  272. package/src/stack-contract.ts +888 -0
  273. package/src/stack-converge-secrets.test.ts +421 -0
  274. package/src/stack-converge.test.ts +833 -0
  275. package/src/stack-converge.ts +909 -0
  276. package/src/staging-admin.test.ts +246 -0
  277. package/src/staging-admin.ts +324 -0
  278. package/src/state-attach.test.ts +211 -0
  279. package/src/state-attach.ts +132 -0
  280. package/src/state-backend.test.ts +145 -0
  281. package/src/state-backend.ts +262 -0
  282. package/src/state-command.ts +293 -0
  283. package/src/state-migrate.test.ts +479 -0
  284. package/src/state-migrate.ts +434 -0
  285. package/src/state-pulumi.ts +289 -0
  286. package/src/state-store.test.ts +212 -0
  287. package/src/state-store.ts +243 -0
  288. package/src/upgrade/app-roll.ts +486 -0
  289. package/src/upgrade/backup.ts +109 -0
  290. package/src/upgrade/converge.ts +437 -0
  291. package/src/upgrade/gcp-lookup.ts +167 -0
  292. package/src/upgrade/health.test.ts +279 -0
  293. package/src/upgrade/health.ts +305 -0
  294. package/src/upgrade/release-images.test.ts +119 -0
  295. package/src/upgrade/release-images.ts +391 -0
  296. package/src/upgrade/reporter.ts +46 -0
  297. package/src/upgrade/upgrade.test.ts +626 -0
  298. package/src/upgrade/upgrade.ts +249 -0
  299. package/src/upgrader-assess.test.ts +265 -0
  300. package/src/upgrader-assess.ts +233 -0
  301. package/src/upgrader-gcp.ts +123 -0
  302. package/src/upgrader-job.test.ts +408 -0
  303. package/src/upgrader-job.ts +499 -0
  304. package/src/upgrader-reporter.test.ts +46 -0
  305. package/src/upgrader-reporter.ts +105 -0
  306. package/src/upgrader-setup.test.ts +169 -0
  307. package/src/upgrader-setup.ts +355 -0
  308. package/src/wizard.ts +425 -0
  309. package/src/wizards/gcp-cost.ts +188 -0
  310. package/src/wizards/gcp-firebase.ts +72 -0
  311. package/src/wizards/gcp-install-job.ts +506 -0
  312. package/src/wizards/gcp-prompts.ts +26 -0
  313. package/src/wizards/gcp-pulumi.test.ts +246 -0
  314. package/src/wizards/gcp-pulumi.ts +516 -0
  315. package/src/wizards/gcp.ts +1935 -0
@@ -0,0 +1,59 @@
1
+ import { type GcloudRunner, type Sleep } from "./gcloud-retry.js";
2
+ import { type CustomRoleSpec } from "./operator-access.js";
3
+ /** Cloud SQL backups for the pre-upgrade backup — nothing else on the instance. */
4
+ export declare const UPGRADER_SQL_BACKUP_ROLE: CustomRoleSpec;
5
+ /** Project-level roles of the upgrader's service account. */
6
+ export declare const UPGRADER_PROJECT_ROLES: readonly ["roles/run.developer", "roles/cloudsql.instanceUser", "roles/logging.logWriter"];
7
+ /**
8
+ * Roles the upgrader must never hold anywhere — they would let it change
9
+ * IAM, manage service accounts or secrets, or touch compute/projects.
10
+ * Prefix matches (`roles/compute.` = every compute role).
11
+ */
12
+ export declare const UPGRADER_FORBIDDEN_ROLES: readonly ["roles/owner", "roles/editor", "roles/run.admin", "roles/iam.serviceAccountAdmin", "roles/iam.serviceAccountKeyAdmin", "roles/iam.securityAdmin", "roles/iam.roleAdmin", "roles/resourcemanager.", "roles/secretmanager.admin", "roles/secretmanager.secretVersionAdder", "roles/compute.", "roles/cloudsql.admin", "roles/cloudsql.editor", "roles/storage.admin", "roles/storage.objectAdmin"];
13
+ /** Database role migration 0267 creates for the job. */
14
+ export declare const UPGRADER_DB_ROLE = "platform_updater";
15
+ export interface UpgraderSetupTarget {
16
+ readonly projectId: string;
17
+ readonly region: string;
18
+ /** Pulumi stack name (`production`). */
19
+ readonly env: string;
20
+ /** The caelo-ops image to run, digest-pinned (`…/ops@sha256:…`). */
21
+ readonly opsImageRef: string;
22
+ /** VPC the admin uses to reach Cloud SQL's private IP. */
23
+ readonly network: string;
24
+ readonly subnet: string;
25
+ }
26
+ export type UpgraderSetupResult = {
27
+ readonly ok: true;
28
+ readonly done: string[];
29
+ } | {
30
+ readonly ok: false;
31
+ readonly done: string[];
32
+ readonly error: string;
33
+ };
34
+ /** The ops bucket condition: install.json and progress.json, not the Pulumi state. */
35
+ export declare function installStateCondition(bucket: string): string;
36
+ /** Ensure the upgrader job and everything it needs. Never throws for a gcloud failure. */
37
+ export declare function ensureUpgraderJob(target: UpgraderSetupTarget, deps?: {
38
+ run?: GcloudRunner;
39
+ sleep?: Sleep;
40
+ }): Promise<UpgraderSetupResult>;
41
+ /**
42
+ * {@link ensureUpgraderJob}'s target, with the VPC read from the deployed
43
+ * admin service (the job reaches Cloud SQL's private IP the same way).
44
+ */
45
+ export declare function resolveUpgraderTarget(opts: {
46
+ readonly projectId: string;
47
+ readonly region: string;
48
+ readonly env: string;
49
+ readonly opsImageRef: string;
50
+ }, deps?: {
51
+ run?: GcloudRunner;
52
+ }): Promise<{
53
+ ok: true;
54
+ target: UpgraderSetupTarget;
55
+ } | {
56
+ ok: false;
57
+ error: string;
58
+ }>;
59
+ //# sourceMappingURL=upgrader-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrader-setup.d.ts","sourceRoot":"","sources":["../src/upgrader-setup.ts"],"names":[],"mappings":"AA6CA,OAAO,EAAE,KAAK,YAAY,EAA2B,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAU3F,OAAO,EAAE,KAAK,cAAc,EAAoC,MAAM,sBAAsB,CAAC;AAG7F,mFAAmF;AACnF,eAAO,MAAM,wBAAwB,EAAE,cAYtC,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,4FAIzB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,4YAgB3B,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAKnD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,0FAA0F;AAC1F,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAO,GAC/C,OAAO,CAAC,mBAAmB,CAAC,CAoM9B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE;IACJ,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,EACD,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,YAAY,CAAA;CAAO,GAChC,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAUnF"}
@@ -0,0 +1,308 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+ /**
3
+ * Set up (and converge) the upgrader job on a Google Cloud install (`gcp`,
4
+ * `gcp-firebase`), epic #696 Phase 2. Run by the wizard after migrations and
5
+ * by `cms-provision upgrade`'s converge, both as the operator's own gcloud
6
+ * identity — never by the admin, never by the job itself.
7
+ *
8
+ * Trust boundary (same shape as operator-access.ts). The admin may only
9
+ * START the job: `roles/run.jobsExecutor` on that one job — `run.jobs.run`
10
+ * without `run.jobs.runWithOverrides` (cloud.google.com/run/docs/reference/
11
+ * iam/roles) — plus `roles/run.viewer` on it to read its runs. It cannot
12
+ * change the job's image, command, args or env, and it holds no other
13
+ * right the job has. What the job installs comes from the request row
14
+ * (just a version) and the signed release manifest (upgrader-job.ts).
15
+ *
16
+ * The job's own service account, `caelo-<env>-upgrader`, may do exactly
17
+ * what an app-roll needs (upgrade/app-roll.ts):
18
+ *
19
+ * - `roles/run.developer` on the project: deploy admin/gateway revisions,
20
+ * move traffic, recreate the migration job, update its own job image.
21
+ * It includes no `*.setIamPolicy`.
22
+ * - `roles/iam.serviceAccountUser` on exactly the admin's and the
23
+ * gateway's runtime service accounts (a revision runs as them) and on
24
+ * itself (its own job) — not on the project.
25
+ * - the custom role `caeloUpgraderSqlBackup`: create/read Cloud SQL
26
+ * backups and read the instance — no restore, no instance changes.
27
+ * - `roles/cloudsql.instanceUser` + a Cloud SQL IAM database user that
28
+ * is a member of `platform_updater` (migration 0267) only.
29
+ * - `roles/iam.serviceAccountTokenCreator` on caelo-mcp only: the deep
30
+ * health check signs its IAP credential as that account
31
+ * (upgrade/health.ts). The operator-access sync job keeps it there.
32
+ * - `roles/storage.objectUser` on the ops bucket, conditioned to the
33
+ * `install/` prefix (install.json) — not the Pulumi state.
34
+ * - `roles/logging.logWriter`.
35
+ *
36
+ * It gets no `*.setIamPolicy`, no service-account admin, no secret
37
+ * creation, no compute and no resourcemanager rights: whatever needs them
38
+ * is a converge, which only the operator runs ("Run in Cloud Shell").
39
+ * {@link UPGRADER_FORBIDDEN_ROLES} names that line; the tests assert no
40
+ * grant crosses it.
41
+ */
42
+ import { ensureCloudSqlIamUser } from "./cloudsql-iam-user.js";
43
+ import { gcloud as defaultGcloud } from "./gcloud.js";
44
+ import { realSleep, runWithRetry } from "./gcloud-retry.js";
45
+ import { gatewayServiceAccountEmail, mcpIapServiceAccountEmail, runServiceAccountEmail, upgraderJobName, upgraderServiceAccountEmail, upgraderServiceAccountId, } from "./gcp-names.js";
46
+ import { readAdminConfig } from "./migration-runner.js";
47
+ import { customRoleName, ensureCustomRole } from "./operator-access.js";
48
+ import { OPS_INSTALL_PREFIX, opsBucketName } from "./state-backend.js";
49
+ /** Cloud SQL backups for the pre-upgrade backup — nothing else on the instance. */
50
+ export const UPGRADER_SQL_BACKUP_ROLE = {
51
+ roleId: "caeloUpgraderSqlBackup",
52
+ title: "Caelo upgrader: Cloud SQL backups",
53
+ description: "Lets the Caelo upgrader job take and read on-demand Cloud SQL backups before an update. No restore, no instance changes.",
54
+ permissions: [
55
+ "cloudsql.backupRuns.create",
56
+ "cloudsql.backupRuns.get",
57
+ "cloudsql.backupRuns.list",
58
+ "cloudsql.instances.get",
59
+ "cloudsql.instances.list",
60
+ ],
61
+ };
62
+ /** Project-level roles of the upgrader's service account. */
63
+ export const UPGRADER_PROJECT_ROLES = [
64
+ "roles/run.developer",
65
+ "roles/cloudsql.instanceUser",
66
+ "roles/logging.logWriter",
67
+ ];
68
+ /**
69
+ * Roles the upgrader must never hold anywhere — they would let it change
70
+ * IAM, manage service accounts or secrets, or touch compute/projects.
71
+ * Prefix matches (`roles/compute.` = every compute role).
72
+ */
73
+ export const UPGRADER_FORBIDDEN_ROLES = [
74
+ "roles/owner",
75
+ "roles/editor",
76
+ "roles/run.admin",
77
+ "roles/iam.serviceAccountAdmin",
78
+ "roles/iam.serviceAccountKeyAdmin",
79
+ "roles/iam.securityAdmin",
80
+ "roles/iam.roleAdmin",
81
+ "roles/resourcemanager.",
82
+ "roles/secretmanager.admin",
83
+ "roles/secretmanager.secretVersionAdder",
84
+ "roles/compute.",
85
+ "roles/cloudsql.admin",
86
+ "roles/cloudsql.editor",
87
+ "roles/storage.admin",
88
+ "roles/storage.objectAdmin",
89
+ ];
90
+ /** Database role migration 0267 creates for the job. */
91
+ export const UPGRADER_DB_ROLE = "platform_updater";
92
+ /** The job's resources: enough for a backup + roll; the job ends within it. */
93
+ const JOB_TASK_TIMEOUT = "60m";
94
+ /** The ops bucket condition: install.json and progress.json, not the Pulumi state. */
95
+ export function installStateCondition(bucket) {
96
+ return `expression=resource.name.startsWith("projects/_/buckets/${bucket}/objects/${OPS_INSTALL_PREFIX}/"),title=caelo-upgrader-install-state,description=Only the install metadata under ${OPS_INSTALL_PREFIX}/`;
97
+ }
98
+ /** Ensure the upgrader job and everything it needs. Never throws for a gcloud failure. */
99
+ export async function ensureUpgraderJob(target, deps = {}) {
100
+ const run = deps.run ?? defaultGcloud;
101
+ const sleep = deps.sleep ?? realSleep;
102
+ const retry = (args) => runWithRetry(run, sleep, args);
103
+ const { projectId, region, env } = target;
104
+ const project = `--project=${projectId}`;
105
+ const sa = upgraderServiceAccountEmail(projectId, env);
106
+ const member = `serviceAccount:${sa}`;
107
+ const runSaMember = `serviceAccount:${runServiceAccountEmail(projectId, env)}`;
108
+ const job = upgraderJobName(env);
109
+ const bucket = opsBucketName(projectId);
110
+ const done = [];
111
+ const fail = (step, r) => ({
112
+ ok: false,
113
+ done,
114
+ error: `${step}: ${r.stderr.trim()}`,
115
+ });
116
+ if (!/@sha256:[0-9a-f]{64}$/.test(target.opsImageRef)) {
117
+ return {
118
+ ok: false,
119
+ done,
120
+ error: `the upgrader image must be pinned by digest, got ${target.opsImageRef}`,
121
+ };
122
+ }
123
+ // The job keeps install.json in the install's own ops bucket; an install
124
+ // whose state still lives on the operator's machine has none.
125
+ const bucketCheck = await run([
126
+ "storage",
127
+ "buckets",
128
+ "describe",
129
+ `gs://${bucket}`,
130
+ project,
131
+ "--format=value(name)",
132
+ ]);
133
+ if (!bucketCheck.ok) {
134
+ return {
135
+ ok: false,
136
+ done,
137
+ error: `the ops bucket gs://${bucket} is not there (${bucketCheck.stderr.trim()}). Move the install's state into its own project first: cms-provision state migrate`,
138
+ };
139
+ }
140
+ // 1. The backup role.
141
+ const roleError = await ensureCustomRole(run, projectId, UPGRADER_SQL_BACKUP_ROLE);
142
+ if (roleError)
143
+ return { ok: false, done, error: roleError };
144
+ done.push(`custom role ${UPGRADER_SQL_BACKUP_ROLE.roleId}`);
145
+ // 2. The job's own service account.
146
+ const describe = await run([
147
+ "iam",
148
+ "service-accounts",
149
+ "describe",
150
+ sa,
151
+ project,
152
+ "--format=value(email)",
153
+ ]);
154
+ if (!describe.ok) {
155
+ const create = await run([
156
+ "iam",
157
+ "service-accounts",
158
+ "create",
159
+ upgraderServiceAccountId(env),
160
+ "--display-name=Caelo upgrader",
161
+ "--description=Installs signed Caelo releases started from the admin; may roll the services and back up Cloud SQL, never change IAM.",
162
+ project,
163
+ ]);
164
+ if (!create.ok && !/already exists/i.test(create.stderr))
165
+ return fail(`create ${sa}`, create);
166
+ }
167
+ done.push(`service account ${sa}`);
168
+ // 3. Project-level roles.
169
+ for (const role of [
170
+ ...UPGRADER_PROJECT_ROLES,
171
+ customRoleName(projectId, UPGRADER_SQL_BACKUP_ROLE.roleId),
172
+ ]) {
173
+ const r = await retry([
174
+ "projects",
175
+ "add-iam-policy-binding",
176
+ projectId,
177
+ `--member=${member}`,
178
+ `--role=${role}`,
179
+ "--condition=None",
180
+ "--quiet",
181
+ "--format=none",
182
+ ]);
183
+ if (!r.ok)
184
+ return fail(`grant the upgrader ${role}`, r);
185
+ done.push(`upgrader: ${role} on the project`);
186
+ }
187
+ // 4. Resource-level grants on single service accounts.
188
+ const onAccounts = [
189
+ {
190
+ account: runServiceAccountEmail(projectId, env),
191
+ role: "roles/iam.serviceAccountUser",
192
+ why: "admin revisions + the migration job run as it",
193
+ },
194
+ {
195
+ account: gatewayServiceAccountEmail(projectId, env),
196
+ role: "roles/iam.serviceAccountUser",
197
+ why: "gateway revisions run as it",
198
+ },
199
+ { account: sa, role: "roles/iam.serviceAccountUser", why: "the job updates its own image" },
200
+ {
201
+ account: mcpIapServiceAccountEmail(projectId),
202
+ role: "roles/iam.serviceAccountTokenCreator",
203
+ why: "the health check signs its IAP credential as caelo-mcp",
204
+ },
205
+ ];
206
+ for (const g of onAccounts) {
207
+ const r = await retry([
208
+ "iam",
209
+ "service-accounts",
210
+ "add-iam-policy-binding",
211
+ g.account,
212
+ `--member=${member}`,
213
+ `--role=${g.role}`,
214
+ "--condition=None",
215
+ project,
216
+ "--quiet",
217
+ "--format=none",
218
+ ]);
219
+ if (!r.ok)
220
+ return fail(`grant the upgrader ${g.role} on ${g.account} (${g.why})`, r);
221
+ done.push(`upgrader: ${g.role} on ${g.account}`);
222
+ }
223
+ // 5. install.json in the ops bucket — and nothing else there.
224
+ const bucketGrant = await retry([
225
+ "storage",
226
+ "buckets",
227
+ "add-iam-policy-binding",
228
+ `gs://${bucket}`,
229
+ `--member=${member}`,
230
+ "--role=roles/storage.objectUser",
231
+ `--condition=${installStateCondition(bucket)}`,
232
+ project,
233
+ "--quiet",
234
+ "--format=none",
235
+ ]);
236
+ if (!bucketGrant.ok)
237
+ return fail(`grant the upgrader install.json in gs://${bucket}`, bucketGrant);
238
+ done.push(`upgrader: roles/storage.objectUser on gs://${bucket}/${OPS_INSTALL_PREFIX}/`);
239
+ // 6. Its database login (migration 0267's platform_updater role).
240
+ const sqlUser = await ensureCloudSqlIamUser(run, {
241
+ projectId,
242
+ env,
243
+ serviceAccountEmail: sa,
244
+ databaseRole: UPGRADER_DB_ROLE,
245
+ });
246
+ done.push(...sqlUser.done);
247
+ if (!sqlUser.ok)
248
+ return { ok: false, done, error: sqlUser.error };
249
+ // 7. The job: the ops image, its own SA, no env, no input but the database.
250
+ const deploy = await run([
251
+ "run",
252
+ "jobs",
253
+ "deploy",
254
+ job,
255
+ `--image=${target.opsImageRef}`,
256
+ `--region=${region}`,
257
+ project,
258
+ `--service-account=${sa}`,
259
+ `--network=${target.network}`,
260
+ `--subnet=${target.subnet}`,
261
+ "--vpc-egress=private-ranges-only",
262
+ "--command=caelo-ops",
263
+ "--args=upgrader",
264
+ "--max-retries=0",
265
+ `--task-timeout=${JOB_TASK_TIMEOUT}`,
266
+ "--memory=1Gi",
267
+ "--cpu=1",
268
+ "--quiet",
269
+ ]);
270
+ if (!deploy.ok)
271
+ return fail(`deploy job ${job}`, deploy);
272
+ done.push(`job ${job} (${target.opsImageRef.split("@")[1]?.slice(0, 19)}...)`);
273
+ // 8. The admin may start it (no overrides) and read its runs — nothing else.
274
+ for (const role of ["roles/run.jobsExecutor", "roles/run.viewer"]) {
275
+ const r = await retry([
276
+ "run",
277
+ "jobs",
278
+ "add-iam-policy-binding",
279
+ job,
280
+ `--region=${region}`,
281
+ project,
282
+ `--member=${runSaMember}`,
283
+ `--role=${role}`,
284
+ "--quiet",
285
+ "--format=none",
286
+ ]);
287
+ if (!r.ok)
288
+ return fail(`grant the admin ${role} on ${job}`, r);
289
+ done.push(`admin: ${role} on ${job}`);
290
+ }
291
+ return { ok: true, done };
292
+ }
293
+ /**
294
+ * {@link ensureUpgraderJob}'s target, with the VPC read from the deployed
295
+ * admin service (the job reaches Cloud SQL's private IP the same way).
296
+ */
297
+ export async function resolveUpgraderTarget(opts, deps = {}) {
298
+ const cfg = await readAdminConfig(opts, deps.run ?? defaultGcloud);
299
+ if (!cfg) {
300
+ return { ok: false, error: "could not read the admin service's VPC (is the admin deployed?)" };
301
+ }
302
+ const short = (ref) => ref.split("/").pop() ?? ref;
303
+ return {
304
+ ok: true,
305
+ target: { ...opts, network: short(cfg.networkRef), subnet: short(cfg.subnetRef) },
306
+ };
307
+ }
308
+ //# sourceMappingURL=upgrader-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrader-setup.js","sourceRoot":"","sources":["../src/upgrader-setup.ts"],"names":[],"mappings":"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"}
package/dist/wizard.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { spinner } from "@clack/prompts";
2
2
  import { type Provider } from "./install-state.js";
3
+ import type { RunMode } from "./run-mode.js";
3
4
  export interface WizardOptions {
4
5
  /** Skip prompts; require all inputs via flags. CI-friendly. */
5
6
  nonInteractive?: boolean;
@@ -22,6 +23,11 @@ export interface WizardOptions {
22
23
  * install a different value is refused.
23
24
  */
24
25
  region?: string;
26
+ /**
27
+ * #696 — where `pulumi up` and the rest of a GCP install run
28
+ * (run-mode.ts): `job` (default in Cloud Shell) or `local`.
29
+ */
30
+ runMode?: RunMode;
25
31
  }
26
32
  export declare function runWizard(opts?: WizardOptions): Promise<void>;
27
33
  export { spinner };
@@ -1 +1 @@
1
- {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"AAuBA,OAAO,EAQL,OAAO,EAER,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAML,KAAK,QAAQ,EAKd,MAAM,oBAAoB,CAAC;AAK5B,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6HvE;AAyLD,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"AAuBA,OAAO,EAQL,OAAO,EAER,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAML,KAAK,QAAQ,EAKd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAK7C,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8JvE;AAyLD,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/wizard.js CHANGED
@@ -41,13 +41,39 @@ export async function runWizard(opts = {}) {
41
41
  let ownerEmail;
42
42
  let projectIdHint;
43
43
  let installId;
44
- const existing = opts.nonInteractive ? [] : listInstalls();
44
+ // #696 — job mode (Cloud Shell): the project comes first and is the
45
+ // source of truth; this machine's ~/.caelo-* is not consulted.
46
+ const runMode = opts.runMode ?? "local";
47
+ let jobModeProjectId = null;
48
+ let jobModeExisting = null;
49
+ let jobModeProvider = null;
50
+ if (runMode === "job") {
51
+ jobModeProvider = opts.provider ?? (await pickProvider());
52
+ if (jobModeProvider !== "gcp" && jobModeProvider !== "gcp-firebase") {
53
+ cancel(`The install job runs gcp and gcp-firebase installs; for ${jobModeProvider} run the installer with --local.`);
54
+ process.exit(1);
55
+ }
56
+ const { prepareJobModeInstall } = await import("./wizards/gcp-install-job.js");
57
+ const prep = await prepareJobModeInstall(opts.projectId ? { projectId: opts.projectId } : {});
58
+ if (prep.kind === "handled") {
59
+ outro(bold("Done."));
60
+ return;
61
+ }
62
+ if (prep.kind === "existing")
63
+ jobModeExisting = prep.meta;
64
+ else
65
+ jobModeProjectId = prep.projectId;
66
+ }
67
+ const existing = opts.nonInteractive || runMode === "job" ? [] : listInstalls();
45
68
  const picked = existing.length > 0 && !opts.provider && !opts.domain && !opts.ownerEmail
46
69
  ? await pickInstallToResume(existing)
47
70
  : null;
48
71
  // #696 — the bucket's copy for an install whose state lives there: another
49
72
  // machine may have changed its domain or owner since this mirror was written.
50
- const resumeChoice = picked ? currentMetadata(picked) : null;
73
+ const resumeChoice = jobModeExisting ?? (picked ? currentMetadata(picked) : null);
74
+ if (jobModeExisting && jobModeProvider && jobModeExisting.provider !== jobModeProvider) {
75
+ log.warn(yellow(`This project's install is ${jobModeExisting.provider}, not ${jobModeProvider}; continuing it as ${jobModeExisting.provider}.`));
76
+ }
51
77
  if (resumeChoice) {
52
78
  provider = resumeChoice.provider;
53
79
  domain = resumeChoice.domain;
@@ -57,11 +83,11 @@ export async function runWizard(opts = {}) {
57
83
  ensureInstallDir(installId);
58
84
  }
59
85
  else {
60
- provider = opts.provider ?? (await pickProvider());
86
+ provider = jobModeProvider ?? opts.provider ?? (await pickProvider());
61
87
  domain = opts.domain ?? (await promptDomain());
62
88
  const stagingDomain = await resolveStagingDomain(domain, provider, opts);
63
89
  ownerEmail = opts.ownerEmail ?? (await promptOwnerEmail());
64
- projectIdHint = opts.projectId ?? null;
90
+ projectIdHint = jobModeProjectId ?? opts.projectId ?? null;
65
91
  installId = deriveInstallId(provider, projectIdHint ?? domain);
66
92
  ensureInstallDir(installId);
67
93
  // If the user picked "new install" but the derived id collides with
@@ -119,6 +145,7 @@ export async function runWizard(opts = {}) {
119
145
  projectId: projectIdHint,
120
146
  nonInteractive: opts.nonInteractive ?? false,
121
147
  ...(opts.region ? { region: opts.region } : {}),
148
+ runMode,
122
149
  });
123
150
  break;
124
151
  case "gcp-firebase":
@@ -129,6 +156,7 @@ export async function runWizard(opts = {}) {
129
156
  projectId: projectIdHint,
130
157
  nonInteractive: opts.nonInteractive ?? false,
131
158
  ...(opts.region ? { region: opts.region } : {}),
159
+ runMode,
132
160
  });
133
161
  break;
134
162
  case "self-hosted":
@@ -1 +1 @@
1
- {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { RunMode } from "../run-mode.js";
1
2
  export interface GcpFirebaseWizardOpts {
2
3
  installId: string;
3
4
  domain: string;
@@ -6,6 +7,8 @@ export interface GcpFirebaseWizardOpts {
6
7
  nonInteractive: boolean;
7
8
  /** #607 — `--region`; see {@link GcpWizardOpts.region}. */
8
9
  region?: string;
10
+ /** #696 — see {@link GcpWizardOpts.runMode}. */
11
+ runMode?: RunMode;
9
12
  }
10
13
  export declare function runGcpFirebaseWizard(opts: GcpFirebaseWizardOpts): Promise<void>;
11
14
  //# sourceMappingURL=gcp-firebase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gcp-firebase.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp-firebase.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BrF"}
1
+ {"version":3,"file":"gcp-firebase.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp-firebase.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BrF"}
@@ -47,6 +47,7 @@ export async function runGcpFirebaseWizard(opts) {
47
47
  projectId: opts.projectId,
48
48
  nonInteractive: opts.nonInteractive,
49
49
  ...(opts.region ? { region: opts.region } : {}),
50
+ ...(opts.runMode ? { runMode: opts.runMode } : {}),
50
51
  provider: "gcp-firebase",
51
52
  });
52
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gcp-firebase.js","sourceRoot":"","sources":["../../src/wizards/gcp-firebase.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAY1C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAA2B;IACpE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAChD,IAAI,CACF;QACE,6BAA6B;QAC7B,KAAK,IAAI,CAAC,kBAAkB,CAAC,6DAA6D;QAC1F,KAAK,IAAI,CAAC,kBAAkB,CAAC,+CAA+C;QAC5E,KAAK,IAAI,CAAC,mBAAmB,CAAC,0CAA0C;QACxE,EAAE;QACF,mEAAmE;QACnE,0FAA0F;KAC3F,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IAEF,kEAAkE;IAClE,+DAA+D;IAC/D,yDAAyD;IACzD,6DAA6D;IAC7D,0DAA0D;IAC1D,mDAAmD;IACnD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,YAAY,CAAC;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,QAAQ,EAAE,cAAc;KACzB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"gcp-firebase.js","sourceRoot":"","sources":["../../src/wizards/gcp-firebase.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAe1C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAA2B;IACpE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAChD,IAAI,CACF;QACE,6BAA6B;QAC7B,KAAK,IAAI,CAAC,kBAAkB,CAAC,6DAA6D;QAC1F,KAAK,IAAI,CAAC,kBAAkB,CAAC,+CAA+C;QAC5E,KAAK,IAAI,CAAC,mBAAmB,CAAC,0CAA0C;QACxE,EAAE;QACF,mEAAmE;QACnE,0FAA0F;KAC3F,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IAEF,kEAAkE;IAClE,+DAA+D;IAC/D,yDAAyD;IACzD,6DAA6D;IAC7D,0DAA0D;IAC1D,mDAAmD;IACnD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,YAAY,CAAC;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,QAAQ,EAAE,cAAc;KACzB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type { GcloudRunner, Sleep } from "../gcloud-retry.js";
2
+ import { type InstallJobStatus } from "../install-job.js";
3
+ import { type InstallMetadata } from "../install-state.js";
4
+ import { type SyncGcloud } from "../state-store.js";
5
+ /** Side effects of the tail loop, injectable for tests. */
6
+ export interface TailDeps {
7
+ readonly run: GcloudRunner;
8
+ readonly syncRun: SyncGcloud;
9
+ readonly sleep: Sleep;
10
+ readonly print: (line: string) => void;
11
+ /** Poll interval in ms. */
12
+ readonly intervalMs: number;
13
+ }
14
+ /** How a tail ended. */
15
+ export type TailOutcome = {
16
+ readonly kind: "succeeded";
17
+ } | {
18
+ readonly kind: "failed";
19
+ readonly status: InstallJobStatus | null;
20
+ readonly why: string;
21
+ };
22
+ /**
23
+ * Follow one execution: print its log lines as Cloud Logging receives
24
+ * them and each phase change from the status document, until the job
25
+ * records `succeeded` / `failed` or the execution ends without doing so.
26
+ */
27
+ export declare function tailInstallJob(target: {
28
+ projectId: string;
29
+ region: string;
30
+ execution: string;
31
+ }, deps?: TailDeps): Promise<TailOutcome>;
32
+ /**
33
+ * After the bootstrap (gcp.ts, job mode): pin the release, start the job —
34
+ * or attach to / show the one already there — and follow it.
35
+ */
36
+ export declare function launchInstallJob(opts: {
37
+ installId: string;
38
+ projectId: string;
39
+ region: string;
40
+ provisionerEmail: string;
41
+ nonInteractive: boolean;
42
+ }): Promise<void>;
43
+ /** What {@link prepareJobModeInstall} found for the project. */
44
+ export type JobModePreparation = {
45
+ readonly kind: "new";
46
+ readonly projectId: string;
47
+ } | {
48
+ readonly kind: "existing";
49
+ readonly meta: InstallMetadata;
50
+ } | {
51
+ readonly kind: "handled";
52
+ };
53
+ /**
54
+ * Before any other prompt in job mode: the project comes first, because a
55
+ * Cloud Shell session opened by the button starts with an empty home
56
+ * directory — everything known about an install is in its project. An
57
+ * install whose state is there is attached; one whose job is running is
58
+ * followed and one whose job finished is shown, without re-running the
59
+ * bootstrap. Otherwise the wizard continues (new install, or a re-run of an
60
+ * unfinished bootstrap).
61
+ */
62
+ export declare function prepareJobModeInstall(opts: {
63
+ projectId?: string;
64
+ }): Promise<JobModePreparation>;
65
+ /**
66
+ * `status`'s view of the install job: what the bucket records and, for a
67
+ * run that claims to be running, whether its execution still is. Empty
68
+ * when the install never used the job.
69
+ */
70
+ export declare function installJobStatusLines(meta: InstallMetadata, deps?: {
71
+ run: GcloudRunner;
72
+ syncRun: SyncGcloud;
73
+ }): Promise<string[]>;
74
+ //# sourceMappingURL=gcp-install-job.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcp-install-job.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp-install-job.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EASL,KAAK,gBAAgB,EAOtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,eAAe,EAOrB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAiC,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGnF,2DAA2D;AAC3D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,2BAA2B;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAuCD,wBAAwB;AACxB,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhG;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAChE,IAAI,GAAE,QAAuB,GAC5B,OAAO,CAAC,WAAW,CAAC,CA4DtB;AA4GD;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;CACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoHhB;AAED,gEAAgE;AAChE,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEjC;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4C9B;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,eAAe,EACrB,IAAI,GAAE;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAA6C,GAC1F,OAAO,CAAC,MAAM,EAAE,CAAC,CAyBnB"}