@caelo-cms/provisioning 0.10.55 → 0.10.57

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 (209) hide show
  1. package/dist/agent-db.js +76 -19
  2. package/dist/cli-routing.js +1 -1
  3. package/dist/cli-routing.js.map +1 -1
  4. package/dist/cli.js +4 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/compose.js +5 -0
  7. package/dist/compose.js.map +1 -1
  8. package/dist/converge-checkpoint.d.ts +66 -0
  9. package/dist/converge-checkpoint.d.ts.map +1 -0
  10. package/dist/converge-checkpoint.js +61 -0
  11. package/dist/converge-checkpoint.js.map +1 -0
  12. package/dist/converge-job-gcp.d.ts +46 -0
  13. package/dist/converge-job-gcp.d.ts.map +1 -0
  14. package/dist/converge-job-gcp.js +368 -0
  15. package/dist/converge-job-gcp.js.map +1 -0
  16. package/dist/converge-job-setup.d.ts +62 -0
  17. package/dist/converge-job-setup.d.ts.map +1 -0
  18. package/dist/converge-job-setup.js +228 -0
  19. package/dist/converge-job-setup.js.map +1 -0
  20. package/dist/converge-job.d.ts +141 -0
  21. package/dist/converge-job.d.ts.map +1 -0
  22. package/dist/converge-job.js +325 -0
  23. package/dist/converge-job.js.map +1 -0
  24. package/dist/gcp-names.d.ts +9 -0
  25. package/dist/gcp-names.d.ts.map +1 -1
  26. package/dist/gcp-names.js +13 -0
  27. package/dist/gcp-names.js.map +1 -1
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +2 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/infra-contract.d.ts +1 -1
  33. package/dist/infra-contract.d.ts.map +1 -1
  34. package/dist/infra-contract.js +22 -1
  35. package/dist/infra-contract.js.map +1 -1
  36. package/dist/install-job.d.ts +11 -3
  37. package/dist/install-job.d.ts.map +1 -1
  38. package/dist/install-job.js +22 -12
  39. package/dist/install-job.js.map +1 -1
  40. package/dist/lifecycle.d.ts +13 -1
  41. package/dist/lifecycle.d.ts.map +1 -1
  42. package/dist/lifecycle.js +115 -58
  43. package/dist/lifecycle.js.map +1 -1
  44. package/dist/operator-access.d.ts.map +1 -1
  45. package/dist/operator-access.js +13 -3
  46. package/dist/operator-access.js.map +1 -1
  47. package/dist/release-contract.d.ts +3 -2
  48. package/dist/release-contract.d.ts.map +1 -1
  49. package/dist/release-contract.js +5 -2
  50. package/dist/release-contract.js.map +1 -1
  51. package/dist/release-manifest.d.ts +2 -0
  52. package/dist/release-manifest.d.ts.map +1 -1
  53. package/dist/release-manifest.js.map +1 -1
  54. package/dist/remote-mcp-edge.d.ts +114 -0
  55. package/dist/remote-mcp-edge.d.ts.map +1 -0
  56. package/dist/remote-mcp-edge.js +116 -0
  57. package/dist/remote-mcp-edge.js.map +1 -0
  58. package/dist/remote-mcp.d.ts +117 -0
  59. package/dist/remote-mcp.d.ts.map +1 -0
  60. package/dist/remote-mcp.js +379 -0
  61. package/dist/remote-mcp.js.map +1 -0
  62. package/dist/runtime-secrets.d.ts +12 -0
  63. package/dist/runtime-secrets.d.ts.map +1 -1
  64. package/dist/runtime-secrets.js +32 -4
  65. package/dist/runtime-secrets.js.map +1 -1
  66. package/dist/seal-key-rotation.d.ts +38 -0
  67. package/dist/seal-key-rotation.d.ts.map +1 -0
  68. package/dist/seal-key-rotation.js +206 -0
  69. package/dist/seal-key-rotation.js.map +1 -0
  70. package/dist/stack-contract.d.ts +167 -3
  71. package/dist/stack-contract.d.ts.map +1 -1
  72. package/dist/stack-contract.js +171 -3
  73. package/dist/stack-contract.js.map +1 -1
  74. package/dist/stack-converge.d.ts +38 -1
  75. package/dist/stack-converge.d.ts.map +1 -1
  76. package/dist/stack-converge.js +74 -4
  77. package/dist/stack-converge.js.map +1 -1
  78. package/dist/state-lock-lease.d.ts +142 -0
  79. package/dist/state-lock-lease.d.ts.map +1 -0
  80. package/dist/state-lock-lease.js +347 -0
  81. package/dist/state-lock-lease.js.map +1 -0
  82. package/dist/state-store.d.ts +66 -9
  83. package/dist/state-store.d.ts.map +1 -1
  84. package/dist/state-store.js +249 -30
  85. package/dist/state-store.js.map +1 -1
  86. package/dist/upgrade/app-roll.d.ts +36 -7
  87. package/dist/upgrade/app-roll.d.ts.map +1 -1
  88. package/dist/upgrade/app-roll.js +53 -19
  89. package/dist/upgrade/app-roll.js.map +1 -1
  90. package/dist/upgrade/converge.d.ts.map +1 -1
  91. package/dist/upgrade/converge.js +111 -9
  92. package/dist/upgrade/converge.js.map +1 -1
  93. package/dist/upgrade/gcp-lookup.d.ts +27 -10
  94. package/dist/upgrade/gcp-lookup.d.ts.map +1 -1
  95. package/dist/upgrade/gcp-lookup.js +46 -7
  96. package/dist/upgrade/gcp-lookup.js.map +1 -1
  97. package/dist/upgrade/record-rolled.d.ts +40 -0
  98. package/dist/upgrade/record-rolled.d.ts.map +1 -0
  99. package/dist/upgrade/record-rolled.js +46 -0
  100. package/dist/upgrade/record-rolled.js.map +1 -0
  101. package/dist/upgrade/upgrade.d.ts +45 -1
  102. package/dist/upgrade/upgrade.d.ts.map +1 -1
  103. package/dist/upgrade/upgrade.js +60 -17
  104. package/dist/upgrade/upgrade.js.map +1 -1
  105. package/dist/upgrader-assess.d.ts +15 -1
  106. package/dist/upgrader-assess.d.ts.map +1 -1
  107. package/dist/upgrader-assess.js +36 -6
  108. package/dist/upgrader-assess.js.map +1 -1
  109. package/dist/upgrader-gcp.d.ts +15 -0
  110. package/dist/upgrader-gcp.d.ts.map +1 -1
  111. package/dist/upgrader-gcp.js +42 -7
  112. package/dist/upgrader-gcp.js.map +1 -1
  113. package/dist/upgrader-iam-preflight.d.ts +123 -0
  114. package/dist/upgrader-iam-preflight.d.ts.map +1 -0
  115. package/dist/upgrader-iam-preflight.js +414 -0
  116. package/dist/upgrader-iam-preflight.js.map +1 -0
  117. package/dist/upgrader-job.d.ts +33 -9
  118. package/dist/upgrader-job.d.ts.map +1 -1
  119. package/dist/upgrader-job.js +169 -27
  120. package/dist/upgrader-job.js.map +1 -1
  121. package/dist/upgrader-records.d.ts +58 -0
  122. package/dist/upgrader-records.d.ts.map +1 -0
  123. package/dist/upgrader-records.js +87 -0
  124. package/dist/upgrader-records.js.map +1 -0
  125. package/dist/upgrader-reporter.d.ts +3 -2
  126. package/dist/upgrader-reporter.d.ts.map +1 -1
  127. package/dist/upgrader-reporter.js +10 -2
  128. package/dist/upgrader-reporter.js.map +1 -1
  129. package/dist/upgrader-setup.d.ts +25 -3
  130. package/dist/upgrader-setup.d.ts.map +1 -1
  131. package/dist/upgrader-setup.js +123 -11
  132. package/dist/upgrader-setup.js.map +1 -1
  133. package/dist/wizards/gcp-cost.d.ts.map +1 -1
  134. package/dist/wizards/gcp-cost.js +11 -3
  135. package/dist/wizards/gcp-cost.js.map +1 -1
  136. package/dist/wizards/gcp.d.ts.map +1 -1
  137. package/dist/wizards/gcp.js +99 -4
  138. package/dist/wizards/gcp.js.map +1 -1
  139. package/package.json +2 -2
  140. package/src/agent/run.test.ts +14 -1
  141. package/src/cli-routing.ts +1 -1
  142. package/src/cli.ts +4 -1
  143. package/src/compose.ts +5 -0
  144. package/src/converge-checkpoint.ts +75 -0
  145. package/src/converge-entrypoint.test.ts +213 -0
  146. package/src/converge-job-gcp.test.ts +222 -0
  147. package/src/converge-job-gcp.ts +443 -0
  148. package/src/converge-job-setup.test.ts +152 -0
  149. package/src/converge-job-setup.ts +268 -0
  150. package/src/converge-job.test.ts +486 -0
  151. package/src/converge-job.ts +542 -0
  152. package/src/gateway-env-isolation.test.ts +8 -1
  153. package/src/gcp-names.ts +15 -0
  154. package/src/gcp-url-map.test.ts +9 -1
  155. package/src/index.ts +8 -0
  156. package/src/infra-contract.test.ts +7 -4
  157. package/src/infra-contract.ts +22 -1
  158. package/src/install-job.test.ts +3 -1
  159. package/src/install-job.ts +31 -14
  160. package/src/lifecycle.ts +137 -71
  161. package/src/operator-access.test.ts +14 -0
  162. package/src/operator-access.ts +13 -3
  163. package/src/release-contract.ts +5 -2
  164. package/src/release-manifest.test.ts +42 -0
  165. package/src/release-manifest.ts +2 -0
  166. package/src/remote-mcp-edge.ts +137 -0
  167. package/src/remote-mcp.test.ts +517 -0
  168. package/src/remote-mcp.ts +460 -0
  169. package/src/runtime-secrets.test.ts +31 -6
  170. package/src/runtime-secrets.ts +41 -3
  171. package/src/seal-key-rotation.test.ts +131 -0
  172. package/src/seal-key-rotation.ts +258 -0
  173. package/src/stack-contract-parity.test.ts +20 -3
  174. package/src/stack-contract.test.ts +30 -2
  175. package/src/stack-contract.ts +291 -3
  176. package/src/stack-converge-secrets.test.ts +3 -0
  177. package/src/stack-converge.test.ts +21 -5
  178. package/src/stack-converge.ts +101 -7
  179. package/src/state-attach.test.ts +7 -1
  180. package/src/state-lock-lease.test.ts +302 -0
  181. package/src/state-lock-lease.ts +423 -0
  182. package/src/state-lock.test.ts +568 -0
  183. package/src/state-store.ts +347 -27
  184. package/src/upgrade/app-roll.ts +96 -21
  185. package/src/upgrade/converge.ts +130 -8
  186. package/src/upgrade/gcp-lookup.test.ts +80 -0
  187. package/src/upgrade/gcp-lookup.ts +65 -8
  188. package/src/upgrade/record-rolled.test.ts +105 -0
  189. package/src/upgrade/record-rolled.ts +91 -0
  190. package/src/upgrade/upgrade.test.ts +203 -3
  191. package/src/upgrade/upgrade.ts +120 -24
  192. package/src/upgrader-assess.test.ts +92 -3
  193. package/src/upgrader-assess.ts +58 -9
  194. package/src/upgrader-gcp.ts +47 -8
  195. package/src/upgrader-iam-preflight.test.ts +393 -0
  196. package/src/upgrader-iam-preflight.ts +510 -0
  197. package/src/upgrader-job.test.ts +586 -15
  198. package/src/upgrader-job.ts +237 -53
  199. package/src/upgrader-records.ts +151 -0
  200. package/src/upgrader-reporter.test.ts +6 -0
  201. package/src/upgrader-reporter.ts +7 -2
  202. package/src/upgrader-setup.test.ts +3 -3
  203. package/src/upgrader-setup.ts +128 -11
  204. package/src/wizards/gcp-cost.ts +12 -3
  205. package/src/wizards/gcp.ts +125 -4
  206. package/stacks/aws/index.ts +10 -0
  207. package/stacks/azure/index.ts +9 -0
  208. package/stacks/gcp/index.ts +46 -7
  209. package/stacks/gcp-firebase/index.ts +37 -6
