@codedrifters/configulator 0.0.181 → 0.0.182

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
@@ -2453,6 +2453,46 @@ interface ApproveMergeUpgradeOptions {
2453
2453
  */
2454
2454
  declare function addApproveMergeUpgradeWorkflow(project: NodeProject, options: ApproveMergeUpgradeOptions): void;
2455
2455
 
2456
+ /** A single GitHub label definition for EndBug/label-sync. */
2457
+ interface LabelDefinition {
2458
+ /** Label name (e.g. "priority:high"). */
2459
+ readonly name: string;
2460
+ /** Hex color without the leading `#` (e.g. "B60205"). */
2461
+ readonly color: string;
2462
+ /** Short description shown in the GitHub UI. */
2463
+ readonly description: string;
2464
+ }
2465
+ /** Options for the sync-labels workflow and labels config file. */
2466
+ interface SyncLabelsOptions {
2467
+ /**
2468
+ * Additional labels to sync alongside the standard defaults.
2469
+ * Merged with DEFAULT_STATUS_LABELS, DEFAULT_PRIORITY_LABELS, and
2470
+ * DEFAULT_TYPE_LABELS (standard labels are always included).
2471
+ */
2472
+ readonly labels?: ReadonlyArray<LabelDefinition>;
2473
+ /**
2474
+ * Remove labels from the repo that are not in the config file.
2475
+ * @default true
2476
+ */
2477
+ readonly deleteOtherLabels?: boolean;
2478
+ /**
2479
+ * Workflow file name (display name in the Actions tab).
2480
+ * @default "sync-labels"
2481
+ */
2482
+ readonly workflowName?: string;
2483
+ }
2484
+ /** Default status labels. */
2485
+ declare const DEFAULT_STATUS_LABELS: ReadonlyArray<LabelDefinition>;
2486
+ /** Default priority labels. */
2487
+ declare const DEFAULT_PRIORITY_LABELS: ReadonlyArray<LabelDefinition>;
2488
+ /** Default type labels — one per conventional commit type. */
2489
+ declare const DEFAULT_TYPE_LABELS: ReadonlyArray<LabelDefinition>;
2490
+ /**
2491
+ * Adds a labels config file and a GitHub Actions workflow that syncs
2492
+ * labels to the repository using EndBug/label-sync.
2493
+ */
2494
+ declare function addSyncLabelsWorkflow(project: NodeProject, options: SyncLabelsOptions): void;
2495
+
2456
2496
  /*******************************************************************************
2457
2497
  *
2458
2498
  * Monorepo Root Project.
@@ -2546,6 +2586,17 @@ interface MonorepoProjectOptions extends Omit<TypeScriptProjectOptions$1, "defau
2546
2586
  * @default false
2547
2587
  */
2548
2588
  readonly agentConfig?: AgentConfigOptions | boolean;
2589
+ /**
2590
+ * Sync GitHub labels from a config file using EndBug/label-sync.
2591
+ * Generates `.github/labels.yml` and a sync workflow.
2592
+ *
2593
+ * - `true` or `undefined`: enable with default priority labels (default)
2594
+ * - `SyncLabelsOptions`: enable with custom label configuration
2595
+ * - `false`: disable label syncing
2596
+ *
2597
+ * @default true
2598
+ */
2599
+ readonly syncLabels?: SyncLabelsOptions | boolean;
2549
2600
  }
