@codedrifters/configulator 0.0.163 → 0.0.165

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/lib/index.d.mts CHANGED
@@ -848,6 +848,11 @@ declare const awsCdkBundle: AgentRuleBundle;
848
848
  */
849
849
  declare const baseBundle: AgentRuleBundle;
850
850
 
851
+ /**
852
+ * GitHub workflow bundle — auto-detected when the project has a GitHub component.
853
+ */
854
+ declare const githubWorkflowBundle: AgentRuleBundle;
855
+
851
856
  /**
852
857
  * Jest bundle — auto-detected when Jest is in dependencies.
853
858
  */
@@ -2793,4 +2798,4 @@ declare const COMPLETE_JOB_ID = "complete";
2793
2798
  */
2794
2799
  declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
2795
2800
 
2796
- export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, type AgentConfigOptions, type AgentModel, type AgentPlatform, type AgentPlatformOverrides, type AgentRule, type AgentRuleBundle, type AgentRuleScope, type AgentSkill, type AgentSubAgent, type AgentSubAgentPlatformOverrides, type ApproveMergeUpgradeOptions, type AwsAccount, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, type AwsDeploymentTargetOptions, type AwsLocalDeploymentConfig, type AwsOrganization, type AwsRegion, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, type CiDeploymentConfig, type ClassTypeOptions, type ClaudeAutoModeConfig, type ClaudeHookAction, type ClaudeHookEntry, type ClaudeHooksConfig, type ClaudePermissionsConfig, type ClaudeRuleTarget, type ClaudeSandboxConfig, type ClaudeSettingsConfig, type CopilotHandoff, type CursorHookAction, type CursorHooksConfig, type CursorSettingsConfig, type DeployWorkflowOptions, type DeploymentMetadata, type GitBranch, type GitHubBoardMetadata, type GitHubProjectMetadata, type GitHubSprintMetadata, type IDependencyResolver, JsiiFaker, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, type McpServerConfig, type McpTransport, type MergeMethod, MonorepoProject, type MonorepoProjectOptions, type OrganizationMetadata, PROD_DEPLOY_NAME, PnpmWorkspace, type PnpmWorkspaceOptions, ProjectMetadata, type ProjectMetadataOptions, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, type RemoteCacheOptions, type RepositoryMetadata, ResetTask, type ResetTaskOptions, type ResolvedProjectMetadata, type SlackMetadata, type TemplateResolveResult, TestRunner, TurboRepo, type TurboRepoOptions, TurboRepoTask, type TurboRepoTaskOptions, TypeScriptConfig, TypeScriptProject, type TypeScriptProjectOptions, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, type VersionKey, Vitest, type VitestConfigOptions, type VitestOptions, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, awsCdkBundle, baseBundle, getLatestEligibleVersion, jestBundle, pnpmBundle, projenBundle, resolveTemplateVariables, turborepoBundle, typescriptBundle, vitestBundle };
2801
+ export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, type AgentConfigOptions, type AgentModel, type AgentPlatform, type AgentPlatformOverrides, type AgentRule, type AgentRuleBundle, type AgentRuleScope, type AgentSkill, type AgentSubAgent, type AgentSubAgentPlatformOverrides, type ApproveMergeUpgradeOptions, type AwsAccount, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, type AwsDeploymentTargetOptions, type AwsLocalDeploymentConfig, type AwsOrganization, type AwsRegion, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, type CiDeploymentConfig, type ClassTypeOptions, type ClaudeAutoModeConfig, type ClaudeHookAction, type ClaudeHookEntry, type ClaudeHooksConfig, type ClaudePermissionsConfig, type ClaudeRuleTarget, type ClaudeSandboxConfig, type ClaudeSettingsConfig, type CopilotHandoff, type CursorHookAction, type CursorHooksConfig, type CursorSettingsConfig, type DeployWorkflowOptions, type DeploymentMetadata, type GitBranch, type GitHubBoardMetadata, type GitHubProjectMetadata, type GitHubSprintMetadata, type IDependencyResolver, JsiiFaker, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, type McpServerConfig, type McpTransport, type MergeMethod, MonorepoProject, type MonorepoProjectOptions, type OrganizationMetadata, PROD_DEPLOY_NAME, PnpmWorkspace, type PnpmWorkspaceOptions, ProjectMetadata, type ProjectMetadataOptions, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, type RemoteCacheOptions, type RepositoryMetadata, ResetTask, type ResetTaskOptions, type ResolvedProjectMetadata, type SlackMetadata, type TemplateResolveResult, TestRunner, TurboRepo, type TurboRepoOptions, TurboRepoTask, type TurboRepoTaskOptions, TypeScriptConfig, TypeScriptProject, type TypeScriptProjectOptions, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, type VersionKey, Vitest, type VitestConfigOptions, type VitestOptions, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, awsCdkBundle, baseBundle, getLatestEligibleVersion, githubWorkflowBundle, jestBundle, pnpmBundle, projenBundle, resolveTemplateVariables, turborepoBundle, typescriptBundle, vitestBundle };
package/lib/index.d.ts CHANGED
@@ -897,6 +897,11 @@ declare const awsCdkBundle: AgentRuleBundle;
897
897
  */
