benchflow 0.7.2.dev1987__tar.gz → 0.7.2.dev1994__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 (722) hide show
  1. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/CHANGELOG.md +22 -0
  2. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/PKG-INFO +2 -2
  3. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/README.md +1 -1
  4. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/pyproject.toml +1 -1
  5. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/main.py +19 -3
  6. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/viewer.py +176 -15
  7. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_traj_upload_cli.py +2 -1
  8. benchflow-0.7.2.dev1994/tests/test_viewer_confirm.py +205 -0
  9. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/.gitignore +0 -0
  10. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/LICENSE +0 -0
  11. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/__init__.py +0 -0
  12. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_dotenv.py +0 -0
  13. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_paths.py +0 -0
  14. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_run.py +0 -0
  15. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_types.py +0 -0
  16. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/__init__.py +0 -0
  17. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/benchmark_repos.py +0 -0
  18. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/build_context_stage.py +0 -0
  19. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/config.py +0 -0
  20. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/config_override.py +0 -0
  21. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/content_address.py +0 -0
  22. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/dataset_registry.py +0 -0
  23. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/env_registry.py +0 -0
  24. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/evaluation_results.py +0 -0
  25. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/hf_datasets.py +0 -0
  26. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/json_safe.py +0 -0
  27. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/learner_memory.py +0 -0
  28. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/live_activity.py +0 -0
  29. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/result_metadata.py +0 -0
  30. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/reward_events.py +0 -0
  31. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/scoring.py +0 -0
  32. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/source_provenance.py +0 -0
  33. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/__init__.py +0 -0
  34. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/_evidence_paths.py +0 -0
  35. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/acceptance_evidence.py +0 -0
  36. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/scaffolding.py +0 -0
  37. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/structural_checks.py +0 -0
  38. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/text.py +0 -0
  39. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/yaml_loader.py +0 -0
  40. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/acp/__init__.py +0 -0
  41. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/acp/client.py +0 -0
  42. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/acp/container_transport.py +0 -0
  43. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/acp/runtime.py +0 -0
  44. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/acp/selection.py +0 -0
  45. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/acp/session.py +0 -0
  46. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/acp/transport.py +0 -0
  47. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/acp/types.py +0 -0
  48. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/__init__.py +0 -0
  49. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon.py +0 -0
  50. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon_container.py +0 -0
  51. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon_fake_mail.py +0 -0
  52. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon_poste_users.tsv +0 -0
  53. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon_services.py +0 -0
  54. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/harbor.py +0 -0
  55. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/inbound.py +0 -0
  56. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/inspect_ai.py +0 -0
  57. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/ors.py +0 -0
  58. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/resources/__init__.py +0 -0
  59. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/resources/mcp_atlas_bridge.py +0 -0
  60. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/resources/mcp_atlas_judge.py +0 -0
  61. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/source.py +0 -0
  62. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agent_router.py +0 -0
  63. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agent_router_guide.py +0 -0
  64. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agent_router_parity.py +0 -0
  65. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agent_router_scaffold.py +0 -0
  66. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/__init__.py +0 -0
  67. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/codex_config.py +0 -0
  68. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/credentials.py +0 -0
  69. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/deepagents_acp_shim.py +0 -0
  70. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/env.py +0 -0
  71. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/errors.py +0 -0
  72. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/harvey_lab_acp_shim.py +0 -0
  73. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/install.py +0 -0
  74. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/manifest.py +0 -0
  75. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/openclaw_acp_shim.py +0 -0
  76. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/pi_acp_launcher.py +0 -0
  77. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/protocol.py +0 -0
  78. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/providers.py +0 -0
  79. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/registry.py +0 -0
  80. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/agents/remote_manifests.py +0 -0
  81. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/branch.py +0 -0
  82. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/__init__.py +0 -0
  83. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_failure_evidence.py +0 -0
  84. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_hosted_env.py +0 -0
  85. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_live_progress.py +0 -0
  86. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_options.py +0 -0
  87. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_shared.py +0 -0
  88. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_traj_upload_ui.py +0 -0
  89. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/adopt.py +0 -0
  90. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/agent.py +0 -0
  91. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/continue_cmd.py +0 -0
  92. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/environment.py +0 -0
  93. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/eval_artifacts.py +0 -0
  94. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/eval_lift.py +0 -0
  95. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/hub.py +0 -0
  96. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/monitor.py +0 -0
  97. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/review.py +0 -0
  98. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/sandbox.py +0 -0
  99. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/skills.py +0 -0
  100. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/tasks.py +0 -0
  101. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/trace_import.py +0 -0
  102. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/train.py +0 -0
  103. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/cli/traj.py +0 -0
  104. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/__init__.py +0 -0
  105. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/batch.py +0 -0
  106. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/orchestrator.py +0 -0
  107. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/replay_proxy.py +0 -0
  108. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/run_folder.py +0 -0
  109. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/sandbox_proxy.py +0 -0
  110. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/contracts/__init__.py +0 -0
  111. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/contracts/planes.py +0 -0
  112. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/contracts/user.py +0 -0
  113. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/environment/Dockerfile +0 -0
  114. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/instruction.md +0 -0
  115. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/task.md +0 -0
  116. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/task.toml +0 -0
  117. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/tests/test.sh +0 -0
  118. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/diagnostics.py +0 -0
  119. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/environment/__init__.py +0 -0
  120. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/environment/_registry/env0@outage.toml +0 -0
  121. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/environment/_registry/env0@prod.toml +0 -0
  122. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/environment/manifest.py +0 -0
  123. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/environment/manifest_env.py +0 -0
  124. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/environment/protocol.py +0 -0
  125. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/environment/readiness.py +0 -0
  126. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/eval_artifacts.py +0 -0
  127. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/eval_lift.py +0 -0
  128. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/eval_plan.py +0 -0
  129. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/eval_sharding.py +0 -0
  130. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/eval_worker.py +0 -0
  131. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/evaluation.py +0 -0
  132. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/experimental/__init__.py +0 -0
  133. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/experimental/mcp/__init__.py +0 -0
  134. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/experimental/mcp/hooks.py +0 -0
  135. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/experimental/mcp/reviewer_server.py +0 -0
  136. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/hosted_env.py +0 -0
  137. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/hub/__init__.py +0 -0
  138. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/hub/harbor_registry.py +0 -0
  139. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/integrations/__init__.py +0 -0
  140. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/integrations/trl/__init__.py +0 -0
  141. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/integrations/trl/spec.py +0 -0
  142. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/learner_skills.py +0 -0
  143. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/learner_store.py +0 -0
  144. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/loop_strategies.py +0 -0
  145. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/loop_sweep.py +0 -0
  146. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/metrics.py +0 -0
  147. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/models.py +0 -0
  148. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/monitor.py +0 -0
  149. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/providers/__init__.py +0 -0
  150. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_bedrock_patch.py +0 -0
  151. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_bedrock_preflight.py +0 -0
  152. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_config.py +0 -0
  153. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_logging.py +0 -0
  154. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_runtime.py +0 -0
  155. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/providers/runtime.py +0 -0
  156. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/publish/__init__.py +0 -0
  157. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/publish/_progress.py +0 -0
  158. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/publish/azure_blob.py +0 -0
  159. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/publish/broker.py +0 -0
  160. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/publish/huggingface.py +0 -0
  161. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/publish/redact.py +0 -0
  162. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/publish/traj_capture.py +0 -0
  163. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/publish/traj_report.py +0 -0
  164. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/py.typed +0 -0
  165. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/review/__init__.py +0 -0
  166. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/review/config.py +0 -0
  167. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/review/default-rubric.json +0 -0
  168. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/review/prompts.py +0 -0
  169. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/review/runner.py +0 -0
  170. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/review/wrapper.py +0 -0
  171. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/README.md +0 -0
  172. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/__init__.py +0 -0
  173. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/builtins.py +0 -0
  174. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/events.py +0 -0
  175. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/file_readers.py +0 -0
  176. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/llm.py +0 -0
  177. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/memory_scorer.py +0 -0
  178. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/node.py +0 -0
  179. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/protocol.py +0 -0
  180. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/rubric.py +0 -0
  181. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/rubric_config.py +0 -0
  182. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/validation.py +0 -0
  183. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/__init__.py +0 -0
  184. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_config.py +0 -0
  185. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_deadline.py +0 -0
  186. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_results.py +0 -0
  187. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_setup.py +0 -0
  188. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_skills.py +0 -0
  189. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_usage.py +0 -0
  190. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_user_loop.py +0 -0
  191. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/session_factory_runtime.py +0 -0
  192. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/task_runtime.py +0 -0
  193. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rollout_branch.py +0 -0
  194. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/rollout_planes.py +0 -0
  195. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/runtime.py +0 -0
  196. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/__init__.py +0 -0
  197. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_base.py +0 -0
  198. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_cache_reclaim.py +0 -0
  199. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose.py +0 -0
  200. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose_files/docker-compose-base.yaml +0 -0
  201. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose_files/docker-compose-build.yaml +0 -0
  202. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose_files/docker-compose-no-network.yaml +0 -0
  203. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose_files/docker-compose-prebuilt.yaml +0 -0
  204. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_sdk_ops.py +0 -0
  205. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore.py +0 -0
  206. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_builder.py +0 -0
  207. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_image.py +0 -0
  208. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_provisioning.py +0 -0
  209. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_reaper.py +0 -0
  210. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_sealed.py +0 -0
  211. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/apple_container.py +0 -0
  212. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona.py +0 -0
  213. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona_dind.py +0 -0
  214. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona_pty.py +0 -0
  215. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona_reaper.py +0 -0
  216. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona_strategies.py +0 -0
  217. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/docker.py +0 -0
  218. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/lockdown.py +0 -0
  219. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/metadata.py +0 -0
  220. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/modal_impl.py +0 -0
  221. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/__init__.py +0 -0
  222. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/_base.py +0 -0
  223. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/agentcore.py +0 -0
  224. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/apple.py +0 -0
  225. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/daytona.py +0 -0
  226. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/docker.py +0 -0
  227. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/protocol.py +0 -0
  228. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/providers.py +0 -0
  229. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/services.py +0 -0
  230. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/setup.py +0 -0
  231. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/snapshot.py +0 -0
  232. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/user.py +0 -0
  233. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/scenes.py +0 -0
  234. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/sdk.py +0 -0
  235. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/self_gen.py +0 -0
  236. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/skill_eval/__init__.py +0 -0
  237. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/skill_eval/_core.py +0 -0
  238. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/skill_eval/gepa_export.py +0 -0
  239. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/skill_eval/schema.py +0 -0
  240. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/skill_policy.py +0 -0
  241. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/skills.py +0 -0
  242. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/__init__.py +0 -0
  243. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/_document_evidence.py +0 -0
  244. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/_document_normalize.py +0 -0
  245. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/_document_parse.py +0 -0
  246. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/_document_profiles.py +0 -0
  247. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/acceptance_live.py +0 -0
  248. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/acceptance_live_model.py +0 -0
  249. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/acceptance_live_report.py +0 -0
  250. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/acceptance_live_validation.py +0 -0
  251. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/config.py +0 -0
  252. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/discovery.py +0 -0
  253. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/document.py +0 -0
  254. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/env.py +0 -0
  255. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/export.py +0 -0
  256. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/imports.py +0 -0
  257. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/output_format.py +0 -0
  258. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/package.py +0 -0
  259. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/paths.py +0 -0
  260. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/prompts.py +0 -0
  261. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/runtime_capabilities.py +0 -0
  262. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/runtime_view.py +0 -0
  263. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/task.py +0 -0
  264. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier.py +0 -0
  265. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_core.py +0 -0
  266. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_document.py +0 -0
  267. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_errors.py +0 -0
  268. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_judge_inputs.py +0 -0
  269. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_ors_episode.py +0 -0
  270. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_reward_kit.py +0 -0
  271. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_scan.py +0 -0
  272. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_script_strategy.py +0 -0
  273. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/templates/__init__.py +0 -0
  274. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/templates/judge.py.tmpl +0 -0
  275. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/templates/test.sh.tmpl +0 -0
  276. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/traces/__init__.py +0 -0
  277. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/traces/huggingface.py +0 -0
  278. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/traces/local.py +0 -0
  279. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/traces/models.py +0 -0
  280. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/traces/parsers.py +0 -0
  281. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/traces/task_gen.py +0 -0
  282. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/training/__init__.py +0 -0
  283. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/training/backends/__init__.py +0 -0
  284. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/training/backends/prime_rl.py +0 -0
  285. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/training/run_manifest.py +0 -0
  286. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/__init__.py +0 -0
  287. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/_capture.py +0 -0
  288. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/_export_common.py +0 -0
  289. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/_llm_capture.py +0 -0
  290. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/call_purpose.py +0 -0
  291. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export.py +0 -0
  292. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export_adp.py +0 -0
  293. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export_atif.py +0 -0
  294. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export_prime_sft.py +0 -0
  295. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export_trl_sft.py +0 -0
  296. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/metrics.py +0 -0
  297. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/results.py +0 -0
  298. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/sessions.py +0 -0
  299. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/tree.py +0 -0
  300. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/trl_sft_tokenization.py +0 -0
  301. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/types.py +0 -0
  302. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/src/benchflow/usage_tracking.py +0 -0
  303. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/__init__.py +0 -0
  304. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/acceptance_live_harness.py +0 -0
  305. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/agents/__init__.py +0 -0
  306. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/agents/test_manifest_dirscan.py +0 -0
  307. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/agents/test_manifest_loader.py +0 -0
  308. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/agents/test_manifest_parity.py +0 -0
  309. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/agents/test_manifest_wiring.py +0 -0
  310. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/agents/test_namespace_shorthand.py +0 -0
  311. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/agents/test_plugin_entry_points.py +0 -0
  312. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/agents/test_protocol.py +0 -0
  313. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/agents/test_remote_manifest_autoload.py +0 -0
  314. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/README.md +0 -0
  315. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/environment/Dockerfile +0 -0
  316. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/environment/docker-compose.yaml +0 -0
  317. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/environment/skills/conformance-writer/SKILL.md +0 -0
  318. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/instruction.md +0 -0
  319. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/solution/solve.sh +0 -0
  320. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/task.md +0 -0
  321. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/task.toml +0 -0
  322. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/tests/test.sh +0 -0
  323. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/conformance-results.json +0 -0
  324. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/proof_multi_agent.py +0 -0
  325. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/proof_snapshot.py +0 -0
  326. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/run_conformance.py +0 -0
  327. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conformance/self_gen_smoke_skills/skill-creator/SKILL.md +0 -0
  328. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/conftest.py +0 -0
  329. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/continue_run/__init__.py +0 -0
  330. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/continue_run/_helpers.py +0 -0
  331. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/continue_run/test_batch.py +0 -0
  332. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/continue_run/test_orchestrator.py +0 -0
  333. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/continue_run/test_replay_proxy.py +0 -0
  334. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/continue_run/test_run_folder.py +0 -0
  335. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/environment/__init__.py +0 -0
  336. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/environment/test_chibench_manifest.py +0 -0
  337. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/environment/test_clawsbench_manifest.py +0 -0
  338. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/environment/test_manifest.py +0 -0
  339. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/environment/test_manifest_env.py +0 -0
  340. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/environment/test_protocol.py +0 -0
  341. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/environment/test_readiness.py +0 -0
  342. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/environment/Dockerfile +0 -0
  343. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/instruction.md +0 -0
  344. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/solution/solve.sh +0 -0
  345. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/task.md +0 -0
  346. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/task.toml +0 -0
  347. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/tests/test.sh +0 -0
  348. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/test_claude.sh +0 -0
  349. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/test_codex.sh +0 -0
  350. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/test_codex_custom_provider.sh +0 -0
  351. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/test_gemini.sh +0 -0
  352. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/test_openclaw.sh +0 -0
  353. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/traces/minimal-claude.jsonl +0 -0
  354. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/examples/traces/minimal-opentraces.jsonl +0 -0
  355. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/README.md +0 -0
  356. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/alpha-task/environment/Dockerfile +0 -0
  357. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/alpha-task/instruction.md +0 -0
  358. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/alpha-task/task.toml +0 -0
  359. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/alpha-task/tests/test.sh +0 -0
  360. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/beta-task/data/empty.bin +0 -0
  361. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/beta-task/data/unicode.txt +0 -0
  362. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/beta-task/instruction.md +0 -0
  363. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/beta-task/task.toml +0 -0
  364. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/not-a-task/notes.txt +0 -0
  365. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/mock_acp_agent.py +0 -0
  366. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/mock_acp_agent_interleaved.py +0 -0
  367. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/mock_acp_agent_multi_turn.py +0 -0
  368. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/mock_openai_responses_server.py +0 -0
  369. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/Dockerfile +0 -0
  370. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/data/michigan_stations.txt +0 -0
  371. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/flood-detection/SKILL.md +0 -0
  372. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/nws-flood-thresholds/SKILL.md +0 -0
  373. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/usgs-data-download/SKILL.md +0 -0
  374. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/instruction.md +0 -0
  375. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/solution/solve.sh +0 -0
  376. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/task.toml +0 -0
  377. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test.sh +0 -0
  378. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test_outputs.py +0 -0
  379. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/Dockerfile +0 -0
  380. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/climate.csv +0 -0
  381. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/hydrology.csv +0 -0
  382. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/land_cover.csv +0 -0
  383. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/water_temperature.csv +0 -0
  384. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/contribution-analysis/SKILL.md +0 -0
  385. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/meteorology-driver-classification/SKILL.md +0 -0
  386. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/pca-decomposition/SKILL.md +0 -0
  387. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/trend-analysis/SKILL.md +0 -0
  388. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/instruction.md +0 -0
  389. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/solution/solve.sh +0 -0
  390. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/task.toml +0 -0
  391. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test.sh +0 -0
  392. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test_outputs.py +0 -0
  393. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/manifest.json +0 -0
  394. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/Dockerfile +0 -0
  395. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/r2r_simulator.py +0 -0
  396. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/finite-horizon-lqr/SKILL.md +0 -0
  397. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/integral-action-design/SKILL.md +0 -0
  398. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/mpc-horizon-tuning/SKILL.md +0 -0
  399. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/state-space-linearization/SKILL.md +0 -0
  400. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/system_config.json +0 -0
  401. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/instruction.md +0 -0
  402. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/solution/solve.sh +0 -0
  403. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/task.toml +0 -0
  404. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test.sh +0 -0
  405. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test_outputs.py +0 -0
  406. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/Dockerfile +0 -0
  407. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/generate_training_pcaps.py +0 -0
  408. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/local.rules +0 -0
  409. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/SKILL.md +0 -0
  410. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/scripts/summarize_http_requests.sh +0 -0
  411. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/SKILL.md +0 -0
  412. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/scripts/run_suricata_offline.sh +0 -0
  413. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-rules-basics/SKILL.md +0 -0
  414. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/suricata.yaml +0 -0
  415. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/instruction.md +0 -0
  416. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/solution/solve.sh +0 -0
  417. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/task.toml +0 -0
  418. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test.sh +0 -0
  419. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test_outputs.py +0 -0
  420. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/Dockerfile +0 -0
  421. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syz-extract-constants/SKILL.md +0 -0
  422. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzkaller-build-loop/SKILL.md +0 -0
  423. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzlang-ioctl-basics/SKILL.md +0 -0
  424. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/instruction.md +0 -0
  425. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/solution/solve.sh +0 -0
  426. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/task.toml +0 -0
  427. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test.sh +0 -0
  428. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test_outputs.py +0 -0
  429. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/_consistency.py +0 -0
  430. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/agent_judge.py +0 -0
  431. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/check_adapter_evidence.py +0 -0
  432. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/check_hosted_env_evidence.py +0 -0
  433. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/check_results.py +0 -0
  434. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/check_skillsbench_harbor_parity.py +0 -0
  435. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/check_trace_to_task_evidence.py +0 -0
  436. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/configs/claude-agent-acp.yaml +0 -0
  437. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/configs/codex-acp.yaml +0 -0
  438. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/configs/gemini.yaml +0 -0
  439. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/configs/harvey-lab-harness.yaml +0 -0
  440. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/configs/mimo.yaml +0 -0
  441. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/configs/openclaw.yaml +0 -0
  442. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/configs/opencode.yaml +0 -0
  443. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/configs/openhands.yaml +0 -0
  444. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/configs/pi-acp.yaml +0 -0
  445. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/deepagents_harness.py +0 -0
  446. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/rubric_checks.py +0 -0
  447. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/run.sh +0 -0
  448. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/run_suite.py +0 -0
  449. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/scenarios.py +0 -0
  450. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/integration/suites/release.yaml +0 -0
  451. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_acceptance_evidence.py +0 -0
  452. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_acceptance_live.py +0 -0
  453. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_acceptance_live_execution.py +0 -0
  454. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_acp.py +0 -0
  455. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_acp_capability_advertising.py +0 -0
  456. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_acp_mcp_servers.py +0 -0
  457. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_acp_model_config_dispatch.py +0 -0
  458. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_acp_pinned_protocol_guard.py +0 -0
  459. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_acp_setup_failure_propagation.py +0 -0
  460. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_adapter_scripts.py +0 -0
  461. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_adapters.py +0 -0
  462. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agent_cli.py +0 -0
  463. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agent_env_resolution.py +0 -0
  464. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agent_gemini_defaults.py +0 -0
  465. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agent_idle_timeout_cli.py +0 -0
  466. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agent_model_decouple.py +0 -0
  467. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agent_registry.py +0 -0
  468. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agent_router.py +0 -0
  469. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agent_router_cli_e2e.py +0 -0
  470. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agent_router_scaffold.py +0 -0
  471. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agent_setup.py +0 -0
  472. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agent_spec.py +0 -0
  473. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agentcore_builder.py +0 -0
  474. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agentcore_parallel.py +0 -0
  475. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agentcore_reaper.py +0 -0
  476. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agentcore_sandbox.py +0 -0
  477. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_agentcore_transport.py +0 -0
  478. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_api_error_capture.py +0 -0
  479. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_apple_container_sandbox.py +0 -0
  480. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_bare_model_provider.py +0 -0
  481. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_base_install_imports.py +0 -0
  482. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_bedrock_thinking.py +0 -0
  483. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_benchflow_experiment_review_validator.py +0 -0
  484. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_benchmark_repos_resolve_repo_path.py +0 -0
  485. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_branch.py +0 -0
  486. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_build_context_stage.py +0 -0
  487. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_build_review_pack.py +0 -0
  488. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_capture_trajectory.py +0 -0
  489. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_check_skillsbench_harbor_parity.py +0 -0
  490. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_clawsbench_slice.py +0 -0
  491. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_cli_adopt_aliases.py +0 -0
  492. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_cli_arg_validation.py +0 -0
  493. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_cli_daytona.py +0 -0
  494. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_cli_docs_drift.py +0 -0
  495. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_cli_edge_case_hardening.py +0 -0
  496. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_cli_hub_env.py +0 -0
  497. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_cli_live_progress.py +0 -0
  498. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_cli_misc.py +0 -0
  499. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_codex_review.py +0 -0
  500. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_codex_self_write_auth.py +0 -0
  501. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_config_override.py +0 -0
  502. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_config_redaction.py +0 -0
  503. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_connect_as_env.py +0 -0
  504. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_console_error_truncation.py +0 -0
  505. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_console_progress.py +0 -0
  506. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_continuallearningbench_adapter.py +0 -0
  507. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_dataset_registry.py +0 -0
  508. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_daytona_command_polling.py +0 -0
  509. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_daytona_dind_compose_up.py +0 -0
  510. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_daytona_download.py +0 -0
  511. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_daytona_litellm_runtime.py +0 -0
  512. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_daytona_poll_deadline.py +0 -0
  513. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_daytona_reap.py +0 -0
  514. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_deepagents_agent.py +0 -0
  515. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_diagnostics.py +0 -0
  516. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_docker_prune_scoping.py +0 -0
  517. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_docker_uploads.py +0 -0
  518. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_docs_examples.py +0 -0
  519. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_eng50_capabilities.py +0 -0
  520. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_env_registry.py +0 -0
  521. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_env_setup.py +0 -0
  522. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_environment_manifest_controls.py +0 -0
  523. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_eval_artifact_cli.py +0 -0
  524. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_eval_filters_applied.py +0 -0
  525. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_eval_lift.py +0 -0
  526. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_eval_sharding.py +0 -0
  527. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_eval_single_task_summary.py +0 -0
  528. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_eval_source_provenance.py +0 -0
  529. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_eval_worker_retry.py +0 -0
  530. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_eval_zero_task_guard.py +0 -0
  531. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_evaluation_environment_manifest.py +0 -0
  532. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_exclude_tasks.py +0 -0
  533. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_filter_credentialed_cells.py +0 -0
  534. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_harvey_lab_shim.py +0 -0
  535. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_hilbench_adapter.py +0 -0
  536. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_hosted_env.py +0 -0
  537. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_hosted_env_rollout_contract.py +0 -0
  538. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_hub_harbor_registry.py +0 -0
  539. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_inbound_adapter_manifest.py +0 -0
  540. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_inbound_adapters.py +0 -0
  541. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_integration_agent_judge.py +0 -0
  542. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_integration_check_results.py +0 -0
  543. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_integration_consistency.py +0 -0
  544. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_integration_matrix.py +0 -0
  545. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_integration_provider_selection.py +0 -0
  546. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_integration_run_suite.py +0 -0
  547. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_integration_suite.py +0 -0
  548. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_internet_policy.py +0 -0
  549. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_job.py +0 -0
  550. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_job_sequential_shared.py +0 -0
  551. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_job_sequential_shared_resume.py +0 -0
  552. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_judge_robustness.py +0 -0
  553. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_judge_symlink_ingestion.py +0 -0
  554. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_learner_skills.py +0 -0
  555. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_learner_skills_traversal.py +0 -0
  556. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_learner_store.py +0 -0
  557. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_learner_store_persistence.py +0 -0
  558. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_litellm_config.py +0 -0
  559. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_litellm_hardening.py +0 -0
  560. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_litellm_logging.py +0 -0
  561. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_litellm_model_via_env_generic.py +0 -0
  562. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_litellm_reasoning_passthrough.py +0 -0
  563. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_litellm_runtime.py +0 -0
  564. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_litellm_smoke.py +0 -0
  565. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_live_llm_trajectory.py +0 -0
  566. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_llm_judge.py +0 -0
  567. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_llm_judge_event_tags.py +0 -0
  568. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_llm_judge_verifier.py +0 -0
  569. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_loop_strategies.py +0 -0
  570. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_loop_summary.py +0 -0
  571. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_loop_sweep.py +0 -0
  572. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_memory_scorer.py +0 -0
  573. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_metrics.py +0 -0
  574. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_mle_bench_adapter.py +0 -0
  575. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_mock_openai_responses_server.py +0 -0
  576. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_monitor_scaffold.py +0 -0
  577. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_native_acp_usage.py +0 -0
  578. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_no_cross_provider_fallback.py +0 -0
  579. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_notification_order_real.py +0 -0
  580. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_opencode_family_proxy_tracking.py +0 -0
  581. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_oracle.py +0 -0
  582. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_oracle_chokepoint.py +0 -0
  583. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_paths_safe.py +0 -0
  584. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_paths_symlink_helpers.py +0 -0
  585. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_pi_acp_launcher.py +0 -0
  586. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_pi_acp_proxy_routing.py +0 -0
  587. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_process.py +0 -0
  588. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_project_skills_layout.py +0 -0
  589. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_provider_auth_detection.py +0 -0
  590. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_providers.py +0 -0
  591. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_publish_azure_blob.py +0 -0
  592. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_reexport.py +0 -0
  593. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_registry_invariants.py +0 -0
  594. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_release_hardening_r5.py +0 -0
  595. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_release_version.py +0 -0
  596. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_release_workflow_wiring.py +0 -0
  597. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_resolve_env_helpers.py +0 -0
  598. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_review_boundaries.py +0 -0
  599. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_review_rubric.py +0 -0
  600. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_review_runtime.py +0 -0
  601. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_reward_lenient.py +0 -0
  602. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_reward_node.py +0 -0
  603. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_reward_range.py +0 -0
  604. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_reward_unified_contract.py +0 -0
  605. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rewards.py +0 -0
  606. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rewards_jsonl.py +0 -0
  607. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rollout_architecture.py +0 -0
  608. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rollout_branch.py +0 -0
  609. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rollout_config_path_coercion.py +0 -0
  610. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rollout_environment.py +0 -0
  611. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rollout_hard_deadline.py +0 -0
  612. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rollout_import_no_side_effects.py +0 -0
  613. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rollout_on_ask_user_wiring.py +0 -0
  614. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rollout_planes_contract.py +0 -0
  615. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rollout_probe_sandbox_health.py +0 -0
  616. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rollout_session_factory_dispatch.py +0 -0
  617. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rollout_setup_commands.py +0 -0
  618. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rollout_upload.py +0 -0
  619. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rubric_checks.py +0 -0
  620. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_rubric_config.py +0 -0
  621. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_runtime.py +0 -0
  622. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_runtime_capabilities.py +0 -0
  623. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_runtime_config_wired.py +0 -0
  624. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_runtime_live_sandbox.py +0 -0
  625. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox.py +0 -0
  626. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox_exec_secret_handling.py +0 -0
  627. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox_hardening.py +0 -0
  628. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox_isolation_copy_traversal.py +0 -0
  629. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox_live_process.py +0 -0
  630. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox_multi_service.py +0 -0
  631. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox_prebuilt_validation.py +0 -0
  632. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox_protocol.py +0 -0
  633. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox_provider_registry_drift.py +0 -0
  634. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox_setup.py +0 -0
  635. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox_snapshot_contract.py +0 -0
  636. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox_upload_symlink.py +0 -0
  637. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sandbox_verifier_workspace.py +0 -0
  638. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_scene.py +0 -0
  639. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_scene_outbox_trial.py +0 -0
  640. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_scene_parallel_group.py +0 -0
  641. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_scene_result_aggregation.py +0 -0
  642. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_scoring.py +0 -0
  643. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sdk_internals.py +0 -0
  644. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sdk_lockdown.py +0 -0
  645. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sdk_run_alias.py +0 -0
  646. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_sealed_channel_container.py +0 -0
  647. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_self_gen_cli.py +0 -0
  648. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_self_gen_export_error_channel.py +0 -0
  649. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_self_gen_export_failures.py +0 -0
  650. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_self_gen_orchestration.py +0 -0
  651. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_session_factory_runtime.py +0 -0
  652. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_session_request_permission_dispatch.py +0 -0
  653. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_skill_eval.py +0 -0
  654. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_skill_eval_dryrun.py +0 -0
  655. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_skill_eval_integration.py +0 -0
  656. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_skill_eval_sweep.py +0 -0
  657. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_skill_eval_traversal.py +0 -0
  658. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_skill_invocation_artifacts.py +0 -0
  659. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_skill_policy.py +0 -0
  660. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_skills.py +0 -0
  661. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_skills_dir_agent_home_link.py +0 -0
  662. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_skillsbench_conversion_conformance.py +0 -0
  663. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_skillsbench_harbor_run_suite.py +0 -0
  664. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_smoke.py +0 -0
  665. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_smoke_wiring.py +0 -0
  666. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_source_adapters.py +0 -0
  667. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_subscription_auth.py +0 -0
  668. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_task_check_eval_consistency.py +0 -0
  669. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_task_config.py +0 -0
  670. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_task_digest.py +0 -0
  671. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_task_document.py +0 -0
  672. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_task_download.py +0 -0
  673. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_task_export.py +0 -0
  674. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_task_output_format.py +0 -0
  675. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_task_package.py +0 -0
  676. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_task_runtime_primitive.py +0 -0
  677. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_tasks.py +0 -0
  678. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_token_usage_normalization.py +0 -0
  679. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_trace_import_cli.py +0 -0
  680. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_trace_task_gen_traversal.py +0 -0
  681. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_trace_to_task_evidence.py +0 -0
  682. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_traces_huggingface.py +0 -0
  683. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_traces_parsers.py +0 -0
  684. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_traces_task_gen.py +0 -0
  685. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_train_cli.py +0 -0
  686. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_train_mode_artifact_emission.py +0 -0
  687. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_train_trl_cli.py +0 -0
  688. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_traj_report.py +0 -0
  689. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_traj_staging_phases.py +0 -0
  690. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_traj_upload_skill.py +0 -0
  691. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_trajectory_integration.py +0 -0
  692. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_trajectory_streaming.py +0 -0
  693. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_trajectory_upload_layout.py +0 -0
  694. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_trajectory_upload_service.py +0 -0
  695. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_trial_agent_timeout_verify.py +0 -0
  696. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_trial_install_agent_timeout.py +0 -0
  697. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_trial_litellm_runtime.py +0 -0
  698. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_trl_integration.py +0 -0
  699. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_usage_litellm.py +0 -0
  700. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_usage_required.py +0 -0
  701. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_usage_tracking.py +0 -0
  702. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_user.py +0 -0
  703. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_v06_guard_ports.py +0 -0
  704. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_verifier_document.py +0 -0
  705. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_verifier_multi_container.py +0 -0
  706. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_verifier_output.py +0 -0
  707. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_verifier_output_freshness.py +0 -0
  708. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_verifier_strategies.py +0 -0
  709. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_verifier_wedge_retry.py +0 -0
  710. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_verify.py +0 -0
  711. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_workflow_action_pinning.py +0 -0
  712. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/test_yaml_config.py +0 -0
  713. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/trajectories/__init__.py +0 -0
  714. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export.py +0 -0
  715. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_adp.py +0 -0
  716. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_atif.py +0 -0
  717. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_common.py +0 -0
  718. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_nan_handling.py +0 -0
  719. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_prime_sft.py +0 -0
  720. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/trajectories/test_redaction.py +0 -0
  721. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/trajectories/test_step_granularity.py +0 -0
  722. {benchflow-0.7.2.dev1987 → benchflow-0.7.2.dev1994}/tests/trajectories/test_tree.py +0 -0
