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.
Files changed (163) hide show
  1. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/PKG-INFO +4 -3
  2. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/README.md +3 -2
  3. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/pyproject.toml +1 -1
  4. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website_browser/control.py +10 -5
  5. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website_browser/environment.py +2 -2
  6. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_browser.py +45 -1
  7. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/.gitignore +0 -0
  8. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/LICENSE +0 -0
  9. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/NOTICE +0 -0
  10. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/THIRD_PARTY_NOTICES.md +0 -0
  11. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/__init__.py +0 -0
  12. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/advanced_agent.py +0 -0
  13. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/basic_agent.py +0 -0
  14. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/custom_extensions_agent.py +0 -0
  15. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/multimodal_agent.py +0 -0
  16. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/reference_model.py +0 -0
  17. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/streaming_agent.py +0 -0
  18. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/.gitignore +0 -0
  19. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/Dockerfile +0 -0
  20. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/Dockerfile.dockerignore +0 -0
  21. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/README.md +0 -0
  22. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/data/seed.json +0 -0
  23. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/env.toml +0 -0
  24. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/site.py +0 -0
  25. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/web/index.html +0 -0
  26. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/web/package-lock.json +0 -0
  27. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/web/package.json +0 -0
  28. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/web/src/main.js +0 -0
  29. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/web/src/style.css +0 -0
  30. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/examples/website/notes/web/vite.config.js +0 -0
  31. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/__init__.py +0 -0
  32. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/__init__.py +0 -0
  33. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/_trajectory_log.py +0 -0
  34. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/_triggers.py +0 -0
  35. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/extensions.py +0 -0
  36. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/framework.py +0 -0
  37. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/peer_agents.py +0 -0
  38. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/proxy.py +0 -0
  39. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/registry.py +0 -0
  40. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/staging.py +0 -0
  41. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/tasks/__init__.py +0 -0
  42. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/a2a_agent/tasks/v1.py +0 -0
  43. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/agent_env_environment.py +0 -0
  44. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/browser_cdp.py +0 -0
  45. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/client.py +0 -0
  46. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/__init__.py +0 -0
  47. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/_declare.py +0 -0
  48. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/_linux.py +0 -0
  49. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/_load.py +0 -0
  50. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/_macos.py +0 -0
  51. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/_with_fds.py +0 -0
  52. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/_x11.py +0 -0
  53. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/app.py +0 -0
  54. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/app_data.py +0 -0
  55. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/app_runtime.py +0 -0
  56. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/apps.py +0 -0
  57. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/card.py +0 -0
  58. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/checks.py +0 -0
  59. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/__init__.py +0 -0
  60. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/__main__.py +0 -0
  61. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/checks.py +0 -0
  62. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/client.py +0 -0
  63. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/fixture.py +0 -0
  64. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/mp4.py +0 -0
  65. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/page_fixture.py +0 -0
  66. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/conformance/report.py +0 -0
  67. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/dataplane.py +0 -0
  68. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/driver.py +0 -0
  69. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/errors.py +0 -0
  70. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/extensions.py +0 -0
  71. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/frames.py +0 -0
  72. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/keys.py +0 -0
  73. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/launch.py +0 -0
  74. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/manifest.py +0 -0
  75. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/operations.py +0 -0
  76. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/platform.py +0 -0
  77. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/queue.py +0 -0
  78. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/recording.py +0 -0
  79. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/results.py +0 -0
  80. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/run_install_step.py +0 -0
  81. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/runtime.py +0 -0
  82. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/seed.py +0 -0
  83. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/serve.py +0 -0
  84. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/serve_app.py +0 -0
  85. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/session.py +0 -0
  86. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/settings.py +0 -0
  87. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/skill.py +0 -0
  88. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/spaces.py +0 -0
  89. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/svc.py +0 -0
  90. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/computer/tools.py +0 -0
  91. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/errors.py +0 -0
  92. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/manifest.py +0 -0
  93. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/preflight.py +0 -0
  94. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/tool_access.py +0 -0
  95. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/tool_client.py +0 -0
  96. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/tool_context.py +0 -0
  97. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/transfers.py +0 -0
  98. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/types.py +0 -0
  99. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/__init__.py +0 -0
  100. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/clock.py +0 -0
  101. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/conformance.py +0 -0
  102. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/environment.py +0 -0
  103. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/errors.py +0 -0
  104. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/readiness.py +0 -0
  105. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/routes.py +0 -0
  106. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website/session.py +0 -0
  107. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website_browser/__init__.py +0 -0
  108. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website_browser/data.py +0 -0
  109. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website_browser/devtools.py +0 -0
  110. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/src/agentenv_protocol/website_browser/shapes.py +0 -0
  111. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/computer_fake.py +0 -0
  112. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/probe_fake.py +0 -0
  113. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_agent.py +0 -0
  114. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_agent_examples.py +0 -0
  115. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_cdp_config.py +0 -0
  116. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_object_transfers.py +0 -0
  117. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_peer_agents.py +0 -0
  118. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_proxy.py +0 -0
  119. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_staging.py +0 -0
  120. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_a2a_trajectory_log.py +0 -0
  121. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_agent_env_environment.py +0 -0
  122. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_browser_cdp.py +0 -0
  123. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_browser_data.py +0 -0
  124. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_browser_state.py +0 -0
  125. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_client.py +0 -0
  126. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_app_data.py +0 -0
  127. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_app_server.py +0 -0
  128. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_conformance.py +0 -0
  129. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_conformance_checks.py +0 -0
  130. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_conformance_page.py +0 -0
  131. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_conformance_recording.py +0 -0
  132. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_dataplane.py +0 -0
  133. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_declare.py +0 -0
  134. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_driver.py +0 -0
  135. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_extensions.py +0 -0
  136. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_frames.py +0 -0
  137. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_macos.py +0 -0
  138. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_page.py +0 -0
  139. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_queue.py +0 -0
  140. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_recording.py +0 -0
  141. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_seed.py +0 -0
  142. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_serve.py +0 -0
  143. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_spaces.py +0 -0
  144. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_computer_svc_forward.py +0 -0
  145. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_control_token.py +0 -0
  146. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_data_objects.py +0 -0
  147. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_errors.py +0 -0
  148. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_extension_methods.py +0 -0
  149. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_intake.py +0 -0
  150. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_manifest.py +0 -0
  151. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_preflight.py +0 -0
  152. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_tool_access.py +0 -0
  153. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_tool_annotations.py +0 -0
  154. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_tool_client.py +0 -0
  155. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_tool_context.py +0 -0
  156. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_tool_context_fastmcp.py +0 -0
  157. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_tool_context_injection.py +0 -0
  158. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_api.py +0 -0
  159. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_conformance.py +0 -0
  160. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_environment.py +0 -0
  161. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_mcp.py +0 -0
  162. {agentenv_framework_protocol-0.1.472 → agentenv_framework_protocol-0.1.473}/tests/test_website_notes_example.py +0 -0
  163. {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.472
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 own tab
1004
- ids. The active tab is the one a dialog is open on, else the visible one whose page has focus (a hidden
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 own tab
939
- ids. The active tab is the one a dialog is open on, else the visible one whose page has focus (a hidden
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;
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agentenv-framework-protocol"
3
- version = "0.1.472"
3
+ version = "0.1.473"
4
4
  description = "Open data-plane protocol and server SDK for agent environments."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -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; its id. Headless, it opens blank and goes to ``url``
125
- once it's held to the window's size, so its page loads at that size."""
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
- await self._bring_to_front(target)
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"}, None)]
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]}