@codedrifters/configulator 0.0.155 → 0.0.157
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 +330 -1
- package/lib/index.d.ts +331 -2
- package/lib/index.js +360 -41
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +341 -24
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.d.mts
CHANGED
|
@@ -190,6 +190,25 @@ interface AgentSkill {
|
|
|
190
190
|
* @example ['src/api/**\/*.ts']
|
|
191
191
|
*/
|
|
192
192
|
readonly paths?: ReadonlyArray<string>;
|
|
193
|
+
/**
|
|
194
|
+
* Resource directories bundled with the skill (e.g., references/, scripts/, assets/).
|
|
195
|
+
* @example ['references/', 'scripts/']
|
|
196
|
+
*/
|
|
197
|
+
readonly references?: ReadonlyArray<string>;
|
|
198
|
+
/**
|
|
199
|
+
* Context isolation mode. Set to 'fork' to run in an isolated subagent context.
|
|
200
|
+
*/
|
|
201
|
+
readonly context?: string;
|
|
202
|
+
/**
|
|
203
|
+
* Subagent name to delegate to when context is 'fork'.
|
|
204
|
+
* @example 'code-reviewer'
|
|
205
|
+
*/
|
|
206
|
+
readonly agent?: string;
|
|
207
|
+
/**
|
|
208
|
+
* Shell for dynamic context injection via !`command` syntax.
|
|
209
|
+
* @default 'bash'
|
|
210
|
+
*/
|
|
211
|
+
readonly shell?: string;
|
|
193
212
|
}
|
|
194
213
|
/**
|
|
195
214
|
* Platform-specific overrides for a sub-agent definition.
|
|
@@ -683,6 +702,19 @@ declare class AgentConfig extends Component {
|
|
|
683
702
|
private resolveRules;
|
|
684
703
|
private resolveSkills;
|
|
685
704
|
private resolveSubAgents;
|
|
705
|
+
/**
|
|
706
|
+
* Resolves template variables in rule content using project metadata.
|
|
707
|
+
* Emits synthesis warnings for rules with unresolved variables.
|
|
708
|
+
*/
|
|
709
|
+
private resolveTemplates;
|
|
710
|
+
/**
|
|
711
|
+
* Resolves template variables in skill instructions using project metadata.
|
|
712
|
+
*/
|
|
713
|
+
private resolveSkillTemplates;
|
|
714
|
+
/**
|
|
715
|
+
* Resolves template variables in sub-agent prompts using project metadata.
|
|
716
|
+
*/
|
|
717
|
+
private resolveSubAgentTemplates;
|
|
686
718
|
}
|
|
687
719
|
|
|
688
720
|
/**
|
|
@@ -737,6 +769,259 @@ declare const vitestBundle: AgentRuleBundle;
|
|
|
737
769
|
*/
|
|
738
770
|
declare const BUILT_IN_BUNDLES: ReadonlyArray<AgentRuleBundle>;
|
|
739
771
|
|
|
772
|
+
/*******************************************************************************
|
|
773
|
+
*
|
|
774
|
+
* Repository Metadata
|
|
775
|
+
*
|
|
776
|
+
******************************************************************************/
|
|
777
|
+
/**
|
|
778
|
+
* Repository identity. Required fields are auto-detected when not provided.
|
|
779
|
+
*/
|
|
780
|
+
interface RepositoryMetadata {
|
|
781
|
+
/**
|
|
782
|
+
* Repository owner (GitHub user or organization).
|
|
783
|
+
* Auto-detected from package.json repository URL when not provided.
|
|
784
|
+
* @example 'codedrifters'
|
|
785
|
+
*/
|
|
786
|
+
readonly owner?: string;
|
|
787
|
+
/**
|
|
788
|
+
* Repository name.
|
|
789
|
+
* Auto-detected from package.json repository URL when not provided.
|
|
790
|
+
* @example 'packages'
|
|
791
|
+
*/
|
|
792
|
+
readonly name?: string;
|
|
793
|
+
/**
|
|
794
|
+
* Default branch name.
|
|
795
|
+
* @default 'main'
|
|
796
|
+
*/
|
|
797
|
+
readonly defaultBranch?: string;
|
|
798
|
+
}
|
|
799
|
+
/*******************************************************************************
|
|
800
|
+
*
|
|
801
|
+
* GitHub Projects Metadata
|
|
802
|
+
*
|
|
803
|
+
******************************************************************************/
|
|
804
|
+
/**
|
|
805
|
+
* A board or view within a GitHub Project.
|
|
806
|
+
*/
|
|
807
|
+
interface GitHubBoardMetadata {
|
|
808
|
+
/** Board/view name. */
|
|
809
|
+
readonly name: string;
|
|
810
|
+
/** Board/view ID. */
|
|
811
|
+
readonly id?: string;
|
|
812
|
+
}
|
|
813
|
+
/**
|
|
814
|
+
* Sprint/iteration field metadata for GitHub Projects.
|
|
815
|
+
*/
|
|
816
|
+
interface GitHubSprintMetadata {
|
|
817
|
+
/** Name of the iteration field in GitHub Projects. */
|
|
818
|
+
readonly fieldName?: string;
|
|
819
|
+
/** Current sprint/iteration name. */
|
|
820
|
+
readonly current?: string;
|
|
821
|
+
/** Known sprint/iteration names. */
|
|
822
|
+
readonly iterations?: ReadonlyArray<string>;
|
|
823
|
+
}
|
|
824
|
+
/**
|
|
825
|
+
* GitHub Projects (v2) context for workflow automation.
|
|
826
|
+
*/
|
|
827
|
+
interface GitHubProjectMetadata {
|
|
828
|
+
/**
|
|
829
|
+
* GitHub Project name.
|
|
830
|
+
* @example 'CodeDrifters Packages'
|
|
831
|
+
*/
|
|
832
|
+
readonly name?: string;
|
|
833
|
+
/**
|
|
834
|
+
* GitHub Project number (visible in the project URL).
|
|
835
|
+
* @example 3
|
|
836
|
+
*/
|
|
837
|
+
readonly number?: number;
|
|
838
|
+
/**
|
|
839
|
+
* GitHub Project node ID (for GraphQL API).
|
|
840
|
+
* @example 'PVT_kwHOABCDEf4AGHIJ'
|
|
841
|
+
*/
|
|
842
|
+
readonly nodeId?: string;
|
|
843
|
+
/**
|
|
844
|
+
* Board or view definitions within the project.
|
|
845
|
+
*/
|
|
846
|
+
readonly boards?: ReadonlyArray<GitHubBoardMetadata>;
|
|
847
|
+
/**
|
|
848
|
+
* Sprint/iteration field metadata.
|
|
849
|
+
*/
|
|
850
|
+
readonly sprints?: GitHubSprintMetadata;
|
|
851
|
+
/**
|
|
852
|
+
* Kanban column (status field) definitions.
|
|
853
|
+
* @example [{ name: 'To Do', id: 'status_1' }, { name: 'In Progress', id: 'status_2' }]
|
|
854
|
+
*/
|
|
855
|
+
readonly columns?: ReadonlyArray<{
|
|
856
|
+
readonly name: string;
|
|
857
|
+
readonly id?: string;
|
|
858
|
+
}>;
|
|
859
|
+
}
|
|
860
|
+
/*******************************************************************************
|
|
861
|
+
*
|
|
862
|
+
* Organization Metadata
|
|
863
|
+
*
|
|
864
|
+
******************************************************************************/
|
|
865
|
+
/**
|
|
866
|
+
* Organization or team context.
|
|
867
|
+
*/
|
|
868
|
+
interface OrganizationMetadata {
|
|
869
|
+
/**
|
|
870
|
+
* Organization or team display name.
|
|
871
|
+
* Used in generated documentation and rule content.
|
|
872
|
+
* @example 'CodeDrifters'
|
|
873
|
+
*/
|
|
874
|
+
readonly name?: string;
|
|
875
|
+
/**
|
|
876
|
+
* GitHub organization login (may differ from display name).
|
|
877
|
+
* @example 'codedrifters'
|
|
878
|
+
*/
|
|
879
|
+
readonly githubOrg?: string;
|
|
880
|
+
}
|
|
881
|
+
/*******************************************************************************
|
|
882
|
+
*
|
|
883
|
+
* Slack Metadata
|
|
884
|
+
*
|
|
885
|
+
******************************************************************************/
|
|
886
|
+
/**
|
|
887
|
+
* Slack channel references for workflow skills.
|
|
888
|
+
*/
|
|
889
|
+
interface SlackMetadata {
|
|
890
|
+
/**
|
|
891
|
+
* Primary project channel.
|
|
892
|
+
* @example '#packages-dev'
|
|
893
|
+
*/
|
|
894
|
+
readonly projectChannel?: string;
|
|
895
|
+
/**
|
|
896
|
+
* Alerts or notifications channel.
|
|
897
|
+
* @example '#packages-alerts'
|
|
898
|
+
*/
|
|
899
|
+
readonly alertsChannel?: string;
|
|
900
|
+
/**
|
|
901
|
+
* Additional named channels. Keys are purpose identifiers.
|
|
902
|
+
* @example { releases: '#releases', support: '#customer-support' }
|
|
903
|
+
*/
|
|
904
|
+
readonly channels?: Readonly<Record<string, string>>;
|
|
905
|
+
}
|
|
906
|
+
/*******************************************************************************
|
|
907
|
+
*
|
|
908
|
+
* Deployment Metadata
|
|
909
|
+
*
|
|
910
|
+
******************************************************************************/
|
|
911
|
+
/**
|
|
912
|
+
* Deployment and environment hints.
|
|
913
|
+
*/
|
|
914
|
+
interface DeploymentMetadata {
|
|
915
|
+
/**
|
|
916
|
+
* AWS account ID for the primary deployment target.
|
|
917
|
+
* @example '123456789012'
|
|
918
|
+
*/
|
|
919
|
+
readonly awsAccountId?: string;
|
|
920
|
+
/**
|
|
921
|
+
* Primary AWS region.
|
|
922
|
+
* @example 'us-east-1'
|
|
923
|
+
*/
|
|
924
|
+
readonly awsRegion?: string;
|
|
925
|
+
/**
|
|
926
|
+
* Named environments.
|
|
927
|
+
* @example { dev: { accountId: '111', region: 'us-east-1' }, prod: { accountId: '222', region: 'us-east-1' } }
|
|
928
|
+
*/
|
|
929
|
+
readonly environments?: Readonly<Record<string, {
|
|
930
|
+
readonly accountId?: string;
|
|
931
|
+
readonly region?: string;
|
|
932
|
+
}>>;
|
|
933
|
+
}
|
|
934
|
+
/*******************************************************************************
|
|
935
|
+
*
|
|
936
|
+
* ProjectMetadata Options & Resolved Shape
|
|
937
|
+
*
|
|
938
|
+
******************************************************************************/
|
|
939
|
+
/**
|
|
940
|
+
* Options for the ProjectMetadata component.
|
|
941
|
+
*/
|
|
942
|
+
interface ProjectMetadataOptions {
|
|
943
|
+
/**
|
|
944
|
+
* Repository identity. When omitted, auto-detected from the Projen
|
|
945
|
+
* project's package.json repository field.
|
|
946
|
+
*/
|
|
947
|
+
readonly repository?: RepositoryMetadata;
|
|
948
|
+
/**
|
|
949
|
+
* GitHub Projects (v2) context for workflow automation.
|
|
950
|
+
* Optional — only needed when skills or rules reference project boards.
|
|
951
|
+
*/
|
|
952
|
+
readonly githubProject?: GitHubProjectMetadata;
|
|
953
|
+
/**
|
|
954
|
+
* Organization or team metadata.
|
|
955
|
+
* Optional — used in branch naming, PR conventions, and rule content.
|
|
956
|
+
*/
|
|
957
|
+
readonly organization?: OrganizationMetadata;
|
|
958
|
+
/**
|
|
959
|
+
* Slack channel references for workflow skills.
|
|
960
|
+
* Optional — only needed when skills post to or reference Slack channels.
|
|
961
|
+
*/
|
|
962
|
+
readonly slack?: SlackMetadata;
|
|
963
|
+
/**
|
|
964
|
+
* Important label names used by the project.
|
|
965
|
+
* Optional — allows skills and rules to reference canonical labels.
|
|
966
|
+
* @example ['auto-approve', 'wontfix', 'breaking-change']
|
|
967
|
+
*/
|
|
968
|
+
readonly labels?: ReadonlyArray<string>;
|
|
969
|
+
/**
|
|
970
|
+
* Milestone names or IDs for release planning.
|
|
971
|
+
* Optional — allows skills to reference milestones by name.
|
|
972
|
+
*/
|
|
973
|
+
readonly milestones?: ReadonlyArray<string>;
|
|
974
|
+
/**
|
|
975
|
+
* Documentation base path (relative to repo root) or external URL.
|
|
976
|
+
* Optional — used by "reference docs" skills to point to the right location.
|
|
977
|
+
* @example 'docs/' or 'https://docs.example.com'
|
|
978
|
+
*/
|
|
979
|
+
readonly docsPath?: string;
|
|
980
|
+
/**
|
|
981
|
+
* Deployment or environment hints.
|
|
982
|
+
* Optional — used by deploy-related skills or rules.
|
|
983
|
+
*/
|
|
984
|
+
readonly deployment?: DeploymentMetadata;
|
|
985
|
+
}
|
|
986
|
+
/**
|
|
987
|
+
* Resolved project metadata with auto-detected values filled in.
|
|
988
|
+
* Consumed by AgentConfig and other configulator features at synthesis time.
|
|
989
|
+
*/
|
|
990
|
+
interface ResolvedProjectMetadata {
|
|
991
|
+
readonly repository: {
|
|
992
|
+
readonly owner: string | undefined;
|
|
993
|
+
readonly name: string | undefined;
|
|
994
|
+
/** Always has a value (default: 'main'). */
|
|
995
|
+
readonly defaultBranch: string;
|
|
996
|
+
};
|
|
997
|
+
readonly githubProject?: GitHubProjectMetadata;
|
|
998
|
+
readonly organization?: OrganizationMetadata;
|
|
999
|
+
readonly slack?: SlackMetadata;
|
|
1000
|
+
readonly labels?: ReadonlyArray<string>;
|
|
1001
|
+
readonly milestones?: ReadonlyArray<string>;
|
|
1002
|
+
readonly docsPath?: string;
|
|
1003
|
+
readonly deployment?: DeploymentMetadata;
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
/**
|
|
1007
|
+
* Result of template variable resolution.
|
|
1008
|
+
*/
|
|
1009
|
+
interface TemplateResolveResult {
|
|
1010
|
+
/** The template string with all variables resolved or replaced with fallbacks. */
|
|
1011
|
+
readonly resolved: string;
|
|
1012
|
+
/** Template variable keys that could not be resolved from metadata. */
|
|
1013
|
+
readonly unresolvedKeys: ReadonlyArray<string>;
|
|
1014
|
+
}
|
|
1015
|
+
/**
|
|
1016
|
+
* Resolves `{{dotted.path}}` template variables in a string using project metadata.
|
|
1017
|
+
* Unresolved variables are replaced with their fallback placeholders.
|
|
1018
|
+
*
|
|
1019
|
+
* @param template - String potentially containing `{{variable}}` patterns
|
|
1020
|
+
* @param metadata - Resolved project metadata, or undefined if not available
|
|
1021
|
+
* @returns The resolved string and a list of any unresolved variable keys
|
|
1022
|
+
*/
|
|
1023
|
+
declare function resolveTemplateVariables(template: string, metadata: ResolvedProjectMetadata | undefined): TemplateResolveResult;
|
|
1024
|
+
|
|
740
1025
|
/*******************************************************************************
|
|
741
1026
|
*
|
|
742
1027
|
* Git configs for this repo. This venn diagram has a great deal of overlap
|
|
@@ -2046,6 +2331,18 @@ interface MonorepoProjectOptions extends Omit<TypeScriptProjectOptions$1, "defau
|
|
|
2046
2331
|
* @default true
|
|
2047
2332
|
*/
|
|
2048
2333
|
readonly configulatorRegistryConsumer?: boolean;
|
|
2334
|
+
/**
|
|
2335
|
+
* Project metadata configuration. Provides repository identity,
|
|
2336
|
+
* GitHub project context, and organizational details consumed by
|
|
2337
|
+
* AgentConfig and other features at synthesis time.
|
|
2338
|
+
*
|
|
2339
|
+
* - `undefined` or `{}`: auto-instantiate with auto-detection (default)
|
|
2340
|
+
* - `ProjectMetadataOptions`: explicit metadata configuration
|
|
2341
|
+
* - `false`: disable ProjectMetadata entirely
|
|
2342
|
+
*
|
|
2343
|
+
* @default {} (auto-detect from package.json)
|
|
2344
|
+
*/
|
|
2345
|
+
readonly projectMetadata?: ProjectMetadataOptions | false;
|
|
2049
2346
|
/**
|
|
2050
2347
|
* Enable AI agent configuration (Cursor, Claude Code rules).
|
|
2051
2348
|
* When true, generates rule files at the monorepo root with auto-detected
|
|
@@ -2082,6 +2379,38 @@ declare class MonorepoProject extends TypeScriptAppProject {
|
|
|
2082
2379
|
postSynthesize(): void;
|
|
2083
2380
|
}
|
|
2084
2381
|
|
|
2382
|
+
/**
|
|
2383
|
+
* Provides structured project metadata consumed by AgentConfig, skills,
|
|
2384
|
+
* and other configulator features at synthesis time.
|
|
2385
|
+
*
|
|
2386
|
+
* This is a project-level component — it describes the project itself,
|
|
2387
|
+
* not any specific feature. It lives alongside MonorepoProject and
|
|
2388
|
+
* TypeScriptProject and is discovered by consumers via the static
|
|
2389
|
+
* `.of()` factory method.
|
|
2390
|
+
*/
|
|
2391
|
+
declare class ProjectMetadata extends Component {
|
|
2392
|
+
/**
|
|
2393
|
+
* Returns the ProjectMetadata instance for a project, or undefined
|
|
2394
|
+
* if the component has not been added.
|
|
2395
|
+
*/
|
|
2396
|
+
static of(project: Project$1): ProjectMetadata | undefined;
|
|
2397
|
+
/** Resolved metadata with auto-detected values filled in. */
|
|
2398
|
+
readonly metadata: ResolvedProjectMetadata;
|
|
2399
|
+
constructor(project: Project$1, options?: ProjectMetadataOptions);
|
|
2400
|
+
/**
|
|
2401
|
+
* Merges explicit options with auto-detected values.
|
|
2402
|
+
* Auto-detection reads the repository URL from package.json
|
|
2403
|
+
* (via Projen's NodePackage manifest) and parses GitHub owner/name.
|
|
2404
|
+
* Explicit options always take precedence over auto-detected values.
|
|
2405
|
+
*/
|
|
2406
|
+
private resolveMetadata;
|
|
2407
|
+
/**
|
|
2408
|
+
* Attempts to auto-detect repository owner and name from the Projen
|
|
2409
|
+
* project's package.json repository field.
|
|
2410
|
+
*/
|
|
2411
|
+
private autoDetectRepository;
|
|
2412
|
+
}
|
|
2413
|
+
|
|
2085
2414
|
/**
|
|
2086
2415
|
* Options for the Vitest config (test block in vitest.config).
|
|
2087
2416
|
*
|
|
@@ -2330,4 +2659,4 @@ declare const COMPLETE_JOB_ID = "complete";
|
|
|
2330
2659
|
*/
|
|
2331
2660
|
declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
|
|
2332
2661
|
|
|
2333
|
-
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 CursorHookAction, type CursorHooksConfig, type CursorSettingsConfig, type DeployWorkflowOptions, type GitBranch, type IDependencyResolver, JsiiFaker, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, type McpServerConfig, type McpTransport, type MergeMethod, MonorepoProject, type MonorepoProjectOptions, PROD_DEPLOY_NAME, PnpmWorkspace, type PnpmWorkspaceOptions, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, type RemoteCacheOptions, ResetTask, type ResetTaskOptions, 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, turborepoBundle, typescriptBundle, vitestBundle };
|
|
2662
|
+
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 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 };
|