mbxai 0.5.8__tar.gz → 0.5.10__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.
Files changed (25) hide show
  1. {mbxai-0.5.8 → mbxai-0.5.10}/PKG-INFO +1 -1
  2. {mbxai-0.5.8 → mbxai-0.5.10}/pyproject.toml +1 -1
  3. {mbxai-0.5.8 → mbxai-0.5.10}/setup.py +1 -1
  4. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/__init__.py +1 -1
  5. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/mcp/server.py +1 -1
  6. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/tools/client.py +45 -4
  7. {mbxai-0.5.8 → mbxai-0.5.10}/uv.lock +7 -7
  8. {mbxai-0.5.8 → mbxai-0.5.10}/.vscode/PythonImportHelper-v2-Completion.json +0 -0
  9. {mbxai-0.5.8 → mbxai-0.5.10}/LICENSE +0 -0
  10. {mbxai-0.5.8 → mbxai-0.5.10}/README.md +0 -0
  11. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/core.py +0 -0
  12. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/mcp/__init__.py +0 -0
  13. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/mcp/client.py +0 -0
  14. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/mcp/example.py +0 -0
  15. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/openrouter/__init__.py +0 -0
  16. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/openrouter/client.py +0 -0
  17. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/openrouter/config.py +0 -0
  18. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/openrouter/models.py +0 -0
  19. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/tools/__init__.py +0 -0
  20. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/tools/example.py +0 -0
  21. {mbxai-0.5.8 → mbxai-0.5.10}/src/mbxai/tools/types.py +0 -0
  22. {mbxai-0.5.8 → mbxai-0.5.10}/tests/test_core.py +0 -0
  23. {mbxai-0.5.8 → mbxai-0.5.10}/tests/test_mcp.py +0 -0
  24. {mbxai-0.5.8 → mbxai-0.5.10}/tests/test_openrouter.py +0 -0
  25. {mbxai-0.5.8 → mbxai-0.5.10}/tests/test_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mbxai
3
- Version: 0.5.8
3
+ Version: 0.5.10
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.8"
7
+ version = "0.5.10"
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.8",
5
+ version="0.5.10",
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.8"
5
+ __version__ = "0.5.10"
@@ -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.8",
34
+ version="0.5.10",
35
35
  )
36
36
 
37
37
  # Initialize MCP server
@@ -128,12 +128,32 @@ class ToolClient:
128
128
  logger.debug(f"Tool result: {result}")
129
129
 
130
130
  # Add the tool response to the messages
131
- messages.append({
131
+ tool_response = {
132
132
  "role": "tool",
133
133
  "tool_call_id": tool_call.id,
134
134
  "name": tool_call.function.name,
135
135
  "content": str(result),
136
- })
136
+ }
137
+ messages.append(tool_response)
138
+ logger.debug(f"Added tool response to messages: {tool_response}")
139
+
140
+ # Get a new response from the model with this tool result
141
+ response = self._client.chat_completion(
142
+ messages=messages,
143
+ model=model,
144
+ stream=stream,
145
+ **kwargs,
146
+ )
147
+
148
+ if stream:
149
+ return response
150
+
151
+ message = response.choices[0].message
152
+ messages.append({"role": "assistant", "content": message.content})
153
+
154
+ # If there are no more tool calls, we're done
155
+ if not message.tool_calls:
156
+ return response
137
157
 
138
158
  async def parse(
139
159
  self,
@@ -217,9 +237,30 @@ class ToolClient:
217
237
  logger.debug(f"Tool result: {result}")
218
238
 
219
239
  # Add the tool response to the messages
220
- messages.append({
240
+ tool_response = {
221
241
  "role": "tool",
222
242
  "tool_call_id": tool_call.id,
223
243
  "name": tool_call.function.name,
224
244
  "content": str(result),
225
- })
245
+ }
246
+ messages.append(tool_response)
247
+ logger.debug(f"Added tool response to messages: {tool_response}")
248
+
249
+ # Get a new response from the model with this tool result
250
+ response = self._client.chat_completion_parse(
251
+ messages=messages,
252
+ response_format=response_format,
253
+ model=model,
254
+ stream=stream,
255
+ **kwargs,
256
+ )
257
+
258
+ if stream:
259
+ return response
260
+
261
+ message = response.choices[0].message
262
+ messages.append({"role": "assistant", "content": message.content})
263
+
264
+ # If there are no more tool calls, we're done
265
+ if not message.tool_calls:
266
+ return response
@@ -292,11 +292,11 @@ wheels = [
292
292
 
293
293
  [[package]]
294
294
  name = "httpx-sse"
295
- version = "0.5.8"
295
+ version = "0.5.10"
296
296
  source = { registry = "https://pypi.org/simple" }
297
- sdist = { url = "https://files.pythonhosted.org/packages/4c/60/8f4281fa9bbf3c8034fd54c0e7412e66edbab6bc74c4996bd616f8d0406e/httpx-sse-0.5.8.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721", size = 12624 }
297
+ sdist = { url = "https://files.pythonhosted.org/packages/4c/60/8f4281fa9bbf3c8034fd54c0e7412e66edbab6bc74c4996bd616f8d0406e/httpx-sse-0.5.10.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721", size = 12624 }
298
298
  wheels = [
299
- { url = "https://files.pythonhosted.org/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.5.8-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f", size = 7819 },
299
+ { url = "https://files.pythonhosted.org/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.5.10-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.8"
449
+ version = "0.5.10"
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.8"
983
+ version = "0.5.10"
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.8.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 }
988
+ sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.5.10.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 }
989
989
  wheels = [
990
- { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.5.8-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 },
990
+ { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.5.10-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