2550
2601
  declare class MonorepoProject extends TypeScriptAppProject {
2551
2602
  /**
@@ -2868,4 +2919,4 @@ declare const COMPLETE_JOB_ID = "complete";
2868
2919
  */
2869
2920
  declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
2870
2921
 
2871
- 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, MINIMUM_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, slackBundle, turborepoBundle, typescriptBundle, vitestBundle };
2922
+ 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, DEFAULT_PRIORITY_LABELS, DEFAULT_STATUS_LABELS, DEFAULT_TYPE_LABELS, type DeployWorkflowOptions, type DeploymentMetadata, type GitBranch, type GitHubBoardMetadata, type GitHubProjectMetadata, type GitHubSprintMetadata, type IDependencyResolver, JsiiFaker, type LabelDefinition, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_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 SyncLabelsOptions, 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, addSyncLabelsWorkflow, awsCdkBundle, baseBundle, getLatestEligibleVersion, githubWorkflowBundle, jestBundle, pnpmBundle, projenBundle, resolveTemplateVariables, slackBundle, turborepoBundle, typescriptBundle, vitestBundle };
package/lib/index.d.ts CHANGED
@@ -2502,6 +2502,46 @@ interface ApproveMergeUpgradeOptions {
2502
2502
  */
2503
2503
  declare function addApproveMergeUpgradeWorkflow(project: NodeProject, options: ApproveMergeUpgradeOptions): void;
2504
2504
 
2505
+ /** A single GitHub label definition for EndBug/label-sync. */
2506
+ interface LabelDefinition {
2507
+ /** Label name (e.g. "priority:high"). */
2508
+ readonly name: string;
2509
+ /** Hex color without the leading `#` (e.g. "B60205"). */
2510
+ readonly color: string;
2511
+ /** Short description shown in the GitHub UI. */
2512
+ readonly description: string;
2513
+ }
2514
+ /** Options for the sync-labels workflow and labels config file. */
2515
+ interface SyncLabelsOptions {
2516
+ /**
2517
+ * Additional labels to sync alongside the standard defaults.
2518
+ * Merged with DEFAULT_STATUS_LABELS, DEFAULT_PRIORITY_LABELS, and
2519
+ * DEFAULT_TYPE_LABELS (standard labels are always included).
2520
+ */
2521
+ readonly labels?: ReadonlyArray<LabelDefinition>;
2522
+ /**
2523
+ * Remove labels from the repo that are not in the config file.
2524
+ * @default true
2525
+ */
2526
+ readonly deleteOtherLabels?: boolean;
2527
+ /**
2528
+ * Workflow file name (display name in the Actions tab).
2529
+ * @default "sync-labels"
2530
+ */
2531
+ readonly workflowName?: string;
2532
+ }
2533
+ /** Default status labels. */
2534
+ declare const DEFAULT_STATUS_LABELS: ReadonlyArray<LabelDefinition>;
2535
+ /** Default priority labels. */
2536
+ declare const DEFAULT_PRIORITY_LABELS: ReadonlyArray<LabelDefinition>;
2537
+ /** Default type labels — one per conventional commit type. */
2538
+ declare const DEFAULT_TYPE_LABELS: ReadonlyArray<LabelDefinition>;
2539
+ /**
2540
+ * Adds a labels config file and a GitHub Actions workflow that syncs
2541
+ * labels to the repository using EndBug/label-sync.
2542
+ */
2543
+ declare function addSyncLabelsWorkflow(project: NodeProject, options: SyncLabelsOptions): void;
2544
+
2505
2545
  /*******************************************************************************
2506
2546
  *
2507
2547
  * Monorepo Root Project.
@@ -2595,6 +2635,17 @@ interface MonorepoProjectOptions extends Omit<TypeScriptProjectOptions$1, "defau
2595
2635
  * @default false
2596
2636
  */
2597
2637
  readonly agentConfig?: AgentConfigOptions | boolean;
2638
+ /**
2639
+ * Sync GitHub labels from a config file using EndBug/label-sync.
2640
+ * Generates `.github/labels.yml` and a sync workflow.
2641
+ *
2642
+ * - `true` or `undefined`: enable with default priority labels (default)
2643
+ * - `SyncLabelsOptions`: enable with custom label configuration
2644
+ * - `false`: disable label syncing
2645
+ *
2646
+ * @default true
2647
+ */
2648
+ readonly syncLabels?: SyncLabelsOptions | boolean;
2598
2649
  }
