1import { GcpEnvironment } from "@/GCP/Environment";
2import * as resourcemanager from "@distilled.cloud/gcp/cloudresourcemanager_v3";
3import * as Effect from "effect/Effect";
4
5/**
6 * The test project's default Compute Engine service account
7 * (`{projectNumber}-compute@developer.gserviceaccount.com`). Composer
8 * rejects new environments without an explicit `nodeConfig.serviceAccount`.
9 * Deploy-time only: it needs `GcpEnvironment`.
10 */
11export const defaultComputeServiceAccount = Effect.gen(function* () {
12 const { project } = yield* GcpEnvironment.current;
13 const { name } = yield* resourcemanager.getProjects({
14 name: `projects/${project}`,
15 });
16 const projectNumber = (name ?? "").split("/").pop();
17 return `${projectNumber}-compute@developer.gserviceaccount.com`;
18});