#!/usr/bin/env node import "source-map-support/register"; import * as cdk from "aws-cdk-lib"; import { ACCOUNT, REGION } from "../lib/config"; import { OpenSweIamStack } from "../lib/open-swe-iam-stack"; import { OpenSweStack } from "../lib/open-swe-stack"; import { KebabNamingAspect } from "../lib/aspects/kebab-naming-aspect"; const app = new cdk.App(); const env = { account: ACCOUNT, region: REGION }; // Account-level shared OIDC deploy roles (singletons). Deployed FIRST. new OpenSweIamStack(app, "OpenSweIamStack", { stackName: "open-swe-iam", env, }); // The two env stacks — explicit kebab-case stackName (never let CDK default to // PascalCase), env-parameterised so resources are `open-swe--*`. new OpenSweStack(app, "OpenSweDevStack", { stackName: "open-swe-dev", env, envName: "dev", }); new OpenSweStack(app, "OpenSweProdStack", { stackName: "open-swe-prod", env, envName: "prod", }); // Fail synth on any non-kebab-case explicit resource/stack name. cdk.Aspects.of(app).add(new KebabNamingAspect()); app.synth();