agentpool 2.1.9__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 +13 -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/bridge/README.md +15 -2
- acp/bridge/__init__.py +3 -2
- acp/bridge/__main__.py +60 -19
- acp/bridge/ws_server.py +173 -0
- acp/bridge/ws_server_cli.py +89 -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 +20 -50
- 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/stdio.py +39 -9
- acp/task/supervisor.py +2 -2
- acp/transports.py +362 -2
- acp/utils.py +17 -4
- agentpool/__init__.py +6 -1
- agentpool/agents/__init__.py +2 -0
- agentpool/agents/acp_agent/acp_agent.py +407 -277
- agentpool/agents/acp_agent/acp_converters.py +196 -38
- agentpool/agents/acp_agent/client_handler.py +191 -26
- agentpool/agents/acp_agent/session_state.py +17 -6
- agentpool/agents/agent.py +607 -572
- agentpool/agents/agui_agent/__init__.py +0 -2
- agentpool/agents/agui_agent/agui_agent.py +176 -110
- agentpool/agents/agui_agent/agui_converters.py +0 -131
- agentpool/agents/agui_agent/helpers.py +3 -4
- agentpool/agents/base_agent.py +632 -17
- 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 +1058 -291
- agentpool/agents/claude_code_agent/converters.py +74 -143
- agentpool/agents/claude_code_agent/history.py +474 -0
- 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/context.py +40 -0
- agentpool/agents/events/__init__.py +24 -0
- agentpool/agents/events/builtin_handlers.py +67 -1
- agentpool/agents/events/event_emitter.py +32 -2
- agentpool/agents/events/events.py +104 -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 +67 -0
- agentpool/agents/slashed_agent.py +5 -4
- agentpool/agents/tool_call_accumulator.py +213 -0
- agentpool/agents/tool_wrapping.py +18 -6
- agentpool/common_types.py +56 -21
- agentpool/config_resources/__init__.py +38 -1
- 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 +10 -6
- agentpool/config_resources/external_acp_agents.yml +2 -1
- agentpool/delegation/base_team.py +4 -30
- agentpool/delegation/pool.py +136 -289
- agentpool/delegation/team.py +58 -57
- agentpool/delegation/teamrun.py +51 -55
- agentpool/diagnostics/__init__.py +53 -0
- agentpool/diagnostics/lsp_manager.py +1593 -0
- agentpool/diagnostics/lsp_proxy.py +41 -0
- agentpool/diagnostics/lsp_proxy_script.py +229 -0
- agentpool/diagnostics/models.py +398 -0
- agentpool/functional/run.py +10 -4
- agentpool/mcp_server/__init__.py +0 -2
- agentpool/mcp_server/client.py +76 -32
- agentpool/mcp_server/conversions.py +54 -13
- agentpool/mcp_server/manager.py +34 -54
- agentpool/mcp_server/registries/official_registry_client.py +35 -1
- agentpool/mcp_server/tool_bridge.py +186 -139
- agentpool/messaging/__init__.py +0 -2
- agentpool/messaging/compaction.py +72 -197
- 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 +99 -8
- agentpool/messaging/messagenode.py +52 -14
- agentpool/messaging/messages.py +54 -35
- agentpool/messaging/processing.py +12 -22
- agentpool/models/__init__.py +1 -1
- agentpool/models/acp_agents/base.py +6 -24
- agentpool/models/acp_agents/mcp_capable.py +126 -157
- agentpool/models/acp_agents/non_mcp.py +129 -95
- agentpool/models/agents.py +98 -76
- agentpool/models/agui_agents.py +1 -1
- agentpool/models/claude_code_agents.py +144 -19
- agentpool/models/file_parsing.py +0 -1
- agentpool/models/manifest.py +113 -50
- agentpool/prompts/conversion_manager.py +1 -1
- agentpool/prompts/prompts.py +5 -2
- agentpool/repomap.py +1 -1
- agentpool/resource_providers/__init__.py +11 -1
- agentpool/resource_providers/aggregating.py +56 -5
- agentpool/resource_providers/base.py +70 -4
- 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 +89 -12
- agentpool/resource_providers/plan_provider.py +228 -46
- agentpool/resource_providers/pool.py +7 -3
- agentpool/resource_providers/resource_info.py +111 -0
- agentpool/resource_providers/static.py +4 -2
- agentpool/sessions/__init__.py +4 -1
- agentpool/sessions/manager.py +33 -5
- agentpool/sessions/models.py +59 -6
- agentpool/sessions/protocol.py +28 -0
- agentpool/sessions/session.py +11 -55
- agentpool/skills/registry.py +13 -8
- agentpool/storage/manager.py +572 -49
- agentpool/talk/registry.py +4 -4
- agentpool/talk/talk.py +9 -10
- agentpool/testing.py +538 -20
- 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/file_watcher.py +269 -0
- agentpool/utils/identifiers.py +121 -0
- agentpool/utils/pydantic_ai_helpers.py +46 -0
- agentpool/utils/streams.py +616 -2
- agentpool/utils/subprocess_utils.py +155 -0
- agentpool/utils/token_breakdown.py +461 -0
- agentpool/vfs_registry.py +7 -2
- {agentpool-2.1.9.dist-info → agentpool-2.5.0.dist-info}/METADATA +41 -27
- agentpool-2.5.0.dist-info/RECORD +579 -0
- {agentpool-2.1.9.dist-info → agentpool-2.5.0.dist-info}/WHEEL +1 -1
- agentpool_cli/__main__.py +24 -0
- agentpool_cli/create.py +1 -1
- agentpool_cli/serve_acp.py +100 -21
- agentpool_cli/serve_agui.py +87 -0
- agentpool_cli/serve_opencode.py +119 -0
- agentpool_cli/ui.py +557 -0
- agentpool_commands/__init__.py +42 -5
- agentpool_commands/agents.py +75 -2
- agentpool_commands/history.py +62 -0
- agentpool_commands/mcp.py +176 -0
- agentpool_commands/models.py +56 -3
- 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/tools.py +57 -0
- agentpool_commands/utils.py +80 -30
- agentpool_config/__init__.py +30 -2
- agentpool_config/agentpool_tools.py +498 -0
- agentpool_config/builtin_tools.py +77 -22
- agentpool_config/commands.py +24 -1
- agentpool_config/compaction.py +258 -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 +132 -6
- agentpool_config/nodes.py +1 -1
- agentpool_config/observability.py +44 -0
- agentpool_config/session.py +0 -3
- agentpool_config/storage.py +82 -38
- agentpool_config/task.py +3 -3
- agentpool_config/tools.py +11 -22
- agentpool_config/toolsets.py +109 -233
- agentpool_server/a2a_server/agent_worker.py +307 -0
- agentpool_server/a2a_server/server.py +23 -18
- agentpool_server/acp_server/acp_agent.py +234 -181
- agentpool_server/acp_server/commands/acp_commands.py +151 -156
- agentpool_server/acp_server/commands/docs_commands/fetch_repo.py +18 -17
- agentpool_server/acp_server/event_converter.py +651 -0
- agentpool_server/acp_server/input_provider.py +53 -10
- agentpool_server/acp_server/server.py +24 -90
- agentpool_server/acp_server/session.py +173 -331
- 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/.rules +95 -0
- agentpool_server/opencode_server/ENDPOINTS.md +401 -0
- agentpool_server/opencode_server/OPENCODE_UI_TOOLS_COMPLETE.md +202 -0
- agentpool_server/opencode_server/__init__.py +19 -0
- agentpool_server/opencode_server/command_validation.py +172 -0
- agentpool_server/opencode_server/converters.py +975 -0
- agentpool_server/opencode_server/dependencies.py +24 -0
- agentpool_server/opencode_server/input_provider.py +421 -0
- agentpool_server/opencode_server/models/__init__.py +250 -0
- agentpool_server/opencode_server/models/agent.py +53 -0
- agentpool_server/opencode_server/models/app.py +72 -0
- agentpool_server/opencode_server/models/base.py +26 -0
- agentpool_server/opencode_server/models/common.py +23 -0
- agentpool_server/opencode_server/models/config.py +37 -0
- agentpool_server/opencode_server/models/events.py +821 -0
- agentpool_server/opencode_server/models/file.py +88 -0
- agentpool_server/opencode_server/models/mcp.py +44 -0
- agentpool_server/opencode_server/models/message.py +179 -0
- agentpool_server/opencode_server/models/parts.py +323 -0
- agentpool_server/opencode_server/models/provider.py +81 -0
- agentpool_server/opencode_server/models/pty.py +43 -0
- agentpool_server/opencode_server/models/question.py +56 -0
- agentpool_server/opencode_server/models/session.py +111 -0
- agentpool_server/opencode_server/routes/__init__.py +29 -0
- agentpool_server/opencode_server/routes/agent_routes.py +473 -0
- agentpool_server/opencode_server/routes/app_routes.py +202 -0
- agentpool_server/opencode_server/routes/config_routes.py +302 -0
- agentpool_server/opencode_server/routes/file_routes.py +571 -0
- agentpool_server/opencode_server/routes/global_routes.py +94 -0
- agentpool_server/opencode_server/routes/lsp_routes.py +319 -0
- agentpool_server/opencode_server/routes/message_routes.py +761 -0
- agentpool_server/opencode_server/routes/permission_routes.py +63 -0
- agentpool_server/opencode_server/routes/pty_routes.py +300 -0
- agentpool_server/opencode_server/routes/question_routes.py +128 -0
- agentpool_server/opencode_server/routes/session_routes.py +1276 -0
- agentpool_server/opencode_server/routes/tui_routes.py +139 -0
- agentpool_server/opencode_server/server.py +475 -0
- agentpool_server/opencode_server/state.py +151 -0
- agentpool_server/opencode_server/time_utils.py +8 -0
- agentpool_storage/__init__.py +12 -0
- agentpool_storage/base.py +184 -2
- agentpool_storage/claude_provider/ARCHITECTURE.md +433 -0
- agentpool_storage/claude_provider/__init__.py +42 -0
- agentpool_storage/claude_provider/provider.py +1089 -0
- agentpool_storage/file_provider.py +278 -15
- agentpool_storage/memory_provider.py +193 -12
- agentpool_storage/models.py +3 -0
- 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/project_store.py +325 -0
- agentpool_storage/session_store.py +26 -6
- agentpool_storage/sql_provider/__init__.py +4 -2
- agentpool_storage/sql_provider/models.py +48 -0
- agentpool_storage/sql_provider/sql_provider.py +269 -3
- agentpool_storage/sql_provider/utils.py +12 -13
- 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 -12
- agentpool_toolsets/builtin/code.py +96 -57
- agentpool_toolsets/builtin/debug.py +118 -48
- agentpool_toolsets/builtin/execution_environment.py +115 -230
- agentpool_toolsets/builtin/file_edit/file_edit.py +115 -7
- agentpool_toolsets/builtin/skills.py +9 -4
- 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/__init__.py +13 -1
- agentpool_toolsets/fsspec_toolset/diagnostics.py +860 -73
- agentpool_toolsets/fsspec_toolset/grep.py +99 -7
- agentpool_toolsets/fsspec_toolset/helpers.py +3 -2
- agentpool_toolsets/fsspec_toolset/image_utils.py +161 -0
- agentpool_toolsets/fsspec_toolset/toolset.py +500 -95
- agentpool_toolsets/mcp_discovery/__init__.py +5 -0
- agentpool_toolsets/mcp_discovery/data/mcp_servers.parquet +0 -0
- agentpool_toolsets/mcp_discovery/toolset.py +511 -0
- agentpool_toolsets/mcp_run_toolset.py +87 -12
- agentpool_toolsets/notifications.py +33 -33
- agentpool_toolsets/openapi.py +3 -1
- agentpool_toolsets/search_toolset.py +3 -1
- agentpool-2.1.9.dist-info/RECORD +0 -474
- 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/text_log_provider.py +0 -275
- agentpool_toolsets/builtin/agent_management.py +0 -239
- agentpool_toolsets/builtin/chain.py +0 -288
- agentpool_toolsets/builtin/history.py +0 -36
- agentpool_toolsets/builtin/integration.py +0 -85
- agentpool_toolsets/builtin/tool_management.py +0 -90
- agentpool_toolsets/builtin/user_interaction.py +0 -52
- agentpool_toolsets/semantic_memory_toolset.py +0 -536
- {agentpool-2.1.9.dist-info → agentpool-2.5.0.dist-info}/entry_points.txt +0 -0
- {agentpool-2.1.9.dist-info → agentpool-2.5.0.dist-info}/licenses/LICENSE +0 -0
agentpool_config/storage.py
CHANGED
|
@@ -19,7 +19,6 @@ if TYPE_CHECKING:
|
|
|
19
19
|
from agentpool.sessions.store import SessionStore
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
LogFormat = Literal["chronological", "conversations"]
|
|
23
22
|
FilterMode = Literal["and", "override"]
|
|
24
23
|
|
|
25
24
|
APP_NAME: Final = "agentpool"
|
|
@@ -27,8 +26,10 @@ APP_AUTHOR: Final = "agentpool"
|
|
|
27
26
|
DATA_DIR: Final = Path(user_data_dir(APP_NAME, APP_AUTHOR))
|
|
28
27
|
DEFAULT_DB_NAME: Final = "history.db"
|
|
29
28
|
DEFAULT_TITLE_PROMPT: Final = """\
|
|
30
|
-
Generate
|
|
31
|
-
|
|
29
|
+
Generate metadata for this conversation request. Provide:
|
|
30
|
+
- A short, descriptive title (3-7 words)
|
|
31
|
+
- A single emoji that represents the topic
|
|
32
|
+
- An iconify icon name (e.g., 'mdi:code-braces', 'mdi:database', 'mdi:bug')"""
|
|
32
33
|
|
|
33
34
|
|
|
34
35
|
def get_database_path() -> str:
|
|
@@ -104,38 +105,6 @@ class SQLStorageConfig(BaseStorageProviderConfig):
|
|
|
104
105
|
return create_async_engine(url_str, pool_size=self.pool_size)
|
|
105
106
|
|
|
106
107
|
|
|
107
|
-
class TextLogConfig(BaseStorageProviderConfig):
|
|
108
|
-
"""Text log configuration."""
|
|
109
|
-
|
|
110
|
-
model_config = ConfigDict(json_schema_extra={"x-doc-title": "Text Log"})
|
|
111
|
-
|
|
112
|
-
type: Literal["text_file"] = Field("text_file", init=False)
|
|
113
|
-
"""Text log storage configuration."""
|
|
114
|
-
|
|
115
|
-
path: str = Field(
|
|
116
|
-
examples=["/var/log/agent.log", "~/logs/conversations.txt"],
|
|
117
|
-
title="Log file path",
|
|
118
|
-
)
|
|
119
|
-
"""Path to log file"""
|
|
120
|
-
|
|
121
|
-
format: LogFormat = Field(
|
|
122
|
-
default="chronological",
|
|
123
|
-
examples=["chronological", "conversations"],
|
|
124
|
-
title="Log format",
|
|
125
|
-
)
|
|
126
|
-
"""Log format template to use"""
|
|
127
|
-
|
|
128
|
-
template: Literal["chronological", "conversations"] | str | None = Field( # noqa: PYI051
|
|
129
|
-
default="chronological",
|
|
130
|
-
examples=["chronological", "conversations", "/path/to/template.j2"],
|
|
131
|
-
title="Template",
|
|
132
|
-
)
|
|
133
|
-
"""Template to use: either predefined name or path to custom template"""
|
|
134
|
-
|
|
135
|
-
encoding: str = Field(default="utf-8", examples=["utf-8", "ascii"], title="File encoding")
|
|
136
|
-
"""File encoding"""
|
|
137
|
-
|
|
138
|
-
|
|
139
108
|
class FileStorageConfig(BaseStorageProviderConfig):
|
|
140
109
|
"""File storage configuration."""
|
|
141
110
|
|
|
@@ -170,8 +139,75 @@ class MemoryStorageConfig(BaseStorageProviderConfig):
|
|
|
170
139
|
"""In-memory storage configuration for testing."""
|
|
171
140
|
|
|
172
141
|
|
|
142
|
+
class ClaudeStorageConfig(BaseStorageProviderConfig):
|
|
143
|
+
"""Claude Code native storage format configuration.
|
|
144
|
+
|
|
145
|
+
Reads/writes to Claude Code's native JSONL format in ~/.claude/projects/.
|
|
146
|
+
Useful for sharing conversation history between agentpool and Claude Code CLI.
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
model_config = ConfigDict(json_schema_extra={"x-doc-title": "Claude Storage"})
|
|
150
|
+
|
|
151
|
+
type: Literal["claude"] = Field("claude", init=False)
|
|
152
|
+
"""Claude Code native storage configuration."""
|
|
153
|
+
|
|
154
|
+
path: str = Field(
|
|
155
|
+
default="~/.claude",
|
|
156
|
+
examples=["~/.claude", "/home/user/.claude"],
|
|
157
|
+
title="Claude data directory",
|
|
158
|
+
)
|
|
159
|
+
"""Path to Claude data directory (default: ~/.claude)"""
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
class OpenCodeStorageConfig(BaseStorageProviderConfig):
|
|
163
|
+
"""OpenCode native storage format configuration.
|
|
164
|
+
|
|
165
|
+
Reads from OpenCode's native JSON format in ~/.local/share/opencode/storage/.
|
|
166
|
+
Useful for importing conversation history from OpenCode.
|
|
167
|
+
"""
|
|
168
|
+
|
|
169
|
+
model_config = ConfigDict(json_schema_extra={"x-doc-title": "OpenCode Storage"})
|
|
170
|
+
|
|
171
|
+
type: Literal["opencode"] = Field("opencode", init=False)
|
|
172
|
+
"""OpenCode native storage configuration."""
|
|
173
|
+
|
|
174
|
+
path: str = Field(
|
|
175
|
+
default="~/.local/share/opencode/storage",
|
|
176
|
+
examples=["~/.local/share/opencode/storage"],
|
|
177
|
+
title="OpenCode storage directory",
|
|
178
|
+
)
|
|
179
|
+
"""Path to OpenCode storage directory."""
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
class ZedStorageConfig(BaseStorageProviderConfig):
|
|
183
|
+
"""Zed IDE native storage format configuration.
|
|
184
|
+
|
|
185
|
+
Reads from Zed's native SQLite + zstd-compressed JSON format.
|
|
186
|
+
Useful for importing conversation history from Zed's AI assistant.
|
|
187
|
+
|
|
188
|
+
This is a READ-ONLY provider - it cannot write back to Zed's format.
|
|
189
|
+
"""
|
|
190
|
+
|
|
191
|
+
model_config = ConfigDict(json_schema_extra={"x-doc-title": "Zed Storage"})
|
|
192
|
+
|
|
193
|
+
type: Literal["zed"] = Field("zed", init=False)
|
|
194
|
+
"""Zed IDE native storage configuration."""
|
|
195
|
+
|
|
196
|
+
path: str = Field(
|
|
197
|
+
default="~/.local/share/zed/threads/threads.db",
|
|
198
|
+
examples=["~/.local/share/zed/threads/threads.db", "~/.local/share/zed"],
|
|
199
|
+
title="Zed threads database path",
|
|
200
|
+
)
|
|
201
|
+
"""Path to Zed threads database (or parent directory)."""
|
|
202
|
+
|
|
203
|
+
|
|
173
204
|
StorageProviderConfig = Annotated[
|
|
174
|
-
SQLStorageConfig
|
|
205
|
+
SQLStorageConfig
|
|
206
|
+
| FileStorageConfig
|
|
207
|
+
| MemoryStorageConfig
|
|
208
|
+
| ClaudeStorageConfig
|
|
209
|
+
| OpenCodeStorageConfig
|
|
210
|
+
| ZedStorageConfig,
|
|
175
211
|
Field(discriminator="type"),
|
|
176
212
|
]
|
|
177
213
|
|
|
@@ -237,8 +273,12 @@ class StorageConfig(Schema):
|
|
|
237
273
|
"""Whether to log additions to the context."""
|
|
238
274
|
|
|
239
275
|
title_generation_model: ModelId | str | None = Field(
|
|
240
|
-
default="google-gla:gemini-2.5-flash-lite",
|
|
241
|
-
examples=[
|
|
276
|
+
default="google-gla:gemini-2.5-flash-lite,openrouter:deepseek/deepseek-r1-0528:free",
|
|
277
|
+
examples=[
|
|
278
|
+
"google-gla:gemini-2.5-flash-lite",
|
|
279
|
+
"google-gla:gemini-2.5-flash-lite,openrouter:deepseek/deepseek-r1-0528:free",
|
|
280
|
+
None,
|
|
281
|
+
],
|
|
242
282
|
title="Title generation model",
|
|
243
283
|
)
|
|
244
284
|
"""Model to use for generating conversation titles.
|
|
@@ -273,6 +313,10 @@ class StorageConfig(Schema):
|
|
|
273
313
|
from agentpool.sessions.store import MemorySessionStore
|
|
274
314
|
from agentpool_storage.session_store import SQLSessionStore
|
|
275
315
|
|
|
316
|
+
# Use memory store during tests
|
|
317
|
+
if os.getenv("PYTEST_CURRENT_TEST"):
|
|
318
|
+
return MemorySessionStore()
|
|
319
|
+
|
|
276
320
|
match self.session_store:
|
|
277
321
|
case "memory":
|
|
278
322
|
return MemorySessionStore()
|
agentpool_config/task.py
CHANGED
|
@@ -23,7 +23,7 @@ class Job[TDeps, TResult = str](Schema):
|
|
|
23
23
|
|
|
24
24
|
Requirements:
|
|
25
25
|
- The agent must have compatible dependencies (required_dependency)
|
|
26
|
-
- The agent must produce the specified result type (
|
|
26
|
+
- The agent must produce the specified result type (required_output_type)
|
|
27
27
|
|
|
28
28
|
Equipment:
|
|
29
29
|
- The task provides necessary tools for execution (tools)
|
|
@@ -54,7 +54,7 @@ class Job[TDeps, TResult = str](Schema):
|
|
|
54
54
|
)
|
|
55
55
|
"""The task instruction/prompt."""
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
required_output_type: ImportString[type[TResult]] = Field(
|
|
58
58
|
default="str",
|
|
59
59
|
validate_default=True,
|
|
60
60
|
examples=["str", "dict", "builtins:str"],
|
|
@@ -120,7 +120,7 @@ class Job[TDeps, TResult = str](Schema):
|
|
|
120
120
|
):
|
|
121
121
|
return False
|
|
122
122
|
|
|
123
|
-
if agent._output_type != self.
|
|
123
|
+
if agent._output_type != self.required_output_type:
|
|
124
124
|
return False
|
|
125
125
|
|
|
126
126
|
# Check vision capabilities
|
agentpool_config/tools.py
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
from collections.abc import Callable
|
|
6
|
-
from typing import TYPE_CHECKING,
|
|
6
|
+
from typing import TYPE_CHECKING, Any, Literal
|
|
7
7
|
|
|
8
8
|
from pydantic import ConfigDict, Field, ImportString
|
|
9
9
|
from schemez import Schema
|
|
@@ -56,26 +56,9 @@ class BaseToolConfig(Schema):
|
|
|
56
56
|
requires_confirmation: bool = Field(default=False, title="Requires confirmation")
|
|
57
57
|
"""Whether tool execution needs confirmation."""
|
|
58
58
|
|
|
59
|
-
metadata: dict[str, str] = Field(
|
|
60
|
-
default_factory=dict,
|
|
61
|
-
examples=[
|
|
62
|
-
{"category": "web", "version": "1.0"},
|
|
63
|
-
{"author": "system", "tags": "search,utility"},
|
|
64
|
-
{"priority": "high", "environment": "production"},
|
|
65
|
-
],
|
|
66
|
-
title="Tool metadata",
|
|
67
|
-
)
|
|
59
|
+
metadata: dict[str, str] = Field(default_factory=dict, title="Tool metadata")
|
|
68
60
|
"""Additional tool metadata."""
|
|
69
61
|
|
|
70
|
-
hints: ToolHints | None = Field(
|
|
71
|
-
default=None,
|
|
72
|
-
title="Execution hints",
|
|
73
|
-
examples=[
|
|
74
|
-
{"read_only": True, "destructive": False, "open_world": True, "idempotent": False},
|
|
75
|
-
],
|
|
76
|
-
)
|
|
77
|
-
"""Hints for tool execution."""
|
|
78
|
-
|
|
79
62
|
model_config = ConfigDict(frozen=True)
|
|
80
63
|
|
|
81
64
|
def get_tool(self) -> Tool:
|
|
@@ -95,6 +78,15 @@ class ImportToolConfig(BaseToolConfig):
|
|
|
95
78
|
)
|
|
96
79
|
"""Import path to the tool function."""
|
|
97
80
|
|
|
81
|
+
hints: ToolHints | None = Field(
|
|
82
|
+
default=None,
|
|
83
|
+
title="Execution hints",
|
|
84
|
+
examples=[
|
|
85
|
+
{"read_only": True, "destructive": False, "open_world": True, "idempotent": False},
|
|
86
|
+
],
|
|
87
|
+
)
|
|
88
|
+
"""Hints for tool execution."""
|
|
89
|
+
|
|
98
90
|
def get_tool(self) -> Tool:
|
|
99
91
|
"""Import and create tool from configuration."""
|
|
100
92
|
from agentpool.tools.base import Tool
|
|
@@ -107,6 +99,3 @@ class ImportToolConfig(BaseToolConfig):
|
|
|
107
99
|
requires_confirmation=self.requires_confirmation,
|
|
108
100
|
metadata=self.metadata,
|
|
109
101
|
)
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
ToolConfig = Annotated[ImportToolConfig, Field(discriminator="type")]
|