2599
2650
  declare class MonorepoProject extends TypeScriptAppProject {
2600
2651
  /**
@@ -2917,5 +2968,5 @@ declare const COMPLETE_JOB_ID = "complete";
2917
2968
  */
2918
2969
  declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
2919
2970
 
2920
- 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, MINIMUM_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, slackBundle, turborepoBundle, typescriptBundle, vitestBundle };
2921
- 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 };
2971
+ export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, DEFAULT_PRIORITY_LABELS, DEFAULT_STATUS_LABELS, DEFAULT_TYPE_LABELS, JsiiFaker, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_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, addSyncLabelsWorkflow, awsCdkBundle, baseBundle, getLatestEligibleVersion, githubWorkflowBundle, jestBundle, pnpmBundle, projenBundle, resolveTemplateVariables, slackBundle, turborepoBundle, typescriptBundle, vitestBundle };
2972
+ 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, LabelDefinition, McpServerConfig, McpTransport, MergeMethod, MonorepoProjectOptions, OrganizationMetadata, PnpmWorkspaceOptions, ProjectMetadataOptions, RemoteCacheOptions, RepositoryMetadata, ResetTaskOptions, ResolvedProjectMetadata, SlackMetadata, SyncLabelsOptions, TemplateResolveResult, TurboRepoOptions, TurboRepoTaskOptions, TypeScriptProjectOptions, VersionKey, VitestConfigOptions, VitestOptions };
package/lib/index.js CHANGED
@@ -185,6 +185,9 @@ __export(index_exports, {
185
185
  BUILT_IN_BUNDLES: () => BUILT_IN_BUNDLES,
186
186
  CLAUDE_RULE_TARGET: () => CLAUDE_RULE_TARGET,
187
187
  COMPLETE_JOB_ID: () => COMPLETE_JOB_ID,
188
+ DEFAULT_PRIORITY_LABELS: () => DEFAULT_PRIORITY_LABELS,
189
+ DEFAULT_STATUS_LABELS: () => DEFAULT_STATUS_LABELS,
190
+ DEFAULT_TYPE_LABELS: () => DEFAULT_TYPE_LABELS,
188
191
  JsiiFaker: () => JsiiFaker,
189
192
  MCP_TRANSPORT: () => MCP_TRANSPORT,
190
193
  MERGE_METHODS: () => MERGE_METHODS,
@@ -209,6 +212,7 @@ __export(index_exports, {
209
212
  Vitest: () => Vitest,
210
213
  addApproveMergeUpgradeWorkflow: () => addApproveMergeUpgradeWorkflow,
211
214
  addBuildCompleteJob: () => addBuildCompleteJob,
215
+ addSyncLabelsWorkflow: () => addSyncLabelsWorkflow,
212
216
  awsCdkBundle: () => awsCdkBundle,
213
217
  baseBundle: () => baseBundle,
214
218
  getLatestEligibleVersion: () => getLatestEligibleVersion,
@@ -3859,6 +3863,198 @@ function addBuildCompleteJob(buildWorkflow) {
3859
3863
  });
3860
3864
  }
3861
3865
 
3866
+ // src/workflows/sync-labels.ts
3867
+ var import_projen15 = require("projen");
3868
+ var import_workflows_model4 = require("projen/lib/github/workflows-model");
3869
+ var DEFAULT_STATUS_LABELS = [
3870
+ {
3871
+ name: "status:ready",
3872
+ color: "0E8A16",
3873
+ description: "Task is ready for pickup"
3874
+ },
3875
+ {
3876
+ name: "status:in-progress",
3877
+ color: "FBCA04",
3878
+ description: "Actively being worked on"
3879
+ },
3880
+ {
3881
+ name: "status:blocked",
3882
+ color: "D93F0B",
3883
+ description: "Blocked on a dependency or question"
3884
+ },
3885
+ {
3886
+ name: "status:done",
3887
+ color: "6F42C1",
3888
+ description: "Task completed and closed"
3889
+ },
3890
+ {
3891
+ name: "status:deferred",
3892
+ color: "C2E0C6",
3893
+ description: "Intentionally parked \u2014 not ready for pickup"
3894
+ },
3895
+ {
3896
+ name: "status:needs-attention",
3897
+ color: "FF0000",
3898
+ description: "Requires human review"
3899
+ }
3900
+ ];
3901
+ var DEFAULT_PRIORITY_LABELS = [
3902
+ {
3903
+ name: "priority:critical",
3904
+ color: "B60205",
3905
+ description: "Critical priority \u2014 address immediately"
3906
+ },
3907
+ {
3908
+ name: "priority:high",
3909
+ color: "D93F0B",
3910
+ description: "High priority \u2014 pick before normal"
3911
+ },
3912
+ {
3913
+ name: "priority:medium",
3914
+ color: "E4E669",
3915
+ description: "Medium priority"
3916
+ },
3917
+ {
3918
+ name: "priority:low",
3919
+ color: "D4C5F9",
3920
+ description: "Low priority \u2014 skip if higher-priority work exists"
3921
+ },
3922
+ {
3923
+ name: "priority:trivial",
3924
+ color: "EDEDED",
3925
+ description: "Trivial priority \u2014 address when convenient"
3926
+ }
3927
+ ];
3928
+ var DEFAULT_TYPE_LABELS = [
3929
+ {
3930
+ name: "type:feat",
3931
+ color: "1D76DB",
3932
+ description: "New feature or functionality"
3933
+ },
3934
+ {
3935
+ name: "type:fix",
3936
+ color: "D73A4A",
3937
+ description: "Bug fix"
3938
+ },
3939
+ {
3940
+ name: "type:docs",
3941
+ color: "0075CA",
3942
+ description: "Documentation only"
3943
+ },
3944
+ {
3945
+ name: "type:style",
3946
+ color: "BFD4F2",
3947
+ description: "Code style (formatting, whitespace) \u2014 no logic change"
3948
+ },
3949
+ {
3950
+ name: "type:refactor",
3951
+ color: "A2EEEF",
3952
+ description: "Code restructure \u2014 no feature or fix"
3953
+ },
3954
+ {
3955
+ name: "type:perf",
3956
+ color: "F9D0C4",
3957
+ description: "Performance improvement"
3958
+ },
3959
+ {
3960
+ name: "type:test",
3961
+ color: "BFD4F2",
3962
+ description: "Adding or updating tests"
3963
+ },
3964
+ {
3965
+ name: "type:build",
3966
+ color: "E6CCF5",
3967
+ description: "Build system or external dependencies"
3968
+ },
3969
+ {
3970
+ name: "type:ci",
3971
+ color: "D4C5F9",
3972
+ description: "CI configuration changes"
3973
+ },
3974
+ {
3975
+ name: "type:chore",
3976
+ color: "E6E6E6",
3977
+ description: "Maintenance tasks (deps, tooling, config)"
3978
+ },
3979
+ {
3980
+ name: "type:revert",
3981
+ color: "EDEDED",
3982
+ description: "Revert a previous commit"
3983
+ },
3984
+ {
3985
+ name: "type:release",
3986
+ color: "0E8A16",
3987
+ description: "Release preparation and version bumps"
3988
+ },
3989
+ {
3990
+ name: "type:hotfix",
3991
+ color: "B60205",
3992
+ description: "Urgent production fix"
3993
+ }
3994
+ ];
3995
+ var DEFAULT_WORKFLOW_NAME2 = "sync-labels";
3996
+ var LABELS_CONFIG_PATH = ".github/labels.yml";
3997
+ function addSyncLabelsWorkflow(project, options) {
3998
+ const workflowName = options.workflowName ?? DEFAULT_WORKFLOW_NAME2;
3999
+ const deleteOtherLabels = options.deleteOtherLabels ?? true;
4000
+ const allLabels = [
4001
+ ...DEFAULT_STATUS_LABELS,
4002
+ ...DEFAULT_PRIORITY_LABELS,
4003
+ ...DEFAULT_TYPE_LABELS,
4004
+ ...options.labels ?? []
4005
+ ];
4006
+ new LabelsFile(project, allLabels);
4007
+ const workflow = project.github?.addWorkflow(workflowName);
4008
+ if (!workflow) {
4009
+ return;
4010
+ }
4011
+ workflow.on({
4012
+ push: {
4013
+ branches: ["main"],
4014
+ paths: [LABELS_CONFIG_PATH]
4015
+ },
4016
+ workflowDispatch: {}
4017
+ });
4018
+ workflow.addJobs({
4019
+ sync: {
4020
+ name: "Sync labels",
4021
+ runsOn: ["ubuntu-latest"],
4022
+ permissions: {
4023
+ contents: import_workflows_model4.JobPermission.READ,
4024
+ issues: import_workflows_model4.JobPermission.WRITE
4025
+ },
4026
+ steps: [
4027
+ {
4028
+ name: "Checkout",
4029
+ uses: "actions/checkout@v6"
4030
+ },
4031
+ {
4032
+ name: "Sync labels",
4033
+ uses: "EndBug/label-sync@v2",
4034
+ with: {
4035
+ "config-file": LABELS_CONFIG_PATH,
4036
+ "delete-other-labels": deleteOtherLabels,
4037
+ token: "${{ secrets.GITHUB_TOKEN }}"
4038
+ }
4039
+ }
4040
+ ]
4041
+ }
4042
+ });
4043
+ }
4044
+ var LabelsFile = class extends import_projen15.Component {
4045
+ constructor(project, labels) {
4046
+ super(project);
4047
+ new import_projen15.YamlFile(project, LABELS_CONFIG_PATH, {
4048
+ obj: labels.map((l) => ({
4049
+ name: l.name,
4050
+ color: l.color,
4051
+ description: l.description
4052
+ })),
4053
+ committed: true
4054
+ });
4055
+ }
4056
+ };
4057
+
3862
4058
  // src/projects/monorepo-project.ts
3863
4059
  var CONFIGULATOR_PACKAGE_NAME = "@codedrifters/configulator";
3864
4060
  var postInstallDependenciesMap = /* @__PURE__ */ new WeakMap();
@@ -4108,6 +4304,12 @@ var MonorepoProject = class extends import_typescript3.TypeScriptAppProject {
4108
4304
  typeof options.agentConfig === "object" ? options.agentConfig : {}
4109
4305
  );
4110
4306
  }
4307
+ if (options.syncLabels !== false) {
4308
+ addSyncLabelsWorkflow(
4309
+ this,
4310
+ typeof options.syncLabels === "object" ? options.syncLabels : {}
4311
+ );
4312
+ }
4111
4313
  if (this.buildWorkflow) {
4112
4314
  addBuildCompleteJob(this.buildWorkflow);
4113
4315
  }
@@ -4166,9 +4368,9 @@ var MonorepoProject = class extends import_typescript3.TypeScriptAppProject {
4166
4368
 
4167
4369
  // src/typescript/typescript-config.ts
4168
4370
  var import_node_path2 = require("path");
4169
- var import_projen15 = require("projen");
4371
+ var import_projen16 = require("projen");
4170
4372
  var import_path2 = require("projen/lib/util/path");
4171
- var TypeScriptConfig = class extends import_projen15.Component {
4373
+ var TypeScriptConfig = class extends import_projen16.Component {
4172
4374
  constructor(project) {
4173
4375
  super(project);
4174
4376
  let tsPaths = {};
@@ -4196,12 +4398,12 @@ var TypeScriptConfig = class extends import_projen15.Component {
4196
4398
 
4197
4399
  // src/workflows/aws-deploy-workflow.ts
4198
4400
  var import_utils11 = __toESM(require_lib());
4199
- var import_projen16 = require("projen");
4401
+ var import_projen17 = require("projen");
4200
4402
  var import_build = require("projen/lib/build");
4201
4403
  var import_github2 = require("projen/lib/github");
4202
- var import_workflows_model4 = require("projen/lib/github/workflows-model");
4404
+ var import_workflows_model5 = require("projen/lib/github/workflows-model");
4203
4405
  var PROD_DEPLOY_NAME = "prod-deploy";
4204
- var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen16.Component {
4406
+ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen17.Component {
4205
4407
  constructor(project, options = {}) {
4206
4408
  super(project);
4207
4409
  this.project = project;
@@ -4428,8 +4630,8 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen16.Compone
4428
4630
  ],
4429
4631
  runsOn: ["ubuntu-latest"],
4430
4632
  permissions: {
4431
- contents: import_workflows_model4.JobPermission.READ,
4432
- idToken: import_workflows_model4.JobPermission.WRITE
4633
+ contents: import_workflows_model5.JobPermission.READ,
4634
+ idToken: import_workflows_model5.JobPermission.WRITE
4433
4635
  },
4434
4636
  concurrency: deployJobName,
4435
4637
  if: jobCondition,
@@ -4476,6 +4678,9 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen16.Compone
4476
4678
  BUILT_IN_BUNDLES,
4477
4679
  CLAUDE_RULE_TARGET,
4478
4680
  COMPLETE_JOB_ID,
4681
+ DEFAULT_PRIORITY_LABELS,
4682
+ DEFAULT_STATUS_LABELS,
4683
+ DEFAULT_TYPE_LABELS,
4479
4684
  JsiiFaker,
4480
4685
  MCP_TRANSPORT,
4481
4686
  MERGE_METHODS,
@@ -4500,6 +4705,7 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen16.Compone
4500
4705
  Vitest,
4501
4706
  addApproveMergeUpgradeWorkflow,
4502
4707
  addBuildCompleteJob,
4708
+ addSyncLabelsWorkflow,
4503
4709
  awsCdkBundle,
4504
4710
  baseBundle,
4505
4711
  getLatestEligibleVersion,