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.
Files changed (44) hide show
  1. {axio-0.6.0 → axio-0.6.2}/.gitignore +2 -0
  2. {axio-0.6.0 → axio-0.6.2}/PKG-INFO +22 -15
  3. {axio-0.6.0 → axio-0.6.2}/README.md +21 -14
  4. {axio-0.6.0 → axio-0.6.2}/pyproject.toml +1 -1
  5. {axio-0.6.0 → axio-0.6.2}/.github/workflows/publish.yml +0 -0
  6. {axio-0.6.0 → axio-0.6.2}/.github/workflows/tests.yml +0 -0
  7. {axio-0.6.0 → axio-0.6.2}/LICENSE +0 -0
  8. {axio-0.6.0 → axio-0.6.2}/Makefile +0 -0
  9. {axio-0.6.0 → axio-0.6.2}/src/axio/__init__.py +0 -0
  10. {axio-0.6.0 → axio-0.6.2}/src/axio/agent.py +0 -0
  11. {axio-0.6.0 → axio-0.6.2}/src/axio/blocks.py +0 -0
  12. {axio-0.6.0 → axio-0.6.2}/src/axio/compaction.py +0 -0
  13. {axio-0.6.0 → axio-0.6.2}/src/axio/context.py +0 -0
  14. {axio-0.6.0 → axio-0.6.2}/src/axio/events.py +0 -0
  15. {axio-0.6.0 → axio-0.6.2}/src/axio/exceptions.py +0 -0
  16. {axio-0.6.0 → axio-0.6.2}/src/axio/messages.py +0 -0
  17. {axio-0.6.0 → axio-0.6.2}/src/axio/models.py +0 -0
  18. {axio-0.6.0 → axio-0.6.2}/src/axio/permission.py +0 -0
  19. {axio-0.6.0 → axio-0.6.2}/src/axio/py.typed +0 -0
  20. {axio-0.6.0 → axio-0.6.2}/src/axio/selector.py +0 -0
  21. {axio-0.6.0 → axio-0.6.2}/src/axio/stream.py +0 -0
  22. {axio-0.6.0 → axio-0.6.2}/src/axio/testing.py +0 -0
  23. {axio-0.6.0 → axio-0.6.2}/src/axio/tool.py +0 -0
  24. {axio-0.6.0 → axio-0.6.2}/src/axio/tool_args.py +0 -0
  25. {axio-0.6.0 → axio-0.6.2}/src/axio/transport.py +0 -0
  26. {axio-0.6.0 → axio-0.6.2}/src/axio/types.py +0 -0
  27. {axio-0.6.0 → axio-0.6.2}/tests/conftest.py +0 -0
  28. {axio-0.6.0 → axio-0.6.2}/tests/test_agent_branch.py +0 -0
  29. {axio-0.6.0 → axio-0.6.2}/tests/test_agent_permission.py +0 -0
  30. {axio-0.6.0 → axio-0.6.2}/tests/test_agent_run.py +0 -0
  31. {axio-0.6.0 → axio-0.6.2}/tests/test_agent_stream.py +0 -0
  32. {axio-0.6.0 → axio-0.6.2}/tests/test_agent_tools.py +0 -0
  33. {axio-0.6.0 → axio-0.6.2}/tests/test_blocks.py +0 -0
  34. {axio-0.6.0 → axio-0.6.2}/tests/test_context.py +0 -0
  35. {axio-0.6.0 → axio-0.6.2}/tests/test_events.py +0 -0
  36. {axio-0.6.0 → axio-0.6.2}/tests/test_exceptions.py +0 -0
  37. {axio-0.6.0 → axio-0.6.2}/tests/test_models.py +0 -0
  38. {axio-0.6.0 → axio-0.6.2}/tests/test_permission.py +0 -0
  39. {axio-0.6.0 → axio-0.6.2}/tests/test_stream.py +0 -0
  40. {axio-0.6.0 → axio-0.6.2}/tests/test_tool.py +0 -0
  41. {axio-0.6.0 → axio-0.6.2}/tests/test_tool_args.py +0 -0
  42. {axio-0.6.0 → axio-0.6.2}/tests/test_transport.py +0 -0
  43. {axio-0.6.0 → axio-0.6.2}/tests/test_types.py +0 -0
  44. {axio-0.6.0 → axio-0.6.2}/uv.lock +0 -0
@@ -10,3 +10,5 @@ dist/
10
10
  build/
11
11
  _build/
12
12
  .DS_Store
13
+ *.sqlite
14
+ *.db
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: axio
3
- Version: 0.6.0
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], transport=transport)
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, ABC):
139
- @abstractmethod
140
- async def append(self, message: Message) -> None: ...
137
+ class MyContextStore(ContextStore):
138
+ def __init__(self) -> None:
139
+ self._messages: list[Message] = []
141
140
 
142
- @abstractmethod
143
- async def get_history(self) -> list[Message]: ...
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() has a default implementation.
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 Protocol, runtime_checkable
154
- from axio.tool import ToolHandler
159
+ from typing import Any
160
+ from axio.permission import PermissionGuard
155
161
 
156
- @runtime_checkable
157
- class PermissionGuard(Protocol):
158
- async def check(self, handler: ToolHandler) -> ToolHandler: ...
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], transport=transport)
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, ABC):
126
- @abstractmethod
127
- async def append(self, message: Message) -> None: ...
124
+ class MyContextStore(ContextStore):
125
+ def __init__(self) -> None:
126
+ self._messages: list[Message] = []
128
127
 
129
- @abstractmethod
130
- async def get_history(self) -> list[Message]: ...
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() has a default implementation.
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 Protocol, runtime_checkable
141
- from axio.tool import ToolHandler
146
+ from typing import Any
147
+ from axio.permission import PermissionGuard
142
148
 
143
- @runtime_checkable
144
- class PermissionGuard(Protocol):
145
- async def check(self, handler: ToolHandler) -> ToolHandler: ...
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "axio"
3
- version = "0.6.0"
3
+ version = "0.6.2"
4
4
  description = "Minimal, streaming-first, protocol-driven foundation for LLM-powered agents"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
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