@codedrifters/configulator 0.0.253 → 0.0.255

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
@@ -846,6 +846,130 @@ interface ClaudeSettingsConfig {
846
846
  */
847
847
  readonly respectGitignore?: boolean;
848
848
  }
849
+ /*******************************************************************************
850
+ *
851
+ * Agent Paths Config
852
+ *
853
+ ******************************************************************************/
854
+ /**
855
+ * Consumer-facing overrides for the output-path roots used by agent
856
+ * bundles. Every field is optional; unset fields cascade from their
857
+ * parent root (resolved by `resolveAgentPaths()` in
858
+ * `./bundles/paths.ts`).
859
+ *
860
+ * Bundles read these values indirectly through `DEFAULT_AGENT_PATHS`
861
+ * (module-eval-time defaults) today. Per-project propagation through
862
+ * `AgentConfig.resolveRules` lands in a follow-up change.
863
+ */
864
+ interface AgentPathsConfig {
865
+ /**
866
+ * Root folder for the monorepo-wide Starlight docs site content.
867
+ * @default "docs/src/content/docs"
868
+ */
869
+ readonly docsRoot?: string;
870
+ /**
871
+ * Root folder for all research outputs (scopes, slices,
872
+ * deliverables) produced by the `research-analyst` pipeline.
873
+ * @default "docs/research"
874
+ */
875
+ readonly researchRoot?: string;
876
+ /**
877
+ * Root folder for profile documents (people, companies, software,
878
+ * industries).
879
+ * @default "<docsRoot>/profiles"
880
+ */
881
+ readonly profilesRoot?: string;
882
+ /**
883
+ * Root folder for meeting notes and transcripts produced by the
884
+ * `meeting-analyst` pipeline.
885
+ * @default "<docsRoot>/meetings"
886
+ */
887
+ readonly meetingsRoot?: string;
888
+ /**
889
+ * Root folder for final requirement documents produced by the
890
+ * `requirements-writer` agent.
891
+ * @default "<docsRoot>/requirements"
892
+ */
893
+ readonly requirementsRoot?: string;
894
+ /**
895
+ * Root folder where the `requirements-analyst` writes requirement
896
+ * proposals before they are promoted into the final requirements
897
+ * tree.
898
+ * @default "<researchRoot>/requirements"
899
+ */
900
+ readonly researchRequirementsRoot?: string;
901
+ /**
902
+ * Root folder for BCM (Business Capability Model) capability-model
903
+ * documents produced by the `bcm-writer` agent.
904
+ * @default "<docsRoot>/concepts"
905
+ */
906
+ readonly bcmRoot?: string;
907
+ /**
908
+ * Root folder for people profiles.
909
+ * @default "<profilesRoot>/people"
910
+ */
911
+ readonly peopleRoot?: string;
912
+ /**
913
+ * Root folder for company profiles.
914
+ * @default "<profilesRoot>/companies"
915
+ */
916
+ readonly companiesRoot?: string;
917
+ /**
918
+ * Root folder for software profiles.
919
+ * @default "<profilesRoot>/software"
920
+ */
921
+ readonly softwareRoot?: string;
922
+ /**
923
+ * Root folder for industry profiles.
924
+ * @default "<profilesRoot>/industries"
925
+ */
926
+ readonly industriesRoot?: string;
927
+ }
928
+ /*******************************************************************************
929
+ *
930
+ * Priority Rules
931
+ *
932
+ ******************************************************************************/
933
+ /**
934
+ * A single project-specific priority-detection rule.
935
+ *
936
+ * Rules let consuming repos declare a sector-prefix regex, label, body
937
+ * regex, or explicit issue-number pin that maps to one of the five
938
+ * `priority:*` tiers. The `base` bundle renders a "Project-specific
939
+ * priority rules" subsection into the `issue-label-conventions` rule
940
+ * when `AgentConfigOptions.priorityRules` is non-empty, in precedence
941
+ * order.
942
+ *
943
+ * Precedence is **first match wins** — rules are evaluated in the
944
+ * order supplied, and the bundle's default inference heuristics act as
945
+ * the fallback when nothing matches.
946
+ *
947
+ * @see AgentConfigOptions.priorityRules
948
+ */
949
+ interface PriorityRule {
950
+ /** Target priority tier the rule maps matched issues to. */
951
+ readonly priority: "critical" | "high" | "medium" | "low" | "trivial";
952
+ /**
953
+ * Match predicate. At least one sub-field should be set; multiple
954
+ * sub-fields on the same rule combine as a logical OR (any one
955
+ * matching fires the rule).
956
+ */
957
+ readonly match: {
958
+ /** Any of these labels present on the issue matches. */
959
+ readonly labels?: ReadonlyArray<string>;
960
+ /** Regex applied to the issue title, anchored as supplied. */
961
+ readonly titleRegex?: string;
962
+ /** Regex applied to the issue body, anchored as supplied. */
963
+ readonly bodyRegex?: string;
964
+ /** Explicit issue numbers pinned to this priority. */
965
+ readonly issueNumbers?: ReadonlyArray<number>;
966
+ };
967
+ /**
968
+ * Human-readable rationale rendered into the generated rule
969
+ * content so reviewers understand why the rule exists.
970
+ */
971
+ readonly rationale: string;
972
+ }
849
973
  /*******************************************************************************
850
974
  *
851
975
  * AgentConfig Options
@@ -932,6 +1056,32 @@ interface AgentConfigOptions {
932
1056
  * file visibility control.
933
1057
  */
