agentenv-framework 0.9.1302__tar.gz → 0.9.1304__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 (947) hide show
  1. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/PKG-INFO +2 -2
  2. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/pyproject.toml +1 -1
  3. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/pyproject.toml +2 -2
  4. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/a2a_agent/a2a_agent.py +10 -0
  5. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/artifacts/docker_image.py +18 -7
  6. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/bundle/preflight.py +22 -4
  7. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/env_providers/env_gateway_provider.py +3 -0
  8. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/env_providers/env_server_provider.py +2 -0
  9. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/e2b/sandbox.py +31 -7
  10. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/local_sandbox.py +67 -8
  11. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/sandbox.py +42 -3
  12. agentenv_framework-0.9.1304/tst/unit/a2a_agent/context_only_deploy_test.py +67 -0
  13. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/deploy_cleanup_test.py +2 -1
  14. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/test_docker_image_build_context.py +4 -3
  15. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/preflight_test.py +51 -0
  16. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/env_providers/env_gateway_provider_test.py +43 -14
  17. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/env_providers/env_server_provider_test.py +15 -3
  18. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/e2b_sandbox_test.py +55 -0
  19. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/local_sandbox_test.py +77 -2
  20. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/vm_sandbox_test.py +86 -0
  21. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/local_container_urls_test.py +2 -1
  22. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/.github/scripts/check_clean_install.py +0 -0
  23. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/.github/scripts/check_plugin_api.py +0 -0
  24. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/.github/scripts/check_skip_policy.py +0 -0
  25. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/.github/scripts/clean_install.py +0 -0
  26. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/.gitignore +0 -0
  27. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/LICENSE +0 -0
  28. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/NOTICE +0 -0
  29. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/README.md +0 -0
  30. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/THIRD_PARTY_NOTICES.md +0 -0
  31. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/LICENSE +0 -0
  32. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/NOTICE +0 -0
  33. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/README.md +0 -0
  34. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/THIRD_PARTY_NOTICES.md +0 -0
  35. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/examples/__init__.py +0 -0
  36. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/examples/advanced_agent.py +0 -0
  37. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/examples/basic_agent.py +0 -0
  38. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/examples/custom_extensions_agent.py +0 -0
  39. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/examples/multimodal_agent.py +0 -0
  40. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/examples/reference_model.py +0 -0
  41. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/examples/streaming_agent.py +0 -0
  42. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/__init__.py +0 -0
  43. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/a2a_agent/__init__.py +0 -0
  44. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/a2a_agent/_triggers.py +0 -0
  45. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/a2a_agent/extensions.py +0 -0
  46. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/a2a_agent/framework.py +0 -0
  47. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/a2a_agent/registry.py +0 -0
  48. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/a2a_agent/staging.py +0 -0
  49. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/a2a_agent/tasks/__init__.py +0 -0
  50. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/a2a_agent/tasks/v1.py +0 -0
  51. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/agent_env_environment.py +0 -0
  52. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/client.py +0 -0
  53. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/manifest.py +0 -0
  54. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/preflight.py +0 -0
  55. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/transfers.py +0 -0
  56. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/src/agentenv_protocol/types.py +0 -0
  57. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/tests/test_a2a_agent.py +0 -0
  58. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/tests/test_a2a_agent_examples.py +0 -0
  59. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/tests/test_a2a_object_transfers.py +0 -0
  60. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/tests/test_a2a_staging.py +0 -0
  61. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/tests/test_agent_env_environment.py +0 -0
  62. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/tests/test_client.py +0 -0
  63. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/tests/test_data_objects.py +0 -0
  64. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/tests/test_intake.py +0 -0
  65. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/tests/test_manifest.py +0 -0
  66. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/packages/agentenv-protocol/tests/test_preflight.py +0 -0
  67. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/__init__.py +0 -0
  68. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/a2a_agent/__init__.py +0 -0
  69. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/a2a_agent/conversation_store.py +0 -0
  70. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/a2a_agent/object_transfer.py +0 -0
  71. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/a2a_agent/protocol.py +0 -0
  72. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/a2a_agent/staging.py +0 -0
  73. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/a2a_agent/store.py +0 -0
  74. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/a2a_agent/validator.py +0 -0
  75. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/__init__.py +0 -0
  76. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/artifact.py +0 -0
  77. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/artifacts/__init__.py +0 -0
  78. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/artifacts/cli.py +0 -0
  79. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/artifacts/environment.py +0 -0
  80. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/artifacts/environment_universe.py +0 -0
  81. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/artifacts/file.py +0 -0
  82. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/artifacts/file_artifact_universe.py +0 -0
  83. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/artifacts/skill.py +0 -0
  84. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/ref.py +0 -0
  85. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/registry.py +0 -0
  86. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/store.py +0 -0
  87. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/artifact/universe.py +0 -0
  88. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/attribution.py +0 -0
  89. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/bundle/__init__.py +0 -0
  90. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/bundle/_fs.py +0 -0
  91. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/bundle/authoring.py +0 -0
  92. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/bundle/installed.py +0 -0
  93. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/bundle/ledger.py +0 -0
  94. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/bundle/materialize.py +0 -0
  95. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/bundle/parse.py +0 -0
  96. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/bundle/plan.py +0 -0
  97. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/bundle/resolve.py +0 -0
  98. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/bundle/run.py +0 -0
  99. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/__init__.py +0 -0
  100. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/__main__.py +0 -0
  101. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/_installers.py +0 -0
  102. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/_plugin_changes.py +0 -0
  103. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/a2a_agent/__init__.py +0 -0
  104. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/a2a_agent/add_skill.py +0 -0
  105. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/a2a_agent/deploy.py +0 -0
  106. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/a2a_agent/get.py +0 -0
  107. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/a2a_agent/get_instance.py +0 -0
  108. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/a2a_agent/put.py +0 -0
  109. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/a2a_agent/validate.py +0 -0
  110. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/artifact/__init__.py +0 -0
  111. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/artifact/cli.py +0 -0
  112. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/artifact/environment.py +0 -0
  113. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/artifact/environment_universe.py +0 -0
  114. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/artifact/file_artifact_universe.py +0 -0
  115. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/artifact/skill.py +0 -0
  116. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/banner.py +0 -0
  117. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/config.py +0 -0
  118. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/__init__.py +0 -0
  119. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/deploy.py +0 -0
  120. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/gateway.py +0 -0
  121. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/get_instance.py +0 -0
  122. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/mcp_server.py +0 -0
  123. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/multi.py +0 -0
  124. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/service_db.py +0 -0
  125. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/snapshot.py +0 -0
  126. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/state/__init__.py +0 -0
  127. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/state/init.py +0 -0
  128. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/state/teardown.py +0 -0
  129. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/website.py +0 -0
  130. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/env/website_browser.py +0 -0
  131. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/eval/__init__.py +0 -0
  132. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/eval/add_tasks.py +0 -0
  133. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/eval/create.py +0 -0
  134. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/eval/run.py +0 -0
  135. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/identity/__init__.py +0 -0
  136. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/identity/client_identity.py +0 -0
  137. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/plugin.py +0 -0
  138. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/run.py +0 -0
  139. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/task/__init__.py +0 -0
  140. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/task/create.py +0 -0
  141. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/task/get.py +0 -0
  142. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/task/get_instance.py +0 -0
  143. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/task/run.py +0 -0
  144. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/task/validate.py +0 -0
  145. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/teardown_output.py +0 -0
  146. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/up.py +0 -0
  147. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/cli/utils.py +0 -0
  148. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/config/__init__.py +0 -0
  149. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/config/describe.py +0 -0
  150. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/config/errors.py +0 -0
  151. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/config/loader.py +0 -0
  152. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/config/model.py +0 -0
  153. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/config/paths.py +0 -0
  154. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/config/plugin_tables.py +0 -0
  155. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/config/provenance.py +0 -0
  156. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/config/runtime.py +0 -0
  157. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/config/snapshot.py +0 -0
  158. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/entity_refs.py +0 -0
  159. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/__init__.py +0 -0
  160. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/bootstrap.py +0 -0
  161. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/env.py +0 -0
  162. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/env_artifact_store.py +0 -0
  163. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/__init__.py +0 -0
  164. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/_deployment.py +0 -0
  165. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/gateway_server.py +0 -0
  166. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/mcp_server.py +0 -0
  167. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/multi_env.py +0 -0
  168. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/service_db/Dockerfile +0 -0
  169. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/service_db/Dockerfile.db-mcp +0 -0
  170. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/service_db/Dockerfile.db-web +0 -0
  171. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/service_db.py +0 -0
  172. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/website.py +0 -0
  173. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/website_browser/Dockerfile +0 -0
  174. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/website_browser/__init__.py +0 -0
  175. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/envs/website_browser/entrypoint.sh +0 -0
  176. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/gateway/Dockerfile +0 -0
  177. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/gateway/__init__.py +0 -0
  178. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/gateway/clock.py +0 -0
  179. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/gateway/constants.py +0 -0
  180. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/gateway/entrypoint.py +0 -0
  181. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/gateway/gateway.py +0 -0
  182. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/gateway/get_time.py +0 -0
  183. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/gateway/requirements.txt +0 -0
  184. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/gateway/triggers.py +0 -0
  185. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/legacy_protocol.py +0 -0
  186. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/registry.py +0 -0
  187. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/snapshot_store.py +0 -0
  188. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/env/store.py +0 -0
  189. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/eval/__init__.py +0 -0
  190. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/eval/eval.py +0 -0
  191. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/eval/store.py +0 -0
  192. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/examples/hello/README.md +0 -0
  193. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/examples/hello/artifacts/greeting/check.sh +0 -0
  194. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/examples/hello/artifacts/greeting/hello.txt +0 -0
  195. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/examples/hello/tasks/hello.json +0 -0
  196. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/__init__.py +0 -0
  197. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/app.py +0 -0
  198. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/entity_ids.py +0 -0
  199. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/openapi_docs.py +0 -0
  200. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/plugin.py +0 -0
  201. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/routers/__init__.py +0 -0
  202. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/routers/common.py +0 -0
  203. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/routers/conversations.py +0 -0
  204. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/routers/objects.py +0 -0
  205. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/routers/runs.py +0 -0
  206. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/routers/triggers.py +0 -0
  207. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/.env.example +0 -0
  208. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/.gitignore +0 -0
  209. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/README.md +0 -0
  210. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/eslint.config.mjs +0 -0
  211. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/next-env.d.ts +0 -0
  212. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/next.config.mjs +0 -0
  213. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/package-lock.json +0 -0
  214. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/package.json +0 -0
  215. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/postcss.config.mjs +0 -0
  216. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/prettier.config.js +0 -0
  217. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/public/android-chrome-192x192.png +0 -0
  218. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/public/android-chrome-512x512.png +0 -0
  219. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/public/apple-touch-icon.png +0 -0
  220. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/public/favicon.ico +0 -0
  221. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/public/favicon.svg +0 -0
  222. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/public/logos/agentenv-icon.svg +0 -0
  223. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/public/logos/claude.svg +0 -0
  224. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/public/logos/scale-logo.svg +0 -0
  225. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/public/site.webmanifest +0 -0
  226. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/scripts/run-smokes.mjs +0 -0
  227. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/advertised-agent-card.tsx +0 -0
  228. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/advertised-environment-card.tsx +0 -0
  229. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/agent-detail-page.tsx +0 -0
  230. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/agents-hub-page.tsx +0 -0
  231. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/backend-status-banner.tsx +0 -0
  232. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/conversations-panel.tsx +0 -0
  233. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/docs-page.tsx +0 -0
  234. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/env-detail-page.tsx +0 -0
  235. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/environments-page.tsx +0 -0
  236. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/flow-shared.tsx +0 -0
  237. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/home-page.tsx +0 -0
  238. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/mcp-env-validation-entry.tsx +0 -0
  239. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/peer-qna-panel.tsx +0 -0
  240. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/rollout-deep-link.tsx +0 -0
  241. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/rubric-grading-results.tsx +0 -0
  242. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/rubric-matrix.tsx +0 -0
  243. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/run-group-step-funnel.tsx +0 -0
  244. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/run-step-progress.tsx +0 -0
  245. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/server-config-panel.tsx +0 -0
  246. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/shared.tsx +0 -0
  247. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/start-runs-panel.tsx +0 -0
  248. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/step-attempt-failures.tsx +0 -0
  249. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/step-progress.ts +0 -0
  250. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/steps-pipeline.tsx +0 -0
  251. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/task-detail-page.tsx +0 -0
  252. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/task-instance-viewer.tsx +0 -0
  253. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/task-runner-page.tsx +0 -0
  254. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/task-steps-shared.tsx +0 -0
  255. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/tasks-hub-page.tsx +0 -0
  256. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/trajectory-viewer.tsx +0 -0
  257. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/trigger-timeline.tsx +0 -0
  258. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/triggers-graph.tsx +0 -0
  259. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/triggers-panel.tsx +0 -0
  260. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/universe-detail-page.tsx +0 -0
  261. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/components/universes-page.tsx +0 -0
  262. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/env.mjs +0 -0
  263. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/hooks/useLiveTriggers.ts +0 -0
  264. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/hooks/useRunGroupPolling.ts +0 -0
  265. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/pages/[[...slug]].tsx +0 -0
  266. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/pages/_app.tsx +0 -0
  267. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/styles/globals.css +0 -0
  268. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/styles/tokens.ts +0 -0
  269. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/src/types/pptx-preview.d.ts +0 -0
  270. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/tailwind.config.ts +0 -0
  271. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/explorer/ui/tsconfig.json +0 -0
  272. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/plugins/__init__.py +0 -0
  273. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/plugins/_cli.py +0 -0
  274. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/plugins/_discovery.py +0 -0
  275. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/plugins/_inventory.py +0 -0
  276. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/plugins/_registration.py +0 -0
  277. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/plugins/_report.py +0 -0
  278. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/plugins/_requirements.py +0 -0
  279. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/__init__.py +0 -0
  280. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/env_providers/__init__.py +0 -0
  281. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/env_providers/constants.py +0 -0
  282. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/env_providers/env_provider.py +0 -0
  283. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/env_state/__init__.py +0 -0
  284. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/env_state/env_state_provider.py +0 -0
  285. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/env_state/local_postgres.py +0 -0
  286. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/env_state/store.py +0 -0
  287. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/__init__.py +0 -0
  288. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/chained_sandbox_provider.py +0 -0
  289. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/e2b/__init__.py +0 -0
  290. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/e2b/provider.py +0 -0
  291. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/e2b/template.py +0 -0
  292. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/modal_sandbox.py +0 -0
  293. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/modal_vm_sandbox.py +0 -0
  294. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/sail_vm/README.md +0 -0
  295. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/sail_vm/__init__.py +0 -0
  296. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/sail_vm/_sdk.py +0 -0
  297. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/sail_vm/model_key.py +0 -0
  298. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/sail_vm/provider.py +0 -0
  299. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/sail_vm/sandbox.py +0 -0
  300. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/providers/sandbox_providers/sandbox_provider.py +0 -0
  301. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/py.typed +0 -0
  302. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/runner/__init__.py +0 -0
  303. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/runner/local_runner.py +0 -0
  304. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/runner/runner.py +0 -0
  305. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/runner/store.py +0 -0
  306. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/__init__.py +0 -0
  307. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/_google.py +0 -0
  308. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/_lazy.py +0 -0
  309. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/base.py +0 -0
  310. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/document_store/__init__.py +0 -0
  311. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/document_store/document_store.py +0 -0
  312. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/document_store/dynamodb_document_store.py +0 -0
  313. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/document_store/evaluation.py +0 -0
  314. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/document_store/firestore_mongo_document_store.py +0 -0
  315. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/document_store/mongo_document_store.py +0 -0
  316. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/document_store/sqlite_document_store.py +0 -0
  317. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/ids.py +0 -0
  318. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/image_store/__init__.py +0 -0
  319. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/image_store/ecr_image_store.py +0 -0
  320. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/image_store/google_credentials.py +0 -0
  321. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/image_store/image_store.py +0 -0
  322. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/image_store/local_registry_image_store.py +0 -0
  323. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/image_store/oci_registry_credentials.py +0 -0
  324. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/image_store/registry_api.py +0 -0
  325. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/local_state.py +0 -0
  326. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/object_store/__init__.py +0 -0
  327. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/object_store/gcs_object_store.py +0 -0
  328. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/object_store/local/__init__.py +0 -0
  329. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/object_store/local/grant_server.py +0 -0
  330. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/object_store/local/store.py +0 -0
  331. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/object_store/local/tls.py +0 -0
  332. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/object_store/local/tokens.py +0 -0
  333. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/object_store/object_store.py +0 -0
  334. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/object_store/s3_object_store.py +0 -0
  335. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/query.py +0 -0
  336. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/routing.py +0 -0
  337. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/secret_store/__init__.py +0 -0
  338. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/secret_store/aws_secrets_manager_secret_store.py +0 -0
  339. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/secret_store/gcp_secret_manager_secret_store.py +0 -0
  340. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/secret_store/local_secret_store.py +0 -0
  341. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/store/secret_store/secret_store.py +0 -0
  342. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task/__init__.py +0 -0
  343. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task/interrupts.py +0 -0
  344. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task/registry.py +0 -0
  345. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task/step_journal.py +0 -0
  346. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task/store.py +0 -0
  347. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task/task.py +0 -0
  348. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task/teardown.py +0 -0
  349. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/__init__.py +0 -0
  350. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/context.py +0 -0
  351. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/context_ops.py +0 -0
  352. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/registry.py +0 -0
  353. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/review_store.py +0 -0
  354. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/snapshot_utils/__init__.py +0 -0
  355. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/snapshot_utils/agent_state_capture.py +0 -0
  356. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/snapshot_utils/snapshot_series.py +0 -0
  357. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/store.py +0 -0
  358. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_step.py +0 -0
  359. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/__init__.py +0 -0
  360. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/__init__.py +0 -0
  361. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/fixtures/README.md +0 -0
  362. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/fixtures/clip.m4a +0 -0
  363. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/fixtures/clip.mp3 +0 -0
  364. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/fixtures/clip.mp4 +0 -0
  365. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/fixtures/clip.ogg +0 -0
  366. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/fixtures/clip.wav +0 -0
  367. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/fixtures/document.pdf +0 -0
  368. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/fixtures/red.gif +0 -0
  369. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/fixtures/red.jpg +0 -0
  370. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/fixtures/red.png +0 -0
  371. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/verify_a2a_agent_card.py +0 -0
  372. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/verify_a2a_agent_config_identity.py +0 -0
  373. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/verify_a2a_agent_mcp.py +0 -0
  374. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/verify_a2a_core_protocol.py +0 -0
  375. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/verify_a2a_install.py +0 -0
  376. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/verify_a2a_modalities.py +0 -0
  377. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/verify_a2a_peer_agents.py +0 -0
  378. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/verify_a2a_role.py +0 -0
  379. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/verify_a2a_skill_config.py +0 -0
  380. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/verify_a2a_snapshot.py +0 -0
  381. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/verify_a2a_system_prompt.py +0 -0
  382. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/a2a_agent_validator/verify_a2a_trajectory.py +0 -0
  383. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/add_skills.py +0 -0
  384. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/apply_server_config.py +0 -0
  385. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/collect_artifacts.py +0 -0
  386. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/deploy_agent.py +0 -0
  387. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/deploy_env.py +0 -0
  388. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/deploy_human_agent.py +0 -0
  389. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/deploy_sandbox.py +0 -0
  390. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/env_card_validator/__init__.py +0 -0
  391. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/env_card_validator/verify_env_card.py +0 -0
  392. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/env_card_validator/verify_env_core_protocol.py +0 -0
  393. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/install_agent.py +0 -0
  394. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/load_artifact.py +0 -0
  395. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/mcp_cli_builder/__init__.py +0 -0
  396. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/mcp_cli_builder/build_mcp_cli.py +0 -0
  397. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/mcp_cli_builder/codegen.py +0 -0
  398. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/mcp_env_validator/__init__.py +0 -0
  399. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/mcp_env_validator/validation_gate_aggregator.py +0 -0
  400. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/mcp_env_validator/verify_mcp_env_assessment.py +0 -0
  401. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/mcp_env_validator/verify_mcp_tool_schema.py +0 -0
  402. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/mcp_env_validator/verify_spec_conformance.py +0 -0
  403. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/modify_env_tool_access.py +0 -0
  404. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/multienv_validator/__init__.py +0 -0
  405. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/multienv_validator/combine_universe_verdicts.py +0 -0
  406. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/multienv_validator/universe_comparison.py +0 -0
  407. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/multienv_validator/verify_universe_agent_judge.py +0 -0
  408. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/multienv_validator/verify_universe_roundtrip.py +0 -0
  409. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/peer_agents.py +0 -0
  410. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/prompt_agent.py +0 -0
  411. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/register_agent_triggers.py +0 -0
  412. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/register_env_triggers.py +0 -0
  413. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/reset_env.py +0 -0
  414. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/review.py +0 -0
  415. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/run_code.py +0 -0
  416. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/run_code_runner.py +0 -0
  417. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/run_docker_container.py +0 -0
  418. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/sandbox_utils/__init__.py +0 -0
  419. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/sandbox_utils/sandbox_utils.py +0 -0
  420. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/snapshot_agent_state.py +0 -0
  421. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/snapshot_env.py +0 -0
  422. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/sync_env_clock.py +0 -0
  423. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/teardown_sandboxes.py +0 -0
  424. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/verifiers/__init__.py +0 -0
  425. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/verifiers/agent_prompt_response_verifier.py +0 -0
  426. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/verifiers/aggregate_verifiers.py +0 -0
  427. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/verifiers/env_outcome_verifier.py +0 -0
  428. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/verifiers/judge_utils/__init__.py +0 -0
  429. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/verifiers/judge_utils/frame_selection.py +0 -0
  430. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/verifiers/judge_utils/judge_output_format.py +0 -0
  431. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/verifiers/judge_utils/trajectory_filter.py +0 -0
  432. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/verifiers/rubrics_verifier.py +0 -0
  433. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/verifiers/run_container_unit_tests_verifier.py +0 -0
  434. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/verifiers/scoring.py +0 -0
  435. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/task_steps/verifiers/verify_sandbox.py +0 -0
  436. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/task_step/thread_work.py +0 -0
  437. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/utils/__init__.py +0 -0
  438. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/utils/build_context.py +0 -0
  439. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/utils/build_metadata.py +0 -0
  440. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/utils/card_naming.py +0 -0
  441. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/utils/deprecation.py +0 -0
  442. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/utils/docker_build.py +0 -0
  443. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/utils/exec_retry.py +0 -0
  444. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/src/agent_env/utils/paths.py +0 -0
  445. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/__init__.py +0 -0
  446. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/benchmarks/explorer_reads.py +0 -0
  447. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/benchmarks/journal_union.py +0 -0
  448. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/benchmarks/task_graphs.py +0 -0
  449. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/benchmarks/version_lookup.py +0 -0
  450. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/conftest.py +0 -0
  451. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/a2a_agent/Dockerfile +0 -0
  452. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/a2a_agent/agent.py +0 -0
  453. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/agentenv_mcp/Dockerfile +0 -0
  454. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/agentenv_mcp/seed.json +0 -0
  455. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/agentenv_mcp/server.py +0 -0
  456. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/agentenv_website/Dockerfile +0 -0
  457. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/agentenv_website/server.py +0 -0
  458. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/base_mcp/__init__.py +0 -0
  459. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/base_mcp/base_database.py +0 -0
  460. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/base_mcp/base_service.py +0 -0
  461. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/cardless_mcp/Dockerfile +0 -0
  462. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/cardless_mcp/server.py +0 -0
  463. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/email_artifact.json +0 -0
  464. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/email_mcp/Dockerfile +0 -0
  465. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/email_mcp/database.py +0 -0
  466. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/email_mcp/email_service.py +0 -0
  467. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/email_mcp/generated_data.json +0 -0
  468. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/email_mcp/models.py +0 -0
  469. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/email_mcp/requirements.txt +0 -0
  470. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/email_mcp/sample_data.json +0 -0
  471. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/legacy_stub/Dockerfile +0 -0
  472. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/legacy_stub/server.py +0 -0
  473. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/skills/sample_skill/SKILL.md +0 -0
  474. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/skills/sample_skill/references/notes.md +0 -0
  475. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/skills/sample_skill/scripts/hello.py +0 -0
  476. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_mcp/Dockerfile +0 -0
  477. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_mcp/database.py +0 -0
  478. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_mcp/generated_data.json +0 -0
  479. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_mcp/models.py +0 -0
  480. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_mcp/requirements.txt +0 -0
  481. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_mcp/sample_data.json +0 -0
  482. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_mcp/slack_service.py +0 -0
  483. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_website/backend/Dockerfile +0 -0
  484. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_website/backend/api/__init__.py +0 -0
  485. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_website/backend/api/routes.py +0 -0
  486. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_website/backend/app.py +0 -0
  487. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_website/backend/config.py +0 -0
  488. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_website/backend/db_extensions.py +0 -0
  489. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_website/backend/requirements.txt +0 -0
  490. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_website/backend/schemas.py +0 -0
  491. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_website/frontend/Dockerfile +0 -0
  492. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/slack_website/frontend/index.html +0 -0
  493. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/data/test_outcome_verifier.py +0 -0
  494. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/env/gateway/clock_test.py +0 -0
  495. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/env/task_step/deploy_env_resources_test.py +0 -0
  496. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/env/task_step/prompt_agent_parts_test.py +0 -0
  497. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/env/task_step/verify_a2a_modalities_test.py +0 -0
  498. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/installer/__init__.py +0 -0
  499. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/installer/conftest.py +0 -0
  500. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/installer/test_container_journey.py +0 -0
  501. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/installer/test_plugin_changes.py +0 -0
  502. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/installer/test_wheel.py +0 -0
  503. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/installer/toys.py +0 -0
  504. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/__init__.py +0 -0
  505. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/agent/__init__.py +0 -0
  506. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/agent/a2a_agent/__init__.py +0 -0
  507. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/agent/a2a_agent/a2a_agent_test.py +0 -0
  508. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/agent/a2a_agent/agent_triggers_e2e_test.py +0 -0
  509. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/agent/a2a_agent/conversation_store_test.py +0 -0
  510. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/artifact/__init__.py +0 -0
  511. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/artifact/artifacts/__init__.py +0 -0
  512. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/artifact/artifacts/conftest.py +0 -0
  513. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/artifact/artifacts/docker_image_artifact_test.py +0 -0
  514. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/artifact/artifacts/environment_artifact_test.py +0 -0
  515. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/artifact/artifacts/environment_universe_artifact_test.py +0 -0
  516. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/artifact/artifacts/file_artifact_test.py +0 -0
  517. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/artifact/artifacts/file_artifact_universe_artifact_test.py +0 -0
  518. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/artifact/artifacts/skill_artifact_test.py +0 -0
  519. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/cli/__init__.py +0 -0
  520. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/cli/cli_test.py +0 -0
  521. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/cli/run_bundle_built_agents_test.py +0 -0
  522. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/cli/run_bundle_built_envs_test.py +0 -0
  523. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/cli/run_bundle_test.py +0 -0
  524. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/__init__.py +0 -0
  525. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/custom_env_config_test.py +0 -0
  526. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/env_test.py +0 -0
  527. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/envs/__init__.py +0 -0
  528. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/envs/multi_env_local_test.py +0 -0
  529. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/envs/server_env_local_test.py +0 -0
  530. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/envs/server_env_modal_test.py +0 -0
  531. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/envs/service_db_changelog_test.py +0 -0
  532. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/gateway/__init__.py +0 -0
  533. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/gateway/gateway_test.py +0 -0
  534. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/task_step/__init__.py +0 -0
  535. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/task_step/task_steps_test.py +0 -0
  536. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/task_step/test_record_step_concurrency.py +0 -0
  537. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/env/task_step/test_task_instance_retry_resume.py +0 -0
  538. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/eval/__init__.py +0 -0
  539. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/eval/eval_test.py +0 -0
  540. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/providers/__init__.py +0 -0
  541. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/providers/sandbox_providers/__init__.py +0 -0
  542. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/providers/sandbox_providers/e2b_sandbox_smoke_test.py +0 -0
  543. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/providers/sandbox_providers/sail_vm_sandbox_smoke_test.py +0 -0
  544. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/providers/state/__init__.py +0 -0
  545. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/store/__init__.py +0 -0
  546. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/store/local_image_composition_test.py +0 -0
  547. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/store/local_parallel_deploy_test.py +0 -0
  548. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/store/local_registry_image_store_test.py +0 -0
  549. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/store/local_task_lifecycle_test.py +0 -0
  550. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/store/oci_registry_image_store_test.py +0 -0
  551. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/task_step/__init__.py +0 -0
  552. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/task_step/review_store_test.py +0 -0
  553. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/task_step/test_agent_on_local_sandbox.py +0 -0
  554. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/task_step/test_container_sandbox_files_local.py +0 -0
  555. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/task_step/test_enable_docker_e2e.py +0 -0
  556. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/task_step/test_multiturn_verifier_delivery.py +0 -0
  557. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/task_step/test_prompt_agent_file_parts_local.py +0 -0
  558. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/task_step/test_run_code_named_sandbox_local.py +0 -0
  559. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/task_step/test_run_docker_container_local.py +0 -0
  560. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/integration/task_step/test_verify_sandbox_local.py +0 -0
  561. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/store/__init__.py +0 -0
  562. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/store/conformance.py +0 -0
  563. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/store/image_conformance.py +0 -0
  564. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/store/object_conformance.py +0 -0
  565. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/store/secret_conformance.py +0 -0
  566. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/task/__init__.py +0 -0
  567. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/task/journal_invariants.py +0 -0
  568. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/__init__.py +0 -0
  569. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/__init__.py +0 -0
  570. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/add_skill_test.py +0 -0
  571. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/negotiate_agent_config_test.py +0 -0
  572. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/object_transfer_reach_test.py +0 -0
  573. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/object_transfer_test.py +0 -0
  574. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/protocol_test.py +0 -0
  575. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/readable_parts_test.py +0 -0
  576. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/staging_test.py +0 -0
  577. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/store_test.py +0 -0
  578. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/test_validator_changelog_objects.py +0 -0
  579. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/test_validator_skill_variants.py +0 -0
  580. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/validator_trajectory_dag_test.py +0 -0
  581. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/validator_uri_probes_test.py +0 -0
  582. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/a2a_agent/verify_a2a_agent_card_test.py +0 -0
  583. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/__init__.py +0 -0
  584. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/registry_test.py +0 -0
  585. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/test_artifact_put.py +0 -0
  586. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/test_docker_image_github_clone.py +0 -0
  587. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/test_docker_image_github_push.py +0 -0
  588. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/test_docker_image_pulled.py +0 -0
  589. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/test_docker_image_put_ref.py +0 -0
  590. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/test_object_url_keys.py +0 -0
  591. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/test_removed_service_aliases.py +0 -0
  592. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/test_service_artifact_alias.py +0 -0
  593. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/test_service_universe_file_view.py +0 -0
  594. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/artifact/test_store_put_document.py +0 -0
  595. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/attribution_test.py +0 -0
  596. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/__init__.py +0 -0
  597. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/_support.py +0 -0
  598. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/artifact_toml_test.py +0 -0
  599. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/authoring_test.py +0 -0
  600. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/conftest.py +0 -0
  601. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/env_toml_test.py +0 -0
  602. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/file_artifacts_test.py +0 -0
  603. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/installed_test.py +0 -0
  604. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/ledger_digest_test.py +0 -0
  605. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/ledger_test.py +0 -0
  606. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/materialize_test.py +0 -0
  607. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/parse_test.py +0 -0
  608. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/plan_test.py +0 -0
  609. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/resolve_test.py +0 -0
  610. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/run_teardown_test.py +0 -0
  611. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/run_test.py +0 -0
  612. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/bundle/toml_refs_test.py +0 -0
  613. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/__init__.py +0 -0
  614. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/base_metadata_version_test.py +0 -0
  615. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/build_platform_test.py +0 -0
  616. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/card_naming_relocation_test.py +0 -0
  617. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/deploy_vm_sizing_test.py +0 -0
  618. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/deployed_env_output_test.py +0 -0
  619. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/env_provider_type_test.py +0 -0
  620. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/env_put_validation_test.py +0 -0
  621. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/env_state_type_parity_test.py +0 -0
  622. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/environment_name_alias_test.py +0 -0
  623. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/eval_run_teardown_test.py +0 -0
  624. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/golden/plugin_report/check.json +0 -0
  625. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/golden/plugin_report/check_broken.json +0 -0
  626. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/golden/plugin_report/list.json +0 -0
  627. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/golden/plugin_report/list_no_load.json +0 -0
  628. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/golden/plugin_report/show.json +0 -0
  629. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/golden/plugin_report/show_bundles.json +0 -0
  630. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/image_ref_put_test.py +0 -0
  631. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/init_env_state_cli_test.py +0 -0
  632. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/load_artifact_target_test.py +0 -0
  633. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/plugin_command_test.py +0 -0
  634. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/plugin_install_test.py +0 -0
  635. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/plugin_report_test.py +0 -0
  636. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/plugins_test.py +0 -0
  637. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/sandbox_url_relocation_test.py +0 -0
  638. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/stage_free_commands_test.py +0 -0
  639. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/task_run_teardown_test.py +0 -0
  640. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/teardown_env_state_cli_test.py +0 -0
  641. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/test_release_gate_decision.py +0 -0
  642. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/test_removed_cli_aliases.py +0 -0
  643. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/test_spec_conformance_display.py +0 -0
  644. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/test_task_create_preflight.py +0 -0
  645. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/user_facing_errors_test.py +0 -0
  646. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/cli/write_context_filename_test.py +0 -0
  647. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/__init__.py +0 -0
  648. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_config_holds_its_document.py +0 -0
  649. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_config_profiles.py +0 -0
  650. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_default_a2a_agent.py +0 -0
  651. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_describe.py +0 -0
  652. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_explain_and_sources.py +0 -0
  653. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_fixture_prefix_keys.py +0 -0
  654. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_human_a2a_url.py +0 -0
  655. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_loader.py +0 -0
  656. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_model.py +0 -0
  657. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_no_stage_concept.py +0 -0
  658. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_one_document_per_process.py +0 -0
  659. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_paths.py +0 -0
  660. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_registry_builders_take_a_config.py +0 -0
  661. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_reset_config.py +0 -0
  662. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/config/test_unread_keys.py +0 -0
  663. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/conftest.py +0 -0
  664. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/__init__.py +0 -0
  665. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/bootstrap_test.py +0 -0
  666. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/__init__.py +0 -0
  667. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/service_db/__init__.py +0 -0
  668. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/service_db/service_db_test.py +0 -0
  669. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_env_card_loads.py +0 -0
  670. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_env_close_teardown.py +0 -0
  671. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_environment_name_alias.py +0 -0
  672. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_mcp_server_container_mode.py +0 -0
  673. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_mcp_server_load.py +0 -0
  674. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_mcp_server_plugin_provider.py +0 -0
  675. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_multi_env_load_concurrency.py +0 -0
  676. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_multi_env_load_resume.py +0 -0
  677. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_multi_env_name.py +0 -0
  678. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_multi_env_plugin_provider.py +0 -0
  679. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_multi_env_snapshot_bake.py +0 -0
  680. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_multi_env_snapshot_guard.py +0 -0
  681. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_multi_env_snapshot_reload_name.py +0 -0
  682. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_multi_env_vm_sizing.py +0 -0
  683. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_put_from_github_token.py +0 -0
  684. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/envs/test_website_env_name_alias.py +0 -0
  685. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/gateway/data_plane_timeout_test.py +0 -0
  686. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/gateway/env_trajectory_route_test.py +0 -0
  687. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/gateway/gateway_card_test.py +0 -0
  688. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/gateway/get_time_test.py +0 -0
  689. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/gateway/import_graph_test.py +0 -0
  690. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/gateway/rest_proxy_socket_test.py +0 -0
  691. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/gateway/rest_proxy_stream_test.py +0 -0
  692. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/gateway/role_rules_test.py +0 -0
  693. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/gateway/trajectory_virtual_time_test.py +0 -0
  694. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/gateway/triggers_ctx_test.py +0 -0
  695. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/gateway/triggers_test.py +0 -0
  696. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/gateway/triggers_time_test.py +0 -0
  697. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/store_test.py +0 -0
  698. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/task_step/__init__.py +0 -0
  699. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/task_step/deploy_agent_env_vars_test.py +0 -0
  700. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/task_step/test_context_ops.py +0 -0
  701. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/task_step/test_score_aggregator.py +0 -0
  702. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/task_step/verify_env_card_test.py +0 -0
  703. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/task_step/verify_env_core_protocol_test.py +0 -0
  704. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/test_env.py +0 -0
  705. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/test_legacy_protocol.py +0 -0
  706. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/test_registry.py +0 -0
  707. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/env/test_snapshot_fingerprint.py +0 -0
  708. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/event_loop_probe.py +0 -0
  709. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/explorer/__init__.py +0 -0
  710. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/explorer/entity_ids_test.py +0 -0
  711. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/explorer/explorer_app_test.py +0 -0
  712. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/plugin_inventory_test.py +0 -0
  713. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/plugin_requirements_test.py +0 -0
  714. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/plugin_settings_test.py +0 -0
  715. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/plugins_test.py +0 -0
  716. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/__init__.py +0 -0
  717. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/compose_host_port_publish_test.py +0 -0
  718. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/env_providers/__init__.py +0 -0
  719. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/env_providers/env_provider_test.py +0 -0
  720. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/env_state/__init__.py +0 -0
  721. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/env_state/fakes.py +0 -0
  722. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/env_state/test_config_state_providers.py +0 -0
  723. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/env_state/test_env_state_provider.py +0 -0
  724. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/__init__.py +0 -0
  725. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/attribution_wire_test.py +0 -0
  726. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/e2b_sandbox_provider_test.py +0 -0
  727. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/e2b_template_test.py +0 -0
  728. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/egress_hosts_test.py +0 -0
  729. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/local_sandbox_host_ports_test.py +0 -0
  730. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/modal_create_signature_test.py +0 -0
  731. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/modal_gpu_sandbox_test.py +0 -0
  732. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/modal_network_policy_test.py +0 -0
  733. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/modal_network_policy_wiring_test.py +0 -0
  734. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/modal_sandbox_started_log_test.py +0 -0
  735. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/modal_sandbox_tags_test.py +0 -0
  736. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/modal_sandbox_test.py +0 -0
  737. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/modal_vm_sandbox_test.py +0 -0
  738. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/network_policy_providers_test.py +0 -0
  739. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/network_policy_stamping_test.py +0 -0
  740. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/network_policy_test.py +0 -0
  741. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/sail_vm_model_key_test.py +0 -0
  742. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/sail_vm_sandbox_provider_test.py +0 -0
  743. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/sail_vm_sandbox_test.py +0 -0
  744. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/sandbox_provider_test.py +0 -0
  745. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/test_config_sandbox_providers.py +0 -0
  746. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/test_reachability_contributions.py +0 -0
  747. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/test_url_rewrites.py +0 -0
  748. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/vm_file_transfer_test.py +0 -0
  749. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/providers/sandbox_providers/vm_object_push_test.py +0 -0
  750. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/runner/__init__.py +0 -0
  751. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/runner/local_runner_test.py +0 -0
  752. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/runner/run_store_test.py +0 -0
  753. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/__init__.py +0 -0
  754. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/golden/artifact/cli.json +0 -0
  755. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/golden/artifact/docker_image.json +0 -0
  756. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/golden/artifact/environment.json +0 -0
  757. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/golden/artifact/environment_universe.json +0 -0
  758. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/golden/artifact/file.json +0 -0
  759. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/golden/artifact/file_artifact_universe.json +0 -0
  760. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/golden/artifact/skill.json +0 -0
  761. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/golden/env/gateway_server.json +0 -0
  762. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/golden/env/mcp_server.json +0 -0
  763. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/golden/env/multi.json +0 -0
  764. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/golden/env/service_db.json +0 -0
  765. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/golden/env/website.json +0 -0
  766. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/serialization/test_golden_wire_format.py +0 -0
  767. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/__init__.py +0 -0
  768. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/aws/__init__.py +0 -0
  769. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/aws/aws_secret_store_test.py +0 -0
  770. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/aws/conftest.py +0 -0
  771. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/aws/dynamodb_document_store_test.py +0 -0
  772. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/aws/dynamodb_step_journal_test.py +0 -0
  773. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/aws/ecr_image_store_test.py +0 -0
  774. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/aws/s3_grant_lifetime_test.py +0 -0
  775. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/aws/s3_object_store_test.py +0 -0
  776. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/aws/s3_transfer_grants_test.py +0 -0
  777. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/aws/test_secret_logging.py +0 -0
  778. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/aws/test_shared_credentials.py +0 -0
  779. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/derived_ids_test.py +0 -0
  780. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/fake_object_store_test.py +0 -0
  781. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/fakes.py +0 -0
  782. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/firestore_mongo_document_store_test.py +0 -0
  783. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/gcp_secret_manager_secret_store_test.py +0 -0
  784. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/gcs_object_store_test.py +0 -0
  785. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/google_credentials_test.py +0 -0
  786. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/google_transport_test.py +0 -0
  787. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/grant_lifetime_test.py +0 -0
  788. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/ids_test.py +0 -0
  789. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/local_backends_composition_test.py +0 -0
  790. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/local_grant_server_test.py +0 -0
  791. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/local_id_acceptance_test.py +0 -0
  792. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/local_object_store_test.py +0 -0
  793. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/local_registry_image_store_test.py +0 -0
  794. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/local_secret_store_test.py +0 -0
  795. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/local_tls_test.py +0 -0
  796. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/local_tokens_test.py +0 -0
  797. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/mongo_document_store_test.py +0 -0
  798. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/oci_registry_credentials_test.py +0 -0
  799. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/oci_registry_image_store_test.py +0 -0
  800. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/readable_url_test.py +0 -0
  801. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/registry_api_test.py +0 -0
  802. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/routing_test.py +0 -0
  803. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/sqlite_document_store_test.py +0 -0
  804. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/test_config_document_store.py +0 -0
  805. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/test_config_image_store.py +0 -0
  806. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/test_config_model.py +0 -0
  807. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/test_config_mongo_client.py +0 -0
  808. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/test_config_object_store.py +0 -0
  809. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/test_config_secret_bundle_keys.py +0 -0
  810. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/test_config_secret_store.py +0 -0
  811. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/test_document_store.py +0 -0
  812. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/test_object_transfer_grants.py +0 -0
  813. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/test_task_instance_indexes.py +0 -0
  814. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/store/version_lookup_benchmark_test.py +0 -0
  815. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task/__init__.py +0 -0
  816. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task/batch_universe_ids_test.py +0 -0
  817. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task/benchmark_test.py +0 -0
  818. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task/depends_on_test.py +0 -0
  819. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task/local_run_write_fence_test.py +0 -0
  820. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task/step_journal_rules_test.py +0 -0
  821. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task/step_journal_test.py +0 -0
  822. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task/task_document_test.py +0 -0
  823. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task/task_failure_write_retry_test.py +0 -0
  824. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task/task_instance_reads_test.py +0 -0
  825. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task/teardown_test.py +0 -0
  826. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/__init__.py +0 -0
  827. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/attribution_serialization_test.py +0 -0
  828. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/capture_stubs.py +0 -0
  829. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/context_ops_journal_test.py +0 -0
  830. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/deploy_agent_cleanup_test.py +0 -0
  831. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/deploy_agent_test.py +0 -0
  832. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/deploy_env_test.py +0 -0
  833. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/deploy_human_agent_test.py +0 -0
  834. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/deploy_sandbox_network_policy_test.py +0 -0
  835. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/deploy_sandbox_provider_override_test.py +0 -0
  836. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/install_agent_guards_test.py +0 -0
  837. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/install_agent_test.py +0 -0
  838. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/local_step_containers_test.py +0 -0
  839. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/prompt_agent_file_parts_test.py +0 -0
  840. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/retry_test.py +0 -0
  841. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/run_context_object_url_test.py +0 -0
  842. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/run_docker_container_test.py +0 -0
  843. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/skill_object_url_test.py +0 -0
  844. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/snapshot_env_upload_grant_test.py +0 -0
  845. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/stored_priority_test.py +0 -0
  846. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/stored_s3_form_fields_test.py +0 -0
  847. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/sync_env_clock_test.py +0 -0
  848. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_agent_model_precedence.py +0 -0
  849. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_agent_state_capture.py +0 -0
  850. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_apply_server_config.py +0 -0
  851. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_collect_artifacts.py +0 -0
  852. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_collect_artifacts_universe_suffix.py +0 -0
  853. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_collect_artifacts_vm_host.py +0 -0
  854. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_collect_integrity.py +0 -0
  855. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_combine_universe_verdicts.py +0 -0
  856. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_config_task_steps.py +0 -0
  857. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_container_sandbox_routing.py +0 -0
  858. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_deploy_agent_changelog_objects.py +0 -0
  859. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_deploy_agent_enable_docker.py +0 -0
  860. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_deploy_agent_live_endpoint.py +0 -0
  861. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_deploy_agent_mcp_alias.py +0 -0
  862. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_deploy_agent_snapshot_objects.py +0 -0
  863. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_deploy_ttl_from_budget.py +0 -0
  864. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_entity_refs.py +0 -0
  865. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_install_agent_registers_instance.py +0 -0
  866. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_load_artifact_agent_container_target.py +0 -0
  867. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_load_artifact_container_sandbox.py +0 -0
  868. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_load_artifact_env_binding.py +0 -0
  869. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_load_artifact_file.py +0 -0
  870. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_load_artifact_overrides.py +0 -0
  871. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_load_artifact_service_payload.py +0 -0
  872. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_load_artifact_service_universe.py +0 -0
  873. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_load_artifact_snapshot_reporting.py +0 -0
  874. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_load_artifact_url_filenames.py +0 -0
  875. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_load_artifact_vm_target.py +0 -0
  876. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_manifest_cli_builder.py +0 -0
  877. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_mcp_cli_builder.py +0 -0
  878. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_modify_env_tool_access.py +0 -0
  879. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_parallel_deploy_env_binding.py +0 -0
  880. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_prompt_agent.py +0 -0
  881. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_prompt_agent_human_default.py +0 -0
  882. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_prompt_agent_model_params.py +0 -0
  883. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_prompt_agent_snapshots.py +0 -0
  884. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_prompt_agent_triggers.py +0 -0
  885. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_prompt_agent_unreachable.py +0 -0
  886. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_prompt_agent_user_model.py +0 -0
  887. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_register_agent_triggers.py +0 -0
  888. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_register_env_triggers.py +0 -0
  889. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_reset_env.py +0 -0
  890. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_review.py +0 -0
  891. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_run_code.py +0 -0
  892. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_sandbox_utils_agent_container.py +0 -0
  893. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_sandbox_utils_logs.py +0 -0
  894. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_snapshot_agent_state.py +0 -0
  895. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_snapshot_env.py +0 -0
  896. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_snapshot_env_env_binding.py +0 -0
  897. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_teardown_sandboxes.py +0 -0
  898. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_universe_comparison.py +0 -0
  899. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_validation_gate_aggregator.py +0 -0
  900. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_verify_a2a_agent_mcp.py +0 -0
  901. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_verify_spec_conformance.py +0 -0
  902. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_verify_universe_agent_judge.py +0 -0
  903. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/test_verify_universe_roundtrip.py +0 -0
  904. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/thread_work_test.py +0 -0
  905. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/__init__.py +0 -0
  906. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/judge_short_keys_test.py +0 -0
  907. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/judge_utils/__init__.py +0 -0
  908. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/judge_utils/test_frame_selection.py +0 -0
  909. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/judge_utils/test_frame_selection_tool_name.py +0 -0
  910. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/judge_utils/test_judge_output_format.py +0 -0
  911. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/judge_utils/test_trajectory_filter.py +0 -0
  912. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/run_container_unit_tests_verifier_test.py +0 -0
  913. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_env_outcome_verifier_step.py +0 -0
  914. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_rubrics_verifier_criteria_override.py +0 -0
  915. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_rubrics_verifier_judge_retry.py +0 -0
  916. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_rubrics_verifier_judge_teardown.py +0 -0
  917. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_rubrics_verifier_judge_timeout.py +0 -0
  918. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_rubrics_verifier_judge_trajectory.py +0 -0
  919. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_rubrics_verifier_mistakes_entry.py +0 -0
  920. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_rubrics_verifier_multiturn.py +0 -0
  921. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_rubrics_verifier_per_criterion.py +0 -0
  922. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_rubrics_verifier_screenshots.py +0 -0
  923. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_score_parity.py +0 -0
  924. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_trajectory_mistakes_format.py +0 -0
  925. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/task_step/verifiers/test_verify_sandbox.py +0 -0
  926. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/test_capabilities.py +0 -0
  927. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/test_check_plugin_api.py +0 -0
  928. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/test_check_skip_policy.py +0 -0
  929. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/test_clean_install_wheel.py +0 -0
  930. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/test_client_identity.py +0 -0
  931. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/test_optional_extras_stay_optional.py +0 -0
  932. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/test_runtime_dependencies_are_imported.py +0 -0
  933. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/test_tls_verification.py +0 -0
  934. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/utils/__init__.py +0 -0
  935. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/utils/build_context_test.py +0 -0
  936. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/utils/docker_build_test.py +0 -0
  937. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/utils/exec_retry_test.py +0 -0
  938. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/utils/test_card_naming_github_token.py +0 -0
  939. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/unit/utils/test_paths.py +0 -0
  940. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/util/__init__.py +0 -0
  941. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/util/a2a_test_agent.py +0 -0
  942. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/util/capabilities.py +0 -0
  943. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/util/config.py +0 -0
  944. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/util/exec_scripts.py +0 -0
  945. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/util/fake_a2a.py +0 -0
  946. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/util/granting_object_store.py +0 -0
  947. {agentenv_framework-0.9.1302 → agentenv_framework-0.9.1304}/tst/util/image_cache.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentenv-framework