@@ -3,6 +3,17 @@
3
3
  ## [Unreleased]
4
4
 
5
5
  ### Added
6
+ - **The trajectory viewer can collect the eval-prize confirmation in the
7
+ browser.** `bench eval view PATH --confirm` renders the normal page plus a
8
+ sticky site-styled bottom bar ("Submit this trajectory to the BenchFlow
9
+ eval prize?") with **Approve & submit** / **Not this one** buttons. A click
10
+ POSTs to `/decision`; the server prints a machine-readable
11
+ `DECISION: approved` or `DECISION: rejected` line to stdout, shuts down,
12
+ and the CLI exits `0` on approve and `3` on reject (non-1/2 so rejection
13
+ never collides with error or usage exits). Without the flag, behavior is
14
+ unchanged (no bar, no endpoint, Ctrl+C to stop). The
15
+ `benchflow-traj-upload` skill now prefers the button flow and falls back
16
+ to chat confirmation on CLIs older than 0.7.2.
6
17
  - **Trajectory uploads are tagged with the session's repository by
7
18
  default.** Unless `--source-id` is given, `bench traj upload` reads the
8
19
  session's recorded working directory (Claude `cwd` events, Codex
@@ -14,6 +25,17 @@
14
25
  undetectable repos fall back silently to the path-derived source id.
15
26
 
16
27
  ### Changed
28
+ - **Trajectory viewer tool calls are color-coded and backgrounds are light.**
29
+ Each tool kind now gets a muted GitHub-label-style accent on its name pill
30
+ and a left border strip on the card: shell/exec → amber, write/edit → blue,
31
+ read → teal, agent/task/skill → purple, web/search/fetch → cyan, everything
32
+ else → neutral gray. Tool arguments and tool outputs render on light
33
+ surfaces (`#f5f5f5` / white with dark ink) instead of near-black blocks;
34
+ the dark `#141414` terminal treatment is reserved for shell-command output
35
+ only, and the ink-black result card stays as the deliberate bento-ink
36
+ accent. Presentation only (CSS classes + a tool-name→accent mapping);
37
+ content strings and behavior are unchanged. Applies to all three viewer
38
+ templates, which share one stylesheet since #1019.
17
39
  - **The contributor prompt now tells the agent to upgrade BenchFlow first.**
18
40
  `CONTRIBUTOR_PROMPT` (kept in sync in `README.md`, `docs/traj-upload.md`,
19
41
  and the `benchflow-traj-upload` skill evals) is a three-line block that
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: benchflow
3
- Version: 0.7.2.dev1987
3
+ Version: 0.7.2.dev1994
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
@@ -89,7 +89,7 @@ BenchFlow is a universal environment framework: it runs AI agents against task e
89
89
 
90
90
  ## Quick start: 1. Submit a trajectory
91
91
 
92
- **Don't follow these steps yourself — send them to your coding agent.** Copy
92
+ **Send these to your coding agent.** Copy
93
93
  the block below and paste it as a message to Claude Code, Codex, OpenCode, or
94
94
  Cursor. That is the $2,000 eval prize path. No BenchFlow account, API key, or
95
95
  Azure login.
@@ -15,7 +15,7 @@ BenchFlow is a universal environment framework: it runs AI agents against task e
15
15
 
16
16
  ## Quick start: 1. Submit a trajectory
17
17
 
18
- **Don't follow these steps yourself — send them to your coding agent.** Copy
18
+ **Send these to your coding agent.** Copy
19
19
  the block below and paste it as a message to Claude Code, Codex, OpenCode, or
20
20
  Cursor. That is the $2,000 eval prize path. No BenchFlow account, API key, or
21
21
  Azure login.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "benchflow"
3
- version = "0.7.2.dev1987"
3
+ version = "0.7.2.dev1994"
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"
@@ -1228,11 +1228,27 @@ def eval_view(
1228
1228
  ),
1229
1229
  ],