934
1058
  readonly cursorSettings?: CursorSettingsConfig;
1059
+ /**
1060
+ * Overrides for the output-path roots used by agent bundles
1061
+ * (requirements, BCM, profiles, meetings, research). Unset fields
1062
+ * fall back to the defaults captured in
1063
+ * `bundles/paths.ts#DEFAULT_AGENT_PATHS`.
1064
+ *
1065
+ * This option is the first of the Group A framework injection
1066
+ * points from epic #414. Per-project propagation of these values
1067
+ * into bundle rule content lands in a follow-up — setting it today
1068
+ * does not yet alter generated rules.
1069
+ */
1070
+ readonly paths?: AgentPathsConfig;
1071
+ /**
1072
+ * Project-specific priority-detection rules. Each rule declares a
1073
+ * match predicate (labels, title regex, body regex, or explicit
1074
+ * issue numbers) and a target `priority:*` tier.
1075
+ *
1076
+ * When non-empty, the `base` bundle renders a "Project-specific
1077
+ * priority rules" subsection into the `issue-label-conventions`
1078
+ * rule. Precedence is **first match wins**; the bundle's default
1079
+ * inference heuristics act as the fallback when no rule matches.
1080
+ *
1081
+ * @see PriorityRule
1082
+ * @see ./bundles/priority-rules.ts#renderPriorityRulesSection
1083
+ */
1084
+ readonly priorityRules?: ReadonlyArray<PriorityRule>;
935
1085
  }
936
1086
 
937
1087
  /**
@@ -1119,6 +1269,56 @@ declare const meetingAnalysisBundle: AgentRuleBundle;
1119
1269
  ******************************************************************************/
1120
1270
  declare const orchestratorBundle: AgentRuleBundle;
1121
1271
 
1272
+ /**
1273
+ * Fully-resolved agent output-path roots. Every property is required.
1274
+ *
1275
+ * This is the shape that bundle code consumes at module-eval time via
1276
+ * `DEFAULT_AGENT_PATHS`, and the shape that `resolveAgentPaths()`
1277
+ * returns when consumers supply a partial `AgentPathsConfig` override.
1278
+ */
1279
+ interface ResolvedAgentPaths {
1280
+ readonly docsRoot: string;
1281
+ readonly researchRoot: string;
1282
+ readonly profilesRoot: string;
1283
+ readonly meetingsRoot: string;
1284
+ readonly requirementsRoot: string;
1285
+ readonly researchRequirementsRoot: string;
1286
+ readonly bcmRoot: string;
1287
+ readonly peopleRoot: string;
1288
+ readonly companiesRoot: string;
1289
+ readonly softwareRoot: string;
1290
+ readonly industriesRoot: string;
1291
+ }
1292
+ /**
1293
+ * Canonical default values for every agent path. These mirror the
1294
+ * hardcoded paths that bundles used before `AgentPathsConfig` existed,
1295
+ * so `DEFAULT_AGENT_PATHS.*` can be substituted into bundle rule
1296
+ * content at module-eval time without changing the generated
1297
+ * `.claude/rules/*.md` snapshot.
1298
+ *
1299
+ * Consumers override the defaults by passing an `AgentPathsConfig`
1300
+ * through `AgentConfigOptions.paths` and resolving it with
1301
+ * `resolveAgentPaths()`. Per-project propagation into bundle rule
1302
+ * content is a follow-up — this export is the first step: interface +
1303
+ * resolver land in this PR; the `AgentConfig.resolveRules` wiring lands
1304
+ * next.
1305
+ */
1306
+ declare const DEFAULT_AGENT_PATHS: ResolvedAgentPaths;
1307
+ /**
1308
+ * Resolve a partial `AgentPathsConfig` into a fully-populated
1309
+ * `ResolvedAgentPaths`. Unset fields cascade from their parent root:
1310
+ *
1311
+ * - `profilesRoot`, `meetingsRoot`, `requirementsRoot`, and `bcmRoot`
1312
+ * derive from `docsRoot` when not explicitly set.
1313
+ * - `researchRequirementsRoot` derives from `researchRoot` when not
1314
+ * explicitly set.
1315
+ * - `peopleRoot`, `companiesRoot`, `softwareRoot`, and `industriesRoot`
1316
+ * derive from the resolved `profilesRoot` when not explicitly set,
1317
+ * so that overriding `docsRoot` alone (or overriding `profilesRoot`
1318
+ * alone) propagates correctly through every dependent root.
1319
+ */
1320
+ declare function resolveAgentPaths(paths?: AgentPathsConfig): ResolvedAgentPaths;
1321
+
1122
1322
  /**
1123
1323
  * People-profile bundle — enabled by default.
1124
1324
  *
@@ -1154,6 +1354,18 @@ declare const prReviewBundle: AgentRuleBundle;
1154
1354
  */
