agentenv-framework-protocol 0.1.512__tar.gz → 0.1.514__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 (179) hide show
  1. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/PKG-INFO +1 -1
  2. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/pyproject.toml +1 -1
  3. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/_session_windows.py +8 -3
  4. agentenv_framework_protocol-0.1.514/tests/test_computer_driver_keys.py +44 -0
  5. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_session_windows.py +25 -5
  6. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/.gitignore +0 -0
  7. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/LICENSE +0 -0
  8. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/NOTICE +0 -0
  9. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/README.md +0 -0
  10. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/THIRD_PARTY_NOTICES.md +0 -0
  11. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/__init__.py +0 -0
  12. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/advanced_agent.py +0 -0
  13. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/basic_agent.py +0 -0
  14. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/custom_extensions_agent.py +0 -0
  15. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/multimodal_agent.py +0 -0
  16. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/reference_model.py +0 -0
  17. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/streaming_agent.py +0 -0
  18. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/.gitignore +0 -0
  19. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/Dockerfile +0 -0
  20. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/Dockerfile.dockerignore +0 -0
  21. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/README.md +0 -0
  22. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/data/seed.json +0 -0
  23. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/env.toml +0 -0
  24. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/site.py +0 -0
  25. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/web/index.html +0 -0
  26. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/web/package-lock.json +0 -0
  27. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/web/package.json +0 -0
  28. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/web/src/main.js +0 -0
  29. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/web/src/style.css +0 -0
  30. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/examples/website/notes/web/vite.config.js +0 -0
  31. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/__init__.py +0 -0
  32. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/a2a_agent/__init__.py +0 -0
  33. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/a2a_agent/_trajectory_log.py +0 -0
  34. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/a2a_agent/_triggers.py +0 -0
  35. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/a2a_agent/extensions.py +0 -0
  36. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/a2a_agent/framework.py +0 -0
  37. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/a2a_agent/peer_agents.py +0 -0
  38. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/a2a_agent/proxy.py +0 -0
  39. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/a2a_agent/registry.py +0 -0
  40. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/a2a_agent/staging.py +0 -0
  41. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/a2a_agent/tasks/__init__.py +0 -0
  42. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/a2a_agent/tasks/v1.py +0 -0
  43. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/agent_env_environment.py +0 -0
  44. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/browser_cdp.py +0 -0
  45. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/client.py +0 -0
  46. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/__init__.py +0 -0
  47. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/_declare.py +0 -0
  48. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/_desktop.py +0 -0
  49. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/_job.py +0 -0
  50. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/_linux.py +0 -0
  51. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/_load.py +0 -0
  52. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/_macos.py +0 -0
  53. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/_reaping.py +0 -0
  54. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/_session_posix.py +0 -0
  55. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/_windows.py +0 -0
  56. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/_with_fds.py +0 -0
  57. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/_x11.py +0 -0
  58. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/app.py +0 -0
  59. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/app_data.py +0 -0
  60. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/app_runtime.py +0 -0
  61. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/apps.py +0 -0
  62. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/card.py +0 -0
  63. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/checks.py +0 -0
  64. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/conformance/__init__.py +0 -0
  65. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/conformance/__main__.py +0 -0
  66. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/conformance/checks.py +0 -0
  67. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/conformance/client.py +0 -0
  68. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/conformance/desk.py +0 -0
  69. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/conformance/fixture.py +0 -0
  70. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/conformance/mp4.py +0 -0
  71. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/conformance/page_fixture.py +0 -0
  72. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/conformance/report.py +0 -0
  73. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/conformance/wayland_fixture.py +0 -0
  74. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/dataplane.py +0 -0
  75. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/driver.py +0 -0
  76. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/errors.py +0 -0
  77. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/extensions.py +0 -0
  78. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/frames.py +0 -0
  79. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/keys.py +0 -0
  80. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/launch.py +0 -0
  81. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/manifest.py +0 -0
  82. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/operations.py +0 -0
  83. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/platform.py +0 -0
  84. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/prefix.py +0 -0
  85. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/queue.py +0 -0
  86. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/recording.py +0 -0
  87. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/results.py +0 -0
  88. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/run_install_step.py +0 -0
  89. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/runtime.py +0 -0
  90. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/seed.py +0 -0
  91. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/serve.py +0 -0
  92. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/serve_app.py +0 -0
  93. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/served.py +0 -0
  94. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/session.py +0 -0
  95. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/settings.py +0 -0
  96. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/skill.py +0 -0
  97. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/spaces.py +0 -0
  98. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/svc.py +0 -0
  99. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/computer/tools.py +0 -0
  100. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/errors.py +0 -0
  101. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/manifest.py +0 -0
  102. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/preflight.py +0 -0
  103. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/tool_access.py +0 -0
  104. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/tool_client.py +0 -0
  105. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/tool_context.py +0 -0
  106. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/transfers.py +0 -0
  107. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/types.py +0 -0
  108. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website/__init__.py +0 -0
  109. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website/clock.py +0 -0
  110. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website/conformance.py +0 -0
  111. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website/environment.py +0 -0
  112. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website/errors.py +0 -0
  113. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website/readiness.py +0 -0
  114. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website/routes.py +0 -0
  115. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website/session.py +0 -0
  116. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website_browser/__init__.py +0 -0
  117. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website_browser/control.py +0 -0
  118. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website_browser/data.py +0 -0
  119. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website_browser/devtools.py +0 -0
  120. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website_browser/environment.py +0 -0
  121. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/src/agentenv_protocol/website_browser/shapes.py +0 -0
  122. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/computer_fake.py +0 -0
  123. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/probe_fake.py +0 -0
  124. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_a2a_agent.py +0 -0
  125. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_a2a_agent_examples.py +0 -0
  126. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_a2a_cdp_config.py +0 -0
  127. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_a2a_object_transfers.py +0 -0
  128. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_a2a_peer_agents.py +0 -0
  129. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_a2a_proxy.py +0 -0
  130. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_a2a_staging.py +0 -0
  131. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_a2a_trajectory_log.py +0 -0
  132. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_agent_env_environment.py +0 -0
  133. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_browser_cdp.py +0 -0
  134. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_browser_data.py +0 -0
  135. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_browser_state.py +0 -0
  136. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_client.py +0 -0
  137. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_app_data.py +0 -0
  138. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_app_server.py +0 -0
  139. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_conformance.py +0 -0
  140. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_conformance_checks.py +0 -0
  141. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_conformance_page.py +0 -0
  142. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_conformance_recording.py +0 -0
  143. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_dataplane.py +0 -0
  144. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_declare.py +0 -0
  145. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_driver.py +0 -0
  146. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_extensions.py +0 -0
  147. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_frames.py +0 -0
  148. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_macos.py +0 -0
  149. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_page.py +0 -0
  150. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_queue.py +0 -0
  151. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_recording.py +0 -0
  152. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_seed.py +0 -0
  153. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_serve.py +0 -0
  154. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_served.py +0 -0
  155. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_spaces.py +0 -0
  156. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_svc_forward.py +0 -0
  157. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_tool_prefix.py +0 -0
  158. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_computer_windows_driver.py +0 -0
  159. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_control_token.py +0 -0
  160. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_data_objects.py +0 -0
  161. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_errors.py +0 -0
  162. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_extension_methods.py +0 -0
  163. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_intake.py +0 -0
  164. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_manifest.py +0 -0
  165. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_preflight.py +0 -0
  166. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_tool_access.py +0 -0
  167. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_tool_annotations.py +0 -0
  168. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_tool_client.py +0 -0
  169. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_tool_context.py +0 -0
  170. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_tool_context_fastmcp.py +0 -0
  171. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_tool_context_injection.py +0 -0
  172. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_website_api.py +0 -0
  173. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_website_browser.py +0 -0
  174. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_website_conformance.py +0 -0
  175. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_website_environment.py +0 -0
  176. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_website_live.py +0 -0
  177. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_website_mcp.py +0 -0
  178. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/tests/test_website_notes_example.py +0 -0
  179. {agentenv_framework_protocol-0.1.512 → agentenv_framework_protocol-0.1.514}/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.512