1230
1230
  port: Annotated[int, typer.Option(help="Server port")] = 8888,
1231
+ confirm: Annotated[
1232
+ bool,
1233
+ typer.Option(
1234
+ "--confirm",
1235
+ help=(
1236
+ "Show an Approve & submit / Not this one bar on the page; "
1237
+ "print DECISION: approved|rejected and exit 0 on approve, "
1238
+ "3 on reject."
1239
+ ),
1240
+ ),
1241
+ ] = False,
1231
1242
  ) -> None:
1232
1243
  """View a trial or session trajectory in the browser."""
1233
- from benchflow.trajectories.viewer import serve
1234
-
1235
- serve(str(rollout_dir), port)
1244
+ from benchflow.trajectories import viewer
1245
+
1246
+ decision = viewer.serve(str(rollout_dir), port, confirm=confirm)
1247
+ # Exit-code contract for --confirm: 0 approved, 3 rejected. 3 is chosen
1248
+ # so a rejection never collides with the CLI's existing error exits
1249
+ # (1 = errors, 2 = Typer usage errors).
1250
+ if decision == "rejected":
1251
+ raise typer.Exit(3)
1236
1252
 
1237
1253
 
1238
1254
  # ── Command-group wiring ──────────────────────────────────────────────
@@ -16,9 +16,15 @@ _RESULT_PREVIEW = 300 # max chars for result summary
16
16
 
17
17
  # Shared stylesheet for all viewer pages, matching the www.benchflow.ai design
18
18
  # language (light monochrome: near-white page, white cards, near-black ink,
19
- # pure-black accent, Satoshi/Google Sans Code with system-safe fallbacks, dark
20
- # code blocks). Kept inline so pages work fully offline with no external
21
- # requests; one constant so the three templates stop drifting apart.
19
+ # Satoshi/Google Sans Code with system-safe fallbacks). Kept inline so pages
20
+ # work fully offline with no external requests; one constant so the three
21
+ # templates stop drifting apart.
22
+ #
23
+ # The site itself is deliberately achromatic, so tool-call accents below are
24
+ # muted GitHub-label-style pastels (pale chip background + darker same-hue
25
+ # text + a soft left border strip) that read as annotations rather than
26
+ # fighting the monochrome base. The dark #141414 code treatment is reserved
27
+ # for terminal output of shell commands; everything else stays light.
22
28
  _VIEWER_CSS = """\
23
29
  * { margin: 0; padding: 0; box-sizing: border-box; }
24
30
  :root {
@@ -46,8 +52,10 @@ body { font-family: var(--font-sans); background: var(--background); color: var(
46
52
  .meta span { font-family: var(--font-mono); font-size: 11px; font-weight: 500; color: var(--ink-secondary); background: var(--secondary); padding: 3px 9px; border-radius: 4px; border: 1px solid var(--border); }
47
53
  .step { margin-bottom: 8px; padding: 12px 16px; border-radius: var(--radius); background: var(--card); border: 1px solid var(--border); box-shadow: 0 1px 2px rgba(10, 10, 10, 0.04); }
48
54
  .step.prompt { background: var(--secondary); border-color: var(--rule-strong); margin-bottom: 14px; }
49
- .step.output { background: var(--code-bg); border-color: var(--code-bg); padding: 10px 16px; }
50
- .step.output pre { color: var(--code-ink); font-family: var(--font-mono); font-size: 12px; line-height: 1.7; white-space: pre-wrap; word-break: break-word; }
55
+ .step.output { background: var(--card); border-color: var(--border); padding: 10px 16px; }
56
+ .step.output pre { color: var(--ink-secondary); font-family: var(--font-mono); font-size: 12px; line-height: 1.7; white-space: pre-wrap; word-break: break-word; }
57
+ .step.output.term { background: var(--code-bg); border-color: var(--code-bg); }
58
+ .step.output.term pre { color: var(--code-ink); }
51
59
  .step.result { background: var(--ink); border-color: var(--ink); margin-top: 14px; }
52
60
  .step.result .msg { color: var(--background); }
53
61
  .step-header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
@@ -59,12 +67,70 @@ body { font-family: var(--font-sans); background: var(--background); color: var(
59
67
  .msg { font-size: 14px; line-height: 1.65; white-space: pre-wrap; word-break: break-word; }
60
68
  .thinking { font-size: 13px; color: var(--muted); font-style: italic; margin-bottom: 8px; padding: 8px 12px; background: var(--secondary); border-radius: 4px; border-left: 2px solid var(--rule-strong); white-space: pre-wrap; word-break: break-word; }
61
69
  .tool { margin-bottom: 6px; }
62
- .tool-name { display: inline-flex; align-items: center; font-family: var(--font-mono); font-size: 11px; font-weight: 600; color: var(--ink); background: var(--secondary); border: 1px solid var(--border); padding: 2px 9px; border-radius: 4px; }
63
- .tool-args { margin-top: 6px; font-family: var(--font-mono); font-size: 12px; line-height: 1.7; color: var(--code-ink); background: var(--code-bg); padding: 10px 12px; border-radius: 6px; white-space: pre-wrap; word-break: break-word; }
70
+ .tool-name { display: inline-flex; align-items: center; font-family: var(--font-mono); font-size: 11px; font-weight: 600; color: var(--acc-ink, var(--ink)); background: var(--acc-bg, var(--secondary)); border: 1px solid var(--acc-line, var(--border)); padding: 2px 9px; border-radius: 4px; }
71
+ .tool-args { margin-top: 6px; font-family: var(--font-mono); font-size: 12px; line-height: 1.7; color: var(--ink-secondary); background: var(--secondary); border: 1px solid var(--border); padding: 10px 12px; border-radius: 6px; white-space: pre-wrap; word-break: break-word; }
72
+ .step.tool-step { border-left: 3px solid var(--acc-strip, var(--rule-strong)); }
73
+ .acc-bash { --acc-bg: #f7efda; --acc-line: #ecdcb2; --acc-ink: #8a5a12; --acc-strip: #dcb45e; }
74
+ .acc-edit { --acc-bg: #e8f0fa; --acc-line: #d0dff1; --acc-ink: #1d4e89; --acc-strip: #7fa8d8; }
75
+ .acc-read { --acc-bg: #e5f2ec; --acc-line: #cbe3d7; --acc-ink: #1a6b52; --acc-strip: #74bda0; }
76
+ .acc-agent { --acc-bg: #efeaf8; --acc-line: #ded3ef; --acc-ink: #5b3e96; --acc-strip: #a78fd6; }
77
+ .acc-web { --acc-bg: #e3f1f6; --acc-line: #c8e2ea; --acc-ink: #176478; --acc-strip: #6fb6ca; }
78
+ .acc-other { --acc-bg: var(--secondary); --acc-line: var(--border); --acc-ink: var(--ink-secondary); --acc-strip: var(--rule-strong); }
64
79
  .metrics { font-family: var(--font-mono); font-size: 11px; color: var(--faint); margin-top: 4px; }
65
80
  .turn-divider { border-top: 1px solid var(--border); margin: 24px 0; }
66
81
  """
