From 8b411b234dee7da499ca1d441206033d79abf70b Mon Sep 17 00:00:00 2001 From: teknium1 Date: Tue, 17 Mar 2026 03:48:55 -0700 Subject: [PATCH] fix(anthropic): merge consecutive assistant messages with mixed content types When two consecutive assistant messages had mixed content types (one string, one list), the merge logic just replaced the earlier message entirely with the later one (fixed[-1] = m), silently dropping the earlier message's content. Apply the same normalization pattern used in the tool_use merge path (lines 952-956): convert both to list format before concatenating. This preserves all content from both messages. --- agent/anthropic_adapter.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/agent/anthropic_adapter.py b/agent/anthropic_adapter.py index 3e1bd85b..58dd215b 100644 --- a/agent/anthropic_adapter.py +++ b/agent/anthropic_adapter.py @@ -963,8 +963,12 @@ def convert_messages_to_anthropic( elif isinstance(prev_blocks, str) and isinstance(curr_blocks, str): fixed[-1]["content"] = prev_blocks + "\n" + curr_blocks else: - # Keep the later message - fixed[-1] = m + # Mixed types — normalize both to list and merge + if isinstance(prev_blocks, str): + prev_blocks = [{"type": "text", "text": prev_blocks}] + if isinstance(curr_blocks, str): + curr_blocks = [{"type": "text", "text": curr_blocks}] + fixed[-1]["content"] = prev_blocks + curr_blocks else: fixed.append(m) result = fixed