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
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"""Event sources for AgentPool."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING, Annotated, Any, Literal
|
|
6
|
+
|
|
7
|
+
from evented.configs import (
|
|
8
|
+
EmailConfig,
|
|
9
|
+
EventSourceConfig,
|
|
10
|
+
FileWatchConfig,
|
|
11
|
+
TimeEventConfig,
|
|
12
|
+
WebhookConfig,
|
|
13
|
+
)
|
|
14
|
+
from pydantic import ConfigDict, Field
|
|
15
|
+
from schemez import Schema
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from agentpool.messaging.events import ConnectionEventData
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
ConnectionEventType = Literal[
|
|
23
|
+
"message_received",
|
|
24
|
+
"message_processed",
|
|
25
|
+
"message_forwarded",
|
|
26
|
+
"queue_filled",
|
|
27
|
+
"queue_triggered",
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class ConnectionTriggerConfig(EventSourceConfig):
|
|
32
|
+
"""Trigger config specifically for connection events."""
|
|
33
|
+
|
|
34
|
+
model_config = ConfigDict(title="Connection Trigger")
|
|
35
|
+
|
|
36
|
+
type: Literal["connection"] = Field("connection", init=False)
|
|
37
|
+
"""Connection event trigger."""
|
|
38
|
+
|
|
39
|
+
source: str | None = Field(
|
|
40
|
+
default=None,
|
|
41
|
+
examples=["main_agent", "web_scraper", "data_processor"],
|
|
42
|
+
title="Connection source",
|
|
43
|
+
)
|
|
44
|
+
"""Connection source name."""
|
|
45
|
+
|
|
46
|
+
target: str | None = Field(
|
|
47
|
+
default=None,
|
|
48
|
+
examples=["output_handler", "notification_agent"],
|
|
49
|
+
title="Connection target",
|
|
50
|
+
)
|
|
51
|
+
"""Connection to trigger."""
|
|
52
|
+
|
|
53
|
+
event: ConnectionEventType = Field(
|
|
54
|
+
examples=["message_received", "message_processed", "queue_filled"],
|
|
55
|
+
title="Event type",
|
|
56
|
+
)
|
|
57
|
+
"""Event type to trigger on."""
|
|
58
|
+
|
|
59
|
+
condition: ConnectionEventConditionType | None = Field(default=None, title="Event condition")
|
|
60
|
+
"""Condition-based filter for the event."""
|
|
61
|
+
|
|
62
|
+
async def matches_event(self, event: ConnectionEventData[Any]) -> bool:
|
|
63
|
+
"""Check if this trigger matches the event."""
|
|
64
|
+
# First check event type
|
|
65
|
+
if event.event_type != self.event:
|
|
66
|
+
return False
|
|
67
|
+
|
|
68
|
+
# Check source/target filters
|
|
69
|
+
if self.source and event.connection.source.name != self.source:
|
|
70
|
+
return False
|
|
71
|
+
if self.target and not any(t.name == self.target for t in event.connection.targets):
|
|
72
|
+
return False
|
|
73
|
+
|
|
74
|
+
# Check condition if any
|
|
75
|
+
if self.condition:
|
|
76
|
+
return await self.condition.check(event)
|
|
77
|
+
|
|
78
|
+
return True
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
EventConfig = Annotated[
|
|
82
|
+
FileWatchConfig | WebhookConfig | EmailConfig | TimeEventConfig | ConnectionTriggerConfig,
|
|
83
|
+
Field(discriminator="type"),
|
|
84
|
+
]
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class ConnectionEventCondition(Schema):
|
|
88
|
+
"""Base conditions specifically for connection events."""
|
|
89
|
+
|
|
90
|
+
type: str = Field(init=False, title="Condition type")
|
|
91
|
+
|
|
92
|
+
async def check(self, event: ConnectionEventData[Any]) -> bool:
|
|
93
|
+
raise NotImplementedError
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class ConnectionContentCondition(ConnectionEventCondition):
|
|
97
|
+
"""Simple content matching for connection events."""
|
|
98
|
+
|
|
99
|
+
model_config = ConfigDict(title="Content Condition")
|
|
100
|
+
|
|
101
|
+
type: Literal["content"] = Field("content", init=False)
|
|
102
|
+
"""Content-based trigger."""
|
|
103
|
+
|
|
104
|
+
words: list[str] = Field(
|
|
105
|
+
examples=[["error", "warning"], ["complete", "finished"], ["urgent"]],
|
|
106
|
+
title="Match words",
|
|
107
|
+
)
|
|
108
|
+
"""List of words to match."""
|
|
109
|
+
|
|
110
|
+
mode: Literal["any", "all"] = Field(
|
|
111
|
+
default="any",
|
|
112
|
+
examples=["any", "all"],
|
|
113
|
+
title="Matching mode",
|
|
114
|
+
)
|
|
115
|
+
"""Matching mode."""
|
|
116
|
+
|
|
117
|
+
async def check(self, event: ConnectionEventData[Any]) -> bool:
|
|
118
|
+
if not event.message:
|
|
119
|
+
return False
|
|
120
|
+
text = str(event.message.content)
|
|
121
|
+
return any(word in text for word in self.words)
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
class ConnectionJinja2Condition(ConnectionEventCondition):
|
|
125
|
+
"""Flexible Jinja2 condition for connection events."""
|
|
126
|
+
|
|
127
|
+
model_config = ConfigDict(title="Jinja2 Condition")
|
|
128
|
+
|
|
129
|
+
type: Literal["jinja2"] = Field("jinja2", init=False)
|
|
130
|
+
"""Jinja2-based trigger configuration."""
|
|
131
|
+
|
|
132
|
+
template: str = Field(
|
|
133
|
+
examples=[
|
|
134
|
+
"{{ event.message.content | length > 100 }}",
|
|
135
|
+
"{{ 'urgent' in event.message.content }}",
|
|
136
|
+
],
|
|
137
|
+
title="Jinja2 condition template",
|
|
138
|
+
)
|
|
139
|
+
"""Jinja2-Template (needs to return a "boolean" string)."""
|
|
140
|
+
|
|
141
|
+
async def check(self, event: ConnectionEventData[Any]) -> bool:
|
|
142
|
+
from jinjarope import Environment
|
|
143
|
+
|
|
144
|
+
env = Environment(enable_async=True)
|
|
145
|
+
template = env.from_string(self.template)
|
|
146
|
+
result = await template.render_async(event=event)
|
|
147
|
+
return result.strip().lower() == "true"
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
ConnectionEventConditionType = Annotated[
|
|
151
|
+
ConnectionContentCondition | ConnectionJinja2Condition,
|
|
152
|
+
Field(discriminator="type"),
|
|
153
|
+
]
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"""Forward target models."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from collections.abc import Awaitable, Callable
|
|
6
|
+
from datetime import timedelta
|
|
7
|
+
from typing import TYPE_CHECKING, Annotated, Any, Literal
|
|
8
|
+
|
|
9
|
+
from pydantic import ConfigDict, Field, ImportString
|
|
10
|
+
from schemez import Schema
|
|
11
|
+
from upathtools import to_upath
|
|
12
|
+
|
|
13
|
+
from agentpool_config.conditions import Condition
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
if TYPE_CHECKING:
|
|
17
|
+
from pydantic_ai.models.function import FunctionModel
|
|
18
|
+
from upathtools import UPath
|
|
19
|
+
|
|
20
|
+
from agentpool.messaging import ChatMessage
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
ConnectionType = Literal["run", "context", "forward"]
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class ConnectionConfig(Schema):
|
|
27
|
+
"""Base model for message forwarding targets."""
|
|
28
|
+
|
|
29
|
+
model_config = ConfigDict(json_schema_extra={"title": "Connection Configuration"})
|
|
30
|
+
|
|
31
|
+
type: str = Field(init=False)
|
|
32
|
+
"""Connection type."""
|
|
33
|
+
|
|
34
|
+
wait_for_completion: bool = Field(default=True, title="Wait for completion")
|
|
35
|
+
"""Whether to wait for the result before continuing.
|
|
36
|
+
|
|
37
|
+
If True, message processing will wait for the target to complete.
|
|
38
|
+
If False, message will be forwarded asynchronously.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
queued: bool = Field(default=False, title="Enable message queueing")
|
|
42
|
+
"""Whether messages should be queued for manual processing."""
|
|
43
|
+
|
|
44
|
+
queue_strategy: Literal["concat", "latest", "buffer"] = Field(
|
|
45
|
+
default="latest",
|
|
46
|
+
examples=["concat", "latest", "buffer"],
|
|
47
|
+
title="Queue processing strategy",
|
|
48
|
+
)
|
|
49
|
+
"""How to process queued messages."""
|
|
50
|
+
|
|
51
|
+
priority: int = Field(default=0, examples=[0, 1, 5], title="Task priority")
|
|
52
|
+
"""Priority of the task. Lower = higher priority."""
|
|
53
|
+
|
|
54
|
+
delay: timedelta | None = Field(default=None, title="Processing delay")
|
|
55
|
+
"""Delay before processing."""
|
|
56
|
+
filter_condition: Condition | None = Field(
|
|
57
|
+
default=None,
|
|
58
|
+
title="Message filter condition",
|
|
59
|
+
examples=[{"type": "word_match", "words": ["bad word"]}],
|
|
60
|
+
)
|
|
61
|
+
"""When to filter messages (using Talk.when())."""
|
|
62
|
+
|
|
63
|
+
stop_condition: Condition | None = Field(
|
|
64
|
+
default=None,
|
|
65
|
+
title="Connection stop condition",
|
|
66
|
+
examples=[{"type": "cost", "max_cost": 0.1}],
|
|
67
|
+
)
|
|
68
|
+
"""When to disconnect the connection."""
|
|
69
|
+
|
|
70
|
+
exit_condition: Condition | None = Field(
|
|
71
|
+
default=None,
|
|
72
|
+
title="Application exit condition",
|
|
73
|
+
examples=[{"type": "cost", "max_cost": 0.2}],
|
|
74
|
+
)
|
|
75
|
+
"""When to exit the application (by raising SystemExit)."""
|
|
76
|
+
|
|
77
|
+
transform: ImportString[Callable[[Any], Any | Awaitable[Any]]] | None = Field(
|
|
78
|
+
default=None,
|
|
79
|
+
examples=["mymodule.transform_message", "utils.filters:clean_content"],
|
|
80
|
+
title="Message transform function",
|
|
81
|
+
)
|
|
82
|
+
"""Optional function to transform messages before forwarding."""
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class NodeConnectionConfig(ConnectionConfig):
|
|
86
|
+
"""Forward messages to another node.
|
|
87
|
+
|
|
88
|
+
This configuration defines how messages should flow from one node to another,
|
|
89
|
+
including:
|
|
90
|
+
- Basic routing (which node, what type of connection)
|
|
91
|
+
- Message queueing and processing strategies
|
|
92
|
+
- Timing controls (priority, delay)
|
|
93
|
+
- Execution behavior (wait for completion)
|
|
94
|
+
"""
|
|
95
|
+
|
|
96
|
+
model_config = ConfigDict(json_schema_extra={"title": "Node Connection Configuration"})
|
|
97
|
+
|
|
98
|
+
type: Literal["node"] = Field("node", init=False)
|
|
99
|
+
"""Connection to another node."""
|
|
100
|
+
|
|
101
|
+
name: str = Field(
|
|
102
|
+
examples=["output_agent", "processor", "notification_handler"],
|
|
103
|
+
title="Target node name",
|
|
104
|
+
)
|
|
105
|
+
"""Name of target agent."""
|
|
106
|
+
|
|
107
|
+
connection_type: ConnectionType = Field(
|
|
108
|
+
default="run",
|
|
109
|
+
examples=["run", "context", "forward"],
|
|
110
|
+
title="Connection type",
|
|
111
|
+
)
|
|
112
|
+
"""How messages should be handled by the target agent:
|
|
113
|
+
- run: Execute message as a new run
|
|
114
|
+
- context: Add message to agent's context
|
|
115
|
+
- forward: Forward message to agent's outbox
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
DEFAULT_MESSAGE_TEMPLATE = """
|
|
120
|
+
[{{ message.timestamp.strftime('%Y-%m-%d %H:%M:%S') }}] {{ message.name }}: {{ message.content }}
|
|
121
|
+
{%- if message.forwarded_from %}
|
|
122
|
+
(via: {{ message.forwarded_from|join(' -> ') }})
|
|
123
|
+
{%- endif %}
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
class FileConnectionConfig(ConnectionConfig):
|
|
128
|
+
"""Write messages to a file using a template.
|
|
129
|
+
|
|
130
|
+
The template receives the full message object for formatting.
|
|
131
|
+
Available fields include:
|
|
132
|
+
- timestamp: When the message was created
|
|
133
|
+
- name: Name of the sender
|
|
134
|
+
- content: Message content
|
|
135
|
+
- role: Message role (user/assistant/system)
|
|
136
|
+
- model: Model used (if any)
|
|
137
|
+
- cost_info: Token usage and cost info
|
|
138
|
+
- forwarded_from: Chain of message forwarding
|
|
139
|
+
"""
|
|
140
|
+
|
|
141
|
+
model_config = ConfigDict(json_schema_extra={"title": "File Connection Configuration"})
|
|
142
|
+
|
|
143
|
+
type: Literal["file"] = Field("file", init=False)
|
|
144
|
+
"""Connection to a file."""
|
|
145
|
+
|
|
146
|
+
connection_type: Literal["run"] = Field("run", init=False, exclude=True)
|
|
147
|
+
"""Connection type (fixed to "run")"""
|
|
148
|
+
|
|
149
|
+
path: str = Field(
|
|
150
|
+
examples=["logs/messages.txt", "/var/log/agent-{date}.log", "output/{agent}.md"],
|
|
151
|
+
title="Output file path",
|
|
152
|
+
)
|
|
153
|
+
"""Path to output file. Supports variables: {date}, {time}, {agent}"""
|
|
154
|
+
|
|
155
|
+
template: str = Field(
|
|
156
|
+
default=DEFAULT_MESSAGE_TEMPLATE,
|
|
157
|
+
examples=[
|
|
158
|
+
DEFAULT_MESSAGE_TEMPLATE,
|
|
159
|
+
"{{ message.content }}",
|
|
160
|
+
"[{{ message.name }}]: {{ message.content }}",
|
|
161
|
+
],
|
|
162
|
+
title="Message template",
|
|
163
|
+
)
|
|
164
|
+
"""Jinja2 template for message formatting."""
|
|
165
|
+
|
|
166
|
+
encoding: str = Field(
|
|
167
|
+
default="utf-8",
|
|
168
|
+
examples=["utf-8", "ascii", "latin1"],
|
|
169
|
+
title="File encoding",
|
|
170
|
+
)
|
|
171
|
+
"""File encoding to use."""
|
|
172
|
+
|
|
173
|
+
def format_message(self, message: ChatMessage[Any]) -> str:
|
|
174
|
+
"""Format a message using the template."""
|
|
175
|
+
from jinja2 import Template
|
|
176
|
+
|
|
177
|
+
template = Template(self.template)
|
|
178
|
+
return template.render(message=message)
|
|
179
|
+
|
|
180
|
+
def resolve_path(self, context: dict[str, str]) -> UPath:
|
|
181
|
+
"""Resolve path template with context variables."""
|
|
182
|
+
from agentpool.utils.now import get_now
|
|
183
|
+
|
|
184
|
+
now = get_now()
|
|
185
|
+
date = now.strftime("%Y-%m-%d")
|
|
186
|
+
time_ = now.strftime("%H-%M-%S")
|
|
187
|
+
variables = {"date": date, "time": time_, **context}
|
|
188
|
+
return to_upath(self.path.format(**variables))
|
|
189
|
+
|
|
190
|
+
def get_model(self) -> FunctionModel:
|
|
191
|
+
"""Get provider for file writing."""
|
|
192
|
+
from jinja2 import Template
|
|
193
|
+
from llmling_models import function_to_model
|
|
194
|
+
|
|
195
|
+
path_obj = to_upath(self.path)
|
|
196
|
+
template_obj = Template(self.template)
|
|
197
|
+
|
|
198
|
+
async def write_message(message: str) -> str:
|
|
199
|
+
formatted = template_obj.render(message=message)
|
|
200
|
+
path_obj.write_text(formatted + "\n", encoding=self.encoding)
|
|
201
|
+
return ""
|
|
202
|
+
|
|
203
|
+
return function_to_model(write_message)
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
class CallableConnectionConfig(ConnectionConfig):
|
|
207
|
+
"""Forward messages to a callable.
|
|
208
|
+
|
|
209
|
+
The callable can be either sync or async and should have the signature:
|
|
210
|
+
def process_message(message: ChatMessage[Any], **kwargs) -> Any
|
|
211
|
+
|
|
212
|
+
Any additional kwargs specified in the config will be passed to the callable.
|
|
213
|
+
"""
|
|
214
|
+
|
|
215
|
+
model_config = ConfigDict(json_schema_extra={"title": "Callable Connection Configuration"})
|
|
216
|
+
|
|
217
|
+
type: Literal["callable"] = Field("callable", init=False)
|
|
218
|
+
"""Connection to a callable imported from given import path."""
|
|
219
|
+
|
|
220
|
+
callable: ImportString[Callable[..., Any]] = Field(
|
|
221
|
+
examples=["mymodule.process_message", "handlers.notifications:send_email"],
|
|
222
|
+
title="Callable import path",
|
|
223
|
+
)
|
|
224
|
+
"""Import path to the message processing function."""
|
|
225
|
+
|
|
226
|
+
connection_type: Literal["run"] = Field("run", init=False, exclude=True)
|
|
227
|
+
"""Connection type (fixed to "run")"""
|
|
228
|
+
|
|
229
|
+
kw_args: dict[str, Any] = Field(default_factory=dict, title="Additional arguments")
|
|
230
|
+
"""Additional kwargs to pass to the callable."""
|
|
231
|
+
|
|
232
|
+
async def process_message(self, message: ChatMessage[Any]) -> Any:
|
|
233
|
+
"""Process a message through the callable.
|
|
234
|
+
|
|
235
|
+
Handles both sync and async callables transparently.
|
|
236
|
+
"""
|
|
237
|
+
from agentpool.utils.inspection import execute
|
|
238
|
+
|
|
239
|
+
return await execute(self.callable, message, **self.kw_args)
|
|
240
|
+
|
|
241
|
+
def get_model(self) -> FunctionModel:
|
|
242
|
+
"""Get provider for callable."""
|
|
243
|
+
from llmling_models import function_to_model
|
|
244
|
+
|
|
245
|
+
return function_to_model(self.callable)
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
ForwardingTarget = Annotated[
|
|
249
|
+
NodeConnectionConfig | FileConnectionConfig | CallableConnectionConfig,
|
|
250
|
+
Field(discriminator="type"),
|
|
251
|
+
]
|