Fix JSON parsing for chunked responses in subprocess transport #25
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Fixes #6 - The Claude Code SDK fails with
JSONDecodeErrorwhen Claude CLI returns large responses that get split across multiple lines in the subprocess stdout stream.This manifests as:
Root Cause
The current implementation in
SubprocessCLITransport.receive_messages()attempts to parse each line as complete JSON withjson.loads(line_str), but chunked responses contain incomplete JSON fragments.Solution
Implements a stateful JSON parser that:
Testing
✅ Tested with real-world Linear issue analysis tool that previously caused TaskGroup errors
✅ Successfully processes large responses (4000+ chars) that were failing
✅ Maintains compatibility with simple single-line JSON responses
Before/After
Before:
unhandled errors in a TaskGroup (1 sub-exception)After:
✅ Cost: $0.4161, Duration: 97010ms, Response: [full analysis]