diff --git a/src/claude_code_sdk/_internal/message_parser.py b/src/claude_code_sdk/_internal/message_parser.py index 7173650..6b39a02 100644 --- a/src/claude_code_sdk/_internal/message_parser.py +++ b/src/claude_code_sdk/_internal/message_parser.py @@ -54,13 +54,6 @@ def parse_message(data: dict[str, Any]) -> Message: user_content_blocks.append( TextBlock(text=block["text"]) ) - case "thinking": - user_content_blocks.append( - ThinkingBlock( - thinking=block["thinking"], - signature=block["signature"], - ) - ) case "tool_use": user_content_blocks.append( ToolUseBlock( @@ -91,6 +84,13 @@ def parse_message(data: dict[str, Any]) -> Message: match block["type"]: case "text": content_blocks.append(TextBlock(text=block["text"])) + case "thinking": + content_blocks.append( + ThinkingBlock( + thinking=block["thinking"], + signature=block["signature"], + ) + ) case "tool_use": content_blocks.append( ToolUseBlock( diff --git a/tests/test_message_parser.py b/tests/test_message_parser.py index 4e0892e..60dea98 100644 --- a/tests/test_message_parser.py +++ b/tests/test_message_parser.py @@ -9,6 +9,7 @@ from claude_code_sdk.types import ( ResultMessage, SystemMessage, TextBlock, + ThinkingBlock, ToolResultBlock, ToolUseBlock, UserMessage, @@ -152,6 +153,31 @@ class TestMessageParser: assert isinstance(message.content[0], TextBlock) assert isinstance(message.content[1], ToolUseBlock) + def test_parse_assistant_message_with_thinking(self): + """Test parsing an assistant message with thinking block.""" + data = { + "type": "assistant", + "message": { + "content": [ + { + "type": "thinking", + "thinking": "I'm thinking about the answer...", + "signature": "sig-123", + }, + {"type": "text", "text": "Here's my response"}, + ], + "model": "claude-opus-4-1-20250805", + }, + } + message = parse_message(data) + assert isinstance(message, AssistantMessage) + assert len(message.content) == 2 + assert isinstance(message.content[0], ThinkingBlock) + assert message.content[0].thinking == "I'm thinking about the answer..." + assert message.content[0].signature == "sig-123" + assert isinstance(message.content[1], TextBlock) + assert message.content[1].text == "Here's my response" + def test_parse_valid_system_message(self): """Test parsing a valid system message.""" data = {"type": "system", "subtype": "start"}