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,419 @@
|
|
|
1
|
+
"""Session update schema definitions."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import base64
|
|
6
|
+
from collections.abc import Sequence # noqa: TC003
|
|
7
|
+
from typing import TYPE_CHECKING, Annotated, Any, Literal, Self
|
|
8
|
+
|
|
9
|
+
from pydantic import Field
|
|
10
|
+
|
|
11
|
+
from acp.schema.agent_plan import PlanEntry # noqa: TC001
|
|
12
|
+
from acp.schema.base import AnnotatedObject
|
|
13
|
+
from acp.schema.content_blocks import ( # noqa: TC001
|
|
14
|
+
Annotations,
|
|
15
|
+
Audience,
|
|
16
|
+
AudioContentBlock,
|
|
17
|
+
BlobResourceContents,
|
|
18
|
+
ContentBlock,
|
|
19
|
+
EmbeddedResourceContentBlock,
|
|
20
|
+
ImageContentBlock,
|
|
21
|
+
ResourceContentBlock,
|
|
22
|
+
TextContentBlock,
|
|
23
|
+
TextResourceContents,
|
|
24
|
+
)
|
|
25
|
+
from acp.schema.slash_commands import AvailableCommand # noqa: TC001
|
|
26
|
+
from acp.schema.tool_call import ( # noqa: TC001
|
|
27
|
+
ToolCallContent,
|
|
28
|
+
ToolCallKind,
|
|
29
|
+
ToolCallLocation,
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
if TYPE_CHECKING:
|
|
34
|
+
from datetime import datetime
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
ToolCallStatus = Literal["pending", "in_progress", "completed", "failed"]
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class BaseChunk(AnnotatedObject):
|
|
41
|
+
"""Base class for all session update chunks."""
|
|
42
|
+
|
|
43
|
+
content: ContentBlock
|
|
44
|
+
"""A single item of content"""
|
|
45
|
+
|
|
46
|
+
@classmethod
|
|
47
|
+
def text(
|
|
48
|
+
cls,
|
|
49
|
+
text: str,
|
|
50
|
+
*,
|
|
51
|
+
audience: Audience | None = None,
|
|
52
|
+
last_modified: datetime | str | None = None,
|
|
53
|
+
priority: float | None = None,
|
|
54
|
+
) -> Self:
|
|
55
|
+
"""Create a chunk containing text.
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
text: The text content.
|
|
59
|
+
audience: The audience for the text.
|
|
60
|
+
last_modified: The last modified date of the text.
|
|
61
|
+
priority: The priority of the text.
|
|
62
|
+
"""
|
|
63
|
+
annotations = Annotations.optionally_create(
|
|
64
|
+
audience=audience,
|
|
65
|
+
last_modified=last_modified,
|
|
66
|
+
priority=priority,
|
|
67
|
+
)
|
|
68
|
+
return cls(content=TextContentBlock(text=text, annotations=annotations))
|
|
69
|
+
|
|
70
|
+
@classmethod
|
|
71
|
+
def image(
|
|
72
|
+
cls,
|
|
73
|
+
data: str | bytes,
|
|
74
|
+
mime_type: str,
|
|
75
|
+
uri: str | None = None,
|
|
76
|
+
audience: Audience | None = None,
|
|
77
|
+
last_modified: datetime | str | None = None,
|
|
78
|
+
priority: float | None = None,
|
|
79
|
+
) -> Self:
|
|
80
|
+
"""Create a chunk containing an embedded image resource.
|
|
81
|
+
|
|
82
|
+
Args:
|
|
83
|
+
data: The image data.
|
|
84
|
+
mime_type: The MIME type of the image.
|
|
85
|
+
uri: The URI of the image.
|
|
86
|
+
audience: The audience for the image.
|
|
87
|
+
last_modified: The last modified date of the image.
|
|
88
|
+
priority: The priority of the image.
|
|
89
|
+
"""
|
|
90
|
+
if isinstance(data, bytes):
|
|
91
|
+
data = base64.b64encode(data).decode()
|
|
92
|
+
annotations = Annotations.optionally_create(
|
|
93
|
+
audience=audience,
|
|
94
|
+
last_modified=last_modified,
|
|
95
|
+
priority=priority,
|
|
96
|
+
)
|
|
97
|
+
image = ImageContentBlock(
|
|
98
|
+
data=data,
|
|
99
|
+
mime_type=mime_type,
|
|
100
|
+
uri=uri,
|
|
101
|
+
annotations=annotations,
|
|
102
|
+
)
|
|
103
|
+
return cls(content=image)
|
|
104
|
+
|
|
105
|
+
@classmethod
|
|
106
|
+
def audio(
|
|
107
|
+
cls,
|
|
108
|
+
data: str | bytes,
|
|
109
|
+
mime_type: str,
|
|
110
|
+
audience: Audience | None = None,
|
|
111
|
+
last_modified: datetime | str | None = None,
|
|
112
|
+
priority: float | None = None,
|
|
113
|
+
) -> Self:
|
|
114
|
+
"""Create a chunk containing audio content.
|
|
115
|
+
|
|
116
|
+
Args:
|
|
117
|
+
data: The audio data.
|
|
118
|
+
mime_type: The MIME type of the audio data.
|
|
119
|
+
audience: The audience for the audio chunk.
|
|
120
|
+
last_modified: The last modified date of the audio chunk.
|
|
121
|
+
priority: The priority of the audio chunk.
|
|
122
|
+
"""
|
|
123
|
+
if isinstance(data, bytes):
|
|
124
|
+
data = base64.b64encode(data).decode()
|
|
125
|
+
annotations = Annotations.optionally_create(
|
|
126
|
+
audience=audience,
|
|
127
|
+
last_modified=last_modified,
|
|
128
|
+
priority=priority,
|
|
129
|
+
)
|
|
130
|
+
content = AudioContentBlock(
|
|
131
|
+
data=data,
|
|
132
|
+
mime_type=mime_type,
|
|
133
|
+
annotations=annotations,
|
|
134
|
+
)
|
|
135
|
+
return cls(content=content)
|
|
136
|
+
|
|
137
|
+
@classmethod
|
|
138
|
+
def resource(
|
|
139
|
+
cls,
|
|
140
|
+
name: str,
|
|
141
|
+
uri: str,
|
|
142
|
+
description: str | None = None,
|
|
143
|
+
mime_type: str | None = None,
|
|
144
|
+
size: int | None = None,
|
|
145
|
+
title: str | None = None,
|
|
146
|
+
audience: Audience | None = None,
|
|
147
|
+
last_modified: datetime | str | None = None,
|
|
148
|
+
priority: float | None = None,
|
|
149
|
+
) -> Self:
|
|
150
|
+
"""Create a chunk containing a resource content block.
|
|
151
|
+
|
|
152
|
+
Args:
|
|
153
|
+
name: The name of the resource.
|
|
154
|
+
uri: The URI of the resource.
|
|
155
|
+
description: The description of the resource.
|
|
156
|
+
mime_type: The MIME type of the resource.
|
|
157
|
+
size: The size of the resource.
|
|
158
|
+
title: The title of the resource.
|
|
159
|
+
audience: The audience of the resource.
|
|
160
|
+
last_modified: The last modified date of the resource.
|
|
161
|
+
priority: The priority of the resource.
|
|
162
|
+
"""
|
|
163
|
+
annotations = Annotations.optionally_create(
|
|
164
|
+
audience=audience,
|
|
165
|
+
last_modified=last_modified,
|
|
166
|
+
priority=priority,
|
|
167
|
+
)
|
|
168
|
+
block = ResourceContentBlock(
|
|
169
|
+
name=name,
|
|
170
|
+
uri=uri,
|
|
171
|
+
description=description,
|
|
172
|
+
mime_type=mime_type,
|
|
173
|
+
size=size,
|
|
174
|
+
title=title,
|
|
175
|
+
annotations=annotations,
|
|
176
|
+
)
|
|
177
|
+
return cls(content=block)
|
|
178
|
+
|
|
179
|
+
@classmethod
|
|
180
|
+
def embedded_text_resource(
|
|
181
|
+
cls,
|
|
182
|
+
text: str,
|
|
183
|
+
uri: str,
|
|
184
|
+
mime_type: str | None = None,
|
|
185
|
+
audience: Audience | None = None,
|
|
186
|
+
last_modified: datetime | str | None = None,
|
|
187
|
+
priority: float | None = None,
|
|
188
|
+
) -> Self:
|
|
189
|
+
"""Create a chunk containing an embedded text resource.
|
|
190
|
+
|
|
191
|
+
Args:
|
|
192
|
+
text: The text to embed.
|
|
193
|
+
uri: The URI of the resource.
|
|
194
|
+
mime_type: The MIME type of the resource.
|
|
195
|
+
audience: The audience to apply to the resource.
|
|
196
|
+
last_modified: The last modified date of the resource.
|
|
197
|
+
priority: The priority of the resource.
|
|
198
|
+
"""
|
|
199
|
+
annotations = Annotations.optionally_create(
|
|
200
|
+
audience=audience,
|
|
201
|
+
last_modified=last_modified,
|
|
202
|
+
priority=priority,
|
|
203
|
+
)
|
|
204
|
+
contents = TextResourceContents(text=text, mime_type=mime_type, uri=uri)
|
|
205
|
+
content = EmbeddedResourceContentBlock(annotations=annotations, resource=contents)
|
|
206
|
+
return cls(content=content) # pyright: ignore[reportArgumentType] # ty: ignore[invalid-argument-type]
|
|
207
|
+
|
|
208
|
+
@classmethod
|
|
209
|
+
def embedded_blob_resource(
|
|
210
|
+
cls,
|
|
211
|
+
data: bytes | str,
|
|
212
|
+
uri: str,
|
|
213
|
+
mime_type: str | None = None,
|
|
214
|
+
audience: Audience | None = None,
|
|
215
|
+
last_modified: datetime | str | None = None,
|
|
216
|
+
priority: float | None = None,
|
|
217
|
+
) -> Self:
|
|
218
|
+
"""Create a chunk containing an embedded blob resource.
|
|
219
|
+
|
|
220
|
+
Args:
|
|
221
|
+
data: The data to embed.
|
|
222
|
+
uri: The URI of the resource.
|
|
223
|
+
mime_type: The MIME type of the resource.
|
|
224
|
+
audience: The audience to apply to the resource.
|
|
225
|
+
last_modified: The last modified date of the resource.
|
|
226
|
+
priority: The priority of the resource.
|
|
227
|
+
"""
|
|
228
|
+
if isinstance(data, bytes):
|
|
229
|
+
data = base64.b64encode(data).decode()
|
|
230
|
+
annotations = Annotations.optionally_create(
|
|
231
|
+
audience=audience,
|
|
232
|
+
last_modified=last_modified,
|
|
233
|
+
priority=priority,
|
|
234
|
+
)
|
|
235
|
+
resource = BlobResourceContents(blob=data, mime_type=mime_type, uri=uri)
|
|
236
|
+
content = EmbeddedResourceContentBlock(annotations=annotations, resource=resource)
|
|
237
|
+
return cls(content=content) # pyright: ignore[reportArgumentType] # ty: ignore[invalid-argument-type]
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
class UserMessageChunk(BaseChunk):
|
|
241
|
+
"""A chunk of the user's message being streamed."""
|
|
242
|
+
|
|
243
|
+
session_update: Literal["user_message_chunk"] = Field(default="user_message_chunk", init=False)
|
|
244
|
+
"""User message chunk."""
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
class AgentMessageChunk(BaseChunk):
|
|
248
|
+
"""A chunk of the agent's response being streamed."""
|
|
249
|
+
|
|
250
|
+
session_update: Literal["agent_message_chunk"] = Field(
|
|
251
|
+
default="agent_message_chunk", init=False
|
|
252
|
+
)
|
|
253
|
+
"""Agent message chunk."""
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
class AgentThoughtChunk(BaseChunk):
|
|
257
|
+
"""A chunk of the agent's internal reasoning being streamed."""
|
|
258
|
+
|
|
259
|
+
session_update: Literal["agent_thought_chunk"] = Field(
|
|
260
|
+
default="agent_thought_chunk", init=False
|
|
261
|
+
)
|
|
262
|
+
"""Agent thought chunk."""
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
class ToolCallProgress(AnnotatedObject):
|
|
266
|
+
"""Update on the status or results of a tool call."""
|
|
267
|
+
|
|
268
|
+
session_update: Literal["tool_call_update"] = Field(default="tool_call_update", init=False)
|
|
269
|
+
"""Tool call update."""
|
|
270
|
+
|
|
271
|
+
content: Sequence[ToolCallContent] | None = None
|
|
272
|
+
"""Replace the content collection."""
|
|
273
|
+
|
|
274
|
+
kind: ToolCallKind | None = None
|
|
275
|
+
"""Update the tool kind."""
|
|
276
|
+
|
|
277
|
+
locations: Sequence[ToolCallLocation] | None = None
|
|
278
|
+
"""Replace the locations collection."""
|
|
279
|
+
|
|
280
|
+
raw_input: Any | None = None
|
|
281
|
+
"""Update the raw input."""
|
|
282
|
+
|
|
283
|
+
raw_output: Any | None = None
|
|
284
|
+
"""Update the raw output."""
|
|
285
|
+
|
|
286
|
+
status: ToolCallStatus | None = None
|
|
287
|
+
"""Update the execution status."""
|
|
288
|
+
|
|
289
|
+
title: str | None = None
|
|
290
|
+
"""Update the human-readable title."""
|
|
291
|
+
|
|
292
|
+
tool_call_id: str
|
|
293
|
+
"""The ID of the tool call being updated."""
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
class CurrentModeUpdate(AnnotatedObject):
|
|
297
|
+
"""The current mode of the session has changed.
|
|
298
|
+
|
|
299
|
+
See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes)
|
|
300
|
+
"""
|
|
301
|
+
|
|
302
|
+
current_mode_id: str
|
|
303
|
+
"""The ID of the current mode"""
|
|
304
|
+
|
|
305
|
+
session_update: Literal["current_mode_update"] = Field(
|
|
306
|
+
default="current_mode_update", init=False
|
|
307
|
+
)
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
class AgentPlanUpdate(AnnotatedObject):
|
|
311
|
+
"""The agent's execution plan for complex tasks.
|
|
312
|
+
|
|
313
|
+
See protocol docs: [Agent Plan](https://agentclientprotocol.com/protocol/agent-plan).
|
|
314
|
+
"""
|
|
315
|
+
|
|
316
|
+
session_update: Literal["plan"] = Field(default="plan", init=False)
|
|
317
|
+
|
|
318
|
+
entries: Sequence[PlanEntry]
|
|
319
|
+
"""The list of tasks to be accomplished.
|
|
320
|
+
|
|
321
|
+
When updating a plan, the agent must send a complete list of all entries
|
|
322
|
+
with their current status. The client replaces the entire plan with each update."""
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
class AvailableCommandsUpdate(AnnotatedObject):
|
|
326
|
+
"""Available commands are ready or have changed."""
|
|
327
|
+
|
|
328
|
+
session_update: Literal["available_commands_update"] = Field(
|
|
329
|
+
default="available_commands_update", init=False
|
|
330
|
+
)
|
|
331
|
+
"""Available commands are ready or have changed."""
|
|
332
|
+
|
|
333
|
+
available_commands: Sequence[AvailableCommand]
|
|
334
|
+
"""Commands the agent can execute"""
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
class CurrentModelUpdate(AnnotatedObject):
|
|
338
|
+
"""**UNSTABLE**: This capability is not part of the spec yet.
|
|
339
|
+
|
|
340
|
+
The current model of the session has changed.
|
|
341
|
+
"""
|
|
342
|
+
|
|
343
|
+
current_model_id: str
|
|
344
|
+
"""The ID of the current model."""
|
|
345
|
+
|
|
346
|
+
session_update: Literal["current_model_update"] = Field(
|
|
347
|
+
default="current_model_update", init=False
|
|
348
|
+
)
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
class ConfigOptionUpdate(AnnotatedObject):
|
|
352
|
+
"""A session configuration option value has changed.
|
|
353
|
+
|
|
354
|
+
See protocol docs: [Session Config Options](https://agentclientprotocol.com/protocol/session-config-options)
|
|
355
|
+
"""
|
|
356
|
+
|
|
357
|
+
session_update: Literal["config_option_update"] = Field(
|
|
358
|
+
default="config_option_update", init=False
|
|
359
|
+
)
|
|
360
|
+
|
|
361
|
+
config_id: str
|
|
362
|
+
"""The ID of the configuration option that changed."""
|
|
363
|
+
|
|
364
|
+
value_id: str
|
|
365
|
+
"""The new value ID for this configuration option."""
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
class ToolCallStart(AnnotatedObject):
|
|
369
|
+
"""Notification that a new tool call has been initiated."""
|
|
370
|
+
|
|
371
|
+
session_update: Literal["tool_call"] = Field(default="tool_call", init=False)
|
|
372
|
+
"""Notification that a new tool call has been initiated."""
|
|
373
|
+
|
|
374
|
+
content: Sequence[ToolCallContent] | None = None
|
|
375
|
+
"""Content produced by the tool call."""
|
|
376
|
+
|
|
377
|
+
kind: ToolCallKind | None = None
|
|
378
|
+
"""The category of tool being invoked.
|
|
379
|
+
|
|
380
|
+
Helps clients choose appropriate icons and UI treatment.
|
|
381
|
+
"""
|
|
382
|
+
|
|
383
|
+
locations: Sequence[ToolCallLocation] | None = None
|
|
384
|
+
"""File locations affected by this tool call.
|
|
385
|
+
|
|
386
|
+
Enables "follow-along" features in clients.
|
|
387
|
+
"""
|
|
388
|
+
|
|
389
|
+
raw_input: Any | None = None
|
|
390
|
+
"""Raw input parameters sent to the tool."""
|
|
391
|
+
|
|
392
|
+
raw_output: Any | None = None
|
|
393
|
+
"""Raw output returned by the tool."""
|
|
394
|
+
|
|
395
|
+
status: ToolCallStatus | None = None
|
|
396
|
+
"""Current execution status of the tool call."""
|
|
397
|
+
|
|
398
|
+
title: str
|
|
399
|
+
"""Human-readable title describing what the tool is doing."""
|
|
400
|
+
|
|
401
|
+
tool_call_id: str
|
|
402
|
+
"""Unique identifier for this tool call within the session."""
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
SessionUpdate = Annotated[
|
|
406
|
+
(
|
|
407
|
+
UserMessageChunk
|
|
408
|
+
| AgentMessageChunk
|
|
409
|
+
| AgentThoughtChunk
|
|
410
|
+
| ToolCallStart
|
|
411
|
+
| ToolCallProgress
|
|
412
|
+
| AvailableCommandsUpdate
|
|
413
|
+
| AgentPlanUpdate
|
|
414
|
+
| CurrentModeUpdate
|
|
415
|
+
| CurrentModelUpdate
|
|
416
|
+
| ConfigOptionUpdate
|
|
417
|
+
),
|
|
418
|
+
Field(discriminator="session_update"),
|
|
419
|
+
]
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""Slash command schema definitions."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Self
|
|
6
|
+
|
|
7
|
+
from pydantic import RootModel
|
|
8
|
+
|
|
9
|
+
from acp.schema.base import AnnotatedObject, Schema
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class CommandInputHint(Schema):
|
|
13
|
+
"""All text that was typed after the command name is provided as input."""
|
|
14
|
+
|
|
15
|
+
hint: str
|
|
16
|
+
"""A hint to display when the input hasn't been provided yet."""
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class AvailableCommandInput(RootModel[CommandInputHint]):
|
|
20
|
+
"""A container for the input specification for a command."""
|
|
21
|
+
|
|
22
|
+
root: CommandInputHint
|
|
23
|
+
"""The input specification for a command."""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class AvailableCommand(AnnotatedObject):
|
|
27
|
+
"""Information about a command."""
|
|
28
|
+
|
|
29
|
+
description: str
|
|
30
|
+
"""Human-readable description of what the command does."""
|
|
31
|
+
|
|
32
|
+
input: AvailableCommandInput | None = None
|
|
33
|
+
"""Input for the command if required."""
|
|
34
|
+
|
|
35
|
+
name: str
|
|
36
|
+
"""Command name (e.g., `create_plan`, `research_codebase`)."""
|
|
37
|
+
|
|
38
|
+
@classmethod
|
|
39
|
+
def create(cls, name: str, description: str, input_hint: str | None = None) -> Self:
|
|
40
|
+
"""Create a new Command.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
name: Name of the command.
|
|
44
|
+
description: Description of the command.
|
|
45
|
+
input_hint: Hint for the input.
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
A new available command.
|
|
49
|
+
"""
|
|
50
|
+
spec = AvailableCommandInput(root=CommandInputHint(hint=input_hint)) if input_hint else None
|
|
51
|
+
return cls(name=name, description=description, input=spec)
|
acp/schema/terminal.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"""Terminal schema definitions."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from acp.schema.base import AnnotatedObject
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class TerminalExitStatus(AnnotatedObject):
|
|
9
|
+
"""Exit status of a terminal command."""
|
|
10
|
+
|
|
11
|
+
exit_code: int | None = None
|
|
12
|
+
"""The process exit code (may be null if terminated by signal)."""
|
|
13
|
+
|
|
14
|
+
signal: str | None = None
|
|
15
|
+
"""The signal that terminated the process (may be null if exited normally)."""
|