@@ -7,16 +7,36 @@ export declare const UPGRADER_SQL_BACKUP_ROLE: CustomRoleSpec;
7
7
  * the file header). Names only — reads and writes stay on `install/`.
8
8
  */
9
9
  export declare const UPGRADER_OPS_LIST_ROLE: CustomRoleSpec;
10
- /** Project-level roles of the upgrader's service account. */
11
- export declare const UPGRADER_PROJECT_ROLES: readonly ["roles/run.developer", "roles/cloudsql.instanceUser", "roles/logging.logWriter"];
10
+ /**
11
+ * What an app-roll does on Cloud Run (upgrade/app-roll.ts, migration-runner.ts,
12
+ * the self-update, the #815 lock lease) — `roles/run.developer` minus
13
+ * everything else, above all `run.jobs.runWithOverrides` (see the file
14
+ * header). Keep in step with upgrader-iam-preflight.ts.
15
+ */
16
+ export declare const UPGRADER_RUN_ROLE: CustomRoleSpec;
17
+ /** Project-level predefined roles of the upgrader's service account. */
18
+ export declare const UPGRADER_PROJECT_ROLES: readonly ["roles/cloudsql.instanceUser", "roles/logging.logWriter"];
19
+ /**
20
+ * Predefined roles that hold `run.jobs.runWithOverrides`. Neither the
21
+ * upgrader nor the admin may hold any of them anywhere: with it, either
22
+ * could run the converge or install job — which run as caelo-provisioner —
23
+ * with its own arguments or environment (#883 review).
24
+ */
25
+ export declare const RUN_WITH_OVERRIDES_ROLES: readonly ["roles/owner", "roles/editor", "roles/run.admin", "roles/run.developer", "roles/run.invoker", "roles/run.jobsExecutorWithOverrides"];
12
26
  /**
13
27
  * Roles the upgrader must never hold anywhere — they would let it change
14
28
  * IAM, manage service accounts or secrets, or touch compute/projects.
15
29
  * Prefix matches (`roles/compute.` = every compute role).
16
30
  */
