agentenv-framework-protocol 0.1.472__tar.gz → 0.1.473__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.472 → agentenv_framework_protocol-0.1.473}/PKG-INFO +4 -3
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/README.md +3 -2
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/pyproject.toml +1 -1
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website_browser/control.py +10 -5
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website_browser/environment.py +2 -2
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_browser.py +45 -1
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/.gitignore +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/LICENSE +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/NOTICE +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/THIRD_PARTY_NOTICES.md +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/advanced_agent.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/basic_agent.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/custom_extensions_agent.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/multimodal_agent.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/reference_model.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/streaming_agent.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/.gitignore +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/Dockerfile +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/Dockerfile.dockerignore +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/README.md +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/data/seed.json +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/env.toml +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/site.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/web/index.html +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/web/package-lock.json +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/web/package.json +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/web/src/main.js +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/web/src/style.css +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/web/vite.config.js +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/_trajectory_log.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/_triggers.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/extensions.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/framework.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/peer_agents.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/proxy.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/registry.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/staging.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/tasks/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/tasks/v1.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/agent_env_environment.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/browser_cdp.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/client.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/_declare.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/_linux.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/_load.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/_macos.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/_with_fds.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/_x11.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/app.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/app_data.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/app_runtime.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/apps.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/card.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/checks.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/__main__.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/checks.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/client.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/fixture.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/mp4.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/page_fixture.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/report.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/dataplane.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/driver.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/errors.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/extensions.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/frames.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/keys.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/launch.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/manifest.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/operations.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/platform.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/queue.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/recording.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/results.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/run_install_step.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/runtime.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/seed.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/serve.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/serve_app.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/session.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/settings.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/skill.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/spaces.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/svc.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/tools.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/errors.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/manifest.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/preflight.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/tool_access.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/tool_client.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/tool_context.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/transfers.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/types.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/clock.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/conformance.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/environment.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/errors.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/readiness.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/routes.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/session.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website_browser/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website_browser/data.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website_browser/devtools.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website_browser/shapes.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/computer_fake.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/probe_fake.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_agent.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_agent_examples.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_cdp_config.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_object_transfers.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_peer_agents.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_proxy.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_staging.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_trajectory_log.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_agent_env_environment.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_browser_cdp.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_browser_data.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_browser_state.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_client.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_app_data.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_app_server.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_conformance.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_conformance_checks.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_conformance_page.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_conformance_recording.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_dataplane.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_declare.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_driver.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_extensions.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_frames.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_macos.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_page.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_queue.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_recording.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_seed.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_serve.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_spaces.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_svc_forward.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_control_token.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_data_objects.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_errors.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_extension_methods.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_intake.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_manifest.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_preflight.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_tool_access.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_tool_annotations.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_tool_client.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_tool_context.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_tool_context_fastmcp.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_tool_context_injection.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_api.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_conformance.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_environment.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_mcp.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_notes_example.py +0 -0
- {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_readiness.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.473
|
|
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
|
|
@@ -1000,8 +1000,9 @@ are the profile's template. The base class adds:
|
|
|
1000
1000
|
`Input.dispatchKeyEvent`, `Input.insertText`), sent to it in order. Also framework-only, for page
|
|
1001
1001
|
drivers and agentenv's own steps alike:
|
|
1002
1002
|
- `navigate {url}` and `history {direction}` (`back`, `forward` or `reload`), in the active tab;
|
|
1003
|
-
- `tabs/list`, `tabs/open {url?}`, `tabs/activate {tab}` and `tabs/close {tab}`, by the browser's
|
|
1004
|
-
ids.
|
|
1003
|
+
- `tabs/list`, `tabs/open {url?, background?}`, `tabs/activate {tab}` and `tabs/close {tab}`, by the browser's
|
|
1004
|
+
own tab ids. A tab opened with `background` opens behind the active tab, which stays active; otherwise it comes
|
|
1005
|
+
to the front. The active tab is the one a dialog is open on, else the visible one whose page has focus (a hidden
|
|
1005
1006
|
tab's page that had input still says it has focus), else the one agentenv last brought to the front.
|
|
1006
1007
|
Headless, a tab opened at a URL opens blank and goes there once it's held to the window's size;
|
|
1007
1008
|
- `dialog/answer {accept, text?}`, the agent's answer to the dialog open on the active tab;
|
|
@@ -935,8 +935,9 @@ are the profile's template. The base class adds:
|
|
|
935
935
|
`Input.dispatchKeyEvent`, `Input.insertText`), sent to it in order. Also framework-only, for page
|
|
936
936
|
drivers and agentenv's own steps alike:
|
|
937
937
|
- `navigate {url}` and `history {direction}` (`back`, `forward` or `reload`), in the active tab;
|
|
938
|
-
- `tabs/list`, `tabs/open {url?}`, `tabs/activate {tab}` and `tabs/close {tab}`, by the browser's
|
|
939
|
-
ids.
|
|
938
|
+
- `tabs/list`, `tabs/open {url?, background?}`, `tabs/activate {tab}` and `tabs/close {tab}`, by the browser's
|
|
939
|
+
own tab ids. A tab opened with `background` opens behind the active tab, which stays active; otherwise it comes
|
|
940
|
+
to the front. The active tab is the one a dialog is open on, else the visible one whose page has focus (a hidden
|
|
940
941
|
tab's page that had input still says it has focus), else the one agentenv last brought to the front.
|
|
941
942
|
Headless, a tab opened at a URL opens blank and goes there once it's held to the window's size;
|
|
942
943
|
- `dialog/answer {accept, text?}`, the agent's answer to the dialog open on the active tab;
|
|
@@ -120,17 +120,22 @@ class BrowserControl:
|
|
|
120
120
|
active = await self.active_tab()
|
|
121
121
|
return [OpenTab(**tab, active=tab["id"] == active).model_dump() for tab in self.tabs.values()]
|
|
122
122
|
|
|
123
|
-
async def open_tab(self, url: Optional[str] = None) -> str:
|
|
124
|
-
"""A new tab at ``url``, else blank, brought to the front
|
|
125
|
-
|
|
123
|
+
async def open_tab(self, url: Optional[str] = None, background: bool = False) -> str:
|
|
124
|
+
"""A new tab at ``url``, else blank, brought to the front, or with ``background`` behind the active tab, which
|
|
125
|
+
stays active, brought back only if the new tab took its place; its id. Headless, it opens blank and goes to
|
|
126
|
+
``url`` once it's held to the window's size, so its page loads at that size."""
|
|
127
|
+
active = await self.active_tab() if background else None
|
|
126
128
|
held = self.viewport is not None and url
|
|
127
129
|
start = "about:blank" if held else url or "about:blank"
|
|
128
|
-
target = (await self.devtools.call("Target.createTarget", {"url": start}))["targetId"]
|
|
130
|
+
target = (await self.devtools.call("Target.createTarget", {"url": start, "background": background}))["targetId"]
|
|
129
131
|
if held:
|
|
130
132
|
await asyncio.wait_for(self._pinned.setdefault(target, asyncio.Event()).wait(), PIN_TIMEOUT_S)
|
|
131
133
|
session = next(s for s, t in self._sessions.items() if t == target)
|
|
132
134
|
await self.devtools.call("Page.navigate", {"url": url}, session_id=session)
|
|
133
|
-
|
|
135
|
+
if not background:
|
|
136
|
+
await self._bring_to_front(target)
|
|
137
|
+
elif active is not None and active in self.tabs and await self.active_tab() == target:
|
|
138
|
+
await self._bring_to_front(active)
|
|
134
139
|
return target
|
|
135
140
|
|
|
136
141
|
async def reopen_start_tabs(self, urls: list[str]) -> None:
|
|
@@ -376,8 +376,8 @@ class WebsiteBrowserEnvironment(ComputerAppEnvironment):
|
|
|
376
376
|
return {"tabs": await self.control.tab_list()}
|
|
377
377
|
|
|
378
378
|
@extension(BROWSER, op="tabs/open")
|
|
379
|
-
async def browser_tabs_open(self, url: Optional[str] = None) -> dict:
|
|
380
|
-
return {"tab": await self.control.open_tab(url)}
|
|
379
|
+
async def browser_tabs_open(self, url: Optional[str] = None, background: bool = False) -> dict:
|
|
380
|
+
return {"tab": await self.control.open_tab(url, background)}
|
|
381
381
|
|
|
382
382
|
@extension(BROWSER, op="tabs/activate")
|
|
383
383
|
async def browser_tabs_activate(self, tab: str) -> dict:
|
|
@@ -654,7 +654,8 @@ async def test_a_tab_it_opens_loads_once_held_to_the_window_comes_to_the_front_a
|
|
|
654
654
|
devtools.send("Target.targetDestroyed", {"targetId": "b"})
|
|
655
655
|
|
|
656
656
|
on_b = [name for name, _, session in devtools.calls if session == "s-b"]
|
|
657
|
-
assert opened == "b" and _sent(devtools, "Target.createTarget") == [({"url": "about:blank"},
|
|
657
|
+
assert opened == "b" and _sent(devtools, "Target.createTarget") == [({"url": "about:blank", "background": False},
|
|
658
|
+
None)]
|
|
658
659
|
assert ({"url": "https://mail.test/b"}, "s-b") in _sent(devtools, "Page.navigate")
|
|
659
660
|
assert on_b.index("Emulation.setDeviceMetricsOverride") < on_b.index("Page.navigate")
|
|
660
661
|
assert [(tab["id"], tab["active"]) for tab in after_open] == [("a", False), ("b", True)]
|
|
@@ -663,6 +664,49 @@ async def test_a_tab_it_opens_loads_once_held_to_the_window_comes_to_the_front_a
|
|
|
663
664
|
assert [(tab["id"], tab["closed_by"]) for tab in control.closed_tabs] == [("b", "agentenv")]
|
|
664
665
|
|
|
665
666
|
|
|
667
|
+
@pytest.mark.asyncio
|
|
668
|
+
@pytest.mark.parametrize("focus_moves", [False, True])
|
|
669
|
+
async def test_a_tab_opened_in_the_background_opens_behind_the_active_one_which_stays_in_front(focus_moves):
|
|
670
|
+
focus = {"s-a": True}
|
|
671
|
+
devtools = Tabbed({"Runtime.evaluate": lambda params, session: {
|
|
672
|
+
"result": {"value": ["visible", focus.get(session, False)]}}})
|
|
673
|
+
control = await _tabs(devtools, "a")
|
|
674
|
+
|
|
675
|
+
opening = asyncio.ensure_future(control.open_tab("https://mail.test/b", background=True))
|
|
676
|
+
await asyncio.sleep(0)
|
|
677
|
+
devtools.send("Target.targetCreated", _page("b", "https://mail.test/b", "Mail b"))
|
|
678
|
+
devtools.send("Target.attachedToTarget", {"sessionId": "s-b", **_page("b")})
|
|
679
|
+
if focus_moves:
|
|
680
|
+
focus.update({"s-a": False, "s-b": True})
|
|
681
|
+
opened = await opening
|
|
682
|
+
|
|
683
|
+
assert opened == "b" and _sent(devtools, "Target.createTarget") == [({"url": "about:blank", "background": True},
|
|
684
|
+
None)]
|
|
685
|
+
assert ({"url": "https://mail.test/b"}, "s-b") in _sent(devtools, "Page.navigate")
|
|
686
|
+
assert ({}, "s-b") not in _sent(devtools, "Page.bringToFront")
|
|
687
|
+
assert _sent(devtools, "Target.activateTarget") == ([({"targetId": "a"}, None)] if focus_moves else [])
|
|
688
|
+
if not focus_moves:
|
|
689
|
+
assert [(tab["id"], tab["active"]) for tab in await control.tab_list()] == [("a", True), ("b", False)]
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
@pytest.mark.asyncio
|
|
693
|
+
async def test_a_background_open_leaves_a_tab_another_call_switched_to_meanwhile_in_front():
|
|
694
|
+
focus = {"s-a": True}
|
|
695
|
+
devtools = Tabbed({"Runtime.evaluate": lambda params, session: {
|
|
696
|
+
"result": {"value": ["visible", focus.get(session, False)]}}})
|
|
697
|
+
control = await _tabs(devtools, "a", "c")
|
|
698
|
+
|
|
699
|
+
opening = asyncio.ensure_future(control.open_tab("https://mail.test/b", background=True))
|
|
700
|
+
await asyncio.sleep(0)
|
|
701
|
+
focus.update({"s-a": False, "s-c": True})
|
|
702
|
+
devtools.send("Target.targetCreated", _page("b", "https://mail.test/b", "Mail b"))
|
|
703
|
+
devtools.send("Target.attachedToTarget", {"sessionId": "s-b", **_page("b")})
|
|
704
|
+
await opening
|
|
705
|
+
|
|
706
|
+
assert _sent(devtools, "Target.activateTarget") == []
|
|
707
|
+
assert [(tab["id"], tab["active"]) for tab in await control.tab_list()] == [("a", False), ("c", True), ("b", False)]
|
|
708
|
+
|
|
709
|
+
|
|
666
710
|
@pytest.mark.asyncio
|
|
667
711
|
async def test_a_hidden_tab_whose_page_still_says_it_has_focus_isnt_the_active_one():
|
|
668
712
|
states = {"s-a": ["hidden", True], "s-b": ["visible", True]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/THIRD_PARTY_NOTICES.md
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/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
|
|
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.472 → agentenv_framework_protocol-0.1.473}/tests/computer_fake.py
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/probe_fake.py
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_agent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_proxy.py
RENAMED
|
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.472 → agentenv_framework_protocol-0.1.473}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_errors.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_intake.py
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_manifest.py
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|