67
82
 
83
+ # Sticky bottom confirmation bar injected only in --confirm mode. Styling
84
+ # reuses the page's CSS variables (white surface, top border, ink text, pill
85
+ # buttons) so it reads as part of the same www.benchflow.ai design language.
86
+ # The <style> block rides along with the snippet so plain (non-confirm) pages
87
+ # carry zero confirm markup or CSS.
88
+ _CONFIRM_BAR_HTML = """\
89
+ <style>
90
+ body { padding-bottom: 104px; }
91
+ .confirm-bar { position: fixed; bottom: 0; left: 0; right: 0; background: var(--card); border-top: 1px solid var(--border); box-shadow: 0 -1px 3px rgba(10, 10, 10, 0.05); z-index: 10; }
92
+ .confirm-inner { max-width: 960px; margin: 0 auto; padding: 14px 20px; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
93
+ .confirm-question { font-size: 14px; font-weight: 500; color: var(--ink); }
94
+ .confirm-actions { display: flex; gap: 8px; flex: none; }
95
+ .confirm-btn { font-family: var(--font-sans); font-size: 13px; font-weight: 600; letter-spacing: -0.01em; padding: 8px 18px; border-radius: 9999px; cursor: pointer; transition: background 0.15s ease; }
96
+ .confirm-btn.approve { background: var(--ink); color: var(--background); border: 1px solid var(--ink); }
97
+ .confirm-btn.approve:hover { background: #262626; }
98
+ .confirm-btn.reject { background: var(--card); color: var(--ink); border: 1px solid var(--rule-strong); }
99
+ .confirm-btn.reject:hover { background: var(--secondary); }
100
+ </style>
101
+ <div class="confirm-bar">
102
+ <div class="confirm-inner" id="confirm-inner">
103
+ <span class="confirm-question">Submit this trajectory to the BenchFlow eval prize?</span>
104
+ <div class="confirm-actions">
105
+ <button class="confirm-btn approve" onclick="__benchDecide('approve')">Approve &amp; submit</button>
106
+ <button class="confirm-btn reject" onclick="__benchDecide('reject')">Not this one</button>
107
+ </div>
108
+ </div>
109
+ </div>
110
+ <script>
111
+ async function __benchDecide(choice) {
112
+ try {
113
+ await fetch("/decision", { method: "POST", body: choice });
114
+ } catch (err) {
115
+ // The server exits right after answering; a dropped socket is still a
116
+ // delivered decision, so fall through to the confirmation note.
117
+ }
118
+ document.getElementById("confirm-inner").innerHTML =
119
+ choice === "approve"
120
+ ? '<span class="confirm-question">Approved — go back to your agent.</span>'
121
+ : '<span class="confirm-question">Rejected — tell your agent which session instead.</span>';
122
+ }
123
+ </script>
124
+ """
125
+
126
+
127
+ def _inject_confirm_bar(page: str) -> str:
128
+ """Append the confirm bar just before </body> (or at the end as fallback)."""
129
+ if "</body>" in page:
130
+ return page.replace("</body>", f"{_CONFIRM_BAR_HTML}</body>", 1)
131
+ return page + _CONFIRM_BAR_HTML
132
+
133
+
68
134
  # Small BenchFlow wordmark header (inline SVG logo from the site's icon set —