1155
1355
  declare const projenBundle: AgentRuleBundle;
1156
1356
 
1357
+ /**
1358
+ * Render the markdown subsection appended to the
1359
+ * `issue-label-conventions` rule when `AgentConfigOptions.priorityRules`
1360
+ * is non-empty. Returns an empty string when the supplied array is
1361
+ * empty so callers can unconditionally concatenate the result.
1362
+ *
1363
+ * Precedence is **first match wins** — rules render in the order
1364
+ * supplied. The bundle's default inference heuristics act as the
1365
+ * fallback when no rule matches.
1366
+ */
1367
+ declare function renderPriorityRulesSection(rules: ReadonlyArray<PriorityRule>): string;
1368
+
1157
1369
  /**
1158
1370
  * Requirements-analyst bundle — opt-in via `includeBundles: [\"requirements-analyst\"]`.
1159
1371
  *
@@ -3876,4 +4088,4 @@ declare const COMPLETE_JOB_ID = "complete";
3876
4088
  */
3877
4089
  declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
3878
4090
 
3879
- export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, type AgentConfigOptions, type AgentModel, type AgentPlatform, type AgentPlatformOverrides, type AgentProcedure, type AgentRule, type AgentRuleBundle, type AgentRuleScope, type AgentSkill, type AgentSubAgent, type AgentSubAgentPlatformOverrides, type ApproveMergeUpgradeOptions, AstroConfig, type AstroConfigOptions, type AstroIntegrationSpec, AstroOutput, AstroProject, type AstroProjectOptions, type AwsAccount, AwsCdkProject, type AwsCdkProjectOptions, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, type AwsDeploymentTargetOptions, type AwsLocalDeploymentConfig, type AwsOrganization, type AwsRegion, AwsTeardownWorkflow, type AwsTeardownWorkflowOptions, 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_TEARDOWN_BRANCH_PATTERNS, DEFAULT_TYPE_LABELS, type DeployWorkflowOptions, type DeploymentMetadata, type GitBranch, type GitHubBoardMetadata, type GitHubProjectMetadata, type GitHubSprintMetadata, type IDependencyResolver, JsiiFaker, LAYOUT_ENFORCEMENT, LAYOUT_ROOT_BY_PROJECT_TYPE, type LabelDefinition, type LayoutEnforcement, type LayoutViolation, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_RELEASE_AGE, MONOREPO_LAYOUT, type McpServerConfig, type McpTransport, type MergeMethod, type MonorepoLayoutRoot, MonorepoProject, type MonorepoProjectOptions, type OrganizationMetadata, PROD_DEPLOY_NAME, PnpmWorkspace, type PnpmWorkspaceOptions, ProjectMetadata, type ProjectMetadataOptions, REQUIREMENTS_WRITER_PATHS, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, type RemoteCacheOptions, type RepositoryMetadata, ResetTask, type ResetTaskOptions, type ResolvedProjectMetadata, STARLIGHT_ROLE, type SlackMetadata, type StarlightEditLink, type StarlightLogo, StarlightProject, type StarlightProjectOptions, type StarlightRole, type StarlightSidebarItem, type StarlightSingletonViolation, type StarlightSocialLink, 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, bcmWriterBundle, companyProfileBundle, formatLayoutViolation, formatStarlightSingletonViolation, getLatestEligibleVersion, githubWorkflowBundle, industryDiscoveryBundle, jestBundle, maintenanceAuditBundle, meetingAnalysisBundle, orchestratorBundle, peopleProfileBundle, pnpmBundle, prReviewBundle, projenBundle, requirementsAnalystBundle, requirementsReviewerBundle, requirementsWriterBundle, researchPipelineBundle, resolveAstroProjectOutdir, resolveAwsCdkProjectOutdir, resolveModelAlias, resolveOutdirFromPackageName, resolveTemplateVariables, resolveTypeScriptProjectOutdir, slackBundle, softwareProfileBundle, turborepoBundle, typescriptBundle, validateMonorepoLayout, validateStarlightSingleton, vitestBundle };
4091
+ export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, type AgentConfigOptions, type AgentModel, type AgentPathsConfig, type AgentPlatform, type AgentPlatformOverrides, type AgentProcedure, type AgentRule, type AgentRuleBundle, type AgentRuleScope, type AgentSkill, type AgentSubAgent, type AgentSubAgentPlatformOverrides, type ApproveMergeUpgradeOptions, AstroConfig, type AstroConfigOptions, type AstroIntegrationSpec, AstroOutput, AstroProject, type AstroProjectOptions, type AwsAccount, AwsCdkProject, type AwsCdkProjectOptions, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, type AwsDeploymentTargetOptions, type AwsLocalDeploymentConfig, type AwsOrganization, type AwsRegion, AwsTeardownWorkflow, type AwsTeardownWorkflowOptions, 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_AGENT_PATHS, DEFAULT_PRIORITY_LABELS, DEFAULT_STATUS_LABELS, DEFAULT_TEARDOWN_BRANCH_PATTERNS, DEFAULT_TYPE_LABELS, type DeployWorkflowOptions, type DeploymentMetadata, type GitBranch, type GitHubBoardMetadata, type GitHubProjectMetadata, type GitHubSprintMetadata, type IDependencyResolver, JsiiFaker, LAYOUT_ENFORCEMENT, LAYOUT_ROOT_BY_PROJECT_TYPE, type LabelDefinition, type LayoutEnforcement, type LayoutViolation, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_RELEASE_AGE, MONOREPO_LAYOUT, type McpServerConfig, type McpTransport, type MergeMethod, type MonorepoLayoutRoot, MonorepoProject, type MonorepoProjectOptions, type OrganizationMetadata, PROD_DEPLOY_NAME, PnpmWorkspace, type PnpmWorkspaceOptions, type PriorityRule, ProjectMetadata, type ProjectMetadataOptions, REQUIREMENTS_WRITER_PATHS, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, type RemoteCacheOptions, type RepositoryMetadata, ResetTask, type ResetTaskOptions, type ResolvedAgentPaths, type ResolvedProjectMetadata, STARLIGHT_ROLE, type SlackMetadata, type StarlightEditLink, type StarlightLogo, StarlightProject, type StarlightProjectOptions, type StarlightRole, type StarlightSidebarItem, type StarlightSingletonViolation, type StarlightSocialLink, 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, bcmWriterBundle, companyProfileBundle, formatLayoutViolation, formatStarlightSingletonViolation, getLatestEligibleVersion, githubWorkflowBundle, industryDiscoveryBundle, jestBundle, maintenanceAuditBundle, meetingAnalysisBundle, orchestratorBundle, peopleProfileBundle, pnpmBundle, prReviewBundle, projenBundle, renderPriorityRulesSection, requirementsAnalystBundle, requirementsReviewerBundle, requirementsWriterBundle, researchPipelineBundle, resolveAgentPaths, resolveAstroProjectOutdir, resolveAwsCdkProjectOutdir, resolveModelAlias, resolveOutdirFromPackageName, resolveTemplateVariables, resolveTypeScriptProjectOutdir, slackBundle, softwareProfileBundle, turborepoBundle, typescriptBundle, validateMonorepoLayout, validateStarlightSingleton, vitestBundle };
package/lib/index.d.ts CHANGED
@@ -895,6 +895,130 @@ interface ClaudeSettingsConfig {
895
895
  */
896
896
  readonly respectGitignore?: boolean;
897
897
  }
898
+ /*******************************************************************************
899
+ *
900
+ * Agent Paths Config
901
+ *
902
+ ******************************************************************************/
903
+ /**
904
+ * Consumer-facing overrides for the output-path roots used by agent
905
+ * bundles. Every field is optional; unset fields cascade from their
906
+ * parent root (resolved by `resolveAgentPaths()` in
907
+ * `./bundles/paths.ts`).
908
+ *
909
+ * Bundles read these values indirectly through `DEFAULT_AGENT_PATHS`
910
+ * (module-eval-time defaults) today. Per-project propagation through
911
+ * `AgentConfig.resolveRules` lands in a follow-up change.
912
+ */
913
+ interface AgentPathsConfig {
914
+ /**
915
+ * Root folder for the monorepo-wide Starlight docs site content.
916
+ * @default "docs/src/content/docs"
917
+ */
918
+ readonly docsRoot?: string;
919
+ /**
920
+ * Root folder for all research outputs (scopes, slices,
921
+ * deliverables) produced by the `research-analyst` pipeline.
922
+ * @default "docs/research"
923
+ */
924
+ readonly researchRoot?: string;
925
+ /**
926
+ * Root folder for profile documents (people, companies, software,
927
+ * industries).
928
+ * @default "<docsRoot>/profiles"
929
+ */
930
+ readonly profilesRoot?: string;
931
+ /**
932
+ * Root folder for meeting notes and transcripts produced by the
933
+ * `meeting-analyst` pipeline.
934
+ * @default "<docsRoot>/meetings"
935
+ */
936
+ readonly meetingsRoot?: string;
937
+ /**
938
+ * Root folder for final requirement documents produced by the
939
+ * `requirements-writer` agent.
940
+ * @default "<docsRoot>/requirements"
941
+ */
942
+ readonly requirementsRoot?: string;
943
+ /**
944
+ * Root folder where the `requirements-analyst` writes requirement
945
+ * proposals before they are promoted into the final requirements
946
+ * tree.
947
+ * @default "<researchRoot>/requirements"
948
+ */
949
+ readonly researchRequirementsRoot?: string;
950
+ /**
951
+ * Root folder for BCM (Business Capability Model) capability-model
952
+ * documents produced by the `bcm-writer` agent.
953
+ * @default "<docsRoot>/concepts"
954
+ */
955
+ readonly bcmRoot?: string;
956
+ /**
957
+ * Root folder for people profiles.
958
+ * @default "<profilesRoot>/people"
959
+ */
960
+ readonly peopleRoot?: string;
961
+ /**
962
+ * Root folder for company profiles.
963
+ * @default "<profilesRoot>/companies"
964
+ */
965
+ readonly companiesRoot?: string;
966
+ /**
967
+ * Root folder for software profiles.
968
+ * @default "<profilesRoot>/software"
969
+ */
970
+ readonly softwareRoot?: string;
971
+ /**
972
+ * Root folder for industry profiles.
973
+ * @default "<profilesRoot>/industries"
974
+ */
975
+ readonly industriesRoot?: string;
976
+ }
977
+ /*******************************************************************************
978
+ *
979
+ * Priority Rules
980
+ *
981
+ ******************************************************************************/
982
+ /**
983
+ * A single project-specific priority-detection rule.
984
+ *
985
+ * Rules let consuming repos declare a sector-prefix regex, label, body
986
+ * regex, or explicit issue-number pin that maps to one of the five
987
+ * `priority:*` tiers. The `base` bundle renders a "Project-specific
988
+ * priority rules" subsection into the `issue-label-conventions` rule
989
+ * when `AgentConfigOptions.priorityRules` is non-empty, in precedence
990
+ * order.
991
+ *
992
+ * Precedence is **first match wins** — rules are evaluated in the
993
+ * order supplied, and the bundle's default inference heuristics act as
994
+ * the fallback when nothing matches.
995
+ *
996
+ * @see AgentConfigOptions.priorityRules
997
+ */
998
+ interface PriorityRule {
999
+ /** Target priority tier the rule maps matched issues to. */
1000
+ readonly priority: "critical" | "high" | "medium" | "low" | "trivial";
1001
+ /**
1002
+ * Match predicate. At least one sub-field should be set; multiple
1003
+ * sub-fields on the same rule combine as a logical OR (any one
1004
+ * matching fires the rule).
1005
+ */
1006
+ readonly match: {
1007
+ /** Any of these labels present on the issue matches. */
1008
+ readonly labels?: ReadonlyArray<string>;
1009
+ /** Regex applied to the issue title, anchored as supplied. */
1010
+ readonly titleRegex?: string;
1011
+ /** Regex applied to the issue body, anchored as supplied. */
1012
+ readonly bodyRegex?: string;
1013
+ /** Explicit issue numbers pinned to this priority. */
1014
+ readonly issueNumbers?: ReadonlyArray<number>;
1015
+ };
1016
+ /**
1017
+ * Human-readable rationale rendered into the generated rule
1018
+ * content so reviewers understand why the rule exists.
1019
+ */
1020
+ readonly rationale: string;
1021
+ }
898
1022
  /*******************************************************************************
899
1023
  *
900
1024
  * AgentConfig Options
@@ -981,6 +1105,32 @@ interface AgentConfigOptions {
981
1105
  * file visibility control.
982
1106
  */
