bmad-method 6.3.1-next.4 → 6.3.1-next.5
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/package.json +1 -1
- package/src/core-skills/module.yaml +1 -0
- package/tools/installer/ui.js +44 -11
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
code: core
|
|
2
2
|
name: "BMad Core Module"
|
|
3
|
+
description: "Core configuration and shared resources"
|
|
3
4
|
|
|
4
5
|
header: "BMad Core Configuration"
|
|
5
6
|
subheader: "Configure the core settings for your BMad installation.\nThese settings will be used across all installed bmad skills, workflows, and agents."
|
package/tools/installer/ui.js
CHANGED
|
@@ -598,7 +598,7 @@ class UI {
|
|
|
598
598
|
const officialCodes = new Set(officialSelected);
|
|
599
599
|
const externalManager = new ExternalModuleManager();
|
|
600
600
|
const registryModules = await externalManager.listAvailable();
|
|
601
|
-
const officialRegistryCodes = new Set(registryModules.map((m) => m.code));
|
|
601
|
+
const officialRegistryCodes = new Set(['core', 'bmm', ...registryModules.map((m) => m.code)]);
|
|
602
602
|
const installedNonOfficial = [...installedModuleIds].filter((id) => !officialRegistryCodes.has(id));
|
|
603
603
|
|
|
604
604
|
// Phase 2: Community modules (category drill-down)
|
|
@@ -630,6 +630,11 @@ class UI {
|
|
|
630
630
|
* @returns {Array} Selected official module codes
|
|
631
631
|
*/
|
|
632
632
|
async _selectOfficialModules(installedModuleIds = new Set()) {
|
|
633
|
+
// Built-in modules (core, bmm) come from local source, not the registry
|
|
634
|
+
const { OfficialModules } = require('./modules/official-modules');
|
|
635
|
+
const builtInModules = (await new OfficialModules().listAvailable()).modules || [];
|
|
636
|
+
|
|
637
|
+
// External modules come from the registry (with fallback)
|
|
633
638
|
const externalManager = new ExternalModuleManager();
|
|
634
639
|
const registryModules = await externalManager.listAvailable();
|
|
635
640
|
|
|
@@ -637,20 +642,34 @@ class UI {
|
|
|
637
642
|
const initialValues = [];
|
|
638
643
|
const lockedValues = ['core'];
|
|
639
644
|
|
|
640
|
-
const buildModuleEntry = async (
|
|
641
|
-
const isInstalled = installedModuleIds.has(
|
|
642
|
-
const version = await getMarketplaceVersion(
|
|
643
|
-
const label = version ? `${
|
|
645
|
+
const buildModuleEntry = async (code, name, description, isDefault) => {
|
|
646
|
+
const isInstalled = installedModuleIds.has(code);
|
|
647
|
+
const version = await getMarketplaceVersion(code);
|
|
648
|
+
const label = version ? `${name} (v${version})` : name;
|
|
644
649
|
return {
|
|
645
650
|
label,
|
|
646
|
-
value:
|
|
647
|
-
hint:
|
|
648
|
-
selected: isInstalled,
|
|
651
|
+
value: code,
|
|
652
|
+
hint: description,
|
|
653
|
+
selected: isInstalled || isDefault,
|
|
649
654
|
};
|
|
650
655
|
};
|
|
651
656
|
|
|
657
|
+
// Add built-in modules first (always available regardless of network)
|
|
658
|
+
const builtInCodes = new Set();
|
|
659
|
+
for (const mod of builtInModules) {
|
|
660
|
+
const code = mod.id;
|
|
661
|
+
builtInCodes.add(code);
|
|
662
|
+
const entry = await buildModuleEntry(code, mod.name, mod.description, mod.defaultSelected);
|
|
663
|
+
allOptions.push({ label: entry.label, value: entry.value, hint: entry.hint });
|
|
664
|
+
if (entry.selected) {
|
|
665
|
+
initialValues.push(code);
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
// Add external registry modules (skip built-in duplicates)
|
|
652
670
|
for (const mod of registryModules) {
|
|
653
|
-
|
|
671
|
+
if (mod.builtIn || builtInCodes.has(mod.code)) continue;
|
|
672
|
+
const entry = await buildModuleEntry(mod.code, mod.name, mod.description, mod.defaultSelected);
|
|
654
673
|
allOptions.push({ label: entry.label, value: entry.value, hint: entry.hint });
|
|
655
674
|
if (entry.selected) {
|
|
656
675
|
initialValues.push(mod.code);
|
|
@@ -1122,12 +1141,26 @@ class UI {
|
|
|
1122
1141
|
* @returns {Array} Default module codes
|
|
1123
1142
|
*/
|
|
1124
1143
|
async getDefaultModules(installedModuleIds = new Set()) {
|
|
1125
|
-
|
|
1126
|
-
const
|
|
1144
|
+
// Built-in modules with default_selected come from local source
|
|
1145
|
+
const { OfficialModules } = require('./modules/official-modules');
|
|
1146
|
+
const builtInModules = (await new OfficialModules().listAvailable()).modules || [];
|
|
1127
1147
|
|
|
1128
1148
|
const defaultModules = [];
|
|
1149
|
+
const seen = new Set();
|
|
1150
|
+
|
|
1151
|
+
for (const mod of builtInModules) {
|
|
1152
|
+
if (mod.defaultSelected || installedModuleIds.has(mod.id)) {
|
|
1153
|
+
defaultModules.push(mod.id);
|
|
1154
|
+
seen.add(mod.id);
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
// Add external registry defaults
|
|
1159
|
+
const externalManager = new ExternalModuleManager();
|
|
1160
|
+
const registryModules = await externalManager.listAvailable();
|
|
1129
1161
|
|
|
1130
1162
|
for (const mod of registryModules) {
|
|
1163
|
+
if (mod.builtIn || seen.has(mod.code)) continue;
|
|
1131
1164
|
if (mod.defaultSelected || installedModuleIds.has(mod.code)) {
|
|
1132
1165
|
defaultModules.push(mod.code);
|
|
1133
1166
|
}
|