blaxel 0.2.0rc2__py3-none-any.whl → 0.2.0rc3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
blaxel/core/mcp/client.py CHANGED
@@ -7,6 +7,7 @@ import anyio
7
7
  import mcp.types as types
8
8
  from anyio.abc import TaskStatus
9
9
  from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
10
+ from mcp.shared.message import SessionMessage
10
11
  from websockets.asyncio.client import ClientConnection
11
12
  from websockets.asyncio.client import connect as ws_connect
12
13
 
@@ -28,11 +29,11 @@ async def websocket_client(
28
29
 
29
30
  The `timeout` parameter controls connection timeout.
30
31
  """
31
- read_stream: MemoryObjectReceiveStream[types.JSONRPCMessage | Exception]
32
- read_stream_writer: MemoryObjectSendStream[types.JSONRPCMessage | Exception]
32
+ read_stream: MemoryObjectReceiveStream[SessionMessage | Exception]
33
+ read_stream_writer: MemoryObjectSendStream[SessionMessage | Exception]
33
34
 
34
- write_stream: MemoryObjectSendStream[types.JSONRPCMessage]
35
- write_stream_reader: MemoryObjectReceiveStream[types.JSONRPCMessage]
35
+ write_stream: MemoryObjectSendStream[SessionMessage]
36
+ write_stream_reader: MemoryObjectReceiveStream[SessionMessage]
36
37
 
37
38
  read_stream_writer, read_stream = anyio.create_memory_object_stream(0)
38
39
  write_stream, write_stream_reader = anyio.create_memory_object_stream(0)
@@ -64,7 +65,9 @@ async def websocket_client(
64
65
  message
65
66
  )
66
67
  logger.debug(f"Received server message: {parsed_message}")
67
- await read_stream_writer.send(parsed_message)
68
+ await read_stream_writer.send(
69
+ SessionMessage(message=parsed_message)
70
+ )
68
71
  except Exception as exc:
69
72
  logger.error(f"Error parsing server message: {exc}")
70
73
  await read_stream_writer.send(exc)
@@ -77,10 +80,12 @@ async def websocket_client(
77
80
  async def ws_writer(websocket: ClientConnection):
78
81
  try:
79
82
  async with write_stream_reader:
80
- async for message in write_stream_reader:
81
- logger.debug(f"Sending client message: {message}")
83
+ async for session_message in write_stream_reader:
84
+ logger.debug(
85
+ f"Sending client message: {session_message.message}"
86
+ )
82
87
  await websocket.send(
83
- message.model_dump_json(
88
+ session_message.message.model_dump_json(
84
89
  by_alias=True,
85
90
  exclude_none=True,
86
91
  )
blaxel/core/mcp/server.py CHANGED
@@ -8,6 +8,7 @@ import anyio
8
8
  import mcp.types as types
9
9
  from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
10
10
  from mcp.server.fastmcp import FastMCP as FastMCPBase
11
+ from mcp.shared.message import SessionMessage
11
12
  from websockets.asyncio.server import ServerConnection, serve
12
13
 
13
14
  from ..common.env import env
@@ -34,11 +35,11 @@ class BlaxelMcpServerTransport:
34
35
  @asynccontextmanager
35
36
  async def websocket_server(self):
36
37
  """Create and run a WebSocket server for MCP communication."""
37
- read_stream: MemoryObjectReceiveStream[types.JSONRPCMessage | Exception]
38
- read_stream_writer: MemoryObjectSendStream[types.JSONRPCMessage | Exception]
38
+ read_stream: MemoryObjectReceiveStream[SessionMessage | Exception]
39
+ read_stream_writer: MemoryObjectSendStream[SessionMessage | Exception]
39
40
 
40
- write_stream: MemoryObjectSendStream[types.JSONRPCMessage]
41
- write_stream_reader: MemoryObjectReceiveStream[types.JSONRPCMessage]
41
+ write_stream: MemoryObjectSendStream[SessionMessage]
42
+ write_stream_reader: MemoryObjectReceiveStream[SessionMessage]
42
43
 
43
44
  read_stream_writer, read_stream = anyio.create_memory_object_stream(0)
44
45
  write_stream, write_stream_reader = anyio.create_memory_object_stream(0)
@@ -56,7 +57,7 @@ class BlaxelMcpServerTransport:
56
57
  if hasattr(msg, "id") and msg.id is not None:
57
58
  original_id = msg.id
58
59
  msg.id = f"{client_id}:{original_id}"
59
- await read_stream_writer.send(msg)
60
+ await read_stream_writer.send(SessionMessage(message=msg))
60
61
  except Exception as exc:
61
62
  logger.error(f"Failed to parse message: {exc}\n{traceback.format_exc()}")
62
63
  await read_stream_writer.send(exc)
@@ -69,11 +70,11 @@ class BlaxelMcpServerTransport:
69
70
 
70
71
  async def message_sender():
71
72
  async with write_stream_reader:
72
- async for message in write_stream_reader:
73
+ async for session_message in write_stream_reader:
73
74
  # Extract client ID from message ID
74
75
  client_id = None
75
76
  msg_id = None
76
-
77
+ message = session_message.message
77
78
  if hasattr(message, "id") and message.id is not None:
78
79
  parts = str(message.id).split(":", 1)
79
80
  if len(parts) == 2:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: blaxel
3
- Version: 0.2.0rc2
3
+ Version: 0.2.0rc3
4
4
  Summary: Blaxel - AI development platform SDK
5
5
  Project-URL: Homepage, https://blaxel.ai
6
6
  Project-URL: Documentation, https://docs.blaxel.ai
@@ -11,7 +11,7 @@ License-File: LICENSE
11
11
  Requires-Python: >=3.10
12
12
  Requires-Dist: attrs>=21.3.0
13
13
  Requires-Dist: httpx>=0.27.0
14
- Requires-Dist: mcp<=1.7.1
14
+ Requires-Dist: mcp>=1.9.4
15
15
  Requires-Dist: pydantic>=2.0.0
16
16
  Requires-Dist: pyjwt>=2.0.0
17
17
  Requires-Dist: python-dateutil>=2.8.0
@@ -301,8 +301,8 @@ blaxel/core/common/logger.py,sha256=Jt0MCJgYDPq36rl7UyKRDJH76a-AwYdfggNeNYJt6N0,
301
301
  blaxel/core/common/settings.py,sha256=7KTryuBdud0IfHqykX7xEEtpgq5M5h1Z8YEzYKsHB-Q,2327
302
302
  blaxel/core/jobs/__init__.py,sha256=tApZ6t6Savd5c9yH1RhuiPDGq19B464Fakd-YqCOEtI,5441
303
303
  blaxel/core/mcp/__init__.py,sha256=5VjkiQFb1QWW5QKRgwPHARlxZJ9Xqaz0diJTpM8LLF0,142
304
- blaxel/core/mcp/client.py,sha256=dFjPHirybqA3IMecSvdDss-iU5ferPUaunNrPyhFm8o,5195
305
- blaxel/core/mcp/server.py,sha256=lx-4C71PdPxbG_tGuk81j44jrl7a1ztSixC-k4ObyBo,5812
304
+ blaxel/core/mcp/client.py,sha256=aK3wSnsO8DmT1BZqw4eiCMF71Jwvni6Qga0DhPP806Y,5437
305
+ blaxel/core/mcp/server.py,sha256=tXySGZKgK3IllYOzYOecp58BixKBkmAIvQp_4nSM_Ww,5919
306
306
  blaxel/core/models/__init__.py,sha256=HbRDsMnUFHkPC-MMkzPXh4mUqkVjqO6p3j7m00N_XSo,1722
307
307
  blaxel/core/sandbox/__init__.py,sha256=eWTH7PWNQZe9efqParwgXzltc7L4OyPtT_REqCdQybU,551
308
308
  blaxel/core/sandbox/action.py,sha256=9Zjkco7YkLzBThD3N2Hr5SpeEiqU_-Ktk8HlKpkpiAg,2802
@@ -402,7 +402,7 @@ blaxel/telemetry/instrumentation/map.py,sha256=EVCw6ug1hemE-9kh77Vxs9cqr_p9TPzFw
402
402
  blaxel/telemetry/instrumentation/utils.py,sha256=KInMYZH-mu9_wvetmf0EmgrfN3Sw8IWk2Y95v2u90_U,1901
403
403
  blaxel/telemetry/log/log.py,sha256=RvQByRjZMoP_dRaAZu8oK6DTegsHs-xV4W-UIqis6CA,2461
404
404
  blaxel/telemetry/log/logger.py,sha256=NPAS3g82ryROjvc_DEZaTIfrcehoLEZoP-JkLxADxc0,4113
405
- blaxel-0.2.0rc2.dist-info/METADATA,sha256=g08ZNxaAovSAaeMwRLMFeoY5YJ2HWAOmTL1e-QqIHko,9878
406
- blaxel-0.2.0rc2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
407
- blaxel-0.2.0rc2.dist-info/licenses/LICENSE,sha256=p5PNQvpvyDT_0aYBDgmV1fFI_vAD2aSV0wWG7VTgRis,1069
408
- blaxel-0.2.0rc2.dist-info/RECORD,,
405
+ blaxel-0.2.0rc3.dist-info/METADATA,sha256=6uAwLfyFgd98jymj7QVZMz6et4U1oAr3JgqyL0ZcMkQ,9878
406
+ blaxel-0.2.0rc3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
407
+ blaxel-0.2.0rc3.dist-info/licenses/LICENSE,sha256=p5PNQvpvyDT_0aYBDgmV1fFI_vAD2aSV0wWG7VTgRis,1069
408
+ blaxel-0.2.0rc3.dist-info/RECORD,,