From bd1dbc4406b207d2f0d48da325d4de048638759c Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 26 Mar 2026 19:20:34 +0800 Subject: [PATCH] fix agent scene slot prompt dedupe --- app/(chat)/api/chat/route.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/app/(chat)/api/chat/route.ts b/app/(chat)/api/chat/route.ts index 27e938219..81cd9eb64 100644 --- a/app/(chat)/api/chat/route.ts +++ b/app/(chat)/api/chat/route.ts @@ -2983,6 +2983,29 @@ function getPromptSemanticLabel(label: string) { return AGENT_PROMPT_LABEL_SEMANTIC_ALIASES.get(normalized) || normalized; } +function collectPromptSemanticLabelsFromText(text: string) { + const semanticLabels = new Set(); + const normalizedText = String(text || "").replace(/\s+/g, " ").trim(); + if (!normalizedText) { + return semanticLabels; + } + + for (const [label, semantic] of AGENT_PROMPT_LABEL_SEMANTIC_ALIASES.entries()) { + if (!label) { + continue; + } + if (normalizedText.includes(`${label}:`) || normalizedText.includes(`${label}:`)) { + semanticLabels.add(semantic); + continue; + } + if (normalizedText.includes(`${label} `) || normalizedText.includes(label)) { + semanticLabels.add(semantic); + } + } + + return semanticLabels; +} + function shouldDropSceneSlotSemanticLine( slotSemanticLabel: string, workflowSemanticLabels: Set, @@ -3034,6 +3057,12 @@ function dedupeAgentSlotPromptAgainstWorkflow(params: { if (parsed.label) { workflowSemanticLabels.add(getPromptSemanticLabel(parsed.label)); } + collectPromptSemanticLabelsFromText(line).forEach((semantic) => { + workflowSemanticLabels.add(semantic); + }); + collectPromptSemanticLabelsFromText(parsed.value || "").forEach((semantic) => { + workflowSemanticLabels.add(semantic); + }); if (parsed.label && AGENT_PROMPT_STRUCTURAL_LABELS.has(parsed.label)) { workflowStructuralValues.set( parsed.label,