File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1111from contextlib import asynccontextmanager
1212from dataclasses import dataclass
1313from datetime import timedelta
14+ import json
1415
1516import anyio
1617import httpx
@@ -299,14 +300,22 @@ async def _handle_json_response(
299300 """Handle JSON response from the server."""
300301 try :
301302 content = await response .aread ()
302- message = JSONRPCMessage .model_validate_json (content )
303303
304- # Extract protocol version from initialization response
305- if is_initialization :
306- self ._maybe_extract_protocol_version_from_message (message )
304+ # Parse JSON first to determine structure
305+ data = json .loads (content )
306+
307+ if isinstance (data , list ):
308+ messages = [JSONRPCMessage .model_validate (item ) for item in data ]
309+ else :
310+ message = JSONRPCMessage .model_validate (data )
311+ messages = [message ]
312+
313+ for message in messages :
314+ if is_initialization :
315+ self ._maybe_extract_protocol_version_from_message (message )
307316
308- session_message = SessionMessage (message )
309- await read_stream_writer .send (session_message )
317+ session_message = SessionMessage (message )
318+ await read_stream_writer .send (session_message )
310319 except Exception as exc :
311320 logger .error (f"Error parsing JSON response: { exc } " )
312321 await read_stream_writer .send (exc )
You can’t perform that action at this time.
0 commit comments