898
898
  declare const baseBundle: AgentRuleBundle;
899
899
 
900
+ /**
901
+ * GitHub workflow bundle — auto-detected when the project has a GitHub component.
902
+ */
903
+ declare const githubWorkflowBundle: AgentRuleBundle;
904
+
900
905
  /**
901
906
  * Jest bundle — auto-detected when Jest is in dependencies.
902
907
  */
@@ -2842,5 +2847,5 @@ declare const COMPLETE_JOB_ID = "complete";
2842
2847
  */
2843
2848
  declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
2844
2849
 
2845
- export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, JsiiFaker, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MonorepoProject, PROD_DEPLOY_NAME, PnpmWorkspace, ProjectMetadata, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, ResetTask, TestRunner, TurboRepo, TurboRepoTask, TypeScriptConfig, TypeScriptProject, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, Vitest, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, awsCdkBundle, baseBundle, getLatestEligibleVersion, jestBundle, pnpmBundle, projenBundle, resolveTemplateVariables, turborepoBundle, typescriptBundle, vitestBundle };
2850
+ export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, JsiiFaker, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MonorepoProject, PROD_DEPLOY_NAME, PnpmWorkspace, ProjectMetadata, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, ResetTask, TestRunner, TurboRepo, TurboRepoTask, TypeScriptConfig, TypeScriptProject, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, Vitest, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, awsCdkBundle, baseBundle, getLatestEligibleVersion, githubWorkflowBundle, jestBundle, pnpmBundle, projenBundle, resolveTemplateVariables, turborepoBundle, typescriptBundle, vitestBundle };
2846
2851
  export type { AgentConfigOptions, AgentModel, AgentPlatform, AgentPlatformOverrides, AgentRule, AgentRuleBundle, AgentRuleScope, AgentSkill, AgentSubAgent, AgentSubAgentPlatformOverrides, ApproveMergeUpgradeOptions, AwsAccount, AwsDeploymentTargetOptions, AwsLocalDeploymentConfig, AwsOrganization, AwsRegion, CiDeploymentConfig, ClassTypeOptions, ClaudeAutoModeConfig, ClaudeHookAction, ClaudeHookEntry, ClaudeHooksConfig, ClaudePermissionsConfig, ClaudeRuleTarget, ClaudeSandboxConfig, ClaudeSettingsConfig, CopilotHandoff, CursorHookAction, CursorHooksConfig, CursorSettingsConfig, DeployWorkflowOptions, DeploymentMetadata, GitBranch, GitHubBoardMetadata, GitHubProjectMetadata, GitHubSprintMetadata, IDependencyResolver, McpServerConfig, McpTransport, MergeMethod, MonorepoProjectOptions, OrganizationMetadata, PnpmWorkspaceOptions, ProjectMetadataOptions, RemoteCacheOptions, RepositoryMetadata, ResetTaskOptions, ResolvedProjectMetadata, SlackMetadata, TemplateResolveResult, TurboRepoOptions, TurboRepoTaskOptions, TypeScriptProjectOptions, VersionKey, VitestConfigOptions, VitestOptions };
