@caelo-cms/provisioning 0.10.29 → 0.10.31
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.
- package/dist/admin-domain.d.ts +54 -0
- package/dist/admin-domain.d.ts.map +1 -0
- package/dist/admin-domain.js +122 -0
- package/dist/admin-domain.js.map +1 -0
- package/dist/cli.js +71 -7
- package/dist/cli.js.map +1 -1
- package/dist/compose.d.ts +7 -9
- package/dist/compose.d.ts.map +1 -1
- package/dist/compose.js +17 -1
- package/dist/compose.js.map +1 -1
- package/dist/deployed-release.d.ts +84 -0
- package/dist/deployed-release.d.ts.map +1 -0
- package/dist/deployed-release.js +182 -0
- package/dist/deployed-release.js.map +1 -0
- package/dist/gcloud-retry.d.ts +16 -0
- package/dist/gcloud-retry.d.ts.map +1 -0
- package/dist/gcloud-retry.js +17 -0
- package/dist/gcloud-retry.js.map +1 -0
- package/dist/gcloud.d.ts.map +1 -1
- package/dist/gcloud.js +2 -0
- package/dist/gcloud.js.map +1 -1
- package/dist/gcp-names.d.ts +58 -0
- package/dist/gcp-names.d.ts.map +1 -0
- package/dist/gcp-names.js +88 -0
- package/dist/gcp-names.js.map +1 -0
- package/dist/install-state.d.ts +31 -0
- package/dist/install-state.d.ts.map +1 -1
- package/dist/install-state.js +38 -0
- package/dist/install-state.js.map +1 -1
- package/dist/lifecycle.d.ts +5 -0
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +340 -50
- package/dist/lifecycle.js.map +1 -1
- package/dist/mcp-iap.d.ts +5 -26
- package/dist/mcp-iap.d.ts.map +1 -1
- package/dist/mcp-iap.js +6 -18
- package/dist/mcp-iap.js.map +1 -1
- package/dist/migration-runner.d.ts +25 -0
- package/dist/migration-runner.d.ts.map +1 -1
- package/dist/migration-runner.js +60 -19
- package/dist/migration-runner.js.map +1 -1
- package/dist/operator-access.d.ts +83 -0
- package/dist/operator-access.d.ts.map +1 -0
- package/dist/operator-access.js +562 -0
- package/dist/operator-access.js.map +1 -0
- package/dist/region-data.d.ts +30 -0
- package/dist/region-data.d.ts.map +1 -0
- package/dist/region-data.js +406 -0
- package/dist/region-data.js.map +1 -0
- package/dist/regions.d.ts +130 -0
- package/dist/regions.d.ts.map +1 -0
- package/dist/regions.js +247 -0
- package/dist/regions.js.map +1 -0
- package/dist/runtime-secrets.d.ts +128 -0
- package/dist/runtime-secrets.d.ts.map +1 -0
- package/dist/runtime-secrets.js +444 -0
- package/dist/runtime-secrets.js.map +1 -0
- package/dist/stack-contract.d.ts +231 -0
- package/dist/stack-contract.d.ts.map +1 -0
- package/dist/stack-contract.js +455 -0
- package/dist/stack-contract.js.map +1 -0
- package/dist/stack-converge.d.ts +183 -0
- package/dist/stack-converge.d.ts.map +1 -0
- package/dist/stack-converge.js +513 -0
- package/dist/stack-converge.js.map +1 -0
- package/dist/wizard.d.ts +7 -0
- package/dist/wizard.d.ts.map +1 -1
- package/dist/wizard.js +11 -1
- package/dist/wizard.js.map +1 -1
- package/dist/wizards/gcp-cost.d.ts +10 -10
- package/dist/wizards/gcp-cost.d.ts.map +1 -1
- package/dist/wizards/gcp-cost.js +40 -3
- package/dist/wizards/gcp-cost.js.map +1 -1
- package/dist/wizards/gcp-firebase.d.ts +2 -0
- package/dist/wizards/gcp-firebase.d.ts.map +1 -1
- package/dist/wizards/gcp-firebase.js +1 -0
- package/dist/wizards/gcp-firebase.js.map +1 -1
- package/dist/wizards/gcp-pulumi.d.ts +51 -1
- package/dist/wizards/gcp-pulumi.d.ts.map +1 -1
- package/dist/wizards/gcp-pulumi.js +89 -6
- package/dist/wizards/gcp-pulumi.js.map +1 -1
- package/dist/wizards/gcp.d.ts +2 -0
- package/dist/wizards/gcp.d.ts.map +1 -1
- package/dist/wizards/gcp.js +171 -23
- package/dist/wizards/gcp.js.map +1 -1
- package/package.json +3 -3
- package/stacks/aws/Pulumi.yaml +5 -2
- package/stacks/aws/README.md +3 -1
- package/stacks/aws/index.ts +21 -1
- package/stacks/azure/Pulumi.yaml +6 -3
- package/stacks/azure/README.md +1 -1
- package/stacks/azure/index.ts +22 -3
- package/stacks/gcp/Pulumi.yaml +5 -5
- package/stacks/gcp/README.md +15 -3
- package/stacks/gcp/index.ts +204 -141
- package/stacks/gcp-firebase/Pulumi.yaml +5 -2
- package/stacks/gcp-firebase/index.ts +169 -76
- package/stacks/self-hosted/Pulumi.yaml +4 -0
- package/stacks/self-hosted/index.ts +3 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
export type GcpProvider = "gcp" | "gcp-firebase";
|
|
2
|
+
export type CloudRunSlug = "admin" | "gateway";
|
|
3
|
+
/**
|
|
4
|
+
* One container env var, in the shape Pulumi's `gcp.cloudrunv2.Service`
|
|
5
|
+
* `envs` accepts. `V` is the value type: `pulumi.Input<string>` in the
|
|
6
|
+
* stacks, `string` in upgrade.
|
|
7
|
+
*/
|
|
8
|
+
export type CloudRunEnvVar<V = string> = {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly value: V;
|
|
11
|
+
} | {
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly valueSource: {
|
|
14
|
+
readonly secretKeyRef: {
|
|
15
|
+
readonly secret: V;
|
|
16
|
+
readonly version: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
/** Install metadata every service's env derives from. */
|
|
21
|
+
export interface ServiceEnvInputs {
|
|
22
|
+
readonly provider: GcpProvider;
|
|
23
|
+
readonly projectId: string;
|
|
24
|
+
/** Pulumi stack name (`production`). */
|
|
25
|
+
readonly env: string;
|
|
26
|
+
/** Install domain; the public site is served at its apex. */
|
|
27
|
+
readonly domain: string;
|
|
28
|
+
readonly region: string;
|
|
29
|
+
}
|
|
30
|
+
/** The password-less connection URLs of the install's Cloud SQL databases. */
|
|
31
|
+
export interface DatabaseUrls<V = string> {
|
|
32
|
+
/** admin_role on cms_admin — the admin's primary pool. */
|
|
33
|
+
readonly admin: V;
|
|
34
|
+
/** admin_role on cms_public — the admin's second pool (DDL, migrations). */
|
|
35
|
+
readonly publicAdmin: V;
|
|
36
|
+
/** public_role on cms_public — the gateway's visitor-write pool. */
|
|
37
|
+
readonly public: V;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Password-less connection URLs for a Cloud SQL instance at `host`. The
|
|
41
|
+
* password reaches the apps separately, as a Secret Manager reference
|
|
42
|
+
* ({@link SERVICE_SECRET_ENV}).
|
|
43
|
+
*/
|
|
44
|
+
export declare function databaseUrls(host: string): DatabaseUrls;
|
|
45
|
+
/** What a running service's env derives from: install metadata + the database. */
|
|
46
|
+
export interface RuntimeEnvInputs<V = string> extends ServiceEnvInputs {
|
|
47
|
+
/** From the Cloud SQL private IP — an Output in the stacks. */
|
|
48
|
+
readonly databaseUrls: DatabaseUrls<V>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* What the admin's env derives from. Most values come from install metadata;
|
|
52
|
+
* the few Pulumi generates (database host, Firebase site id, the gateway's
|
|
53
|
+
* auto-named Cloud Run service) are passed in — as Outputs by the stack, as
|
|
54
|
+
* discovered strings by upgrade.
|
|
55
|
+
*/
|
|
56
|
+
export type AdminEnvInputs<V = string> = (RuntimeEnvInputs<V> & {
|
|
57
|
+
readonly provider: "gcp";
|
|
58
|
+
}) | (RuntimeEnvInputs<V> & {
|
|
59
|
+
readonly provider: "gcp-firebase";
|
|
60
|
+
readonly firebaseSiteId: V;
|
|
61
|
+
readonly gatewayService: V;
|
|
62
|
+
});
|
|
63
|
+
/** The public site's base URL, as the admin seeds `site_base_url` from it (#551). */
|
|
64
|
+
export declare function publicSiteUrl(domain: string): string;
|
|
65
|
+
/**
|
|
66
|
+
* The admin env var naming the MCP service account (issue #37). `upgrade`
|
|
67
|
+
* leaves it untouched when it could not set that account up.
|
|
68
|
+
*/
|
|
69
|
+
export declare const MCP_ENV_VAR = "CAELO_MCP_IAP_SERVICE_ACCOUNT";
|
|
70
|
+
/**
|
|
71
|
+
* The admin env var naming the operator-access sync job. `upgrade` leaves it
|
|
72
|
+
* untouched when it could not set the job up.
|
|
73
|
+
*/
|
|
74
|
+
export declare const OPERATOR_ACCESS_JOB_ENV_VAR = "CAELO_OPERATOR_ACCESS_JOB";
|
|
75
|
+
/**
|
|
76
|
+
* The Secret Manager secrets admin + gateway read at runtime, by logical
|
|
77
|
+
* name ({@link gcpSecretId} gives the secret id).
|
|
78
|
+
*/
|
|
79
|
+
export type RuntimeSecret = "postgres-password" | "secret-kek" | "internal-secret" | "tool-approval-secret";
|
|
80
|
+
/**
|
|
81
|
+
* Secrets the CLI generates and stores (runtime-secrets.ts
|
|
82
|
+
* `ensureGeneratedSecrets`) rather than Pulumi: the wizard creates them
|
|
83
|
+
* before `pulumi up`, upgrade creates them on installs that predate them.
|
|
84
|
+
* Pulumi only references them, so a `pulumi up` after an upgrade never
|
|
85
|
+
* collides with a secret upgrade created.
|
|
86
|
+
*/
|
|
87
|
+
export declare const CLI_GENERATED_SECRETS: readonly ["internal-secret", "tool-approval-secret"];
|
|
88
|
+
/**
|
|
89
|
+
* Each service's Secret Manager-backed env vars and the secret each reads.
|
|
90
|
+
* The services' run SAs get `secretAccessor` on exactly these secrets
|
|
91
|
+
* ({@link runtimeSecretBindings}), so this table is also the least-privilege
|
|
92
|
+
* boundary between the two services.
|
|
93
|
+
*/
|
|
94
|
+
export declare const SERVICE_SECRET_ENV: Readonly<Record<CloudRunSlug, Readonly<Record<string, RuntimeSecret>>>>;
|
|
95
|
+
/** The secrets `service` reads (deduplicated, table order). */
|
|
96
|
+
export declare function serviceSecrets(service: CloudRunSlug): RuntimeSecret[];
|
|
97
|
+
/**
|
|
98
|
+
* Env vars an older stack set that the contract no longer gives a service;
|
|
99
|
+
* upgrade removes them. The gateway never used the KEK, and its run SA
|
|
100
|
+
* cannot read it.
|
|
101
|
+
*/
|
|
102
|
+
export declare const RETIRED_SERVICE_ENV: Readonly<Record<CloudRunSlug, readonly string[]>>;
|
|
103
|
+
/**
|
|
104
|
+
* The env of the gateway service. Order is stable so the stacks see no
|
|
105
|
+
* spurious diffs.
|
|
106
|
+
*/
|
|
107
|
+
export declare function gatewayEnvContract<V>(inputs: RuntimeEnvInputs<V>): CloudRunEnvVar<V | string>[];
|
|
108
|
+
/**
|
|
109
|
+
* The env of the admin service.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* adminEnvContract({ provider: "gcp", projectId: "p", env: "production",
|
|
113
|
+
* domain: "example.com", region: "europe-west1",
|
|
114
|
+
* databaseUrls: databaseUrls("10.20.0.3") })
|
|
115
|
+
* // → [{ name: "CAELO_PROVIDER", value: "gcp" }, …,
|
|
116
|
+
* // { name: "CAELO_SITE_URL", value: "https://example.com" }, …,
|
|
117
|
+
* // { name: "CAELO_SECRET_KEK", valueSource: { secretKeyRef: … } }, …]
|
|
118
|
+
*/
|
|
119
|
+
export declare function adminEnvContract<V>(inputs: AdminEnvInputs<V>): CloudRunEnvVar<V | string>[];
|
|
120
|
+
/**
|
|
121
|
+
* Cloud CDN policy of the `gcp` stack's static backend bucket. The GCS
|
|
122
|
+
* publisher sets an explicit Cache-Control on every object: content-hashed
|
|
123
|
+
* assets `max-age=31536000, immutable`, pages `max-age=60` + SWR. In
|
|
124
|
+
* CACHE_ALL_STATIC mode `clientTtl` clamps the max-age browsers see and
|
|
125
|
+
* `maxTtl` caps the edge TTL, so both must allow a year or the immutable
|
|
126
|
+
* policy is cut back to 1h (#555). `defaultTtl` applies only to responses
|
|
127
|
+
* without a max-age.
|
|
128
|
+
*/
|
|
129
|
+
export declare const STATIC_CDN_POLICY: {
|
|
130
|
+
readonly cacheMode: "CACHE_ALL_STATIC";
|
|
131
|
+
readonly defaultTtl: 3600;
|
|
132
|
+
readonly maxTtl: 31536000;
|
|
133
|
+
readonly clientTtl: 31536000;
|
|
134
|
+
};
|
|
135
|
+
/** Who an IAM invariant grants a role to. */
|
|
136
|
+
export type IamPrincipal =
|
|
137
|
+
/** The runtime SA the admin (and the migration jobs) run as. */
|
|
138
|
+
"run-sa"
|
|
139
|
+
/** The runtime SA the gateway runs as. */
|
|
140
|
+
| "gateway-sa"
|
|
141
|
+
/** The `gcp` stack's static-publisher SA. */
|
|
142
|
+
| "static-publisher-sa"
|
|
143
|
+
/** IAP's Google-managed service agent (forwards IAP traffic to Cloud Run). */
|
|
144
|
+
| "iap-service-agent" | "allUsers";
|
|
145
|
+
/** The resource an IAM invariant's binding lives on. */
|
|
146
|
+
export type IamTarget = {
|
|
147
|
+
readonly kind: "project";
|
|
148
|
+
} | {
|
|
149
|
+
readonly kind: "secret";
|
|
150
|
+
readonly name: string;
|
|
151
|
+
} | {
|
|
152
|
+
readonly kind: "bucket";
|
|
153
|
+
readonly bucket: "media" | "static" | "staging";
|
|
154
|
+
} | {
|
|
155
|
+
readonly kind: "run-service";
|
|
156
|
+
readonly service: CloudRunSlug;
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* One IAM binding a stack declares and upgrade ensures.
|
|
160
|
+
*
|
|
161
|
+
* `onFailure` decides what upgrade does when it can neither find nor add the
|
|
162
|
+
* binding: `abort` (before any traffic shifts) when the install cannot work
|
|
163
|
+
* without it, `warn` when only something non-essential degrades.
|
|
164
|
+
*/
|
|
165
|
+
export interface IamInvariant {
|
|
166
|
+
/**
|
|
167
|
+
* Logical name of the stack resource that declares the binding, without
|
|
168
|
+
* the `${namePrefix}-` prefix — the parity test finds it in the stack by
|
|
169
|
+
* this name.
|
|
170
|
+
*/
|
|
171
|
+
readonly stackResource: string;
|
|
172
|
+
readonly role: string;
|
|
173
|
+
readonly member: IamPrincipal;
|
|
174
|
+
readonly target: IamTarget;
|
|
175
|
+
readonly onFailure: "abort" | "warn";
|
|
176
|
+
readonly why: string;
|
|
177
|
+
}
|
|
178
|
+
/** One `secretAccessor` binding a stack declares for a service's run SA. */
|
|
179
|
+
export interface RuntimeSecretBinding {
|
|
180
|
+
readonly service: CloudRunSlug;
|
|
181
|
+
readonly secret: RuntimeSecret;
|
|
182
|
+
/** Logical stack resource name, without the `${namePrefix}-` prefix. */
|
|
183
|
+
readonly stackResource: string;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The `secretAccessor` bindings both stacks declare: each service's run SA
|
|
187
|
+
* on exactly the secrets its env reads ({@link SERVICE_SECRET_ENV}).
|
|
188
|
+
*/
|
|
189
|
+
export declare function runtimeSecretBindings(): RuntimeSecretBinding[];
|
|
190
|
+
/** Every IAM binding upgrade ensures on an install of `provider`. */
|
|
191
|
+
export declare function stackIamInvariants(provider: GcpProvider): IamInvariant[];
|
|
192
|
+
/**
|
|
193
|
+
* IAM bindings the stacks declare that upgrade deliberately does not ensure,
|
|
194
|
+
* keyed by provider and the stack resource's logical name as written in the
|
|
195
|
+
* stack source, with each `${…}` placeholder written as `*`.
|
|
196
|
+
*/
|
|
197
|
+
export declare const STACK_IAM_NOT_ENSURED: Record<GcpProvider, Readonly<Record<string, string>>>;
|
|
198
|
+
/** The IAM member string for a principal on a concrete install. */
|
|
199
|
+
export declare function iamMember(principal: IamPrincipal, install: {
|
|
200
|
+
readonly projectId: string;
|
|
201
|
+
readonly projectNumber: string;
|
|
202
|
+
readonly env: string;
|
|
203
|
+
}): string;
|
|
204
|
+
/** Name prefix of the `gcp` stack's static backend bucket (Pulumi auto-suffixed). */
|
|
205
|
+
export declare function staticBackendBucketPrefix(env: string): string;
|
|
206
|
+
/**
|
|
207
|
+
* #553 — the admin's memory, in Cloud Run / Kubernetes quantity notation.
|
|
208
|
+
* The admin runs the quality audit (Lighthouse driving the bundled
|
|
209
|
+
* Chromium in a child process) next to the editor's requests; 1 GiB left
|
|
210
|
+
* no headroom for both, 2 GiB does. Every adapter exposes the same
|
|
211
|
+
* `adminMemory` knob with this default (CLAUDE.md §11.B), and `upgrade`
|
|
212
|
+
* raises an existing install's admin to it (never lowers a larger value).
|
|
213
|
+
*/
|
|
214
|
+
export declare const ADMIN_MEMORY_DEFAULT = "2Gi";
|
|
215
|
+
/**
|
|
216
|
+
* Parse a memory quantity (`512Mi`, `2Gi`, `2G`, `1.5Gi`) to MiB; null when
|
|
217
|
+
* it is not a quantity this contract understands.
|
|
218
|
+
*/
|
|
219
|
+
/**
|
|
220
|
+
* #553 — Azure Container Apps (Consumption) only accepts fixed CPU/memory
|
|
221
|
+
* pairs: 0.25 vCPU / 0.5Gi up to 4 vCPU / 8Gi in 0.25 vCPU steps, memory
|
|
222
|
+
* always 2 GiB per vCPU. Map `adminMemory` onto that pair, or throw with
|
|
223
|
+
* the accepted values — an unsupported size must fail before `pulumi up`
|
|
224
|
+
* does, not deploy something else.
|
|
225
|
+
*/
|
|
226
|
+
export declare function azureContainerAppResources(quantity: string): {
|
|
227
|
+
readonly cpu: number;
|
|
228
|
+
readonly memory: string;
|
|
229
|
+
};
|
|
230
|
+
export declare function memoryQuantityMiB(quantity: string): number | null;
|
|
231
|
+
//# sourceMappingURL=stack-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-contract.d.ts","sourceRoot":"","sources":["../src/stack-contract.ts"],"names":[],"mappings":"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"}
|