File tree Expand file tree Collapse file tree 1 file changed +15
-6
lines changed
Expand file tree Collapse file tree 1 file changed +15
-6
lines changed 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