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.
Files changed (250) hide show
  1. acp/__init__.py +0 -4
  2. acp/acp_requests.py +20 -77
  3. acp/agent/connection.py +8 -0
  4. acp/agent/implementations/debug_server/debug_server.py +6 -2
  5. acp/agent/protocol.py +6 -0
  6. acp/client/connection.py +38 -29
  7. acp/client/implementations/default_client.py +3 -2
  8. acp/client/implementations/headless_client.py +2 -2
  9. acp/connection.py +2 -2
  10. acp/notifications.py +18 -49
  11. acp/schema/__init__.py +2 -0
  12. acp/schema/agent_responses.py +21 -0
  13. acp/schema/client_requests.py +3 -3
  14. acp/schema/session_state.py +63 -29
  15. acp/task/supervisor.py +2 -2
  16. acp/utils.py +2 -2
  17. agentpool/__init__.py +2 -0
  18. agentpool/agents/acp_agent/acp_agent.py +278 -263
  19. agentpool/agents/acp_agent/acp_converters.py +150 -17
  20. agentpool/agents/acp_agent/client_handler.py +35 -24
  21. agentpool/agents/acp_agent/session_state.py +14 -6
  22. agentpool/agents/agent.py +471 -643
  23. agentpool/agents/agui_agent/agui_agent.py +104 -107
  24. agentpool/agents/agui_agent/helpers.py +3 -4
  25. agentpool/agents/base_agent.py +485 -32
  26. agentpool/agents/claude_code_agent/FORKING.md +191 -0
  27. agentpool/agents/claude_code_agent/__init__.py +13 -1
  28. agentpool/agents/claude_code_agent/claude_code_agent.py +654 -334
  29. agentpool/agents/claude_code_agent/converters.py +4 -141
  30. agentpool/agents/claude_code_agent/models.py +77 -0
  31. agentpool/agents/claude_code_agent/static_info.py +100 -0
  32. agentpool/agents/claude_code_agent/usage.py +242 -0
  33. agentpool/agents/events/__init__.py +22 -0
  34. agentpool/agents/events/builtin_handlers.py +65 -0
  35. agentpool/agents/events/event_emitter.py +3 -0
  36. agentpool/agents/events/events.py +84 -3
  37. agentpool/agents/events/infer_info.py +145 -0
  38. agentpool/agents/events/processors.py +254 -0
  39. agentpool/agents/interactions.py +41 -6
  40. agentpool/agents/modes.py +13 -0
  41. agentpool/agents/slashed_agent.py +5 -4
  42. agentpool/agents/tool_wrapping.py +18 -6
  43. agentpool/common_types.py +35 -21
  44. agentpool/config_resources/acp_assistant.yml +2 -2
  45. agentpool/config_resources/agents.yml +3 -0
  46. agentpool/config_resources/agents_template.yml +1 -0
  47. agentpool/config_resources/claude_code_agent.yml +9 -8
  48. agentpool/config_resources/external_acp_agents.yml +2 -1
  49. agentpool/delegation/base_team.py +4 -30
  50. agentpool/delegation/pool.py +104 -265
  51. agentpool/delegation/team.py +57 -57
  52. agentpool/delegation/teamrun.py +50 -55
  53. agentpool/functional/run.py +10 -4
  54. agentpool/mcp_server/client.py +73 -38
  55. agentpool/mcp_server/conversions.py +54 -13
  56. agentpool/mcp_server/manager.py +9 -23
  57. agentpool/mcp_server/registries/official_registry_client.py +10 -1
  58. agentpool/mcp_server/tool_bridge.py +114 -79
  59. agentpool/messaging/connection_manager.py +11 -10
  60. agentpool/messaging/event_manager.py +5 -5
  61. agentpool/messaging/message_container.py +6 -30
  62. agentpool/messaging/message_history.py +87 -8
  63. agentpool/messaging/messagenode.py +52 -14
  64. agentpool/messaging/messages.py +2 -26
  65. agentpool/messaging/processing.py +10 -22
  66. agentpool/models/__init__.py +1 -1
  67. agentpool/models/acp_agents/base.py +6 -2
  68. agentpool/models/acp_agents/mcp_capable.py +124 -15
  69. agentpool/models/acp_agents/non_mcp.py +0 -23
  70. agentpool/models/agents.py +66 -66
  71. agentpool/models/agui_agents.py +1 -1
  72. agentpool/models/claude_code_agents.py +111 -17
  73. agentpool/models/file_parsing.py +0 -1
  74. agentpool/models/manifest.py +70 -50
  75. agentpool/prompts/conversion_manager.py +1 -1
  76. agentpool/prompts/prompts.py +5 -2
  77. agentpool/resource_providers/__init__.py +2 -0
  78. agentpool/resource_providers/aggregating.py +4 -2
  79. agentpool/resource_providers/base.py +13 -3
  80. agentpool/resource_providers/codemode/code_executor.py +72 -5
  81. agentpool/resource_providers/codemode/helpers.py +2 -2
  82. agentpool/resource_providers/codemode/provider.py +64 -12
  83. agentpool/resource_providers/codemode/remote_mcp_execution.py +2 -2
  84. agentpool/resource_providers/codemode/remote_provider.py +9 -12
  85. agentpool/resource_providers/filtering.py +3 -1
  86. agentpool/resource_providers/mcp_provider.py +66 -12
  87. agentpool/resource_providers/plan_provider.py +111 -18
  88. agentpool/resource_providers/pool.py +5 -3
  89. agentpool/resource_providers/resource_info.py +111 -0
  90. agentpool/resource_providers/static.py +2 -2
  91. agentpool/sessions/__init__.py +2 -0
  92. agentpool/sessions/manager.py +2 -3
  93. agentpool/sessions/models.py +9 -6
  94. agentpool/sessions/protocol.py +28 -0
  95. agentpool/sessions/session.py +11 -55
  96. agentpool/storage/manager.py +361 -54
  97. agentpool/talk/registry.py +4 -4
  98. agentpool/talk/talk.py +9 -10
  99. agentpool/testing.py +1 -1
  100. agentpool/tool_impls/__init__.py +6 -0
  101. agentpool/tool_impls/agent_cli/__init__.py +42 -0
  102. agentpool/tool_impls/agent_cli/tool.py +95 -0
  103. agentpool/tool_impls/bash/__init__.py +64 -0
  104. agentpool/tool_impls/bash/helpers.py +35 -0
  105. agentpool/tool_impls/bash/tool.py +171 -0
  106. agentpool/tool_impls/delete_path/__init__.py +70 -0
  107. agentpool/tool_impls/delete_path/tool.py +142 -0
  108. agentpool/tool_impls/download_file/__init__.py +80 -0
  109. agentpool/tool_impls/download_file/tool.py +183 -0
  110. agentpool/tool_impls/execute_code/__init__.py +55 -0
  111. agentpool/tool_impls/execute_code/tool.py +163 -0
  112. agentpool/tool_impls/grep/__init__.py +80 -0
  113. agentpool/tool_impls/grep/tool.py +200 -0
  114. agentpool/tool_impls/list_directory/__init__.py +73 -0
  115. agentpool/tool_impls/list_directory/tool.py +197 -0
  116. agentpool/tool_impls/question/__init__.py +42 -0
  117. agentpool/tool_impls/question/tool.py +127 -0
  118. agentpool/tool_impls/read/__init__.py +104 -0
  119. agentpool/tool_impls/read/tool.py +305 -0
  120. agentpool/tools/__init__.py +2 -1
  121. agentpool/tools/base.py +114 -34
  122. agentpool/tools/manager.py +57 -1
  123. agentpool/ui/base.py +2 -2
  124. agentpool/ui/mock_provider.py +2 -2
  125. agentpool/ui/stdlib_provider.py +2 -2
  126. agentpool/utils/streams.py +21 -96
  127. agentpool/vfs_registry.py +7 -2
  128. {agentpool-2.2.3.dist-info → agentpool-2.5.0.dist-info}/METADATA +16 -22
  129. {agentpool-2.2.3.dist-info → agentpool-2.5.0.dist-info}/RECORD +242 -195
  130. {agentpool-2.2.3.dist-info → agentpool-2.5.0.dist-info}/WHEEL +1 -1
  131. agentpool_cli/__main__.py +20 -0
  132. agentpool_cli/create.py +1 -1
  133. agentpool_cli/serve_acp.py +59 -1
  134. agentpool_cli/serve_opencode.py +1 -1
  135. agentpool_cli/ui.py +557 -0
  136. agentpool_commands/__init__.py +12 -5
  137. agentpool_commands/agents.py +1 -1
  138. agentpool_commands/pool.py +260 -0
  139. agentpool_commands/session.py +1 -1
  140. agentpool_commands/text_sharing/__init__.py +119 -0
  141. agentpool_commands/text_sharing/base.py +123 -0
  142. agentpool_commands/text_sharing/github_gist.py +80 -0
  143. agentpool_commands/text_sharing/opencode.py +462 -0
  144. agentpool_commands/text_sharing/paste_rs.py +59 -0
  145. agentpool_commands/text_sharing/pastebin.py +116 -0
  146. agentpool_commands/text_sharing/shittycodingagent.py +112 -0
  147. agentpool_commands/utils.py +31 -32
  148. agentpool_config/__init__.py +30 -2
  149. agentpool_config/agentpool_tools.py +498 -0
  150. agentpool_config/converters.py +1 -1
  151. agentpool_config/event_handlers.py +42 -0
  152. agentpool_config/events.py +1 -1
  153. agentpool_config/forward_targets.py +1 -4
  154. agentpool_config/jinja.py +3 -3
  155. agentpool_config/mcp_server.py +1 -5
  156. agentpool_config/nodes.py +1 -1
  157. agentpool_config/observability.py +44 -0
  158. agentpool_config/session.py +0 -3
  159. agentpool_config/storage.py +38 -39
  160. agentpool_config/task.py +3 -3
  161. agentpool_config/tools.py +11 -28
  162. agentpool_config/toolsets.py +22 -90
  163. agentpool_server/a2a_server/agent_worker.py +307 -0
  164. agentpool_server/a2a_server/server.py +23 -18
  165. agentpool_server/acp_server/acp_agent.py +125 -56
  166. agentpool_server/acp_server/commands/acp_commands.py +46 -216
  167. agentpool_server/acp_server/commands/docs_commands/fetch_repo.py +8 -7
  168. agentpool_server/acp_server/event_converter.py +651 -0
  169. agentpool_server/acp_server/input_provider.py +53 -10
  170. agentpool_server/acp_server/server.py +1 -11
  171. agentpool_server/acp_server/session.py +90 -410
  172. agentpool_server/acp_server/session_manager.py +8 -34
  173. agentpool_server/agui_server/server.py +3 -1
  174. agentpool_server/mcp_server/server.py +5 -2
  175. agentpool_server/opencode_server/ENDPOINTS.md +53 -14
  176. agentpool_server/opencode_server/OPENCODE_UI_TOOLS_COMPLETE.md +202 -0
  177. agentpool_server/opencode_server/__init__.py +0 -8
  178. agentpool_server/opencode_server/converters.py +132 -26
  179. agentpool_server/opencode_server/input_provider.py +160 -8
  180. agentpool_server/opencode_server/models/__init__.py +42 -20
  181. agentpool_server/opencode_server/models/app.py +12 -0
  182. agentpool_server/opencode_server/models/events.py +203 -29
  183. agentpool_server/opencode_server/models/mcp.py +19 -0
  184. agentpool_server/opencode_server/models/message.py +18 -1
  185. agentpool_server/opencode_server/models/parts.py +134 -1
  186. agentpool_server/opencode_server/models/question.py +56 -0
  187. agentpool_server/opencode_server/models/session.py +13 -1
  188. agentpool_server/opencode_server/routes/__init__.py +4 -0
  189. agentpool_server/opencode_server/routes/agent_routes.py +33 -2
  190. agentpool_server/opencode_server/routes/app_routes.py +66 -3
  191. agentpool_server/opencode_server/routes/config_routes.py +66 -5
  192. agentpool_server/opencode_server/routes/file_routes.py +184 -5
  193. agentpool_server/opencode_server/routes/global_routes.py +1 -1
  194. agentpool_server/opencode_server/routes/lsp_routes.py +1 -1
  195. agentpool_server/opencode_server/routes/message_routes.py +122 -66
  196. agentpool_server/opencode_server/routes/permission_routes.py +63 -0
  197. agentpool_server/opencode_server/routes/pty_routes.py +23 -22
  198. agentpool_server/opencode_server/routes/question_routes.py +128 -0
  199. agentpool_server/opencode_server/routes/session_routes.py +139 -68
  200. agentpool_server/opencode_server/routes/tui_routes.py +1 -1
  201. agentpool_server/opencode_server/server.py +47 -2
  202. agentpool_server/opencode_server/state.py +30 -0
  203. agentpool_storage/__init__.py +0 -4
  204. agentpool_storage/base.py +81 -2
  205. agentpool_storage/claude_provider/ARCHITECTURE.md +433 -0
  206. agentpool_storage/claude_provider/__init__.py +42 -0
  207. agentpool_storage/{claude_provider.py → claude_provider/provider.py} +190 -8
  208. agentpool_storage/file_provider.py +149 -15
  209. agentpool_storage/memory_provider.py +132 -12
  210. agentpool_storage/opencode_provider/ARCHITECTURE.md +386 -0
  211. agentpool_storage/opencode_provider/__init__.py +16 -0
  212. agentpool_storage/opencode_provider/helpers.py +414 -0
  213. agentpool_storage/opencode_provider/provider.py +895 -0
  214. agentpool_storage/session_store.py +20 -6
  215. agentpool_storage/sql_provider/sql_provider.py +135 -2
  216. agentpool_storage/sql_provider/utils.py +2 -12
  217. agentpool_storage/zed_provider/__init__.py +16 -0
  218. agentpool_storage/zed_provider/helpers.py +281 -0
  219. agentpool_storage/zed_provider/models.py +130 -0
  220. agentpool_storage/zed_provider/provider.py +442 -0
  221. agentpool_storage/zed_provider.py +803 -0
  222. agentpool_toolsets/__init__.py +0 -2
  223. agentpool_toolsets/builtin/__init__.py +2 -4
  224. agentpool_toolsets/builtin/code.py +4 -4
  225. agentpool_toolsets/builtin/debug.py +115 -40
  226. agentpool_toolsets/builtin/execution_environment.py +54 -165
  227. agentpool_toolsets/builtin/skills.py +0 -77
  228. agentpool_toolsets/builtin/subagent_tools.py +64 -51
  229. agentpool_toolsets/builtin/workers.py +4 -2
  230. agentpool_toolsets/composio_toolset.py +2 -2
  231. agentpool_toolsets/entry_points.py +3 -1
  232. agentpool_toolsets/fsspec_toolset/grep.py +25 -5
  233. agentpool_toolsets/fsspec_toolset/helpers.py +3 -2
  234. agentpool_toolsets/fsspec_toolset/toolset.py +350 -66
  235. agentpool_toolsets/mcp_discovery/data/mcp_servers.parquet +0 -0
  236. agentpool_toolsets/mcp_discovery/toolset.py +74 -17
  237. agentpool_toolsets/mcp_run_toolset.py +8 -11
  238. agentpool_toolsets/notifications.py +33 -33
  239. agentpool_toolsets/openapi.py +3 -1
  240. agentpool_toolsets/search_toolset.py +3 -1
  241. agentpool_config/resources.py +0 -33
  242. agentpool_server/acp_server/acp_tools.py +0 -43
  243. agentpool_server/acp_server/commands/spawn.py +0 -210
  244. agentpool_storage/opencode_provider.py +0 -730
  245. agentpool_storage/text_log_provider.py +0 -276
  246. agentpool_toolsets/builtin/chain.py +0 -288
  247. agentpool_toolsets/builtin/user_interaction.py +0 -52
  248. agentpool_toolsets/semantic_memory_toolset.py +0 -536
  249. {agentpool-2.2.3.dist-info → agentpool-2.5.0.dist-info}/entry_points.txt +0 -0
  250. {agentpool-2.2.3.dist-info → agentpool-2.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -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: NodeContext,
63
+ context: AgentContext[Any],
64
64
  tool: Tool,
65
65
  args: dict[str, Any],
66
66
  message_history: list[ChatMessage[Any]] | None = None,
@@ -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
- from agentpool.common_types import SimpleJsonType
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.1)
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, UnionFileSystem, list_files, read_folder, read_path
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 upathtools.configs.base import FileSystemConfig, URIFileSystemConfig
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.2.3
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==0.16.1
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: claude-agent-sdk>=0.1.18 ; extra == 'claude'
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[default]
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
- toolsets:
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
- toolsets:
279
+ tools:
286
280
  - type: subagent
287
281
  - type: resource_access
288
282
  mcp_servers: