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