fix: correct workflow command defaults and bmm document config paths

This commit is contained in:
Dicky Moore 2026-02-07 20:02:33 +00:00
parent 0b3023cdf5
commit 9b98cc1272
4 changed files with 54 additions and 4 deletions

View File

@ -7,7 +7,7 @@ author: "BMad"
parent_workflow: "{project-root}/_bmad/bmm/workflows/document-project/workflow.md" parent_workflow: "{project-root}/_bmad/bmm/workflows/document-project/workflow.md"
# Critical variables inherited from parent # Critical variables inherited from parent
config_source: "{project-root}/_bmad/bmb/config.yaml" config_source: "{project-root}/_bmad/bmm/config.yaml"
output_folder: "{config_source}:output_folder" output_folder: "{config_source}:output_folder"
user_name: "{config_source}:user_name" user_name: "{config_source}:user_name"
date: system-generated date: system-generated

View File

@ -7,7 +7,7 @@ author: "BMad"
parent_workflow: "{project-root}/_bmad/bmm/workflows/document-project/workflow.md" parent_workflow: "{project-root}/_bmad/bmm/workflows/document-project/workflow.md"
# Critical variables inherited from parent # Critical variables inherited from parent
config_source: "{project-root}/_bmad/bmb/config.yaml" config_source: "{project-root}/_bmad/bmm/config.yaml"
output_folder: "{config_source}:output_folder" output_folder: "{config_source}:output_folder"
user_name: "{config_source}:user_name" user_name: "{config_source}:user_name"
date: system-generated date: system-generated

View File

@ -15,6 +15,8 @@ const path = require('node:path');
const fs = require('fs-extra'); const fs = require('fs-extra');
const { YamlXmlBuilder } = require('../tools/cli/lib/yaml-xml-builder'); const { YamlXmlBuilder } = require('../tools/cli/lib/yaml-xml-builder');
const { ManifestGenerator } = require('../tools/cli/installers/lib/core/manifest-generator'); const { ManifestGenerator } = require('../tools/cli/installers/lib/core/manifest-generator');
const { WorkflowCommandGenerator } = require('../tools/cli/installers/lib/ide/shared/workflow-command-generator');
const { BMAD_FOLDER_NAME } = require('../tools/cli/installers/lib/ide/shared/path-utils');
// ANSI colors // ANSI colors
const colors = { const colors = {
@ -207,6 +209,24 @@ async function runTests() {
console.log(''); console.log('');
// ============================================================
// Test 4: Workflow Command Generator Defaults
// ============================================================
console.log(`${colors.yellow}Test Suite 4: Workflow Generator Defaults${colors.reset}\n`);
try {
const workflowGenerator = new WorkflowCommandGenerator();
assert(
workflowGenerator.bmadFolderName === BMAD_FOLDER_NAME,
'Workflow generator default BMAD folder matches shared constant',
`Expected "${BMAD_FOLDER_NAME}", got "${workflowGenerator.bmadFolderName}"`,
);
} catch (error) {
assert(false, 'Workflow generator default path is valid', error.message);
}
console.log('');
// ============================================================ // ============================================================
// Test 5: QA Agent Compilation // Test 5: QA Agent Compilation
// ============================================================ // ============================================================
@ -236,6 +256,36 @@ async function runTests() {
console.log(''); console.log('');
// ============================================================
// Test 9: Guard against incorrect module config references
// ============================================================
console.log(`${colors.yellow}Test Suite 9: BMM Config Reference Guard${colors.reset}\n`);
try {
const searchTargets = [path.join(projectRoot, 'src', 'bmm', 'workflows', 'document-project', 'workflows')];
const allowedExtensions = new Set(['.yaml', '.yml']);
const forbiddenRef = '{project-root}/_bmad/bmb/config.yaml';
const offenders = [];
const files = await collectFiles(searchTargets, allowedExtensions);
for (const fullPath of files) {
const content = await fs.readFile(fullPath, 'utf8');
if (content.includes(forbiddenRef)) {
offenders.push(path.relative(projectRoot, fullPath));
}
}
assert(
offenders.length === 0,
'No bmm workflow configs should reference _bmad/bmb/config.yaml',
offenders.length > 0 ? offenders.join(', ') : '',
);
} catch (error) {
assert(false, 'BMM config reference guard runs', error.message);
}
console.log('');
// ============================================================ // ============================================================
// Test 6: Guard against advanced-elicitation XML references // Test 6: Guard against advanced-elicitation XML references
// ============================================================ // ============================================================

View File

@ -2,13 +2,13 @@ const path = require('node:path');
const fs = require('fs-extra'); const fs = require('fs-extra');
const csv = require('csv-parse/sync'); const csv = require('csv-parse/sync');
const chalk = require('chalk'); const chalk = require('chalk');
const { toColonPath, toDashPath, customAgentColonName, customAgentDashName } = require('./path-utils'); const { toColonPath, toDashPath, customAgentColonName, customAgentDashName, BMAD_FOLDER_NAME } = require('./path-utils');
/** /**
* Generates command files for each workflow in the manifest * Generates command files for each workflow in the manifest
*/ */
class WorkflowCommandGenerator { class WorkflowCommandGenerator {
constructor(bmadFolderName = 'bmad') { constructor(bmadFolderName = BMAD_FOLDER_NAME) {
this.templatePath = path.join(__dirname, '../templates/workflow-commander.md'); this.templatePath = path.join(__dirname, '../templates/workflow-commander.md');
this.bmadFolderName = bmadFolderName; this.bmadFolderName = bmadFolderName;
} }