@caelo-cms/provisioning 0.11.3 → 0.11.4

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 (73) hide show
  1. package/dist/agent-db.js +46 -37
  2. package/dist/audit-job-setup.js +2 -2
  3. package/dist/audit-job-setup.js.map +1 -1
  4. package/dist/capture-job-setup.d.ts +46 -0
  5. package/dist/capture-job-setup.d.ts.map +1 -0
  6. package/dist/capture-job-setup.js +288 -0
  7. package/dist/capture-job-setup.js.map +1 -0
  8. package/dist/gcp-names.d.ts +17 -1
  9. package/dist/gcp-names.d.ts.map +1 -1
  10. package/dist/gcp-names.js +24 -0
  11. package/dist/gcp-names.js.map +1 -1
  12. package/dist/infra-contract.d.ts +1 -1
  13. package/dist/infra-contract.d.ts.map +1 -1
  14. package/dist/infra-contract.js +11 -1
  15. package/dist/infra-contract.js.map +1 -1
  16. package/dist/release-contract.d.ts.map +1 -1
  17. package/dist/release-contract.js +2 -0
  18. package/dist/release-contract.js.map +1 -1
  19. package/dist/stack-contract.d.ts +9 -0
  20. package/dist/stack-contract.d.ts.map +1 -1
  21. package/dist/stack-contract.js +16 -1
  22. package/dist/stack-contract.js.map +1 -1
  23. package/dist/upgrade/admin-image-jobs.d.ts +47 -0
  24. package/dist/upgrade/admin-image-jobs.d.ts.map +1 -0
  25. package/dist/upgrade/{audit-job-roll.js → admin-image-jobs.js} +19 -8
  26. package/dist/upgrade/admin-image-jobs.js.map +1 -0
  27. package/dist/upgrade/app-roll.d.ts.map +1 -1
  28. package/dist/upgrade/app-roll.js +31 -28
  29. package/dist/upgrade/app-roll.js.map +1 -1
  30. package/dist/upgrade/converge.d.ts.map +1 -1
  31. package/dist/upgrade/converge.js +31 -1
  32. package/dist/upgrade/converge.js.map +1 -1
  33. package/dist/upgrader-iam-preflight.d.ts.map +1 -1
  34. package/dist/upgrader-iam-preflight.js +8 -2
  35. package/dist/upgrader-iam-preflight.js.map +1 -1
  36. package/dist/upgrader-setup.d.ts.map +1 -1
  37. package/dist/upgrader-setup.js +9 -3
  38. package/dist/upgrader-setup.js.map +1 -1
  39. package/dist/wizards/gcp-cost.d.ts.map +1 -1
  40. package/dist/wizards/gcp-cost.js +5 -0
  41. package/dist/wizards/gcp-cost.js.map +1 -1
  42. package/dist/wizards/gcp.d.ts.map +1 -1
  43. package/dist/wizards/gcp.js +30 -0
  44. package/dist/wizards/gcp.js.map +1 -1
  45. package/package.json +2 -2
  46. package/src/audit-job-setup.ts +2 -2
  47. package/src/capture-job-setup.test.ts +213 -0
  48. package/src/capture-job-setup.ts +322 -0
  49. package/src/gcp-names.ts +29 -1
  50. package/src/infra-contract.test.ts +4 -3
  51. package/src/infra-contract.ts +11 -1
  52. package/src/release-contract.ts +2 -0
  53. package/src/stack-contract.test.ts +6 -0
  54. package/src/stack-contract.ts +17 -0
  55. package/src/stack-converge.test.ts +1 -1
  56. package/src/upgrade/{audit-job-roll.ts → admin-image-jobs.ts} +46 -16
  57. package/src/upgrade/app-roll.ts +34 -31
  58. package/src/upgrade/converge.ts +40 -0
  59. package/src/upgrade/upgrade.test.ts +40 -2
  60. package/src/upgrader-iam-preflight.test.ts +21 -0
  61. package/src/upgrader-iam-preflight.ts +8 -1
  62. package/src/upgrader-job.test.ts +1 -0
  63. package/src/upgrader-setup.test.ts +1 -0
  64. package/src/upgrader-setup.ts +9 -2
  65. package/src/wizards/gcp-cost.ts +6 -0
  66. package/src/wizards/gcp.ts +36 -0
  67. package/stacks/aws/index.ts +9 -0
  68. package/stacks/azure/index.ts +9 -0
  69. package/stacks/gcp/index.ts +13 -0
  70. package/stacks/gcp-firebase/index.ts +13 -0
  71. package/dist/upgrade/audit-job-roll.d.ts +0 -38
  72. package/dist/upgrade/audit-job-roll.d.ts.map +0 -1
  73. package/dist/upgrade/audit-job-roll.js.map +0 -1
package/dist/agent-db.js CHANGED
@@ -6698,7 +6698,8 @@ var SYSTEM_SOURCE_NAMES = [
6698
6698
  "children",
6699
6699
  "siblings",
6700
6700
  "page_terms",
6701
- "term_pages"
6701
+ "term_pages",
6702
+ "pagination"
6702
6703
  ];