3
- Version: 0.9.1302
3
+ Version: 0.9.1304
4
4
  Summary: SDK and CLI for building, deploying and running agent environments and the tasks that grade agents in them.
5
5
  Project-URL: Homepage, https://www.agentenvframework.com
6
6
  Project-URL: Documentation, https://www.agentenvframework.com/docs
@@ -29,7 +29,7 @@ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
29
29
  Classifier: Typing :: Typed
30
30
  Requires-Python: >=3.11
31
31
  Requires-Dist: a2a-sdk==0.3.26
32
- Requires-Dist: agentenv-framework-protocol==0.1.317
32
+ Requires-Dist: agentenv-framework-protocol==0.1.319
33
33
  Requires-Dist: certifi>=2024.2.2
34
34
  Requires-Dist: click>=8.0.0
35
35
  Requires-Dist: cryptography>=42
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agentenv-framework-protocol"
3
- version = "0.1.317"
3
+ version = "0.1.319"
4
4
  description = "Open data-plane protocol and server SDK for agent environments."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "agentenv-framework"
7
- version = "0.9.1302"
7
+ version = "0.9.1304"
8
8
  description = "SDK and CLI for building, deploying and running agent environments and the tasks that grade agents in them."
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -29,7 +29,7 @@ classifiers = [
29
29
  "Typing :: Typed",
30
30
  ]
