agentenv-framework-protocol 0.1.478__tar.gz → 0.1.479__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.478 → agentenv_framework_protocol-0.1.479}/PKG-INFO +4 -2
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/README.md +3 -1
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/pyproject.toml +1 -1
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/conformance/fixture.py +41 -2
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_conformance.py +71 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/.gitignore +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/LICENSE +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/NOTICE +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/THIRD_PARTY_NOTICES.md +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/advanced_agent.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/basic_agent.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/custom_extensions_agent.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/multimodal_agent.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/reference_model.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/streaming_agent.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/.gitignore +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/Dockerfile +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/Dockerfile.dockerignore +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/README.md +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/data/seed.json +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/env.toml +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/site.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/web/index.html +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/web/package-lock.json +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/web/package.json +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/web/src/main.js +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/web/src/style.css +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/website/notes/web/vite.config.js +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/a2a_agent/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/a2a_agent/_trajectory_log.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/a2a_agent/_triggers.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/a2a_agent/extensions.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/a2a_agent/framework.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/a2a_agent/peer_agents.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/a2a_agent/proxy.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/a2a_agent/registry.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/a2a_agent/staging.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/a2a_agent/tasks/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/a2a_agent/tasks/v1.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/agent_env_environment.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/browser_cdp.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/client.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/_declare.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/_linux.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/_load.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/_macos.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/_with_fds.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/_x11.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/app.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/app_data.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/app_runtime.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/apps.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/card.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/checks.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/conformance/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/conformance/__main__.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/conformance/checks.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/conformance/client.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/conformance/mp4.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/conformance/page_fixture.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/conformance/report.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/dataplane.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/driver.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/errors.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/extensions.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/frames.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/keys.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/launch.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/manifest.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/operations.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/platform.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/queue.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/recording.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/results.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/run_install_step.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/runtime.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/seed.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/serve.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/serve_app.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/session.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/settings.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/skill.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/spaces.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/svc.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/computer/tools.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/errors.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/manifest.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/preflight.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/tool_access.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/tool_client.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/tool_context.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/transfers.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/types.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website/clock.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website/conformance.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website/environment.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website/errors.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website/readiness.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website/routes.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website/session.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website_browser/__init__.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website_browser/control.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website_browser/data.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website_browser/devtools.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website_browser/environment.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/src/agentenv_protocol/website_browser/shapes.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/computer_fake.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/probe_fake.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_a2a_agent.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_a2a_agent_examples.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_a2a_cdp_config.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_a2a_object_transfers.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_a2a_peer_agents.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_a2a_proxy.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_a2a_staging.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_a2a_trajectory_log.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_agent_env_environment.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_browser_cdp.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_browser_data.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_browser_state.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_client.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_app_data.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_app_server.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_conformance_checks.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_conformance_page.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_conformance_recording.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_dataplane.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_declare.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_driver.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_extensions.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_frames.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_macos.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_page.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_queue.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_recording.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_seed.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_serve.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_spaces.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_computer_svc_forward.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_control_token.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_data_objects.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_errors.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_extension_methods.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_intake.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_manifest.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_preflight.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_tool_access.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_tool_annotations.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_tool_client.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_tool_context.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_tool_context_fastmcp.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_tool_context_injection.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_website_api.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_website_browser.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_website_conformance.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_website_environment.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_website_mcp.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_website_notes_example.py +0 -0
- {agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/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.479
|
|
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
|
|
@@ -761,7 +761,9 @@ driver booted with a control token is probed with it: `--token`, by default
|
|
|
761
761
|
|
|
762
762
|
At `full` the probe writes the Fixture Desk, a Tk window (`conformance/fixture.py`), into
|
|
763
763
|
`~/.agentenv-probe` with `data/add` and starts it with `computer-exec`. It aims at the boxes the
|
|
764
|
-
window's widgets report, reads back what reached them, and then removes the fixture.
|
|
764
|
+
window's widgets report, reads back what reached them, and then removes the fixture. On X11 the
|
|
765
|
+
window is maximized and kept above other windows, raising itself again when one covers it, so a
|
|
766
|
+
window an app keeps on top doesn't take the clicks aimed at it; elsewhere it is full screen. When the
|
|
765
767
|
fixture can't be staged, the `full` checks are unverified rather than failed.
|
|
766
768
|
|
|
767
769
|
On a driver whose card says `screen: "page"`, the desk is an HTML page with the same widgets at the
|
|
@@ -696,7 +696,9 @@ driver booted with a control token is probed with it: `--token`, by default
|
|
|
696
696
|
|
|
697
697
|
At `full` the probe writes the Fixture Desk, a Tk window (`conformance/fixture.py`), into
|
|
698
698
|
`~/.agentenv-probe` with `data/add` and starts it with `computer-exec`. It aims at the boxes the
|
|
699
|
-
window's widgets report, reads back what reached them, and then removes the fixture.
|
|
699
|
+
window's widgets report, reads back what reached them, and then removes the fixture. On X11 the
|
|
700
|
+
window is maximized and kept above other windows, raising itself again when one covers it, so a
|
|
701
|
+
window an app keeps on top doesn't take the clicks aimed at it; elsewhere it is full screen. When the
|
|
700
702
|
fixture can't be staged, the `full` checks are unverified rather than failed.
|
|
701
703
|
|
|
702
704
|
On a driver whose card says `screen: "page"`, the desk is an HTML page with the same widgets at the
|
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
Desk, whose widgets' screen boxes are written to <state-dir>/layout.json and every effect that reaches it, with
|
|
3
3
|
whatever lands in <state-dir>/inbox.txt, to <state-dir>/state.json, so the probe can aim at it and read back what
|
|
4
4
|
arrived. It records the same effects under X11, macOS's Aqua and Windows, whose Tk names keys, binds select-all and
|
|
5
|
-
reports the wheel differently.
|
|
5
|
+
reports the wheel differently. On X11 it stays above an app's windows (``keep_on_top``); elsewhere it's full screen.
|
|
6
|
+
Run as ``python3 fixture.py <state-dir>``; it needs a 1280x800 screen or larger."""
|
|
6
7
|
from __future__ import annotations
|
|
7
8
|
|
|
8
9
|
import ctypes
|
|
9
10
|
import json
|
|
10
11
|
import os
|
|
11
12
|
import sys
|
|
13
|
+
import time
|
|
12
14
|
import tkinter as tk
|
|
13
15
|
from pathlib import Path
|
|
14
16
|
|
|
@@ -29,6 +31,8 @@ NOTCH_DELTA = 120
|
|
|
29
31
|
Y_BITS = 16
|
|
30
32
|
#: The pixels of a scrolled line, macOS's for a scroll posted in lines.
|
|
31
33
|
LINE_PX = 10
|
|
34
|
+
#: The least time between two of the fixture's raises over other windows, so it can't fight one that raises itself.
|
|
35
|
+
LIFT_GAP_S = 0.5
|
|
32
36
|
|
|
33
37
|
|
|
34
38
|
def main(state_dir: Path) -> None:
|
|
@@ -37,7 +41,10 @@ def main(state_dir: Path) -> None:
|
|
|
37
41
|
root.title("Fixture Desk")
|
|
38
42
|
width, height = root.winfo_screenwidth(), root.winfo_screenheight()
|
|
39
43
|
root.geometry(f"{width}x{height}+0+0")
|
|
40
|
-
root.
|
|
44
|
+
if root.tk.call("tk", "windowingsystem") == "x11":
|
|
45
|
+
keep_on_top(root)
|
|
46
|
+
else:
|
|
47
|
+
root.attributes("-fullscreen", True)
|
|
41
48
|
root.configure(bg="#f0f0f0")
|
|
42
49
|
state: dict = {"name": "", "notes": "", "keys": [], "saved_count": 0, "subscribed": False, "selected": None,
|
|
43
50
|
"scroll_top": 0.0, "cells": {}, "right_clicks": 0, "double_clicks": 0, "drags": [],
|
|
@@ -227,6 +234,38 @@ def main(state_dir: Path) -> None:
|
|
|
227
234
|
root.mainloop()
|
|
228
235
|
|
|
229
236
|
|
|
237
|
+
def keep_on_top(root: tk.Tk) -> None:
|
|
238
|
+
"""Keep the fixture over the windows an app opens, which would take the probe's clicks: maximized and above other
|
|
239
|
+
windows rather than full screen, since xfwm4 keeps a window an app puts above over a full-screen one, and raised
|
|
240
|
+
again, giving the focus back to the widget that last had it, whenever another window covers some of it, at most once
|
|
241
|
+
each LIFT_GAP_S."""
|
|
242
|
+
root.attributes("-zoomed", True)
|
|
243
|
+
root.attributes("-topmost", True)
|
|
244
|
+
seen: dict = {"state": "VisibilityUnobscured", "lifted": 0.0, "pending": None}
|
|
245
|
+
|
|
246
|
+
def lift() -> None:
|
|
247
|
+
seen["pending"] = None
|
|
248
|
+
if seen["state"] == "VisibilityUnobscured":
|
|
249
|
+
return
|
|
250
|
+
seen["lifted"] = time.monotonic()
|
|
251
|
+
# Taking the layer above again restacks it on top, which a raise request alone doesn't get from xfwm4.
|
|
252
|
+
root.attributes("-topmost", False)
|
|
253
|
+
root.attributes("-topmost", True)
|
|
254
|
+
root.lift()
|
|
255
|
+
# The widget that last had the focus gets it back, so keys the probe types into a text box still reach it.
|
|
256
|
+
(root.focus_lastfor() or root).focus_force()
|
|
257
|
+
|
|
258
|
+
def visibility(event: tk.Event) -> None:
|
|
259
|
+
if event.widget is not root:
|
|
260
|
+
return
|
|
261
|
+
seen["state"] = event.state
|
|
262
|
+
if event.state != "VisibilityUnobscured" and seen["pending"] is None:
|
|
263
|
+
wait = max(0.0, seen["lifted"] + LIFT_GAP_S - time.monotonic())
|
|
264
|
+
seen["pending"] = root.after(round(wait * 1000), lift)
|
|
265
|
+
|
|
266
|
+
root.bind("<Visibility>", visibility, add="+")
|
|
267
|
+
|
|
268
|
+
|
|
230
269
|
def wheel_steps(delta: int) -> int:
|
|
231
270
|
"""The wheel steps a <MouseWheel> event's ``delta`` holds, up positive: whole notches of 120 where Tk scales them
|
|
232
271
|
so (Windows, and Tk 9 everywhere), else one a unit (Aqua's Tk 8.6)."""
|
|
@@ -323,6 +323,77 @@ def test_the_fixture_counts_a_scroll_tk_9_reports_in_pixels_by_the_lines_it_move
|
|
|
323
323
|
assert _fixture(monkeypatch).touchpad_steps(delta) == steps
|
|
324
324
|
|
|
325
325
|
|
|
326
|
+
class _Root:
|
|
327
|
+
"""A Tk root stood in for: the attributes set on it in order, its bindings, the calls made to it, and what
|
|
328
|
+
``after`` was given to run, with its delay."""
|
|
329
|
+
|
|
330
|
+
def __init__(self):
|
|
331
|
+
self.set, self.calls, self.bound, self.timers = [], [], {}, []
|
|
332
|
+
self.last = self
|
|
333
|
+
|
|
334
|
+
def focus_lastfor(self):
|
|
335
|
+
return self.last
|
|
336
|
+
|
|
337
|
+
def attributes(self, name, value):
|
|
338
|
+
self.set.append((name, value))
|
|
339
|
+
|
|
340
|
+
def bind(self, sequence, handler, add=None):
|
|
341
|
+
self.bound[sequence] = handler
|
|
342
|
+
|
|
343
|
+
def after(self, ms, callback):
|
|
344
|
+
self.timers.append((ms, callback))
|
|
345
|
+
return f"after#{len(self.timers)}"
|
|
346
|
+
|
|
347
|
+
def lift(self):
|
|
348
|
+
self.calls.append("lift")
|
|
349
|
+
|
|
350
|
+
def focus_force(self):
|
|
351
|
+
self.calls.append("focus_force")
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
def test_the_fixture_on_x11_stays_maximized_above_other_windows_and_takes_the_top_back_once_one_covers_it(monkeypatch):
|
|
355
|
+
"""A window an app keeps above, as Typora's licence dialog is for its first seconds, otherwise takes the clicks the
|
|
356
|
+
probe aims at the fixture."""
|
|
357
|
+
fixture = _fixture(monkeypatch)
|
|
358
|
+
now = [100.0]
|
|
359
|
+
monkeypatch.setattr(fixture.time, "monotonic", lambda: now[0])
|
|
360
|
+
root = _Root()
|
|
361
|
+
fixture.keep_on_top(root)
|
|
362
|
+
seen = root.bound["<Visibility>"]
|
|
363
|
+
|
|
364
|
+
seen(SimpleNamespace(widget="a child", state="VisibilityFullyObscured"))
|
|
365
|
+
for_child = list(root.timers)
|
|
366
|
+
seen(SimpleNamespace(widget=root, state="VisibilityPartiallyObscured"))
|
|
367
|
+
seen(SimpleNamespace(widget=root, state="VisibilityPartiallyObscured"))
|
|
368
|
+
(first, lift), = root.timers
|
|
369
|
+
lift()
|
|
370
|
+
lifted = (root.set[2:], list(root.calls))
|
|
371
|
+
now[0] += 0.1
|
|
372
|
+
seen(SimpleNamespace(widget=root, state="VisibilityFullyObscured"))
|
|
373
|
+
second, again = root.timers[1]
|
|
374
|
+
seen(SimpleNamespace(widget=root, state="VisibilityUnobscured"))
|
|
375
|
+
again()
|
|
376
|
+
|
|
377
|
+
assert root.set[:2] == [("-zoomed", True), ("-topmost", True)] and for_child == []
|
|
378
|
+
assert first == 0 and lifted == ([("-topmost", False), ("-topmost", True)], ["lift", "focus_force"])
|
|
379
|
+
assert second == round((fixture.LIFT_GAP_S - 0.1) * 1000) and root.calls == ["lift", "focus_force"]
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
def test_the_fixture_gives_the_focus_back_to_the_text_box_that_had_it_when_it_takes_the_top_back(monkeypatch):
|
|
383
|
+
"""A window an app opens during a typing check would otherwise leave the probe's keys with the fixture's root."""
|
|
384
|
+
fixture = _fixture(monkeypatch)
|
|
385
|
+
monkeypatch.setattr(fixture.time, "monotonic", lambda: 100.0)
|
|
386
|
+
root, name = _Root(), _Root()
|
|
387
|
+
root.last = name
|
|
388
|
+
fixture.keep_on_top(root)
|
|
389
|
+
|
|
390
|
+
root.bound["<Visibility>"](SimpleNamespace(widget=root, state="VisibilityPartiallyObscured"))
|
|
391
|
+
(_, lift), = root.timers
|
|
392
|
+
lift()
|
|
393
|
+
|
|
394
|
+
assert root.calls == ["lift"] and name.calls == ["focus_force"]
|
|
395
|
+
|
|
396
|
+
|
|
326
397
|
def _fixture(monkeypatch):
|
|
327
398
|
"""The fixture module, which runs in the computer, read with Tk stood in for, as this Python may have none."""
|
|
328
399
|
monkeypatch.setitem(sys.modules, "tkinter", ModuleType("tkinter"))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/THIRD_PARTY_NOTICES.md
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/examples/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/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
|
|
File without changes
|
{agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/computer_fake.py
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/probe_fake.py
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/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.478 → agentenv_framework_protocol-0.1.479}/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.478 → agentenv_framework_protocol-0.1.479}/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
|
{agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_errors.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_intake.py
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/tests/test_manifest.py
RENAMED
|
File without changes
|
{agentenv_framework_protocol-0.1.478 → agentenv_framework_protocol-0.1.479}/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
|
|
File without changes
|