package/lib/index.js CHANGED
@@ -211,6 +211,7 @@ __export(index_exports, {
211
211
  awsCdkBundle: () => awsCdkBundle,
212
212
  baseBundle: () => baseBundle,
213
213
  getLatestEligibleVersion: () => getLatestEligibleVersion,
214
+ githubWorkflowBundle: () => githubWorkflowBundle,
214
215
  jestBundle: () => jestBundle,
215
216
  pnpmBundle: () => pnpmBundle,
216
217
  projenBundle: () => projenBundle,
@@ -311,6 +312,37 @@ var awsCdkBundle = {
311
312
  "}",
312
313
  "```",
313
314
  "",
315
+ "## L2 Over L1 Construct Preference",
316
+ "",
317
+ "- Always prefer L2 constructs (e.g., `s3.Bucket`, `lambda.Function`) over L1 escape hatches (`CfnBucket`, `CfnFunction`)",
318
+ "- Only drop to L1 when the L2 construct is missing the feature you need or does not exist yet",
319
+ "- When using L1, add a comment explaining why the L2 was insufficient",
320
+ "",
321
+ "## Filename / Class Name Matching",
322
+ "",
323
+ "- Kebab-case filenames must mirror PascalCase class names (e.g., `my-construct.ts` \u2192 `MyConstruct`)",
324
+ "- One primary construct per file; supporting types (props interface, enums) live in the same file",
325
+ "- Test files follow the same pattern: `my-construct.spec.ts`",
326
+ "",
327
+ "## Cross-Stack Lookup Patterns",
328
+ "",
329
+ "- Lookups live on **service classes**, not component/construct classes",
330
+ "- Use static methods for cross-stack lookups so consumers don't need an instance:",
331
+ "",
332
+ "```typescript",
333
+ "export class MyService {",
334
+ " /** Look up a resource from another stack via SSM. */",
335
+ " public static lookupArn(scope: Construct, id: string): string {",
336
+ " return StringParameter.valueForStringParameter(",
337
+ " scope,",
338
+ " `/my-app/my-resource-arn`,",
339
+ " );",
340
+ " }",
341
+ "}",
342
+ "```",
343
+ "",
344
+ "- Store outputs in SSM parameters with well-known paths; do not pass values between stacks via props",
345
+ "",
314
346
  "## AWS Best Practices",
315
347
  "",
316
348
  "- Use AWS CDK v2 (`aws-cdk-lib`)",
@@ -324,8 +356,30 @@ var awsCdkBundle = {
324
356
  "",
325
357
  "- Mock `Code.fromAsset` in any test file that synthesizes CDK stacks",
326
358
  "- Use static S3 values (`mock-assets-bucket`, `mock-asset-key.zip`) so snapshots are stable",
327
- "- Add the mock in `beforeAll` and restore in `afterAll`",
328
- "- Normalize the template before snapshotting when the stack includes asset-based Lambdas"
359
+ "- Add the mock in `beforeAll` and restore in `afterAll`:",
360
+ "",
361
+ "```typescript",
362
+ "let fromAssetMock: MockInstance;",
363
+ "",
364
+ "beforeAll(() => {",
365
+ ' fromAssetMock = vi.spyOn(Code, "fromAsset").mockReturnValue({',
366
+ " isInline: false,",
367
+ " bind: () => ({",
368
+ " s3Location: {",
369
+ ' bucketName: "mock-assets-bucket",',
370
+ ' objectKey: "mock-asset-key.zip",',
371
+ " },",
372
+ " }),",
373
+ " } as unknown as AssetCode);",
374
+ "});",
375
+ "",
376
+ "afterAll(() => {",
377
+ " fromAssetMock.mockRestore();",
378
+ "});",
379
+ "```",
380
+ "",
381
+ "- Normalize the template before snapshotting when the stack includes asset-based Lambdas",
382
+ "- Use `Template.fromStack(stack)` and assert with `hasResourceProperties` for targeted checks"
329
383
  ].join("\n"),
330
384
  tags: ["infrastructure"]
331
385
  }
@@ -634,6 +688,98 @@ var baseBundle = {
634
688
  ]
635
689
  };
636
690
 
691
+ // src/agent/bundles/github-workflow.ts
692
+ var import_github = require("projen/lib/github");
693
+ var githubWorkflowBundle = {
694
+ name: "github-workflow",
695
+ description: "GitHub issue and PR workflow automation patterns",
696
+ appliesWhen: (project) => hasComponent(project, import_github.GitHub),
697
+ rules: [
698
+ {
699
+ name: "issue-workflow",
700
+ description: "Automated workflow for starting work on a GitHub issue",
701
+ scope: AGENT_RULE_SCOPE.ALWAYS,
702
+ content: [
703
+ "# Issue Workflow",
704
+ "",
705
+ '## "Work on issue X" Automation',
706
+ "",
707
+ "When the user says **work on issue X** (or similar), follow these steps exactly:",
708
+ "",
709
+ "1. **Fetch issue details** \u2014 use `gh issue view <number>` to get the title, body, and labels",
710
+ "2. **Determine branch type** from the issue title prefix:",
711
+ " - `feat:` / `feature:` \u2192 `feat/`",
712
+ " - `fix:` / `bug:` \u2192 `fix/`",
713
+ " - `docs:` \u2192 `docs/`",
714
+ " - `chore:` / `refactor:` \u2192 `chore/`",
715
+ " - `test:` \u2192 `test/`",
716
+ " - No prefix \u2192 `feat/`",
717
+ "3. **Create a branch** following the naming convention: `<type>/<short-slug>-<issue-number>` (e.g., `feat/add-login-42`)",
718
+ "4. **Checkout the branch** locally",
719
+ "5. **Link the branch to the issue** by posting a comment: `gh issue comment <number> --body 'Branch: \\`<branch-name>\\`'`",
720
+ "6. **Stop and wait** for user instructions \u2014 do **NOT** start implementing",
721
+ "",
722
+ "### Important",
723
+ "",
724
+ "- Never begin implementation without explicit user direction",
725
+ "- If the issue title has no conventional prefix, default to `feat/`",
726
+ "- Keep the slug short (3-5 words max, kebab-case)"
727
+ ].join("\n"),
728
+ tags: ["workflow"]
729
+ },
730
+ {
731
+ name: "pr-workflow",
732
+ description: "Automated workflow for opening a pull request",
733
+ scope: AGENT_RULE_SCOPE.ALWAYS,
734
+ content: [
735
+ "# PR Workflow",
736
+ "",
737
+ '## "Open a PR" Automation',
738
+ "",
739
+ "When the user says **open a PR** (or similar), follow these steps exactly:",
740
+ "",
741
+ "1. **Check for uncommitted changes** \u2014 if any exist, commit them with a conventional commit message",
742
+ "2. **Push the branch** to origin: `git push -u origin <branch>`",
743
+ "3. **Create the PR** using `gh pr create`:",
744
+ " - **Title**: use a conventional commit style title (e.g., `feat(scope): short description`)",
745
+ " - **Body**: include `Closes #<issue-number>` (derived from the branch name) and a brief summary of changes",
746
+ "4. **Display merge dialog text** for the user to copy-paste when merging:",
747
+ "",
748
+ "```",
749
+ "Commit message:",
750
+ "<conventional-commit-title>",
751
+ "",
752
+ "Extended description:",
753
+ "- Bullet points summarizing the changes",
754
+ "- Closes #<issue-number>",
755
+ "```",
756
+ "",
757
+ "### PR Body Template",
758
+ "",
759
+ "```markdown",
760
+ "## Summary",
761
+ "",
762
+ "<1-3 bullet points describing what changed and why>",
763
+ "",
764
+ "Closes #<issue-number>",
765
+ "",
766
+ "## Test Plan",
767
+ "",
768
+ "- [ ] Tests pass locally",
769
+ "- [ ] Relevant changes have been reviewed",
770
+ "```",
771
+ "",
772
+ "### Important",
773
+ "",
774
+ "- Always derive the issue number from the branch name (e.g., `feat/add-login-42` \u2192 `#42`)",
775
+ "- Use conventional commit format for the PR title",
776
+ "- Do not merge the PR \u2014 only create it and display the merge text"
777
+ ].join("\n"),
778
+ tags: ["workflow"]
779
+ }
780
+ ]
781
+ };
782
+
637
783
  // src/agent/bundles/jest.ts
638
784
  var jestBundle = {
639
785
  name: "jest",
@@ -834,7 +980,35 @@ var projenBundle = {
834
980
  "- Edit Projen configuration in:",
835
981
  " - `.projenrc.ts` (root)",
836
982
  " - `projenrc/*.ts` (package-specific)",
837
- "- After making Projen changes, ask the user to run `npx projen` locally (agent must not run it)",
983
+ "- After making Projen changes, run `npx projen` to synthesize",
984
+ "",
985
+ "## Workspace Dependencies",
986
+ "",
987
+ "When adding dependencies between packages in a monorepo:",
988
+ "",
989
+ '- Use the workspace protocol: `project.addDeps("@org/sibling-pkg@workspace:*")`',
990
+ "- This ensures the local version is always resolved, not a registry version",
991
+ '- For dev dependencies: `project.addDevDeps("@org/sibling-pkg@workspace:*")`',
992
+ "",
993
+ "## The `configureMyProject` Pattern",
994
+ "",
995
+ "Each package should expose a `configureMyProject(options)` factory function that creates and configures its Projen project:",
996
+ "",
997
+ "```typescript",
998
+ "export function configureMyProject(",
999
+ " options: MyProjectOptions,",
1000
+ "): TypeScriptProject {",
1001
+ " const project = new TypeScriptProject({",
1002
+ " ...options,",
1003
+ " // package-specific defaults",
1004
+ " });",
1005
+ "",
1006
+ " // Attach components, configure rules, etc.",
1007
+ " return project;",
1008
+ "}",
1009
+ "```",
1010
+ "",
1011
+ "This pattern keeps `.projenrc.ts` clean and makes package configuration reusable and testable.",
838
1012
  "",
839
1013
  "## Custom Projen Components",
840
1014
  "",
@@ -1442,7 +1616,8 @@ var BUILT_IN_BUNDLES = [
1442
1616
  turborepoBundle,
1443
1617
  pnpmBundle,
1444
1618
  awsCdkBundle,
1445
- projenBundle
1619
+ projenBundle,
1620
+ githubWorkflowBundle
1446
1621
  ];
1447
1622
 
1448
1623
  // src/projects/project-metadata.ts
@@ -2274,7 +2449,7 @@ ${extra}`
2274
2449
 
2275
2450
  // src/aws/aws-deployment-config.ts
2276
2451
  var import_node_path = require("path");
2277
- var import_utils8 = __toESM(require_lib());
2452
+ var import_utils9 = __toESM(require_lib());
2278
2453
  var import_projen9 = require("projen");
2279
2454
  var AwsDeploymentConfig = class _AwsDeploymentConfig extends import_projen9.Component {
2280
2455
  constructor(project) {
@@ -2331,17 +2506,17 @@ var AwsDeploymentConfig = class _AwsDeploymentConfig extends import_projen9.Comp
2331
2506
  */
2332
2507
  get prodTargets() {
2333
2508
  return this.awsDeploymentTargets.filter(
2334
- (target) => target.awsStageType === import_utils8.AWS_STAGE_TYPE.PROD
2509
+ (target) => target.awsStageType === import_utils9.AWS_STAGE_TYPE.PROD
2335
2510
  );
2336
2511
  }
2337
2512
  get prodTargetsForCI() {
2338
2513
  return this.awsDeploymentTargets.filter(
2339
- (target) => target.awsStageType === import_utils8.AWS_STAGE_TYPE.PROD && target.ciDeployment
2514
+ (target) => target.awsStageType === import_utils9.AWS_STAGE_TYPE.PROD && target.ciDeployment
2340
2515
  );
2341
2516
  }
2342
2517
  get prodTargetsForLocal() {
2343
2518
  return this.awsDeploymentTargets.filter(
2344
- (target) => target.awsStageType === import_utils8.AWS_STAGE_TYPE.PROD && target.localDeployment
2519
+ (target) => target.awsStageType === import_utils9.AWS_STAGE_TYPE.PROD && target.localDeployment
2345
2520
  );
2346
2521
  }
2347
2522
  /**
@@ -2350,17 +2525,17 @@ var AwsDeploymentConfig = class _AwsDeploymentConfig extends import_projen9.Comp
2350
2525
  */
2351
2526
  get stageTargets() {
2352
2527
  return this.awsDeploymentTargets.filter(
2353
- (target) => target.awsStageType === import_utils8.AWS_STAGE_TYPE.STAGE
2528
+ (target) => target.awsStageType === import_utils9.AWS_STAGE_TYPE.STAGE
2354
2529
  );
2355
2530
  }
2356
2531
  get stageTargetsForCI() {
2357
2532
  return this.awsDeploymentTargets.filter(
2358
- (target) => target.awsStageType === import_utils8.AWS_STAGE_TYPE.STAGE && target.ciDeployment
2533
+ (target) => target.awsStageType === import_utils9.AWS_STAGE_TYPE.STAGE && target.ciDeployment
2359
2534
  );
2360
2535
  }
2361
2536
  get stageTargetsForLocal() {
2362
2537
  return this.awsDeploymentTargets.filter(
2363
- (target) => target.awsStageType === import_utils8.AWS_STAGE_TYPE.STAGE && target.localDeployment
2538
+ (target) => target.awsStageType === import_utils9.AWS_STAGE_TYPE.STAGE && target.localDeployment
2364
2539
  );
2365
2540
  }
2366
2541
  /**
@@ -2369,17 +2544,17 @@ var AwsDeploymentConfig = class _AwsDeploymentConfig extends import_projen9.Comp
2369
2544
  */
2370
2545
  get devTargets() {
2371
2546
  return this.awsDeploymentTargets.filter(
2372
- (target) => target.awsStageType === import_utils8.AWS_STAGE_TYPE.DEV
2547
+ (target) => target.awsStageType === import_utils9.AWS_STAGE_TYPE.DEV
2373
2548
  );
2374
2549
  }
2375
2550
  get devTargetsForCI() {
2376
2551
  return this.awsDeploymentTargets.filter(
2377
- (target) => target.awsStageType === import_utils8.AWS_STAGE_TYPE.DEV && target.ciDeployment
2552
+ (target) => target.awsStageType === import_utils9.AWS_STAGE_TYPE.DEV && target.ciDeployment
2378
2553
  );
2379
2554
  }
2380
2555
  get devTargetsForLocal() {
2381
2556
  return this.awsDeploymentTargets.filter(
2382
- (target) => target.awsStageType === import_utils8.AWS_STAGE_TYPE.DEV && target.localDeployment
2557
+ (target) => target.awsStageType === import_utils9.AWS_STAGE_TYPE.DEV && target.localDeployment
2383
2558
  );
2384
2559
  }
2385
2560
  preSynthesize() {
@@ -2392,7 +2567,7 @@ var AwsDeploymentConfig = class _AwsDeploymentConfig extends import_projen9.Comp
2392
2567
  };
2393
2568
 
2394
2569
  // src/aws/aws-deployment-target.ts
2395
- var import_utils9 = __toESM(require_lib());
2570
+ var import_utils10 = __toESM(require_lib());
2396
2571
  var import_projen10 = require("projen");
2397
2572
  var AwsDeploymentTarget = class _AwsDeploymentTarget extends import_projen10.Component {
2398
2573
  constructor(project, options) {
@@ -2459,11 +2634,11 @@ var AwsDeploymentTarget = class _AwsDeploymentTarget extends import_projen10.Com
2459
2634
  };
2460
2635
  this.account = options.account;
2461
2636
  this.region = options.region;
2462
- this.awsStageType = options.awsStageType || import_utils9.AWS_STAGE_TYPE.DEV;
2463
- const role = options.deploymentTargetRole ?? options.awsEnvironmentType ?? import_utils9.DEPLOYMENT_TARGET_ROLE.PRIMARY;
2637
+ this.awsStageType = options.awsStageType || import_utils10.AWS_STAGE_TYPE.DEV;
2638
+ const role = options.deploymentTargetRole ?? options.awsEnvironmentType ?? import_utils10.DEPLOYMENT_TARGET_ROLE.PRIMARY;
2464
2639
  this.deploymentTargetRole = role;
2465
2640
  this.awsEnvironmentType = role;
2466
- this.branches = options.branches ?? (this.awsStageType === import_utils9.AWS_STAGE_TYPE.PROD ? [
2641
+ this.branches = options.branches ?? (this.awsStageType === import_utils10.AWS_STAGE_TYPE.PROD ? [
2467
2642
  {
2468
2643
  branch: "main"
2469
2644
  }
@@ -2472,7 +2647,7 @@ var AwsDeploymentTarget = class _AwsDeploymentTarget extends import_projen10.Com
2472
2647
  branch: "feature/*"
2473
2648
  }
2474
2649
  ]);
2475
- this.localDeployment = options.localDeployment ?? this.awsStageType === import_utils9.AWS_STAGE_TYPE.DEV;
2650
+ this.localDeployment = options.localDeployment ?? this.awsStageType === import_utils10.AWS_STAGE_TYPE.DEV;
2476
2651
  if (this.localDeployment) {
2477
2652
  const roleName = options.localDeploymentConfig?.roleName?.toLowerCase() || "poweruseraccess";
2478
2653
  const profile = options.localDeploymentConfig?.profile || `${roleName}-${this.awsStageType}-${this.account}-${this.region}`;
@@ -3398,10 +3573,10 @@ var TypeScriptConfig = class extends import_projen15.Component {
3398
3573
  };
3399
3574
 
3400
3575
  // src/workflows/aws-deploy-workflow.ts
3401
- var import_utils10 = __toESM(require_lib());
3576
+ var import_utils11 = __toESM(require_lib());
3402
3577
  var import_projen16 = require("projen");
3403
3578
  var import_build = require("projen/lib/build");
3404
- var import_github = require("projen/lib/github");
3579
+ var import_github2 = require("projen/lib/github");
3405
3580
  var import_workflows_model4 = require("projen/lib/github/workflows-model");
3406
3581
  var PROD_DEPLOY_NAME = "prod-deploy";
3407
3582
  var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen16.Component {
@@ -3415,7 +3590,7 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen16.Compone
3415
3590
  * @deprecated Use deployment target role terminology elsewhere. This property is maintained for backward compatibility.
3416
3591
  * @default 'primary' (this is the only type supported currently)
3417
3592
  */
3418
- this.awsEnvironmentType = import_utils10.DEPLOYMENT_TARGET_ROLE.PRIMARY;
3593
+ this.awsEnvironmentType = import_utils11.DEPLOYMENT_TARGET_ROLE.PRIMARY;
3419
3594
  this.setupNode = () => {
3420
3595
  return [
3421
3596
  {
@@ -3517,7 +3692,7 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen16.Compone
3517
3692
  );
3518
3693
  }
3519
3694
  this.rootProject = project.root;
3520
- const github = import_github.GitHub.of(this.rootProject);
3695
+ const github = import_github2.GitHub.of(this.rootProject);
3521
3696
  if (!github) {
3522
3697
  throw new Error(
3523
3698
  "AwsDeployWorkflow requires a GitHub component in the root project"
@@ -3525,7 +3700,7 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen16.Compone
3525
3700
  }
3526
3701
  const turbo = TurboRepo.of(this.rootProject);
3527
3702
  const buildWorkflowOptions = turbo?.remoteCacheOptions ? TurboRepo.buildWorkflowOptions(turbo.remoteCacheOptions) : {};
3528
- this.awsStageType = options.awsStageType ?? import_utils10.AWS_STAGE_TYPE.DEV;
3703
+ this.awsStageType = options.awsStageType ?? import_utils11.AWS_STAGE_TYPE.DEV;
3529
3704
  this.awsDeploymentTargets = options.awsDeploymentTargets ?? AwsDeploymentConfig.of(project)?.awsDeploymentTargets.filter(
3530
3705
  (target) => target.awsStageType === this.awsStageType && target.ciDeployment
3531
3706
  ) ?? [];
@@ -3705,6 +3880,7 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen16.Compone
3705
3880
  awsCdkBundle,
3706
3881
  baseBundle,
3707
3882
  getLatestEligibleVersion,
3883
+ githubWorkflowBundle,
3708
3884
  jestBundle,
3709
3885
  pnpmBundle,
3710
3886
  projenBundle,