From a493151d8bfc20cf11ef4ee5f413687926095f5d Mon Sep 17 00:00:00 2001 From: Sjoerd Bozon Date: Mon, 29 Dec 2025 00:17:25 +0100 Subject: [PATCH] fix: add handoff validation for cross-module references Filter out invalid handoff references when modules aren't selected. Builds a Set of available prompt names and validates handoffs against it. --- .../lib/ide/shared/workflow-prompt-generator.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/cli/installers/lib/ide/shared/workflow-prompt-generator.js b/tools/cli/installers/lib/ide/shared/workflow-prompt-generator.js index a82a35bd..6d6ba448 100644 --- a/tools/cli/installers/lib/ide/shared/workflow-prompt-generator.js +++ b/tools/cli/installers/lib/ide/shared/workflow-prompt-generator.js @@ -49,6 +49,9 @@ class WorkflowPromptGenerator { const recommendations = {}; const suggestedHandoffs = {}; + // Build set of available prompt names for handoff validation + const availablePromptNames = new Set(prompts.map((p) => p.name)); + for (const prompt of prompts) { const promptContent = ['---', `agent: ${prompt.agent}`, `description: "${prompt.description}"`, '---', '', prompt.prompt, ''].join( '\n', @@ -58,9 +61,12 @@ class WorkflowPromptGenerator { await fs.writeFile(promptFilePath, promptContent); recommendations[`bmd-${prompt.name}`] = true; - // Generate suggested handoffs for this prompt + // Generate suggested handoffs for this prompt, filtering out invalid references if (prompt.handoffs && prompt.handoffs.length > 0) { - suggestedHandoffs[`bmd-${prompt.name}`] = prompt.handoffs.map((h) => `bmd-${h}`); + const validHandoffs = prompt.handoffs.filter((h) => availablePromptNames.has(h)); + if (validHandoffs.length > 0) { + suggestedHandoffs[`bmd-${prompt.name}`] = validHandoffs.map((h) => `bmd-${h}`); + } } }