voxagent 0.2.2__tar.gz → 0.2.3__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.
- {voxagent-0.2.2 → voxagent-0.2.3}/PKG-INFO +1 -1
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/_version.py +1 -1
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/code/agent.py +23 -1
- {voxagent-0.2.2 → voxagent-0.2.3}/.gitignore +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/README.md +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/examples/README.md +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/pyproject.toml +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/__init__.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/agent/__init__.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/agent/abort.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/agent/core.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/code/__init__.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/code/sandbox.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/code/tool_proxy.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/code/virtual_fs.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/mcp/__init__.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/mcp/manager.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/mcp/tool.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/__init__.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/anthropic.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/augment.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/auth.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/base.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/chatgpt.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/claudecode.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/cli_base.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/codex.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/failover.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/google.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/groq.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/ollama.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/openai.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/providers/registry.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/py.typed +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/security/__init__.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/security/events.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/security/filter.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/security/registry.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/session/__init__.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/session/compaction.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/session/lock.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/session/model.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/session/storage.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/streaming/__init__.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/streaming/emitter.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/streaming/events.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/subagent/__init__.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/subagent/context.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/subagent/definition.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/tools/__init__.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/tools/context.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/tools/decorator.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/tools/definition.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/tools/executor.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/tools/policy.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/tools/registry.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/types/__init__.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/types/messages.py +0 -0
- {voxagent-0.2.2 → voxagent-0.2.3}/src/voxagent/types/run.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: voxagent
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: A lightweight, model-agnostic LLM provider abstraction with streaming and tool support
|
|
5
5
|
Project-URL: Homepage, https://github.com/lensator/voxagent
|
|
6
6
|
Project-URL: Documentation, https://github.com/lensator/voxagent#readme
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = "0.2.
|
|
1
|
+
__version__ = "0.2.3"
|
|
2
2
|
__version_info__ = tuple(int(x) for x in __version__.split("."))
|
|
@@ -161,12 +161,34 @@ class CodeModeExecutor:
|
|
|
161
161
|
Returns:
|
|
162
162
|
Tool result or error message
|
|
163
163
|
"""
|
|
164
|
+
import asyncio
|
|
165
|
+
import inspect
|
|
166
|
+
|
|
164
167
|
key = f"{category}.{tool_name}"
|
|
165
168
|
if key not in self._tool_implementations:
|
|
166
169
|
return f"Error: Tool '{key}' not found"
|
|
167
170
|
try:
|
|
168
171
|
impl = self._tool_implementations[key]
|
|
169
|
-
|
|
172
|
+
result = impl(**kwargs)
|
|
173
|
+
|
|
174
|
+
# Handle async functions
|
|
175
|
+
if inspect.iscoroutine(result):
|
|
176
|
+
try:
|
|
177
|
+
loop = asyncio.get_running_loop()
|
|
178
|
+
except RuntimeError:
|
|
179
|
+
loop = None
|
|
180
|
+
|
|
181
|
+
if loop is not None:
|
|
182
|
+
# Already in an async context - create task
|
|
183
|
+
import concurrent.futures
|
|
184
|
+
with concurrent.futures.ThreadPoolExecutor() as executor:
|
|
185
|
+
future = executor.submit(asyncio.run, result)
|
|
186
|
+
return future.result()
|
|
187
|
+
else:
|
|
188
|
+
# Not in async context - run directly
|
|
189
|
+
return asyncio.run(result)
|
|
190
|
+
|
|
191
|
+
return result
|
|
170
192
|
except Exception as e:
|
|
171
193
|
return f"Error calling {key}: {e}"
|
|
172
194
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|