17
- 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"];
31
+ export declare const UPGRADER_FORBIDDEN_ROLES: readonly ["roles/owner", "roles/editor", "roles/run.admin", "roles/run.developer", "roles/run.invoker", "roles/run.jobsExecutorWithOverrides", "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"];
18
32
  /** Database role migration 0267 creates for the job. */
19
33
  export declare const UPGRADER_DB_ROLE = "platform_updater";
34
+ /**
35
+ * The job's task timeout in minutes: enough for a backup + roll; the job
36
+ * ends within it. It is also the lease on the state lock the job takes
37
+ * (#815, state-lock-lease.ts): after it, Cloud Run has killed the run.
38
+ */
39
+ export declare const UPGRADER_TASK_TIMEOUT_MINUTES = 60;
20
40
  export interface UpgraderSetupTarget {
21
41
  readonly projectId: string;
22
42
  readonly region: string;
@@ -43,6 +63,8 @@ export declare function ensureUpgraderJob(target: UpgraderSetupTarget, deps?: {
43
63
  run?: GcloudRunner;
44
64
  sleep?: Sleep;
45
65
  }): Promise<UpgraderSetupResult>;
66
+ /** Whether a gcloud IAM policy (JSON) grants `role` to `member`. */
67
+ export declare function projectPolicyHas(policyJson: string, role: string, member: string): boolean;
46
68
  /**
47
69
  * {@link ensureUpgraderJob}'s target, with the VPC read from the deployed
48
70
  * admin service (the job reaches Cloud SQL's private IP the same way).
@@ -1 +1 @@
1
- {"version":3,"file":"upgrader-setup.d.ts","sourceRoot":"","sources":["../src/upgrader-setup.ts"],"names":[],"mappings":"AAoDA,OAAO,EAAE,KAAK,YAAY,EAA2B,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAW3F,OAAO,EAAE,KAAK,cAAc,EAAoC,MAAM,sBAAsB,CAAC;AAG7F,mFAAmF;AACnF,eAAO,MAAM,wBAAwB,EAAE,cAYtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,cAMpC,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,CA2N9B;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"}
1
+ {"version":3,"file":"upgrader-setup.d.ts","sourceRoot":"","sources":["../src/upgrader-setup.ts"],"names":[],"mappings":"AA2EA,OAAO,EAAE,KAAK,YAAY,EAA2B,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAW3F,OAAO,EAAE,KAAK,cAAc,EAAoC,MAAM,sBAAsB,CAAC;AAG7F,mFAAmF;AACnF,eAAO,MAAM,wBAAwB,EAAE,cAYtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,cAMpC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,cA2B/B,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,sBAAsB,qEAGzB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,gJAO3B,CAAC;AAKX;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,+dAc3B,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAIhD,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,CAwP9B;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAM1F;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"}
@@ -16,9 +16,19 @@
16
16
  * The job's own service account, `caelo-<env>-upgrader`, may do exactly
17
17
  * what an app-roll needs (upgrade/app-roll.ts):
18
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`.
19
+ * - the custom role `caeloUpgraderRun` on the project
20
+ * ({@link UPGRADER_RUN_ROLE}): deploy admin/gateway revisions, move
21
+ * traffic, recreate and run the migration job, update its own job image.
22
+ * NOT `roles/run.developer`: that role holds `run.jobs.runWithOverrides`
23
+ * on every job of the project, including the converge job and the
24
+ * install job, which run as `caelo-provisioner` — the upgrader could run
25
+ * them with its own args (destroy, owner-reset) or env (CLOUDSDK_*,
26
+ * PULUMI_*) and so act as the provisioner (#883 review). The custom role
27
+ * has no `runWithOverrides` and no `*.setIamPolicy`. Updating another
28
+ * job (the converge job's image, say) additionally needs `actAs` on its
29
+ * service account, which the upgrader holds only on the admin, gateway
30
+ * and its own. A grant of `roles/run.developer` left by an earlier
31
+ * setup is removed.
22
32
  * - `roles/iam.serviceAccountUser` on exactly the admin's and the
23
33
  * gateway's runtime service accounts (a revision runs as them), on
24
34
  * itself (its own job) and on the quality-audit job's account (the
@@ -45,6 +55,19 @@
45
55
  * is a converge, which only the operator runs ("Run in Cloud Shell").
46
56
  * {@link UPGRADER_FORBIDDEN_ROLES} names that line; the tests assert no
47
57
  * grant crosses it.
58
+ *
59
+ * Direct VPC egress (#818): the migration job and both services run with
60
+ * `--network/--subnet`. Google documents the compute permissions that needs
61
+ * (`compute.subnetworks.use`, `compute.addresses.createInternal`, …) on the
62
+ * Cloud Run service agent, which `roles/run.serviceAgent` already gives it
63
+ * (cloud.google.com/run/docs/configuring/vpc-direct-vpc), not on the
64
+ * principal that deploys. So the upgrader gets no compute role; the
65
+ * real-GCP upgrader smoke test (.github/workflows/upgrader-smoke.yml) shows
66
+ * it once a stable release was installed on the smoke install through
67
+ * Settings → Updates (the next tag cannot ship before). Every permission
68
+ * the job needs is checked by the job itself before it changes anything
69
+ * (upgrader-iam-preflight.ts);
70
+ * a grant added or removed here must keep that list in step.
48
71
  */
49
72
  import { ensureCloudSqlIamUser } from "./cloudsql-iam-user.js";
50
73
  import { gcloud as defaultGcloud } from "./gcloud.js";
@@ -76,21 +99,67 @@ export const UPGRADER_OPS_LIST_ROLE = {
76
99
  description: "Lets the Caelo upgrader job list object names in the install's ops bucket (gcloud storage cp needs it). Names only; object reads/writes stay limited to install/.",
77
100
  permissions: ["storage.objects.list"],
78
101
  };
79
- /** Project-level roles of the upgrader's service account. */
102
+ /**
103
+ * What an app-roll does on Cloud Run (upgrade/app-roll.ts, migration-runner.ts,
104
+ * the self-update, the #815 lock lease) — `roles/run.developer` minus
105
+ * everything else, above all `run.jobs.runWithOverrides` (see the file
106
+ * header). Keep in step with upgrader-iam-preflight.ts.
107
+ */
108
+ export const UPGRADER_RUN_ROLE = {
109
+ roleId: "caeloUpgraderRun",
110
+ title: "Caelo upgrader: roll Cloud Run",
111
+ description: "Lets the Caelo upgrader job deploy admin/gateway revisions, run the migration job and update its own image. Cannot start any job with changed arguments or env, cannot change IAM.",
112
+ permissions: [
113
+ "run.configurations.get",
114
+ "run.configurations.list",
115
+ "run.executions.get",
116
+ "run.executions.list",
117
+ "run.jobs.create",
118
+ "run.jobs.delete",
119
+ "run.jobs.get",
120
+ "run.jobs.list",
121
+ "run.jobs.run",
122
+ "run.jobs.update",
123
+ "run.operations.get",
124
+ "run.revisions.get",
125
+ "run.revisions.list",
126
+ "run.routes.get",
127
+ "run.routes.list",
128
+ "run.services.get",
129
+ "run.services.list",
130
+ "run.services.update",
131
+ "run.tasks.get",
132
+ "run.tasks.list",
133
+ ],
134
+ };
135
+ /** Project-level predefined roles of the upgrader's service account. */
80
136
  export const UPGRADER_PROJECT_ROLES = [
81
- "roles/run.developer",
82
137
  "roles/cloudsql.instanceUser",
83
138
  "roles/logging.logWriter",
84
139
  ];
140
+ /**
141
+ * Predefined roles that hold `run.jobs.runWithOverrides`. Neither the
142
+ * upgrader nor the admin may hold any of them anywhere: with it, either
143
+ * could run the converge or install job — which run as caelo-provisioner —
144
+ * with its own arguments or environment (#883 review).
145
+ */
146
+ export const RUN_WITH_OVERRIDES_ROLES = [
147
+ "roles/owner",
148
+ "roles/editor",
149
+ "roles/run.admin",
150
+ "roles/run.developer",
151
+ "roles/run.invoker",
152
+ "roles/run.jobsExecutorWithOverrides",
153
+ ];
154
+ /** A project-level grant an earlier setup gave the upgrader; removed on every setup. */
155
+ const LEGACY_UPGRADER_PROJECT_ROLES = ["roles/run.developer"];
85
156
  /**
86
157
  * Roles the upgrader must never hold anywhere — they would let it change
87
158
  * IAM, manage service accounts or secrets, or touch compute/projects.
88
159
  * Prefix matches (`roles/compute.` = every compute role).
89
160
  */
90
161
  export const UPGRADER_FORBIDDEN_ROLES = [
91
- "roles/owner",
92
- "roles/editor",
93
- "roles/run.admin",
162
+ ...RUN_WITH_OVERRIDES_ROLES,
94
163
  "roles/iam.serviceAccountAdmin",
95
164
  "roles/iam.serviceAccountKeyAdmin",
96
165
  "roles/iam.securityAdmin",
@@ -106,8 +175,13 @@ export const UPGRADER_FORBIDDEN_ROLES = [
106
175
  ];
107
176
  /** Database role migration 0267 creates for the job. */
108
177
  export const UPGRADER_DB_ROLE = "platform_updater";
109
- /** The job's resources: enough for a backup + roll; the job ends within it. */
110
- const JOB_TASK_TIMEOUT = "60m";
178
+ /**
179
+ * The job's task timeout in minutes: enough for a backup + roll; the job
180
+ * ends within it. It is also the lease on the state lock the job takes
181
+ * (#815, state-lock-lease.ts): after it, Cloud Run has killed the run.
182
+ */
183
+ export const UPGRADER_TASK_TIMEOUT_MINUTES = 60;
184
+ const JOB_TASK_TIMEOUT = `${UPGRADER_TASK_TIMEOUT_MINUTES}m`;
111
185
  /** The ops bucket condition: install.json and progress.json, not the Pulumi state. */
112
186
  export function installStateCondition(bucket) {
113
187
  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}/`;
@@ -155,7 +229,7 @@ export async function ensureUpgraderJob(target, deps = {}) {
155
229
  };
156
230
  }
157
231
  // 1. The backup and ops-bucket-list roles.
158
- for (const role of [UPGRADER_SQL_BACKUP_ROLE, UPGRADER_OPS_LIST_ROLE]) {
232
+ for (const role of [UPGRADER_RUN_ROLE, UPGRADER_SQL_BACKUP_ROLE, UPGRADER_OPS_LIST_ROLE]) {
159
233
  const roleError = await ensureCustomRole(run, projectId, role);
160
234
  if (roleError)
161
235
  return { ok: false, done, error: roleError };
@@ -187,6 +261,7 @@ export async function ensureUpgraderJob(target, deps = {}) {
187
261
  // 3. Project-level roles.
188
262
  for (const role of [
189
263
  ...UPGRADER_PROJECT_ROLES,
264
+ customRoleName(projectId, UPGRADER_RUN_ROLE.roleId),
190
265
  customRoleName(projectId, UPGRADER_SQL_BACKUP_ROLE.roleId),
191
266
  ]) {
192
267
  const r = await retry([
@@ -203,6 +278,37 @@ export async function ensureUpgraderJob(target, deps = {}) {
203
278
  return fail(`grant the upgrader ${role}`, r);
204
279
  done.push(`upgrader: ${role} on the project`);
205
280
  }
281
+ // 3b. The project-wide roles/run.developer an earlier setup granted holds
282
+ // run.jobs.runWithOverrides on the provisioner's jobs: take it away.
283
+ // Only after the custom role above is bound, so a running upgrade
284
+ // never loses its Cloud Run rights in between.
285
+ const policy = await run(["projects", "get-iam-policy", projectId, "--format=json"]);
286
+ if (!policy.ok)
287
+ return fail("read the project's IAM policy", policy);
288
+ for (const role of LEGACY_UPGRADER_PROJECT_ROLES) {
289
+ let held;
290
+ try {
291
+ held = projectPolicyHas(policy.stdout, role, member);
292
+ }
293
+ catch (e) {
294
+ return { ok: false, done, error: `read the project's IAM policy: ${String(e)}` };
295
+ }
296
+ if (!held)
297
+ continue;
298
+ const r = await retry([
299
+ "projects",
300
+ "remove-iam-policy-binding",
301
+ projectId,
302
+ `--member=${member}`,
303
+ `--role=${role}`,
304
+ "--all",
305
+ "--quiet",
306
+ "--format=none",
307
+ ]);
308
+ if (!r.ok)
309
+ return fail(`remove the upgrader's ${role}`, r);
310
+ done.push(`upgrader: removed ${role} on the project`);
311
+ }
206
312
  // 4. Resource-level grants on single service accounts.
207
313
  const onAccounts = [
208
314
  {
@@ -330,6 +436,12 @@ export async function ensureUpgraderJob(target, deps = {}) {
330
436
  }
331
437
  return { ok: true, done };
332
438
  }
439
+ /** Whether a gcloud IAM policy (JSON) grants `role` to `member`. */
440
+ export function projectPolicyHas(policyJson, role, member) {
441
+ // Throws on unreadable JSON: the caller reports it, never guesses "absent".
442
+ const policy = JSON.parse(policyJson.trim() || "{}");
443
+ return (policy.bindings ?? []).some((b) => b.role === role && (b.members ?? []).includes(member));
444
+ }
333
445
  /**
334
446
  * {@link ensureUpgraderJob}'s target, with the VPC read from the deployed
335
447
  * admin service (the job reaches Cloud SQL's private IP the same way).
@@ -1 +1 @@
1
- {"version":3,"file":"upgrader-setup.js","sourceRoot":"","sources":["../src/upgrader-setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrader-setup.js","sourceRoot":"","sources":["../src/upgrader-setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gcp-cost.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp-cost.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC;IAClC,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAC;CAChB;AAmBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG;IAC3D,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;CACpB,CAwHA"}
1
+ {"version":3,"file":"gcp-cost.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp-cost.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC;IAClC,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAC;CAChB;AAmBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG;IAC3D,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;CACpB,CAiIA"}
@@ -92,6 +92,14 @@ export function estimateGcpCost(inputs) {
92
92
  ? "Adaptive protection (ML-based bot mitigation)"
93
93
  : "Free tier — rate limit + OWASP basic rules",
94
94
  },
95
+ {
96
+ // #806 — the remote-MCP throttle (src/remote-mcp-edge.ts) is one
97
+ // more rule on the gateway's policy; Cloud Armor Standard bills
98
+ // each rule at about $1/mo.
99
+ name: "Cloud Armor rule: remote MCP throttle",
100
+ monthlyUsd: 1,
101
+ notes: "Per-IP throttle for /api/mcp/* (remote MCP clients)",
102
+ },
95
103
  ]
96
104
  : [
97
105
  {
@@ -108,9 +116,9 @@ export function estimateGcpCost(inputs) {
108
116
  notes: "~5 GB storage + low egress; growth roughly $0.02/GB",
109
117
  },
110
118
  {
111
- name: "Secret Manager (5 secrets)",
112
- monthlyUsd: 0,
113
- notes: "Free tier",
119
+ name: "Secret Manager (runtime secrets)",
120
+ monthlyUsd: 0.2,
121
+ notes: "6 active versions free, then ~$0.06 each; remote MCP (#806) adds the OAuth client and its seal key",
114
122
  },
115
123
  {
116
124
  name: "BigQuery edge log sink",
@@ -1 +1 @@
1
- {"version":3,"file":"gcp-cost.js","sourceRoot":"","sources":["../../src/wizards/gcp-cost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gcp-cost.js","sourceRoot":"","sources":["../../src/wizards/gcp-cost.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gcp.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp.ts"],"names":[],"mappings":"AAuGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAOL,KAAK,eAAe,EAErB,MAAM,qBAAqB,CAAC;AAa7B,MAAM,WAAW,aAAa;IAC5B,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,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2HrE;AAKD,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,cAAc,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,uEAAuE;IACvE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7D;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAwMzE"}
1
+ {"version":3,"file":"gcp.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp.ts"],"names":[],"mappings":"AAyGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAOL,KAAK,eAAe,EAErB,MAAM,qBAAqB,CAAC;AAc7B,MAAM,WAAW,aAAa;IAC5B,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,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2HrE;AAKD,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,cAAc,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,uEAAuE;IACvE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7D;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiNzE"}
@@ -34,6 +34,7 @@ import { checkAdcImpersonation } from "../adc-impersonation.js";
34
34
  import { ensureAuditJob, resolveAdminImage } from "../audit-job-setup.js";
35
35
  import { CERT_WAIT_TIMEOUT_MS, lbCertProbe, waitForCert } from "../cert-wait.js";
36
36
  import { redactCredentials } from "../checkpoint-secrets.js";
37
+ import { ensureConvergeJob } from "../converge-job-setup.js";
37
38
  import { removeDefaultFirewallRules } from "../default-firewall.js";
38
39
  import { checkDeployedRuntimeEnv, chooseImageDigests, readDeployedImageDigests, readDeployedRegion, } from "../deployed-release.js";
39
40
  import { formatDnsRecordGroups, groupDnsRecords } from "../dns/groups.js";
@@ -48,10 +49,12 @@ import { ensureOpsBackend } from "../ops-backend.js";
48
49
  import { convergeKeylessProvisioner, PROVISIONER_ACCOUNT_ID, provisionerServiceAccountEmail, } from "../provisioner-identity.js";
49
50
  import { revokePublicRoleMemberships } from "../public-role-isolation.js";
50
51
  import { decideRegion, detectCliRegion, installableRegions, suggestRegion } from "../regions.js";
52
+ import { ensureRemoteMcpEdge, ensureRemoteMcpIdentityEnv } from "../remote-mcp.js";
51
53
  import { selfCommand } from "../self-command.js";
52
54
  import { ABSENT_DEFAULT_FIREWALL_RULES } from "../stack-contract.js";
53
55
  import { chooseInstallBackend, describeBackend, gcsBackendRecord, hasLocalPulumiState, installBackend, parseStateBackend, resolveBackend, } from "../state-backend.js";
54
56
  import { acquireStateLock, GcsStateStore } from "../state-store.js";
57
+ import { resolveGcpResourceName } from "../upgrade/gcp-lookup.js";
55
58
  import { releaseVersionForDigest, resolveOpsImageRef, verifyCosignAll, } from "../upgrade/release-images.js";
56
59
  import { ensureUpgraderJob, resolveUpgraderTarget } from "../upgrader-setup.js";
57
60
  import { ensureUrlMapRedirectsAccess } from "../url-map-redirects-access.js";
@@ -318,13 +321,21 @@ export async function runGcpConverge(opts) {
318
321
  const releaseVersion = await releaseVersionForDigest(gcloud, "admin", imageDigests.admin);
319
322
  const upgraderReady = await stepUpgraderJob(projectId, region, releaseVersion);
320
323
  const keepSigner = upgraderReady || (await upgraderExists(projectId));
324
+ // === 11.45. The converge job: releases that change the cloud setup (#819) ===
325
+ const convergeReady = await stepConvergeJob(projectId, region, releaseVersion);
321
326
  // === 11.5. Operator access: IAP follows the Caelo user list ===
322
327
  await stepOperatorAccessSync(projectId, region, provider, ownerEmail, keepSigner ? [`serviceAccount:${upgraderServiceAccountEmail(projectId, GCP_STACK_ENV)}`] : []);
328
+ // === 11.6. Remote MCP (#806): LB rules (gcp) + the identity env ===
329
+ // After `pulumi up` on every pass: the identity env names services Pulumi
330
+ // generated, so the stack cannot declare it, and an `up` that changed a
331
+ // service's template dropped it (remote-mcp.ts).
332
+ const remoteMcpReady = await stepRemoteMcp(projectId, region, provider, domain);
323
333
  // A fresh install ran every converge step above, so it is at this CLI's
324
- // infrastructure contract — recorded only when the upgrader is in place
325
- // (the last step a contract bump added). With the release version, the
326
- // admin can install the next update itself.
327
- if (upgraderReady) {
334
+ // infrastructure contract — recorded only when the upgrader and the
335
+ // converge job are in place (the steps contract bumps 2 and 9 added) and
336
+ // remote MCP's steps (#806, bump 10) succeeded. With the release version,
337
+ // the admin can install the next update itself.
338
+ if (upgraderReady && convergeReady && remoteMcpReady) {
328
339
  const version = releaseVersion;
329
340
  recordImageDigests(installId, imageDigests, version);
330
341
  recordInfraContractVersion(installId, INFRA_CONTRACT_VERSION);
@@ -749,6 +760,52 @@ async function stepUpgraderJob(projectId, region, releaseVersion) {
749
760
  s.stop(green(`Upgrader job ready (${r.done.length} steps)`));
750
761
  return true;
751
762
  }
763
+ /**
764
+ * Set up the converge job (converge-job-setup.ts, #819): what the admin's
765
+ * "Install update" starts for a release that changes the cloud setup. Same
766
+ * shape as {@link stepUpgraderJob}: after migrations (its database login
767
+ * gets migration 0267's role), only a verified ops image, and a failure
768
+ * only warns — such releases then install from a terminal until a later
769
+ * `upgrade` sets the job up. Idempotent.
770
+ *
771
+ * @returns whether the job is ready
772
+ */
773
+ async function stepConvergeJob(projectId, region, releaseVersion) {
774
+ const opsImageRef = releaseVersion ? await resolveOpsImageRef(releaseVersion) : null;
775
+ const digest = opsImageRef ? /@(sha256:[0-9a-f]{64})$/.exec(opsImageRef)?.[1] : undefined;
776
+ // The job runs as the provisioner: only a verified image, ever.
777
+ if (digest && !(await verifyCosignAll([{ slug: "ops", digest }]))) {
778
+ log.warn(`The converge job is not set up: its image's signature did not verify. The install works; ${bold(selfCommand("upgrade"))} sets it up later.`);
779
+ return false;
780
+ }
781
+ const s = spinner();
782
+ s.start("Setting up the converge job (cloud-setup updates from the admin)...");
783
+ const resolved = opsImageRef
784
+ ? await resolveUpgraderTarget({ projectId, region, env: GCP_STACK_ENV, opsImageRef })
785
+ : {
786
+ ok: false,
787
+ error: releaseVersion
788
+ ? `release ${releaseVersion} has no caelo-ops image in the registry`
789
+ : "the release this install runs could not be told from its images",
790
+ };
791
+ const r = resolved.ok
792
+ ? await ensureConvergeJob(resolved.target)
793
+ : { ok: false, done: [], error: resolved.error };
794
+ if (!r.ok && r.reason === "no-provisioner") {
795
+ // #883 review — not needed for the contract: such an install installs
796
+ // cloud-setup releases from a terminal, and its admin says so.
797
+ s.stop(yellow("No converge job: this install has no caelo-provisioner to run it as"));
798
+ log.info("Releases that change the cloud setup install from a terminal; Settings → Updates says so when one comes.");
799
+ return true;
800
+ }
801
+ if (!r.ok) {
802
+ s.stop(yellow(`Converge job not set up: ${r.error}`));
803
+ log.warn(`The install works; releases that change the cloud setup install from a terminal until ${bold(selfCommand("upgrade"))} sets the job up.`);
804
+ return false;
805
+ }
806
+ s.stop(green(`Converge job ready (${r.done.length} steps)`));
807
+ return true;
808
+ }
752
809
  /**
753
810
  * Set up the quality-audit job (audit-job-setup.ts) on the deployed admin's
754
811
  * image. A failure stops the wizard: without the job every Stage audit
@@ -819,6 +876,44 @@ async function stepOperatorAccessSync(projectId, region, provider, ownerEmail, m
819
876
  }
820
877
  s.stop(green(`Operator-access sync job ready (${r.done.length} steps)`));
821
878
  }
879
+ /**
880
+ * #806 — the CLI's part of remote MCP (remote-mcp.ts): on `gcp` the load
881
+ * balancer's discovery routes and Cloud Armor rule, on both providers the
882
+ * env vars naming the admin URL, the broker's public URL and the IAP
883
+ * audience. Remote MCP stays off until the Owner sets it up under Settings →
884
+ * MCP, so a failure does not stop the install: it warns, and the next pass
885
+ * or `upgrade` retries. Idempotent.
886
+ *
887
+ * @returns whether every part is in place
888
+ */
889
+ async function stepRemoteMcp(projectId, region, provider, domain) {
890
+ const s = spinner();
891
+ s.start("Preparing remote MCP (ChatGPT / claude.ai connectors; off until the Owner enables it)...");
892
+ const name = (slug) => resolveGcpResourceName(gcloud, "run-service", `caelo-${GCP_STACK_ENV}-${slug}`, projectId, region);
893
+ const [admin, gateway] = [await name("admin"), await name("gateway")];
894
+ const failed = (error) => {
895
+ s.stop(yellow(`Remote MCP not prepared: ${error}`));
896
+ log.warn(`The install works; Settings → MCP reports remote MCP as unavailable until ${bold(selfCommand("upgrade"))} prepares it.`);
897
+ return false;
898
+ };
899
+ if (!admin || !gateway)
900
+ return failed("the admin or gateway Cloud Run service was not found");
901
+ const edge = await ensureRemoteMcpEdge({ provider, projectId, env: GCP_STACK_ENV, domain });
902
+ if (!edge.ok)
903
+ return failed(edge.error);
904
+ const env = await ensureRemoteMcpIdentityEnv({
905
+ provider,
906
+ projectId,
907
+ region,
908
+ env: GCP_STACK_ENV,
909
+ domain,
910
+ services: { admin, gateway },
911
+ });
912
+ if (!env.ok)
913
+ return failed(env.error);
914
+ s.stop(green(`Remote MCP prepared (${env.identity.mcpPublicUrl})`));
915
+ return true;
916
+ }
822
917
  /**
823
918
  * Delete the firewall rules GCP pre-populates on the `default` network
824
919
  * (SSH, RDP, ICMP, internal; default-firewall.ts). A customised rule of the