agentpool 2.2.3__py3-none-any.whl → 2.5.0__py3-none-any.whl
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.
- acp/__init__.py +0 -4
- acp/acp_requests.py +20 -77
- acp/agent/connection.py +8 -0
- acp/agent/implementations/debug_server/debug_server.py +6 -2
- acp/agent/protocol.py +6 -0
- acp/client/connection.py +38 -29
- acp/client/implementations/default_client.py +3 -2
- acp/client/implementations/headless_client.py +2 -2
- acp/connection.py +2 -2
- acp/notifications.py +18 -49
- acp/schema/__init__.py +2 -0
- acp/schema/agent_responses.py +21 -0
- acp/schema/client_requests.py +3 -3
- acp/schema/session_state.py +63 -29
- acp/task/supervisor.py +2 -2
- acp/utils.py +2 -2
- agentpool/__init__.py +2 -0
- agentpool/agents/acp_agent/acp_agent.py +278 -263
- agentpool/agents/acp_agent/acp_converters.py +150 -17
- agentpool/agents/acp_agent/client_handler.py +35 -24
- agentpool/agents/acp_agent/session_state.py +14 -6
- agentpool/agents/agent.py +471 -643
- agentpool/agents/agui_agent/agui_agent.py +104 -107
- agentpool/agents/agui_agent/helpers.py +3 -4
- agentpool/agents/base_agent.py +485 -32
- agentpool/agents/claude_code_agent/FORKING.md +191 -0
- agentpool/agents/claude_code_agent/__init__.py +13 -1
- agentpool/agents/claude_code_agent/claude_code_agent.py +654 -334
- agentpool/agents/claude_code_agent/converters.py +4 -141
- agentpool/agents/claude_code_agent/models.py +77 -0
- agentpool/agents/claude_code_agent/static_info.py +100 -0
- agentpool/agents/claude_code_agent/usage.py +242 -0
- agentpool/agents/events/__init__.py +22 -0
- agentpool/agents/events/builtin_handlers.py +65 -0
- agentpool/agents/events/event_emitter.py +3 -0
- agentpool/agents/events/events.py +84 -3
- agentpool/agents/events/infer_info.py +145 -0
- agentpool/agents/events/processors.py +254 -0
- agentpool/agents/interactions.py +41 -6
- agentpool/agents/modes.py +13 -0
- agentpool/agents/slashed_agent.py +5 -4
- agentpool/agents/tool_wrapping.py +18 -6
- agentpool/common_types.py +35 -21
- agentpool/config_resources/acp_assistant.yml +2 -2
- agentpool/config_resources/agents.yml +3 -0
- agentpool/config_resources/agents_template.yml +1 -0
- agentpool/config_resources/claude_code_agent.yml +9 -8
- agentpool/config_resources/external_acp_agents.yml +2 -1
- agentpool/delegation/base_team.py +4 -30
- agentpool/delegation/pool.py +104 -265
- agentpool/delegation/team.py +57 -57
- agentpool/delegation/teamrun.py +50 -55
- agentpool/functional/run.py +10 -4
- agentpool/mcp_server/client.py +73 -38
- agentpool/mcp_server/conversions.py +54 -13
- agentpool/mcp_server/manager.py +9 -23
- agentpool/mcp_server/registries/official_registry_client.py +10 -1
- agentpool/mcp_server/tool_bridge.py +114 -79
- agentpool/messaging/connection_manager.py +11 -10
- agentpool/messaging/event_manager.py +5 -5
- agentpool/messaging/message_container.py +6 -30
- agentpool/messaging/message_history.py +87 -8
- agentpool/messaging/messagenode.py +52 -14
- agentpool/messaging/messages.py +2 -26
- agentpool/messaging/processing.py +10 -22
- agentpool/models/__init__.py +1 -1
- agentpool/models/acp_agents/base.py +6 -2
- agentpool/models/acp_agents/mcp_capable.py +124 -15
- agentpool/models/acp_agents/non_mcp.py +0 -23
- agentpool/models/agents.py +66 -66
- agentpool/models/agui_agents.py +1 -1
- agentpool/models/claude_code_agents.py +111 -17
- agentpool/models/file_parsing.py +0 -1
- agentpool/models/manifest.py +70 -50
- agentpool/prompts/conversion_manager.py +1 -1
- agentpool/prompts/prompts.py +5 -2
- agentpool/resource_providers/__init__.py +2 -0
- agentpool/resource_providers/aggregating.py +4 -2
- agentpool/resource_providers/base.py +13 -3
- agentpool/resource_providers/codemode/code_executor.py +72 -5
- agentpool/resource_providers/codemode/helpers.py +2 -2
- agentpool/resource_providers/codemode/provider.py +64 -12
- agentpool/resource_providers/codemode/remote_mcp_execution.py +2 -2
- agentpool/resource_providers/codemode/remote_provider.py +9 -12
- agentpool/resource_providers/filtering.py +3 -1
- agentpool/resource_providers/mcp_provider.py +66 -12
- agentpool/resource_providers/plan_provider.py +111 -18
- agentpool/resource_providers/pool.py +5 -3
- agentpool/resource_providers/resource_info.py +111 -0
- agentpool/resource_providers/static.py +2 -2
- agentpool/sessions/__init__.py +2 -0
- agentpool/sessions/manager.py +2 -3
- agentpool/sessions/models.py +9 -6
- agentpool/sessions/protocol.py +28 -0
- agentpool/sessions/session.py +11 -55
- agentpool/storage/manager.py +361 -54
- agentpool/talk/registry.py +4 -4
- agentpool/talk/talk.py +9 -10
- agentpool/testing.py +1 -1
- agentpool/tool_impls/__init__.py +6 -0
- agentpool/tool_impls/agent_cli/__init__.py +42 -0
- agentpool/tool_impls/agent_cli/tool.py +95 -0
- agentpool/tool_impls/bash/__init__.py +64 -0
- agentpool/tool_impls/bash/helpers.py +35 -0
- agentpool/tool_impls/bash/tool.py +171 -0
- agentpool/tool_impls/delete_path/__init__.py +70 -0
- agentpool/tool_impls/delete_path/tool.py +142 -0
- agentpool/tool_impls/download_file/__init__.py +80 -0
- agentpool/tool_impls/download_file/tool.py +183 -0
- agentpool/tool_impls/execute_code/__init__.py +55 -0
- agentpool/tool_impls/execute_code/tool.py +163 -0
- agentpool/tool_impls/grep/__init__.py +80 -0
- agentpool/tool_impls/grep/tool.py +200 -0
- agentpool/tool_impls/list_directory/__init__.py +73 -0
- agentpool/tool_impls/list_directory/tool.py +197 -0
- agentpool/tool_impls/question/__init__.py +42 -0
- agentpool/tool_impls/question/tool.py +127 -0
- agentpool/tool_impls/read/__init__.py +104 -0
- agentpool/tool_impls/read/tool.py +305 -0
- agentpool/tools/__init__.py +2 -1
- agentpool/tools/base.py +114 -34
- agentpool/tools/manager.py +57 -1
- agentpool/ui/base.py +2 -2
- agentpool/ui/mock_provider.py +2 -2
- agentpool/ui/stdlib_provider.py +2 -2
- agentpool/utils/streams.py +21 -96
- agentpool/vfs_registry.py +7 -2
- {agentpool-2.2.3.dist-info → agentpool-2.5.0.dist-info}/METADATA +16 -22
- {agentpool-2.2.3.dist-info → agentpool-2.5.0.dist-info}/RECORD +242 -195
- {agentpool-2.2.3.dist-info → agentpool-2.5.0.dist-info}/WHEEL +1 -1
- agentpool_cli/__main__.py +20 -0
- agentpool_cli/create.py +1 -1
- agentpool_cli/serve_acp.py +59 -1
- agentpool_cli/serve_opencode.py +1 -1
- agentpool_cli/ui.py +557 -0
- agentpool_commands/__init__.py +12 -5
- agentpool_commands/agents.py +1 -1
- agentpool_commands/pool.py +260 -0
- agentpool_commands/session.py +1 -1
- agentpool_commands/text_sharing/__init__.py +119 -0
- agentpool_commands/text_sharing/base.py +123 -0
- agentpool_commands/text_sharing/github_gist.py +80 -0
- agentpool_commands/text_sharing/opencode.py +462 -0
- agentpool_commands/text_sharing/paste_rs.py +59 -0
- agentpool_commands/text_sharing/pastebin.py +116 -0
- agentpool_commands/text_sharing/shittycodingagent.py +112 -0
- agentpool_commands/utils.py +31 -32
- agentpool_config/__init__.py +30 -2
- agentpool_config/agentpool_tools.py +498 -0
- agentpool_config/converters.py +1 -1
- agentpool_config/event_handlers.py +42 -0
- agentpool_config/events.py +1 -1
- agentpool_config/forward_targets.py +1 -4
- agentpool_config/jinja.py +3 -3
- agentpool_config/mcp_server.py +1 -5
- agentpool_config/nodes.py +1 -1
- agentpool_config/observability.py +44 -0
- agentpool_config/session.py +0 -3
- agentpool_config/storage.py +38 -39
- agentpool_config/task.py +3 -3
- agentpool_config/tools.py +11 -28
- agentpool_config/toolsets.py +22 -90
- agentpool_server/a2a_server/agent_worker.py +307 -0
- agentpool_server/a2a_server/server.py +23 -18
- agentpool_server/acp_server/acp_agent.py +125 -56
- agentpool_server/acp_server/commands/acp_commands.py +46 -216
- agentpool_server/acp_server/commands/docs_commands/fetch_repo.py +8 -7
- agentpool_server/acp_server/event_converter.py +651 -0
- agentpool_server/acp_server/input_provider.py +53 -10
- agentpool_server/acp_server/server.py +1 -11
- agentpool_server/acp_server/session.py +90 -410
- agentpool_server/acp_server/session_manager.py +8 -34
- agentpool_server/agui_server/server.py +3 -1
- agentpool_server/mcp_server/server.py +5 -2
- agentpool_server/opencode_server/ENDPOINTS.md +53 -14
- agentpool_server/opencode_server/OPENCODE_UI_TOOLS_COMPLETE.md +202 -0
- agentpool_server/opencode_server/__init__.py +0 -8
- agentpool_server/opencode_server/converters.py +132 -26
- agentpool_server/opencode_server/input_provider.py +160 -8
- agentpool_server/opencode_server/models/__init__.py +42 -20
- agentpool_server/opencode_server/models/app.py +12 -0
- agentpool_server/opencode_server/models/events.py +203 -29
- agentpool_server/opencode_server/models/mcp.py +19 -0
- agentpool_server/opencode_server/models/message.py +18 -1
- agentpool_server/opencode_server/models/parts.py +134 -1
- agentpool_server/opencode_server/models/question.py +56 -0
- agentpool_server/opencode_server/models/session.py +13 -1
- agentpool_server/opencode_server/routes/__init__.py +4 -0
- agentpool_server/opencode_server/routes/agent_routes.py +33 -2
- agentpool_server/opencode_server/routes/app_routes.py +66 -3
- agentpool_server/opencode_server/routes/config_routes.py +66 -5
- agentpool_server/opencode_server/routes/file_routes.py +184 -5
- agentpool_server/opencode_server/routes/global_routes.py +1 -1
- agentpool_server/opencode_server/routes/lsp_routes.py +1 -1
- agentpool_server/opencode_server/routes/message_routes.py +122 -66
- agentpool_server/opencode_server/routes/permission_routes.py +63 -0
- agentpool_server/opencode_server/routes/pty_routes.py +23 -22
- agentpool_server/opencode_server/routes/question_routes.py +128 -0
- agentpool_server/opencode_server/routes/session_routes.py +139 -68
- agentpool_server/opencode_server/routes/tui_routes.py +1 -1
- agentpool_server/opencode_server/server.py +47 -2
- agentpool_server/opencode_server/state.py +30 -0
- agentpool_storage/__init__.py +0 -4
- agentpool_storage/base.py +81 -2
- agentpool_storage/claude_provider/ARCHITECTURE.md +433 -0
- agentpool_storage/claude_provider/__init__.py +42 -0
- agentpool_storage/{claude_provider.py → claude_provider/provider.py} +190 -8
- agentpool_storage/file_provider.py +149 -15
- agentpool_storage/memory_provider.py +132 -12
- agentpool_storage/opencode_provider/ARCHITECTURE.md +386 -0
- agentpool_storage/opencode_provider/__init__.py +16 -0
- agentpool_storage/opencode_provider/helpers.py +414 -0
- agentpool_storage/opencode_provider/provider.py +895 -0
- agentpool_storage/session_store.py +20 -6
- agentpool_storage/sql_provider/sql_provider.py +135 -2
- agentpool_storage/sql_provider/utils.py +2 -12
- agentpool_storage/zed_provider/__init__.py +16 -0
- agentpool_storage/zed_provider/helpers.py +281 -0
- agentpool_storage/zed_provider/models.py +130 -0
- agentpool_storage/zed_provider/provider.py +442 -0
- agentpool_storage/zed_provider.py +803 -0
- agentpool_toolsets/__init__.py +0 -2
- agentpool_toolsets/builtin/__init__.py +2 -4
- agentpool_toolsets/builtin/code.py +4 -4
- agentpool_toolsets/builtin/debug.py +115 -40
- agentpool_toolsets/builtin/execution_environment.py +54 -165
- agentpool_toolsets/builtin/skills.py +0 -77
- agentpool_toolsets/builtin/subagent_tools.py +64 -51
- agentpool_toolsets/builtin/workers.py +4 -2
- agentpool_toolsets/composio_toolset.py +2 -2
- agentpool_toolsets/entry_points.py +3 -1
- agentpool_toolsets/fsspec_toolset/grep.py +25 -5
- agentpool_toolsets/fsspec_toolset/helpers.py +3 -2
- agentpool_toolsets/fsspec_toolset/toolset.py +350 -66
- agentpool_toolsets/mcp_discovery/data/mcp_servers.parquet +0 -0
- agentpool_toolsets/mcp_discovery/toolset.py +74 -17
- agentpool_toolsets/mcp_run_toolset.py +8 -11
- agentpool_toolsets/notifications.py +33 -33
- agentpool_toolsets/openapi.py +3 -1
- agentpool_toolsets/search_toolset.py +3 -1
- agentpool_config/resources.py +0 -33
- agentpool_server/acp_server/acp_tools.py +0 -43
- agentpool_server/acp_server/commands/spawn.py +0 -210
- agentpool_storage/opencode_provider.py +0 -730
- agentpool_storage/text_log_provider.py +0 -276
- agentpool_toolsets/builtin/chain.py +0 -288
- agentpool_toolsets/builtin/user_interaction.py +0 -52
- agentpool_toolsets/semantic_memory_toolset.py +0 -536
- {agentpool-2.2.3.dist-info → agentpool-2.5.0.dist-info}/entry_points.txt +0 -0
- {agentpool-2.2.3.dist-info → agentpool-2.5.0.dist-info}/licenses/LICENSE +0 -0
agentpool/ui/stdlib_provider.py
CHANGED
|
@@ -17,7 +17,7 @@ from agentpool.ui.base import InputProvider
|
|
|
17
17
|
if TYPE_CHECKING:
|
|
18
18
|
from pydantic import BaseModel
|
|
19
19
|
|
|
20
|
-
from agentpool.agents.context import ConfirmationResult
|
|
20
|
+
from agentpool.agents.context import AgentContext, ConfirmationResult
|
|
21
21
|
from agentpool.messaging import ChatMessage
|
|
22
22
|
from agentpool.messaging.context import NodeContext
|
|
23
23
|
from agentpool.tools.base import Tool
|
|
@@ -60,7 +60,7 @@ class StdlibInputProvider(InputProvider):
|
|
|
60
60
|
|
|
61
61
|
async def get_tool_confirmation(
|
|
62
62
|
self,
|
|
63
|
-
context:
|
|
63
|
+
context: AgentContext[Any],
|
|
64
64
|
tool: Tool,
|
|
65
65
|
args: dict[str, Any],
|
|
66
66
|
message_history: list[ChatMessage[Any]] | None = None,
|
agentpool/utils/streams.py
CHANGED
|
@@ -8,11 +8,30 @@ from contextlib import asynccontextmanager
|
|
|
8
8
|
from dataclasses import dataclass, field
|
|
9
9
|
from typing import TYPE_CHECKING, Any, Literal
|
|
10
10
|
|
|
11
|
+
# Re-export FileTracker from new location for backwards compatibility
|
|
12
|
+
from agentpool.agents.events.processors import (
|
|
13
|
+
FileTracker,
|
|
14
|
+
FileTrackingProcessor,
|
|
15
|
+
extract_file_path_from_tool_call,
|
|
16
|
+
)
|
|
17
|
+
|
|
11
18
|
|
|
12
19
|
if TYPE_CHECKING:
|
|
13
20
|
from collections.abc import AsyncIterator
|
|
14
21
|
|
|
15
|
-
|
|
22
|
+
|
|
23
|
+
__all__ = [
|
|
24
|
+
"FileChange",
|
|
25
|
+
"FileOpsTracker",
|
|
26
|
+
"FileTracker",
|
|
27
|
+
"FileTrackingProcessor",
|
|
28
|
+
"TodoEntry",
|
|
29
|
+
"TodoPriority",
|
|
30
|
+
"TodoStatus",
|
|
31
|
+
"TodoTracker",
|
|
32
|
+
"extract_file_path_from_tool_call",
|
|
33
|
+
"merge_queue_into_iterator",
|
|
34
|
+
]
|
|
16
35
|
|
|
17
36
|
|
|
18
37
|
@asynccontextmanager
|
|
@@ -70,7 +89,7 @@ async def merge_queue_into_iterator[T, V]( # noqa: PLR0915
|
|
|
70
89
|
try:
|
|
71
90
|
while not primary_done.is_set():
|
|
72
91
|
try:
|
|
73
|
-
secondary_event = await asyncio.wait_for(secondary_queue.get(), timeout=0.
|
|
92
|
+
secondary_event = await asyncio.wait_for(secondary_queue.get(), timeout=0.01)
|
|
74
93
|
await event_queue.put(secondary_event)
|
|
75
94
|
except TimeoutError:
|
|
76
95
|
continue
|
|
@@ -116,100 +135,6 @@ async def merge_queue_into_iterator[T, V]( # noqa: PLR0915
|
|
|
116
135
|
await asyncio.gather(primary_task_obj, secondary_task_obj, return_exceptions=True)
|
|
117
136
|
|
|
118
137
|
|
|
119
|
-
def extract_file_path_from_tool_call(tool_name: str, raw_input: dict[str, Any]) -> str | None:
|
|
120
|
-
"""Extract file path from a tool call if it's a file-writing tool.
|
|
121
|
-
|
|
122
|
-
Uses simple heuristics:
|
|
123
|
-
- Tool name contains 'write' or 'edit' (case-insensitive)
|
|
124
|
-
- Input contains 'path' or 'file_path' key
|
|
125
|
-
|
|
126
|
-
Args:
|
|
127
|
-
tool_name: Name of the tool being called
|
|
128
|
-
raw_input: Tool call arguments
|
|
129
|
-
|
|
130
|
-
Returns:
|
|
131
|
-
File path if this is a file-writing tool, None otherwise
|
|
132
|
-
"""
|
|
133
|
-
name_lower = tool_name.lower()
|
|
134
|
-
if "write" not in name_lower and "edit" not in name_lower:
|
|
135
|
-
return None
|
|
136
|
-
|
|
137
|
-
# Try common path argument names
|
|
138
|
-
for key in ("file_path", "path", "filepath", "filename", "file"):
|
|
139
|
-
if key in raw_input and isinstance(val := raw_input[key], str):
|
|
140
|
-
return val
|
|
141
|
-
|
|
142
|
-
return None
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
@dataclass
|
|
146
|
-
class FileTracker:
|
|
147
|
-
"""Tracks files modified during a stream of events.
|
|
148
|
-
|
|
149
|
-
Example:
|
|
150
|
-
```python
|
|
151
|
-
file_tracker = FileTracker()
|
|
152
|
-
async for event in file_tracker.track(events):
|
|
153
|
-
yield event
|
|
154
|
-
|
|
155
|
-
print(f"Modified files: {file_tracker.touched_files}")
|
|
156
|
-
```
|
|
157
|
-
"""
|
|
158
|
-
|
|
159
|
-
touched_files: set[str] = field(default_factory=set)
|
|
160
|
-
"""Set of file paths that were modified by tool calls."""
|
|
161
|
-
|
|
162
|
-
extractor: Callable[[str, dict[str, Any]], str | None] = extract_file_path_from_tool_call
|
|
163
|
-
"""Function to extract file path from tool call. Can be customized."""
|
|
164
|
-
|
|
165
|
-
def process_event(self, event: Any) -> None:
|
|
166
|
-
"""Process an event and track any file modifications.
|
|
167
|
-
|
|
168
|
-
Args:
|
|
169
|
-
event: The event to process (checks for ToolCallStartEvent)
|
|
170
|
-
"""
|
|
171
|
-
# Import here to avoid circular imports
|
|
172
|
-
from agentpool.agents.events import ToolCallStartEvent
|
|
173
|
-
|
|
174
|
-
if isinstance(event, ToolCallStartEvent) and (
|
|
175
|
-
file_path := self.extractor(event.tool_name or "", event.raw_input or {})
|
|
176
|
-
):
|
|
177
|
-
self.touched_files.add(file_path)
|
|
178
|
-
|
|
179
|
-
def track[T](self, stream: AsyncIterator[T]) -> AsyncIterator[T]:
|
|
180
|
-
"""Wrap an async iterator to automatically track file modifications.
|
|
181
|
-
|
|
182
|
-
Args:
|
|
183
|
-
stream: The event stream to wrap
|
|
184
|
-
|
|
185
|
-
Returns:
|
|
186
|
-
Wrapped async iterator that tracks file modifications
|
|
187
|
-
|
|
188
|
-
Example:
|
|
189
|
-
```python
|
|
190
|
-
async for event in file_tracker.track(events):
|
|
191
|
-
yield event
|
|
192
|
-
```
|
|
193
|
-
"""
|
|
194
|
-
|
|
195
|
-
async def wrapped() -> AsyncIterator[T]:
|
|
196
|
-
async for event in stream:
|
|
197
|
-
self.process_event(event)
|
|
198
|
-
yield event
|
|
199
|
-
|
|
200
|
-
return wrapped()
|
|
201
|
-
|
|
202
|
-
def get_metadata(self) -> SimpleJsonType:
|
|
203
|
-
"""Get metadata dict with touched files (if any).
|
|
204
|
-
|
|
205
|
-
Returns:
|
|
206
|
-
Dict with 'touched_files' key if files were modified, else empty dict
|
|
207
|
-
"""
|
|
208
|
-
if self.touched_files:
|
|
209
|
-
return {"touched_files": sorted(self.touched_files)}
|
|
210
|
-
return {}
|
|
211
|
-
|
|
212
|
-
|
|
213
138
|
@dataclass
|
|
214
139
|
class FileChange:
|
|
215
140
|
"""Represents a single file change operation."""
|
agentpool/vfs_registry.py
CHANGED
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING, Literal, assert_never, overload
|
|
4
4
|
|
|
5
|
-
from upathtools import AsyncUPath,
|
|
5
|
+
from upathtools import AsyncUPath, list_files, read_folder, read_path
|
|
6
6
|
|
|
7
7
|
from agentpool.log import get_logger
|
|
8
8
|
from agentpool.utils.baseregistry import AgentPoolError
|
|
@@ -13,6 +13,7 @@ if TYPE_CHECKING:
|
|
|
13
13
|
|
|
14
14
|
from fsspec import AbstractFileSystem
|
|
15
15
|
from upathtools import AsyncUPath, UPath
|
|
16
|
+
from upathtools.filesystems import UnionFileSystem
|
|
16
17
|
|
|
17
18
|
from agentpool.models.manifest import ResourceConfig
|
|
18
19
|
|
|
@@ -25,6 +26,8 @@ class VFSRegistry:
|
|
|
25
26
|
|
|
26
27
|
def __init__(self) -> None:
|
|
27
28
|
"""Initialize empty VFS registry."""
|
|
29
|
+
from upathtools.filesystems import UnionFileSystem
|
|
30
|
+
|
|
28
31
|
self._union_fs = UnionFileSystem({})
|
|
29
32
|
logger.debug("Initialized VFS registry")
|
|
30
33
|
|
|
@@ -87,7 +90,7 @@ class VFSRegistry:
|
|
|
87
90
|
Returns:
|
|
88
91
|
The registered filesystem instance
|
|
89
92
|
"""
|
|
90
|
-
from
|
|
93
|
+
from upathtools_config.base import FileSystemConfig, URIFileSystemConfig
|
|
91
94
|
|
|
92
95
|
match config:
|
|
93
96
|
case str() as uri:
|
|
@@ -236,6 +239,8 @@ class VFSRegistry:
|
|
|
236
239
|
|
|
237
240
|
def reset(self) -> None:
|
|
238
241
|
"""Reset registry to empty state."""
|
|
242
|
+
from upathtools.filesystems import UnionFileSystem
|
|
243
|
+
|
|
239
244
|
logger.debug("Resetting VFS registry")
|
|
240
245
|
self._union_fs = UnionFileSystem({})
|
|
241
246
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentpool
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.5.0
|
|
4
4
|
Summary: Pydantic-AI based Multi-Agent Framework with YAML-based Agents, Teams, Workflows & Extended ACP / AGUI integration
|
|
5
5
|
Keywords:
|
|
6
6
|
Author: Philipp Temminghoff
|
|
@@ -24,26 +24,29 @@ Classifier: Topic :: Software Development
|
|
|
24
24
|
Classifier: Topic :: Utilities
|
|
25
25
|
Classifier: Typing :: Typed
|
|
26
26
|
Requires-Dist: anyenv[httpx]>=0.3.0
|
|
27
|
+
Requires-Dist: claude-agent-sdk>=0.1.18
|
|
27
28
|
Requires-Dist: docler>=1.0.3
|
|
28
29
|
Requires-Dist: docstring-parser>=0.17.0
|
|
29
30
|
Requires-Dist: epregistry
|
|
30
31
|
Requires-Dist: evented>=1.0.5
|
|
31
32
|
Requires-Dist: exxec>=0.1.0
|
|
33
|
+
Requires-Dist: fastapi
|
|
32
34
|
Requires-Dist: fastmcp>=2.12.4
|
|
33
35
|
Requires-Dist: fsspec
|
|
34
36
|
Requires-Dist: httpx
|
|
35
37
|
Requires-Dist: jinja2
|
|
36
38
|
Requires-Dist: jinjarope
|
|
39
|
+
Requires-Dist: keyring>=25.6.0
|
|
37
40
|
Requires-Dist: llmling-models>=1.4.1
|
|
38
|
-
Requires-Dist: logfire
|
|
41
|
+
Requires-Dist: logfire[fastapi]
|
|
39
42
|
Requires-Dist: mcp>=1.2.0
|
|
40
43
|
Requires-Dist: pillow>=11.3.0
|
|
41
44
|
Requires-Dist: platformdirs
|
|
42
45
|
Requires-Dist: promptantic>=0.4.5
|
|
43
46
|
Requires-Dist: psygnal>=0.11.1
|
|
44
47
|
Requires-Dist: pydantic>=2.10.0
|
|
45
|
-
Requires-Dist: pydantic-ai-slim>=1.0.0
|
|
46
|
-
Requires-Dist: pydocket
|
|
48
|
+
Requires-Dist: pydantic-ai-slim[openai,google,anthropic,mistral,retries]>=1.0.0
|
|
49
|
+
Requires-Dist: pydocket>=0.16.1
|
|
47
50
|
Requires-Dist: python-dotenv>=1.0.1
|
|
48
51
|
Requires-Dist: rich
|
|
49
52
|
Requires-Dist: schemez[codegen]
|
|
@@ -55,7 +58,8 @@ Requires-Dist: structlog>=25.5.0
|
|
|
55
58
|
Requires-Dist: tokonomics>=0.1.2
|
|
56
59
|
Requires-Dist: toprompt>=0.0.1
|
|
57
60
|
Requires-Dist: typer
|
|
58
|
-
Requires-Dist: upathtools>=0.1.0
|
|
61
|
+
Requires-Dist: upathtools[httpx]>=0.1.0
|
|
62
|
+
Requires-Dist: uvicorn[standard]
|
|
59
63
|
Requires-Dist: watchfiles>=1.1.1
|
|
60
64
|
Requires-Dist: websockets>=15.0
|
|
61
65
|
Requires-Dist: yamling>=2.0.2
|
|
@@ -64,8 +68,7 @@ Requires-Dist: starlette ; extra == 'a2a'
|
|
|
64
68
|
Requires-Dist: ag-ui-protocol>=0.1.10 ; extra == 'ag-ui'
|
|
65
69
|
Requires-Dist: braintrust ; extra == 'braintrust'
|
|
66
70
|
Requires-Dist: autoevals ; extra == 'braintrust'
|
|
67
|
-
Requires-Dist:
|
|
68
|
-
Requires-Dist: clipman ; extra == 'clipboard'
|
|
71
|
+
Requires-Dist: copykitten ; extra == 'clipboard'
|
|
69
72
|
Requires-Dist: rustworkx>=0.17.1 ; extra == 'coding'
|
|
70
73
|
Requires-Dist: grep-ast ; extra == 'coding'
|
|
71
74
|
Requires-Dist: ast-grep-py>=0.40.0 ; extra == 'coding'
|
|
@@ -81,8 +84,6 @@ Requires-Dist: tree-sitter-go>=0.23.0 ; extra == 'coding'
|
|
|
81
84
|
Requires-Dist: tree-sitter-json>=0.24.0 ; extra == 'coding'
|
|
82
85
|
Requires-Dist: tree-sitter-yaml>=0.6.0 ; extra == 'coding'
|
|
83
86
|
Requires-Dist: composio ; extra == 'composio'
|
|
84
|
-
Requires-Dist: pydantic-ai-slim[openai,google,anthropic,mistral,retries]>=1.0.0 ; extra == 'default'
|
|
85
|
-
Requires-Dist: claude-agent-sdk ; extra == 'default'
|
|
86
87
|
Requires-Dist: evented[all] ; extra == 'events'
|
|
87
88
|
Requires-Dist: fsspec[git] ; extra == 'git'
|
|
88
89
|
Requires-Dist: langfuse ; extra == 'langfuse'
|
|
@@ -91,16 +92,12 @@ Requires-Dist: fastembed>=0.7.4 ; python_full_version < '3.14' and extra == 'mcp
|
|
|
91
92
|
Requires-Dist: lancedb>=0.26.0 ; python_full_version < '3.14' and extra == 'mcp-discovery'
|
|
92
93
|
Requires-Dist: pyarrow>=19.0.0 ; python_full_version < '3.14' and extra == 'mcp-discovery'
|
|
93
94
|
Requires-Dist: mcpx-py>=0.7.0 ; extra == 'mcp-run'
|
|
94
|
-
Requires-Dist: typeagent>=0.3.3 ; extra == 'memory'
|
|
95
95
|
Requires-Dist: apprise>=1.9.5 ; extra == 'notifications'
|
|
96
|
-
Requires-Dist: keyring>=25.6.0 ; extra == 'oauth'
|
|
97
96
|
Requires-Dist: promptlayer ; extra == 'promptlayer'
|
|
98
|
-
Requires-Dist: logfire[fastapi] ; extra == 'server'
|
|
99
|
-
Requires-Dist: fastapi ; extra == 'server'
|
|
100
|
-
Requires-Dist: uvicorn[standard] ; extra == 'server'
|
|
101
97
|
Requires-Dist: textual>=1.0.0 ; extra == 'textual'
|
|
102
98
|
Requires-Dist: tiktoken ; extra == 'tiktoken'
|
|
103
99
|
Requires-Dist: anyvoice[tts-edge,openai]>=0.0.2 ; extra == 'tts'
|
|
100
|
+
Requires-Dist: zstandard>=0.23.0 ; extra == 'zed'
|
|
104
101
|
Requires-Python: >=3.13
|
|
105
102
|
Project-URL: Code coverage, https://app.codecov.io/gh/phil65/agentpool
|
|
106
103
|
Project-URL: Discussions, https://github.com/phil65/agentpool/discussions
|
|
@@ -110,25 +107,21 @@ Project-URL: Source, https://github.com/phil65/agentpool
|
|
|
110
107
|
Provides-Extra: a2a
|
|
111
108
|
Provides-Extra: ag-ui
|
|
112
109
|
Provides-Extra: braintrust
|
|
113
|
-
Provides-Extra: claude
|
|
114
110
|
Provides-Extra: clipboard
|
|
115
111
|
Provides-Extra: coding
|
|
116
112
|
Provides-Extra: composio
|
|
117
|
-
Provides-Extra: default
|
|
118
113
|
Provides-Extra: events
|
|
119
114
|
Provides-Extra: git
|
|
120
115
|
Provides-Extra: langfuse
|
|
121
116
|
Provides-Extra: markitdown
|
|
122
117
|
Provides-Extra: mcp-discovery
|
|
123
118
|
Provides-Extra: mcp-run
|
|
124
|
-
Provides-Extra: memory
|
|
125
119
|
Provides-Extra: notifications
|
|
126
|
-
Provides-Extra: oauth
|
|
127
120
|
Provides-Extra: promptlayer
|
|
128
|
-
Provides-Extra: server
|
|
129
121
|
Provides-Extra: textual
|
|
130
122
|
Provides-Extra: tiktoken
|
|
131
123
|
Provides-Extra: tts
|
|
124
|
+
Provides-Extra: zed
|
|
132
125
|
Description-Content-Type: text/markdown
|
|
133
126
|
|
|
134
127
|
# AgentPool
|
|
@@ -182,7 +175,8 @@ flowchart TB
|
|
|
182
175
|
## Quick Start
|
|
183
176
|
|
|
184
177
|
```bash
|
|
185
|
-
uv tool install agentpool
|
|
178
|
+
uv tool install agentpool
|
|
179
|
+
|
|
186
180
|
```
|
|
187
181
|
|
|
188
182
|
### Minimal Configuration
|
|
@@ -214,7 +208,7 @@ agents:
|
|
|
214
208
|
coordinator:
|
|
215
209
|
type: native
|
|
216
210
|
model: openai:gpt-4o
|
|
217
|
-
|
|
211
|
+
tools:
|
|
218
212
|
- type: subagent # Can delegate to all other agents
|
|
219
213
|
system_prompt: "Coordinate tasks between available agents."
|
|
220
214
|
|
|
@@ -282,7 +276,7 @@ agents:
|
|
|
282
276
|
model:
|
|
283
277
|
type: fallback
|
|
284
278
|
models: [openai:gpt-4o, anthropic:claude-sonnet-4-0]
|
|
285
|
-
|
|
279
|
+
tools:
|
|
286
280
|
- type: subagent
|
|
287
281
|
- type: resource_access
|
|
288
282
|
mcp_servers:
|