69
135
  # no external requests) shown above the page title on every viewer page.
70
136
  _WORDMARK_HTML = (
@@ -87,6 +153,28 @@ _WORDMARK_HTML = (
87
153
  )
88
154
 
89
155
 
156
+ # Tool kind → accent class. Substring matching so it covers Claude Code tool
157
+ # names (Bash, Write, Edit, Read, Agent, WebSearch, ...), ACP kinds (execute,
158
+ # edit, read, search, fetch, ...), and Codex function names (shell, ...).
159
+ # Order matters: earlier entries win (e.g. "websearch" hits web before read).
160
+ _TOOL_ACCENTS: tuple[tuple[str, tuple[str, ...]], ...] = (
161
+ ("acc-web", ("web", "search", "fetch", "grep", "glob", "browser")),
162
+ ("acc-bash", ("bash", "shell", "exec", "terminal", "command")),
163
+ ("acc-edit", ("write", "edit", "patch", "delete", "move", "notebook")),
164
+ ("acc-read", ("read", "cat", "view", "ls", "list")),
165
+ ("acc-agent", ("agent", "task", "skill", "oracle")),
166
+ )
167
+
168
+
169
+ def _tool_accent_class(name: str) -> str:
170
+ """Map a tool name/kind to its accent CSS class (presentation only)."""
171
+ lowered = name.lower()
172
+ for css_class, needles in _TOOL_ACCENTS:
173
+ if any(needle in lowered for needle in needles):
174
+ return css_class
175
+ return "acc-other"
176
+
177
+
90
178
  def render_turn(events: list[dict], turn_number: int, prompt: str = "") -> str:
91
179
  """Render one turn's events as HTML blocks."""
92
180
  blocks = []
@@ -103,6 +191,9 @@ def render_turn(events: list[dict], turn_number: int, prompt: str = "") -> str:
103
191
  # Group: thinking → text → tool_use → tool_result → thinking → ...
104
192
  pending_thinking = ""
105
193
  pending_text = ""
194
+ # tool_use id → accent class, so each tool_result can match its call's
195
+ # accent and shell results alone keep the dark terminal treatment.
196
+ accent_by_tool_id: dict[str, str] = {}
106
197
 
107
198
  for event in events:
108
199
  etype = event.get("type", "")
@@ -160,7 +251,13 @@ def render_turn(events: list[dict], turn_number: int, prompt: str = "") -> str:
160
251
  f"</div>"
161
252
  )