3
+ Version: 0.1.514
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agentenv-framework-protocol"
3
- version = "0.1.512"
3
+ version = "0.1.514"
4
4
  description = "Open data-plane protocol and server SDK for agent environments."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -72,8 +72,9 @@ async def launch(argv: list[str], cwd: Path, env: dict[str, str], fds: Optional[
72
72
 
73
73
  async def stop(pid: int, timeout_s: float) -> None:
74
74
  """End the job the helper ``pid`` holds, every process in it: its windows asked to close, then the job ended after
75
- ``timeout_s``, or at once when it has no window to close, and waited on until each process it held has exited and
76
- it holds none. No one asks how it exited once it's stopped."""
75
+ ``timeout_s``, or at once when it has no window to close; once the app's processes have closed, the helper, which
76
+ leaves when its job holds no process but itself, waited on to leave, the job ended should it not; and waited on
77
+ until each process it held has exited and it holds none. No one asks how it exited once it's stopped."""
77
78
  _reaping.forget(pid)
78
79
  job = _win32.open_job(pid)
79
80
  if job is None:
@@ -85,7 +86,11 @@ async def stop(pid: int, timeout_s: float) -> None:
85
86
  deadline = time.monotonic() + (timeout_s if windows else 0)
86
87
  while _app_pids(job, pid) and time.monotonic() < deadline:
87
88
  await asyncio.sleep(POLL_S)
88
- if _app_pids(job, pid):
89
+ if not _app_pids(job, pid):
90
+ deadline = time.monotonic() + ENDED_TIMEOUT_S
91
+ while _win32.job_pids(job) and time.monotonic() < deadline:
92
+ await asyncio.sleep(POLL_S)
93
+ if _win32.job_pids(job):
89
94
  ending = _win32.open_processes(_win32.job_pids(job))
90
95
  try:
91
96
  _win32.terminate_job(job)
@@ -0,0 +1,44 @@
1
+ """The named keys X11Driver, WindowsDriver and MacOSDriver map: each a W3C key value, the two PC keyboards' the same,
2
+ and the Mac's those but the keys its keyboard lacks, with its Help key; read from the drivers' sources, so that none of
3
+ the libraries an OS driver imports is needed."""
4
+ from __future__ import annotations
5
+
6
+ import ast
7
+ from pathlib import Path
8
+
9
+ from agentenv_protocol.computer import keys
10
+
11
+ COMPUTER = Path(keys.__file__).parent
12
+ #: The PC keys a Mac keyboard has no key code for, and the Mac's own Help key, which a PC keyboard lacks.
13
+ MAC_LACKS = {"ContextMenu", "Insert", "Pause", "PrintScreen", "F21", "F22", "F23", "F24"}
14
+ MAC_ONLY = {"Help"}
15
+
16
+
17
+ def _named(module: str, *tables: str) -> set[str]:
18
+ """The keys of the module-level dicts ``tables`` in ``computer/<module>.py``, a dict comprehension's included."""
19
+ found = set()
20
+ for node in ast.parse((COMPUTER / f"{module}.py").read_text()).body:
21
+ if isinstance(node, ast.Assign) and {getattr(t, "id", None) for t in node.targets} & set(tables):
22
+ for key, value in zip(node.value.keys, node.value.values):
23
+ if key is None:
24
+ names = ast.DictComp(key=value.key, value=ast.Constant(None), generators=value.generators)
25
+ found |= set(eval(compile(ast.fix_missing_locations(ast.Expression(names)), module, "eval")))
26
+ else:
27
+ found.add(ast.literal_eval(key))
28
+ return found
29
+
30
+
31
+ def test_every_named_key_a_driver_maps_is_a_w3c_key_value():
32
+ tables = {"_x11": _named("_x11", "KEYSYMS"), "_windows": _named("_windows", "VIRTUAL_KEYS"),
33
+ "_macos": _named("_macos", "NAMED", "MODIFIERS")}
34
+
35
+ assert all(tables.values())
36
+ assert {module: sorted(names - set(keys.NAMED) - {" "}) for module, names in tables.items()} == {
37
+ "_x11": [], "_windows": [], "_macos": []}
38
+
39
+
40
+ def test_the_pc_drivers_map_the_same_named_keys_and_the_mac_those_its_keyboard_has():
41
+ x11, windows = _named("_x11", "KEYSYMS"), _named("_windows", "VIRTUAL_KEYS")
42
+
43
+ assert windows == x11
44
+ assert _named("_macos", "NAMED", "MODIFIERS") == x11 - MAC_LACKS | MAC_ONLY
@@ -1,7 +1,8 @@
1
1
  """The Windows session's own logic, its Win32 calls faked and its job helper stood in for: a launch goes through the
2
2
  helper and returns its pid once the app has started, or fails saying why it couldn't, and hands no fds; stopping asks
3
- the app's windows to close, then ends the job after the timeout, or at once with no window to ask, and waits until
4
- each process it held has exited and it holds none; pausing suspends each of the app's processes but the helper's, and
3
+ the app's windows to close, then ends the job after the timeout, or at once with no window to ask, and, once they've
4
+ closed, waits for the helper to leave, ending the job should it not, until each process it held has exited and it
5
+ holds none; pausing suspends each of the app's processes but the helper's, and
5
6
  any one starts as they're suspended, and resumes them, even when the block raises; a job that's gone is neither alive,
6
7
  stopped nor paused; the windows listed are those shown, by program, class and title; and the menu launcher is a Start
7
8
  Menu shortcut PowerShell writes, named for the app."""
@@ -32,12 +33,14 @@ sys.exit(int(command[0]))
32
33
  class FakeWin32:
33
34
  """Jobs by their helper's pid, each a list of the pids in it, the helper's first; the session's windows; and every
34
35
  call that acts, recorded. An app whose window is asked to close ``closes`` or doesn't, a process ``spawns`` one
35
- into its job just before it's suspended, and a job ended by force holds its processes for ``lingers`` more looks,
36
- then none, though it's there until its handles close."""
36
+ into its job just before it's suspended, a job ended by force holds its processes for ``lingers`` more looks, then
37
+ none, though it's there until its handles close, and a helper alone in its job ``leaves`` after that many looks, as
38
+ the real one does, or, for None, stays."""
37
39
 
38
40
  def __init__(self, jobs: dict[int, list[int]], windows: list[Window], closes: bool = True,
39
- spawns: dict[int, int] | None = None, lingers: int = 0) -> None:
41
+ spawns: dict[int, int] | None = None, lingers: int = 0, leaves: int | None = 5) -> None:
40
42
  self.jobs, self._windows, self.closes, self.spawns, self.lingers = jobs, windows, closes, spawns or {}, lingers
43
+ self.leaves = leaves
41
44
  self.ending: dict[int, int] = {}
42
45
  self.posted, self.terminated, self.suspended, self.resumed, self.waited, self.open = [], [], [], [], [], 0
43
46
 
@@ -52,6 +55,10 @@ class FakeWin32:
52
55
  self.ending[job] -= 1
53
56
  if self.ending[job] < 0:
54
57
  self.jobs[job] = []
58
+ elif self.jobs[job] == [job] and self.leaves is not None:
59
+ self.leaves -= 1
60
+ if self.leaves < 0:
61
+ self.jobs[job] = []
55
62
  return list(self.jobs[job])
56
63
 
57
64
  def open_processes(self, pids):
@@ -107,16 +114,29 @@ def win32(monkeypatch):
107
114
  async def test_stopping_asks_the_apps_windows_to_close_and_ends_the_job_only_if_they_dont(win32):
108
115
  obliging = win32({HELPER: [HELPER, 901, 902]}, [_window(1, 901), _window(2, 777), _window(3, 902, shown=False)])
109
116
  await _session_windows.stop(HELPER, timeout_s=5)
117
+ obliging_left = not _session_windows.alive(HELPER)
110
118
  stubborn = win32({HELPER: [HELPER, 901]}, [_window(1, 901)], closes=False, lingers=3)
111
119
  started = time.monotonic()
112
120
  await _session_windows.stop(HELPER, timeout_s=0.2)
113
121
 
114
122
  assert obliging.posted == [1, 3] and obliging.terminated == obliging.waited == [] and obliging.open == 0
123
+ assert obliging_left
115
124
  assert stubborn.posted == [1] and stubborn.terminated == [HELPER] and time.monotonic() - started >= 0.2
116
125
  assert stubborn.waited == [[HELPER, 901]] and stubborn.open == 0
117
126
  assert stubborn.jobs[HELPER] == [] and not _session_windows.alive(HELPER)
118
127
 
119
128
 
129
+ @pytest.mark.asyncio
130
+ async def test_a_helper_that_stays_once_its_apps_window_has_closed_is_ended_with_its_job(win32, monkeypatch):
131
+ monkeypatch.setattr(_session_windows, "ENDED_TIMEOUT_S", 0.1)
132
+ stuck = win32({HELPER: [HELPER, 901]}, [_window(1, 901)], leaves=None)
133
+
134
+ await _session_windows.stop(HELPER, timeout_s=5)
135
+
136
+ assert stuck.posted == [1] and stuck.terminated == [HELPER] and stuck.waited == [[HELPER]] and stuck.open == 0
137
+ assert not _session_windows.alive(HELPER)
138
+
139
+
120
140
  @pytest.mark.asyncio
121
141
  async def test_an_app_with_no_window_to_ask_is_ended_at_once_and_a_gone_job_is_left_be(win32):
122
142
  windowless = win32({HELPER: [HELPER, 901]}, [_window(1, 777)])