31
31
  dependencies = [
32
- "agentenv-framework-protocol==0.1.317",
32
+ "agentenv-framework-protocol==0.1.319",
33
33
  "certifi>=2024.2.2", # the public roots the local transfer CA's trust bundle carries
34
34
  "click>=8.0.0",
35
35
  "cryptography>=42", # the local transfer CA
@@ -33,6 +33,8 @@ from agent_env.providers.sandbox_providers.local_sandbox import (
33
33
  local_grant_trust,
34
34
  start_trusting,
35
35
  )
36
+ from agent_env.providers.sandbox_providers.chained_sandbox_provider import ChainedSandboxProvider
37
+ from agent_env.providers.sandbox_providers.modal_sandbox import ModalSandboxProvider
36
38
  from agent_env.providers.sandbox_providers.sandbox_provider import all_sandbox_container_env, all_sandbox_url_rewrites
37
39
  from agent_env.attribution import Attribution
38
40
 
@@ -431,6 +433,14 @@ class A2AAgent:
431
433
 
432
434
  merged_env = await asyncio.to_thread(self._build_merged_env, resolved_env, a2a_port)
433
435
  image_name = self.docker_image_artifact.image_name
436
+ if problem := self.docker_image_artifact.by_name_problem():
437
+ if provider is None and sandbox.mode != SANDBOX_MODE_VM:
438
+ raise ValueError(f"Can't deploy agent {self.id!r} on the container sandbox {sandbox.sandbox_id!r}, which "
439
+ f"runs its own image, never the agent's: {problem}")
440
+ links = provider.providers if isinstance(provider, ChainedSandboxProvider) else [provider] if provider else []
441
+ if by_name := [link for link in links if isinstance(link, (LocalSandboxProvider, ModalSandboxProvider))]:
442
+ raise ValueError(f"Can't deploy agent {self.id!r} with {type(by_name[0]).__name__}, which runs an "
443
+ f"agent's image by name: {problem}")
434
444
 
435
445
  try:
436
446
  if provider is not None:
@@ -264,20 +264,31 @@ class DockerImageArtifact(Artifact):
264
264
  def load(self) -> bytes:
265
265
  from agent_env.artifact.store import get_artifact_store
266
266
  if not self.tar_gz_object_url:
267
- raise ValueError(self.load_problem() or f"{self.id!r} v{self.version} has no tar.gz; its image is pulled "
268
- f"from {self.image_name}")
267
+ how = "built from its build context" if self.context_only else f"pulled from {self.image_name}"
268
+ raise ValueError(f"{self.id!r} v{self.version} has no tar.gz; its image is {how}")
269
269
  return get_artifact_store().get_object(self.tar_gz_object_url)
270
270
 
271
+ @property
272
+ def context_only(self) -> bool:
273
+ """Whether only the image's build context is stored: no tar.gz, and an image name that names no registry, the
274
+ tag a VM sandbox gives the image when it builds it."""
275
+ return bool(self.build_context_object_url) and not self.tar_gz_object_url and not names_registry(self.image_name)
276
+
271
277
  def load_problem(self) -> str | None:
272
- """Why no sandbox can get this image, or None when one can: a tar.gz is loaded, and with none, ``image_name``
273
- is pulled, so it must name its registry. One registered by its build context alone isn't built yet."""
274
- if self.tar_gz_object_url or names_registry(self.image_name):
278
+ """Why no VM sandbox can get this image, or None when one can: a tar.gz is loaded, an image with none is pulled
279
+ when its name names a registry, and built from its build context when it has only that."""
280
+ if self.tar_gz_object_url or names_registry(self.image_name) or self.context_only:
275
281
  return None
276
- if self.build_context_object_url:
277
- return f"{self.id!r} v{self.version} is only a build context, and sandboxes don't build images from one yet"
278
282
  return (f"{self.id!r} v{self.version} has no tar.gz, and its image name {self.image_name!r} doesn't name a "
279
283
  "registry to pull it from")
280
284
 
285
+ def by_name_problem(self) -> str | None:
286
+ """Why a sandbox that runs an image by pulling its name can't run this one, or None when it can: a context-only
287
+ image's name is a tag only a VM sandbox's build gives it, and pulled, it would be looked up on Docker Hub."""
288
+ if self.context_only:
289
+ return f"{self.id!r} v{self.version} is only a build context, which only a VM sandbox builds"
290
+ return None
291
+
281
292
  @classmethod
282
293
  async def put_from_github(
283
294
  cls,
@@ -96,6 +96,7 @@ class _Image:
96
96
  what: str
97
97
  local_only: str | None # why only this machine has it, or None
98
98
  unloadable: str | None = None # why no sandbox can get it, or None
99
+ by_name: str | None = None # why a sandbox that runs it by pulling its name can't, or None
99
100
 
100
101
 
101
102
  @dataclass(frozen=True)
@@ -183,6 +184,10 @@ class _Walk:
183
184
  if GATEWAY in kinds and (loaders := [link for link in _links(provider)
184
185
  if not isinstance(link, ModalSandboxProvider)]):
185
186
  self._loadable(where, loaders, images) # a gateway VM loads its images; Modal's runs each by name
187
+ # A lone server runs in a container from its image's name on any provider; a gateway does on Modal.
188
+ by_name = ([link for link in _links(provider) if isinstance(link, ModalSandboxProvider)] if GATEWAY in kinds
189
+ else _links(provider))
190
+ self._by_name(where, by_name, images)
186
191
  if _local_link(provider):
187
192
  self.infra |= kinds
188
193
  self.docker_users.append(where)
@@ -291,12 +296,14 @@ class _Walk:
291
296
  if agent_id is None:
292
297
  self.default_agent_users.append((where, unnamed))
293
298
  agent_id = get_config().get_default_a2a_agent_id()
294
- loaders = [link for link in _links(provider) if not isinstance(link, (LocalSandboxProvider, ModalSandboxProvider))]
299
+ by_name = [link for link in _links(provider) if isinstance(link, (LocalSandboxProvider, ModalSandboxProvider))]
300
+ loaders = [link for link in _links(provider) if link not in by_name] # by_name run an agent in a container
295
301
  remote = _remote_links(provider)
296
- if not (loaders or remote) or (image := self._agent_image(agent_id, version)) is None:
302
+ if (image := self._agent_image(agent_id, version)) is None:
297
303
  return
298
304
  if loaders:
299
- self._loadable(where, loaders, [image]) # those two run an agent in a container, by image name
305
+ self._loadable(where, loaders, [image])
306
+ self._by_name(where, by_name, [image])
300
307
  if remote:
301
308
  self._reachable(where, remote, [image])
302
309
 
@@ -340,6 +347,15 @@ class _Walk:
340
347
  self._problem(where, f"deploys {image.what} on the {_shown(loaders[0])} sandbox provider, which can't "
341
348
  f"load it: {image.unloadable}")
342
349
 
350
+ def _by_name(self, where: str, links: list[SandboxProvider], images: list[_Image]) -> None:
351
+ """Refuse each of ``images`` a sandbox on ``links`` can't run: it pulls an image by its name, and a context-only
352
+ image's name is a tag only a VM sandbox's build gives it."""
353
+ for image in images:
354
+ if links and image.by_name:
355
+ self._problem(where, f"deploys {image.what} on the {_shown(links[0])} sandbox provider, which runs it "
356
+ f"by name: {image.by_name}; run it on a provider whose VMs build it, such as "
357
+ "--sandbox modal_vm")
358
+
343
359
  def _reachable(self, where: str, remote: list[SandboxProvider], images: list[_Image]) -> None:
344
360
  for image in images:
345
361
  if image.local_only:
@@ -361,6 +377,8 @@ class _Walk:
361
377
  images = [_image(f"the {kind} env {env_id!r}'s image {image.id!r}", image) for image in artifacts]
362
378
  if not isinstance(provider, ModalSandboxProvider): # whose containers run by name, or are swapped out
363
379
  self._loadable(where, [provider], images)
380
+ else:
381
+ self._by_name(where, [provider], images)
364
382
  self._reachable(where, [provider], images)
365
383
 
366
384
  def _default_agent(self) -> None:
@@ -439,7 +457,7 @@ def _name(provider: SandboxProvider) -> str:
439
457
 
440
458
 
441
459
  def _image(what: str, image: DockerImageArtifact) -> _Image:
442
- return _Image(what, _local_only(image), image.load_problem())
460
+ return _Image(what, _local_only(image), image.load_problem(), image.by_name_problem())
443
461
 
444
462
 
445
463
  def _local_only(image: DockerImageArtifact | str) -> str | None:
@@ -836,6 +836,9 @@ COMPOSE_EOF'''
836
836
 
837
837
  config = get_config()
838
838
  gateway_env = Env.get(config.default_gateway_env_id)
839
+ if problems := [problem for image in [gateway_env.docker_image_artifact, *mcp_server_images]
840
+ if (problem := image.by_name_problem())]:
841
+ raise ValueError(f"Can't deploy on Modal, whose gateway runs each image by name: {'; '.join(problems)}")
839
842
 
840
843
  i6pn_kwargs = {"i6pn": True, "region": config.modal_default_region} if isinstance(sandbox_provider, ModalSandboxProvider) else {}
841
844
  deploy = _ContainerDeploy(
@@ -67,6 +67,8 @@ class EnvironmentServerProvider(_SandboxEnvironmentProvider):
67
67
  from agent_env.env.envs.mcp_server import MCPServerEnv
68
68
 
69
69
  name = env.environment_name
70
+ if problem := env.docker_image_artifact.by_name_problem():
71
+ raise ValueError(f"Can't deploy {name!r} as a server, which runs its image by name: {problem}")
70
72
  server = await sandbox_provider.create_container(
71
73
  image_name=env.docker_image_artifact.image_name,
72
74
  port=AGENT_ENV_GATEWAY_MCP_PORT,
@@ -13,10 +13,12 @@ import asyncio
13
13
  import logging
14
14
  import shlex
15
15
  import time
16
+ import weakref
16
17
  from collections.abc import Iterable
17
18
  from typing import TYPE_CHECKING, Any
18
19
  from urllib.parse import urlparse
19
20
 
21
+ from agent_env.config import get_config
20
22
  from agent_env.providers.sandbox_providers.sandbox import NetworkMode, NetworkPolicy, VmSandbox
21
23
  from agent_env.providers.sandbox_providers.sandbox_provider import SANDBOX_MODE_VM
22
24
 
@@ -28,6 +30,13 @@ logger = logging.getLogger(__name__)
28
30
  E2B_ALL_TRAFFIC = "0.0.0.0/0"
29
31
 
30
32
 
33
+ # One lock per E2B sandbox in each event loop, held to widen its egress policy, so concurrent downloads don't each widen
34
+ # a stale copy and drop the other's host.
35
+ _policy_locks: weakref.WeakValueDictionary[tuple[asyncio.AbstractEventLoop, str], asyncio.Lock] = (
36
+ weakref.WeakValueDictionary()
37
+ )
38
+
39
+
31
40
  class _BytesReader:
32
41
  """The small ``StreamReader`` subset consumed by ``Sandbox.exec_with_output``."""
33
42
 
@@ -312,15 +321,30 @@ class E2BSandbox(VmSandbox):
312
321
  return
313
322
 
314
323
  signed_urls = await self._signed_image_urls(artifacts)
315
- signed_hosts = {
316
- parsed.hostname
317
- for signed_url in signed_urls
318
- if signed_url and (parsed := urlparse(signed_url)).hostname
319
- }
320
- if signed_hosts:
321
- await self.apply_network_policy(policy.with_hosts(sorted(signed_hosts)))
324
+ await self._allow_download_hosts(signed_urls)
322
325
  await self._load_docker_images(artifacts, signed_urls)
323
326
 
327
+ async def _download_object_to_vm(self, object_url: str, vm_path: str) -> None:
328
+ """Download an object after adding its signed-download host to a restrictive policy, as image tarballs are: a
329
+ build context is fetched this way before a build in the VM. A reconnected sandbox, whose policy is unknown,
330
+ downloads as before."""
331
+ policy = self.network_policy
332
+ if policy is not None and policy.restricts_egress:
333
+ signed = await asyncio.to_thread(get_config().get_object_store_at(object_url).signed_get_url, object_url)
334
+ await self._allow_download_hosts([signed])
335
+ await super()._download_object_to_vm(object_url, vm_path)
336
+
337
+ async def _allow_download_hosts(self, signed_urls: list[str | None]) -> None:
338
+ """Add the hosts of ``signed_urls`` to a restrictive applied policy, reading the policy under the sandbox's
339
+ lock, so a concurrent download's host isn't dropped."""
340
+ hosts = {parsed.hostname for url in signed_urls if url and (parsed := urlparse(url)).hostname}
341
+ if not hosts:
342
+ return
343
+ async with _policy_locks.setdefault((asyncio.get_running_loop(), self.sandbox_id), asyncio.Lock()):
344
+ policy = self.network_policy
345
+ if policy is not None and policy.restricts_egress and not hosts <= set(policy.allow_hosts):
346
+ await self.apply_network_policy(policy.with_hosts(sorted(hosts)))
347
+
324
348
  @classmethod
325
349
  async def reconnect(
326
350
  cls,
@@ -7,6 +7,7 @@ via subprocess instead of on a remote VM.
7
7
  from __future__ import annotations
8
8
 
9
9
  import asyncio
10
+ import collections
10
11
  import contextlib
11
12
  import functools
12
13
  import glob
@@ -62,6 +63,10 @@ def _runs_in_container(cmd: list[str]) -> bool:
62
63
 
63
64
 
64
65
  _REAP_SECONDS = 5
66
+ # How long a finished command's output is still read, for a job it left in the background that holds it open; and
67
+ # how much of each stream is kept, the end of it: above the largest output core reads whole, run_code's 50 MiB result.
68
+ _OUTPUT_GRACE_SECONDS = 1
69
+ _OUTPUT_TAIL_BYTES = 64 * 1024 * 1024
65
70
 
66
71
  # Every command a local sandbox runs carries this, set to the sandbox's id, and so does whatever the command starts, so
67
72
  # teardown can find a process left running on this machine, such as the agent a host-mode install started.
@@ -282,6 +287,7 @@ class LocalSandbox(VmSandbox):
282
287
  logger.debug(f"LocalSandbox exec: {' '.join(cmd)}")
283
288
  process = await asyncio.create_subprocess_exec(
284
289
  *cmd,
290
+ stdin=asyncio.subprocess.DEVNULL,
285
291
  stdout=asyncio.subprocess.PIPE,
286
292
  stderr=asyncio.subprocess.PIPE,
287
293
  env={**os.environ, _SANDBOX_ENV: self.sandbox_id},
@@ -289,8 +295,10 @@ class LocalSandbox(VmSandbox):
289
295
  return process
290
296
 
291
297
  async def exec_with_output(self, *args: str) -> tuple[int, str, str]:
292
- """Like the base, except that cancelling it kills the command and every process it started. This host
293
- is the sandbox's VM, so nothing else would."""
298
+ """Like the base, but as a remote exec session behaves. Cancelling it kills the command and every process it
299
+ started; this host is the sandbox's VM, so nothing else would. The call ends with the command, even if a job
300
+ it left in the background still holds its output, which is then closed. Each stream keeps its last
301
+ ``_OUTPUT_TAIL_BYTES``, and bytes that aren't UTF-8 become replacement characters."""
294
302
  spawning = asyncio.ensure_future(self.exec(*args))
295
303
  try:
296
304
  process = await asyncio.shield(spawning)
@@ -298,13 +306,26 @@ class LocalSandbox(VmSandbox):
298
306
  with contextlib.suppress(Exception):
299
307
  await _stop(await spawning)
300
308
  raise
309
+ stdout, stderr = _Tail(), _Tail()
310
+ reading = [asyncio.ensure_future(tail.drain(stream))
311
+ for tail, stream in ((stdout, process.stdout), (stderr, process.stderr))]
301
312
  try:
302
- stdout, stderr = await asyncio.gather(process.stdout.read(), process.stderr.read())
303
- exit_code = await process.wait()
313
+ exit_code = await _exit_code(process)
314
+ await asyncio.wait(reading, timeout=_OUTPUT_GRACE_SECONDS)
304
315
  except asyncio.CancelledError:
305
316
  await _stop(process)
306
317
  raise
307
- return exit_code, stdout.decode(), stderr.decode()
318
+ finally:
319
+ for reader in reading:
320
+ reader.cancel()
321
+ # Our ends of its pipes, which a background job may hold. asyncio has no public way to close them.
322
+ process._transport.close()
323
+ output = stdout.text(), stderr.text()
324
+ for name, tail in (("stdout", stdout), ("stderr", stderr)):
325
+ if tail.dropped: # not the command itself: it can carry secrets
326
+ logger.warning("Kept the last %d bytes of a command's %s on sandbox %s; %d before them were dropped",
327
+ _OUTPUT_TAIL_BYTES, name, self.sandbox_id, tail.dropped)
328
+ return exit_code, *output
308
329
 
309
330
  async def _write_unsigned_object(self, object_store: ObjectStore, object_url: str, vm_path: str) -> None:
310
331
  """This host is the VM, so the store writes the object in place, with no exec transport."""
@@ -319,12 +340,50 @@ class LocalSandbox(VmSandbox):
319
340
  pass
320
341
 
321
342
 
343
+ class _Tail:
344
+ """The end of a stream as it is read: its last ``_OUTPUT_TAIL_BYTES``, and how many bytes before them were
345
+ dropped. Chunks, because cutting the front off one growing buffer keeps the memory it grew to."""
346
+
347
+ def __init__(self) -> None:
348
+ self.chunks: collections.deque[bytes] = collections.deque()
349
+ self.size = self.dropped = 0
350
+
351
+ async def drain(self, stream: asyncio.StreamReader) -> None:
352
+ while chunk := await stream.read(1 << 16):
353
+ self.chunks.append(chunk)
354
+ self.size += len(chunk)
355
+ while self.size - len(self.chunks[0]) >= _OUTPUT_TAIL_BYTES:
356
+ first = self.chunks.popleft()
357
+ self.size -= len(first)
358
+ self.dropped += len(first)
359
+
360
+ def text(self) -> str:
361
+ data = b"".join(self.chunks)
362
+ if (excess := len(data) - _OUTPUT_TAIL_BYTES) > 0:
363
+ data = data[excess:]
364
+ self.dropped += excess
365
+ return data.decode(errors="replace")
366
+
367
+
368
+ async def _exit_code(process: asyncio.subprocess.Process) -> int:
369
+ """``process``'s exit code, as soon as it exits. ``Process.wait()`` also waits for its pipes to close, which a job
370
+ it left in the background can hold open, so the exit is checked for meanwhile."""
371
+ waiting = asyncio.ensure_future(process.wait())
372
+ try:
373
+ while process.returncode is None:
374
+ await asyncio.wait([waiting], timeout=0.05)
375
+ return process.returncode
376
+ finally:
377
+ waiting.cancel()
378
+
379
+
322
380
  async def _stop(process: asyncio.subprocess.Process) -> None:
323
- """SIGKILL ``process`` and every process it started, then reap it, waiting a few seconds at most for one
324
- that escaped the kill to let go of its output."""
381
+ """SIGKILL ``process`` and every process it started, wait a few seconds at most for it to exit, then close our
382
+ ends of its pipes, which a job that escaped the kill may still hold."""
325
383
  _kill_tree(process.pid)
326
384
  with contextlib.suppress(TimeoutError):
327
- await asyncio.wait_for(process.wait(), _REAP_SECONDS)
385
+ await asyncio.wait_for(_exit_code(process), _REAP_SECONDS)
386
+ process._transport.close()
328
387
 
329
388
 
330
389
  def _kill_tree(root: int) -> None:
@@ -23,6 +23,7 @@ from typing import IO, TYPE_CHECKING, Any, AsyncIterator, Callable, Iterable, Op
23
23
 
24
24
  from agent_env.config import get_config
25
25
  from agent_env.store.image_store.oci_registry_credentials import registry_host_from_ref
26
+ from agent_env.utils.docker_build import DEFAULT_BUILD_PLATFORM
26
27
  from agent_env.utils.paths import validate_relative_filename
27
28
 
28
29
  if TYPE_CHECKING:
@@ -279,16 +280,54 @@ class VmSandbox(Sandbox):
279
280
  )
280
281
 
281
282
  async def load_docker_images(self, artifacts: list) -> None:
282
- """Put each DockerImageArtifact's image on the VM: those with a tar.gz are loaded from it, in parallel, and the
283
- rest are pulled by image name. An image no sandbox can get is refused before anything is loaded."""
283
+ """Put each DockerImageArtifact's image on the VM: those with a tar.gz are loaded from it, in parallel, those
284
+ with only a build context are built from it, and the rest are pulled by image name. An image no sandbox can get
285
+ is refused before anything is loaded."""
284
286
  if not artifacts:
285
287
  return
286
288
  if problems := [problem for artifact in artifacts if (problem := artifact.load_problem())]:
287
289
  raise RuntimeError(f"Can't load images: {'; '.join(problems)}")
288
290
  if tarballs := [artifact for artifact in artifacts if artifact.tar_gz_object_url]:
289
291
  await self._load_tarballs(tarballs)
290
- if pulled := [artifact.image_name for artifact in artifacts if not artifact.tar_gz_object_url]:
292
+ if pulled := [artifact.image_name for artifact in artifacts
293
+ if not artifact.tar_gz_object_url and not artifact.context_only]:
291
294
  await self.pull_images(pulled)
295
+ if built := [artifact for artifact in artifacts if artifact.context_only]:
296
+ await self.build_images(built)
297
+
298
+ async def build_images(self, artifacts: list) -> None:
299
+ """Build each context-only image from its build context, one build at a time, so heavy builds don't contend
300
+ for one VM; images with the same ``source_digest`` share a build. The build pulls its base images and packages
301
+ itself, so a network policy restricting egress must allow them; only the context's download is let through."""
302
+ builds: dict[str, list] = {}
303
+ for artifact in artifacts:
304
+ builds.setdefault(artifact.source_digest or artifact.build_context_object_url, []).append(artifact)
305
+ for source, images in builds.items():
306
+ await self._build_image(source, images)
307
+
308
+ async def _build_image(self, source: str, images: list) -> None:
309
+ """Download the context ``images`` share, extract it, and ``docker build`` it, tagged with each image's name."""
310
+ first = images[0]
311
+ names = list(dict.fromkeys(image.image_name for image in images))
312
+ work = f"/tmp/agent-env-build-{hashlib.sha256(source.encode()).hexdigest()[:16]}"
313
+ platform = first.platform or DEFAULT_BUILD_PLATFORM
314
+ tags = " ".join(f"-t {shlex.quote(name)}" for name in names)
315
+ logger.info(f"Building {', '.join(names)} from its build context, for {platform}...")
316
+ await self.exec_script(f"rm -rf {work} && mkdir -p {work}/context")
317
+ try:
318
+ await self.load_object_file(first.build_context_object_url, f"{work}/context.tar.gz")
319
+ await self.exec_script(
320
+ f"tar -xzf {work}/context.tar.gz -C {work}/context && cd {work}/context && "
321
+ f"docker build --platform {shlex.quote(platform)} -f {shlex.quote(first.dockerfile_path or 'Dockerfile')} "
322
+ f"{tags} ."
323
+ )
324
+ except RuntimeError as e:
325
+ raise RuntimeError(f"Building {', '.join(names)} from its build context failed: {e}") from e
326
+ finally:
327
+ try:
328
+ await self.exec_script(f"rm -rf {work}")
329
+ except Exception as e: # the VM may be gone; the folder goes with it
330
+ logger.warning(f"Could not remove {work} on {self.sandbox_id}: {e}")
292
331
 
293
332
  async def _load_tarballs(self, artifacts: list) -> None:
294
333
  """Load the images of ``artifacts``, each with a tar.gz, in parallel."""
@@ -0,0 +1,67 @@
1
+ """An agent whose image is only a build context deploys only where a VM builds it: a provider that runs an agent in a
2
+ container by its image's name refuses it before creating anything."""
3
+
4
+ import pytest
5
+
6
+ from agent_env.a2a_agent.a2a_agent import A2AAgent
7
+ from agent_env.artifact.artifacts.docker_image import DockerImageArtifact
8
+ from agent_env.providers.sandbox_providers import sandbox_provider
9
+ from agent_env.providers.sandbox_providers.chained_sandbox_provider import ChainedSandboxProvider
10
+ from agent_env.providers.sandbox_providers.local_sandbox import LocalSandboxProvider
11
+ from agent_env.providers.sandbox_providers.sandbox_provider import SandboxProvider
12
+
13
+
14
+ class _Created(Exception):
15
+ """Raised by a fake provider once asked for a sandbox, which is as far as a test needs to go."""
16
+
17
+
18
+ class _LocalProvider(LocalSandboxProvider):
19
+ async def create_sandbox(self, **_):
20
+ raise AssertionError("an image that is only a build context was run by name")
21
+
22
+
23
+ class _VmProvider(SandboxProvider):
24
+ async def create_sandbox(self, **_):
25
+ raise _Created
26
+
27
+
28
+ IMAGE = DockerImageArtifact(id="solver-image", version=2, description="d", image_name="local/solver-0123456789ab:v2",
29
+ build_context_object_url="s3://bucket/ctx.tar.gz")
30
+
31
+
32
+ @pytest.fixture
33
+ def litellm(monkeypatch):
34
+ monkeypatch.setenv("LITELLM_API_KEY", "k")
35
+ monkeypatch.setenv("LITELLM_BASE_URL", "http://litellm.example/v1")
36
+
37
+
38
+ @pytest.mark.asyncio
39
+ @pytest.mark.parametrize("provider", [_LocalProvider(), ChainedSandboxProvider([_VmProvider(), _LocalProvider()])],
40
+ ids=["local", "chain-with-local"])
41
+ async def test_a_provider_that_runs_the_agent_by_name_refuses_it(monkeypatch, local_stores, litellm, provider):
42
+ monkeypatch.setattr(sandbox_provider, "build_sandbox_provider", lambda name: provider)
43
+
44
+ with pytest.raises(ValueError, match="Can't deploy agent 'solver' with _LocalProvider, which runs an agent's image by "
45
+ "name: 'solver-image' v2 is only a build context, which only a VM sandbox builds"):
46
+ await A2AAgent(id="solver", version=1, docker_image_artifact=IMAGE).deploy(sandbox_type="any")
47
+
48
+
49
+ @pytest.mark.asyncio
50
+ async def test_a_vm_provider_is_asked_for_a_sandbox(monkeypatch, local_stores, litellm):
51
+ monkeypatch.setattr(sandbox_provider, "build_sandbox_provider", lambda name: _VmProvider())
52
+
53
+ with pytest.raises(_Created):
54
+ await A2AAgent(id="solver", version=1, docker_image_artifact=IMAGE).deploy(sandbox_type="any")
55
+
56
+
57
+ class _ContainerSandbox:
58
+ sandbox_id = "sb-container"
59
+ mode = "container"
60
+ tunnel_urls = {}
61
+
62
+
63
+ @pytest.mark.asyncio
64
+ async def test_an_existing_container_sandbox_refuses_it_since_it_never_runs_the_agents_image(local_stores, litellm):
65
+ with pytest.raises(ValueError, match="Can't deploy agent 'solver' on the container sandbox 'sb-container', which runs its "
66
+ "own image, never the agent's: 'solver-image' v2 is only a build context"):
67
+ await A2AAgent(id="solver", version=1, docker_image_artifact=IMAGE).deploy(sandbox=_ContainerSandbox())
@@ -7,6 +7,7 @@ import types
7
7
  import pytest
8
8
 
9
9
  from agent_env.a2a_agent.a2a_agent import DEFAULT_A2A_PORT, A2AAgent
10
+ from agent_env.artifact.artifacts.docker_image import DockerImageArtifact
10
11
  from agent_env.providers.sandbox_providers import sandbox_provider
11
12
  from agent_env.providers.sandbox_providers.sandbox_provider import SANDBOX_MODE_CONTAINER
12
13
 
@@ -37,7 +38,7 @@ async def test_a_deploy_that_stops_waiting_for_its_card_closes_its_sandbox(monke
37
38
 
38
39
  monkeypatch.setattr(sandbox_provider, "build_sandbox_provider", lambda name: _Provider())
39
40
  monkeypatch.setattr(A2AAgent, "_wait_for_agent_card", wait_for_card)
40
- agent = A2AAgent(id="solver", version=1, docker_image_artifact=types.SimpleNamespace(image_name="img"))
41
+ agent = A2AAgent(id="solver", version=1, docker_image_artifact=DockerImageArtifact(id="img", description="d", image_name="img"))
41
42
  deploying = asyncio.ensure_future(agent.deploy(
42
43
  sandbox_type="fake", env_vars={"LITELLM_API_KEY": "k", "LITELLM_BASE_URL": "http://llm"}))
43
44
  await waiting.wait()
@@ -66,11 +66,12 @@ def test_equal_sources_give_equal_digests_and_bytes(local_stores, context):
66
66
  assert three.version == 2
67
67
 
68
68
 
69
- def test_a_context_only_image_says_why_no_sandbox_can_get_it_yet(local_stores, context):
69
+ def test_a_context_only_image_is_built_by_a_vm_and_refused_where_run_by_name(local_stores, context):
70
70
  image = DockerImageArtifact.put_context("a", description="d", context_path=str(context), dockerfile_path="Dockerfile")
71
71
 
72
- assert image.load_problem() == "'a' v1 is only a build context, and sandboxes don't build images from one yet"
73
- with pytest.raises(ValueError, match="is only a build context"):
72
+ assert image.context_only and image.load_problem() is None
73
+ assert image.by_name_problem() == "'a' v1 is only a build context, which only a VM sandbox builds"
74
+ with pytest.raises(ValueError, match="has no tar.gz; its image is built from its build context"):
74
75
  image.load()
75
76
 
76
77
 
@@ -197,6 +197,57 @@ def test_an_env_image_with_no_tarball_and_no_registry_is_refused_where_a_gateway
197
197
  assert [entry.name for entry in dry_run_bundle(bundle_dir, sandbox="modal").runs] == ["t"]
198
198
 
199
199
 
200
+ # Images with only a build context, which a VM sandbox builds and nothing else can run
201
+
202
+
203
+ def _context_image(id):
204
+ with namespace_routing():
205
+ return get_artifact_store().put_document(DockerImageArtifact(
206
+ id=id, description=id, image_name=f"local/{id}-0123456789ab:v1", build_context_object_url="s3://bucket/ctx.tar.gz",
207
+ dockerfile_path="Dockerfile", platform="linux/amd64", source_digest="sha256:" + "1" * 64))
208
+
209
+
210
+ BY_NAME = ("on the {sandbox!r} sandbox provider, which runs it by name: '{id}' v1 is only a build context, which only a "
211
+ "VM sandbox builds; run it on a provider whose VMs build it, such as --sandbox modal_vm")
212
+
213
+
214
+ @pytest.mark.parametrize("sandbox, refused", [("modal_vm", False), ("local", True), ("modal", True), ("modal_vm,local", True)])
215
+ def test_an_agent_image_that_is_only_a_build_context_runs_where_a_vm_builds_it(bundle_dir, sandbox, refused):
216
+ with namespace_routing():
217
+ A2AAgent.put(id="solver", docker_image_artifact=_context_image("solver-image"))
218
+ _task(bundle_dir, [AGENT])
219
+
220
+ if refused:
221
+ link = "local" if "local" in sandbox else sandbox
222
+ assert _problems(lambda: dry_run_bundle(bundle_dir, sandbox=sandbox)) == [
223
+ "tasks/t.json: step 'agent': deploys agent 'solver''s image "
224
+ + BY_NAME.format(sandbox=sandbox if link == sandbox else link, id="solver-image")]
225
+ else:
226
+ assert [entry.name for entry in dry_run_bundle(bundle_dir, sandbox=sandbox).runs] == ["t"]
227
+
228
+
229
+ def test_an_env_image_that_is_only_a_build_context_runs_on_a_gateway_vm_and_not_on_modals_containers(bundle_dir):
230
+ with namespace_routing():
231
+ MCPServerEnv.put(id="crm", docker_image_artifact=_context_image("crm-image"), environment_name="crm")
232
+ _task(bundle_dir, [{"id": "env", "type": "deploy_env", "env_id": "crm"}])
233
+
234
+ assert [entry.name for entry in dry_run_bundle(bundle_dir, sandbox="local").runs] == ["t"]
235
+ _infra(REMOTE)
236
+ assert _problems(lambda: dry_run_bundle(bundle_dir, sandbox="modal")) == [
237
+ "tasks/t.json: step 'env': deploys env 'crm''s image 'crm-image' " + BY_NAME.format(sandbox="modal", id="crm-image")]
238
+
239
+
240
+ @pytest.mark.parametrize("sandbox", ["local", "modal_vm"])
241
+ def test_a_lone_server_whose_image_is_only_a_build_context_is_refused_on_any_provider(bundle_dir, sandbox):
242
+ with namespace_routing():
243
+ MCPServerEnv.put(id="crm", docker_image_artifact=_context_image("crm-image"), environment_name="crm",
244
+ env_provider_type="server")
245
+ _task(bundle_dir, [{"id": "env", "type": "deploy_env", "env_id": "crm"}])
246
+
247
+ assert _problems(lambda: dry_run_bundle(bundle_dir, sandbox=sandbox)) == [
248
+ "tasks/t.json: step 'env': deploys env 'crm''s image 'crm-image' " + BY_NAME.format(sandbox=sandbox, id="crm-image")]
249
+
250
+
200
251
  # What a provider can create
201
252
 
202
253