162
253
 
163
- blocks.append(f'<div class="step agent">{"".join(parts)}</div>')
254
+ accent = _tool_accent_class(block.get("name", ""))
255
+ if block.get("id"):
256
+ accent_by_tool_id[str(block["id"])] = accent
257
+ blocks.append(
258
+ f'<div class="step agent tool-step {accent}">'
259
+ f"{''.join(parts)}</div>"
260
+ )
164
261
 
165
262
  elif etype == "user":
166
263
  content = event.get("message", {}).get("content", "")
@@ -181,8 +278,13 @@ def render_turn(events: list[dict], turn_number: int, prompt: str = "") -> str:
181
278
  display = "[binary content]"
182
279
  else:
183
280
  display = html.escape(raw[:400])
281
+ accent = accent_by_tool_id.get(
282
+ str(block.get("tool_use_id", "")), "acc-other"
283
+ )
284
+ term = " term" if accent == "acc-bash" else ""
184
285
  blocks.append(
185
- f'<div class="step output"><pre>{display}</pre></div>'
286
+ f'<div class="step output tool-step {accent}{term}">'
287
+ f"<pre>{display}</pre></div>"
186
288
  )
187
289
  elif block.get("type") == "text" and block.get("text"):
188
290
  texts.append(str(block["text"]))
