bmad-method 6.12.3-next.1 → 6.12.3
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/.claude-plugin/marketplace.json +1 -1
- package/bmad-modules.yaml +3 -3
- package/package.json +1 -1
- package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc +0 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/__pycache__/test_sprint_plan.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/scripts/__pycache__/config_utils.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_config_utils.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_config.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-311.pyc +0 -0
- package/tools/installer/ui.js +8 -45
- package/tools/tests/__pycache__/test_validate_skills.cpython-311.pyc +0 -0
- package/pr2.md +0 -11
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"displayName": "BMad Method Analyze Plan Build",
|
|
15
15
|
"source": "./",
|
|
16
16
|
"description": "Full-lifecycle AI development framework — agents and workflows for product analysis, planning, architecture, and implementation.",
|
|
17
|
-
"version": "6.12.
|
|
17
|
+
"version": "6.12.3",
|
|
18
18
|
"author": {
|
|
19
19
|
"name": "Brian (BMad) Madison"
|
|
20
20
|
},
|
package/bmad-modules.yaml
CHANGED
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
# Omit to inherit the installer's hardcoded default (stable).
|
|
10
10
|
#
|
|
11
11
|
# pin (optional) — a git tag to install instead of the channel. Use it when
|
|
12
|
-
# newer releases no longer work with this installer. The
|
|
13
|
-
#
|
|
14
|
-
#
|
|
12
|
+
# newer releases no longer work with this installer. The pin is the default for
|
|
13
|
+
# every module that gets no explicit choice. --pin, --next=CODE and a stable or
|
|
14
|
+
# next pick in the interactive picker override it; --channel and --all-* do not.
|
|
15
15
|
#
|
|
16
16
|
# deprecated (optional, default false) — when true, the module is hidden from
|
|
17
17
|
# the installer picker UNLESS it is already installed (so existing users can
|
package/package.json
CHANGED
package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc
CHANGED
|
Binary file
|
|
Binary file
|
package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/tools/installer/ui.js
CHANGED
|
@@ -1931,6 +1931,12 @@ class UI {
|
|
|
1931
1931
|
* Mutates channelOptions.pins and channelOptions.nextSet to reflect picker choices.
|
|
1932
1932
|
*/
|
|
1933
1933
|
async _interactiveChannelGate({ options, channelOptions, selectedModules }) {
|
|
1934
|
+
if (options.yes) return;
|
|
1935
|
+
// If the user already declared their channel intent via flags, trust them
|
|
1936
|
+
// and skip the gate.
|
|
1937
|
+
const haveFlagIntent = channelOptions.global || channelOptions.nextSet.size > 0 || channelOptions.pins.size > 0;
|
|
1938
|
+
if (haveFlagIntent) return;
|
|
1939
|
+
|
|
1934
1940
|
// Figure out which selected modules actually get a channel (externals only).
|
|
1935
1941
|
// Bundled core/bmm and custom modules skip the picker.
|
|
1936
1942
|
const externalManager = new ExternalModuleManager();
|
|
@@ -1943,20 +1949,6 @@ class UI {
|
|
|
1943
1949
|
});
|
|
1944
1950
|
if (channelSelectable.length === 0) return;
|
|
1945
1951
|
|
|
1946
|
-
// A registry pin marks the newest version this installer can install.
|
|
1947
|
-
// Offering stable or next there leads to a failed install, so say what is
|
|
1948
|
-
// pinned (headless installs included) and skip the picker for those modules.
|
|
1949
|
-
await this._announcePinnedModules(channelSelectable, externalByCode, channelOptions);
|
|
1950
|
-
|
|
1951
|
-
if (options.yes) return;
|
|
1952
|
-
// If the user already declared their channel intent via flags, trust them
|
|
1953
|
-
// and skip the gate.
|
|
1954
|
-
const haveFlagIntent = channelOptions.global || channelOptions.nextSet.size > 0 || channelOptions.pins.size > 0;
|
|
1955
|
-
if (haveFlagIntent) return;
|
|
1956
|
-
|
|
1957
|
-
const choosable = channelSelectable.filter((code) => !externalByCode.get(code).pin);
|
|
1958
|
-
if (choosable.length === 0) return;
|
|
1959
|
-
|
|
1960
1952
|
const fastPath = await prompts.confirm({
|
|
1961
1953
|
message: `Ready to install (all stable)? Pick "n" to customize channels or pin versions.`,
|
|
1962
1954
|
default: true,
|
|
@@ -1966,7 +1958,7 @@ class UI {
|
|
|
1966
1958
|
// Customize path: per-module picker.
|
|
1967
1959
|
const { fetchStableTags, parseGitHubRepo } = require('./modules/channel-resolver');
|
|
1968
1960
|
|
|
1969
|
-
for (const code of
|
|
1961
|
+
for (const code of channelSelectable) {
|
|
1970
1962
|
const info = externalByCode.get(code);
|
|
1971
1963
|
const repoUrl = info.url;
|
|
1972
1964
|
|
|
@@ -2009,22 +2001,6 @@ class UI {
|
|
|
2009
2001
|
}
|
|
2010
2002
|
}
|
|
2011
2003
|
|
|
2012
|
-
/**
|
|
2013
|
-
* Tell the user which selected modules sit on a registry pin and how to get a
|
|
2014
|
-
* newer version. Skips a module whose version the user set with --pin/--next.
|
|
2015
|
-
*/
|
|
2016
|
-
async _announcePinnedModules(codes, externalByCode, channelOptions) {
|
|
2017
|
-
const { parseGitHubRepo } = require('./modules/channel-resolver');
|
|
2018
|
-
for (const code of codes) {
|
|
2019
|
-
const info = externalByCode.get(code);
|
|
2020
|
-
if (!info || !info.pin || info.builtIn) continue;
|
|
2021
|
-
if (channelOptions.pins.has(code) || channelOptions.nextSet.has(code)) continue;
|
|
2022
|
-
const repo = info.url ? parseGitHubRepo(info.url) : null;
|
|
2023
|
-
const where = repo ? ` Newer versions need the v7 installer: npx skills add ${repo.owner}/${repo.repo}` : '';
|
|
2024
|
-
await prompts.log.info(`${code} is pinned to ${info.pin}.${where}`);
|
|
2025
|
-
}
|
|
2026
|
-
}
|
|
2027
|
-
|
|
2028
2004
|
/**
|
|
2029
2005
|
* Resolve channel decisions for an update over an existing install.
|
|
2030
2006
|
*
|
|
@@ -2067,7 +2043,7 @@ class UI {
|
|
|
2067
2043
|
const prev = existingByName.get(code);
|
|
2068
2044
|
if (!prev) return false;
|
|
2069
2045
|
const info = externalByCode.get(code);
|
|
2070
|
-
return info && !info.builtIn
|
|
2046
|
+
return info && !info.builtIn;
|
|
2071
2047
|
});
|
|
2072
2048
|
if (existingWithChannel.length > 0) {
|
|
2073
2049
|
reviewChannels = await prompts.confirm({
|
|
@@ -2087,19 +2063,6 @@ class UI {
|
|
|
2087
2063
|
// their version is stapled to the CLI version, not a git tag. Skip
|
|
2088
2064
|
// tag-API lookups for them; the "upgrade" mechanism is `npx bmad@X install`.
|
|
2089
2065
|
if (info.builtIn) continue;
|
|
2090
|
-
// A registry-pinned module stays on its pin; the channel logic below would
|
|
2091
|
-
// move it to a version this installer cannot install. A version the user
|
|
2092
|
-
// pinned earlier is kept.
|
|
2093
|
-
if (info.pin) {
|
|
2094
|
-
const decided = channelOptions.global || channelOptions.nextSet.has(code) || channelOptions.pins.has(code);
|
|
2095
|
-
const keepsOwnPin = !decided && prev.channel === 'pinned' && prev.version && prev.version !== info.pin;
|
|
2096
|
-
if (keepsOwnPin) {
|
|
2097
|
-
channelOptions.pins.set(code, prev.version);
|
|
2098
|
-
} else {
|
|
2099
|
-
await this._announcePinnedModules([code], externalByCode, channelOptions);
|
|
2100
|
-
}
|
|
2101
|
-
continue;
|
|
2102
|
-
}
|
|
2103
2066
|
|
|
2104
2067
|
const repoUrl = info.url;
|
|
2105
2068
|
const parsed = repoUrl ? parseGitHubRepo(repoUrl) : null;
|
|
Binary file
|
package/pr2.md
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
On 6.12.3 the TEA channel picker offers stable, which resolves to v3.0.2.
|
|
2
|
-
The install then fails with `Expected 'src/module.yaml' to exist in version v3.0.2`, because TEA v2+ uses the v7 layout.
|
|
3
|
-
|
|
4
|
-
A module with a registry `pin` now skips the picker, in both the install and update flows.
|
|
5
|
-
The installer prints `tea is pinned to v1.27.2. Newer versions need the v7 installer: npx skills add bmad-code-org/bmad-method-test-architecture-enterprise`.
|
|
6
|
-
Unpinned modules keep the stable and pin choices.
|
|
7
|
-
`--pin CODE=TAG` still overrides a registry pin.
|
|
8
|
-
|
|
9
|
-
Tests drive the install and update flows with a pinned and an unpinned module.
|
|
10
|
-
They fail without the change and pass with it.
|
|
11
|
-
`npm run quality` passes.
|