@codedrifters/configulator 0.0.294 → 0.0.296
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 +129 -12
- package/lib/index.d.ts +130 -13
- package/lib/index.js +292 -25
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +286 -25
- package/lib/index.mjs.map +1 -1
- package/package.json +3 -3
package/lib/index.js
CHANGED
|
@@ -195,6 +195,7 @@ __export(index_exports, {
|
|
|
195
195
|
AwsDeploymentTarget: () => AwsDeploymentTarget,
|
|
196
196
|
AwsTeardownWorkflow: () => AwsTeardownWorkflow,
|
|
197
197
|
BUILT_IN_BUNDLES: () => BUILT_IN_BUNDLES,
|
|
198
|
+
BUNDLE_OWNERSHIP: () => BUNDLE_OWNERSHIP,
|
|
198
199
|
CLAUDE_RULE_TARGET: () => CLAUDE_RULE_TARGET,
|
|
199
200
|
COMPLETE_JOB_ID: () => COMPLETE_JOB_ID,
|
|
200
201
|
DEFAULT_AC_THRESHOLDS: () => DEFAULT_AC_THRESHOLDS,
|
|
@@ -338,7 +339,12 @@ __export(index_exports, {
|
|
|
338
339
|
formatStarlightSingletonViolation: () => formatStarlightSingletonViolation,
|
|
339
340
|
getLatestEligibleVersion: () => getLatestEligibleVersion,
|
|
340
341
|
githubWorkflowBundle: () => githubWorkflowBundle,
|
|
342
|
+
hasAnyDocsEmittingBundle: () => hasAnyDocsEmittingBundle,
|
|
343
|
+
hasAnyDownstreamIssueKindBundle: () => hasAnyDownstreamIssueKindBundle,
|
|
341
344
|
industryDiscoveryBundle: () => industryDiscoveryBundle,
|
|
345
|
+
isPhaseLabelOwnedByExcluded: () => isPhaseLabelOwnedByExcluded,
|
|
346
|
+
isScheduledTaskOwnedByExcluded: () => isScheduledTaskOwnedByExcluded,
|
|
347
|
+
isTypeLabelOwnedByExcluded: () => isTypeLabelOwnedByExcluded,
|
|
342
348
|
jestBundle: () => jestBundle,
|
|
343
349
|
labelsForPhase: () => labelsForPhase,
|
|
344
350
|
maintenanceAuditBundle: () => maintenanceAuditBundle,
|
|
@@ -1404,8 +1410,8 @@ function resolveIssueTemplates(config) {
|
|
|
1404
1410
|
function validateIssueTemplatesConfig(config) {
|
|
1405
1411
|
return resolveIssueTemplates(config);
|
|
1406
1412
|
}
|
|
1407
|
-
function renderIssueTemplatesRuleContent(it) {
|
|
1408
|
-
if (!it.enabled) {
|
|
1413
|
+
function renderIssueTemplatesRuleContent(it, hasDownstreamBundles = true) {
|
|
1414
|
+
if (!it.enabled || !hasDownstreamBundles) {
|
|
1409
1415
|
return [
|
|
1410
1416
|
"# Issue Templates",
|
|
1411
1417
|
"",
|
|
@@ -11555,6 +11561,238 @@ function assertValidStateFilePath(stateFilePath) {
|
|
|
11555
11561
|
}
|
|
11556
11562
|
}
|
|
11557
11563
|
|
|
11564
|
+
// src/agent/bundles/bundle-ownership.ts
|
|
11565
|
+
var BUNDLE_OWNERSHIP = {
|
|
11566
|
+
agenda: {
|
|
11567
|
+
typeLabels: ["agenda"],
|
|
11568
|
+
phaseLabelPrefixes: ["agenda:"],
|
|
11569
|
+
scheduledTaskIds: ["worker-agenda"],
|
|
11570
|
+
emitsDocs: true,
|
|
11571
|
+
downstreamIssueKinds: true
|
|
11572
|
+
},
|
|
11573
|
+
"bcm-writer": {
|
|
11574
|
+
typeLabels: ["bcm-document"],
|
|
11575
|
+
phaseLabelPrefixes: ["bcm:"],
|
|
11576
|
+
scheduledTaskIds: ["worker-bcm-writer"],
|
|
11577
|
+
emitsDocs: true,
|
|
11578
|
+
downstreamIssueKinds: true
|
|
11579
|
+
},
|
|
11580
|
+
"business-models": {
|
|
11581
|
+
typeLabels: ["business-model"],
|
|
11582
|
+
phaseLabelPrefixes: ["business-models:"],
|
|
11583
|
+
scheduledTaskIds: ["worker-business-models"],
|
|
11584
|
+
emitsDocs: true,
|
|
11585
|
+
downstreamIssueKinds: true
|
|
11586
|
+
},
|
|
11587
|
+
"company-profile": {
|
|
11588
|
+
typeLabels: ["company-profile"],
|
|
11589
|
+
phaseLabelPrefixes: ["company:"],
|
|
11590
|
+
scheduledTaskIds: ["worker-company-profile"],
|
|
11591
|
+
emitsDocs: true,
|
|
11592
|
+
downstreamIssueKinds: true
|
|
11593
|
+
},
|
|
11594
|
+
"customer-profile": {
|
|
11595
|
+
typeLabels: ["customer-profile"],
|
|
11596
|
+
phaseLabelPrefixes: ["customer:"],
|
|
11597
|
+
scheduledTaskIds: ["worker-customer-profile"],
|
|
11598
|
+
emitsDocs: true,
|
|
11599
|
+
downstreamIssueKinds: true
|
|
11600
|
+
},
|
|
11601
|
+
"docs-sync": {
|
|
11602
|
+
typeLabels: ["docs-sync"],
|
|
11603
|
+
phaseLabelPrefixes: ["docs-sync:"],
|
|
11604
|
+
scheduledTaskIds: ["worker-docs-sync"],
|
|
11605
|
+
emitsDocs: true,
|
|
11606
|
+
downstreamIssueKinds: true
|
|
11607
|
+
},
|
|
11608
|
+
"industry-discovery": {
|
|
11609
|
+
typeLabels: ["industry-discovery"],
|
|
11610
|
+
phaseLabelPrefixes: ["industry:"],
|
|
11611
|
+
scheduledTaskIds: ["worker-industry-discovery"],
|
|
11612
|
+
emitsDocs: true,
|
|
11613
|
+
downstreamIssueKinds: true
|
|
11614
|
+
},
|
|
11615
|
+
"maintenance-audit": {
|
|
11616
|
+
typeLabels: ["maintenance"],
|
|
11617
|
+
phaseLabelPrefixes: ["maint:"],
|
|
11618
|
+
scheduledTaskIds: ["worker-maintenance"],
|
|
11619
|
+
emitsDocs: false,
|
|
11620
|
+
downstreamIssueKinds: true
|
|
11621
|
+
},
|
|
11622
|
+
"meeting-analysis": {
|
|
11623
|
+
typeLabels: ["meeting-processing"],
|
|
11624
|
+
phaseLabelPrefixes: ["meeting:"],
|
|
11625
|
+
scheduledTaskIds: ["worker-meeting-analysis"],
|
|
11626
|
+
emitsDocs: true,
|
|
11627
|
+
downstreamIssueKinds: true
|
|
11628
|
+
},
|
|
11629
|
+
orchestrator: {
|
|
11630
|
+
// The orchestrator pipeline manager itself ships with the
|
|
11631
|
+
// `worker-orchestrator` scheduled task. It owns no `type:*` label
|
|
11632
|
+
// (it dispatches every type) and no phase-label prefix.
|
|
11633
|
+
typeLabels: [],
|
|
11634
|
+
phaseLabelPrefixes: [],
|
|
11635
|
+
scheduledTaskIds: ["worker-orchestrator"],
|
|
11636
|
+
emitsDocs: false,
|
|
11637
|
+
downstreamIssueKinds: false
|
|
11638
|
+
},
|
|
11639
|
+
"people-profile": {
|
|
11640
|
+
typeLabels: ["people-profile"],
|
|
11641
|
+
phaseLabelPrefixes: ["people:"],
|
|
11642
|
+
scheduledTaskIds: ["worker-people-profile"],
|
|
11643
|
+
emitsDocs: true,
|
|
11644
|
+
downstreamIssueKinds: true
|
|
11645
|
+
},
|
|
11646
|
+
"pr-review": {
|
|
11647
|
+
typeLabels: ["pr-review"],
|
|
11648
|
+
phaseLabelPrefixes: [],
|
|
11649
|
+
scheduledTaskIds: ["worker-pr-review"],
|
|
11650
|
+
emitsDocs: false,
|
|
11651
|
+
downstreamIssueKinds: false
|
|
11652
|
+
},
|
|
11653
|
+
"regulatory-research": {
|
|
11654
|
+
typeLabels: ["regulatory-research"],
|
|
11655
|
+
phaseLabelPrefixes: ["regulatory:"],
|
|
11656
|
+
scheduledTaskIds: ["worker-regulatory-research"],
|
|
11657
|
+
emitsDocs: true,
|
|
11658
|
+
downstreamIssueKinds: true
|
|
11659
|
+
},
|
|
11660
|
+
"requirements-analyst": {
|
|
11661
|
+
typeLabels: ["requirement"],
|
|
11662
|
+
phaseLabelPrefixes: ["req:"],
|
|
11663
|
+
scheduledTaskIds: ["worker-requirements-analyst"],
|
|
11664
|
+
emitsDocs: true,
|
|
11665
|
+
downstreamIssueKinds: true
|
|
11666
|
+
},
|
|
11667
|
+
"requirements-reviewer": {
|
|
11668
|
+
// Co-owns `type:requirement` with the analyst and writer; owns
|
|
11669
|
+
// the `req:review` and `req:deprecate` phase labels exactly.
|
|
11670
|
+
typeLabels: ["requirement"],
|
|
11671
|
+
phaseLabelPrefixes: ["req:review", "req:deprecate"],
|
|
11672
|
+
scheduledTaskIds: ["worker-requirements-reviewer"],
|
|
11673
|
+
emitsDocs: true,
|
|
11674
|
+
downstreamIssueKinds: true
|
|
11675
|
+
},
|
|
11676
|
+
"requirements-writer": {
|
|
11677
|
+
// Co-owns `type:requirement` with the analyst and reviewer; owns
|
|
11678
|
+
// the `req:write` phase label exactly.
|
|
11679
|
+
typeLabels: ["requirement"],
|
|
11680
|
+
phaseLabelPrefixes: ["req:write"],
|
|
11681
|
+
scheduledTaskIds: ["worker-requirements-writer"],
|
|
11682
|
+
emitsDocs: true,
|
|
11683
|
+
downstreamIssueKinds: true
|
|
11684
|
+
},
|
|
11685
|
+
"research-pipeline": {
|
|
11686
|
+
typeLabels: ["research"],
|
|
11687
|
+
phaseLabelPrefixes: ["research:"],
|
|
11688
|
+
scheduledTaskIds: ["worker-research"],
|
|
11689
|
+
emitsDocs: true,
|
|
11690
|
+
downstreamIssueKinds: true
|
|
11691
|
+
},
|
|
11692
|
+
"software-profile": {
|
|
11693
|
+
typeLabels: ["software-profile"],
|
|
11694
|
+
phaseLabelPrefixes: ["software:"],
|
|
11695
|
+
scheduledTaskIds: ["worker-software-profile"],
|
|
11696
|
+
emitsDocs: true,
|
|
11697
|
+
downstreamIssueKinds: true
|
|
11698
|
+
},
|
|
11699
|
+
"standards-research": {
|
|
11700
|
+
typeLabels: ["standards-research"],
|
|
11701
|
+
phaseLabelPrefixes: ["standards:"],
|
|
11702
|
+
scheduledTaskIds: ["worker-standards-research"],
|
|
11703
|
+
emitsDocs: true,
|
|
11704
|
+
downstreamIssueKinds: true
|
|
11705
|
+
}
|
|
11706
|
+
};
|
|
11707
|
+
function isTypeLabelOwnedByExcluded(typeLabel, excludedBundles) {
|
|
11708
|
+
if (excludedBundles.length === 0) {
|
|
11709
|
+
return false;
|
|
11710
|
+
}
|
|
11711
|
+
for (const bundleName of excludedBundles) {
|
|
11712
|
+
const ownership = BUNDLE_OWNERSHIP[bundleName];
|
|
11713
|
+
if (!ownership) {
|
|
11714
|
+
continue;
|
|
11715
|
+
}
|
|
11716
|
+
if (ownership.typeLabels.includes(typeLabel)) {
|
|
11717
|
+
const owners = findOwnersOfTypeLabel(typeLabel);
|
|
11718
|
+
const allExcluded = owners.every(
|
|
11719
|
+
(owner) => excludedBundles.includes(owner)
|
|
11720
|
+
);
|
|
11721
|
+
if (allExcluded) {
|
|
11722
|
+
return true;
|
|
11723
|
+
}
|
|
11724
|
+
}
|
|
11725
|
+
}
|
|
11726
|
+
return false;
|
|
11727
|
+
}
|
|
11728
|
+
function isPhaseLabelOwnedByExcluded(phaseLabel, excludedBundles) {
|
|
11729
|
+
if (excludedBundles.length === 0) {
|
|
11730
|
+
return false;
|
|
11731
|
+
}
|
|
11732
|
+
for (const bundleName of excludedBundles) {
|
|
11733
|
+
const ownership = BUNDLE_OWNERSHIP[bundleName];
|
|
11734
|
+
if (!ownership) {
|
|
11735
|
+
continue;
|
|
11736
|
+
}
|
|
11737
|
+
for (const entry of ownership.phaseLabelPrefixes) {
|
|
11738
|
+
if (entry.endsWith(":")) {
|
|
11739
|
+
if (phaseLabel.startsWith(entry)) {
|
|
11740
|
+
return true;
|
|
11741
|
+
}
|
|
11742
|
+
} else if (phaseLabel === entry) {
|
|
11743
|
+
return true;
|
|
11744
|
+
}
|
|
11745
|
+
}
|
|
11746
|
+
}
|
|
11747
|
+
return false;
|
|
11748
|
+
}
|
|
11749
|
+
function isScheduledTaskOwnedByExcluded(taskId, excludedBundles) {
|
|
11750
|
+
if (excludedBundles.length === 0) {
|
|
11751
|
+
return false;
|
|
11752
|
+
}
|
|
11753
|
+
for (const bundleName of excludedBundles) {
|
|
11754
|
+
const ownership = BUNDLE_OWNERSHIP[bundleName];
|
|
11755
|
+
if (!ownership) {
|
|
11756
|
+
continue;
|
|
11757
|
+
}
|
|
11758
|
+
if (ownership.scheduledTaskIds.includes(taskId)) {
|
|
11759
|
+
return true;
|
|
11760
|
+
}
|
|
11761
|
+
}
|
|
11762
|
+
return false;
|
|
11763
|
+
}
|
|
11764
|
+
function hasAnyDocsEmittingBundle(excludedBundles) {
|
|
11765
|
+
for (const [bundleName, ownership] of Object.entries(BUNDLE_OWNERSHIP)) {
|
|
11766
|
+
if (!ownership.emitsDocs) {
|
|
11767
|
+
continue;
|
|
11768
|
+
}
|
|
11769
|
+
if (!excludedBundles.includes(bundleName)) {
|
|
11770
|
+
return true;
|
|
11771
|
+
}
|
|
11772
|
+
}
|
|
11773
|
+
return false;
|
|
11774
|
+
}
|
|
11775
|
+
function hasAnyDownstreamIssueKindBundle(excludedBundles) {
|
|
11776
|
+
for (const [bundleName, ownership] of Object.entries(BUNDLE_OWNERSHIP)) {
|
|
11777
|
+
if (!ownership.downstreamIssueKinds) {
|
|
11778
|
+
continue;
|
|
11779
|
+
}
|
|
11780
|
+
if (!excludedBundles.includes(bundleName)) {
|
|
11781
|
+
return true;
|
|
11782
|
+
}
|
|
11783
|
+
}
|
|
11784
|
+
return false;
|
|
11785
|
+
}
|
|
11786
|
+
function findOwnersOfTypeLabel(typeLabel) {
|
|
11787
|
+
const owners = [];
|
|
11788
|
+
for (const [bundleName, ownership] of Object.entries(BUNDLE_OWNERSHIP)) {
|
|
11789
|
+
if (ownership.typeLabels.includes(typeLabel)) {
|
|
11790
|
+
owners.push(bundleName);
|
|
11791
|
+
}
|
|
11792
|
+
}
|
|
11793
|
+
return owners;
|
|
11794
|
+
}
|
|
11795
|
+
|
|
11558
11796
|
// src/agent/bundles/scheduled-tasks.ts
|
|
11559
11797
|
var SCHEDULED_TASK_MODEL_VALUES = ["opus", "sonnet", "haiku"];
|
|
11560
11798
|
var SCHEDULED_TASK_KIND_VALUES = ["issue-worker", "pipeline"];
|
|
@@ -11819,17 +12057,23 @@ var DEFAULT_SCHEDULED_TASK_ENTRIES = [
|
|
|
11819
12057
|
description: "Documentation-sync drift-detection and audit pipeline (scaffolding release \u2014 behavior carried by downstream child issues of the parent docs-sync epic)."
|
|
11820
12058
|
}
|
|
11821
12059
|
];
|
|
11822
|
-
function resolveScheduledTasks(config) {
|
|
12060
|
+
function resolveScheduledTasks(config, excludeBundles = []) {
|
|
11823
12061
|
const root = config?.root ?? DEFAULT_SCHEDULED_TASKS_ROOT;
|
|
11824
12062
|
assertValidRoot(root);
|
|
11825
12063
|
const merged = /* @__PURE__ */ new Map();
|
|
11826
12064
|
for (const entry of DEFAULT_SCHEDULED_TASK_ENTRIES) {
|
|
12065
|
+
if (isScheduledTaskOwnedByExcluded(entry.taskId, excludeBundles)) {
|
|
12066
|
+
continue;
|
|
12067
|
+
}
|
|
11827
12068
|
merged.set(entry.taskId, entry);
|
|
11828
12069
|
}
|
|
11829
12070
|
if (config?.overrides) {
|
|
11830
12071
|
for (const [taskId, override] of Object.entries(config.overrides)) {
|
|
11831
12072
|
const existing = merged.get(taskId);
|
|
11832
12073
|
if (!existing) {
|
|
12074
|
+
if (isScheduledTaskOwnedByExcluded(taskId, excludeBundles)) {
|
|
12075
|
+
continue;
|
|
12076
|
+
}
|
|
11833
12077
|
throw new Error(
|
|
11834
12078
|
`ScheduledTasksConfig.overrides references unknown taskId ${JSON.stringify(
|
|
11835
12079
|
taskId
|
|
@@ -11860,8 +12104,8 @@ function resolveScheduledTasks(config) {
|
|
|
11860
12104
|
tasks: [...merged.values()]
|
|
11861
12105
|
};
|
|
11862
12106
|
}
|
|
11863
|
-
function validateScheduledTasksConfig(config) {
|
|
11864
|
-
return resolveScheduledTasks(config);
|
|
12107
|
+
function validateScheduledTasksConfig(config, excludeBundles = []) {
|
|
12108
|
+
return resolveScheduledTasks(config, excludeBundles);
|
|
11865
12109
|
}
|
|
11866
12110
|
function renderScheduledTasksSection(resolved) {
|
|
11867
12111
|
const lines = [
|
|
@@ -12344,7 +12588,7 @@ function classifyIssueScope(body, gate, labels = []) {
|
|
|
12344
12588
|
matchedLabel: effective.matchedLabel
|
|
12345
12589
|
};
|
|
12346
12590
|
}
|
|
12347
|
-
function renderScopeGateSection(gate) {
|
|
12591
|
+
function renderScopeGateSection(gate, excludeBundles = []) {
|
|
12348
12592
|
const { acceptanceCriteria: ac, sources } = gate;
|
|
12349
12593
|
const lines = [
|
|
12350
12594
|
"## Scope gate",
|
|
@@ -12418,7 +12662,9 @@ function renderScopeGateSection(gate) {
|
|
|
12418
12662
|
" is in place."
|
|
12419
12663
|
);
|
|
12420
12664
|
}
|
|
12421
|
-
const overrideEntries = Object.entries(gate.bundleOverrides)
|
|
12665
|
+
const overrideEntries = Object.entries(gate.bundleOverrides).filter(
|
|
12666
|
+
([label]) => !isPhaseLabelOwnedByExcluded(label, excludeBundles)
|
|
12667
|
+
);
|
|
12422
12668
|
if (overrideEntries.length > 0) {
|
|
12423
12669
|
lines.push(
|
|
12424
12670
|
"",
|
|
@@ -12762,9 +13008,12 @@ function validateAgentTierConfig(config) {
|
|
|
12762
13008
|
}
|
|
12763
13009
|
return resolveAgentTiers(config);
|
|
12764
13010
|
}
|
|
12765
|
-
function renderAgentTierSection(tiers) {
|
|
13011
|
+
function renderAgentTierSection(tiers, excludeBundles = []) {
|
|
13012
|
+
const filtered = tiers.filter(
|
|
13013
|
+
(entry) => !isTypeLabelOwnedByExcluded(entry.type, excludeBundles)
|
|
13014
|
+
);
|
|
12766
13015
|
const grouped = /* @__PURE__ */ new Map();
|
|
12767
|
-
for (const entry of
|
|
13016
|
+
for (const entry of filtered) {
|
|
12768
13017
|
const bucket = grouped.get(entry.tier) ?? [];
|
|
12769
13018
|
bucket.push(entry);
|
|
12770
13019
|
grouped.set(entry.tier, bucket);
|
|
@@ -14495,13 +14744,13 @@ var ORCHESTRATOR_CONVENTIONS_PREAMBLE = [
|
|
|
14495
14744
|
"",
|
|
14496
14745
|
'Practical implication for scheduled-task wiring: the `worker-orchestrator` scheduled task\'s `SKILL.md` instructs the **scheduled-task session itself** to read `.claude/agents/orchestrator.md` and execute its phase pipeline in-session, then use the `Agent` tool to delegate the picked work item to `issue-worker` (depth-1). The scheduled task does **not** call `Agent(subagent_type: "orchestrator")` \u2014 that would put the orchestrator at depth-1 and break the chain.'
|
|
14497
14746
|
].join("\n");
|
|
14498
|
-
function buildOrchestratorConventionsContent(tiers, scopeGate = resolveScopeGate(), runRatio = resolveRunRatio(), scheduledTasks = resolveScheduledTasks(), unblockDependents = resolveUnblockDependents()) {
|
|
14747
|
+
function buildOrchestratorConventionsContent(tiers, scopeGate = resolveScopeGate(), runRatio = resolveRunRatio(), scheduledTasks = resolveScheduledTasks(), unblockDependents = resolveUnblockDependents(), excludeBundles = []) {
|
|
14499
14748
|
return [
|
|
14500
14749
|
ORCHESTRATOR_CONVENTIONS_PREAMBLE,
|
|
14501
14750
|
"",
|
|
14502
|
-
renderAgentTierSection(tiers),
|
|
14751
|
+
renderAgentTierSection(tiers, excludeBundles),
|
|
14503
14752
|
"",
|
|
14504
|
-
renderScopeGateSection(scopeGate),
|
|
14753
|
+
renderScopeGateSection(scopeGate, excludeBundles),
|
|
14505
14754
|
"",
|
|
14506
14755
|
renderRunRatioSection(runRatio),
|
|
14507
14756
|
"",
|
|
@@ -14510,11 +14759,14 @@ function buildOrchestratorConventionsContent(tiers, scopeGate = resolveScopeGate
|
|
|
14510
14759
|
renderUnblockDependentsSection(unblockDependents)
|
|
14511
14760
|
].join("\n");
|
|
14512
14761
|
}
|
|
14513
|
-
function resolveOrchestratorAssets(tierConfig, scopeGateConfig, runRatioConfig, scheduledTasksConfig, unblockDependentsConfig) {
|
|
14762
|
+
function resolveOrchestratorAssets(tierConfig, scopeGateConfig, runRatioConfig, scheduledTasksConfig, unblockDependentsConfig, excludeBundles = []) {
|
|
14514
14763
|
const tiers = resolveAgentTiers(tierConfig);
|
|
14515
14764
|
const scopeGate = resolveScopeGate(scopeGateConfig);
|
|
14516
14765
|
const runRatio = resolveRunRatio(runRatioConfig);
|
|
14517
|
-
const scheduledTasks = resolveScheduledTasks(
|
|
14766
|
+
const scheduledTasks = resolveScheduledTasks(
|
|
14767
|
+
scheduledTasksConfig,
|
|
14768
|
+
excludeBundles
|
|
14769
|
+
);
|
|
14518
14770
|
const unblockDependentsResolved = resolveUnblockDependents(
|
|
14519
14771
|
unblockDependentsConfig
|
|
14520
14772
|
);
|
|
@@ -14529,7 +14781,8 @@ function resolveOrchestratorAssets(tierConfig, scopeGateConfig, runRatioConfig,
|
|
|
14529
14781
|
scopeGate,
|
|
14530
14782
|
runRatio,
|
|
14531
14783
|
scheduledTasks,
|
|
14532
|
-
unblockDependentsResolved
|
|
14784
|
+
unblockDependentsResolved,
|
|
14785
|
+
excludeBundles
|
|
14533
14786
|
),
|
|
14534
14787
|
procedure: buildCheckBlockedProcedure(tiers, scopeGate, runRatio),
|
|
14535
14788
|
unblockDependentsProcedure: buildUnblockDependentsProcedure(
|
|
@@ -26805,7 +27058,7 @@ var VERSION = {
|
|
|
26805
27058
|
/**
|
|
26806
27059
|
* Version of Astro to pin for AstroProject scaffolding.
|
|
26807
27060
|
*/
|
|
26808
|
-
ASTRO_VERSION: "6.2.
|
|
27061
|
+
ASTRO_VERSION: "6.2.2",
|
|
26809
27062
|
/**
|
|
26810
27063
|
* CDK CLI for workflows and command line operations.
|
|
26811
27064
|
*
|
|
@@ -26834,7 +27087,7 @@ var VERSION = {
|
|
|
26834
27087
|
/**
|
|
26835
27088
|
* Version of PNPM to use in workflows at github actions.
|
|
26836
27089
|
*/
|
|
26837
|
-
PNPM_VERSION: "10.33.
|
|
27090
|
+
PNPM_VERSION: "10.33.3",
|
|
26838
27091
|
/**
|
|
26839
27092
|
* Version of Projen to use.
|
|
26840
27093
|
*/
|
|
@@ -26852,11 +27105,11 @@ var VERSION = {
|
|
|
26852
27105
|
/**
|
|
26853
27106
|
* Version of @astrojs/starlight to pin for StarlightProject scaffolding.
|
|
26854
27107
|
*/
|
|
26855
|
-
STARLIGHT_VERSION: "0.38.
|
|
27108
|
+
STARLIGHT_VERSION: "0.38.5",
|
|
26856
27109
|
/**
|
|
26857
27110
|
* What version of the turborepo library should we use?
|
|
26858
27111
|
*/
|
|
26859
|
-
TURBO_VERSION: "2.9.
|
|
27112
|
+
TURBO_VERSION: "2.9.9",
|
|
26860
27113
|
/**
|
|
26861
27114
|
* Version of @types/node to use across all packages (pnpm catalog).
|
|
26862
27115
|
*/
|
|
@@ -28304,7 +28557,8 @@ var AgentConfig = class _AgentConfig extends import_projen8.Component {
|
|
|
28304
28557
|
this.project.gitignore.addPatterns(`/${resolvedProgressFiles.stateDir}/`);
|
|
28305
28558
|
}
|
|
28306
28559
|
const resolvedScheduledTasks = validateScheduledTasksConfig(
|
|
28307
|
-
this.options.scheduledTasks
|
|
28560
|
+
this.options.scheduledTasks,
|
|
28561
|
+
this.options.excludeBundles ?? []
|
|
28308
28562
|
);
|
|
28309
28563
|
if (resolvedScheduledTasks.enabled) {
|
|
28310
28564
|
for (const task of resolvedScheduledTasks.tasks) {
|
|
@@ -28512,7 +28766,8 @@ ${section}`
|
|
|
28512
28766
|
}
|
|
28513
28767
|
}
|
|
28514
28768
|
}
|
|
28515
|
-
|
|
28769
|
+
const excludedBundleNames = this.options.excludeBundles ?? [];
|
|
28770
|
+
if (this.options.tiers || this.options.scopeGate || this.options.runRatio || this.options.scheduledTasks || this.options.unblockDependents || excludedBundleNames.length > 0) {
|
|
28516
28771
|
const orchestratorRule = ruleMap.get("orchestrator-conventions");
|
|
28517
28772
|
if (orchestratorRule) {
|
|
28518
28773
|
const { conventionsContent } = resolveOrchestratorAssets(
|
|
@@ -28520,7 +28775,8 @@ ${section}`
|
|
|
28520
28775
|
this.options.scopeGate,
|
|
28521
28776
|
this.options.runRatio,
|
|
28522
28777
|
this.options.scheduledTasks,
|
|
28523
|
-
this.options.unblockDependents
|
|
28778
|
+
this.options.unblockDependents,
|
|
28779
|
+
excludedBundleNames
|
|
28524
28780
|
);
|
|
28525
28781
|
if (conventionsContent !== orchestratorRule.content) {
|
|
28526
28782
|
ruleMap.set("orchestrator-conventions", {
|
|
@@ -28653,11 +28909,13 @@ ${hook}`
|
|
|
28653
28909
|
const resolvedIssueTemplatesForRules = resolveIssueTemplates(
|
|
28654
28910
|
this.options.issueTemplates
|
|
28655
28911
|
);
|
|
28656
|
-
|
|
28912
|
+
const hasDownstreamBundles = hasAnyDownstreamIssueKindBundle(excludedBundleNames);
|
|
28913
|
+
if (this.options.issueTemplates || !hasDownstreamBundles) {
|
|
28657
28914
|
const issueTemplatesRule = ruleMap.get("issue-templates-convention");
|
|
28658
28915
|
if (issueTemplatesRule) {
|
|
28659
28916
|
const issueTemplatesContent = renderIssueTemplatesRuleContent(
|
|
28660
|
-
resolvedIssueTemplatesForRules
|
|
28917
|
+
resolvedIssueTemplatesForRules,
|
|
28918
|
+
hasDownstreamBundles
|
|
28661
28919
|
);
|
|
28662
28920
|
if (issueTemplatesContent !== issueTemplatesRule.content) {
|
|
28663
28921
|
ruleMap.set("issue-templates-convention", {
|
|
@@ -28667,7 +28925,10 @@ ${hook}`
|
|
|
28667
28925
|
}
|
|
28668
28926
|
}
|
|
28669
28927
|
}
|
|
28670
|
-
if (
|
|
28928
|
+
if (!hasAnyDocsEmittingBundle(excludedBundleNames)) {
|
|
28929
|
+
ruleMap.delete("stub-index-convention");
|
|
28930
|
+
}
|
|
28931
|
+
if (resolvedIssueTemplatesForRules.enabled && hasDownstreamBundles) {
|
|
28671
28932
|
for (const [ruleName, label] of ISSUE_TEMPLATES_BUNDLE_HOOKS) {
|
|
28672
28933
|
const existing = ruleMap.get(ruleName);
|
|
28673
28934
|
if (!existing) {
|
|
@@ -33157,6 +33418,7 @@ var TypeScriptConfig = class extends import_projen23.Component {
|
|
|
33157
33418
|
AwsDeploymentTarget,
|
|
33158
33419
|
AwsTeardownWorkflow,
|
|
33159
33420
|
BUILT_IN_BUNDLES,
|
|
33421
|
+
BUNDLE_OWNERSHIP,
|
|
33160
33422
|
CLAUDE_RULE_TARGET,
|
|
33161
33423
|
COMPLETE_JOB_ID,
|
|
33162
33424
|
DEFAULT_AC_THRESHOLDS,
|
|
@@ -33300,7 +33562,12 @@ var TypeScriptConfig = class extends import_projen23.Component {
|
|
|
33300
33562
|
formatStarlightSingletonViolation,
|
|
33301
33563
|
getLatestEligibleVersion,
|
|
33302
33564
|
githubWorkflowBundle,
|
|
33565
|
+
hasAnyDocsEmittingBundle,
|
|
33566
|
+
hasAnyDownstreamIssueKindBundle,
|
|
33303
33567
|
industryDiscoveryBundle,
|
|
33568
|
+
isPhaseLabelOwnedByExcluded,
|
|
33569
|
+
isScheduledTaskOwnedByExcluded,
|
|
33570
|
+
isTypeLabelOwnedByExcluded,
|
|
33304
33571
|
jestBundle,
|
|
33305
33572
|
labelsForPhase,
|
|
33306
33573
|
maintenanceAuditBundle,
|