Add message queue for SSE messages POST endpoint (#459)

This commit is contained in:
Akash D
2025-05-06 17:10:43 -07:00
committed by GitHub
parent 58c5e7223c
commit 3b1b213a96
26 changed files with 1247 additions and 50 deletions

View File

@@ -98,7 +98,9 @@ async def sse_client(
await read_stream_writer.send(exc)
continue
session_message = SessionMessage(message)
session_message = SessionMessage(
message=message
)
await read_stream_writer.send(session_message)
case _:
logger.warning(
@@ -148,3 +150,5 @@ async def sse_client(
finally:
await read_stream_writer.aclose()
await write_stream.aclose()
await read_stream.aclose()
await write_stream_reader.aclose()

View File

@@ -144,7 +144,7 @@ async def stdio_client(server: StdioServerParameters, errlog: TextIO = sys.stder
await read_stream_writer.send(exc)
continue
session_message = SessionMessage(message)
session_message = SessionMessage(message=message)
await read_stream_writer.send(session_message)
except anyio.ClosedResourceError:
await anyio.lowlevel.checkpoint()

View File

@@ -153,7 +153,7 @@ class StreamableHTTPTransport:
):
message.root.id = original_request_id
session_message = SessionMessage(message)
session_message = SessionMessage(message=message)
await read_stream_writer.send(session_message)
# Call resumption token callback if we have an ID
@@ -286,7 +286,7 @@ class StreamableHTTPTransport:
try:
content = await response.aread()
message = JSONRPCMessage.model_validate_json(content)
session_message = SessionMessage(message)
session_message = SessionMessage(message=message)
await read_stream_writer.send(session_message)
except Exception as exc:
logger.error(f"Error parsing JSON response: {exc}")
@@ -333,7 +333,7 @@ class StreamableHTTPTransport:
id=request_id,
error=ErrorData(code=32600, message="Session terminated"),
)
session_message = SessionMessage(JSONRPCMessage(jsonrpc_error))
session_message = SessionMessage(message=JSONRPCMessage(jsonrpc_error))
await read_stream_writer.send(session_message)
async def post_writer(

View File

@@ -60,7 +60,7 @@ async def websocket_client(
async for raw_text in ws:
try:
message = types.JSONRPCMessage.model_validate_json(raw_text)
session_message = SessionMessage(message)
session_message = SessionMessage(message=message)
await read_stream_writer.send(session_message)
except ValidationError as exc:
# If JSON parse or model validation fails, send the exception