diff --git a/packages/services/conversation-service/src/infrastructure/agents/coordinator/input-gate.service.ts b/packages/services/conversation-service/src/infrastructure/agents/coordinator/input-gate.service.ts index bf3c52b..97aa7be 100644 --- a/packages/services/conversation-service/src/infrastructure/agents/coordinator/input-gate.service.ts +++ b/packages/services/conversation-service/src/infrastructure/agents/coordinator/input-gate.service.ts @@ -61,7 +61,9 @@ export class InputGateService { temperature: 0, }); - const text = (response.content[0] as { type: string; text?: string })?.text || ''; + const rawText = (response.content[0] as { type: string; text?: string })?.text || ''; + // Haiku sometimes wraps JSON in ```json ... ``` — strip markdown code fences + const text = rawText.replace(/^```(?:json)?\s*\n?/i, '').replace(/\n?```\s*$/i, '').trim(); const parsed = JSON.parse(text); const classification: InputClassification = parsed.classification || 'ON_TOPIC';