- Update test_transport.py: disconnect() -> close(), is_connected() -> is_ready()
- Update test_subprocess_buffering.py: receive_messages() -> read_messages()
- Fix test_streaming_client.py edge cases:
- Add control protocol init to test_double_connect (use side_effect for multiple mocks)
- Add control protocol init to test_receive_response_list_comprehension
- Add control protocol init to test_concurrent_send_receive
- All transport method calls now use read_messages() instead of receive_messages()
Test results: 89 of 90 tests passing (1 subprocess test still needs work)
- Update test mocks to handle control protocol initialization
- Fix interrupt test to check for control requests via write() instead of interrupt()
- Add control protocol support to mock_receive functions in streaming tests
- Ensure all tests properly handle init handshake before sending messages
- Fix formatting issues (trailing whitespace, blank lines)
All tests now properly support the new Query/Transport architecture with
bidirectional control protocol communication.
## Summary
Fixes an issue where `thinking` content blocks in Claude Code responses
were not being parsed, resulting in empty `AssistantMessage` content
arrays.
## Changes
- Added `ThinkingBlock` dataclass to handle thinking content with
`thinking` and `signature` fields
- Updated client parsing logic in `_internal/client.py` to recognize and
create `ThinkingBlock` instances
- Added comprehensive test coverage for thinking block functionality
## Before
```python
# Claude Code response with thinking block resulted in:
AssistantMessage(content=[]) # Empty content!
```
## After
```python
# Now correctly parses to:
AssistantMessage(content=[
ThinkingBlock(thinking="...", signature="...")
])
```
Fixes#27
---------
Co-authored-by: Dickson Tsai <dickson@anthropic.com>