axio 0.6.0__tar.gz → 0.6.2__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.
- {axio-0.6.0 → axio-0.6.2}/.gitignore +2 -0
- {axio-0.6.0 → axio-0.6.2}/PKG-INFO +22 -15
- {axio-0.6.0 → axio-0.6.2}/README.md +21 -14
- {axio-0.6.0 → axio-0.6.2}/pyproject.toml +1 -1
- {axio-0.6.0 → axio-0.6.2}/.github/workflows/publish.yml +0 -0
- {axio-0.6.0 → axio-0.6.2}/.github/workflows/tests.yml +0 -0
- {axio-0.6.0 → axio-0.6.2}/LICENSE +0 -0
- {axio-0.6.0 → axio-0.6.2}/Makefile +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/__init__.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/agent.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/blocks.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/compaction.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/context.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/events.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/exceptions.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/messages.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/models.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/permission.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/py.typed +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/selector.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/stream.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/testing.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/tool.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/tool_args.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/transport.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/src/axio/types.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/conftest.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_agent_branch.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_agent_permission.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_agent_run.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_agent_stream.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_agent_tools.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_blocks.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_context.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_events.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_exceptions.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_models.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_permission.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_stream.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_tool.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_tool_args.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_transport.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/tests/test_types.py +0 -0
- {axio-0.6.0 → axio-0.6.2}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: axio
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.2
|
|
4
4
|
Summary: Minimal, streaming-first, protocol-driven foundation for LLM-powered agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/axio-agent/axio
|
|
6
6
|
Project-URL: Repository, https://github.com/axio-agent/axio
|
|
@@ -73,7 +73,7 @@ greet_tool = Tool(name="greet", description="Greet someone by name", handler=Gre
|
|
|
73
73
|
from axio_transport_openai import OpenAITransport
|
|
74
74
|
|
|
75
75
|
transport = OpenAITransport(api_key="sk-...", model="gpt-4o-mini")
|
|
76
|
-
agent = Agent(system="You are helpful.", tools=[greet_tool]
|
|
76
|
+
agent = Agent(system="You are helpful.", transport=transport, tools=[greet_tool])
|
|
77
77
|
|
|
78
78
|
# 3. Run
|
|
79
79
|
async def main() -> None:
|
|
@@ -131,31 +131,38 @@ class CompletionTransport(Protocol):
|
|
|
131
131
|
|
|
132
132
|
<!-- name: test_readme_context_store -->
|
|
133
133
|
```python
|
|
134
|
-
from abc import ABC, abstractmethod
|
|
135
134
|
from axio.context import ContextStore
|
|
136
135
|
from axio.messages import Message
|
|
137
136
|
|
|
138
|
-
class MyContextStore(ContextStore
|
|
139
|
-
|
|
140
|
-
|
|
137
|
+
class MyContextStore(ContextStore):
|
|
138
|
+
def __init__(self) -> None:
|
|
139
|
+
self._messages: list[Message] = []
|
|
141
140
|
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
async def append(self, message: Message) -> None:
|
|
142
|
+
self._messages.append(message)
|
|
143
|
+
|
|
144
|
+
async def get_history(self) -> list[Message]:
|
|
145
|
+
return list(self._messages)
|
|
144
146
|
|
|
145
147
|
# Everything else — session_id, close(), fork(), clear(),
|
|
146
|
-
# get/set_context_tokens()
|
|
148
|
+
# get/set_context_tokens(), add_context_tokens(), list_sessions()
|
|
149
|
+
# — has a default implementation.
|
|
147
150
|
```
|
|
148
151
|
|
|
149
152
|
### PermissionGuard
|
|
150
153
|
|
|
154
|
+
`PermissionGuard` is an abstract base class (ABC). Subclass it and implement
|
|
155
|
+
`check()`:
|
|
156
|
+
|
|
151
157
|
<!-- name: test_readme_permission_guard -->
|
|
152
158
|
```python
|
|
153
|
-
from typing import
|
|
154
|
-
from axio.
|
|
159
|
+
from typing import Any
|
|
160
|
+
from axio.permission import PermissionGuard
|
|
155
161
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
162
|
+
class MyGuard(PermissionGuard):
|
|
163
|
+
async def check(self, handler: Any) -> Any:
|
|
164
|
+
# return handler to allow, raise GuardError to deny
|
|
165
|
+
return handler
|
|
159
166
|
```
|
|
160
167
|
|
|
161
168
|
## Stream events
|
|
@@ -236,11 +243,11 @@ my_guard = "my_package:MyGuard"
|
|
|
236
243
|
| [axio-transport-anthropic](https://github.com/axio-agent/axio-transport-anthropic) | Anthropic Claude transport |
|
|
237
244
|
| [axio-transport-openai](https://github.com/axio-agent/axio-transport-openai) | OpenAI-compatible transport (OpenAI, Nebius, OpenRouter, custom) |
|
|
238
245
|
| [axio-transport-codex](https://github.com/axio-agent/axio-transport-codex) | ChatGPT OAuth transport |
|
|
246
|
+
| [axio-context-sqlite](https://github.com/axio-agent/axio-context-sqlite) | SQLite-backed persistent context store |
|
|
239
247
|
| [axio-tools-local](https://github.com/axio-agent/axio-tools-local) | Shell, file, Python tools |
|
|
240
248
|
| [axio-tools-mcp](https://github.com/axio-agent/axio-tools-mcp) | MCP server bridge |
|
|
241
249
|
| [axio-tools-docker](https://github.com/axio-agent/axio-tools-docker) | Docker sandbox tools |
|
|
242
250
|
| [axio-tui](https://github.com/axio-agent/axio-tui) | Textual TUI application |
|
|
243
|
-
| [axio-tui-rag](https://github.com/axio-agent/axio-tui-rag) | RAG / semantic search plugin |
|
|
244
251
|
| [axio-tui-guards](https://github.com/axio-agent/axio-tui-guards) | Permission guard plugins |
|
|
245
252
|
|
|
246
253
|
## License
|
|
@@ -60,7 +60,7 @@ greet_tool = Tool(name="greet", description="Greet someone by name", handler=Gre
|
|
|
60
60
|
from axio_transport_openai import OpenAITransport
|
|
61
61
|
|
|
62
62
|
transport = OpenAITransport(api_key="sk-...", model="gpt-4o-mini")
|
|
63
|
-
agent = Agent(system="You are helpful.", tools=[greet_tool]
|
|
63
|
+
agent = Agent(system="You are helpful.", transport=transport, tools=[greet_tool])
|
|
64
64
|
|
|
65
65
|
# 3. Run
|
|
66
66
|
async def main() -> None:
|
|
@@ -118,31 +118,38 @@ class CompletionTransport(Protocol):
|
|
|
118
118
|
|
|
119
119
|
<!-- name: test_readme_context_store -->
|
|
120
120
|
```python
|
|
121
|
-
from abc import ABC, abstractmethod
|
|
122
121
|
from axio.context import ContextStore
|
|
123
122
|
from axio.messages import Message
|
|
124
123
|
|
|
125
|
-
class MyContextStore(ContextStore
|
|
126
|
-
|
|
127
|
-
|
|
124
|
+
class MyContextStore(ContextStore):
|
|
125
|
+
def __init__(self) -> None:
|
|
126
|
+
self._messages: list[Message] = []
|
|
128
127
|
|
|
129
|
-
|
|
130
|
-
|
|
128
|
+
async def append(self, message: Message) -> None:
|
|
129
|
+
self._messages.append(message)
|
|
130
|
+
|
|
131
|
+
async def get_history(self) -> list[Message]:
|
|
132
|
+
return list(self._messages)
|
|
131
133
|
|
|
132
134
|
# Everything else — session_id, close(), fork(), clear(),
|
|
133
|
-
# get/set_context_tokens()
|
|
135
|
+
# get/set_context_tokens(), add_context_tokens(), list_sessions()
|
|
136
|
+
# — has a default implementation.
|
|
134
137
|
```
|
|
135
138
|
|
|
136
139
|
### PermissionGuard
|
|
137
140
|
|
|
141
|
+
`PermissionGuard` is an abstract base class (ABC). Subclass it and implement
|
|
142
|
+
`check()`:
|
|
143
|
+
|
|
138
144
|
<!-- name: test_readme_permission_guard -->
|
|
139
145
|
```python
|
|
140
|
-
from typing import
|
|
141
|
-
from axio.
|
|
146
|
+
from typing import Any
|
|
147
|
+
from axio.permission import PermissionGuard
|
|
142
148
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
149
|
+
class MyGuard(PermissionGuard):
|
|
150
|
+
async def check(self, handler: Any) -> Any:
|
|
151
|
+
# return handler to allow, raise GuardError to deny
|
|
152
|
+
return handler
|
|
146
153
|
```
|
|
147
154
|
|
|
148
155
|
## Stream events
|
|
@@ -223,11 +230,11 @@ my_guard = "my_package:MyGuard"
|
|
|
223
230
|
| [axio-transport-anthropic](https://github.com/axio-agent/axio-transport-anthropic) | Anthropic Claude transport |
|
|
224
231
|
| [axio-transport-openai](https://github.com/axio-agent/axio-transport-openai) | OpenAI-compatible transport (OpenAI, Nebius, OpenRouter, custom) |
|
|
225
232
|
| [axio-transport-codex](https://github.com/axio-agent/axio-transport-codex) | ChatGPT OAuth transport |
|
|
233
|
+
| [axio-context-sqlite](https://github.com/axio-agent/axio-context-sqlite) | SQLite-backed persistent context store |
|
|
226
234
|
| [axio-tools-local](https://github.com/axio-agent/axio-tools-local) | Shell, file, Python tools |
|
|
227
235
|
| [axio-tools-mcp](https://github.com/axio-agent/axio-tools-mcp) | MCP server bridge |
|
|
228
236
|
| [axio-tools-docker](https://github.com/axio-agent/axio-tools-docker) | Docker sandbox tools |
|
|
229
237
|
| [axio-tui](https://github.com/axio-agent/axio-tui) | Textual TUI application |
|
|
230
|
-
| [axio-tui-rag](https://github.com/axio-agent/axio-tui-rag) | RAG / semantic search plugin |
|
|
231
238
|
| [axio-tui-guards](https://github.com/axio-agent/axio-tui-guards) | Permission guard plugins |
|
|
232
239
|
|
|
233
240
|
## License
|
|
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
|