@@ -408,8 +510,13 @@ def _render_acp_events(
408
510
  kind = html.escape(event.get("kind", ""))
409
511
  event_title = html.escape(event.get("title", ""))
410
512
  status = event.get("status", "")
513
+ # ACP kinds are coarse ("other" covers Skill/Task/...); when the
514
+ # kind doesn't map, fall back to the human title for the accent.
515
+ accent = _tool_accent_class(event.get("kind", ""))
516
+ if accent == "acc-other":
517
+ accent = _tool_accent_class(event.get("title", ""))
411
518
  blocks.append(
412
- f'<div class="step agent">'
519
+ f'<div class="step agent tool-step {accent}">'
413
520
  f'<div class="tool"><span class="tool-name">{kind}</span> {event_title}</div>'
414
521
  f'<div class="metrics">{status}</div>'
415
522
  f"</div>"
@@ -578,9 +685,21 @@ def _stream_json_page(title: str, events: list[dict], turn_blocks: list[str]) ->
578
685
 
579
686
 
580
687
  def serve(
581
- rollout_path: str, port: int = 8888, prompts: list[str] | None = None
582
- ) -> None:
583
- """Serve a trial directory or a session JSONL file as a web page."""
688
+ rollout_path: str,
689
+ port: int = 8888,
690
+ prompts: list[str] | None = None,
691
+ confirm: bool = False,
692
+ ) -> str | None:
693
+ """Serve a trial directory or a session JSONL file as a web page.
694
+
695
+ With ``confirm=True`` the page carries an Approve/Reject bar posting to
696
+ ``/decision``; the first valid decision shuts the server down and is
697
+ returned as ``"approved"`` or ``"rejected"`` after printing a
698
+ machine-readable ``DECISION: <value>`` line to stdout. Without it the
699
+ server runs until Ctrl+C and the return value is ``None`` — exactly the
700
+ pre-confirm behavior (no bar, no POST endpoint).
701
+ """
702
+ import threading
584
703
  from http.server import HTTPServer, SimpleHTTPRequestHandler
585
704
 
586
705
  path = Path(rollout_path)
@@ -600,11 +719,20 @@ def serve(
600
719
  print(f"No trajectories found in {path}")
601
720
  sys.exit(1)
602
721
  if write_sidecar:
722
+ # The sidecar stays the plain page: the confirm bar is a one-shot
723
+ # interaction against this live server, not part of the artifact.
603
724
  (path / "trajectory.html").write_text(html_content)
725
+ if confirm:
726
+ html_content = _inject_confirm_bar(html_content)
604
727
 
605
728
  print(f"Trajectory viewer: http://localhost:{port}")
606
729
  print(f"Trial: {path}")
607
- print("Press Ctrl+C to stop\n")
730
+ if confirm:
731
+ print("Waiting for Approve / Not this one in the browser (Ctrl+C to stop)\n")
732
+ else:
733
+ print("Press Ctrl+C to stop\n")
734
+
735
+ decision: str | None = None
608
736
 
609
737
  class Handler(SimpleHTTPRequestHandler):
610
738
  def do_GET(self):
@@ -616,11 +744,44 @@ def serve(
616
744
  def log_message(self, format, *args):
617
745
  pass
618
746
 
619
- server = HTTPServer(("localhost", port), Handler)
747
+ handler_cls: type[SimpleHTTPRequestHandler] = Handler
748
+
749
+ if confirm:
750
+
751
+ class ConfirmHandler(Handler):
752
+ def do_POST(self):
753
+ nonlocal decision
754
+ if self.path != "/decision":
755
+ self.send_error(404)
756
+ return
757
+ length = int(self.headers.get("Content-Length") or 0)
758
+ body = self.rfile.read(length).decode("utf-8", "replace").strip()
759
+ if body not in ("approve", "reject"):
760
+ self.send_error(400, "Body must be 'approve' or 'reject'")
761
+ return
762
+ decision = "approved" if body == "approve" else "rejected"
763
+ self.send_response(200)
764
+ self.send_header("Content-Type", "text/plain; charset=utf-8")
765
+ self.end_headers()
766
+ self.wfile.write(decision.encode())
767
+ # shutdown() blocks until serve_forever returns, and this
768
+ # handler runs inside that loop — stop from a helper thread.
769
+ threading.Thread(target=server.shutdown, daemon=True).start()
770
+
771
+ handler_cls = ConfirmHandler
772
+
773
+ server = HTTPServer(("localhost", port), handler_cls)
620
774
  try:
621
775
  server.serve_forever()
622
776
  except KeyboardInterrupt:
623
777
  print("\nStopped.")
778
+ return None
779
+ finally:
780
+ server.server_close()
781
+
782
+ if decision is not None:
783
+ print(f"DECISION: {decision}", flush=True)
784
+ return decision
624
785
 
625
786
 
626
787
  if __name__ == "__main__":
@@ -747,7 +747,8 @@ def test_setup_prompt_prints_the_copy_paste_line() -> None:
747
747
  assert len(prompt_lines) == 3
748
748
  for line in prompt_lines:
749
749
  assert line in readme_text
750
- assert "send them to your coding agent" in readme_text
750
+ # Wording updated on main in 8cae2a42 ("Send these to your coding agent.").
751
+ assert "Send these to your coding agent" in readme_text
751
752
 
752
753
  assert UPGRADE_COMMAND in CONTRIBUTOR_PROMPT
753
754
  assert CONTRIBUTOR_PROMPT.index(UPGRADE_COMMAND) < CONTRIBUTOR_PROMPT.index(
@@ -0,0 +1,205 @@
1
+ """Tests for the trajectory viewer's --confirm flow (in-browser approve/reject).
2
+
3
+ Guards the feature shipped in PR #1021: --confirm must add the decision bar +
4
+ /decision endpoint and the DECISION stdout/exit-code contract, while plain
5
+ mode stays byte-for-byte the pre-#1021 viewer.
6
+
7
+ The eval-prize contributor loop is agent-driven: the agent serves the viewer,
8
+ the human clicks **Approve & submit** or **Not this one**, and the process
9
+ reports the decision via a machine-readable ``DECISION:`` stdout line plus the
10
+ exit code (0 approve, 3 reject) so the agent can wait on it instead of a chat
11
+ reply.
12
+ """
13
+
14
+ from __future__ import annotations
15
+
16
+ import json
17
+ import socket
18
+ import threading
19
+ import time
20
+ import urllib.error
21
+ import urllib.request
22
+ from pathlib import Path
23
+
24
+ import pytest
25
+ from typer.testing import CliRunner
26
+
27
+ from benchflow.cli.main import app
28
+ from benchflow.trajectories import viewer
29
+ from benchflow.trajectories.viewer import render_jsonl_file, serve
30
+
31
+ runner = CliRunner()
32
+
33
+ _BAR_NEEDLES = (
34
+ "Submit this trajectory to the BenchFlow eval prize?",
35
+ "Approve &amp; submit",
36
+ "Not this one",
37
+ "/decision",
38
+ )
39
+
40
+
41
+ def _write_session(tmp_path: Path) -> Path:
42
+ session = tmp_path / "session.jsonl"
43
+ session.write_text(
44
+ json.dumps({"type": "user", "message": {"content": "review me"}}) + "\n"
45
+ )
46
+ return session
47
+
48
+
49
+ def _free_port() -> int:
50
+ with socket.socket() as s:
51
+ s.bind(("localhost", 0))
52
+ return s.getsockname()[1]
53
+
54
+
55
+ def _serve_in_thread(
56
+ path: Path, *, confirm: bool
57
+ ) -> tuple[int, threading.Thread, dict]:
58
+ """Run serve() in a daemon thread; poll GET / until it answers."""
59
+ port = _free_port()
60
+ result: dict = {}
61
+
62
+ def run() -> None:
63
+ result["decision"] = serve(str(path), port, confirm=confirm)
64
+
65
+ thread = threading.Thread(target=run, daemon=True)
66
+ thread.start()
67
+ deadline = time.monotonic() + 10
68
+ while True:
69
+ try:
70
+ with urllib.request.urlopen(f"http://localhost:{port}/", timeout=1) as r:
71
+ result["page"] = r.read().decode()
72
+ break
73
+ except OSError:
74
+ if time.monotonic() > deadline:
75
+ raise
76
+ time.sleep(0.05)
77
+ return port, thread, result
78
+
79
+
80
+ def _post_decision(port: int, body: str) -> str:
81
+ req = urllib.request.Request(
82
+ f"http://localhost:{port}/decision", data=body.encode(), method="POST"
83
+ )
84
+ with urllib.request.urlopen(req, timeout=5) as r:
85
+ return r.read().decode()
86
+
87
+
88
+ def test_confirm_page_has_bar_and_plain_page_does_not(tmp_path):
89
+ """--confirm injects the sticky decision bar; plain rendering carries none of it."""
90
+ session = _write_session(tmp_path)
91
+
92
+ plain_html = render_jsonl_file(session)
93
+ for needle in _BAR_NEEDLES:
94
+ assert needle not in plain_html
95
+
96
+ port, thread, result = _serve_in_thread(session, confirm=True)
97
+ for needle in _BAR_NEEDLES:
98
+ assert needle in result["page"]
99
+
100
+ # Shut the server down so the thread exits.
101
+ _post_decision(port, "reject")
102
+ thread.join(timeout=10)
103
+ assert not thread.is_alive()
104
+
105
+
106
+ @pytest.mark.parametrize(
107
+ "body, expected", [("approve", "approved"), ("reject", "rejected")]
108
+ )
109
+ def test_post_decision_returns_decision_and_prints_line(
110
+ tmp_path, capsys, body, expected
111
+ ):
112
+ """POST /decision shuts the server down; serve() returns the decision and
113
+ prints exactly one machine-readable DECISION line to stdout."""
114
+ session = _write_session(tmp_path)
115
+ port, thread, result = _serve_in_thread(session, confirm=True)
116
+
117
+ response = _post_decision(port, body)
118
+ thread.join(timeout=10)
119
+ assert not thread.is_alive()
120
+
121
+ assert response == expected
122
+ assert result["decision"] == expected
123
+ out = capsys.readouterr().out
124
+ assert out.count(f"DECISION: {expected}") == 1
125
+
126
+
127
+ def test_post_decision_rejects_garbage_body(tmp_path):
128
+ """A body other than approve/reject is a 400 and keeps the server alive."""
129
+ session = _write_session(tmp_path)
130
+ port, thread, result = _serve_in_thread(session, confirm=True)
131
+
132
+ with pytest.raises(urllib.error.HTTPError) as exc:
133
+ _post_decision(port, "maybe")
134
+ assert exc.value.code == 400
135
+ assert thread.is_alive() # still waiting for a real decision
136
+
137
+ _post_decision(port, "reject")
138
+ thread.join(timeout=10)
139
+ assert result["decision"] == "rejected"
140
+
141
+
142
+ def test_plain_mode_has_no_decision_endpoint(tmp_path):
143
+ """Without --confirm, POST /decision does not exist (501 from the stdlib
144
+ handler) and GET / serves the page exactly as before."""
145
+ session = _write_session(tmp_path)
146
+ port, _thread, result = _serve_in_thread(session, confirm=False)
147
+
148
+ assert "review me" in result["page"]
149
+ with pytest.raises(urllib.error.HTTPError) as exc:
150
+ _post_decision(port, "approve")
151
+ assert exc.value.code == 501
152
+ # The plain server only stops on Ctrl+C; the daemon thread is reaped at
153
+ # process exit, matching the documented always-on behavior.
154
+
155
+
156
+ def test_confirm_sidecar_stays_plain(tmp_path):
157
+ """The trajectory.html sidecar written for directories must not embed the
158
+ one-shot confirm bar."""
159
+ rollout = tmp_path / "rollout"
160
+ rollout.mkdir()
161
+ (rollout / "turn1.txt").write_text(
162
+ '{"type":"system","session_id":"s","model":"m"}\n'
163
+ )
164
+ port, thread, _result = _serve_in_thread(rollout, confirm=True)
165
+ sidecar = (rollout / "trajectory.html").read_text()
166
+ for needle in _BAR_NEEDLES:
167
+ assert needle not in sidecar
168
+
169
+ _post_decision(port, "reject")
170
+ thread.join(timeout=10)
171
+
172
+
173
+ @pytest.mark.parametrize(
174
+ "decision, expected_exit", [("approved", 0), ("rejected", 3), (None, 0)]
175
+ )
176
+ def test_eval_view_maps_decision_to_exit_code(
177
+ tmp_path, monkeypatch, decision, expected_exit
178
+ ):
179
+ """The Typer command owns the exit-code mapping: approve → 0, reject → 3
180
+ (non-1/2 so it cannot collide with error or usage exits), Ctrl+C → 0."""
181
+ calls: dict = {}
182
+
183
+ def fake_serve(path, port=8888, prompts=None, confirm=False):
184
+ calls["confirm"] = confirm
185
+ return decision
186
+
187
+ monkeypatch.setattr(viewer, "serve", fake_serve)
188
+ res = runner.invoke(app, ["eval", "view", str(tmp_path), "--confirm"])
189
+ assert res.exit_code == expected_exit
190
+ assert calls["confirm"] is True
191
+
192
+
193
+ def test_eval_view_defaults_to_no_confirm(tmp_path, monkeypatch):
194
+ """Without the flag, serve() must be called with confirm=False so today's
195
+ behavior (no bar, no endpoint) is preserved."""
196
+ calls: dict = {}
197
+
198
+ def fake_serve(path, port=8888, prompts=None, confirm=False):
199
+ calls["confirm"] = confirm
200
+ return None
201
+
202
+ monkeypatch.setattr(viewer, "serve", fake_serve)
203
+ res = runner.invoke(app, ["eval", "view", str(tmp_path)])
204
+ assert res.exit_code == 0
205
+ assert calls["confirm"] is False