benchflow 0.7.6.dev2266__tar.gz → 0.7.7.dev2305__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 (759) hide show
  1. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/CHANGELOG.md +52 -0
  2. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/PKG-INFO +1 -1
  3. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/pyproject.toml +1 -1
  4. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/install.py +14 -8
  5. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/manifest.py +2 -0
  6. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/registry.py +40 -7
  7. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/contracts/planes.py +15 -2
  8. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rollout/__init__.py +55 -2
  9. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rollout/_setup.py +6 -0
  10. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rollout/task_runtime.py +5 -0
  11. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rollout_planes.py +25 -4
  12. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/_compose.py +1 -0
  13. benchflow-0.7.7.dev2305/src/benchflow/sandbox/_compose_files/docker-compose-net-admin.yaml +4 -0
  14. benchflow-0.7.7.dev2305/src/benchflow/sandbox/_egress_denylist_proxy.py +494 -0
  15. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/daytona_dind.py +2 -0
  16. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/docker.py +8 -1
  17. benchflow-0.7.7.dev2305/src/benchflow/sandbox/egress_denylist.py +332 -0
  18. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/lockdown.py +35 -8
  19. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/providers.py +9 -0
  20. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/config.py +109 -6
  21. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/runtime_capabilities.py +8 -0
  22. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/rubric_checks.py +43 -13
  23. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agent_registry.py +9 -0
  24. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agent_spec.py +8 -0
  25. benchflow-0.7.7.dev2305/tests/test_egress_denylist.py +570 -0
  26. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_eval_source_provenance.py +3 -1
  27. benchflow-0.7.7.dev2305/tests/test_hosted_search_policy.py +769 -0
  28. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_internet_policy.py +4 -2
  29. benchflow-0.7.7.dev2305/tests/test_network_denylist_config.py +305 -0
  30. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_reexport.py +4 -0
  31. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_registry_invariants.py +21 -0
  32. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rollout_planes_contract.py +2 -0
  33. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_task_runtime_primitive.py +7 -1
  34. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_trial_litellm_runtime.py +3 -1
  35. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_verify.py +3 -1
  36. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/.gitignore +0 -0
  37. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/LICENSE +0 -0
  38. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/README.md +0 -0
  39. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/__init__.py +0 -0
  40. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_dotenv.py +0 -0
  41. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_paths.py +0 -0
  42. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_run.py +0 -0
  43. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_types.py +0 -0
  44. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/__init__.py +0 -0
  45. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/benchmark_repos.py +0 -0
  46. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/build_context_stage.py +0 -0
  47. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/config.py +0 -0
  48. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/config_override.py +0 -0
  49. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/content_address.py +0 -0
  50. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/dataset_registry.py +0 -0
  51. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/env_registry.py +0 -0
  52. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/evaluation_results.py +0 -0
  53. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/hf_datasets.py +0 -0
  54. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/json_safe.py +0 -0
  55. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/learner_memory.py +0 -0
  56. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/live_activity.py +0 -0
  57. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/result_metadata.py +0 -0
  58. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/reward_events.py +0 -0
  59. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/scoring.py +0 -0
  60. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/source_provenance.py +0 -0
  61. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/task_authoring/__init__.py +0 -0
  62. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/task_authoring/_evidence_paths.py +0 -0
  63. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/task_authoring/acceptance_evidence.py +0 -0
  64. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/task_authoring/scaffolding.py +0 -0
  65. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/task_authoring/structural_checks.py +0 -0
  66. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/text.py +0 -0
  67. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/_utils/yaml_loader.py +0 -0
  68. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/acp/__init__.py +0 -0
  69. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/acp/client.py +0 -0
  70. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/acp/container_transport.py +0 -0
  71. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/acp/runtime.py +0 -0
  72. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/acp/selection.py +0 -0
  73. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/acp/session.py +0 -0
  74. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/acp/timeout_cleanup.py +0 -0
  75. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/acp/transport.py +0 -0
  76. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/acp/types.py +0 -0
  77. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/acp/watchdog.py +0 -0
  78. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/__init__.py +0 -0
  79. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/_toolathlon.py +0 -0
  80. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/_toolathlon_container.py +0 -0
  81. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/_toolathlon_fake_mail.py +0 -0
  82. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/_toolathlon_poste_users.tsv +0 -0
  83. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/_toolathlon_services.py +0 -0
  84. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/harbor.py +0 -0
  85. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/inbound.py +0 -0
  86. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/inspect_ai.py +0 -0
  87. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/ors.py +0 -0
  88. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/resources/__init__.py +0 -0
  89. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/resources/mcp_atlas_bridge.py +0 -0
  90. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/resources/mcp_atlas_judge.py +0 -0
  91. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/adapters/source.py +0 -0
  92. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agent_router.py +0 -0
  93. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agent_router_guide.py +0 -0
  94. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agent_router_parity.py +0 -0
  95. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agent_router_scaffold.py +0 -0
  96. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/__init__.py +0 -0
  97. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/codex_config.py +0 -0
  98. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/credentials.py +0 -0
  99. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/deepagents_acp_shim.py +0 -0
  100. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/env.py +0 -0
  101. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/errors.py +0 -0
  102. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/harvey_lab_acp_shim.py +0 -0
  103. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/openclaw_acp_shim.py +0 -0
  104. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/pi_acp_launcher.py +0 -0
  105. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/protocol.py +0 -0
  106. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/providers.py +0 -0
  107. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/agents/remote_manifests.py +0 -0
  108. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/branch.py +0 -0
  109. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/__init__.py +0 -0
  110. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/_failure_evidence.py +0 -0
  111. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/_hosted_env.py +0 -0
  112. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/_live_progress.py +0 -0
  113. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/_options.py +0 -0
  114. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/_shared.py +0 -0
  115. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/_traj_tui.py +0 -0
  116. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/_traj_upload_ui.py +0 -0
  117. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/adopt.py +0 -0
  118. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/agent.py +0 -0
  119. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/continue_cmd.py +0 -0
  120. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/environment.py +0 -0
  121. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/eval_artifacts.py +0 -0
  122. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/eval_lift.py +0 -0
  123. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/hub.py +0 -0
  124. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/main.py +0 -0
  125. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/monitor.py +0 -0
  126. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/review.py +0 -0
  127. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/sandbox.py +0 -0
  128. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/skills.py +0 -0
  129. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/tasks.py +0 -0
  130. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/trace_import.py +0 -0
  131. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/train.py +0 -0
  132. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/cli/traj.py +0 -0
  133. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/continue_run/__init__.py +0 -0
  134. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/continue_run/batch.py +0 -0
  135. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/continue_run/orchestrator.py +0 -0
  136. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/continue_run/replay_proxy.py +0 -0
  137. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/continue_run/run_folder.py +0 -0
  138. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/continue_run/sandbox_proxy.py +0 -0
  139. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/contracts/__init__.py +0 -0
  140. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/contracts/user.py +0 -0
  141. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/demo_task/environment/Dockerfile +0 -0
  142. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/demo_task/instruction.md +0 -0
  143. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/demo_task/task.md +0 -0
  144. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/demo_task/task.toml +0 -0
  145. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/demo_task/tests/test.sh +0 -0
  146. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/diagnostics.py +0 -0
  147. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/environment/__init__.py +0 -0
  148. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/environment/_registry/env0@outage.toml +0 -0
  149. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/environment/_registry/env0@prod.toml +0 -0
  150. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/environment/manifest.py +0 -0
  151. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/environment/manifest_env.py +0 -0
  152. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/environment/protocol.py +0 -0
  153. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/environment/readiness.py +0 -0
  154. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/eval_artifacts.py +0 -0
  155. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/eval_lift.py +0 -0
  156. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/eval_plan.py +0 -0
  157. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/eval_sharding.py +0 -0
  158. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/eval_worker.py +0 -0
  159. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/evaluation.py +0 -0
  160. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/experimental/__init__.py +0 -0
  161. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/experimental/mcp/__init__.py +0 -0
  162. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/experimental/mcp/hooks.py +0 -0
  163. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/experimental/mcp/reviewer_server.py +0 -0
  164. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/hosted_env.py +0 -0
  165. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/hub/__init__.py +0 -0
  166. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/hub/harbor_registry.py +0 -0
  167. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/integrations/__init__.py +0 -0
  168. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/integrations/trl/__init__.py +0 -0
  169. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/integrations/trl/spec.py +0 -0
  170. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/learner_skills.py +0 -0
  171. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/learner_store.py +0 -0
  172. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/loop_strategies.py +0 -0
  173. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/loop_sweep.py +0 -0
  174. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/metrics.py +0 -0
  175. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/models.py +0 -0
  176. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/monitor.py +0 -0
  177. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/providers/__init__.py +0 -0
  178. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/providers/litellm_bedrock_patch.py +0 -0
  179. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/providers/litellm_bedrock_preflight.py +0 -0
  180. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/providers/litellm_config.py +0 -0
  181. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/providers/litellm_gemini_passthrough_patch.py +0 -0
  182. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/providers/litellm_logging.py +0 -0
  183. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/providers/litellm_runtime.py +0 -0
  184. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/providers/runtime.py +0 -0
  185. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/publish/__init__.py +0 -0
  186. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/publish/_progress.py +0 -0
  187. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/publish/azure_blob.py +0 -0
  188. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/publish/broker.py +0 -0
  189. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/publish/huggingface.py +0 -0
  190. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/publish/redact.py +0 -0
  191. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/publish/traj_capture.py +0 -0
  192. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/publish/traj_report.py +0 -0
  193. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/py.typed +0 -0
  194. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/review/__init__.py +0 -0
  195. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/review/config.py +0 -0
  196. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/review/default-rubric.json +0 -0
  197. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/review/prompts.py +0 -0
  198. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/review/runner.py +0 -0
  199. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/review/scoring.py +0 -0
  200. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/review/wrapper.py +0 -0
  201. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rewards/README.md +0 -0
  202. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rewards/__init__.py +0 -0
  203. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rewards/builtins.py +0 -0
  204. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rewards/events.py +0 -0
  205. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rewards/file_readers.py +0 -0
  206. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rewards/llm.py +0 -0
  207. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rewards/memory_scorer.py +0 -0
  208. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rewards/node.py +0 -0
  209. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rewards/protocol.py +0 -0
  210. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rewards/rubric.py +0 -0
  211. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rewards/rubric_config.py +0 -0
  212. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rewards/validation.py +0 -0
  213. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rollout/_config.py +0 -0
  214. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rollout/_deadline.py +0 -0
  215. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rollout/_results.py +0 -0
  216. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rollout/_skills.py +0 -0
  217. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rollout/_usage.py +0 -0
  218. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rollout/_user_loop.py +0 -0
  219. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rollout/session_factory_runtime.py +0 -0
  220. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/rollout_branch.py +0 -0
  221. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/runtime.py +0 -0
  222. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/__init__.py +0 -0
  223. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/_base.py +0 -0
  224. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/_cache_reclaim.py +0 -0
  225. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/_compose_files/docker-compose-base.yaml +0 -0
  226. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/_compose_files/docker-compose-build.yaml +0 -0
  227. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/_compose_files/docker-compose-no-network.yaml +0 -0
  228. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/_compose_files/docker-compose-prebuilt.yaml +0 -0
  229. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/_sdk_ops.py +0 -0
  230. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/agentcore.py +0 -0
  231. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/agentcore_builder.py +0 -0
  232. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/agentcore_image.py +0 -0
  233. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/agentcore_provisioning.py +0 -0
  234. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/agentcore_reaper.py +0 -0
  235. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/agentcore_sealed.py +0 -0
  236. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/apple_container.py +0 -0
  237. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/daytona.py +0 -0
  238. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/daytona_pty.py +0 -0
  239. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/daytona_reaper.py +0 -0
  240. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/daytona_strategies.py +0 -0
  241. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/metadata.py +0 -0
  242. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/modal_impl.py +0 -0
  243. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/process/__init__.py +0 -0
  244. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/process/_base.py +0 -0
  245. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/process/agentcore.py +0 -0
  246. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/process/apple.py +0 -0
  247. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/process/daytona.py +0 -0
  248. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/process/docker.py +0 -0
  249. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/protocol.py +0 -0
  250. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/services.py +0 -0
  251. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/setup.py +0 -0
  252. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/snapshot.py +0 -0
  253. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sandbox/user.py +0 -0
  254. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/scenes.py +0 -0
  255. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/sdk.py +0 -0
  256. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/self_gen.py +0 -0
  257. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/skill_eval/__init__.py +0 -0
  258. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/skill_eval/_core.py +0 -0
  259. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/skill_eval/gepa_export.py +0 -0
  260. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/skill_eval/schema.py +0 -0
  261. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/skill_policy.py +0 -0
  262. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/skills.py +0 -0
  263. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/__init__.py +0 -0
  264. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/_document_evidence.py +0 -0
  265. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/_document_normalize.py +0 -0
  266. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/_document_parse.py +0 -0
  267. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/_document_profiles.py +0 -0
  268. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/acceptance_live.py +0 -0
  269. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/acceptance_live_model.py +0 -0
  270. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/acceptance_live_report.py +0 -0
  271. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/acceptance_live_validation.py +0 -0
  272. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/discovery.py +0 -0
  273. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/document.py +0 -0
  274. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/env.py +0 -0
  275. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/export.py +0 -0
  276. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/imports.py +0 -0
  277. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/output_format.py +0 -0
  278. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/package.py +0 -0
  279. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/paths.py +0 -0
  280. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/prompts.py +0 -0
  281. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/runtime_view.py +0 -0
  282. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/task.py +0 -0
  283. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/verifier.py +0 -0
  284. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/verifier_core.py +0 -0
  285. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/verifier_document.py +0 -0
  286. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/verifier_errors.py +0 -0
  287. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/verifier_judge_inputs.py +0 -0
  288. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/verifier_ors_episode.py +0 -0
  289. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/verifier_reward_kit.py +0 -0
  290. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/verifier_scan.py +0 -0
  291. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/task/verifier_script_strategy.py +0 -0
  292. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/templates/__init__.py +0 -0
  293. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/templates/judge.py.tmpl +0 -0
  294. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/templates/test.sh.tmpl +0 -0
  295. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/traces/__init__.py +0 -0
  296. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/traces/huggingface.py +0 -0
  297. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/traces/local.py +0 -0
  298. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/traces/models.py +0 -0
  299. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/traces/parsers.py +0 -0
  300. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/traces/task_gen.py +0 -0
  301. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/training/__init__.py +0 -0
  302. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/training/backends/__init__.py +0 -0
  303. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/training/backends/prime_rl.py +0 -0
  304. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/training/run_manifest.py +0 -0
  305. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/__init__.py +0 -0
  306. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/_capture.py +0 -0
  307. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/_export_common.py +0 -0
  308. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/_llm_capture.py +0 -0
  309. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/call_purpose.py +0 -0
  310. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/export.py +0 -0
  311. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/export_adp.py +0 -0
  312. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/export_atif.py +0 -0
  313. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/export_prime_sft.py +0 -0
  314. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/export_trl_sft.py +0 -0
  315. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/metrics.py +0 -0
  316. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/results.py +0 -0
  317. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/sessions.py +0 -0
  318. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/tree.py +0 -0
  319. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/trl_sft_tokenization.py +0 -0
  320. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/types.py +0 -0
  321. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/__init__.py +0 -0
  322. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/__main__.py +0 -0
  323. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/assets/boot.js +0 -0
  324. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/assets/catalog.js +0 -0
  325. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/assets/detail.js +0 -0
  326. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/assets/fonts/OFL-google-sans-code.txt +0 -0
  327. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/assets/fonts/google-sans-code-400-latin.woff2 +0 -0
  328. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/assets/fonts/google-sans-code-600-latin.woff2 +0 -0
  329. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/assets/template.html +0 -0
  330. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/assets/theme.css +0 -0
  331. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/assets/viewer.css +0 -0
  332. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/assets/viewer.js +0 -0
  333. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/catalog.py +0 -0
  334. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/legacy.py +0 -0
  335. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/models.py +0 -0
  336. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/payload.py +0 -0
  337. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/render.py +0 -0
  338. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/server.py +0 -0
  339. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/trajectories/viewer/sources.py +0 -0
  340. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/src/benchflow/usage_tracking.py +0 -0
  341. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/__init__.py +0 -0
  342. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/acceptance_live_harness.py +0 -0
  343. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/agents/__init__.py +0 -0
  344. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/agents/test_codex_config.py +0 -0
  345. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/agents/test_manifest_dirscan.py +0 -0
  346. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/agents/test_manifest_loader.py +0 -0
  347. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/agents/test_manifest_parity.py +0 -0
  348. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/agents/test_manifest_wiring.py +0 -0
  349. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/agents/test_namespace_shorthand.py +0 -0
  350. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/agents/test_plugin_entry_points.py +0 -0
  351. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/agents/test_protocol.py +0 -0
  352. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/agents/test_remote_manifest_autoload.py +0 -0
  353. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/README.md +0 -0
  354. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/acp_smoke/environment/Dockerfile +0 -0
  355. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/acp_smoke/environment/docker-compose.yaml +0 -0
  356. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/acp_smoke/environment/skills/conformance-writer/SKILL.md +0 -0
  357. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/acp_smoke/instruction.md +0 -0
  358. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/acp_smoke/solution/solve.sh +0 -0
  359. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/acp_smoke/task.md +0 -0
  360. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/acp_smoke/task.toml +0 -0
  361. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/acp_smoke/tests/test.sh +0 -0
  362. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/conformance-results.json +0 -0
  363. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/proof_multi_agent.py +0 -0
  364. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/proof_snapshot.py +0 -0
  365. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/run_conformance.py +0 -0
  366. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conformance/self_gen_smoke_skills/skill-creator/SKILL.md +0 -0
  367. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/conftest.py +0 -0
  368. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/continue_run/__init__.py +0 -0
  369. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/continue_run/_helpers.py +0 -0
  370. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/continue_run/test_batch.py +0 -0
  371. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/continue_run/test_orchestrator.py +0 -0
  372. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/continue_run/test_replay_proxy.py +0 -0
  373. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/continue_run/test_run_folder.py +0 -0
  374. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/environment/__init__.py +0 -0
  375. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/environment/test_chibench_manifest.py +0 -0
  376. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/environment/test_clawsbench_manifest.py +0 -0
  377. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/environment/test_manifest.py +0 -0
  378. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/environment/test_manifest_env.py +0 -0
  379. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/environment/test_protocol.py +0 -0
  380. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/environment/test_readiness.py +0 -0
  381. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/hello-world-task/environment/Dockerfile +0 -0
  382. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/hello-world-task/instruction.md +0 -0
  383. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/hello-world-task/solution/solve.sh +0 -0
  384. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/hello-world-task/task.md +0 -0
  385. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/hello-world-task/task.toml +0 -0
  386. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/hello-world-task/tests/test.sh +0 -0
  387. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/test_claude.sh +0 -0
  388. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/test_codex.sh +0 -0
  389. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/test_codex_custom_provider.sh +0 -0
  390. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/test_gemini.sh +0 -0
  391. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/test_openclaw.sh +0 -0
  392. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/traces/minimal-claude.jsonl +0 -0
  393. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/examples/traces/minimal-opentraces.jsonl +0 -0
  394. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/digest/README.md +0 -0
  395. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/digest/alpha-task/environment/Dockerfile +0 -0
  396. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/digest/alpha-task/instruction.md +0 -0
  397. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/digest/alpha-task/task.toml +0 -0
  398. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/digest/alpha-task/tests/test.sh +0 -0
  399. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/digest/beta-task/data/empty.bin +0 -0
  400. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/digest/beta-task/data/unicode.txt +0 -0
  401. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/digest/beta-task/instruction.md +0 -0
  402. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/digest/beta-task/task.toml +0 -0
  403. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/digest/not-a-task/notes.txt +0 -0
  404. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/mock_acp_agent.py +0 -0
  405. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/mock_acp_agent_interleaved.py +0 -0
  406. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/mock_acp_agent_multi_turn.py +0 -0
  407. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/mock_openai_responses_server.py +0 -0
  408. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/Dockerfile +0 -0
  409. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/data/michigan_stations.txt +0 -0
  410. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/flood-detection/SKILL.md +0 -0
  411. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/nws-flood-thresholds/SKILL.md +0 -0
  412. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/usgs-data-download/SKILL.md +0 -0
  413. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/flood-risk-analysis/instruction.md +0 -0
  414. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/flood-risk-analysis/solution/solve.sh +0 -0
  415. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/flood-risk-analysis/task.toml +0 -0
  416. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test.sh +0 -0
  417. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test_outputs.py +0 -0
  418. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/Dockerfile +0 -0
  419. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/climate.csv +0 -0
  420. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/hydrology.csv +0 -0
  421. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/land_cover.csv +0 -0
  422. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/water_temperature.csv +0 -0
  423. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/contribution-analysis/SKILL.md +0 -0
  424. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/meteorology-driver-classification/SKILL.md +0 -0
  425. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/pca-decomposition/SKILL.md +0 -0
  426. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/trend-analysis/SKILL.md +0 -0
  427. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/instruction.md +0 -0
  428. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/solution/solve.sh +0 -0
  429. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/task.toml +0 -0
  430. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test.sh +0 -0
  431. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test_outputs.py +0 -0
  432. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/manifest.json +0 -0
  433. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/Dockerfile +0 -0
  434. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/r2r_simulator.py +0 -0
  435. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/finite-horizon-lqr/SKILL.md +0 -0
  436. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/integral-action-design/SKILL.md +0 -0
  437. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/mpc-horizon-tuning/SKILL.md +0 -0
  438. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/state-space-linearization/SKILL.md +0 -0
  439. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/system_config.json +0 -0
  440. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/r2r-mpc-control/instruction.md +0 -0
  441. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/r2r-mpc-control/solution/solve.sh +0 -0
  442. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/r2r-mpc-control/task.toml +0 -0
  443. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test.sh +0 -0
  444. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test_outputs.py +0 -0
  445. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/Dockerfile +0 -0
  446. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/generate_training_pcaps.py +0 -0
  447. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/local.rules +0 -0
  448. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/SKILL.md +0 -0
  449. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/scripts/summarize_http_requests.sh +0 -0
  450. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/SKILL.md +0 -0
  451. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/scripts/run_suricata_offline.sh +0 -0
  452. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-rules-basics/SKILL.md +0 -0
  453. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/suricata.yaml +0 -0
  454. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/instruction.md +0 -0
  455. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/solution/solve.sh +0 -0
  456. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/task.toml +0 -0
  457. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test.sh +0 -0
  458. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test_outputs.py +0 -0
  459. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/Dockerfile +0 -0
  460. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syz-extract-constants/SKILL.md +0 -0
  461. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzkaller-build-loop/SKILL.md +0 -0
  462. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzlang-ioctl-basics/SKILL.md +0 -0
  463. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/instruction.md +0 -0
  464. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/solution/solve.sh +0 -0
  465. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/task.toml +0 -0
  466. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test.sh +0 -0
  467. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test_outputs.py +0 -0
  468. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/_consistency.py +0 -0
  469. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/agent_judge.py +0 -0
  470. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/check_adapter_evidence.py +0 -0
  471. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/check_hosted_env_evidence.py +0 -0
  472. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/check_results.py +0 -0
  473. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/check_skillsbench_harbor_parity.py +0 -0
  474. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/check_trace_to_task_evidence.py +0 -0
  475. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/configs/claude-agent-acp.yaml +0 -0
  476. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/configs/codex-acp.yaml +0 -0
  477. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/configs/gemini.yaml +0 -0
  478. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/configs/harvey-lab-harness.yaml +0 -0
  479. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/configs/mimo.yaml +0 -0
  480. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/configs/openclaw.yaml +0 -0
  481. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/configs/opencode.yaml +0 -0
  482. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/configs/openhands.yaml +0 -0
  483. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/configs/pi-acp.yaml +0 -0
  484. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/deepagents_harness.py +0 -0
  485. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/run.sh +0 -0
  486. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/run_suite.py +0 -0
  487. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/scenarios.py +0 -0
  488. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/integration/suites/release.yaml +0 -0
  489. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_acceptance_evidence.py +0 -0
  490. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_acceptance_live.py +0 -0
  491. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_acceptance_live_execution.py +0 -0
  492. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_acp.py +0 -0
  493. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_acp_capability_advertising.py +0 -0
  494. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_acp_mcp_servers.py +0 -0
  495. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_acp_model_config_dispatch.py +0 -0
  496. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_acp_pinned_protocol_guard.py +0 -0
  497. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_acp_setup_failure_propagation.py +0 -0
  498. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_acp_timeout_evidence.py +0 -0
  499. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_adapter_scripts.py +0 -0
  500. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_adapters.py +0 -0
  501. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agent_cli.py +0 -0
  502. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agent_env_resolution.py +0 -0
  503. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agent_gemini_defaults.py +0 -0
  504. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agent_idle_timeout_cli.py +0 -0
  505. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agent_model_decouple.py +0 -0
  506. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agent_router.py +0 -0
  507. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agent_router_cli_e2e.py +0 -0
  508. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agent_router_scaffold.py +0 -0
  509. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agent_setup.py +0 -0
  510. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agentcore_builder.py +0 -0
  511. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agentcore_parallel.py +0 -0
  512. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agentcore_reaper.py +0 -0
  513. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agentcore_sandbox.py +0 -0
  514. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_agentcore_transport.py +0 -0
  515. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_api_error_capture.py +0 -0
  516. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_apple_container_sandbox.py +0 -0
  517. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_bare_model_provider.py +0 -0
  518. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_base_install_imports.py +0 -0
  519. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_bedrock_thinking.py +0 -0
  520. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_benchflow_experiment_review_validator.py +0 -0
  521. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_benchmark_repos_resolve_repo_path.py +0 -0
  522. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_branch.py +0 -0
  523. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_build_context_stage.py +0 -0
  524. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_build_review_pack.py +0 -0
  525. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_capture_trajectory.py +0 -0
  526. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_check_skillsbench_harbor_parity.py +0 -0
  527. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_clawsbench_slice.py +0 -0
  528. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_cli_adopt_aliases.py +0 -0
  529. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_cli_arg_validation.py +0 -0
  530. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_cli_daytona.py +0 -0
  531. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_cli_docs_drift.py +0 -0
  532. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_cli_edge_case_hardening.py +0 -0
  533. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_cli_hub_env.py +0 -0
  534. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_cli_live_progress.py +0 -0
  535. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_cli_misc.py +0 -0
  536. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_codex_review.py +0 -0
  537. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_codex_self_write_auth.py +0 -0
  538. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_config_override.py +0 -0
  539. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_config_redaction.py +0 -0
  540. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_connect_as_env.py +0 -0
  541. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_console_error_truncation.py +0 -0
  542. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_console_progress.py +0 -0
  543. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_continuallearningbench_adapter.py +0 -0
  544. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_dataset_registry.py +0 -0
  545. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_daytona_command_polling.py +0 -0
  546. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_daytona_dind_compose_up.py +0 -0
  547. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_daytona_download.py +0 -0
  548. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_daytona_litellm_runtime.py +0 -0
  549. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_daytona_poll_deadline.py +0 -0
  550. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_daytona_reap.py +0 -0
  551. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_deepagents_agent.py +0 -0
  552. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_diagnostics.py +0 -0
  553. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_docker_prune_scoping.py +0 -0
  554. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_docker_uploads.py +0 -0
  555. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_docs_examples.py +0 -0
  556. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_eng50_capabilities.py +0 -0
  557. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_env_registry.py +0 -0
  558. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_env_setup.py +0 -0
  559. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_environment_manifest_controls.py +0 -0
  560. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_eval_artifact_cli.py +0 -0
  561. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_eval_filters_applied.py +0 -0
  562. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_eval_lift.py +0 -0
  563. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_eval_sharding.py +0 -0
  564. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_eval_single_task_summary.py +0 -0
  565. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_eval_worker_retry.py +0 -0
  566. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_eval_zero_task_guard.py +0 -0
  567. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_evaluation_environment_manifest.py +0 -0
  568. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_exclude_tasks.py +0 -0
  569. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_filter_credentialed_cells.py +0 -0
  570. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_harvey_lab_shim.py +0 -0
  571. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_hilbench_adapter.py +0 -0
  572. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_hosted_env.py +0 -0
  573. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_hosted_env_rollout_contract.py +0 -0
  574. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_hub_harbor_registry.py +0 -0
  575. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_inbound_adapter_manifest.py +0 -0
  576. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_inbound_adapters.py +0 -0
  577. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_integration_agent_judge.py +0 -0
  578. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_integration_check_results.py +0 -0
  579. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_integration_consistency.py +0 -0
  580. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_integration_matrix.py +0 -0
  581. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_integration_provider_selection.py +0 -0
  582. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_integration_run_suite.py +0 -0
  583. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_integration_suite.py +0 -0
  584. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_job.py +0 -0
  585. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_job_sequential_shared.py +0 -0
  586. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_job_sequential_shared_resume.py +0 -0
  587. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_judge_robustness.py +0 -0
  588. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_judge_symlink_ingestion.py +0 -0
  589. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_learner_skills.py +0 -0
  590. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_learner_skills_traversal.py +0 -0
  591. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_learner_store.py +0 -0
  592. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_learner_store_persistence.py +0 -0
  593. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_litellm_config.py +0 -0
  594. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_litellm_gemini_passthrough_patch.py +0 -0
  595. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_litellm_hardening.py +0 -0
  596. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_litellm_logging.py +0 -0
  597. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_litellm_model_via_env_generic.py +0 -0
  598. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_litellm_reasoning_passthrough.py +0 -0
  599. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_litellm_runtime.py +0 -0
  600. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_litellm_smoke.py +0 -0
  601. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_live_llm_trajectory.py +0 -0
  602. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_llm_judge.py +0 -0
  603. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_llm_judge_event_tags.py +0 -0
  604. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_llm_judge_verifier.py +0 -0
  605. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_loop_strategies.py +0 -0
  606. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_loop_summary.py +0 -0
  607. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_loop_sweep.py +0 -0
  608. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_memory_scorer.py +0 -0
  609. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_metrics.py +0 -0
  610. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_mle_bench_adapter.py +0 -0
  611. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_mock_openai_responses_server.py +0 -0
  612. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_monitor_scaffold.py +0 -0
  613. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_native_acp_usage.py +0 -0
  614. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_no_cross_provider_fallback.py +0 -0
  615. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_notification_order_real.py +0 -0
  616. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_opencode_family_proxy_tracking.py +0 -0
  617. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_oracle.py +0 -0
  618. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_oracle_chokepoint.py +0 -0
  619. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_paths_safe.py +0 -0
  620. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_paths_symlink_helpers.py +0 -0
  621. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_pi_acp_launcher.py +0 -0
  622. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_pi_acp_proxy_routing.py +0 -0
  623. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_process.py +0 -0
  624. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_project_skills_layout.py +0 -0
  625. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_provider_auth_detection.py +0 -0
  626. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_providers.py +0 -0
  627. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_publish_azure_blob.py +0 -0
  628. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_publish_huggingface.py +0 -0
  629. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_release_hardening_r5.py +0 -0
  630. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_release_version.py +0 -0
  631. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_release_workflow_wiring.py +0 -0
  632. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_resolve_env_helpers.py +0 -0
  633. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_review_boundaries.py +0 -0
  634. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_review_rubric.py +0 -0
  635. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_review_runtime.py +0 -0
  636. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_reward_lenient.py +0 -0
  637. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_reward_node.py +0 -0
  638. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_reward_range.py +0 -0
  639. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_reward_unified_contract.py +0 -0
  640. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rewards.py +0 -0
  641. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rewards_jsonl.py +0 -0
  642. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rollout_architecture.py +0 -0
  643. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rollout_branch.py +0 -0
  644. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rollout_config_path_coercion.py +0 -0
  645. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rollout_environment.py +0 -0
  646. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rollout_hard_deadline.py +0 -0
  647. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rollout_import_no_side_effects.py +0 -0
  648. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rollout_on_ask_user_wiring.py +0 -0
  649. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rollout_probe_sandbox_health.py +0 -0
  650. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rollout_session_factory_dispatch.py +0 -0
  651. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rollout_setup_commands.py +0 -0
  652. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rollout_upload.py +0 -0
  653. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rubric_checks.py +0 -0
  654. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_rubric_config.py +0 -0
  655. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_runtime.py +0 -0
  656. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_runtime_capabilities.py +0 -0
  657. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_runtime_config_wired.py +0 -0
  658. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_runtime_live_sandbox.py +0 -0
  659. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox.py +0 -0
  660. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox_exec_secret_handling.py +0 -0
  661. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox_hardening.py +0 -0
  662. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox_isolation_copy_traversal.py +0 -0
  663. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox_live_process.py +0 -0
  664. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox_multi_service.py +0 -0
  665. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox_prebuilt_validation.py +0 -0
  666. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox_protocol.py +0 -0
  667. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox_provider_registry_drift.py +0 -0
  668. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox_setup.py +0 -0
  669. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox_snapshot_contract.py +0 -0
  670. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox_upload_symlink.py +0 -0
  671. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sandbox_verifier_workspace.py +0 -0
  672. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_scene.py +0 -0
  673. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_scene_outbox_trial.py +0 -0
  674. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_scene_parallel_group.py +0 -0
  675. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_scene_result_aggregation.py +0 -0
  676. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_scoring.py +0 -0
  677. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sdk_internals.py +0 -0
  678. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sdk_lockdown.py +0 -0
  679. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sdk_run_alias.py +0 -0
  680. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_sealed_channel_container.py +0 -0
  681. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_self_gen_cli.py +0 -0
  682. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_self_gen_export_error_channel.py +0 -0
  683. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_self_gen_export_failures.py +0 -0
  684. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_self_gen_orchestration.py +0 -0
  685. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_session_factory_runtime.py +0 -0
  686. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_session_request_permission_dispatch.py +0 -0
  687. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_skill_eval.py +0 -0
  688. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_skill_eval_dryrun.py +0 -0
  689. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_skill_eval_integration.py +0 -0
  690. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_skill_eval_sweep.py +0 -0
  691. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_skill_eval_traversal.py +0 -0
  692. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_skill_invocation_artifacts.py +0 -0
  693. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_skill_policy.py +0 -0
  694. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_skills.py +0 -0
  695. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_skills_dir_agent_home_link.py +0 -0
  696. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_skillsbench_conversion_conformance.py +0 -0
  697. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_skillsbench_harbor_run_suite.py +0 -0
  698. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_smoke.py +0 -0
  699. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_smoke_wiring.py +0 -0
  700. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_source_adapters.py +0 -0
  701. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_subscription_auth.py +0 -0
  702. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_task_check_eval_consistency.py +0 -0
  703. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_task_config.py +0 -0
  704. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_task_digest.py +0 -0
  705. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_task_document.py +0 -0
  706. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_task_download.py +0 -0
  707. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_task_export.py +0 -0
  708. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_task_output_format.py +0 -0
  709. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_task_package.py +0 -0
  710. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_tasks.py +0 -0
  711. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_token_usage_normalization.py +0 -0
  712. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_trace_import_cli.py +0 -0
  713. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_trace_task_gen_traversal.py +0 -0
  714. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_trace_to_task_evidence.py +0 -0
  715. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_traces_huggingface.py +0 -0
  716. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_traces_parsers.py +0 -0
  717. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_traces_task_gen.py +0 -0
  718. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_train_cli.py +0 -0
  719. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_train_mode_artifact_emission.py +0 -0
  720. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_train_trl_cli.py +0 -0
  721. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_traj_report.py +0 -0
  722. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_traj_staging_phases.py +0 -0
  723. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_traj_tui.py +0 -0
  724. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_traj_upload_cli.py +0 -0
  725. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_traj_upload_skill.py +0 -0
  726. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_traj_workspace.py +0 -0
  727. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_trajectory_integration.py +0 -0
  728. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_trajectory_streaming.py +0 -0
  729. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_trajectory_upload_layout.py +0 -0
  730. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_trajectory_upload_service.py +0 -0
  731. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_trial_agent_timeout_verify.py +0 -0
  732. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_trial_install_agent_timeout.py +0 -0
  733. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_trl_integration.py +0 -0
  734. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_usage_litellm.py +0 -0
  735. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_usage_required.py +0 -0
  736. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_usage_tracking.py +0 -0
  737. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_user.py +0 -0
  738. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_v06_guard_ports.py +0 -0
  739. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_verifier_document.py +0 -0
  740. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_verifier_multi_container.py +0 -0
  741. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_verifier_output.py +0 -0
  742. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_verifier_output_freshness.py +0 -0
  743. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_verifier_strategies.py +0 -0
  744. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_verifier_wedge_retry.py +0 -0
  745. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_viewer_confirm.py +0 -0
  746. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_workflow_action_pinning.py +0 -0
  747. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/test_yaml_config.py +0 -0
  748. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/trajectories/__init__.py +0 -0
  749. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/trajectories/test_export.py +0 -0
  750. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/trajectories/test_export_adp.py +0 -0
  751. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/trajectories/test_export_atif.py +0 -0
  752. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/trajectories/test_export_common.py +0 -0
  753. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/trajectories/test_export_nan_handling.py +0 -0
  754. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/trajectories/test_export_prime_sft.py +0 -0
  755. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/trajectories/test_redaction.py +0 -0
  756. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/trajectories/test_step_granularity.py +0 -0
  757. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/trajectories/test_tree.py +0 -0
  758. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/trajectories/test_viewer_acp_renderer.py +0 -0
  759. {benchflow-0.7.6.dev2266 → benchflow-0.7.7.dev2305}/tests/trajectories/test_viewer_browser.py +0 -0
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ### Added
6
+ - **`network_mode: denylist` blocks a list of URLs and hosts for the agent on
7
+ Docker and Daytona.** The task keeps internet access; `blocked_urls` and
8
+ `blocked_hosts` are enforced by a root-owned loopback proxy behind the
9
+ sandbox-user firewall, hosted search tools are switched off per harness,
10
+ and every refused request lands in `trajectory/egress_denylist.jsonl`.
11
+ Other backends refuse the mode at preflight. (#1113)
12
+
13
+ ## 0.7.6 — 2026-09-04
14
+
5
15
  ### Added
6
16
  - **ACP rollout directories render as an interactive reviewer page.**
7
17
  `bench eval view <rollout>` now assembles a JSON payload (normalized
@@ -42,6 +52,48 @@
42
52
  timestamps.** Steps gain a `+m:ss` offset chip and tool calls a duration
43
53
  chip whenever events carry `ts` / `started_at` / `finished_at` fields;
44
54
  with today's captures (which carry none) nothing changes visually.
55
+ - **Z.ai Coding Plan routing.** Coding Plan subscriptions route through the
56
+ provider layer, with validated generation parameters forwarded and explicit
57
+ provider endpoints preserved by the LiteLLM proxy. (#1074)
58
+ - **`bench eval run` publishes job artifacts and eval results.**
59
+ `--publish-bucket` syncs a job directory to a HuggingFace storage bucket (an
60
+ alternative to `--publish-hf`'s dataset-repo upload), and
61
+ `--eval-results-model/-dataset/-task` opens a community eval-results PR
62
+ (`.eval_results/*.yaml`) on a model's HF repo, scored from the run's mean
63
+ reward. (#1035)
64
+
65
+ ### Fixed
66
+
67
+ - **`claude-fable-5-1` can run: the `claude-agent-acp` pin moves 0.40.0 to
68
+ 0.73.0.** The old pin bundled `@anthropic-ai/claude-agent-sdk` 0.3.160, and
69
+ the model rejects Claude Code older than 2.1.251 with
70
+ `claude_code_version_too_old` (HTTP 400) — so every rollout failed on its
71
+ first API call. The new pin bundles sdk 0.3.257, and the `set_config_option`
72
+ `"model"` / `"effort"` wiring is re-verified against it by
73
+ `tests/test_acp_pinned_protocol_guard.py`. (#1086)
74
+ - **`codex-acp` dispatch modernized.** The shim pin moves to 1.6.0 and
75
+ reasoning effort travels inside the model id (`modelId[effort]`) through
76
+ `session/set_model`, rather than a config option the shim rejects. (#1044)
77
+ - **ACP usage and terminal evidence survive an agent timeout**, instead of
78
+ being dropped with the timed-out turn. (#1080)
79
+ - **A pending tool call can no longer defer the idle watchdog without
80
+ bound** — the deferral is capped. (#1066)
81
+ - **`bench eval` resume re-runs infra-retryable verifier-errored tasks**
82
+ rather than treating the infrastructure failure as a settled result. (#1063)
83
+ - **Sandbox hardening execs draw on the verifier-setup budget**, so hardening
84
+ no longer competes with the agent's own time. (#1062)
85
+ - **`--trials > 1` without `--matrix` is rejected up front.** (#1064)
86
+ - **Healthy native ACP subscription results are preserved.** (#1049)
87
+ - **The agent judge parses native edit targets.** (#1069)
88
+ - **Non-dict rewards no longer break completed-outcome classification.** (#1054)
89
+ - **Codex honors proxy-owned model selection.** (#1076)
90
+ - **Gemini routing corrections.** ACP model ids fixed and wrapped ids
91
+ normalized, Gemma routing supported with pass-through usage captured, every
92
+ Google key alias routed through the proxy, Google Gemini gateway routes
93
+ normalized, and headless runs trust the sandbox workspace.
94
+ - **LiteLLM provisions the Vertex sandbox runtime.** (#985)
95
+ - **OpenClaw caps supported model output tokens.**
96
+ - **RestrictedPython updated to 8.3.**
45
97
 
46
98
  ## 0.7.5 — 2026-08-19
47
99
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: benchflow
3
- Version: 0.7.6.dev2266
3
+ Version: 0.7.7.dev2305
4
4
  Summary: Multi-turn agent benchmarking with ACP — run any agent, any model, any provider.
5
5
  Project-URL: Homepage, https://github.com/benchflow-ai/benchflow
6
6
  Project-URL: Repository, https://github.com/benchflow-ai/benchflow
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "benchflow"
3
- version = "0.7.6.dev2266"
3
+ version = "0.7.7.dev2305"
4
4
  description = "Multi-turn agent benchmarking with ACP — run any agent, any model, any provider."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -99,7 +99,7 @@ def _owner_from_home(home: str) -> str | None:
99
99
 
100
100
 
101
101
  def _policy_home_dirs(agent: str, agent_cfg: AgentConfig) -> list[str]:
102
- """Agent home dirs a no-web setup command may create."""
102
+ """Agent home dirs a web-policy setup command may create."""
103
103
  dirs = set(agent_cfg.home_dirs)
104
104
  for owned_path in agent_cfg.disallow_web_tools_owned_paths:
105
105
  if not owned_path.startswith("$HOME/"):
@@ -265,15 +265,21 @@ async def apply_web_tool_policy(
265
265
  home: str,
266
266
  *,
267
267
  disallow: bool,
268
+ disallow_hosted_search: bool = False,
268
269
  ) -> None:
269
- """Apply an agent-specific hard web-tool disable in the agent home."""
270
- if not disallow or not agent_cfg or not agent_cfg.disallow_web_tools_setup_cmd:
270
+ """Apply the agent's no-web or hosted-search-off setup command in the agent home."""
271
+ if not agent_cfg:
272
+ return
273
+ if disallow:
274
+ policy, setup_cmd = "no-web", agent_cfg.disallow_web_tools_setup_cmd
275
+ elif disallow_hosted_search:
276
+ policy, setup_cmd = "hosted-search", agent_cfg.disallow_hosted_search_setup_cmd
277
+ else:
278
+ return
279
+ if not setup_cmd:
271
280
  return
272
281
 
273
- cmd = (
274
- f"export BENCHFLOW_AGENT_HOME={shlex.quote(home)}; "
275
- f"{agent_cfg.disallow_web_tools_setup_cmd}"
276
- )
282
+ cmd = f"export BENCHFLOW_AGENT_HOME={shlex.quote(home)}; {setup_cmd}"
277
283
  owner = _owner_from_home(home)
278
284
  if owner:
279
285
  q_owner = shlex.quote(owner)
@@ -296,7 +302,7 @@ async def apply_web_tool_policy(
296
302
  if stderr:
297
303
  details.append(f"stderr: {stderr}")
298
304
  raise RuntimeError(
299
- f"Failed to apply no-web policy for {agent}: {'; '.join(details)}"
305
+ f"Failed to apply {policy} policy for {agent}: {'; '.join(details)}"
300
306
  )
301
307
 
302
308
 
@@ -89,6 +89,8 @@ _SHIM_ONLY = frozenset(
89
89
  "disallow_web_tools_setup_cmd",
90
90
  "disallow_web_tools_owned_paths",
91
91
  "disallow_web_tools_launch_suffix",
92
+ "disallow_hosted_search_setup_cmd",
93
+ "disallow_hosted_search_launch_suffix",
92
94
  "task_mcp_transport",
93
95
  "task_mcp_config_path",
94
96
  }
@@ -502,6 +502,12 @@ class AgentConfig:
502
502
  # String appended to launch_cmd when BenchFlow's no-web policy is active.
503
503
  # Use for agents whose supported toggle is a launch/config override.
504
504
  disallow_web_tools_launch_suffix: str = ""
505
+ # Shell snippet that switches off hosted (provider-side) search tools when
506
+ # the denylist egress policy is active; local fetch tools stay on because
507
+ # they go through the egress proxy. Reuses disallow_web_tools_owned_paths.
508
+ disallow_hosted_search_setup_cmd: str = ""
509
+ # String appended to launch_cmd when the denylist egress policy is active.
510
+ disallow_hosted_search_launch_suffix: str = ""
505
511
  # How task-declared MCP servers are delivered to the agent:
506
512
  # "acp" sends them in session/new; "native-config" writes an agent-specific
507
513
  # config file before launch (for agents whose ACP server drops/reformats
@@ -511,6 +517,15 @@ class AgentConfig:
511
517
  task_mcp_config_path: str = ""
512
518
 
513
519
 
520
+ _GEMINI_EXCLUDE_WEB_TOOLS_CMD = _json_settings_merge(
521
+ "$BENCHFLOW_AGENT_HOME/.gemini/settings.json",
522
+ 'd.setdefault("tools",{}).setdefault("exclude",[]);'
523
+ '[d["tools"]["exclude"].append(t) for t in '
524
+ '["google_web_search","web_fetch"] '
525
+ 'if t not in d["tools"]["exclude"]]',
526
+ )
527
+
528
+
514
529
  # Agent registry — all supported agents
515
530
  AGENTS: dict[str, AgentConfig] = {
516
531
  "claude-agent-acp": AgentConfig(
@@ -552,6 +567,12 @@ AGENTS: dict[str, AgentConfig] = {
552
567
  'if t not in d["permissions"]["deny"]]',
553
568
  ),
554
569
  disallow_web_tools_owned_paths=["$HOME/.claude"],
570
+ disallow_hosted_search_setup_cmd=_json_settings_merge(
571
+ "$BENCHFLOW_AGENT_HOME/.claude/settings.json",
572
+ 'd.setdefault("permissions",{}).setdefault("deny",[]);'
573
+ '[d["permissions"]["deny"].append(t) for t in ["WebSearch"] '
574
+ 'if t not in d["permissions"]["deny"]]',
575
+ ),
555
576
  supports_acp_set_model=False,
556
577
  acp_model_config_id="model",
557
578
  acp_effort_config_id="effort",
@@ -650,6 +671,7 @@ AGENTS: dict[str, AgentConfig] = {
650
671
  ],
651
672
  ),
652
673
  disallow_web_tools_launch_suffix=" -c tools.web_search=false",
674
+ disallow_hosted_search_launch_suffix=" -c tools.web_search=false",
653
675
  ),
654
676
  "gemini": AgentConfig(
655
677
  name="gemini",
@@ -694,14 +716,11 @@ AGENTS: dict[str, AgentConfig] = {
694
716
  ),
695
717
  ],
696
718
  ),
697
- disallow_web_tools_setup_cmd=_json_settings_merge(
698
- "$BENCHFLOW_AGENT_HOME/.gemini/settings.json",
699
- 'd.setdefault("tools",{}).setdefault("exclude",[]);'
700
- '[d["tools"]["exclude"].append(t) for t in '
701
- '["google_web_search","web_fetch"] '
702
- 'if t not in d["tools"]["exclude"]]',
703
- ),
719
+ disallow_web_tools_setup_cmd=_GEMINI_EXCLUDE_WEB_TOOLS_CMD,
704
720
  disallow_web_tools_owned_paths=["$HOME/.gemini"],
721
+ # web_fetch tries the hosted urlContext path before any local fetch, so
722
+ # the egress proxy cannot filter it; the denylist excludes both tools.
723
+ disallow_hosted_search_setup_cmd=_GEMINI_EXCLUDE_WEB_TOOLS_CMD,
705
724
  ),
706
725
  "opencode": AgentConfig(
707
726
  name="opencode",
@@ -730,6 +749,10 @@ AGENTS: dict[str, AgentConfig] = {
730
749
  'd.setdefault("tools",{})["webfetch"]=False',
731
750
  ),
732
751
  disallow_web_tools_owned_paths=["$HOME/.config/opencode"],
752
+ disallow_hosted_search_setup_cmd=_json_settings_merge(
753
+ "$BENCHFLOW_AGENT_HOME/.config/opencode/opencode.json",
754
+ 'd.setdefault("tools",{})["websearch"]=False',
755
+ ),
733
756
  ),
734
757
  "mimo": AgentConfig(
735
758
  name="mimo",
@@ -779,6 +802,10 @@ AGENTS: dict[str, AgentConfig] = {
779
802
  'd.setdefault("tools",{})["webfetch"]=False',
780
803
  ),
781
804
  disallow_web_tools_owned_paths=["$HOME/.config/mimocode"],
805
+ disallow_hosted_search_setup_cmd=_json_settings_merge(
806
+ "$BENCHFLOW_AGENT_HOME/.config/mimocode/mimocode.json",
807
+ 'd.setdefault("tools",{})["websearch"]=False',
808
+ ),
782
809
  ),
783
810
  "harvey-lab-harness": AgentConfig(
784
811
  name="harvey-lab-harness",
@@ -1183,6 +1210,8 @@ def _acpx_wrap(config: AgentConfig) -> AgentConfig:
1183
1210
  disallow_web_tools_setup_cmd=config.disallow_web_tools_setup_cmd,
1184
1211
  disallow_web_tools_owned_paths=config.disallow_web_tools_owned_paths,
1185
1212
  disallow_web_tools_launch_suffix=config.disallow_web_tools_launch_suffix,
1213
+ disallow_hosted_search_setup_cmd=config.disallow_hosted_search_setup_cmd,
1214
+ disallow_hosted_search_launch_suffix=config.disallow_hosted_search_launch_suffix,
1186
1215
  task_mcp_transport=config.task_mcp_transport,
1187
1216
  task_mcp_config_path=config.task_mcp_config_path,
1188
1217
  )
@@ -1377,6 +1406,8 @@ def register_agent(
1377
1406
  disallow_web_tools_setup_cmd: str = "",
1378
1407
  disallow_web_tools_owned_paths: list[str] | None = None,
1379
1408
  disallow_web_tools_launch_suffix: str = "",
1409
+ disallow_hosted_search_setup_cmd: str = "",
1410
+ disallow_hosted_search_launch_suffix: str = "",
1380
1411
  ) -> AgentConfig:
1381
1412
  """Register a custom agent at runtime.
1382
1413
 
@@ -1416,6 +1447,8 @@ def register_agent(
1416
1447
  disallow_web_tools_setup_cmd=disallow_web_tools_setup_cmd,
1417
1448
  disallow_web_tools_owned_paths=disallow_web_tools_owned_paths or [],
1418
1449
  disallow_web_tools_launch_suffix=disallow_web_tools_launch_suffix,
1450
+ disallow_hosted_search_setup_cmd=disallow_hosted_search_setup_cmd,
1451
+ disallow_hosted_search_launch_suffix=disallow_hosted_search_launch_suffix,
1419
1452
  )
1420
1453
  AGENTS[name] = config
1421
1454
  AGENT_INSTALLERS[name] = install_cmd
@@ -8,10 +8,13 @@ the composition edge so the kernel does not import those concrete modules.
8
8
  from __future__ import annotations
9
9
 
10
10
  from pathlib import Path
11
- from typing import Any, Protocol, runtime_checkable
11
+ from typing import TYPE_CHECKING, Any, Protocol, runtime_checkable
12
12
 
13
13
  from benchflow.environment.manifest import EnvironmentManifest
14
14
 
15
+ if TYPE_CHECKING:
16
+ from benchflow.sandbox.egress_denylist import EgressDenylist
17
+
15
18
 
16
19
  class LiveUsageGateway(Protocol):
17
20
  """A provider gateway process that reports live cumulative token usage.
@@ -33,7 +36,13 @@ class LiveUsageGateway(Protocol):
33
36
  class RolloutPlanes(Protocol):
34
37
  """Concrete-plane operations the rollout kernel needs."""
35
38
 
36
- def agent_launch(self, agent: str, *, disallow_web_tools: bool) -> str: ...
39
+ def agent_launch(
40
+ self,
41
+ agent: str,
42
+ *,
43
+ disallow_web_tools: bool,
44
+ disallow_hosted_search: bool = False,
45
+ ) -> str: ...
37
46
  def agent_config(self, agent: str) -> Any: ...
38
47
 
39
48
  def resolve_agent_env(
@@ -102,6 +111,10 @@ class RolloutPlanes(Protocol):
102
111
  async def link_skill_paths(self, *args: Any, **kwargs: Any) -> None: ...
103
112
  async def ensure_litellm_runtime(self, *args: Any, **kwargs: Any) -> Any: ...
104
113
  async def stop_provider_runtime(self, runtime: Any) -> None: ...
114
+ async def start_egress_denylist(
115
+ self, env: Any, sandbox_user: str | None, denylist: EgressDenylist
116
+ ) -> None: ...
117
+ async def stop_egress_denylist(self, env: Any, rollout_dir: Path) -> None: ...
105
118
  def extract_usage(self, runtime: Any) -> dict[str, Any]: ...
106
119
  async def connect_acp(self, *args: Any, **kwargs: Any) -> Any: ...
107
120
  async def execute_prompts(self, *args: Any, **kwargs: Any) -> Any: ...
@@ -149,6 +149,7 @@ from benchflow.rollout._setup import _start_env_and_upload as _start_env_and_upl
149
149
  from benchflow.rollout._setup import (
150
150
  _task_disallows_internet as _task_disallows_internet,
151
151
  )
152
+ from benchflow.rollout._setup import _task_egress_denylist as _task_egress_denylist
152
153
  from benchflow.rollout._setup import _verify_rollout as _verify_rollout
153
154
  from benchflow.rollout._skills import (
154
155
  _resolve_skill_creator_root as _resolve_skill_creator_root,
@@ -197,6 +198,7 @@ from benchflow.rollout.task_runtime import TaskRuntimeConfig as TaskRuntimeConfi
197
198
  from benchflow.rollout.task_runtime import TaskRuntimeResult as TaskRuntimeResult
198
199
  from benchflow.rollout_branch import ChildRunner
199
200
  from benchflow.rollout_branch import branch as _branch_engine
201
+ from benchflow.sandbox.egress_denylist import EgressDenylist, denylist_agent_env
200
202
  from benchflow.sandbox.metadata import persist_sandbox_info
201
203
  from benchflow.scenes import compile_scenes_to_steps
202
204
  from benchflow.scenes import scene_step_prompt as scene_step_prompt
@@ -658,6 +660,8 @@ class Rollout:
658
660
  self._timing: dict[str, float] = {}
659
661
  self._effective_locked: list[str] = []
660
662
  self._disallow_web_tools: bool = False
663
+ self._egress_denylist: EgressDenylist | None = None
664
+ self._disallow_hosted_search: bool = False
661
665
  self._effective_skills_dir: Path | None = None
662
666
  self._effective_skills_sandbox_dir: str | None = None
663
667
  # Task dir actually deployed: a temp copy (self._task_tmp) when
@@ -952,6 +956,14 @@ class Rollout:
952
956
  self._disallow_web_tools = (
953
957
  _task_disallows_internet(self._task) or cfg.self_gen_no_internet
954
958
  ) and cfg.primary_agent != "oracle"
959
+ self._egress_denylist = (
960
+ None
961
+ if self._disallow_web_tools or cfg.primary_agent == "oracle"
962
+ else _task_egress_denylist(self._task)
963
+ )
964
+ if self._egress_denylist is not None and not cfg.sandbox_user:
965
+ raise ValueError("network_mode='denylist' requires a sandbox_user")
966
+ self._disallow_hosted_search = self._egress_denylist is not None
955
967
  self._agent_env = _apply_web_policy(
956
968
  self._planes.resolve_agent_env(
957
969
  cfg.primary_agent, cfg.primary_model, cfg.agent_env
@@ -973,6 +985,7 @@ class Rollout:
973
985
  self._agent_launch = self._planes.agent_launch(
974
986
  cfg.primary_agent,
975
987
  disallow_web_tools=self._disallow_web_tools,
988
+ disallow_hosted_search=self._disallow_hosted_search,
976
989
  )
977
990
 
978
991
  # Copy task dir to temp when Dockerfile mutations are needed
@@ -1231,6 +1244,7 @@ class Rollout:
1231
1244
  self._agent_cfg,
1232
1245
  cred_home,
1233
1246
  disallow=self._disallow_web_tools,
1247
+ disallow_hosted_search=self._disallow_hosted_search,
1234
1248
  )
1235
1249
  await self._planes.snapshot_build_config(self._env, workspace=self._agent_cwd)
1236
1250
  await self._planes.seed_verifier_workspace(
@@ -1274,11 +1288,18 @@ class Rollout:
1274
1288
  return cfg.session_factory
1275
1289
  return None
1276
1290
 
1291
+ async def _start_egress_denylist(self, denylist: EgressDenylist) -> None:
1292
+ """(Re)start the egress proxy before an ACP connection; a restored sandbox has none running."""
1293
+ await self._planes.start_egress_denylist(
1294
+ self._env, self._config.sandbox_user, denylist
1295
+ )
1296
+
1277
1297
  async def connect(self) -> None:
1278
1298
  """Open an ACP connection to the agent. Can be called multiple times."""
1279
1299
  cfg = self._config
1280
1300
  rollout_dir = self._require_rollout_dir()
1281
1301
  t0 = datetime.now()
1302
+ egress_denylist = getattr(self, "_egress_denylist", None)
1282
1303
 
1283
1304
  (
1284
1305
  self._agent_env,
@@ -1295,11 +1316,16 @@ class Rollout:
1295
1316
  sandbox_setup_timeout=cfg.sandbox_setup_timeout,
1296
1317
  required_skill_names=getattr(self, "_required_skill_names", ()),
1297
1318
  live_trajectory_path=rollout_dir / "trajectory" / "llm_trajectory.jsonl",
1298
- force_sandbox_local=getattr(self, "_disallow_web_tools", False),
1319
+ force_sandbox_local=getattr(self, "_disallow_web_tools", False)
1320
+ or egress_denylist is not None,
1299
1321
  )
1322
+ if egress_denylist is not None:
1323
+ self._agent_env = denylist_agent_env(self._agent_env)
1300
1324
  sf_entrypoint = self._session_factory_entrypoint(cfg.primary_agent)
1301
1325
  self._is_session_factory = sf_entrypoint is not None
1302
1326
  if sf_entrypoint is not None:
1327
+ if egress_denylist is not None:
1328
+ raise RuntimeError("network_mode='denylist' requires an ACP agent")
1303
1329
  (
1304
1330
  self._acp_client,
1305
1331
  self._session,
@@ -1317,6 +1343,8 @@ class Rollout:
1317
1343
  agent_cwd=self._agent_cwd,
1318
1344
  )
1319
1345
  else:
1346
+ if egress_denylist is not None:
1347
+ await self._start_egress_denylist(egress_denylist)
1320
1348
  (
1321
1349
  self._acp_client,
1322
1350
  self._session,
@@ -2012,6 +2040,17 @@ class Rollout:
2012
2040
  finally:
2013
2041
  self._usage_runtime = None
2014
2042
 
2043
+ rollout_dir = getattr(self, "_rollout_dir", None)
2044
+ if (
2045
+ getattr(self, "_egress_denylist", None) is not None
2046
+ and self._env is not None
2047
+ and rollout_dir is not None
2048
+ ):
2049
+ try:
2050
+ await self._planes.stop_egress_denylist(self._env, rollout_dir)
2051
+ except Exception as e:
2052
+ logger.warning(f"Egress denylist proxy stop failed: {e}")
2053
+
2015
2054
  self._finalize_usage_metrics()
2016
2055
  self._enforce_required_usage_tracking()
2017
2056
 
@@ -2272,9 +2311,16 @@ class Rollout:
2272
2311
  if disallow_web_tools is None:
2273
2312
  disallow_web_tools = _task_disallows_internet(getattr(self, "_task", None))
2274
2313
  disallow_web_tools = bool(disallow_web_tools and role.agent != "oracle")
2314
+ egress_denylist = (
2315
+ None
2316
+ if disallow_web_tools or role.agent == "oracle"
2317
+ else _task_egress_denylist(getattr(self, "_task", None))
2318
+ )
2319
+ disallow_hosted_search = egress_denylist is not None
2275
2320
  agent_launch = self._planes.agent_launch(
2276
2321
  role.agent,
2277
2322
  disallow_web_tools=disallow_web_tools,
2323
+ disallow_hosted_search=disallow_hosted_search,
2278
2324
  )
2279
2325
  agent_env = _apply_web_policy(
2280
2326
  self._planes.resolve_agent_env(
@@ -2296,8 +2342,10 @@ class Rollout:
2296
2342
  sandbox_setup_timeout=cfg.sandbox_setup_timeout,
2297
2343
  required_skill_names=getattr(self, "_required_skill_names", ()),
2298
2344
  live_trajectory_path=rollout_dir / "trajectory" / "llm_trajectory.jsonl",
2299
- force_sandbox_local=disallow_web_tools,
2345
+ force_sandbox_local=disallow_web_tools or disallow_hosted_search,
2300
2346
  )
2347
+ if egress_denylist is not None:
2348
+ agent_env = denylist_agent_env(agent_env)
2301
2349
 
2302
2350
  role_agent_differs = role.agent != cfg.primary_agent
2303
2351
  needs_role_credentials = (
@@ -2342,6 +2390,7 @@ class Rollout:
2342
2390
  agent_cfg,
2343
2391
  cred_home,
2344
2392
  disallow=disallow_web_tools,
2393
+ disallow_hosted_search=disallow_hosted_search,
2345
2394
  )
2346
2395
 
2347
2396
  self._agent_launch = agent_launch
@@ -2349,6 +2398,8 @@ class Rollout:
2349
2398
  sf_entrypoint = self._session_factory_entrypoint(role.agent)
2350
2399
  self._is_session_factory = sf_entrypoint is not None
2351
2400
  if sf_entrypoint is not None:
2401
+ if egress_denylist is not None:
2402
+ raise RuntimeError("network_mode='denylist' requires an ACP agent")
2352
2403
  (
2353
2404
  self._acp_client,
2354
2405
  self._session,
@@ -2368,6 +2419,8 @@ class Rollout:
2368
2419
  agent_cwd=self._agent_cwd,
2369
2420
  )
2370
2421
  else:
2422
+ if egress_denylist is not None:
2423
+ await self._start_egress_denylist(egress_denylist)
2371
2424
  (
2372
2425
  self._acp_client,
2373
2426
  self._session,
@@ -42,6 +42,7 @@ from benchflow.rewards.validation import (
42
42
  validate_reward_map,
43
43
  )
44
44
  from benchflow.rollout._results import _DIAG_TRUNCATE
45
+ from benchflow.sandbox.egress_denylist import EgressDenylist, egress_denylist_for
45
46
  from benchflow.trajectories.types import redact_acp_trajectory_jsonl
46
47
 
47
48
  logger = logging.getLogger(__name__)
@@ -55,6 +56,11 @@ def _task_disallows_internet(task: Any) -> bool:
55
56
  return getattr(env_config, "allow_internet", True) is False
56
57
 
57
58
 
59
+ def _task_egress_denylist(task: Any) -> EgressDenylist | None:
60
+ """Return the egress denylist the task's sandbox config declares, if any."""
61
+ return egress_denylist_for(getattr(getattr(task, "config", None), "sandbox", None))
62
+
63
+
58
64
  def _read_task_instruction(task_path: Path) -> str:
59
65
  """Read the agent-facing instruction from legacy files or ``task.md``."""
60
66
  document_path = task_path / "task.md"
@@ -159,6 +159,11 @@ class TaskRuntime:
159
159
  rollout = await Rollout.create(self.config.to_rollout_config())
160
160
  try:
161
161
  await rollout.setup()
162
+ if getattr(rollout, "_egress_denylist", None) is not None:
163
+ raise RuntimeError(
164
+ "network_mode='denylist' requires an ACP agent rollout; "
165
+ "the bash primitive runs without the egress proxy"
166
+ )
162
167
  await rollout.start()
163
168
  await rollout.install_agent()
164
169
  except BaseException:
@@ -31,6 +31,11 @@ from benchflow.providers.runtime import (
31
31
  extract_usage,
32
32
  stop_provider_runtime,
33
33
  )
34
+ from benchflow.sandbox.egress_denylist import (
35
+ EgressDenylist,
36
+ start_egress_denylist,
37
+ stop_egress_denylist,
38
+ )
34
39
  from benchflow.sandbox.lockdown import (
35
40
  _resolve_locked_paths,
36
41
  _seed_verifier_workspace,
@@ -53,13 +58,21 @@ from benchflow.sandbox.setup import (
53
58
  class DefaultRolloutPlanes:
54
59
  """Default bindings for the four concrete planes."""
55
60
 
56
- def agent_launch(self, agent: str, *, disallow_web_tools: bool) -> str:
61
+ def agent_launch(
62
+ self,
63
+ agent: str,
64
+ *,
65
+ disallow_web_tools: bool,
66
+ disallow_hosted_search: bool = False,
67
+ ) -> str:
57
68
  launch = AGENT_LAUNCH.get(agent, agent)
58
- if not disallow_web_tools:
59
- return launch
60
69
  agent_cfg = AGENTS.get(agent)
61
- if agent_cfg and agent_cfg.disallow_web_tools_launch_suffix:
70
+ if agent_cfg is None:
71
+ return launch
72
+ if disallow_web_tools:
62
73
  return launch + agent_cfg.disallow_web_tools_launch_suffix
74
+ if disallow_hosted_search:
75
+ return launch + agent_cfg.disallow_hosted_search_launch_suffix
63
76
  return launch
64
77
 
65
78
  def agent_config(self, agent: str) -> Any:
@@ -179,6 +192,14 @@ class DefaultRolloutPlanes:
179
192
  async def stop_provider_runtime(self, runtime: Any) -> None:
180
193
  await stop_provider_runtime(runtime)
181
194
 
195
+ async def start_egress_denylist(
196
+ self, env: Any, sandbox_user: str | None, denylist: EgressDenylist
197
+ ) -> None:
198
+ await start_egress_denylist(env, sandbox_user, denylist)
199
+
200
+ async def stop_egress_denylist(self, env: Any, rollout_dir: Path) -> None:
201
+ await stop_egress_denylist(env, rollout_dir)
202
+
182
203
  def extract_usage(self, runtime: Any) -> dict[str, Any]:
183
204
  return extract_usage(runtime)
184
205
 
@@ -9,6 +9,7 @@ COMPOSE_BASE_PATH = COMPOSE_DIR / "docker-compose-base.yaml"
9
9
  COMPOSE_BUILD_PATH = COMPOSE_DIR / "docker-compose-build.yaml"
10
10
  COMPOSE_PREBUILT_PATH = COMPOSE_DIR / "docker-compose-prebuilt.yaml"
11
11
  COMPOSE_NO_NETWORK_PATH = COMPOSE_DIR / "docker-compose-no-network.yaml"
12
+ COMPOSE_NET_ADMIN_PATH = COMPOSE_DIR / "docker-compose-net-admin.yaml"
12
13
 
13
14
  # Back-off delays for retrying a `compose up` that hit a daemon-side network
14
15
  # create/attach race. Shared by the host docker.py path and the Daytona DinD
@@ -0,0 +1,4 @@
1
+ services:
2
+ main:
3
+ cap_add:
4
+ - NET_ADMIN