mbxai 0.5.6__tar.gz → 0.5.8__tar.gz

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.
@@ -213,6 +213,15 @@
213
213
  "detail": "logging",
214
214
  "documentation": {}
215
215
  },
216
+ {
217
+ "label": "asyncio",
218
+ "kind": 6,
219
+ "isExtraImport": true,
220
+ "importPath": "asyncio",
221
+ "description": "asyncio",
222
+ "detail": "asyncio",
223
+ "documentation": {}
224
+ },
216
225
  {
217
226
  "label": "BaseModel",
218
227
  "importPath": "pydantic",
@@ -357,15 +366,6 @@
357
366
  "detail": "pydantic",
358
367
  "documentation": {}
359
368
  },
360
- {
361
- "label": "asyncio",
362
- "kind": 6,
363
- "isExtraImport": true,
364
- "importPath": "asyncio",
365
- "description": "asyncio",
366
- "detail": "asyncio",
367
- "documentation": {}
368
- },
369
369
  {
370
370
  "label": "FastMCP",
371
371
  "importPath": "mcp.server.fastmcp",
@@ -430,6 +430,15 @@
430
430
  "detail": "enum",
431
431
  "documentation": {}
432
432
  },
433
+ {
434
+ "label": "inspect",
435
+ "kind": 6,
436
+ "isExtraImport": true,
437
+ "importPath": "inspect",
438
+ "description": "inspect",
439
+ "detail": "inspect",
440
+ "documentation": {}
441
+ },
433
442
  {
434
443
  "label": "hello_world",
435
444
  "importPath": "mbxai.core",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mbxai
3
- Version: 0.5.6
3
+ Version: 0.5.8
4
4
  Summary: MBX AI SDK
5
5
  Project-URL: Homepage, https://www.mibexx.de
6
6
  Project-URL: Documentation, https://www.mibexx.de
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "mbxai"
7
- version = "0.5.6"
7
+ version = "0.5.8"
8
8
  authors = [
9
9
  { name = "MBX AI" }
10
10
  ]
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="mbxai",
5
- version="0.5.6",
5
+ version="0.5.8",
6
6
  author="MBX AI",
7
7
  description="MBX AI SDK",
8
8
  long_description=open("README.md").read(),
@@ -2,4 +2,4 @@
2
2
  MBX AI package.
3
3
  """
4
4
 
5
- __version__ = "0.5.6"
5
+ __version__ = "0.5.8"
@@ -3,6 +3,7 @@
3
3
  from typing import Any, TypeVar, Callable
4
4
  import httpx
5
5
  import logging
6
+ import asyncio
6
7
  from pydantic import BaseModel, Field
7
8
 
8
9
  from ..tools import ToolClient, Tool
@@ -93,13 +94,7 @@ class MCPClient(ToolClient):
93
94
  )
94
95
  return response.json()
95
96
 
96
- # Create a sync wrapper for the async function
97
- def sync_tool_function(**kwargs: Any) -> Any:
98
- import asyncio
99
- loop = asyncio.get_event_loop()
100
- return loop.run_until_complete(tool_function(**kwargs))
101
-
102
- return sync_tool_function
97
+ return tool_function
103
98
 
104
99
  async def register_mcp_server(self, name: str, base_url: str) -> None:
105
100
  """Register an MCP server and load its tools."""
@@ -31,7 +31,7 @@ class MCPServer:
31
31
  self.app = FastAPI(
32
32
  title=self.name,
33
33
  description=self.description,
34
- version="0.5.6",
34
+ version="0.5.8",
35
35
  )
36
36
 
37
37
  # Initialize MCP server
@@ -4,6 +4,7 @@ ToolClient implementation for MBX AI.
4
4
 
5
5
  from typing import Any, Callable, TypeVar, cast
6
6
  import logging
7
+ import inspect
7
8
  from pydantic import BaseModel
8
9
  from ..openrouter import OpenRouterClient
9
10
  from .types import Tool, ToolCall
@@ -48,7 +49,7 @@ class ToolClient:
48
49
  self._tools[name] = tool
49
50
  logger.debug(f"Registered tool: {name}")
50
51
 
51
- def chat(
52
+ async def chat(
52
53
  self,
53
54
  messages: list[dict[str, Any]],
54
55
  *,
@@ -120,7 +121,10 @@ class ToolClient:
120
121
 
121
122
  # Call the tool
122
123
  logger.debug(f"Calling tool {tool.name} with arguments: {arguments}")
123
- result = tool.function(**arguments)
124
+ if inspect.iscoroutinefunction(tool.function):
125
+ result = await tool.function(**arguments)
126
+ else:
127
+ result = tool.function(**arguments)
124
128
  logger.debug(f"Tool result: {result}")
125
129
 
126
130
  # Add the tool response to the messages
@@ -131,7 +135,7 @@ class ToolClient:
131
135
  "content": str(result),
132
136
  })
133
137
 
134
- def parse(
138
+ async def parse(
135
139
  self,
136
140
  messages: list[dict[str, Any]],
137
141
  response_format: type[T],
@@ -206,7 +210,10 @@ class ToolClient:
206
210
 
207
211
  # Call the tool
208
212
  logger.debug(f"Calling tool {tool.name} with arguments: {arguments}")
209
- result = tool.function(**arguments)
213
+ if inspect.iscoroutinefunction(tool.function):
214
+ result = await tool.function(**arguments)
215
+ else:
216
+ result = tool.function(**arguments)
210
217
  logger.debug(f"Tool result: {result}")
211
218
 
212
219
  # Add the tool response to the messages
@@ -292,11 +292,11 @@ wheels = [
292
292
 
293
293
  [[package]]
294
294
  name = "httpx-sse"
295
- version = "0.5.6"
295
+ version = "0.5.8"
296
296
  source = { registry = "https://pypi.org/simple" }
297
- sdist = { url = "https://files.pythonhosted.org/packages/4c/60/8f4281fa9bbf3c8034fd54c0e7412e66edbab6bc74c4996bd616f8d0406e/httpx-sse-0.5.6.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721", size = 12624 }
297
+ sdist = { url = "https://files.pythonhosted.org/packages/4c/60/8f4281fa9bbf3c8034fd54c0e7412e66edbab6bc74c4996bd616f8d0406e/httpx-sse-0.5.8.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721", size = 12624 }
298
298
  wheels = [
299
- { url = "https://files.pythonhosted.org/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.5.6-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f", size = 7819 },
299
+ { url = "https://files.pythonhosted.org/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.5.8-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f", size = 7819 },
300
300
  ]
301
301
 
302
302
  [[package]]
@@ -446,7 +446,7 @@ wheels = [
446
446
 
447
447
  [[package]]
448
448
  name = "mbxai"
449
- version = "0.5.6"
449
+ version = "0.5.8"
450
450
  source = { editable = "." }
451
451
  dependencies = [
452
452
  { name = "fastapi" },
@@ -980,14 +980,14 @@ wheels = [
980
980
 
981
981
  [[package]]
982
982
  name = "typing-inspection"
983
- version = "0.5.6"
983
+ version = "0.5.8"
984
984
  source = { registry = "https://pypi.org/simple" }
985
985
  dependencies = [
986
986
  { name = "typing-extensions" },
987
987
  ]
988
- sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.5.6.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 }
988
+ sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.5.8.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 }
989
989
  wheels = [
990
- { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.5.6-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 },
990
+ { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.5.8-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 },
991
991
  ]
992
992
 
993
993
  [[package]]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes