diff --git a/tools/cli/installers/lib/modules/manager.js b/tools/cli/installers/lib/modules/manager.js index b4acc3aef..f162593b7 100644 --- a/tools/cli/installers/lib/modules/manager.js +++ b/tools/cli/installers/lib/modules/manager.js @@ -734,8 +734,10 @@ class ModuleManager { continue; } - // Skip config.yaml templates - we'll generate clean ones with actual values - if (file === 'config.yaml' || file.endsWith('/config.yaml')) { + // Skip module root config.yaml only - generated by config collector with actual values + // Workflow-level config.yaml (e.g. workflows/orchestrate-story/config.yaml) must be copied + // for custom modules that use workflow-specific configuration + if (file === 'config.yaml') { continue; } diff --git a/tools/cli/lib/ui.js b/tools/cli/lib/ui.js index 224d147e3..46e9acab5 100644 --- a/tools/cli/lib/ui.js +++ b/tools/cli/lib/ui.js @@ -305,6 +305,7 @@ class UI { // Build custom content config similar to promptCustomContentSource const customPaths = []; const selectedModuleIds = []; + const sources = []; for (const customPath of paths) { const expandedPath = this.expandUserPath(customPath); @@ -333,6 +334,11 @@ class UI { customPaths.push(expandedPath); selectedModuleIds.push(moduleMeta.code); + sources.push({ + path: expandedPath, + id: moduleMeta.code, + name: moduleMeta.name || moduleMeta.code, + }); } if (customPaths.length > 0) { @@ -342,6 +348,9 @@ class UI { hasCustomContent: true, paths: customPaths, selectedModuleIds: selectedModuleIds, + sources, + selected: true, + selectedFiles: customPaths.map((p) => path.join(p, 'module.yaml')), }, }; } @@ -446,6 +455,7 @@ class UI { // Build custom content config similar to promptCustomContentSource const customPaths = []; const selectedModuleIds = []; + const sources = []; for (const customPath of paths) { const expandedPath = this.expandUserPath(customPath); @@ -474,6 +484,11 @@ class UI { customPaths.push(expandedPath); selectedModuleIds.push(moduleMeta.code); + sources.push({ + path: expandedPath, + id: moduleMeta.code, + name: moduleMeta.name || moduleMeta.code, + }); } if (customPaths.length > 0) { @@ -481,6 +496,9 @@ class UI { hasCustomContent: true, paths: customPaths, selectedModuleIds: selectedModuleIds, + sources, + selected: true, + selectedFiles: customPaths.map((p) => path.join(p, 'module.yaml')), }; } } else if (!options.yes) {