6703
6704
  var queryOrderSchema = union([
6704
6705
  _enum(["published_desc", "published_asc", "title_asc"]),
@@ -6768,6 +6769,13 @@ var listItemInputSchema = lazy(() => object({
6768
6769
  query: record(string2(), unknown()).optional()
6769
6770
  }).strict());
6770
6771
 
6772
+ // ../shared/src/lists/pagination.ts
6773
+ var PAGINATION_FOLLOW_UPS = ["index", "noindex"];
6774
+ var listPaginationSchema = object({
6775
+ per_page: number2().int().min(1).max(LIST_QUERY_MAX_LIMIT).optional(),
6776
+ follow_ups: _enum(PAGINATION_FOLLOW_UPS).optional()
6777
+ }).strict();
6778
+
6771
6779
  // ../shared/src/lists/refs.ts
6772
6780
  var LIST_REF_RE = /^caelo:list\/([0-9a-f-]{36})$/;
6773
6781
 
@@ -6872,6 +6880,7 @@ var moduleFieldListSchema = object({
6872
6880
  bind: _enum(["local", "shared", "source"]).optional(),
6873
6881
  list: string2().regex(LIST_REF_RE, "list must be caelo:list/<id>").optional(),
6874
6882
  source: sourceDefSchema.optional(),
6883
+ paginate: listPaginationSchema.optional(),
6875
6884
  min: number2().int().nonnegative().optional(),
6876
6885
  max: number2().int().positive().max(LIST_MAX_ITEMS).optional(),
6877
6886
  default: union([
@@ -6908,8 +6917,26 @@ function listFieldIssues(f) {
6908
6917
  if (f.min !== undefined && f.max !== undefined && f.min > f.max) {
6909
6918
  issues.push(`list field "${f.name}": min is greater than max.`);
6910
6919
  }
6920
+ if (f.paginate !== undefined)
6921
+ issues.push(...paginateIssues(f));
6911
6922
  return issues;
6912
6923
  }
6924
+ function paginateIssues(f) {
6925
+ const where = `list field "${f.name}"`;
6926
+ const src = f.source;
6927
+ const pageable = (f.bind ?? "local") === "source" && (src?.kind === "query" || src?.kind === "system" && src.name === "term_pages");
6928
+ if (!pageable) {
6929
+ return [
6930
+ `${where}: paginate needs bind "source" with a query or the term_pages source \u2014 an overview of pages. Remove paginate, or bind the field to {kind:"query", \u2026}.`
6931
+ ];
6932
+ }
6933
+ if (src?.kind === "query" && (src.defaults.limit !== undefined || src.editable.includes("limit"))) {
6934
+ return [
6935
+ `${where}: a paginated query takes its page size from paginate.per_page \u2014 remove "limit" from source.defaults and source.editable.`
6936
+ ];
6937
+ }
6938
+ return [];
6939
+ }
6913
6940
  var moduleFieldSchema = discriminatedUnion("kind", [
6914
6941
  moduleFieldPrimitiveSchema,
6915
6942
  moduleFieldListSchema,
@@ -6959,6 +6986,13 @@ var moduleFieldsArray = array(moduleFieldSchema).max(64, "modules may declare at
6959
6986
  }
6960
6987
  }
6961
6988
  }
6989
+ const paginated = arr.filter((f) => f.kind === "list" && f.paginate !== undefined);
6990
+ if (paginated.length > 1) {
6991
+ ctx.addIssue({
6992
+ code: ZodIssueCode.custom,
6993
+ message: `only one paginated list field per module (${paginated.map((f) => `"${f.name}"`).join(", ")}) \u2014 a page has one page sequence. Keep paginate on the overview's main list; give the others a limit.`
6994
+ });
6995
+ }
6962
6996
  for (const run of findNumberedScalarFanoutRuns(arr)) {
6963
6997
  ctx.addIssue({
6964
6998
  code: ZodIssueCode.custom,
@@ -18744,42 +18778,17 @@ async function provisionPluginSchemaInTx(tx, caller, opts) {
18744
18778
  // ../query-api/src/pool-guard.ts
18745
18779
  import { AsyncLocalStorage } from "async_hooks";
18746
18780
  var POOL_ACQUIRE_TIMEOUT_MS = 1e4;
18747
- var ALLOWLIST = [
18748
- { holder: "deploy.promote", issue: 1225, nestedCheckouts: true, noSessionTimeouts: true },
18749
- {
18750
- holder: "quality_audits.publish_anyway",
18751
- issue: 1225,
18752
- nestedCheckouts: true,
18753
- noSessionTimeouts: true
18754
- },
18755
- {
18756
- holder: "quality_audits.execute_proposal",
18757
- issue: 1225,
18758
- nestedCheckouts: true,
18759
- noSessionTimeouts: true
18760
- },
18761
- {
18762
- holder: "deploy.execute_proposal",
18763
- issue: 1225,
18764
- nestedCheckouts: true,
18765
- noSessionTimeouts: true
18766
- },
18767
- {
18768
- holder: "deploy.build_plugin_data",
18769
- issue: 1220,
18770
- nestedCheckouts: true,
18771
- noSessionTimeouts: true
18772
- },
18781
+ var NESTED_CHECKOUTS = [
18782
+ { holder: "plugins.render_hook", issue: 1220 }
18783
+ ];
18784
+ var LONG_TRANSACTIONS = [
18773
18785
  {
18774
- holder: "plugins.activation_lock",
18775
- issue: 1220,
18776
- nestedCheckouts: true,
18777
- noSessionTimeouts: false
18778
- },
18779
- { holder: "static-generator.build", issue: 1220, nestedCheckouts: true, noSessionTimeouts: true },
18780
- { holder: "plugins.render_hook", issue: 1220, nestedCheckouts: true, noSessionTimeouts: false }
18786
+ holder: "static-generator.build",
18787
+ reason: "a static site build runs in one transaction for as long as the build takes, idle while plugins render and files are written."
18788
+ }
18781
18789
  ];
18782
- var NESTED_CHECKOUT_ALLOWLIST = new Map(ALLOWLIST.map((entry) => [entry.holder, entry]));
18790
+ var NESTED_CHECKOUT_ALLOWLIST = new Map(NESTED_CHECKOUTS.map((entry) => [entry.holder, entry]));
18791
+ var LONG_TRANSACTION_ALLOWLIST = new Map(LONG_TRANSACTIONS.map((entry) => [entry.holder, entry]));
18783
18792
 
18784
18793
  class NestedPoolCheckoutError extends Error {
18785
18794
  pool;
@@ -18820,7 +18829,7 @@ class PoolGuard {
18820
18829
  const outer = this.#stores[pool].getStore();
18821
18830
  if (outer === undefined || !outer.active)
18822
18831
  return null;
18823
- const allowedBy = outer.allowedBy ?? (NESTED_CHECKOUT_ALLOWLIST.get(outer.holder)?.nestedCheckouts ? outer.holder : null) ?? allowances.getStore() ?? null;
18832
+ const allowedBy = outer.allowedBy ?? (NESTED_CHECKOUT_ALLOWLIST.has(outer.holder) ? outer.holder : null) ?? allowances.getStore() ?? null;
18824
18833
  if (allowedBy === null)
18825
18834
  throw new NestedPoolCheckoutError(pool, outer.holder, requester);
18826
18835
  return allowedBy;
@@ -18834,7 +18843,7 @@ class PoolGuard {
18834
18843
  }
18835
18844
  }
18836
18845
  function exemptFromSessionTimeouts(holder) {
18837
- return NESTED_CHECKOUT_ALLOWLIST.get(holder)?.noSessionTimeouts === true;
18846
+ return LONG_TRANSACTION_ALLOWLIST.has(holder);
18838
18847
  }
18839
18848
  async function liftSessionTimeouts(tx) {
18840
18849
  await tx.execute(sql`SELECT set_config('statement_timeout', '0', true)`);
@@ -47,7 +47,7 @@ import { gcloud as defaultGcloud } from "./gcloud.js";
47
47
  import { realSleep, runWithRetry } from "./gcloud-retry.js";
48
48
  import { auditJobName, auditServiceAccountEmail, auditServiceAccountId, gcpBucketName, runServiceAccountEmail, } from "./gcp-names.js";
49
49
  import { readAdminConfig } from "./migration-runner.js";
50
- import { describeAuditJobImage } from "./upgrade/audit-job-roll.js";
50
+ import { describeJobImage } from "./upgrade/admin-image-jobs.js";
51
51
  /** Where the admin image ships the task's entry point. */
52
52
  export const AUDIT_TASK_SCRIPT = "/app/packages/admin-core/src/quality/audit-task.ts";
53
53
  /** How many audit tasks run at once by default: 5 pages x 3 runs. */
@@ -242,7 +242,7 @@ export async function ensureAuditJob(target, deps = {}) {
242
242
  // cap; an existing job keeps its own.
243
243
  let parallelism = target.parallelism;
244
244
  if (parallelism === undefined) {
245
- const existing = await describeAuditJobImage(run, { projectId, region, env });
245
+ const existing = await describeJobImage(run, { projectId, region, env }, job);
246
246
  if (!existing.ok)
247
247
  return { ok: false, done, error: `read job ${job}: ${existing.error}` };
248
248
  if (existing.image === null)
@@ -1 +1 @@
1
- {"version":3,"file":"audit-job-setup.js","sourceRoot":"","sources":["../src/audit-job-setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit-job-setup.js","sourceRoot":"","sources":["../src/audit-job-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { type GcloudRunner, type Sleep } from "./gcloud-retry.js";
2
+ import type { GcpProvider } from "./stack-contract.js";
3
+ /** Where the admin image ships the task's entry point. */
4
+ export declare const CAPTURE_TASK_SCRIPT = "/app/packages/admin-core/src/capture/capture-task.ts";
5
+ /**
6
+ * Roles the capture job's identity must never hold anywhere. Prefix matches
7
+ * (`roles/secretmanager.` = every Secret Manager role). Unlike the audit job
8
+ * it reads nothing, so every storage read role is on the list too.
9
+ */
10
+ export declare const CAPTURE_FORBIDDEN_ROLES: readonly ["roles/owner", "roles/editor", "roles/viewer", "roles/run.", "roles/iam.", "roles/iap.", "roles/secretmanager.", "roles/cloudsql.", "roles/compute.", "roles/resourcemanager.", "roles/storage.admin", "roles/storage.objectAdmin", "roles/storage.objectUser", "roles/storage.objectViewer", "roles/storage.legacy"];
11
+ /** Inputs and results are deleted by the admin; the lifecycle catches leftovers. */
12
+ export declare const CAPTURE_BUCKET_LIFECYCLE: {
13
+ rule: {
14
+ action: {
15
+ type: string;
16
+ };
17
+ condition: {
18
+ age: number;
19
+ };
20
+ }[];
21
+ };
22
+ /** The IAM condition that confines the job's create right to `out/`. */
23
+ export declare function captureResultsCondition(bucket: string): string;
24
+ export interface CaptureJobTarget {
25
+ readonly provider: GcpProvider;
26
+ readonly projectId: string;
27
+ readonly region: string;
28
+ /** Pulumi stack name (`production`). */
29
+ readonly env: string;
30
+ /** The admin image the job runs, digest-pinned (`…/admin@sha256:…`). */
31
+ readonly adminImageRef: string;
32
+ }
33
+ export type CaptureJobResult = {
34
+ readonly ok: true;
35
+ readonly done: string[];
36
+ } | {
37
+ readonly ok: false;
38
+ readonly done: string[];
39
+ readonly error: string;
40
+ };
41
+ /** Ensure the capture job and everything it needs. Never throws for a gcloud failure. */
42
+ export declare function ensureCaptureJob(target: CaptureJobTarget, deps?: {
43
+ run?: GcloudRunner;
44
+ sleep?: Sleep;
45
+ }): Promise<CaptureJobResult>;
46
+ //# sourceMappingURL=capture-job-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-job-setup.d.ts","sourceRoot":"","sources":["../src/capture-job-setup.ts"],"names":[],"mappings":"AAgDA,OAAO,EAAE,KAAK,YAAY,EAA2B,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAQ3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,yDAAyD,CAAC;AAK1F;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,iUAgB1B,CAAC;AAEX,oFAAoF;AACpF,eAAO,MAAM,wBAAwB;;;;;;;;;CAEpC,CAAC;AAEF,wEAAwE;AACxE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,MAAM,gBAAgB,GACxB;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,yFAAyF;AACzF,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAO,GAC/C,OAAO,CAAC,gBAAgB,CAAC,CA8M3B"}
@@ -0,0 +1,288 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+ /**
3
+ * #1217 — set up (and converge) the capture job on a Google Cloud install
4
+ * (`gcp`, `gcp-firebase`): the short-lived Cloud Run job that runs every
5
+ * server-side browser render (screenshot_page's server path, the external
6
+ * page tools, the site-import crawl), one execution per render. Run by the
7
+ * wizard after `pulumi up` and by `cms-provision upgrade`'s converge, both as
8
+ * the operator's own gcloud identity. App-roll moves the job's image with the
9
+ * admin's (upgrade/admin-image-jobs.ts), because the job runs the admin image
10
+ * (which bundles Chromium, #428).
11
+ *
12
+ * Why a separate job at all (CLAUDE.md §11.B Tier 5, second exception after
13
+ * the audit job): a headless Chromium costs 300–700 MB per render, and inside
14
+ * the 2 GiB admin it was the most plausible cause of the OOM kill of
15
+ * 2026-10-28 (#1209). In a job it costs the admin nothing.
16
+ *
17
+ * Why the CLI owns it and not the stacks: the same as audit-job-setup.ts —
18
+ * `upgrade` never runs Pulumi.
19
+ *
20
+ * Trust boundary. The job renders untrusted pages (third-party sites, module
21
+ * scripts in a preview), so its identity, `caelo-<env>-capture`, holds:
22
+ *
23
+ * - `roles/storage.objectCreator` on the capture bucket, conditioned to the
24
+ * `out/` prefix — create results only: it cannot read, overwrite or list
25
+ * anything, nor write where the admin puts inputs;
26
+ * - `roles/logging.logWriter`.
27
+ *
28
+ * Nothing else: no read right anywhere (its input and the preview's media
29
+ * arrive as V4 signed URLs the admin creates per capture, valid 5 minutes,
30
+ * deleted with the capture), no Secret Manager, no Cloud SQL, no VPC egress,
31
+ * and no IAP access to the admin — a browser exploit in the job reaches
32
+ * nothing but the internet it already renders.
33
+ *
34
+ * The admin's run SA may run the job WITH overrides (it passes the order),
35
+ * read its executions, use the capture bucket (`roles/storage.objectUser`:
36
+ * write inputs, read results, delete both) and sign URLs as itself
37
+ * (`roles/iam.serviceAccountTokenCreator` on its own account only: Cloud Run
38
+ * holds no key, so V4 signing goes through IAM signBlob; the admin can mint
39
+ * its own tokens through the metadata server already, so this widens
40
+ * nothing). {@link CAPTURE_FORBIDDEN_ROLES} names the job's line; the tests
41
+ * assert no grant crosses it.
42
+ */
43
+ import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
44
+ import { tmpdir } from "node:os";
45
+ import { join } from "node:path";
46
+ import { gcloud as defaultGcloud } from "./gcloud.js";
47
+ import { realSleep, runWithRetry } from "./gcloud-retry.js";
48
+ import { captureJobName, captureServiceAccountEmail, captureServiceAccountId, gcpBucketName, runServiceAccountEmail, } from "./gcp-names.js";
49
+ /** Where the admin image ships the task's entry point. */
50
+ export const CAPTURE_TASK_SCRIPT = "/app/packages/admin-core/src/capture/capture-task.ts";
51
+ /** Per execution: container start, browser start and one render. */
52
+ const TASK_TIMEOUT = "3m";
53
+ /**
54
+ * Roles the capture job's identity must never hold anywhere. Prefix matches
55
+ * (`roles/secretmanager.` = every Secret Manager role). Unlike the audit job
56
+ * it reads nothing, so every storage read role is on the list too.
57
+ */
58
+ export const CAPTURE_FORBIDDEN_ROLES = [
59
+ "roles/owner",
60
+ "roles/editor",
61
+ "roles/viewer",
62
+ "roles/run.",
63
+ "roles/iam.",
64
+ "roles/iap.",
65
+ "roles/secretmanager.",
66
+ "roles/cloudsql.",
67
+ "roles/compute.",
68
+ "roles/resourcemanager.",
69
+ "roles/storage.admin",
70
+ "roles/storage.objectAdmin",
71
+ "roles/storage.objectUser",
72
+ "roles/storage.objectViewer",
73
+ "roles/storage.legacy",
74
+ ];
75
+ /** Inputs and results are deleted by the admin; the lifecycle catches leftovers. */
76
+ export const CAPTURE_BUCKET_LIFECYCLE = {
77
+ rule: [{ action: { type: "Delete" }, condition: { age: 1 } }],
78
+ };
79
+ /** The IAM condition that confines the job's create right to `out/`. */
80
+ export function captureResultsCondition(bucket) {
81
+ return `expression=resource.name.startsWith("projects/_/buckets/${bucket}/objects/out/"),title=capture-results-only,description=The capture job creates its results under out/ and nothing else`;
82
+ }
83
+ /** Ensure the capture job and everything it needs. Never throws for a gcloud failure. */
84
+ export async function ensureCaptureJob(target, deps = {}) {
85
+ const run = deps.run ?? defaultGcloud;
86
+ const sleep = deps.sleep ?? realSleep;
87
+ const retry = (args) => runWithRetry(run, sleep, args);
88
+ const { projectId, region, env, provider } = target;
89
+ const project = `--project=${projectId}`;
90
+ const sa = captureServiceAccountEmail(projectId, env);
91
+ const member = `serviceAccount:${sa}`;
92
+ const runSa = runServiceAccountEmail(projectId, env);
93
+ const runSaMember = `serviceAccount:${runSa}`;
94
+ const job = captureJobName(env);
95
+ const bucket = gcpBucketName(projectId, env, "capture");
96
+ const bucketUrl = `gs://${bucket}`;
97
+ const done = [];
98
+ const fail = (step, r) => ({
99
+ ok: false,
100
+ done,
101
+ error: `${step}: ${r.stderr.trim()}`,
102
+ });
103
+ if (!/@sha256:[0-9a-f]{64}$/.test(target.adminImageRef)) {
104
+ return {
105
+ ok: false,
106
+ done,
107
+ error: `the capture job's image must be pinned by digest, got ${target.adminImageRef}`,
108
+ };
109
+ }
110
+ // 1. The job's own service account.
111
+ const describe = await run([
112
+ "iam",
113
+ "service-accounts",
114
+ "describe",
115
+ sa,
116
+ project,
117
+ "--format=value(email)",
118
+ ]);
119
+ if (!describe.ok) {
120
+ const create = await run([
121
+ "iam",
122
+ "service-accounts",
123
+ "create",
124
+ captureServiceAccountId(env),
125
+ "--display-name=Caelo capture",
126
+ "--description=Runs server-side browser renders (screenshots); creates capture results, nothing else.",
127
+ project,
128
+ ]);
129
+ if (!create.ok && !/already exists/i.test(create.stderr))
130
+ return fail(`create ${sa}`, create);
131
+ }
132
+ done.push(`service account ${sa}`);
133
+ // 2. The capture bucket: private, everything deleted after a day.
134
+ const owned = await run(["storage", "buckets", "list", project, "--format=value(name)"]);
135
+ if (!owned.ok)
136
+ return fail(`list the buckets of project ${projectId}`, owned);
137
+ const names = owned.stdout.split("\n").map((l) => l
138
+ .trim()
139
+ .replace(/^gs:\/\//, "")
140
+ .replace(/\/$/, ""));
141
+ if (!names.includes(bucket)) {
142
+ const created = await run([
143
+ "storage",
144
+ "buckets",
145
+ "create",
146
+ bucketUrl,
147
+ project,
148
+ `--location=${region}`,
149
+ "--default-storage-class=STANDARD",
150
+ "--uniform-bucket-level-access",
151
+ "--public-access-prevention",
152
+ "--soft-delete-duration=0",
153
+ ]);
154
+ if (!created.ok) {
155
+ return {
156
+ ok: false,
157
+ done,
158
+ error: /already exists|409/i.test(created.stderr)
159
+ ? `${bucketUrl} exists but does not belong to project ${projectId}; delete or rename that bucket, this install needs the name`
160
+ : `create ${bucketUrl}: ${created.stderr.trim()}`,
161
+ };
162
+ }
163
+ }
164
+ // A private directory (mkdtemp, mode 700): no other local user can swap
165
+ // the file between write and read.
166
+ const dir = mkdtempSync(join(tmpdir(), "caelo-capture-"));
167
+ try {
168
+ const file = join(dir, "lifecycle.json");
169
+ writeFileSync(file, JSON.stringify(CAPTURE_BUCKET_LIFECYCLE), { mode: 0o600 });
170
+ const lifecycle = await run([
171
+ "storage",
172
+ "buckets",
173
+ "update",
174
+ bucketUrl,
175
+ project,
176
+ `--lifecycle-file=${file}`,
177
+ ]);
178
+ if (!lifecycle.ok)
179
+ return fail(`set the lifecycle of ${bucketUrl}`, lifecycle);
180
+ }
181
+ finally {
182
+ rmSync(dir, { recursive: true, force: true });
183
+ }
184
+ done.push(`bucket ${bucketUrl} (objects deleted after 1 day)`);
185
+ // 3. Bucket grants: the job creates results under out/; the admin writes
186
+ // inputs, reads results and deletes both.
187
+ const bucketGrants = [
188
+ {
189
+ member,
190
+ role: "roles/storage.objectCreator",
191
+ condition: captureResultsCondition(bucket),
192
+ why: "the job writes its result under out/",
193
+ },
194
+ {
195
+ member: runSaMember,
196
+ role: "roles/storage.objectUser",
197
+ why: "the admin writes inputs, reads results and deletes both",
198
+ },
199
+ ];
200
+ for (const g of bucketGrants) {
201
+ const r = await retry([
202
+ "storage",
203
+ "buckets",
204
+ "add-iam-policy-binding",
205
+ bucketUrl,
206
+ `--member=${g.member}`,
207
+ `--role=${g.role}`,
208
+ ...(g.condition ? [`--condition=${g.condition}`] : []),
209
+ project,
210
+ "--quiet",
211
+ "--format=none",
212
+ ]);
213
+ if (!r.ok)
214
+ return fail(`grant ${g.role} on ${bucketUrl} (${g.why})`, r);
215
+ done.push(`${g.member === member ? "capture job" : "admin"}: ${g.role} on ${bucketUrl}${g.condition ? " (out/ only)" : ""}`);
216
+ }
217
+ // 4. Logs.
218
+ const logs = await retry([
219
+ "projects",
220
+ "add-iam-policy-binding",
221
+ projectId,
222
+ `--member=${member}`,
223
+ "--role=roles/logging.logWriter",
224
+ "--condition=None",
225
+ "--quiet",
226
+ "--format=none",
227
+ ]);
228
+ if (!logs.ok)
229
+ return fail("grant the capture job roles/logging.logWriter", logs);
230
+ done.push("capture job: roles/logging.logWriter on the project");
231
+ // 5. The admin signs the job's URLs as itself (IAM signBlob).
232
+ const signer = await retry([
233
+ "iam",
234
+ "service-accounts",
235
+ "add-iam-policy-binding",
236
+ runSa,
237
+ `--member=${runSaMember}`,
238
+ "--role=roles/iam.serviceAccountTokenCreator",
239
+ project,
240
+ "--quiet",
241
+ "--format=none",
242
+ ]);
243
+ if (!signer.ok)
244
+ return fail("let the admin sign URLs as itself", signer);
245
+ done.push(`admin: roles/iam.serviceAccountTokenCreator on ${runSa} (itself, signed URLs)`);
246
+ // 6. The job: the admin image, its own SA, no secrets, no VPC.
247
+ const deploy = await run([
248
+ "run",
249
+ "jobs",
250
+ "deploy",
251
+ job,
252
+ `--image=${target.adminImageRef}`,
253
+ `--region=${region}`,
254
+ project,
255
+ `--service-account=${sa}`,
256
+ "--command=bun",
257
+ `--args=--bun,${CAPTURE_TASK_SCRIPT}`,
258
+ `--set-env-vars=CAELO_PROVIDER=${provider},CAELO_CAPTURE_BUCKET=${bucket}`,
259
+ "--max-retries=0",
260
+ `--task-timeout=${TASK_TIMEOUT}`,
261
+ "--cpu=1",
262
+ "--memory=2Gi",
263
+ "--quiet",
264
+ ]);
265
+ if (!deploy.ok)
266
+ return fail(`deploy job ${job}`, deploy);
267
+ done.push(`job ${job} (${target.adminImageRef.split("@")[1]?.slice(0, 19)}...)`);
268
+ // 7. The admin may run it with its order and read its executions.
269
+ for (const role of ["roles/run.jobsExecutorWithOverrides", "roles/run.viewer"]) {
270
+ const r = await retry([
271
+ "run",
272
+ "jobs",
273
+ "add-iam-policy-binding",
274
+ job,
275
+ `--region=${region}`,
276
+ project,
277
+ `--member=${runSaMember}`,
278
+ `--role=${role}`,
279
+ "--quiet",
280
+ "--format=none",
281
+ ]);
282
+ if (!r.ok)
283
+ return fail(`grant the admin ${role} on ${job}`, r);
284
+ done.push(`admin: ${role} on ${job}`);
285
+ }
286
+ return { ok: true, done };
287
+ }
288
+ //# sourceMappingURL=capture-job-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-job-setup.js","sourceRoot":"","sources":["../src/capture-job-setup.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,aAAa,EAAqB,MAAM,aAAa,CAAC;AACzE,OAAO,EAAqB,SAAS,EAAE,YAAY,EAAc,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,uBAAuB,EACvB,aAAa,EACb,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAG,sDAAsD,CAAC;AAE1F,oEAAoE;AACpE,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,aAAa;IACb,cAAc;IACd,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,sBAAsB;IACtB,iBAAiB;IACjB,gBAAgB;IAChB,wBAAwB;IACxB,qBAAqB;IACrB,2BAA2B;IAC3B,0BAA0B;IAC1B,4BAA4B;IAC5B,sBAAsB;CACd,CAAC;AAEX,oFAAoF;AACpF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;CAC9D,CAAC;AAEF,wEAAwE;AACxE,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,OAAO,2DAA2D,MAAM,wHAAwH,CAAC;AACnM,CAAC;AAgBD,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAwB,EACxB,OAA8C,EAAE;IAEhD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACpD,MAAM,OAAO,GAAG,aAAa,SAAS,EAAE,CAAC;IACzC,MAAM,EAAE,GAAG,0BAA0B,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,kBAAkB,EAAE,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,sBAAsB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,kBAAkB,KAAK,EAAE,CAAC;IAC9C,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,QAAQ,MAAM,EAAE,CAAC;IACnC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,CAAe,EAAoB,EAAE,CAAC,CAAC;QACjE,EAAE,EAAE,KAAK;QACT,IAAI;QACJ,KAAK,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;KACrC,CAAC,CAAC;IAEH,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACxD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI;YACJ,KAAK,EAAE,yDAAyD,MAAM,CAAC,aAAa,EAAE;SACvF,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC;QACzB,KAAK;QACL,kBAAkB;QAClB,UAAU;QACV,EAAE;QACF,OAAO;QACP,uBAAuB;KACxB,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC;YACvB,KAAK;YACL,kBAAkB;YAClB,QAAQ;YACR,uBAAuB,CAAC,GAAG,CAAC;YAC5B,8BAA8B;YAC9B,sGAAsG;YACtG,OAAO;SACR,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAEnC,kEAAkE;IAClE,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACzF,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,+BAA+B,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/C,CAAC;SACE,IAAI,EAAE;SACN,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CACtB,CAAC;IACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC;YACxB,SAAS;YACT,SAAS;YACT,QAAQ;YACR,SAAS;YACT,OAAO;YACP,cAAc,MAAM,EAAE;YACtB,kCAAkC;YAClC,+BAA+B;YAC/B,4BAA4B;YAC5B,0BAA0B;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,IAAI;gBACJ,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC/C,CAAC,CAAC,GAAG,SAAS,0CAA0C,SAAS,6DAA6D;oBAC9H,CAAC,CAAC,UAAU,SAAS,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;aACpD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,wEAAwE;IACxE,mCAAmC;IACnC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QACzC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC;YAC1B,SAAS;YACT,SAAS;YACT,QAAQ;YACR,SAAS;YACT,OAAO;YACP,oBAAoB,IAAI,EAAE;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,wBAAwB,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC;IACjF,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,UAAU,SAAS,gCAAgC,CAAC,CAAC;IAE/D,yEAAyE;IACzE,6CAA6C;IAC7C,MAAM,YAAY,GAAwE;QACxF;YACE,MAAM;YACN,IAAI,EAAE,6BAA6B;YACnC,SAAS,EAAE,uBAAuB,CAAC,MAAM,CAAC;YAC1C,GAAG,EAAE,sCAAsC;SAC5C;QACD;YACE,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,0BAA0B;YAChC,GAAG,EAAE,yDAAyD;SAC/D;KACF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC;YACpB,SAAS;YACT,SAAS;YACT,wBAAwB;YACxB,SAAS;YACT,YAAY,CAAC,CAAC,MAAM,EAAE;YACtB,UAAU,CAAC,CAAC,IAAI,EAAE;YAClB,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,OAAO;YACP,SAAS;YACT,eAAe;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,OAAO,SAAS,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CACP,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAClH,CAAC;IACJ,CAAC;IAED,WAAW;IACX,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;QACvB,UAAU;QACV,wBAAwB;QACxB,SAAS;QACT,YAAY,MAAM,EAAE;QACpB,gCAAgC;QAChC,kBAAkB;QAClB,SAAS;QACT,eAAe;KAChB,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,+CAA+C,EAAE,IAAI,CAAC,CAAC;IACjF,IAAI,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAEjE,8DAA8D;IAC9D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;QACzB,KAAK;QACL,kBAAkB;QAClB,wBAAwB;QACxB,KAAK;QACL,YAAY,WAAW,EAAE;QACzB,6CAA6C;QAC7C,OAAO;QACP,SAAS;QACT,eAAe;KAChB,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAC;IACzE,IAAI,CAAC,IAAI,CAAC,kDAAkD,KAAK,wBAAwB,CAAC,CAAC;IAE3F,+DAA+D;IAC/D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC;QACvB,KAAK;QACL,MAAM;QACN,QAAQ;QACR,GAAG;QACH,WAAW,MAAM,CAAC,aAAa,EAAE;QACjC,YAAY,MAAM,EAAE;QACpB,OAAO;QACP,qBAAqB,EAAE,EAAE;QACzB,eAAe;QACf,gBAAgB,mBAAmB,EAAE;QACrC,iCAAiC,QAAQ,yBAAyB,MAAM,EAAE;QAC1E,iBAAiB;QACjB,kBAAkB,YAAY,EAAE;QAChC,SAAS;QACT,cAAc;QACd,SAAS;KACV,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,cAAc,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAEjF,kEAAkE;IAClE,KAAK,MAAM,IAAI,IAAI,CAAC,qCAAqC,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC/E,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC;YACpB,KAAK;YACL,MAAM;YACN,wBAAwB;YACxB,GAAG;YACH,YAAY,MAAM,EAAE;YACpB,OAAO;YACP,YAAY,WAAW,EAAE;YACzB,UAAU,IAAI,EAAE;YAChB,SAAS;YACT,eAAe;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,mBAAmB,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC"}
@@ -39,7 +39,7 @@ export declare function gatewayServiceAccountEmail(projectId: string, env: strin
39
39
  */
40
40
  export declare function staticPublisherServiceAccountId(env: string): string;
41
41
  /** Globally unique GCS bucket name the stacks give each bucket. */
42
- export declare function gcpBucketName(projectId: string, env: string, bucket: "media" | "static" | "staging" | "audit-results"): string;
42
+ export declare function gcpBucketName(projectId: string, env: string, bucket: "media" | "static" | "staging" | "audit-results" | "capture"): string;
43
43
  /** Secret Manager secret id for one of the stack's runtime secrets. */
44
44
  export declare function gcpSecretId(env: string, name: string): string;
45
45
  /** Cloud Run job that keeps Google IAP operator access in sync (operator-access.ts). */
@@ -86,6 +86,22 @@ export declare function auditJobResource(projectId: string, region: string, env:
86
86
  export declare function auditServiceAccountId(env: string): string;
87
87
  /** Email of the audit job's service account. */
88
88
  export declare function auditServiceAccountEmail(projectId: string, env: string): string;
89
+ /**
90
+ * #1217 — Cloud Run job that runs every server-side browser render
91
+ * (screenshots, rendered HTML) of the install, one execution per render, so
92
+ * no Chromium runs in the admin (capture-job-setup.ts).
93
+ */
94
+ export declare function captureJobName(env: string): string;
95
+ /** Full resource name of the capture job, as the admin's env carries it. */
96
+ export declare function captureJobResource(projectId: string, region: string, env: string): string;
97
+ /**
98
+ * Account id of the capture job's own service account: creates capture
99
+ * results and writes logs — nothing else; it reads only through the signed
100
+ * URLs the admin hands it (capture-job-setup.ts).
101
+ */
102
+ export declare function captureServiceAccountId(env: string): string;
103
+ /** Email of the capture job's service account. */
104
+ export declare function captureServiceAccountEmail(projectId: string, env: string): string;
89
105
  /**
90
106
  * Account id of the upgrader job's own service account: may roll the two
91
107
  * Cloud Run services, run the migration job and back up Cloud SQL, never
@@ -1 +1 @@
1
- {"version":3,"file":"gcp-names.d.ts","sourceRoot":"","sources":["../src/gcp-names.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,cAAc,CAAC;AAEtD,uDAAuD;AACvD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,mEAAmE;AACnE,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wDAAwD;AACxD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,eAAe,GACvD,MAAM,CAER;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wFAAwF;AACxF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,yFAAyF;AACzF,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,+CAA+C;AAC/C,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,wEAAwE;AACxE,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1F;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1F;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,gDAAgD;AAChD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,mDAAmD;AACnD,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAElF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAO1D,CAAC"}
1
+ {"version":3,"file":"gcp-names.d.ts","sourceRoot":"","sources":["../src/gcp-names.ts"],"names":[],"mappings":"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"}
package/dist/gcp-names.js CHANGED
@@ -132,6 +132,30 @@ export function auditServiceAccountId(env) {
132
132
  export function auditServiceAccountEmail(projectId, env) {
133
133
  return `${auditServiceAccountId(env)}@${projectId}.iam.gserviceaccount.com`;
134
134
  }
135
+ /**
136
+ * #1217 — Cloud Run job that runs every server-side browser render
137
+ * (screenshots, rendered HTML) of the install, one execution per render, so
138
+ * no Chromium runs in the admin (capture-job-setup.ts).
139
+ */
140
+ export function captureJobName(env) {
141
+ return `${gcpNamePrefix(env)}-capture`;
142
+ }
143
+ /** Full resource name of the capture job, as the admin's env carries it. */
144
+ export function captureJobResource(projectId, region, env) {
145
+ return `projects/${projectId}/locations/${region}/jobs/${captureJobName(env)}`;
146
+ }
147
+ /**
148
+ * Account id of the capture job's own service account: creates capture
149
+ * results and writes logs — nothing else; it reads only through the signed
150
+ * URLs the admin hands it (capture-job-setup.ts).
151
+ */
152
+ export function captureServiceAccountId(env) {
153
+ return `${gcpNamePrefix(env)}-capture`;
154
+ }
155
+ /** Email of the capture job's service account. */
156
+ export function captureServiceAccountEmail(projectId, env) {
157
+ return `${captureServiceAccountId(env)}@${projectId}.iam.gserviceaccount.com`;
158
+ }
135
159
  /**
136
160
  * Account id of the upgrader job's own service account: may roll the two
137
161
  * Cloud Run services, run the migration job and back up Cloud SQL, never
@@ -1 +1 @@
1
- {"version":3,"file":"gcp-names.js","sourceRoot":"","sources":["../src/gcp-names.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gcp-names.js","sourceRoot":"","sources":["../src/gcp-names.ts"],"names":[],"mappings":"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"}