benchflow 0.7.2.dev1986__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.dev1986 → benchflow-0.7.2.dev1994}/CHANGELOG.md +36 -0
  2. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/PKG-INFO +14 -11
  3. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/README.md +13 -10
  4. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/pyproject.toml +1 -1
  5. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/main.py +19 -3
  6. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/traj.py +23 -10
  7. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/viewer.py +176 -15
  8. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traj_upload_cli.py +36 -5
  9. benchflow-0.7.2.dev1994/tests/test_viewer_confirm.py +205 -0
  10. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/.gitignore +0 -0
  11. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/LICENSE +0 -0
  12. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/__init__.py +0 -0
  13. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_dotenv.py +0 -0
  14. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_paths.py +0 -0
  15. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_run.py +0 -0
  16. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_types.py +0 -0
  17. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/__init__.py +0 -0
  18. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/benchmark_repos.py +0 -0
  19. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/build_context_stage.py +0 -0
  20. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/config.py +0 -0
  21. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/config_override.py +0 -0
  22. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/content_address.py +0 -0
  23. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/dataset_registry.py +0 -0
  24. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/env_registry.py +0 -0
  25. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/evaluation_results.py +0 -0
  26. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/hf_datasets.py +0 -0
  27. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/json_safe.py +0 -0
  28. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/learner_memory.py +0 -0
  29. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/live_activity.py +0 -0
  30. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/result_metadata.py +0 -0
  31. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/reward_events.py +0 -0
  32. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/scoring.py +0 -0
  33. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/source_provenance.py +0 -0
  34. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/__init__.py +0 -0
  35. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/_evidence_paths.py +0 -0
  36. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/acceptance_evidence.py +0 -0
  37. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/scaffolding.py +0 -0
  38. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/structural_checks.py +0 -0
  39. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/text.py +0 -0
  40. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/yaml_loader.py +0 -0
  41. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/__init__.py +0 -0
  42. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/client.py +0 -0
  43. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/container_transport.py +0 -0
  44. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/runtime.py +0 -0
  45. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/selection.py +0 -0
  46. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/session.py +0 -0
  47. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/transport.py +0 -0
  48. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/types.py +0 -0
  49. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/__init__.py +0 -0
  50. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon.py +0 -0
  51. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon_container.py +0 -0
  52. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon_fake_mail.py +0 -0
  53. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon_poste_users.tsv +0 -0
  54. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon_services.py +0 -0
  55. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/harbor.py +0 -0
  56. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/inbound.py +0 -0
  57. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/inspect_ai.py +0 -0
  58. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/ors.py +0 -0
  59. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/resources/__init__.py +0 -0
  60. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/resources/mcp_atlas_bridge.py +0 -0
  61. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/resources/mcp_atlas_judge.py +0 -0
  62. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/source.py +0 -0
  63. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agent_router.py +0 -0
  64. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agent_router_guide.py +0 -0
  65. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agent_router_parity.py +0 -0
  66. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agent_router_scaffold.py +0 -0
  67. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/__init__.py +0 -0
  68. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/codex_config.py +0 -0
  69. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/credentials.py +0 -0
  70. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/deepagents_acp_shim.py +0 -0
  71. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/env.py +0 -0
  72. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/errors.py +0 -0
  73. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/harvey_lab_acp_shim.py +0 -0
  74. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/install.py +0 -0
  75. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/manifest.py +0 -0
  76. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/openclaw_acp_shim.py +0 -0
  77. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/pi_acp_launcher.py +0 -0
  78. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/protocol.py +0 -0
  79. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/providers.py +0 -0
  80. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/registry.py +0 -0
  81. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/remote_manifests.py +0 -0
  82. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/branch.py +0 -0
  83. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/__init__.py +0 -0
  84. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_failure_evidence.py +0 -0
  85. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_hosted_env.py +0 -0
  86. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_live_progress.py +0 -0
  87. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_options.py +0 -0
  88. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_shared.py +0 -0
  89. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_traj_upload_ui.py +0 -0
  90. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/adopt.py +0 -0
  91. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/agent.py +0 -0
  92. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/continue_cmd.py +0 -0
  93. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/environment.py +0 -0
  94. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/eval_artifacts.py +0 -0
  95. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/eval_lift.py +0 -0
  96. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/hub.py +0 -0
  97. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/monitor.py +0 -0
  98. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/review.py +0 -0
  99. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/sandbox.py +0 -0
  100. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/skills.py +0 -0
  101. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/tasks.py +0 -0
  102. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/trace_import.py +0 -0
  103. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/train.py +0 -0
  104. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/__init__.py +0 -0
  105. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/batch.py +0 -0
  106. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/orchestrator.py +0 -0
  107. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/replay_proxy.py +0 -0
  108. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/run_folder.py +0 -0
  109. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/sandbox_proxy.py +0 -0
  110. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/contracts/__init__.py +0 -0
  111. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/contracts/planes.py +0 -0
  112. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/contracts/user.py +0 -0
  113. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/environment/Dockerfile +0 -0
  114. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/instruction.md +0 -0
  115. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/task.md +0 -0
  116. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/task.toml +0 -0
  117. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/tests/test.sh +0 -0
  118. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/diagnostics.py +0 -0
  119. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/__init__.py +0 -0
  120. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/_registry/env0@outage.toml +0 -0
  121. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/_registry/env0@prod.toml +0 -0
  122. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/manifest.py +0 -0
  123. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/manifest_env.py +0 -0
  124. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/protocol.py +0 -0
  125. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/readiness.py +0 -0
  126. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/eval_artifacts.py +0 -0
  127. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/eval_lift.py +0 -0
  128. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/eval_plan.py +0 -0
  129. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/eval_sharding.py +0 -0
  130. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/eval_worker.py +0 -0
  131. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/evaluation.py +0 -0
  132. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/experimental/__init__.py +0 -0
  133. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/experimental/mcp/__init__.py +0 -0
  134. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/experimental/mcp/hooks.py +0 -0
  135. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/experimental/mcp/reviewer_server.py +0 -0
  136. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/hosted_env.py +0 -0
  137. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/hub/__init__.py +0 -0
  138. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/hub/harbor_registry.py +0 -0
  139. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/integrations/__init__.py +0 -0
  140. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/integrations/trl/__init__.py +0 -0
  141. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/integrations/trl/spec.py +0 -0
  142. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/learner_skills.py +0 -0
  143. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/learner_store.py +0 -0
  144. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/loop_strategies.py +0 -0
  145. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/loop_sweep.py +0 -0
  146. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/metrics.py +0 -0
  147. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/models.py +0 -0
  148. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/monitor.py +0 -0
  149. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/__init__.py +0 -0
  150. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_bedrock_patch.py +0 -0
  151. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_bedrock_preflight.py +0 -0
  152. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_config.py +0 -0
  153. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_logging.py +0 -0
  154. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_runtime.py +0 -0
  155. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/runtime.py +0 -0
  156. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/__init__.py +0 -0
  157. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/_progress.py +0 -0
  158. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/azure_blob.py +0 -0
  159. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/broker.py +0 -0
  160. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/huggingface.py +0 -0
  161. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/redact.py +0 -0
  162. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/traj_capture.py +0 -0
  163. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/traj_report.py +0 -0
  164. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/py.typed +0 -0
  165. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/review/__init__.py +0 -0
  166. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/review/config.py +0 -0
  167. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/review/default-rubric.json +0 -0
  168. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/review/prompts.py +0 -0
  169. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/review/runner.py +0 -0
  170. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/review/wrapper.py +0 -0
  171. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/README.md +0 -0
  172. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/__init__.py +0 -0
  173. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/builtins.py +0 -0
  174. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/events.py +0 -0
  175. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/file_readers.py +0 -0
  176. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/llm.py +0 -0
  177. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/memory_scorer.py +0 -0
  178. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/node.py +0 -0
  179. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/protocol.py +0 -0
  180. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/rubric.py +0 -0
  181. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/rubric_config.py +0 -0
  182. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/validation.py +0 -0
  183. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/__init__.py +0 -0
  184. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_config.py +0 -0
  185. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_deadline.py +0 -0
  186. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_results.py +0 -0
  187. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_setup.py +0 -0
  188. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_skills.py +0 -0
  189. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_usage.py +0 -0
  190. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_user_loop.py +0 -0
  191. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/session_factory_runtime.py +0 -0
  192. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/task_runtime.py +0 -0
  193. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout_branch.py +0 -0
  194. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout_planes.py +0 -0
  195. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/runtime.py +0 -0
  196. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/__init__.py +0 -0
  197. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_base.py +0 -0
  198. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_cache_reclaim.py +0 -0
  199. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose.py +0 -0
  200. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose_files/docker-compose-base.yaml +0 -0
  201. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose_files/docker-compose-build.yaml +0 -0
  202. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose_files/docker-compose-no-network.yaml +0 -0
  203. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose_files/docker-compose-prebuilt.yaml +0 -0
  204. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_sdk_ops.py +0 -0
  205. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore.py +0 -0
  206. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_builder.py +0 -0
  207. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_image.py +0 -0
  208. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_provisioning.py +0 -0
  209. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_reaper.py +0 -0
  210. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_sealed.py +0 -0
  211. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/apple_container.py +0 -0
  212. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona.py +0 -0
  213. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona_dind.py +0 -0
  214. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona_pty.py +0 -0
  215. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona_reaper.py +0 -0
  216. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona_strategies.py +0 -0
  217. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/docker.py +0 -0
  218. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/lockdown.py +0 -0
  219. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/metadata.py +0 -0
  220. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/modal_impl.py +0 -0
  221. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/__init__.py +0 -0
  222. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/_base.py +0 -0
  223. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/agentcore.py +0 -0
  224. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/apple.py +0 -0
  225. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/daytona.py +0 -0
  226. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/docker.py +0 -0
  227. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/protocol.py +0 -0
  228. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/providers.py +0 -0
  229. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/services.py +0 -0
  230. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/setup.py +0 -0
  231. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/snapshot.py +0 -0
  232. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/user.py +0 -0
  233. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/scenes.py +0 -0
  234. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sdk.py +0 -0
  235. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/self_gen.py +0 -0
  236. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/skill_eval/__init__.py +0 -0
  237. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/skill_eval/_core.py +0 -0
  238. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/skill_eval/gepa_export.py +0 -0
  239. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/skill_eval/schema.py +0 -0
  240. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/skill_policy.py +0 -0
  241. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/skills.py +0 -0
  242. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/__init__.py +0 -0
  243. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/_document_evidence.py +0 -0
  244. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/_document_normalize.py +0 -0
  245. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/_document_parse.py +0 -0
  246. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/_document_profiles.py +0 -0
  247. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/acceptance_live.py +0 -0
  248. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/acceptance_live_model.py +0 -0
  249. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/acceptance_live_report.py +0 -0
  250. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/acceptance_live_validation.py +0 -0
  251. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/config.py +0 -0
  252. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/discovery.py +0 -0
  253. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/document.py +0 -0
  254. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/env.py +0 -0
  255. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/export.py +0 -0
  256. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/imports.py +0 -0
  257. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/output_format.py +0 -0
  258. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/package.py +0 -0
  259. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/paths.py +0 -0
  260. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/prompts.py +0 -0
  261. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/runtime_capabilities.py +0 -0
  262. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/runtime_view.py +0 -0
  263. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/task.py +0 -0
  264. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier.py +0 -0
  265. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_core.py +0 -0
  266. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_document.py +0 -0
  267. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_errors.py +0 -0
  268. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_judge_inputs.py +0 -0
  269. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_ors_episode.py +0 -0
  270. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_reward_kit.py +0 -0
  271. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_scan.py +0 -0
  272. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_script_strategy.py +0 -0
  273. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/templates/__init__.py +0 -0
  274. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/templates/judge.py.tmpl +0 -0
  275. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/templates/test.sh.tmpl +0 -0
  276. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/traces/__init__.py +0 -0
  277. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/traces/huggingface.py +0 -0
  278. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/traces/local.py +0 -0
  279. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/traces/models.py +0 -0
  280. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/traces/parsers.py +0 -0
  281. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/traces/task_gen.py +0 -0
  282. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/training/__init__.py +0 -0
  283. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/training/backends/__init__.py +0 -0
  284. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/training/backends/prime_rl.py +0 -0
  285. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/training/run_manifest.py +0 -0
  286. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/__init__.py +0 -0
  287. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/_capture.py +0 -0
  288. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/_export_common.py +0 -0
  289. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/_llm_capture.py +0 -0
  290. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/call_purpose.py +0 -0
  291. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export.py +0 -0
  292. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export_adp.py +0 -0
  293. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export_atif.py +0 -0
  294. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export_prime_sft.py +0 -0
  295. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export_trl_sft.py +0 -0
  296. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/metrics.py +0 -0
  297. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/results.py +0 -0
  298. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/sessions.py +0 -0
  299. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/tree.py +0 -0
  300. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/trl_sft_tokenization.py +0 -0
  301. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/types.py +0 -0
  302. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/usage_tracking.py +0 -0
  303. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/__init__.py +0 -0
  304. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/acceptance_live_harness.py +0 -0
  305. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/__init__.py +0 -0
  306. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_manifest_dirscan.py +0 -0
  307. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_manifest_loader.py +0 -0
  308. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_manifest_parity.py +0 -0
  309. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_manifest_wiring.py +0 -0
  310. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_namespace_shorthand.py +0 -0
  311. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_plugin_entry_points.py +0 -0
  312. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_protocol.py +0 -0
  313. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_remote_manifest_autoload.py +0 -0
  314. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/README.md +0 -0
  315. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/environment/Dockerfile +0 -0
  316. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/environment/docker-compose.yaml +0 -0
  317. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/environment/skills/conformance-writer/SKILL.md +0 -0
  318. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/instruction.md +0 -0
  319. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/solution/solve.sh +0 -0
  320. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/task.md +0 -0
  321. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/task.toml +0 -0
  322. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/tests/test.sh +0 -0
  323. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/conformance-results.json +0 -0
  324. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/proof_multi_agent.py +0 -0
  325. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/proof_snapshot.py +0 -0
  326. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/run_conformance.py +0 -0
  327. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/self_gen_smoke_skills/skill-creator/SKILL.md +0 -0
  328. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conftest.py +0 -0
  329. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/continue_run/__init__.py +0 -0
  330. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/continue_run/_helpers.py +0 -0
  331. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/continue_run/test_batch.py +0 -0
  332. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/continue_run/test_orchestrator.py +0 -0
  333. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/continue_run/test_replay_proxy.py +0 -0
  334. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/continue_run/test_run_folder.py +0 -0
  335. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/__init__.py +0 -0
  336. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/test_chibench_manifest.py +0 -0
  337. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/test_clawsbench_manifest.py +0 -0
  338. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/test_manifest.py +0 -0
  339. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/test_manifest_env.py +0 -0
  340. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/test_protocol.py +0 -0
  341. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/test_readiness.py +0 -0
  342. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/environment/Dockerfile +0 -0
  343. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/instruction.md +0 -0
  344. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/solution/solve.sh +0 -0
  345. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/task.md +0 -0
  346. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/task.toml +0 -0
  347. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/tests/test.sh +0 -0
  348. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/test_claude.sh +0 -0
  349. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/test_codex.sh +0 -0
  350. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/test_codex_custom_provider.sh +0 -0
  351. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/test_gemini.sh +0 -0
  352. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/test_openclaw.sh +0 -0
  353. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/traces/minimal-claude.jsonl +0 -0
  354. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/traces/minimal-opentraces.jsonl +0 -0
  355. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/README.md +0 -0
  356. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/alpha-task/environment/Dockerfile +0 -0
  357. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/alpha-task/instruction.md +0 -0
  358. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/alpha-task/task.toml +0 -0
  359. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/alpha-task/tests/test.sh +0 -0
  360. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/beta-task/data/empty.bin +0 -0
  361. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/beta-task/data/unicode.txt +0 -0
  362. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/beta-task/instruction.md +0 -0
  363. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/beta-task/task.toml +0 -0
  364. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/not-a-task/notes.txt +0 -0
  365. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/mock_acp_agent.py +0 -0
  366. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/mock_acp_agent_interleaved.py +0 -0
  367. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/mock_acp_agent_multi_turn.py +0 -0
  368. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/mock_openai_responses_server.py +0 -0
  369. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/Dockerfile +0 -0
  370. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/data/michigan_stations.txt +0 -0
  371. {benchflow-0.7.2.dev1986 → 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.dev1986 → 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.dev1986 → 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.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/instruction.md +0 -0
  375. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/solution/solve.sh +0 -0
  376. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/task.toml +0 -0
  377. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test.sh +0 -0
  378. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test_outputs.py +0 -0
  379. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/Dockerfile +0 -0
  380. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/climate.csv +0 -0
  381. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/hydrology.csv +0 -0
  382. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/land_cover.csv +0 -0
  383. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/water_temperature.csv +0 -0
  384. {benchflow-0.7.2.dev1986 → 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.dev1986 → 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.dev1986 → 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.dev1986 → 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.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/instruction.md +0 -0
  389. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/solution/solve.sh +0 -0
  390. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/task.toml +0 -0
  391. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test.sh +0 -0
  392. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test_outputs.py +0 -0
  393. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/manifest.json +0 -0
  394. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/Dockerfile +0 -0
  395. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/r2r_simulator.py +0 -0
  396. {benchflow-0.7.2.dev1986 → 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.dev1986 → 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.dev1986 → 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.dev1986 → 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.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/system_config.json +0 -0
  401. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/instruction.md +0 -0
  402. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/solution/solve.sh +0 -0
  403. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/task.toml +0 -0
  404. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test.sh +0 -0
  405. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test_outputs.py +0 -0
  406. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/Dockerfile +0 -0
  407. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/generate_training_pcaps.py +0 -0
  408. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/local.rules +0 -0
  409. {benchflow-0.7.2.dev1986 → 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.dev1986 → 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.dev1986 → 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.dev1986 → 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.dev1986 → 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.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/suricata.yaml +0 -0
  415. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/instruction.md +0 -0
  416. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/solution/solve.sh +0 -0
  417. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/task.toml +0 -0
  418. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test.sh +0 -0
  419. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test_outputs.py +0 -0
  420. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/Dockerfile +0 -0
  421. {benchflow-0.7.2.dev1986 → 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.dev1986 → 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.dev1986 → 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.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/instruction.md +0 -0
  425. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/solution/solve.sh +0 -0
  426. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/task.toml +0 -0
  427. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test.sh +0 -0
  428. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test_outputs.py +0 -0
  429. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/_consistency.py +0 -0
  430. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/agent_judge.py +0 -0
  431. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/check_adapter_evidence.py +0 -0
  432. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/check_hosted_env_evidence.py +0 -0
  433. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/check_results.py +0 -0
  434. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/check_skillsbench_harbor_parity.py +0 -0
  435. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/check_trace_to_task_evidence.py +0 -0
  436. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/claude-agent-acp.yaml +0 -0
  437. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/codex-acp.yaml +0 -0
  438. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/gemini.yaml +0 -0
  439. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/harvey-lab-harness.yaml +0 -0
  440. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/mimo.yaml +0 -0
  441. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/openclaw.yaml +0 -0
  442. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/opencode.yaml +0 -0
  443. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/openhands.yaml +0 -0
  444. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/pi-acp.yaml +0 -0
  445. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/deepagents_harness.py +0 -0
  446. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/rubric_checks.py +0 -0
  447. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/run.sh +0 -0
  448. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/run_suite.py +0 -0
  449. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/scenarios.py +0 -0
  450. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/suites/release.yaml +0 -0
  451. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acceptance_evidence.py +0 -0
  452. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acceptance_live.py +0 -0
  453. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acceptance_live_execution.py +0 -0
  454. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acp.py +0 -0
  455. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acp_capability_advertising.py +0 -0
  456. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acp_mcp_servers.py +0 -0
  457. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acp_model_config_dispatch.py +0 -0
  458. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acp_pinned_protocol_guard.py +0 -0
  459. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acp_setup_failure_propagation.py +0 -0
  460. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_adapter_scripts.py +0 -0
  461. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_adapters.py +0 -0
  462. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_cli.py +0 -0
  463. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_env_resolution.py +0 -0
  464. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_gemini_defaults.py +0 -0
  465. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_idle_timeout_cli.py +0 -0
  466. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_model_decouple.py +0 -0
  467. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_registry.py +0 -0
  468. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_router.py +0 -0
  469. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_router_cli_e2e.py +0 -0
  470. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_router_scaffold.py +0 -0
  471. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_setup.py +0 -0
  472. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_spec.py +0 -0
  473. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agentcore_builder.py +0 -0
  474. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agentcore_parallel.py +0 -0
  475. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agentcore_reaper.py +0 -0
  476. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agentcore_sandbox.py +0 -0
  477. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agentcore_transport.py +0 -0
  478. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_api_error_capture.py +0 -0
  479. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_apple_container_sandbox.py +0 -0
  480. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_bare_model_provider.py +0 -0
  481. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_base_install_imports.py +0 -0
  482. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_bedrock_thinking.py +0 -0
  483. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_benchflow_experiment_review_validator.py +0 -0
  484. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_benchmark_repos_resolve_repo_path.py +0 -0
  485. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_branch.py +0 -0
  486. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_build_context_stage.py +0 -0
  487. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_build_review_pack.py +0 -0
  488. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_capture_trajectory.py +0 -0
  489. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_check_skillsbench_harbor_parity.py +0 -0
  490. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_clawsbench_slice.py +0 -0
  491. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_adopt_aliases.py +0 -0
  492. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_arg_validation.py +0 -0
  493. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_daytona.py +0 -0
  494. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_docs_drift.py +0 -0
  495. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_edge_case_hardening.py +0 -0
  496. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_hub_env.py +0 -0
  497. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_live_progress.py +0 -0
  498. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_misc.py +0 -0
  499. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_codex_review.py +0 -0
  500. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_codex_self_write_auth.py +0 -0
  501. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_config_override.py +0 -0
  502. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_config_redaction.py +0 -0
  503. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_connect_as_env.py +0 -0
  504. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_console_error_truncation.py +0 -0
  505. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_console_progress.py +0 -0
  506. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_continuallearningbench_adapter.py +0 -0
  507. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_dataset_registry.py +0 -0
  508. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_daytona_command_polling.py +0 -0
  509. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_daytona_dind_compose_up.py +0 -0
  510. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_daytona_download.py +0 -0
  511. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_daytona_litellm_runtime.py +0 -0
  512. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_daytona_poll_deadline.py +0 -0
  513. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_daytona_reap.py +0 -0
  514. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_deepagents_agent.py +0 -0
  515. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_diagnostics.py +0 -0
  516. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_docker_prune_scoping.py +0 -0
  517. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_docker_uploads.py +0 -0
  518. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_docs_examples.py +0 -0
  519. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eng50_capabilities.py +0 -0
  520. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_env_registry.py +0 -0
  521. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_env_setup.py +0 -0
  522. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_environment_manifest_controls.py +0 -0
  523. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_artifact_cli.py +0 -0
  524. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_filters_applied.py +0 -0
  525. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_lift.py +0 -0
  526. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_sharding.py +0 -0
  527. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_single_task_summary.py +0 -0
  528. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_source_provenance.py +0 -0
  529. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_worker_retry.py +0 -0
  530. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_zero_task_guard.py +0 -0
  531. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_evaluation_environment_manifest.py +0 -0
  532. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_exclude_tasks.py +0 -0
  533. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_filter_credentialed_cells.py +0 -0
  534. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_harvey_lab_shim.py +0 -0
  535. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_hilbench_adapter.py +0 -0
  536. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_hosted_env.py +0 -0
  537. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_hosted_env_rollout_contract.py +0 -0
  538. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_hub_harbor_registry.py +0 -0
  539. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_inbound_adapter_manifest.py +0 -0
  540. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_inbound_adapters.py +0 -0
  541. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_agent_judge.py +0 -0
  542. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_check_results.py +0 -0
  543. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_consistency.py +0 -0
  544. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_matrix.py +0 -0
  545. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_provider_selection.py +0 -0
  546. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_run_suite.py +0 -0
  547. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_suite.py +0 -0
  548. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_internet_policy.py +0 -0
  549. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_job.py +0 -0
  550. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_job_sequential_shared.py +0 -0
  551. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_job_sequential_shared_resume.py +0 -0
  552. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_judge_robustness.py +0 -0
  553. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_judge_symlink_ingestion.py +0 -0
  554. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_learner_skills.py +0 -0
  555. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_learner_skills_traversal.py +0 -0
  556. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_learner_store.py +0 -0
  557. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_learner_store_persistence.py +0 -0
  558. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_config.py +0 -0
  559. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_hardening.py +0 -0
  560. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_logging.py +0 -0
  561. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_model_via_env_generic.py +0 -0
  562. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_reasoning_passthrough.py +0 -0
  563. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_runtime.py +0 -0
  564. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_smoke.py +0 -0
  565. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_live_llm_trajectory.py +0 -0
  566. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_llm_judge.py +0 -0
  567. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_llm_judge_event_tags.py +0 -0
  568. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_llm_judge_verifier.py +0 -0
  569. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_loop_strategies.py +0 -0
  570. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_loop_summary.py +0 -0
  571. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_loop_sweep.py +0 -0
  572. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_memory_scorer.py +0 -0
  573. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_metrics.py +0 -0
  574. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_mle_bench_adapter.py +0 -0
  575. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_mock_openai_responses_server.py +0 -0
  576. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_monitor_scaffold.py +0 -0
  577. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_native_acp_usage.py +0 -0
  578. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_no_cross_provider_fallback.py +0 -0
  579. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_notification_order_real.py +0 -0
  580. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_opencode_family_proxy_tracking.py +0 -0
  581. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_oracle.py +0 -0
  582. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_oracle_chokepoint.py +0 -0
  583. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_paths_safe.py +0 -0
  584. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_paths_symlink_helpers.py +0 -0
  585. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_pi_acp_launcher.py +0 -0
  586. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_pi_acp_proxy_routing.py +0 -0
  587. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_process.py +0 -0
  588. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_project_skills_layout.py +0 -0
  589. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_provider_auth_detection.py +0 -0
  590. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_providers.py +0 -0
  591. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_publish_azure_blob.py +0 -0
  592. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_reexport.py +0 -0
  593. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_registry_invariants.py +0 -0
  594. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_release_hardening_r5.py +0 -0
  595. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_release_version.py +0 -0
  596. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_release_workflow_wiring.py +0 -0
  597. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_resolve_env_helpers.py +0 -0
  598. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_review_boundaries.py +0 -0
  599. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_review_rubric.py +0 -0
  600. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_review_runtime.py +0 -0
  601. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_reward_lenient.py +0 -0
  602. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_reward_node.py +0 -0
  603. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_reward_range.py +0 -0
  604. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_reward_unified_contract.py +0 -0
  605. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rewards.py +0 -0
  606. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rewards_jsonl.py +0 -0
  607. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_architecture.py +0 -0
  608. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_branch.py +0 -0
  609. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_config_path_coercion.py +0 -0
  610. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_environment.py +0 -0
  611. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_hard_deadline.py +0 -0
  612. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_import_no_side_effects.py +0 -0
  613. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_on_ask_user_wiring.py +0 -0
  614. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_planes_contract.py +0 -0
  615. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_probe_sandbox_health.py +0 -0
  616. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_session_factory_dispatch.py +0 -0
  617. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_setup_commands.py +0 -0
  618. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_upload.py +0 -0
  619. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rubric_checks.py +0 -0
  620. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rubric_config.py +0 -0
  621. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_runtime.py +0 -0
  622. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_runtime_capabilities.py +0 -0
  623. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_runtime_config_wired.py +0 -0
  624. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_runtime_live_sandbox.py +0 -0
  625. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox.py +0 -0
  626. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_exec_secret_handling.py +0 -0
  627. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_hardening.py +0 -0
  628. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_isolation_copy_traversal.py +0 -0
  629. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_live_process.py +0 -0
  630. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_multi_service.py +0 -0
  631. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_prebuilt_validation.py +0 -0
  632. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_protocol.py +0 -0
  633. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_provider_registry_drift.py +0 -0
  634. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_setup.py +0 -0
  635. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_snapshot_contract.py +0 -0
  636. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_upload_symlink.py +0 -0
  637. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_verifier_workspace.py +0 -0
  638. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_scene.py +0 -0
  639. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_scene_outbox_trial.py +0 -0
  640. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_scene_parallel_group.py +0 -0
  641. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_scene_result_aggregation.py +0 -0
  642. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_scoring.py +0 -0
  643. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sdk_internals.py +0 -0
  644. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sdk_lockdown.py +0 -0
  645. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sdk_run_alias.py +0 -0
  646. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sealed_channel_container.py +0 -0
  647. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_self_gen_cli.py +0 -0
  648. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_self_gen_export_error_channel.py +0 -0
  649. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_self_gen_export_failures.py +0 -0
  650. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_self_gen_orchestration.py +0 -0
  651. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_session_factory_runtime.py +0 -0
  652. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_session_request_permission_dispatch.py +0 -0
  653. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_eval.py +0 -0
  654. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_eval_dryrun.py +0 -0
  655. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_eval_integration.py +0 -0
  656. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_eval_sweep.py +0 -0
  657. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_eval_traversal.py +0 -0
  658. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_invocation_artifacts.py +0 -0
  659. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_policy.py +0 -0
  660. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skills.py +0 -0
  661. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skills_dir_agent_home_link.py +0 -0
  662. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skillsbench_conversion_conformance.py +0 -0
  663. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skillsbench_harbor_run_suite.py +0 -0
  664. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_smoke.py +0 -0
  665. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_smoke_wiring.py +0 -0
  666. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_source_adapters.py +0 -0
  667. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_subscription_auth.py +0 -0
  668. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_check_eval_consistency.py +0 -0
  669. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_config.py +0 -0
  670. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_digest.py +0 -0
  671. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_document.py +0 -0
  672. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_download.py +0 -0
  673. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_export.py +0 -0
  674. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_output_format.py +0 -0
  675. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_package.py +0 -0
  676. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_runtime_primitive.py +0 -0
  677. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_tasks.py +0 -0
  678. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_token_usage_normalization.py +0 -0
  679. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trace_import_cli.py +0 -0
  680. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trace_task_gen_traversal.py +0 -0
  681. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trace_to_task_evidence.py +0 -0
  682. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traces_huggingface.py +0 -0
  683. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traces_parsers.py +0 -0
  684. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traces_task_gen.py +0 -0
  685. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_train_cli.py +0 -0
  686. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_train_mode_artifact_emission.py +0 -0
  687. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_train_trl_cli.py +0 -0
  688. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traj_report.py +0 -0
  689. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traj_staging_phases.py +0 -0
  690. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traj_upload_skill.py +0 -0
  691. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trajectory_integration.py +0 -0
  692. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trajectory_streaming.py +0 -0
  693. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trajectory_upload_layout.py +0 -0
  694. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trajectory_upload_service.py +0 -0
  695. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trial_agent_timeout_verify.py +0 -0
  696. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trial_install_agent_timeout.py +0 -0
  697. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trial_litellm_runtime.py +0 -0
  698. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trl_integration.py +0 -0
  699. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_usage_litellm.py +0 -0
  700. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_usage_required.py +0 -0
  701. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_usage_tracking.py +0 -0
  702. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_user.py +0 -0
  703. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_v06_guard_ports.py +0 -0
  704. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verifier_document.py +0 -0
  705. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verifier_multi_container.py +0 -0
  706. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verifier_output.py +0 -0
  707. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verifier_output_freshness.py +0 -0
  708. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verifier_strategies.py +0 -0
  709. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verifier_wedge_retry.py +0 -0
  710. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verify.py +0 -0
  711. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_workflow_action_pinning.py +0 -0
  712. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_yaml_config.py +0 -0
  713. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/__init__.py +0 -0
  714. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export.py +0 -0
  715. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_adp.py +0 -0
  716. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_atif.py +0 -0
  717. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_common.py +0 -0
  718. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_nan_handling.py +0 -0
  719. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_prime_sft.py +0 -0
  720. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_redaction.py +0 -0
  721. {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_step_granularity.py +0 -0
  722. {benchflow-0.7.2.dev1986 → 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,31 @@
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.
39
+ - **The contributor prompt now tells the agent to upgrade BenchFlow first.**
40
+ `CONTRIBUTOR_PROMPT` (kept in sync in `README.md`, `docs/traj-upload.md`,
41
+ and the `benchflow-traj-upload` skill evals) is a three-line block that
42
+ says to run `uv tool install --python 3.12 --upgrade --force benchflow`
43
+ before reading the skill, so agents that skim the skill or hit a stale copy
44
+ still install the latest CLI. The prompt also names OpenCode and Cursor
45
+ sessions and the re:Agent hackathon 72-hour window; README/docs render it
46
+ as a blockquote (soft-wraps on GitHub) behind an explicit "send this to
47
+ your coding agent" framing, and `bench traj setup` prints the same framing.
48
+ The skill's Discover step gains best-effort Cursor
49
+ (`~/.cursor/projects/*/agent-transcripts/`) and OpenCode
50
+ (`~/.local/share/opencode/opencode.db`, `opencode db path`) locations plus
51
+ a prefer-recent-matching-sessions note. Follow-up to the version
52
+ precondition from #1013/#1014.
17
53
  - **Trajectory viewer restyled to match www.benchflow.ai.** All three
18
54
  `bench eval view` pages (stream-json/JSONL, ACP events, multi-turn trial)
19
55
  now share one inline stylesheet with the site's design language: light
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: benchflow
3
- Version: 0.7.2.dev1986
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,20 +89,23 @@ 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
- Proud of a Claude Code or Codex session? Copy this line into Claude Code,
93
- Codex, Cursor, or any coding agent. That is the $2,000 eval prize path. No
94
- BenchFlow account, API key, or Azure login.
92
+ **Send these to your coding agent.** Copy
93
+ the block below and paste it as a message to Claude Code, Codex, OpenCode, or
94
+ Cursor. That is the $2,000 eval prize path. No BenchFlow account, API key, or
95
+ Azure login.
95
96
 
96
- ```
97
- Submit my best local Claude Code or Codex session to the BenchFlow eval prize. Read https://raw.githubusercontent.com/benchflow-ai/benchflow/main/.agents/skills/benchflow-traj-upload/SKILL.md and follow it: find a session, open the viewer, upload only after I review it.
98
- ```
97
+ > Submit my relevant local Claude Code, Codex, OpenCode, or Cursor session from the re:Agent e2e agentic science / ai4bio hackathon (last 72 hours, on this laptop) to the BenchFlow eval prize.
98
+ >
99
+ > 1. First make sure the latest benchflow CLI is installed: uv tool install --python 3.12 --upgrade --force benchflow
100
+ >
101
+ > 2. Then read https://raw.githubusercontent.com/benchflow-ai/benchflow/main/.agents/skills/benchflow-traj-upload/SKILL.md and follow it: find a session, open the viewer, and upload only after I (the human) review it.
99
102
 
100
103
  The agent finds sessions on this machine, opens the viewer, and uploads after
101
104
  you like what you see.
102
105
 
103
- Be on the latest BenchFlow first `uv tool install --python 3.12 --upgrade
104
- --force benchflow`. The `bench traj` commands print a one-line upgrade hint
105
- when a newer release is available.
106
+ The prompt has the agent install the latest BenchFlow first (`uv tool
107
+ install --python 3.12 --upgrade --force benchflow`). The `bench traj` commands
108
+ also print a one-line upgrade hint when a newer release is available.
106
109
 
107
110
  Prefer the terminal instead? The guided upload inspects before anything leaves
108
111
  your machine — it renders a redacted trajectory report (step counts, masked
@@ -128,7 +131,7 @@ bench traj setup
128
131
  ```
129
132
 
130
133
  `npx skills add` asks which agents to install for. `bench traj setup` copies
131
- the skill into this project and prints the same paste line. See the
134
+ the skill into this project and prints the same agent prompt. See the
132
135
  [upload skill](./.agents/skills/benchflow-traj-upload/SKILL.md).
133
136
 
134
137
  ## Quick start: 2. Run with a ChatGPT or Claude subscription
@@ -15,20 +15,23 @@ 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
- Proud of a Claude Code or Codex session? Copy this line into Claude Code,
19
- Codex, Cursor, or any coding agent. That is the $2,000 eval prize path. No
20
- BenchFlow account, API key, or Azure login.
18
+ **Send these to your coding agent.** Copy
19
+ the block below and paste it as a message to Claude Code, Codex, OpenCode, or
20
+ Cursor. That is the $2,000 eval prize path. No BenchFlow account, API key, or
21
+ Azure login.
21
22
 
22
- ```
23
- Submit my best local Claude Code or Codex session to the BenchFlow eval prize. Read https://raw.githubusercontent.com/benchflow-ai/benchflow/main/.agents/skills/benchflow-traj-upload/SKILL.md and follow it: find a session, open the viewer, upload only after I review it.
24
- ```
23
+ > Submit my relevant local Claude Code, Codex, OpenCode, or Cursor session from the re:Agent e2e agentic science / ai4bio hackathon (last 72 hours, on this laptop) to the BenchFlow eval prize.
24
+ >
25
+ > 1. First make sure the latest benchflow CLI is installed: uv tool install --python 3.12 --upgrade --force benchflow
26
+ >
27
+ > 2. Then read https://raw.githubusercontent.com/benchflow-ai/benchflow/main/.agents/skills/benchflow-traj-upload/SKILL.md and follow it: find a session, open the viewer, and upload only after I (the human) review it.
25
28
 
26
29
  The agent finds sessions on this machine, opens the viewer, and uploads after
27
30
  you like what you see.
28
31
 
29
- Be on the latest BenchFlow first `uv tool install --python 3.12 --upgrade
30
- --force benchflow`. The `bench traj` commands print a one-line upgrade hint
31
- when a newer release is available.
32
+ The prompt has the agent install the latest BenchFlow first (`uv tool
33
+ install --python 3.12 --upgrade --force benchflow`). The `bench traj` commands
34
+ also print a one-line upgrade hint when a newer release is available.
32
35
 
33
36
  Prefer the terminal instead? The guided upload inspects before anything leaves
34
37
  your machine — it renders a redacted trajectory report (step counts, masked
@@ -54,7 +57,7 @@ bench traj setup
54
57
  ```
55
58
 
56
59
  `npx skills add` asks which agents to install for. `bench traj setup` copies
57
- the skill into this project and prints the same paste line. See the
60
+ the skill into this project and prints the same agent prompt. See the
58
61
  [upload skill](./.agents/skills/benchflow-traj-upload/SKILL.md).
59
62
 
60
63
  ## Quick start: 2. Run with a ChatGPT or Claude subscription
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "benchflow"
3
- version = "0.7.2.dev1986"
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 ──────────────────────────────────────────────
@@ -54,14 +54,26 @@ SKILL_RAW_URL = (
54
54
  "/.agents/skills/benchflow-traj-upload/SKILL.md"
55
55
  )
56
56
 
57
+ UPGRADE_COMMAND = "uv tool install --python 3.12 --upgrade --force benchflow"
58
+
59
+ # Three unwrapped lines separated by blank lines: each logical unit is one
60
+ # full physical line (no hard wraps mid-sentence), so the URL and the upgrade
61
+ # command stay selectable in agents and terminals.
57
62
  CONTRIBUTOR_PROMPT = (
58
- "Submit my best local Claude Code or Codex session to the BenchFlow eval "
59
- "prize. Read "
60
- f"{SKILL_RAW_URL} "
61
- "and follow it: find a session, open the viewer, upload only after I review it."
63
+ "Submit my relevant local Claude Code, Codex, OpenCode, or Cursor session "
64
+ "from the re:Agent e2e agentic science / ai4bio hackathon (last 72 hours, "
65
+ "on this laptop) to the BenchFlow eval prize."
66
+ "\n\n"
67
+ f"1. First make sure the latest benchflow CLI is installed: {UPGRADE_COMMAND}"
68
+ "\n\n"
69
+ f"2. Then read {SKILL_RAW_URL} "
70
+ "and follow it: find a session, open the viewer, and upload only after "
71
+ "I (the human) review it."
62
72
  )
63
73
 
64
- UPGRADE_COMMAND = "uv tool install --python 3.12 --upgrade --force benchflow"
74
+ CONTRIBUTOR_PROMPT_FRAMING = (
75
+ "Send this to your coding agent (it's a prompt for the agent, not steps for you):"
76
+ )
65
77
 
66
78
 
67
79
  def _fetch_latest_version() -> str | None:
@@ -166,14 +178,14 @@ def register_traj(app: typer.Typer) -> None:
166
178
  ] = False,
167
179
  prompt_only: Annotated[
168
180
  bool,
169
- typer.Option("--prompt", help="Print the copy-paste agent line and exit"),
181
+ typer.Option("--prompt", help="Print the copy-paste agent prompt and exit"),
170
182
  ] = False,
171
183
  list_sessions: Annotated[
172
184
  bool,
173
185
  typer.Option("--list", help="List recent local sessions and exit"),
174
186
  ] = False,
175
187
  ) -> None:
176
- """Install the submit skill, or print the line to paste into an agent."""
188
+ """Install the submit skill, or print the prompt to send to an agent."""
177
189
  _maybe_print_update_hint()
178
190
  if prompt_only:
179
191
  _print_contributor_prompt()
@@ -194,7 +206,6 @@ def register_traj(app: typer.Typer) -> None:
194
206
  _run_npx_skill_install()
195
207
  else:
196
208
  _install_project_skill(Path.cwd())
197
- console.print("Paste this to your agent:")
198
209
  _print_contributor_prompt()
199
210
  if interactive and typer.confirm(
200
211
  "List recent sessions and open the viewer now?", default=False
@@ -625,7 +636,9 @@ def _print_dry_run(staged: StagedCapture) -> None:
625
636
 
626
637
 
627
638
  def _print_contributor_prompt() -> None:
628
- # One physical line so people can copy it. Rich wrapping would break that.
639
+ # Plain print: Rich wrapping would break the unbroken URL line and make
640
+ # the block awkward to copy.
641
+ print(CONTRIBUTOR_PROMPT_FRAMING)
629
642
  print(CONTRIBUTOR_PROMPT)
630
643
 
631
644
 
@@ -671,7 +684,7 @@ def _run_npx_skill_install() -> None:
671
684
  check=False,
672
685
  )
673
686
  if completed.returncode != 0:
674
- print_error("npx skills add failed; the copy-paste line below still works.")
687
+ print_error("npx skills add failed; the copy-paste prompt below still works.")
675
688
 
676
689
 
677
690
  def _print_session_hits() -> None:
@@ -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__":
@@ -715,17 +715,46 @@ def test_skip_update_check_env_var_never_fetches(
715
715
 
716
716
 
717
717
  def test_setup_prompt_prints_the_copy_paste_line() -> None:
718
- """The human path is one line to paste into an agent."""
719
- from benchflow.cli.traj import CONTRIBUTOR_PROMPT, SKILL_RAW_URL
718
+ """The human path is one prompt block to send to an agent.
719
+
720
+ Guards the version step and hand-off framing added in PR #1017
721
+ (follow-up to PRs #1013 and #1014): the prompt tells the agent to
722
+ upgrade BenchFlow before reading the skill, the upgrade command appears
723
+ before the skill URL, and the URL sits on one unbroken physical line.
724
+ README.md renders the prompt as a blockquote (a fenced code block would
725
+ not soft-wrap on GitHub), so each unwrapped prompt line is asserted to be
726
+ present in the README instead of the whole string verbatim.
727
+ """
728
+ from benchflow.cli.traj import (
729
+ CONTRIBUTOR_PROMPT,
730
+ CONTRIBUTOR_PROMPT_FRAMING,
731
+ SKILL_RAW_URL,
732
+ UPGRADE_COMMAND,
733
+ )
720
734
 
721
735
  result = runner.invoke(app, ["traj", "setup", "--prompt"])
722
736
  readme = Path(__file__).resolve().parents[1] / "README.md"
737
+ readme_text = readme.read_text(encoding="utf-8")
723
738
 
724
739
  assert result.exit_code == 0, result.output
725
- assert CONTRIBUTOR_PROMPT in click.unstyle(result.output)
740
+ output = click.unstyle(result.output)
741
+ assert CONTRIBUTOR_PROMPT_FRAMING in output
742
+ assert CONTRIBUTOR_PROMPT in output
726
743
  assert SKILL_RAW_URL in result.output
727
744
  assert "bench traj upload" not in result.output
728
- assert CONTRIBUTOR_PROMPT in readme.read_text(encoding="utf-8")
745
+
746
+ prompt_lines = [line for line in CONTRIBUTOR_PROMPT.splitlines() if line]
747
+ assert len(prompt_lines) == 3
748
+ for line in prompt_lines:
749
+ assert line 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
752
+
753
+ assert UPGRADE_COMMAND in CONTRIBUTOR_PROMPT
754
+ assert CONTRIBUTOR_PROMPT.index(UPGRADE_COMMAND) < CONTRIBUTOR_PROMPT.index(
755
+ SKILL_RAW_URL
756
+ )
757
+ assert any(SKILL_RAW_URL in line for line in prompt_lines)
729
758
 
730
759
 
731
760
  def test_setup_yes_installs_the_skill(
@@ -740,7 +769,9 @@ def test_setup_yes_installs_the_skill(
740
769
  assert skill.is_file()
741
770
  text = skill.read_text(encoding="utf-8")
742
771
  assert "open the viewer" in text
743
- assert "Paste this to your agent" in click.unstyle(result.output)
772
+ # PR #1017 reframed the hand-off copy: the block is a prompt for the
773
+ # agent, not steps for the human.
774
+ assert "Send this to your coding agent" in click.unstyle(result.output)
744
775
 
745
776
 
746
777
  def test_list_recent_sessions_scans_all_projects_most_recent_first(