983
1107
  readonly cursorSettings?: CursorSettingsConfig;
1108
+ /**
1109
+ * Overrides for the output-path roots used by agent bundles
1110
+ * (requirements, BCM, profiles, meetings, research). Unset fields
1111
+ * fall back to the defaults captured in
1112
+ * `bundles/paths.ts#DEFAULT_AGENT_PATHS`.
1113
+ *
1114
+ * This option is the first of the Group A framework injection
1115
+ * points from epic #414. Per-project propagation of these values
1116
+ * into bundle rule content lands in a follow-up — setting it today
1117
+ * does not yet alter generated rules.
1118
+ */
1119
+ readonly paths?: AgentPathsConfig;
1120
+ /**
1121
+ * Project-specific priority-detection rules. Each rule declares a
1122
+ * match predicate (labels, title regex, body regex, or explicit
1123
+ * issue numbers) and a target `priority:*` tier.
1124
+ *
1125
+ * When non-empty, the `base` bundle renders a "Project-specific
1126
+ * priority rules" subsection into the `issue-label-conventions`
1127
+ * rule. Precedence is **first match wins**; the bundle's default
1128
+ * inference heuristics act as the fallback when no rule matches.
1129
+ *
1130
+ * @see PriorityRule
1131
+ * @see ./bundles/priority-rules.ts#renderPriorityRulesSection
1132
+ */
1133
+ readonly priorityRules?: ReadonlyArray<PriorityRule>;
984
1134
  }
