agentenv-framework-protocol 0.1.425__tar.gz → 0.1.426__tar.gz
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.
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/PKG-INFO +18 -1
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/README.md +17 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/pyproject.toml +1 -1
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/a2a_agent/__init__.py +2 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/a2a_agent/tasks/v1.py +21 -1
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_a2a_agent.py +22 -1
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/.gitignore +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/LICENSE +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/NOTICE +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/THIRD_PARTY_NOTICES.md +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/examples/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/examples/advanced_agent.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/examples/basic_agent.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/examples/custom_extensions_agent.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/examples/multimodal_agent.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/examples/reference_model.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/examples/streaming_agent.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/a2a_agent/_trajectory_log.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/a2a_agent/_triggers.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/a2a_agent/extensions.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/a2a_agent/framework.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/a2a_agent/peer_agents.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/a2a_agent/proxy.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/a2a_agent/registry.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/a2a_agent/staging.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/a2a_agent/tasks/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/agent_env_environment.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/client.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/_declare.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/_linux.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/_load.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/app.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/app_data.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/app_runtime.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/apps.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/card.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/checks.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/conformance/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/conformance/__main__.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/conformance/checks.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/conformance/client.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/conformance/fixture.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/conformance/mp4.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/conformance/report.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/dataplane.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/driver.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/errors.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/extensions.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/frames.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/keys.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/launch.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/manifest.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/operations.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/platform.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/queue.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/recording.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/results.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/run_install_step.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/runtime.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/serve.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/serve_app.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/session.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/settings.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/skill.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/spaces.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/computer/tools.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/errors.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/manifest.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/preflight.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/tool_access.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/tool_client.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/tool_context.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/transfers.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/src/agentenv_protocol/types.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/computer_fake.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/probe_fake.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_a2a_agent_examples.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_a2a_object_transfers.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_a2a_peer_agents.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_a2a_proxy.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_a2a_staging.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_a2a_trajectory_log.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_agent_env_environment.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_client.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_app_data.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_app_server.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_conformance.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_conformance_checks.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_conformance_recording.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_dataplane.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_declare.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_driver.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_extensions.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_frames.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_queue.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_recording.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_serve.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_computer_spaces.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_control_token.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_data_objects.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_errors.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_extension_methods.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_intake.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_manifest.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_preflight.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_tool_access.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_tool_annotations.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_tool_client.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_tool_context.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_tool_context_fastmcp.py +0 -0
- {agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_tool_context_injection.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agentenv-framework-protocol
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.426
|
|
4
4
|
Summary: Open data-plane protocol and server SDK for agent environments.
|
|
5
5
|
Project-URL: Homepage, https://www.agentenvframework.com
|
|
6
6
|
Project-URL: Documentation, https://www.agentenvframework.com/docs
|
|
@@ -1063,6 +1063,23 @@ class MyAgentConfig(AgentConfig):
|
|
|
1063
1063
|
provider_token: WriteOnly[str | None] = None
|
|
1064
1064
|
```
|
|
1065
1065
|
|
|
1066
|
+
An agent that can turn its own tools off, such as its shell, file or web tools, takes `builtin_tools`, typed
|
|
1067
|
+
`BuiltinTools` over a `Literal` of its tools' names, so its card's schema names them. A task selects them on
|
|
1068
|
+
`deploy_agent`: `{"disable": "*"}` turns them all off, `{"disable": [...]}` the ones named, and `{"only": [...]}` keeps
|
|
1069
|
+
the ones named; the agent applies `request.config.builtin_tools` to its runtime. The MCP tools AgentEnv gives it are not
|
|
1070
|
+
its own and stay. A selection for an agent whose config has
|
|
1071
|
+
no `builtin_tools`, or that names a tool its schema doesn't, is refused before the deploy sends it anything.
|
|
1072
|
+
|
|
1073
|
+
```python
|
|
1074
|
+
from typing import Literal
|
|
1075
|
+
|
|
1076
|
+
from agentenv_protocol.a2a_agent import AgentConfig, BuiltinTools
|
|
1077
|
+
|
|
1078
|
+
|
|
1079
|
+
class MyAgentConfig(AgentConfig):
|
|
1080
|
+
builtin_tools: BuiltinTools[Literal["shell", "read_file", "web_fetch"]] | None = None
|
|
1081
|
+
```
|
|
1082
|
+
|
|
1066
1083
|
`output_format` is author-owned in v1 rather than a field on the base
|
|
1067
1084
|
`AgentConfig`. An agent that supports structured output must declare the field
|
|
1068
1085
|
on its config subclass, apply it to its model or runtime, and return the value
|
|
@@ -1007,6 +1007,23 @@ class MyAgentConfig(AgentConfig):
|
|
|
1007
1007
|
provider_token: WriteOnly[str | None] = None
|
|
1008
1008
|
```
|
|
1009
1009
|
|
|
1010
|
+
An agent that can turn its own tools off, such as its shell, file or web tools, takes `builtin_tools`, typed
|
|
1011
|
+
`BuiltinTools` over a `Literal` of its tools' names, so its card's schema names them. A task selects them on
|
|
1012
|
+
`deploy_agent`: `{"disable": "*"}` turns them all off, `{"disable": [...]}` the ones named, and `{"only": [...]}` keeps
|
|
1013
|
+
the ones named; the agent applies `request.config.builtin_tools` to its runtime. The MCP tools AgentEnv gives it are not
|
|
1014
|
+
its own and stay. A selection for an agent whose config has
|
|
1015
|
+
no `builtin_tools`, or that names a tool its schema doesn't, is refused before the deploy sends it anything.
|
|
1016
|
+
|
|
1017
|
+
```python
|
|
1018
|
+
from typing import Literal
|
|
1019
|
+
|
|
1020
|
+
from agentenv_protocol.a2a_agent import AgentConfig, BuiltinTools
|
|
1021
|
+
|
|
1022
|
+
|
|
1023
|
+
class MyAgentConfig(AgentConfig):
|
|
1024
|
+
builtin_tools: BuiltinTools[Literal["shell", "read_file", "web_fetch"]] | None = None
|
|
1025
|
+
```
|
|
1026
|
+
|
|
1010
1027
|
`output_format` is author-owned in v1 rather than a field on the base
|
|
1011
1028
|
`AgentConfig`. An agent that supports structured output must declare the field
|
|
1012
1029
|
on its config subclass, apply it to its model or runtime, and return the value
|
|
@@ -102,6 +102,7 @@ from .registry import (
|
|
|
102
102
|
from .staging import STAGING_ENDPOINT, STAGING_V1_URI, StagingStore, staging_routes
|
|
103
103
|
from .tasks.v1 import (
|
|
104
104
|
AgentConfig,
|
|
105
|
+
BuiltinTools,
|
|
105
106
|
AgentRunResult,
|
|
106
107
|
DataPart,
|
|
107
108
|
FilePart,
|
|
@@ -154,6 +155,7 @@ __all__ = [
|
|
|
154
155
|
"AgentIdentity",
|
|
155
156
|
"AgentRunResult",
|
|
156
157
|
"AttributionProbeResponse",
|
|
158
|
+
"BuiltinTools",
|
|
157
159
|
"BundleSkillRequest",
|
|
158
160
|
"ChangelogIncrement",
|
|
159
161
|
"ContextEventsTrajectoryRequest",
|
|
@@ -17,7 +17,7 @@ from pathlib import Path
|
|
|
17
17
|
from typing import Annotated, Any, Generic, Literal, TypeAlias, TypeVar, Union
|
|
18
18
|
|
|
19
19
|
from a2a.types import TaskStatusUpdateEvent
|
|
20
|
-
from pydantic import BaseModel, ConfigDict, Field
|
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
|
21
21
|
|
|
22
22
|
logger = logging.getLogger(__name__)
|
|
23
23
|
|
|
@@ -127,6 +127,26 @@ class AgentConfig(BaseModel):
|
|
|
127
127
|
timeout_seconds: int = 600
|
|
128
128
|
|
|
129
129
|
|
|
130
|
+
ToolName = TypeVar("ToolName", bound=str)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class BuiltinTools(BaseModel, Generic[ToolName]):
|
|
134
|
+
"""Which of an agent's own tools it may use, as a task selects them: ``disable`` turns off the ones it names, or
|
|
135
|
+
all of them with ``"*"``; ``only`` keeps the ones it names. An agent's config takes it as
|
|
136
|
+
``builtin_tools: BuiltinTools[<a Literal of its tools>] | None``, so its card's agent-config schema names them."""
|
|
137
|
+
|
|
138
|
+
model_config = ConfigDict(extra="forbid", frozen=True)
|
|
139
|
+
|
|
140
|
+
disable: Literal["*"] | list[ToolName] | None = None
|
|
141
|
+
only: list[ToolName] | None = None
|
|
142
|
+
|
|
143
|
+
@model_validator(mode="after")
|
|
144
|
+
def _one_of(self) -> BuiltinTools:
|
|
145
|
+
if (self.disable is None) == (self.only is None):
|
|
146
|
+
raise ValueError("builtin_tools takes exactly one of disable and only")
|
|
147
|
+
return self
|
|
148
|
+
|
|
149
|
+
|
|
130
150
|
ConfigT = TypeVar("ConfigT", bound=AgentConfig)
|
|
131
151
|
|
|
132
152
|
|
{agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_a2a_agent.py
RENAMED
|
@@ -6,7 +6,7 @@ import json
|
|
|
6
6
|
import time
|
|
7
7
|
from dataclasses import FrozenInstanceError
|
|
8
8
|
from functools import wraps
|
|
9
|
-
from typing import Any, Union
|
|
9
|
+
from typing import Any, Literal, Union
|
|
10
10
|
from unittest.mock import MagicMock
|
|
11
11
|
|
|
12
12
|
import httpx
|
|
@@ -44,6 +44,7 @@ from agentenv_protocol.a2a_agent import (
|
|
|
44
44
|
AgentEnvAgent,
|
|
45
45
|
AgentIdentity,
|
|
46
46
|
AttributionProbeResponse,
|
|
47
|
+
BuiltinTools,
|
|
47
48
|
BundleSkillRequest,
|
|
48
49
|
ContextObjectTrajectoryRequest,
|
|
49
50
|
ContextTrajectoryRequest,
|
|
@@ -1774,6 +1775,26 @@ def test_agent_card_config_schema_omits_literal_defaults() -> None:
|
|
|
1774
1775
|
assert "default" not in schema["$defs"]["NestedConfig"]["properties"]["token"]
|
|
1775
1776
|
|
|
1776
1777
|
|
|
1778
|
+
def test_builtin_tools_names_the_agents_own_tools_on_its_card_and_takes_one_selection() -> None:
|
|
1779
|
+
class RuntimeConfig(AgentConfig):
|
|
1780
|
+
builtin_tools: BuiltinTools[Literal["Bash", "Read", "WebFetch"]] | None = None
|
|
1781
|
+
|
|
1782
|
+
@a2a_agent(identity=AgentIdentity(name="tooled", description="test", version="1"), config=RuntimeConfig)
|
|
1783
|
+
class Agent(AgentEnvAgent):
|
|
1784
|
+
async def run(self, request: TaskRequest[RuntimeConfig]) -> TaskResult:
|
|
1785
|
+
return TaskResult.text("ok")
|
|
1786
|
+
|
|
1787
|
+
with TestClient(Agent().create_app()) as client:
|
|
1788
|
+
card = client.get("/.well-known/agent-card.json").json()
|
|
1789
|
+
statuses = [_operation(client, card, AGENT_CONFIG_V1.uri, "set", {"builtin_tools": selection}).status_code
|
|
1790
|
+
for selection in ({"disable": "*"}, {"only": ["Read"]}, {"disable": ["Glob"]},
|
|
1791
|
+
{"disable": "*", "only": ["Read"]}, {})]
|
|
1792
|
+
|
|
1793
|
+
request = _extension(card, AGENT_CONFIG_V1.uri)["params"]["methods"]["set"]["request"]
|
|
1794
|
+
assert "builtin_tools" in request["supported"] and '"enum": ["Bash", "Read", "WebFetch"]' in json.dumps(request)
|
|
1795
|
+
assert statuses == [200, 200, 400, 400, 400]
|
|
1796
|
+
|
|
1797
|
+
|
|
1777
1798
|
def test_validation_errors_do_not_echo_rejected_values() -> None:
|
|
1778
1799
|
secret = "sk-live-SUPERSECRET"
|
|
1779
1800
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/THIRD_PARTY_NOTICES.md
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/examples/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/examples/basic_agent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/computer_fake.py
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/probe_fake.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_a2a_proxy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_errors.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_intake.py
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_manifest.py
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.425 → agentenv_framework_protocol-0.1.426}/tests/test_preflight.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|