agentpool 2.1.9__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.
Potentially problematic release.
This version of agentpool might be problematic. Click here for more details.
- acp/README.md +64 -0
- acp/__init__.py +172 -0
- acp/__main__.py +10 -0
- acp/acp_requests.py +285 -0
- acp/agent/__init__.py +6 -0
- acp/agent/connection.py +256 -0
- acp/agent/implementations/__init__.py +6 -0
- acp/agent/implementations/debug_server/__init__.py +1 -0
- acp/agent/implementations/debug_server/cli.py +79 -0
- acp/agent/implementations/debug_server/debug.html +234 -0
- acp/agent/implementations/debug_server/debug_server.py +496 -0
- acp/agent/implementations/testing.py +91 -0
- acp/agent/protocol.py +65 -0
- acp/bridge/README.md +162 -0
- acp/bridge/__init__.py +6 -0
- acp/bridge/__main__.py +91 -0
- acp/bridge/bridge.py +246 -0
- acp/bridge/py.typed +0 -0
- acp/bridge/settings.py +15 -0
- acp/client/__init__.py +7 -0
- acp/client/connection.py +251 -0
- acp/client/implementations/__init__.py +7 -0
- acp/client/implementations/default_client.py +185 -0
- acp/client/implementations/headless_client.py +266 -0
- acp/client/implementations/noop_client.py +110 -0
- acp/client/protocol.py +61 -0
- acp/connection.py +280 -0
- acp/exceptions.py +46 -0
- acp/filesystem.py +524 -0
- acp/notifications.py +832 -0
- acp/py.typed +0 -0
- acp/schema/__init__.py +265 -0
- acp/schema/agent_plan.py +30 -0
- acp/schema/agent_requests.py +126 -0
- acp/schema/agent_responses.py +256 -0
- acp/schema/base.py +39 -0
- acp/schema/capabilities.py +230 -0
- acp/schema/client_requests.py +247 -0
- acp/schema/client_responses.py +96 -0
- acp/schema/common.py +81 -0
- acp/schema/content_blocks.py +188 -0
- acp/schema/mcp.py +82 -0
- acp/schema/messages.py +171 -0
- acp/schema/notifications.py +82 -0
- acp/schema/protocol_stuff.md +3 -0
- acp/schema/session_state.py +160 -0
- acp/schema/session_updates.py +419 -0
- acp/schema/slash_commands.py +51 -0
- acp/schema/terminal.py +15 -0
- acp/schema/tool_call.py +347 -0
- acp/stdio.py +250 -0
- acp/task/__init__.py +53 -0
- acp/task/debug.py +197 -0
- acp/task/dispatcher.py +93 -0
- acp/task/queue.py +69 -0
- acp/task/sender.py +82 -0
- acp/task/state.py +87 -0
- acp/task/supervisor.py +93 -0
- acp/terminal_handle.py +30 -0
- acp/tool_call_reporter.py +199 -0
- acp/tool_call_state.py +178 -0
- acp/transports.py +104 -0
- acp/utils.py +240 -0
- agentpool/__init__.py +63 -0
- agentpool/__main__.py +7 -0
- agentpool/agents/__init__.py +30 -0
- agentpool/agents/acp_agent/__init__.py +5 -0
- agentpool/agents/acp_agent/acp_agent.py +837 -0
- agentpool/agents/acp_agent/acp_converters.py +294 -0
- agentpool/agents/acp_agent/client_handler.py +317 -0
- agentpool/agents/acp_agent/session_state.py +44 -0
- agentpool/agents/agent.py +1264 -0
- agentpool/agents/agui_agent/__init__.py +19 -0
- agentpool/agents/agui_agent/agui_agent.py +677 -0
- agentpool/agents/agui_agent/agui_converters.py +423 -0
- agentpool/agents/agui_agent/chunk_transformer.py +204 -0
- agentpool/agents/agui_agent/event_types.py +83 -0
- agentpool/agents/agui_agent/helpers.py +192 -0
- agentpool/agents/architect.py +71 -0
- agentpool/agents/base_agent.py +177 -0
- agentpool/agents/claude_code_agent/__init__.py +11 -0
- agentpool/agents/claude_code_agent/claude_code_agent.py +1021 -0
- agentpool/agents/claude_code_agent/converters.py +243 -0
- agentpool/agents/context.py +105 -0
- agentpool/agents/events/__init__.py +61 -0
- agentpool/agents/events/builtin_handlers.py +129 -0
- agentpool/agents/events/event_emitter.py +320 -0
- agentpool/agents/events/events.py +561 -0
- agentpool/agents/events/tts_handlers.py +186 -0
- agentpool/agents/interactions.py +419 -0
- agentpool/agents/slashed_agent.py +244 -0
- agentpool/agents/sys_prompts.py +178 -0
- agentpool/agents/tool_wrapping.py +184 -0
- agentpool/base_provider.py +28 -0
- agentpool/common_types.py +226 -0
- agentpool/config_resources/__init__.py +16 -0
- agentpool/config_resources/acp_assistant.yml +24 -0
- agentpool/config_resources/agents.yml +109 -0
- agentpool/config_resources/agents_template.yml +18 -0
- agentpool/config_resources/agui_test.yml +18 -0
- agentpool/config_resources/claude_code_agent.yml +16 -0
- agentpool/config_resources/claude_style_subagent.md +30 -0
- agentpool/config_resources/external_acp_agents.yml +77 -0
- agentpool/config_resources/opencode_style_subagent.md +19 -0
- agentpool/config_resources/tts_test_agents.yml +78 -0
- agentpool/delegation/__init__.py +8 -0
- agentpool/delegation/base_team.py +504 -0
- agentpool/delegation/message_flow_tracker.py +39 -0
- agentpool/delegation/pool.py +1129 -0
- agentpool/delegation/team.py +325 -0
- agentpool/delegation/teamrun.py +343 -0
- agentpool/docs/__init__.py +5 -0
- agentpool/docs/gen_examples.py +42 -0
- agentpool/docs/utils.py +370 -0
- agentpool/functional/__init__.py +20 -0
- agentpool/functional/py.typed +0 -0
- agentpool/functional/run.py +80 -0
- agentpool/functional/structure.py +136 -0
- agentpool/hooks/__init__.py +20 -0
- agentpool/hooks/agent_hooks.py +247 -0
- agentpool/hooks/base.py +119 -0
- agentpool/hooks/callable.py +140 -0
- agentpool/hooks/command.py +180 -0
- agentpool/hooks/prompt.py +122 -0
- agentpool/jinja_filters.py +132 -0
- agentpool/log.py +224 -0
- agentpool/mcp_server/__init__.py +17 -0
- agentpool/mcp_server/client.py +429 -0
- agentpool/mcp_server/constants.py +32 -0
- agentpool/mcp_server/conversions.py +172 -0
- agentpool/mcp_server/helpers.py +47 -0
- agentpool/mcp_server/manager.py +232 -0
- agentpool/mcp_server/message_handler.py +164 -0
- agentpool/mcp_server/registries/__init__.py +1 -0
- agentpool/mcp_server/registries/official_registry_client.py +345 -0
- agentpool/mcp_server/registries/pulsemcp_client.py +88 -0
- agentpool/mcp_server/tool_bridge.py +548 -0
- agentpool/messaging/__init__.py +58 -0
- agentpool/messaging/compaction.py +928 -0
- agentpool/messaging/connection_manager.py +319 -0
- agentpool/messaging/context.py +66 -0
- agentpool/messaging/event_manager.py +426 -0
- agentpool/messaging/events.py +39 -0
- agentpool/messaging/message_container.py +209 -0
- agentpool/messaging/message_history.py +491 -0
- agentpool/messaging/messagenode.py +377 -0
- agentpool/messaging/messages.py +655 -0
- agentpool/messaging/processing.py +76 -0
- agentpool/mime_utils.py +95 -0
- agentpool/models/__init__.py +21 -0
- agentpool/models/acp_agents/__init__.py +22 -0
- agentpool/models/acp_agents/base.py +308 -0
- agentpool/models/acp_agents/mcp_capable.py +790 -0
- agentpool/models/acp_agents/non_mcp.py +842 -0
- agentpool/models/agents.py +450 -0
- agentpool/models/agui_agents.py +89 -0
- agentpool/models/claude_code_agents.py +238 -0
- agentpool/models/file_agents.py +116 -0
- agentpool/models/file_parsing.py +367 -0
- agentpool/models/manifest.py +658 -0
- agentpool/observability/__init__.py +9 -0
- agentpool/observability/observability_registry.py +97 -0
- agentpool/prompts/__init__.py +1 -0
- agentpool/prompts/base.py +27 -0
- agentpool/prompts/builtin_provider.py +75 -0
- agentpool/prompts/conversion_manager.py +95 -0
- agentpool/prompts/convert.py +96 -0
- agentpool/prompts/manager.py +204 -0
- agentpool/prompts/parts/zed.md +33 -0
- agentpool/prompts/prompts.py +581 -0
- agentpool/py.typed +0 -0
- agentpool/queries/tree-sitter-language-pack/README.md +7 -0
- agentpool/queries/tree-sitter-language-pack/arduino-tags.scm +5 -0
- agentpool/queries/tree-sitter-language-pack/c-tags.scm +9 -0
- agentpool/queries/tree-sitter-language-pack/chatito-tags.scm +16 -0
- agentpool/queries/tree-sitter-language-pack/clojure-tags.scm +7 -0
- agentpool/queries/tree-sitter-language-pack/commonlisp-tags.scm +122 -0
- agentpool/queries/tree-sitter-language-pack/cpp-tags.scm +15 -0
- agentpool/queries/tree-sitter-language-pack/csharp-tags.scm +26 -0
- agentpool/queries/tree-sitter-language-pack/d-tags.scm +26 -0
- agentpool/queries/tree-sitter-language-pack/dart-tags.scm +92 -0
- agentpool/queries/tree-sitter-language-pack/elisp-tags.scm +5 -0
- agentpool/queries/tree-sitter-language-pack/elixir-tags.scm +54 -0
- agentpool/queries/tree-sitter-language-pack/elm-tags.scm +19 -0
- agentpool/queries/tree-sitter-language-pack/gleam-tags.scm +41 -0
- agentpool/queries/tree-sitter-language-pack/go-tags.scm +42 -0
- agentpool/queries/tree-sitter-language-pack/java-tags.scm +20 -0
- agentpool/queries/tree-sitter-language-pack/javascript-tags.scm +88 -0
- agentpool/queries/tree-sitter-language-pack/lua-tags.scm +34 -0
- agentpool/queries/tree-sitter-language-pack/matlab-tags.scm +10 -0
- agentpool/queries/tree-sitter-language-pack/ocaml-tags.scm +115 -0
- agentpool/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +98 -0
- agentpool/queries/tree-sitter-language-pack/pony-tags.scm +39 -0
- agentpool/queries/tree-sitter-language-pack/properties-tags.scm +5 -0
- agentpool/queries/tree-sitter-language-pack/python-tags.scm +14 -0
- agentpool/queries/tree-sitter-language-pack/r-tags.scm +21 -0
- agentpool/queries/tree-sitter-language-pack/racket-tags.scm +12 -0
- agentpool/queries/tree-sitter-language-pack/ruby-tags.scm +64 -0
- agentpool/queries/tree-sitter-language-pack/rust-tags.scm +60 -0
- agentpool/queries/tree-sitter-language-pack/solidity-tags.scm +43 -0
- agentpool/queries/tree-sitter-language-pack/swift-tags.scm +51 -0
- agentpool/queries/tree-sitter-language-pack/udev-tags.scm +20 -0
- agentpool/queries/tree-sitter-languages/README.md +24 -0
- agentpool/queries/tree-sitter-languages/c-tags.scm +9 -0
- agentpool/queries/tree-sitter-languages/c_sharp-tags.scm +46 -0
- agentpool/queries/tree-sitter-languages/cpp-tags.scm +15 -0
- agentpool/queries/tree-sitter-languages/dart-tags.scm +91 -0
- agentpool/queries/tree-sitter-languages/elisp-tags.scm +8 -0
- agentpool/queries/tree-sitter-languages/elixir-tags.scm +54 -0
- agentpool/queries/tree-sitter-languages/elm-tags.scm +19 -0
- agentpool/queries/tree-sitter-languages/fortran-tags.scm +15 -0
- agentpool/queries/tree-sitter-languages/go-tags.scm +30 -0
- agentpool/queries/tree-sitter-languages/haskell-tags.scm +3 -0
- agentpool/queries/tree-sitter-languages/hcl-tags.scm +77 -0
- agentpool/queries/tree-sitter-languages/java-tags.scm +20 -0
- agentpool/queries/tree-sitter-languages/javascript-tags.scm +88 -0
- agentpool/queries/tree-sitter-languages/julia-tags.scm +60 -0
- agentpool/queries/tree-sitter-languages/kotlin-tags.scm +27 -0
- agentpool/queries/tree-sitter-languages/matlab-tags.scm +10 -0
- agentpool/queries/tree-sitter-languages/ocaml-tags.scm +115 -0
- agentpool/queries/tree-sitter-languages/ocaml_interface-tags.scm +98 -0
- agentpool/queries/tree-sitter-languages/php-tags.scm +26 -0
- agentpool/queries/tree-sitter-languages/python-tags.scm +12 -0
- agentpool/queries/tree-sitter-languages/ql-tags.scm +26 -0
- agentpool/queries/tree-sitter-languages/ruby-tags.scm +64 -0
- agentpool/queries/tree-sitter-languages/rust-tags.scm +60 -0
- agentpool/queries/tree-sitter-languages/scala-tags.scm +65 -0
- agentpool/queries/tree-sitter-languages/typescript-tags.scm +41 -0
- agentpool/queries/tree-sitter-languages/zig-tags.scm +3 -0
- agentpool/repomap.py +1231 -0
- agentpool/resource_providers/__init__.py +17 -0
- agentpool/resource_providers/aggregating.py +54 -0
- agentpool/resource_providers/base.py +172 -0
- agentpool/resource_providers/codemode/__init__.py +9 -0
- agentpool/resource_providers/codemode/code_executor.py +215 -0
- agentpool/resource_providers/codemode/default_prompt.py +19 -0
- agentpool/resource_providers/codemode/helpers.py +83 -0
- agentpool/resource_providers/codemode/progress_executor.py +212 -0
- agentpool/resource_providers/codemode/provider.py +150 -0
- agentpool/resource_providers/codemode/remote_mcp_execution.py +143 -0
- agentpool/resource_providers/codemode/remote_provider.py +171 -0
- agentpool/resource_providers/filtering.py +42 -0
- agentpool/resource_providers/mcp_provider.py +246 -0
- agentpool/resource_providers/plan_provider.py +196 -0
- agentpool/resource_providers/pool.py +69 -0
- agentpool/resource_providers/static.py +289 -0
- agentpool/running/__init__.py +20 -0
- agentpool/running/decorators.py +56 -0
- agentpool/running/discovery.py +101 -0
- agentpool/running/executor.py +284 -0
- agentpool/running/injection.py +111 -0
- agentpool/running/py.typed +0 -0
- agentpool/running/run_nodes.py +87 -0
- agentpool/server.py +122 -0
- agentpool/sessions/__init__.py +13 -0
- agentpool/sessions/manager.py +302 -0
- agentpool/sessions/models.py +71 -0
- agentpool/sessions/session.py +239 -0
- agentpool/sessions/store.py +163 -0
- agentpool/skills/__init__.py +5 -0
- agentpool/skills/manager.py +120 -0
- agentpool/skills/registry.py +210 -0
- agentpool/skills/skill.py +36 -0
- agentpool/storage/__init__.py +17 -0
- agentpool/storage/manager.py +419 -0
- agentpool/storage/serialization.py +136 -0
- agentpool/talk/__init__.py +13 -0
- agentpool/talk/registry.py +128 -0
- agentpool/talk/stats.py +159 -0
- agentpool/talk/talk.py +604 -0
- agentpool/tasks/__init__.py +20 -0
- agentpool/tasks/exceptions.py +25 -0
- agentpool/tasks/registry.py +33 -0
- agentpool/testing.py +129 -0
- agentpool/text_templates/__init__.py +39 -0
- agentpool/text_templates/system_prompt.jinja +30 -0
- agentpool/text_templates/tool_call_default.jinja +13 -0
- agentpool/text_templates/tool_call_markdown.jinja +25 -0
- agentpool/text_templates/tool_call_simple.jinja +5 -0
- agentpool/tools/__init__.py +16 -0
- agentpool/tools/base.py +269 -0
- agentpool/tools/exceptions.py +9 -0
- agentpool/tools/manager.py +255 -0
- agentpool/tools/tool_call_info.py +87 -0
- agentpool/ui/__init__.py +2 -0
- agentpool/ui/base.py +89 -0
- agentpool/ui/mock_provider.py +81 -0
- agentpool/ui/stdlib_provider.py +150 -0
- agentpool/utils/__init__.py +44 -0
- agentpool/utils/baseregistry.py +185 -0
- agentpool/utils/count_tokens.py +62 -0
- agentpool/utils/dag.py +184 -0
- agentpool/utils/importing.py +206 -0
- agentpool/utils/inspection.py +334 -0
- agentpool/utils/model_capabilities.py +25 -0
- agentpool/utils/network.py +28 -0
- agentpool/utils/now.py +22 -0
- agentpool/utils/parse_time.py +87 -0
- agentpool/utils/result_utils.py +35 -0
- agentpool/utils/signatures.py +305 -0
- agentpool/utils/streams.py +112 -0
- agentpool/utils/tasks.py +186 -0
- agentpool/vfs_registry.py +250 -0
- agentpool-2.1.9.dist-info/METADATA +336 -0
- agentpool-2.1.9.dist-info/RECORD +474 -0
- agentpool-2.1.9.dist-info/WHEEL +4 -0
- agentpool-2.1.9.dist-info/entry_points.txt +14 -0
- agentpool-2.1.9.dist-info/licenses/LICENSE +22 -0
- agentpool_cli/__init__.py +34 -0
- agentpool_cli/__main__.py +66 -0
- agentpool_cli/agent.py +175 -0
- agentpool_cli/cli_types.py +23 -0
- agentpool_cli/common.py +163 -0
- agentpool_cli/create.py +175 -0
- agentpool_cli/history.py +217 -0
- agentpool_cli/log.py +78 -0
- agentpool_cli/py.typed +0 -0
- agentpool_cli/run.py +84 -0
- agentpool_cli/serve_acp.py +177 -0
- agentpool_cli/serve_api.py +69 -0
- agentpool_cli/serve_mcp.py +74 -0
- agentpool_cli/serve_vercel.py +233 -0
- agentpool_cli/store.py +171 -0
- agentpool_cli/task.py +84 -0
- agentpool_cli/utils.py +104 -0
- agentpool_cli/watch.py +54 -0
- agentpool_commands/__init__.py +180 -0
- agentpool_commands/agents.py +199 -0
- agentpool_commands/base.py +45 -0
- agentpool_commands/commands.py +58 -0
- agentpool_commands/completers.py +110 -0
- agentpool_commands/connections.py +175 -0
- agentpool_commands/markdown_utils.py +31 -0
- agentpool_commands/models.py +62 -0
- agentpool_commands/prompts.py +78 -0
- agentpool_commands/py.typed +0 -0
- agentpool_commands/read.py +77 -0
- agentpool_commands/resources.py +210 -0
- agentpool_commands/session.py +48 -0
- agentpool_commands/tools.py +269 -0
- agentpool_commands/utils.py +189 -0
- agentpool_commands/workers.py +163 -0
- agentpool_config/__init__.py +53 -0
- agentpool_config/builtin_tools.py +265 -0
- agentpool_config/commands.py +237 -0
- agentpool_config/conditions.py +301 -0
- agentpool_config/converters.py +30 -0
- agentpool_config/durable.py +331 -0
- agentpool_config/event_handlers.py +600 -0
- agentpool_config/events.py +153 -0
- agentpool_config/forward_targets.py +251 -0
- agentpool_config/hook_conditions.py +331 -0
- agentpool_config/hooks.py +241 -0
- agentpool_config/jinja.py +206 -0
- agentpool_config/knowledge.py +41 -0
- agentpool_config/loaders.py +350 -0
- agentpool_config/mcp_server.py +243 -0
- agentpool_config/nodes.py +202 -0
- agentpool_config/observability.py +191 -0
- agentpool_config/output_types.py +55 -0
- agentpool_config/pool_server.py +267 -0
- agentpool_config/prompt_hubs.py +105 -0
- agentpool_config/prompts.py +185 -0
- agentpool_config/py.typed +0 -0
- agentpool_config/resources.py +33 -0
- agentpool_config/session.py +119 -0
- agentpool_config/skills.py +17 -0
- agentpool_config/storage.py +288 -0
- agentpool_config/system_prompts.py +190 -0
- agentpool_config/task.py +162 -0
- agentpool_config/teams.py +52 -0
- agentpool_config/tools.py +112 -0
- agentpool_config/toolsets.py +1033 -0
- agentpool_config/workers.py +86 -0
- agentpool_prompts/__init__.py +1 -0
- agentpool_prompts/braintrust_hub.py +235 -0
- agentpool_prompts/fabric.py +75 -0
- agentpool_prompts/langfuse_hub.py +79 -0
- agentpool_prompts/promptlayer_provider.py +59 -0
- agentpool_prompts/py.typed +0 -0
- agentpool_server/__init__.py +9 -0
- agentpool_server/a2a_server/__init__.py +5 -0
- agentpool_server/a2a_server/a2a_types.py +41 -0
- agentpool_server/a2a_server/server.py +190 -0
- agentpool_server/a2a_server/storage.py +81 -0
- agentpool_server/acp_server/__init__.py +22 -0
- agentpool_server/acp_server/acp_agent.py +786 -0
- agentpool_server/acp_server/acp_tools.py +43 -0
- agentpool_server/acp_server/commands/__init__.py +18 -0
- agentpool_server/acp_server/commands/acp_commands.py +594 -0
- agentpool_server/acp_server/commands/debug_commands.py +376 -0
- agentpool_server/acp_server/commands/docs_commands/__init__.py +39 -0
- agentpool_server/acp_server/commands/docs_commands/fetch_repo.py +169 -0
- agentpool_server/acp_server/commands/docs_commands/get_schema.py +176 -0
- agentpool_server/acp_server/commands/docs_commands/get_source.py +110 -0
- agentpool_server/acp_server/commands/docs_commands/git_diff.py +111 -0
- agentpool_server/acp_server/commands/docs_commands/helpers.py +33 -0
- agentpool_server/acp_server/commands/docs_commands/url_to_markdown.py +90 -0
- agentpool_server/acp_server/commands/spawn.py +210 -0
- agentpool_server/acp_server/converters.py +235 -0
- agentpool_server/acp_server/input_provider.py +338 -0
- agentpool_server/acp_server/server.py +288 -0
- agentpool_server/acp_server/session.py +969 -0
- agentpool_server/acp_server/session_manager.py +313 -0
- agentpool_server/acp_server/syntax_detection.py +250 -0
- agentpool_server/acp_server/zed_tools.md +90 -0
- agentpool_server/aggregating_server.py +309 -0
- agentpool_server/agui_server/__init__.py +11 -0
- agentpool_server/agui_server/server.py +128 -0
- agentpool_server/base.py +189 -0
- agentpool_server/http_server.py +164 -0
- agentpool_server/mcp_server/__init__.py +6 -0
- agentpool_server/mcp_server/server.py +314 -0
- agentpool_server/mcp_server/zed_wrapper.py +110 -0
- agentpool_server/openai_api_server/__init__.py +5 -0
- agentpool_server/openai_api_server/completions/__init__.py +1 -0
- agentpool_server/openai_api_server/completions/helpers.py +81 -0
- agentpool_server/openai_api_server/completions/models.py +98 -0
- agentpool_server/openai_api_server/responses/__init__.py +1 -0
- agentpool_server/openai_api_server/responses/helpers.py +74 -0
- agentpool_server/openai_api_server/responses/models.py +96 -0
- agentpool_server/openai_api_server/server.py +242 -0
- agentpool_server/py.typed +0 -0
- agentpool_storage/__init__.py +9 -0
- agentpool_storage/base.py +310 -0
- agentpool_storage/file_provider.py +378 -0
- agentpool_storage/formatters.py +129 -0
- agentpool_storage/memory_provider.py +396 -0
- agentpool_storage/models.py +108 -0
- agentpool_storage/py.typed +0 -0
- agentpool_storage/session_store.py +262 -0
- agentpool_storage/sql_provider/__init__.py +21 -0
- agentpool_storage/sql_provider/cli.py +146 -0
- agentpool_storage/sql_provider/models.py +249 -0
- agentpool_storage/sql_provider/queries.py +15 -0
- agentpool_storage/sql_provider/sql_provider.py +444 -0
- agentpool_storage/sql_provider/utils.py +234 -0
- agentpool_storage/text_log_provider.py +275 -0
- agentpool_toolsets/__init__.py +15 -0
- agentpool_toolsets/builtin/__init__.py +33 -0
- agentpool_toolsets/builtin/agent_management.py +239 -0
- agentpool_toolsets/builtin/chain.py +288 -0
- agentpool_toolsets/builtin/code.py +398 -0
- agentpool_toolsets/builtin/debug.py +291 -0
- agentpool_toolsets/builtin/execution_environment.py +381 -0
- agentpool_toolsets/builtin/file_edit/__init__.py +11 -0
- agentpool_toolsets/builtin/file_edit/file_edit.py +747 -0
- agentpool_toolsets/builtin/file_edit/fuzzy_matcher/__init__.py +5 -0
- agentpool_toolsets/builtin/file_edit/fuzzy_matcher/example_usage.py +311 -0
- agentpool_toolsets/builtin/file_edit/fuzzy_matcher/streaming_fuzzy_matcher.py +443 -0
- agentpool_toolsets/builtin/history.py +36 -0
- agentpool_toolsets/builtin/integration.py +85 -0
- agentpool_toolsets/builtin/skills.py +77 -0
- agentpool_toolsets/builtin/subagent_tools.py +324 -0
- agentpool_toolsets/builtin/tool_management.py +90 -0
- agentpool_toolsets/builtin/user_interaction.py +52 -0
- agentpool_toolsets/builtin/workers.py +128 -0
- agentpool_toolsets/composio_toolset.py +96 -0
- agentpool_toolsets/config_creation.py +192 -0
- agentpool_toolsets/entry_points.py +47 -0
- agentpool_toolsets/fsspec_toolset/__init__.py +7 -0
- agentpool_toolsets/fsspec_toolset/diagnostics.py +115 -0
- agentpool_toolsets/fsspec_toolset/grep.py +450 -0
- agentpool_toolsets/fsspec_toolset/helpers.py +631 -0
- agentpool_toolsets/fsspec_toolset/streaming_diff_parser.py +249 -0
- agentpool_toolsets/fsspec_toolset/toolset.py +1384 -0
- agentpool_toolsets/mcp_run_toolset.py +61 -0
- agentpool_toolsets/notifications.py +146 -0
- agentpool_toolsets/openapi.py +118 -0
- agentpool_toolsets/py.typed +0 -0
- agentpool_toolsets/search_toolset.py +202 -0
- agentpool_toolsets/semantic_memory_toolset.py +536 -0
- agentpool_toolsets/streaming_tools.py +265 -0
- agentpool_toolsets/vfs_toolset.py +124 -0
acp/utils.py
ADDED
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"""Utility functions for ACP (Agent Client Protocol)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import base64
|
|
6
|
+
from typing import TYPE_CHECKING, Any
|
|
7
|
+
|
|
8
|
+
from pydantic_ai import BinaryContent, FileUrl, ToolReturn
|
|
9
|
+
|
|
10
|
+
from acp.schema import (
|
|
11
|
+
AudioContentBlock,
|
|
12
|
+
BlobResourceContents,
|
|
13
|
+
EmbeddedResourceContentBlock,
|
|
14
|
+
ImageContentBlock,
|
|
15
|
+
PermissionOption,
|
|
16
|
+
ResourceContentBlock,
|
|
17
|
+
TextContentBlock,
|
|
18
|
+
)
|
|
19
|
+
from agentpool.log import get_logger
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
if TYPE_CHECKING:
|
|
23
|
+
from collections.abc import Sequence
|
|
24
|
+
|
|
25
|
+
from pydantic_ai import UserContent
|
|
26
|
+
|
|
27
|
+
from acp.schema import ContentBlock, ToolCallKind
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
logger = get_logger(__name__)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
DEFAULT_PERMISSION_OPTIONS = [
|
|
34
|
+
PermissionOption(option_id="allow_once", name="Allow Once", kind="allow_once"),
|
|
35
|
+
PermissionOption(option_id="deny_once", name="Deny Once", kind="reject_once"),
|
|
36
|
+
PermissionOption(option_id="allow_always", name="Always Allow", kind="allow_always"),
|
|
37
|
+
PermissionOption(option_id="deny_always", name="Always Deny", kind="reject_always"),
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def to_acp_content_blocks( # noqa: PLR0911
|
|
42
|
+
tool_output: (ToolReturn | list[ToolReturn] | UserContent | Sequence[UserContent] | None),
|
|
43
|
+
) -> list[ContentBlock]:
|
|
44
|
+
"""Convert pydantic-ai tool output to raw ACP content blocks.
|
|
45
|
+
|
|
46
|
+
Returns unwrapped content blocks that can be used directly or wrapped
|
|
47
|
+
in ContentToolCallContent as needed.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
tool_output: Output from pydantic-ai tool execution
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
List of ContentBlock objects
|
|
54
|
+
"""
|
|
55
|
+
match tool_output:
|
|
56
|
+
case None:
|
|
57
|
+
return []
|
|
58
|
+
|
|
59
|
+
case ToolReturn(return_value=return_value, content=content):
|
|
60
|
+
result_blocks: list[ContentBlock] = []
|
|
61
|
+
if return_value is not None:
|
|
62
|
+
result_blocks.append(TextContentBlock(text=str(return_value)))
|
|
63
|
+
if content:
|
|
64
|
+
content_list = content if isinstance(content, list) else [content]
|
|
65
|
+
for content_item in content_list:
|
|
66
|
+
result_blocks.extend(to_acp_content_blocks(content_item))
|
|
67
|
+
return result_blocks
|
|
68
|
+
|
|
69
|
+
case list() as items:
|
|
70
|
+
list_blocks: list[ContentBlock] = []
|
|
71
|
+
for item in items:
|
|
72
|
+
list_blocks.extend(to_acp_content_blocks(item))
|
|
73
|
+
return list_blocks
|
|
74
|
+
|
|
75
|
+
case BinaryContent(data=data, media_type=media_type) if media_type.startswith("image/"):
|
|
76
|
+
image_data = base64.b64encode(data).decode("utf-8")
|
|
77
|
+
return [ImageContentBlock(data=image_data, mime_type=media_type)]
|
|
78
|
+
|
|
79
|
+
case BinaryContent(data=data, media_type=media_type) if media_type.startswith("audio/"):
|
|
80
|
+
audio_data = base64.b64encode(data).decode("utf-8")
|
|
81
|
+
return [AudioContentBlock(data=audio_data, mime_type=media_type)]
|
|
82
|
+
|
|
83
|
+
case BinaryContent(data=data, media_type=media_type):
|
|
84
|
+
blob_data = base64.b64encode(data).decode("utf-8")
|
|
85
|
+
blob_resource = BlobResourceContents(
|
|
86
|
+
blob=blob_data,
|
|
87
|
+
mime_type=media_type,
|
|
88
|
+
uri=f"data:{media_type};base64,{blob_data[:50]}...",
|
|
89
|
+
)
|
|
90
|
+
return [EmbeddedResourceContentBlock(resource=blob_resource)] # ty: ignore[invalid-return-type]
|
|
91
|
+
|
|
92
|
+
case FileUrl(url=url, kind=kind, media_type=media_type):
|
|
93
|
+
from urllib.parse import urlparse
|
|
94
|
+
|
|
95
|
+
parsed = urlparse(str(url))
|
|
96
|
+
resource_type = kind.replace("-url", "")
|
|
97
|
+
name = parsed.path.split("/")[-1] if parsed.path else resource_type
|
|
98
|
+
if not name or name == "/":
|
|
99
|
+
name = f"{resource_type}_{parsed.netloc}" if parsed.netloc else resource_type
|
|
100
|
+
return [
|
|
101
|
+
ResourceContentBlock(
|
|
102
|
+
uri=str(url),
|
|
103
|
+
name=name,
|
|
104
|
+
description=f"{resource_type.title()} resource",
|
|
105
|
+
mime_type=media_type,
|
|
106
|
+
)
|
|
107
|
+
]
|
|
108
|
+
|
|
109
|
+
case _:
|
|
110
|
+
return [TextContentBlock(text=str(tool_output))]
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def generate_tool_title(tool_name: str, tool_input: dict[str, Any]) -> str: # noqa: PLR0911
|
|
114
|
+
"""Generate a descriptive title for a tool call based on name and inputs.
|
|
115
|
+
|
|
116
|
+
Args:
|
|
117
|
+
tool_name: Name of the tool being called
|
|
118
|
+
tool_input: Input parameters passed to the tool
|
|
119
|
+
|
|
120
|
+
Returns:
|
|
121
|
+
Human-readable title describing what the tool is doing
|
|
122
|
+
"""
|
|
123
|
+
name_lower = tool_name.lower()
|
|
124
|
+
|
|
125
|
+
# Command/script execution - show the command
|
|
126
|
+
if any(k in name_lower for k in ["command", "execute", "run", "shell", "script"]) and (
|
|
127
|
+
cmd := tool_input.get("command")
|
|
128
|
+
):
|
|
129
|
+
# Truncate long commands
|
|
130
|
+
cmd_str = str(cmd)
|
|
131
|
+
if len(cmd_str) > 60: # noqa: PLR2004
|
|
132
|
+
cmd_str = cmd_str[:57] + "..."
|
|
133
|
+
return f"Running: {cmd_str}"
|
|
134
|
+
|
|
135
|
+
# File reading
|
|
136
|
+
if (
|
|
137
|
+
any(k in name_lower for k in ["read", "load", "get"])
|
|
138
|
+
and "file" in name_lower
|
|
139
|
+
and (path := tool_input.get("path") or tool_input.get("file_path"))
|
|
140
|
+
):
|
|
141
|
+
return f"Reading: {path}"
|
|
142
|
+
|
|
143
|
+
# File writing/editing
|
|
144
|
+
if any(k in name_lower for k in ["write", "save", "edit", "modify"]) and (
|
|
145
|
+
path := tool_input.get("path") or tool_input.get("file_path")
|
|
146
|
+
):
|
|
147
|
+
return f"Editing: {path}"
|
|
148
|
+
|
|
149
|
+
# File deletion
|
|
150
|
+
if any(k in name_lower for k in ["delete", "remove"]) and (
|
|
151
|
+
path := tool_input.get("path") or tool_input.get("file_path")
|
|
152
|
+
):
|
|
153
|
+
return f"Deleting: {path}"
|
|
154
|
+
|
|
155
|
+
# Directory listing
|
|
156
|
+
if (
|
|
157
|
+
"list" in name_lower
|
|
158
|
+
and any(k in name_lower for k in ["dir", "folder", "path"])
|
|
159
|
+
and (path := tool_input.get("path") or tool_input.get("directory"))
|
|
160
|
+
):
|
|
161
|
+
return f"Listing: {path}"
|
|
162
|
+
|
|
163
|
+
# Search operations
|
|
164
|
+
if any(k in name_lower for k in ["search", "find", "grep", "query"]) and (
|
|
165
|
+
query := tool_input.get("query") or tool_input.get("pattern") or tool_input.get("regex")
|
|
166
|
+
):
|
|
167
|
+
query_str = str(query)
|
|
168
|
+
if len(query_str) > 40: # noqa: PLR2004
|
|
169
|
+
query_str = query_str[:37] + "..."
|
|
170
|
+
return f"Searching: {query_str}"
|
|
171
|
+
|
|
172
|
+
# Fetch/download
|
|
173
|
+
if any(k in name_lower for k in ["fetch", "download", "request"]) and (
|
|
174
|
+
url := tool_input.get("url")
|
|
175
|
+
):
|
|
176
|
+
url_str = str(url)
|
|
177
|
+
if len(url_str) > 50: # noqa: PLR2004
|
|
178
|
+
url_str = url_str[:47] + "..."
|
|
179
|
+
return f"Fetching: {url_str}"
|
|
180
|
+
|
|
181
|
+
# Process management
|
|
182
|
+
if "process" in name_lower:
|
|
183
|
+
if "start" in name_lower and (cmd := tool_input.get("command")):
|
|
184
|
+
return f"Starting process: {cmd}"
|
|
185
|
+
if "kill" in name_lower and (pid := tool_input.get("process_id")):
|
|
186
|
+
return f"Killing process: {pid}"
|
|
187
|
+
if "output" in name_lower and (pid := tool_input.get("process_id")):
|
|
188
|
+
return f"Getting output: {pid}"
|
|
189
|
+
|
|
190
|
+
# Code execution
|
|
191
|
+
if "code" in name_lower and any(k in name_lower for k in ["execute", "run", "eval"]):
|
|
192
|
+
if lang := tool_input.get("language"):
|
|
193
|
+
return f"Executing {lang} code"
|
|
194
|
+
return "Executing code"
|
|
195
|
+
|
|
196
|
+
# Default: try to find any path-like or meaningful parameter
|
|
197
|
+
for key in ["path", "file_path", "filepath", "filename", "name", "url", "command"]:
|
|
198
|
+
if value := tool_input.get(key):
|
|
199
|
+
value_str = str(value)
|
|
200
|
+
if len(value_str) > 50: # noqa: PLR2004
|
|
201
|
+
value_str = value_str[:47] + "..."
|
|
202
|
+
return f"{tool_name}: {value_str}"
|
|
203
|
+
|
|
204
|
+
# Final fallback
|
|
205
|
+
return f"Calling {tool_name}"
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
def infer_tool_kind(tool_name: str) -> ToolCallKind: # noqa: PLR0911
|
|
209
|
+
"""Determine the appropriate tool kind based on name.
|
|
210
|
+
|
|
211
|
+
Simple substring matching for tool kind inference.
|
|
212
|
+
|
|
213
|
+
Args:
|
|
214
|
+
tool_name: Name of the tool
|
|
215
|
+
|
|
216
|
+
Returns:
|
|
217
|
+
Tool kind string for ACP protocol
|
|
218
|
+
"""
|
|
219
|
+
name_lower = tool_name.lower()
|
|
220
|
+
if any(i in name_lower for i in ["read", "load", "get"]) and any(
|
|
221
|
+
i in name_lower for i in ["file", "path", "content"]
|
|
222
|
+
):
|
|
223
|
+
return "read"
|
|
224
|
+
if any(i in name_lower for i in ["write", "save", "edit", "modify", "update"]) and any(
|
|
225
|
+
i in name_lower for i in ["file", "path", "content"]
|
|
226
|
+
):
|
|
227
|
+
return "edit"
|
|
228
|
+
if any(i in name_lower for i in ["delete", "remove", "rm"]):
|
|
229
|
+
return "delete"
|
|
230
|
+
if any(i in name_lower for i in ["move", "rename", "mv"]):
|
|
231
|
+
return "move"
|
|
232
|
+
if any(i in name_lower for i in ["search", "find", "query", "lookup"]):
|
|
233
|
+
return "search"
|
|
234
|
+
if any(i in name_lower for i in ["execute", "run", "exec", "command", "shell"]):
|
|
235
|
+
return "execute"
|
|
236
|
+
if any(i in name_lower for i in ["think", "plan", "reason", "analyze"]):
|
|
237
|
+
return "think"
|
|
238
|
+
if any(i in name_lower for i in ["fetch", "download", "request"]):
|
|
239
|
+
return "fetch"
|
|
240
|
+
return "other" # Default to other
|
agentpool/__init__.py
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"""AgentPool: main package.
|
|
2
|
+
|
|
3
|
+
Pydantic-AI based Multi-Agent Framework with YAML-based Agents, Teams, Workflows &
|
|
4
|
+
Extended ACP / AGUI integration.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from importlib.metadata import version
|
|
10
|
+
|
|
11
|
+
from agentpool.models.agents import NativeAgentConfig
|
|
12
|
+
from agentpool.models.manifest import AgentsManifest
|
|
13
|
+
|
|
14
|
+
# Builtin toolsets imports removed to avoid circular dependency
|
|
15
|
+
# Import them directly from agentpool_toolsets.builtin when needed
|
|
16
|
+
from agentpool.agents import Agent, AgentContext
|
|
17
|
+
from agentpool.delegation import AgentPool, Team, TeamRun, BaseTeam
|
|
18
|
+
from dotenv import load_dotenv
|
|
19
|
+
from agentpool.messaging.messages import ChatMessage
|
|
20
|
+
from agentpool.tools import Tool, ToolCallInfo
|
|
21
|
+
from agentpool.messaging.messagenode import MessageNode
|
|
22
|
+
from agentpool.testing import acp_test_session
|
|
23
|
+
from pydantic_ai import (
|
|
24
|
+
AudioUrl,
|
|
25
|
+
BinaryContent,
|
|
26
|
+
BinaryImage,
|
|
27
|
+
DocumentUrl,
|
|
28
|
+
ImageUrl,
|
|
29
|
+
VideoUrl,
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
__version__ = version("agentpool")
|
|
33
|
+
__title__ = "AgentPool"
|
|
34
|
+
__author__ = "Philipp Temminghoff"
|
|
35
|
+
__author_email__ = "philipptemminghoff@googlemail.com"
|
|
36
|
+
__copyright__ = "Copyright (c) 2025 Philipp Temminghoff"
|
|
37
|
+
__license__ = "MIT"
|
|
38
|
+
__url__ = "https://github.com/phil65/agentpool"
|
|
39
|
+
|
|
40
|
+
load_dotenv()
|
|
41
|
+
|
|
42
|
+
__all__ = [
|
|
43
|
+
"Agent",
|
|
44
|
+
"AgentContext",
|
|
45
|
+
"AgentPool",
|
|
46
|
+
"AgentsManifest",
|
|
47
|
+
"AudioUrl",
|
|
48
|
+
"BaseTeam",
|
|
49
|
+
"BinaryContent",
|
|
50
|
+
"BinaryImage",
|
|
51
|
+
"ChatMessage",
|
|
52
|
+
"DocumentUrl",
|
|
53
|
+
"ImageUrl",
|
|
54
|
+
"MessageNode",
|
|
55
|
+
"NativeAgentConfig",
|
|
56
|
+
"Team",
|
|
57
|
+
"TeamRun",
|
|
58
|
+
"Tool",
|
|
59
|
+
"ToolCallInfo",
|
|
60
|
+
"VideoUrl",
|
|
61
|
+
"__version__",
|
|
62
|
+
"acp_test_session",
|
|
63
|
+
]
|
agentpool/__main__.py
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""CLI commands for agentpool."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from agentpool.agents.agent import Agent
|
|
6
|
+
from agentpool.agents.agui_agent import AGUIAgent
|
|
7
|
+
from agentpool.agents.claude_code_agent import ClaudeCodeAgent
|
|
8
|
+
from agentpool.agents.events import (
|
|
9
|
+
detailed_print_handler,
|
|
10
|
+
resolve_event_handlers,
|
|
11
|
+
simple_print_handler,
|
|
12
|
+
)
|
|
13
|
+
from agentpool.agents.context import AgentContext
|
|
14
|
+
from agentpool.agents.interactions import Interactions
|
|
15
|
+
from agentpool.agents.slashed_agent import SlashedAgent
|
|
16
|
+
from agentpool.agents.sys_prompts import SystemPrompts
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
__all__ = [
|
|
20
|
+
"AGUIAgent",
|
|
21
|
+
"Agent",
|
|
22
|
+
"AgentContext",
|
|
23
|
+
"ClaudeCodeAgent",
|
|
24
|
+
"Interactions",
|
|
25
|
+
"SlashedAgent",
|
|
26
|
+
"SystemPrompts",
|
|
27
|
+
"detailed_print_handler",
|
|
28
|
+
"resolve_event_handlers",
|
|
29
|
+
"simple_print_handler",
|
|
30
|
+
]
|