985
1135
 
986
1136
  /**
@@ -1168,6 +1318,56 @@ declare const meetingAnalysisBundle: AgentRuleBundle;
1168
1318
  ******************************************************************************/
1169
1319
  declare const orchestratorBundle: AgentRuleBundle;
1170
1320
 
1321
+ /**
1322
+ * Fully-resolved agent output-path roots. Every property is required.
1323
+ *
1324
+ * This is the shape that bundle code consumes at module-eval time via
1325
+ * `DEFAULT_AGENT_PATHS`, and the shape that `resolveAgentPaths()`
1326
+ * returns when consumers supply a partial `AgentPathsConfig` override.
1327
+ */
1328
+ interface ResolvedAgentPaths {
1329
+ readonly docsRoot: string;
1330
+ readonly researchRoot: string;
1331
+ readonly profilesRoot: string;
1332
+ readonly meetingsRoot: string;
1333
+ readonly requirementsRoot: string;
1334
+ readonly researchRequirementsRoot: string;
1335
+ readonly bcmRoot: string;
1336
+ readonly peopleRoot: string;
1337
+ readonly companiesRoot: string;
1338
+ readonly softwareRoot: string;
1339
+ readonly industriesRoot: string;
1340
+ }
1341
+ /**
1342
+ * Canonical default values for every agent path. These mirror the
1343
+ * hardcoded paths that bundles used before `AgentPathsConfig` existed,
1344
+ * so `DEFAULT_AGENT_PATHS.*` can be substituted into bundle rule
1345
+ * content at module-eval time without changing the generated
1346
+ * `.claude/rules/*.md` snapshot.
1347
+ *
1348
+ * Consumers override the defaults by passing an `AgentPathsConfig`
1349
+ * through `AgentConfigOptions.paths` and resolving it with
1350
+ * `resolveAgentPaths()`. Per-project propagation into bundle rule
1351
+ * content is a follow-up — this export is the first step: interface +
1352
+ * resolver land in this PR; the `AgentConfig.resolveRules` wiring lands
1353
+ * next.
1354
+ */
1355
+ declare const DEFAULT_AGENT_PATHS: ResolvedAgentPaths;
1356
+ /**
1357
+ * Resolve a partial `AgentPathsConfig` into a fully-populated
1358
+ * `ResolvedAgentPaths`. Unset fields cascade from their parent root:
1359
+ *
1360
+ * - `profilesRoot`, `meetingsRoot`, `requirementsRoot`, and `bcmRoot`
1361
+ * derive from `docsRoot` when not explicitly set.
1362
+ * - `researchRequirementsRoot` derives from `researchRoot` when not
1363
+ * explicitly set.
1364
+ * - `peopleRoot`, `companiesRoot`, `softwareRoot`, and `industriesRoot`
1365
+ * derive from the resolved `profilesRoot` when not explicitly set,
1366
+ * so that overriding `docsRoot` alone (or overriding `profilesRoot`
1367
+ * alone) propagates correctly through every dependent root.
1368
+ */
1369
+ declare function resolveAgentPaths(paths?: AgentPathsConfig): ResolvedAgentPaths;
1370
+
1171
1371
  /**
1172
1372
  * People-profile bundle — enabled by default.
1173
1373
  *
@@ -1203,6 +1403,18 @@ declare const prReviewBundle: AgentRuleBundle;
1203
1403
  */
1204
1404
  declare const projenBundle: AgentRuleBundle;
1205
1405
 
1406
+ /**
1407
+ * Render the markdown subsection appended to the
1408
+ * `issue-label-conventions` rule when `AgentConfigOptions.priorityRules`
1409
+ * is non-empty. Returns an empty string when the supplied array is
1410
+ * empty so callers can unconditionally concatenate the result.
1411
+ *
1412
+ * Precedence is **first match wins** — rules render in the order
1413
+ * supplied. The bundle's default inference heuristics act as the
1414
+ * fallback when no rule matches.
1415
+ */
1416
+ declare function renderPriorityRulesSection(rules: ReadonlyArray<PriorityRule>): string;
1417
+
1206
1418
  /**
1207
1419
  * Requirements-analyst bundle — opt-in via `includeBundles: [\"requirements-analyst\"]`.
1208
1420
  *
@@ -3925,5 +4137,5 @@ declare const COMPLETE_JOB_ID = "complete";
3925
4137
  */
3926
4138
  declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
3927
4139
 
3928
- export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, AstroConfig, AstroOutput, AstroProject, AwsCdkProject, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, AwsTeardownWorkflow, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, DEFAULT_PRIORITY_LABELS, DEFAULT_STATUS_LABELS, DEFAULT_TEARDOWN_BRANCH_PATTERNS, DEFAULT_TYPE_LABELS, JsiiFaker, LAYOUT_ENFORCEMENT, LAYOUT_ROOT_BY_PROJECT_TYPE, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_RELEASE_AGE, MONOREPO_LAYOUT, MonorepoProject, PROD_DEPLOY_NAME, PnpmWorkspace, ProjectMetadata, REQUIREMENTS_WRITER_PATHS, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, ResetTask, STARLIGHT_ROLE, StarlightProject, TestRunner, TurboRepo, TurboRepoTask, TypeScriptConfig, TypeScriptProject, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, Vitest, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, addSyncLabelsWorkflow, awsCdkBundle, baseBundle, bcmWriterBundle, companyProfileBundle, formatLayoutViolation, formatStarlightSingletonViolation, getLatestEligibleVersion, githubWorkflowBundle, industryDiscoveryBundle, jestBundle, maintenanceAuditBundle, meetingAnalysisBundle, orchestratorBundle, peopleProfileBundle, pnpmBundle, prReviewBundle, projenBundle, requirementsAnalystBundle, requirementsReviewerBundle, requirementsWriterBundle, researchPipelineBundle, resolveAstroProjectOutdir, resolveAwsCdkProjectOutdir, resolveModelAlias, resolveOutdirFromPackageName, resolveTemplateVariables, resolveTypeScriptProjectOutdir, slackBundle, softwareProfileBundle, turborepoBundle, typescriptBundle, validateMonorepoLayout, validateStarlightSingleton, vitestBundle };
3929
- export type { AgentConfigOptions, AgentModel, AgentPlatform, AgentPlatformOverrides, AgentProcedure, AgentRule, AgentRuleBundle, AgentRuleScope, AgentSkill, AgentSubAgent, AgentSubAgentPlatformOverrides, ApproveMergeUpgradeOptions, AstroConfigOptions, AstroIntegrationSpec, AstroProjectOptions, AwsAccount, AwsCdkProjectOptions, AwsDeploymentTargetOptions, AwsLocalDeploymentConfig, AwsOrganization, AwsRegion, AwsTeardownWorkflowOptions, CiDeploymentConfig, ClassTypeOptions, ClaudeAutoModeConfig, ClaudeHookAction, ClaudeHookEntry, ClaudeHooksConfig, ClaudePermissionsConfig, ClaudeRuleTarget, ClaudeSandboxConfig, ClaudeSettingsConfig, CopilotHandoff, CursorHookAction, CursorHooksConfig, CursorSettingsConfig, DeployWorkflowOptions, DeploymentMetadata, GitBranch, GitHubBoardMetadata, GitHubProjectMetadata, GitHubSprintMetadata, IDependencyResolver, LabelDefinition, LayoutEnforcement, LayoutViolation, McpServerConfig, McpTransport, MergeMethod, MonorepoLayoutRoot, MonorepoProjectOptions, OrganizationMetadata, PnpmWorkspaceOptions, ProjectMetadataOptions, RemoteCacheOptions, RepositoryMetadata, ResetTaskOptions, ResolvedProjectMetadata, SlackMetadata, StarlightEditLink, StarlightLogo, StarlightProjectOptions, StarlightRole, StarlightSidebarItem, StarlightSingletonViolation, StarlightSocialLink, SyncLabelsOptions, TemplateResolveResult, TurboRepoOptions, TurboRepoTaskOptions, TypeScriptProjectOptions, VersionKey, VitestConfigOptions, VitestOptions };
4140
+ export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, AstroConfig, AstroOutput, AstroProject, AwsCdkProject, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, AwsTeardownWorkflow, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, DEFAULT_AGENT_PATHS, DEFAULT_PRIORITY_LABELS, DEFAULT_STATUS_LABELS, DEFAULT_TEARDOWN_BRANCH_PATTERNS, DEFAULT_TYPE_LABELS, JsiiFaker, LAYOUT_ENFORCEMENT, LAYOUT_ROOT_BY_PROJECT_TYPE, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MINIMUM_RELEASE_AGE, MONOREPO_LAYOUT, MonorepoProject, PROD_DEPLOY_NAME, PnpmWorkspace, ProjectMetadata, REQUIREMENTS_WRITER_PATHS, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, ResetTask, STARLIGHT_ROLE, StarlightProject, TestRunner, TurboRepo, TurboRepoTask, TypeScriptConfig, TypeScriptProject, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, Vitest, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, addSyncLabelsWorkflow, awsCdkBundle, baseBundle, bcmWriterBundle, companyProfileBundle, formatLayoutViolation, formatStarlightSingletonViolation, getLatestEligibleVersion, githubWorkflowBundle, industryDiscoveryBundle, jestBundle, maintenanceAuditBundle, meetingAnalysisBundle, orchestratorBundle, peopleProfileBundle, pnpmBundle, prReviewBundle, projenBundle, renderPriorityRulesSection, requirementsAnalystBundle, requirementsReviewerBundle, requirementsWriterBundle, researchPipelineBundle, resolveAgentPaths, resolveAstroProjectOutdir, resolveAwsCdkProjectOutdir, resolveModelAlias, resolveOutdirFromPackageName, resolveTemplateVariables, resolveTypeScriptProjectOutdir, slackBundle, softwareProfileBundle, turborepoBundle, typescriptBundle, validateMonorepoLayout, validateStarlightSingleton, vitestBundle };
4141
+ export type { AgentConfigOptions, AgentModel, AgentPathsConfig, AgentPlatform, AgentPlatformOverrides, AgentProcedure, AgentRule, AgentRuleBundle, AgentRuleScope, AgentSkill, AgentSubAgent, AgentSubAgentPlatformOverrides, ApproveMergeUpgradeOptions, AstroConfigOptions, AstroIntegrationSpec, AstroProjectOptions, AwsAccount, AwsCdkProjectOptions, AwsDeploymentTargetOptions, AwsLocalDeploymentConfig, AwsOrganization, AwsRegion, AwsTeardownWorkflowOptions, CiDeploymentConfig, ClassTypeOptions, ClaudeAutoModeConfig, ClaudeHookAction, ClaudeHookEntry, ClaudeHooksConfig, ClaudePermissionsConfig, ClaudeRuleTarget, ClaudeSandboxConfig, ClaudeSettingsConfig, CopilotHandoff, CursorHookAction, CursorHooksConfig, CursorSettingsConfig, DeployWorkflowOptions, DeploymentMetadata, GitBranch, GitHubBoardMetadata, GitHubProjectMetadata, GitHubSprintMetadata, IDependencyResolver, LabelDefinition, LayoutEnforcement, LayoutViolation, McpServerConfig, McpTransport, MergeMethod, MonorepoLayoutRoot, MonorepoProjectOptions, OrganizationMetadata, PnpmWorkspaceOptions, PriorityRule, ProjectMetadataOptions, RemoteCacheOptions, RepositoryMetadata, ResetTaskOptions, ResolvedAgentPaths, ResolvedProjectMetadata, SlackMetadata, StarlightEditLink, StarlightLogo, StarlightProjectOptions, StarlightRole, StarlightSidebarItem, StarlightSingletonViolation, StarlightSocialLink, SyncLabelsOptions, TemplateResolveResult, TurboRepoOptions, TurboRepoTaskOptions, TypeScriptProjectOptions, VersionKey, VitestConfigOptions, VitestOptions };