benchflow 0.6.10.dev1930__tar.gz → 0.6.10.dev1961__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 (721) hide show
  1. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/PKG-INFO +16 -16
  2. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/README.md +15 -15
  3. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/pyproject.toml +9 -2
  4. benchflow-0.6.10.dev1961/src/benchflow/cli/_traj_upload_ui.py +138 -0
  5. benchflow-0.6.10.dev1961/src/benchflow/cli/traj.py +278 -0
  6. benchflow-0.6.10.dev1961/src/benchflow/publish/_progress.py +38 -0
  7. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/publish/azure_blob.py +11 -2
  8. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/publish/broker.py +18 -8
  9. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/publish/redact.py +33 -7
  10. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/publish/traj_capture.py +171 -63
  11. benchflow-0.6.10.dev1961/src/benchflow/publish/traj_report.py +762 -0
  12. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/types.py +7 -3
  13. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_publish_azure_blob.py +50 -6
  14. benchflow-0.6.10.dev1961/tests/test_traj_report.py +443 -0
  15. benchflow-0.6.10.dev1961/tests/test_traj_staging_phases.py +242 -0
  16. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_traj_upload_cli.py +205 -10
  17. benchflow-0.6.10.dev1961/tests/test_traj_upload_skill.py +100 -0
  18. benchflow-0.6.10.dev1961/tests/test_trajectory_upload_layout.py +77 -0
  19. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_trajectory_upload_service.py +225 -3
  20. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/trajectories/test_redaction.py +20 -0
  21. benchflow-0.6.10.dev1930/src/benchflow/cli/traj.py +0 -148
  22. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/.gitignore +0 -0
  23. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/CHANGELOG.md +0 -0
  24. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/LICENSE +0 -0
  25. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/__init__.py +0 -0
  26. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_dotenv.py +0 -0
  27. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_paths.py +0 -0
  28. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_run.py +0 -0
  29. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_types.py +0 -0
  30. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/__init__.py +0 -0
  31. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/benchmark_repos.py +0 -0
  32. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/build_context_stage.py +0 -0
  33. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/config.py +0 -0
  34. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/config_override.py +0 -0
  35. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/content_address.py +0 -0
  36. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/dataset_registry.py +0 -0
  37. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/env_registry.py +0 -0
  38. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/evaluation_results.py +0 -0
  39. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/hf_datasets.py +0 -0
  40. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/json_safe.py +0 -0
  41. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/learner_memory.py +0 -0
  42. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/live_activity.py +0 -0
  43. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/result_metadata.py +0 -0
  44. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/reward_events.py +0 -0
  45. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/scoring.py +0 -0
  46. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/source_provenance.py +0 -0
  47. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/task_authoring/__init__.py +0 -0
  48. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/task_authoring/_evidence_paths.py +0 -0
  49. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/task_authoring/acceptance_evidence.py +0 -0
  50. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/task_authoring/scaffolding.py +0 -0
  51. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/task_authoring/structural_checks.py +0 -0
  52. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/text.py +0 -0
  53. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/_utils/yaml_loader.py +0 -0
  54. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/acp/__init__.py +0 -0
  55. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/acp/client.py +0 -0
  56. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/acp/container_transport.py +0 -0
  57. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/acp/runtime.py +0 -0
  58. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/acp/selection.py +0 -0
  59. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/acp/session.py +0 -0
  60. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/acp/transport.py +0 -0
  61. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/acp/types.py +0 -0
  62. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/__init__.py +0 -0
  63. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/_toolathlon.py +0 -0
  64. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/_toolathlon_container.py +0 -0
  65. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/_toolathlon_fake_mail.py +0 -0
  66. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/_toolathlon_poste_users.tsv +0 -0
  67. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/_toolathlon_services.py +0 -0
  68. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/harbor.py +0 -0
  69. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/inbound.py +0 -0
  70. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/inspect_ai.py +0 -0
  71. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/ors.py +0 -0
  72. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/resources/__init__.py +0 -0
  73. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/resources/mcp_atlas_bridge.py +0 -0
  74. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/resources/mcp_atlas_judge.py +0 -0
  75. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/adapters/source.py +0 -0
  76. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agent_router.py +0 -0
  77. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agent_router_guide.py +0 -0
  78. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agent_router_parity.py +0 -0
  79. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agent_router_scaffold.py +0 -0
  80. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/__init__.py +0 -0
  81. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/codex_config.py +0 -0
  82. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/credentials.py +0 -0
  83. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/deepagents_acp_shim.py +0 -0
  84. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/env.py +0 -0
  85. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/errors.py +0 -0
  86. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/harvey_lab_acp_shim.py +0 -0
  87. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/install.py +0 -0
  88. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/manifest.py +0 -0
  89. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/openclaw_acp_shim.py +0 -0
  90. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/pi_acp_launcher.py +0 -0
  91. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/protocol.py +0 -0
  92. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/providers.py +0 -0
  93. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/registry.py +0 -0
  94. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/agents/remote_manifests.py +0 -0
  95. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/branch.py +0 -0
  96. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/__init__.py +0 -0
  97. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/_failure_evidence.py +0 -0
  98. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/_hosted_env.py +0 -0
  99. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/_live_progress.py +0 -0
  100. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/_options.py +0 -0
  101. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/_shared.py +0 -0
  102. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/adopt.py +0 -0
  103. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/agent.py +0 -0
  104. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/continue_cmd.py +0 -0
  105. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/environment.py +0 -0
  106. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/eval_artifacts.py +0 -0
  107. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/eval_lift.py +0 -0
  108. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/hub.py +0 -0
  109. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/main.py +0 -0
  110. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/monitor.py +0 -0
  111. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/review.py +0 -0
  112. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/sandbox.py +0 -0
  113. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/skills.py +0 -0
  114. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/tasks.py +0 -0
  115. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/trace_import.py +0 -0
  116. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/cli/train.py +0 -0
  117. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/continue_run/__init__.py +0 -0
  118. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/continue_run/batch.py +0 -0
  119. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/continue_run/orchestrator.py +0 -0
  120. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/continue_run/replay_proxy.py +0 -0
  121. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/continue_run/run_folder.py +0 -0
  122. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/continue_run/sandbox_proxy.py +0 -0
  123. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/contracts/__init__.py +0 -0
  124. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/contracts/planes.py +0 -0
  125. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/contracts/user.py +0 -0
  126. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/demo_task/environment/Dockerfile +0 -0
  127. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/demo_task/instruction.md +0 -0
  128. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/demo_task/task.md +0 -0
  129. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/demo_task/task.toml +0 -0
  130. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/demo_task/tests/test.sh +0 -0
  131. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/diagnostics.py +0 -0
  132. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/environment/__init__.py +0 -0
  133. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/environment/_registry/env0@outage.toml +0 -0
  134. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/environment/_registry/env0@prod.toml +0 -0
  135. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/environment/manifest.py +0 -0
  136. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/environment/manifest_env.py +0 -0
  137. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/environment/protocol.py +0 -0
  138. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/environment/readiness.py +0 -0
  139. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/eval_artifacts.py +0 -0
  140. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/eval_lift.py +0 -0
  141. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/eval_plan.py +0 -0
  142. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/eval_sharding.py +0 -0
  143. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/eval_worker.py +0 -0
  144. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/evaluation.py +0 -0
  145. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/experimental/__init__.py +0 -0
  146. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/experimental/mcp/__init__.py +0 -0
  147. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/experimental/mcp/hooks.py +0 -0
  148. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/experimental/mcp/reviewer_server.py +0 -0
  149. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/hosted_env.py +0 -0
  150. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/hub/__init__.py +0 -0
  151. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/hub/harbor_registry.py +0 -0
  152. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/integrations/__init__.py +0 -0
  153. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/integrations/trl/__init__.py +0 -0
  154. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/integrations/trl/spec.py +0 -0
  155. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/learner_skills.py +0 -0
  156. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/learner_store.py +0 -0
  157. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/loop_strategies.py +0 -0
  158. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/loop_sweep.py +0 -0
  159. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/metrics.py +0 -0
  160. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/models.py +0 -0
  161. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/monitor.py +0 -0
  162. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/providers/__init__.py +0 -0
  163. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/providers/litellm_bedrock_patch.py +0 -0
  164. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/providers/litellm_bedrock_preflight.py +0 -0
  165. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/providers/litellm_config.py +0 -0
  166. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/providers/litellm_logging.py +0 -0
  167. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/providers/litellm_runtime.py +0 -0
  168. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/providers/runtime.py +0 -0
  169. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/publish/__init__.py +0 -0
  170. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/publish/huggingface.py +0 -0
  171. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/py.typed +0 -0
  172. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/review/__init__.py +0 -0
  173. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/review/config.py +0 -0
  174. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/review/default-rubric.json +0 -0
  175. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/review/prompts.py +0 -0
  176. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/review/runner.py +0 -0
  177. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/review/wrapper.py +0 -0
  178. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rewards/README.md +0 -0
  179. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rewards/__init__.py +0 -0
  180. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rewards/builtins.py +0 -0
  181. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rewards/events.py +0 -0
  182. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rewards/file_readers.py +0 -0
  183. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rewards/llm.py +0 -0
  184. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rewards/memory_scorer.py +0 -0
  185. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rewards/node.py +0 -0
  186. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rewards/protocol.py +0 -0
  187. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rewards/rubric.py +0 -0
  188. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rewards/rubric_config.py +0 -0
  189. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rewards/validation.py +0 -0
  190. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rollout/__init__.py +0 -0
  191. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rollout/_config.py +0 -0
  192. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rollout/_deadline.py +0 -0
  193. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rollout/_results.py +0 -0
  194. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rollout/_setup.py +0 -0
  195. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rollout/_skills.py +0 -0
  196. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rollout/_usage.py +0 -0
  197. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rollout/_user_loop.py +0 -0
  198. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rollout/session_factory_runtime.py +0 -0
  199. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rollout/task_runtime.py +0 -0
  200. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rollout_branch.py +0 -0
  201. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/rollout_planes.py +0 -0
  202. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/runtime.py +0 -0
  203. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/__init__.py +0 -0
  204. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/_base.py +0 -0
  205. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/_cache_reclaim.py +0 -0
  206. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/_compose.py +0 -0
  207. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/_compose_files/docker-compose-base.yaml +0 -0
  208. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/_compose_files/docker-compose-build.yaml +0 -0
  209. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/_compose_files/docker-compose-no-network.yaml +0 -0
  210. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/_compose_files/docker-compose-prebuilt.yaml +0 -0
  211. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/_sdk_ops.py +0 -0
  212. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/agentcore.py +0 -0
  213. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/agentcore_builder.py +0 -0
  214. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/agentcore_image.py +0 -0
  215. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/agentcore_provisioning.py +0 -0
  216. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/agentcore_reaper.py +0 -0
  217. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/agentcore_sealed.py +0 -0
  218. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/apple_container.py +0 -0
  219. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/daytona.py +0 -0
  220. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/daytona_dind.py +0 -0
  221. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/daytona_pty.py +0 -0
  222. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/daytona_reaper.py +0 -0
  223. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/daytona_strategies.py +0 -0
  224. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/docker.py +0 -0
  225. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/lockdown.py +0 -0
  226. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/metadata.py +0 -0
  227. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/modal_impl.py +0 -0
  228. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/process/__init__.py +0 -0
  229. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/process/_base.py +0 -0
  230. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/process/agentcore.py +0 -0
  231. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/process/apple.py +0 -0
  232. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/process/daytona.py +0 -0
  233. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/process/docker.py +0 -0
  234. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/protocol.py +0 -0
  235. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/providers.py +0 -0
  236. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/services.py +0 -0
  237. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/setup.py +0 -0
  238. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/snapshot.py +0 -0
  239. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sandbox/user.py +0 -0
  240. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/scenes.py +0 -0
  241. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/sdk.py +0 -0
  242. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/self_gen.py +0 -0
  243. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/skill_eval/__init__.py +0 -0
  244. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/skill_eval/_core.py +0 -0
  245. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/skill_eval/gepa_export.py +0 -0
  246. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/skill_eval/schema.py +0 -0
  247. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/skill_policy.py +0 -0
  248. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/skills.py +0 -0
  249. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/__init__.py +0 -0
  250. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/_document_evidence.py +0 -0
  251. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/_document_normalize.py +0 -0
  252. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/_document_parse.py +0 -0
  253. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/_document_profiles.py +0 -0
  254. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/acceptance_live.py +0 -0
  255. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/acceptance_live_model.py +0 -0
  256. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/acceptance_live_report.py +0 -0
  257. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/acceptance_live_validation.py +0 -0
  258. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/config.py +0 -0
  259. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/discovery.py +0 -0
  260. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/document.py +0 -0
  261. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/env.py +0 -0
  262. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/export.py +0 -0
  263. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/imports.py +0 -0
  264. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/output_format.py +0 -0
  265. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/package.py +0 -0
  266. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/paths.py +0 -0
  267. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/prompts.py +0 -0
  268. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/runtime_capabilities.py +0 -0
  269. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/runtime_view.py +0 -0
  270. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/task.py +0 -0
  271. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/verifier.py +0 -0
  272. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/verifier_core.py +0 -0
  273. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/verifier_document.py +0 -0
  274. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/verifier_errors.py +0 -0
  275. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/verifier_judge_inputs.py +0 -0
  276. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/verifier_ors_episode.py +0 -0
  277. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/verifier_reward_kit.py +0 -0
  278. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/verifier_scan.py +0 -0
  279. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/task/verifier_script_strategy.py +0 -0
  280. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/templates/__init__.py +0 -0
  281. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/templates/judge.py.tmpl +0 -0
  282. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/templates/test.sh.tmpl +0 -0
  283. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/traces/__init__.py +0 -0
  284. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/traces/huggingface.py +0 -0
  285. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/traces/local.py +0 -0
  286. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/traces/models.py +0 -0
  287. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/traces/parsers.py +0 -0
  288. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/traces/task_gen.py +0 -0
  289. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/training/__init__.py +0 -0
  290. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/training/backends/__init__.py +0 -0
  291. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/training/backends/prime_rl.py +0 -0
  292. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/training/run_manifest.py +0 -0
  293. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/__init__.py +0 -0
  294. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/_capture.py +0 -0
  295. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/_export_common.py +0 -0
  296. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/_llm_capture.py +0 -0
  297. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/call_purpose.py +0 -0
  298. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/export.py +0 -0
  299. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/export_adp.py +0 -0
  300. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/export_atif.py +0 -0
  301. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/export_prime_sft.py +0 -0
  302. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/export_trl_sft.py +0 -0
  303. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/metrics.py +0 -0
  304. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/results.py +0 -0
  305. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/tree.py +0 -0
  306. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/trl_sft_tokenization.py +0 -0
  307. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/trajectories/viewer.py +0 -0
  308. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/src/benchflow/usage_tracking.py +0 -0
  309. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/__init__.py +0 -0
  310. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/acceptance_live_harness.py +0 -0
  311. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/agents/__init__.py +0 -0
  312. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/agents/test_manifest_dirscan.py +0 -0
  313. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/agents/test_manifest_loader.py +0 -0
  314. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/agents/test_manifest_parity.py +0 -0
  315. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/agents/test_manifest_wiring.py +0 -0
  316. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/agents/test_namespace_shorthand.py +0 -0
  317. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/agents/test_plugin_entry_points.py +0 -0
  318. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/agents/test_protocol.py +0 -0
  319. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/agents/test_remote_manifest_autoload.py +0 -0
  320. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/README.md +0 -0
  321. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/acp_smoke/environment/Dockerfile +0 -0
  322. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/acp_smoke/environment/docker-compose.yaml +0 -0
  323. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/acp_smoke/environment/skills/conformance-writer/SKILL.md +0 -0
  324. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/acp_smoke/instruction.md +0 -0
  325. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/acp_smoke/solution/solve.sh +0 -0
  326. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/acp_smoke/task.md +0 -0
  327. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/acp_smoke/task.toml +0 -0
  328. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/acp_smoke/tests/test.sh +0 -0
  329. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/conformance-results.json +0 -0
  330. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/proof_multi_agent.py +0 -0
  331. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/proof_snapshot.py +0 -0
  332. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/run_conformance.py +0 -0
  333. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conformance/self_gen_smoke_skills/skill-creator/SKILL.md +0 -0
  334. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/conftest.py +0 -0
  335. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/continue_run/__init__.py +0 -0
  336. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/continue_run/_helpers.py +0 -0
  337. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/continue_run/test_batch.py +0 -0
  338. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/continue_run/test_orchestrator.py +0 -0
  339. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/continue_run/test_replay_proxy.py +0 -0
  340. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/continue_run/test_run_folder.py +0 -0
  341. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/environment/__init__.py +0 -0
  342. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/environment/test_chibench_manifest.py +0 -0
  343. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/environment/test_clawsbench_manifest.py +0 -0
  344. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/environment/test_manifest.py +0 -0
  345. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/environment/test_manifest_env.py +0 -0
  346. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/environment/test_protocol.py +0 -0
  347. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/environment/test_readiness.py +0 -0
  348. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/hello-world-task/environment/Dockerfile +0 -0
  349. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/hello-world-task/instruction.md +0 -0
  350. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/hello-world-task/solution/solve.sh +0 -0
  351. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/hello-world-task/task.md +0 -0
  352. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/hello-world-task/task.toml +0 -0
  353. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/hello-world-task/tests/test.sh +0 -0
  354. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/test_claude.sh +0 -0
  355. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/test_codex.sh +0 -0
  356. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/test_codex_custom_provider.sh +0 -0
  357. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/test_gemini.sh +0 -0
  358. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/test_openclaw.sh +0 -0
  359. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/traces/minimal-claude.jsonl +0 -0
  360. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/examples/traces/minimal-opentraces.jsonl +0 -0
  361. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/digest/README.md +0 -0
  362. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/digest/alpha-task/environment/Dockerfile +0 -0
  363. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/digest/alpha-task/instruction.md +0 -0
  364. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/digest/alpha-task/task.toml +0 -0
  365. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/digest/alpha-task/tests/test.sh +0 -0
  366. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/digest/beta-task/data/empty.bin +0 -0
  367. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/digest/beta-task/data/unicode.txt +0 -0
  368. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/digest/beta-task/instruction.md +0 -0
  369. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/digest/beta-task/task.toml +0 -0
  370. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/digest/not-a-task/notes.txt +0 -0
  371. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/mock_acp_agent.py +0 -0
  372. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/mock_acp_agent_interleaved.py +0 -0
  373. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/mock_acp_agent_multi_turn.py +0 -0
  374. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/mock_openai_responses_server.py +0 -0
  375. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/Dockerfile +0 -0
  376. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/data/michigan_stations.txt +0 -0
  377. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/flood-detection/SKILL.md +0 -0
  378. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/nws-flood-thresholds/SKILL.md +0 -0
  379. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/usgs-data-download/SKILL.md +0 -0
  380. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/flood-risk-analysis/instruction.md +0 -0
  381. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/flood-risk-analysis/solution/solve.sh +0 -0
  382. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/flood-risk-analysis/task.toml +0 -0
  383. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test.sh +0 -0
  384. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test_outputs.py +0 -0
  385. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/Dockerfile +0 -0
  386. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/climate.csv +0 -0
  387. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/hydrology.csv +0 -0
  388. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/land_cover.csv +0 -0
  389. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/water_temperature.csv +0 -0
  390. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/contribution-analysis/SKILL.md +0 -0
  391. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/meteorology-driver-classification/SKILL.md +0 -0
  392. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/pca-decomposition/SKILL.md +0 -0
  393. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/trend-analysis/SKILL.md +0 -0
  394. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/instruction.md +0 -0
  395. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/solution/solve.sh +0 -0
  396. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/task.toml +0 -0
  397. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test.sh +0 -0
  398. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test_outputs.py +0 -0
  399. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/manifest.json +0 -0
  400. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/Dockerfile +0 -0
  401. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/r2r_simulator.py +0 -0
  402. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/finite-horizon-lqr/SKILL.md +0 -0
  403. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/integral-action-design/SKILL.md +0 -0
  404. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/mpc-horizon-tuning/SKILL.md +0 -0
  405. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/state-space-linearization/SKILL.md +0 -0
  406. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/system_config.json +0 -0
  407. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/r2r-mpc-control/instruction.md +0 -0
  408. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/r2r-mpc-control/solution/solve.sh +0 -0
  409. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/r2r-mpc-control/task.toml +0 -0
  410. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test.sh +0 -0
  411. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test_outputs.py +0 -0
  412. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/Dockerfile +0 -0
  413. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/generate_training_pcaps.py +0 -0
  414. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/local.rules +0 -0
  415. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/SKILL.md +0 -0
  416. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/scripts/summarize_http_requests.sh +0 -0
  417. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/SKILL.md +0 -0
  418. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/scripts/run_suricata_offline.sh +0 -0
  419. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-rules-basics/SKILL.md +0 -0
  420. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/suricata.yaml +0 -0
  421. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/instruction.md +0 -0
  422. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/solution/solve.sh +0 -0
  423. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/task.toml +0 -0
  424. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test.sh +0 -0
  425. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test_outputs.py +0 -0
  426. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/Dockerfile +0 -0
  427. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syz-extract-constants/SKILL.md +0 -0
  428. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzkaller-build-loop/SKILL.md +0 -0
  429. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzlang-ioctl-basics/SKILL.md +0 -0
  430. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/instruction.md +0 -0
  431. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/solution/solve.sh +0 -0
  432. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/task.toml +0 -0
  433. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test.sh +0 -0
  434. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test_outputs.py +0 -0
  435. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/_consistency.py +0 -0
  436. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/agent_judge.py +0 -0
  437. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/check_adapter_evidence.py +0 -0
  438. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/check_hosted_env_evidence.py +0 -0
  439. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/check_results.py +0 -0
  440. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/check_skillsbench_harbor_parity.py +0 -0
  441. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/check_trace_to_task_evidence.py +0 -0
  442. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/configs/claude-agent-acp.yaml +0 -0
  443. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/configs/codex-acp.yaml +0 -0
  444. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/configs/gemini.yaml +0 -0
  445. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/configs/harvey-lab-harness.yaml +0 -0
  446. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/configs/mimo.yaml +0 -0
  447. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/configs/openclaw.yaml +0 -0
  448. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/configs/opencode.yaml +0 -0
  449. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/configs/openhands.yaml +0 -0
  450. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/configs/pi-acp.yaml +0 -0
  451. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/deepagents_harness.py +0 -0
  452. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/rubric_checks.py +0 -0
  453. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/run.sh +0 -0
  454. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/run_suite.py +0 -0
  455. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/scenarios.py +0 -0
  456. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/integration/suites/release.yaml +0 -0
  457. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_acceptance_evidence.py +0 -0
  458. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_acceptance_live.py +0 -0
  459. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_acceptance_live_execution.py +0 -0
  460. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_acp.py +0 -0
  461. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_acp_capability_advertising.py +0 -0
  462. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_acp_mcp_servers.py +0 -0
  463. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_acp_model_config_dispatch.py +0 -0
  464. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_acp_pinned_protocol_guard.py +0 -0
  465. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_acp_setup_failure_propagation.py +0 -0
  466. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_adapter_scripts.py +0 -0
  467. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_adapters.py +0 -0
  468. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agent_cli.py +0 -0
  469. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agent_env_resolution.py +0 -0
  470. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agent_gemini_defaults.py +0 -0
  471. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agent_idle_timeout_cli.py +0 -0
  472. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agent_model_decouple.py +0 -0
  473. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agent_registry.py +0 -0
  474. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agent_router.py +0 -0
  475. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agent_router_cli_e2e.py +0 -0
  476. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agent_router_scaffold.py +0 -0
  477. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agent_setup.py +0 -0
  478. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agent_spec.py +0 -0
  479. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agentcore_builder.py +0 -0
  480. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agentcore_parallel.py +0 -0
  481. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agentcore_reaper.py +0 -0
  482. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agentcore_sandbox.py +0 -0
  483. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_agentcore_transport.py +0 -0
  484. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_api_error_capture.py +0 -0
  485. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_apple_container_sandbox.py +0 -0
  486. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_bare_model_provider.py +0 -0
  487. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_base_install_imports.py +0 -0
  488. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_bedrock_thinking.py +0 -0
  489. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_benchflow_experiment_review_validator.py +0 -0
  490. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_benchmark_repos_resolve_repo_path.py +0 -0
  491. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_branch.py +0 -0
  492. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_build_context_stage.py +0 -0
  493. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_build_review_pack.py +0 -0
  494. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_capture_trajectory.py +0 -0
  495. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_check_skillsbench_harbor_parity.py +0 -0
  496. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_clawsbench_slice.py +0 -0
  497. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_cli_adopt_aliases.py +0 -0
  498. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_cli_arg_validation.py +0 -0
  499. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_cli_daytona.py +0 -0
  500. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_cli_docs_drift.py +0 -0
  501. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_cli_edge_case_hardening.py +0 -0
  502. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_cli_hub_env.py +0 -0
  503. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_cli_live_progress.py +0 -0
  504. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_cli_misc.py +0 -0
  505. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_codex_review.py +0 -0
  506. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_codex_self_write_auth.py +0 -0
  507. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_config_override.py +0 -0
  508. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_config_redaction.py +0 -0
  509. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_connect_as_env.py +0 -0
  510. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_console_error_truncation.py +0 -0
  511. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_console_progress.py +0 -0
  512. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_continuallearningbench_adapter.py +0 -0
  513. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_dataset_registry.py +0 -0
  514. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_daytona_command_polling.py +0 -0
  515. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_daytona_dind_compose_up.py +0 -0
  516. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_daytona_download.py +0 -0
  517. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_daytona_litellm_runtime.py +0 -0
  518. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_daytona_poll_deadline.py +0 -0
  519. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_daytona_reap.py +0 -0
  520. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_deepagents_agent.py +0 -0
  521. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_diagnostics.py +0 -0
  522. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_docker_prune_scoping.py +0 -0
  523. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_docker_uploads.py +0 -0
  524. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_docs_examples.py +0 -0
  525. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_eng50_capabilities.py +0 -0
  526. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_env_registry.py +0 -0
  527. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_env_setup.py +0 -0
  528. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_environment_manifest_controls.py +0 -0
  529. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_eval_artifact_cli.py +0 -0
  530. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_eval_filters_applied.py +0 -0
  531. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_eval_lift.py +0 -0
  532. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_eval_sharding.py +0 -0
  533. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_eval_single_task_summary.py +0 -0
  534. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_eval_source_provenance.py +0 -0
  535. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_eval_worker_retry.py +0 -0
  536. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_eval_zero_task_guard.py +0 -0
  537. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_evaluation_environment_manifest.py +0 -0
  538. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_exclude_tasks.py +0 -0
  539. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_filter_credentialed_cells.py +0 -0
  540. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_harvey_lab_shim.py +0 -0
  541. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_hilbench_adapter.py +0 -0
  542. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_hosted_env.py +0 -0
  543. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_hosted_env_rollout_contract.py +0 -0
  544. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_hub_harbor_registry.py +0 -0
  545. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_inbound_adapter_manifest.py +0 -0
  546. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_inbound_adapters.py +0 -0
  547. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_integration_agent_judge.py +0 -0
  548. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_integration_check_results.py +0 -0
  549. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_integration_consistency.py +0 -0
  550. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_integration_matrix.py +0 -0
  551. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_integration_provider_selection.py +0 -0
  552. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_integration_run_suite.py +0 -0
  553. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_integration_suite.py +0 -0
  554. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_internet_policy.py +0 -0
  555. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_job.py +0 -0
  556. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_job_sequential_shared.py +0 -0
  557. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_job_sequential_shared_resume.py +0 -0
  558. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_judge_robustness.py +0 -0
  559. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_judge_symlink_ingestion.py +0 -0
  560. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_learner_skills.py +0 -0
  561. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_learner_skills_traversal.py +0 -0
  562. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_learner_store.py +0 -0
  563. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_learner_store_persistence.py +0 -0
  564. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_litellm_config.py +0 -0
  565. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_litellm_hardening.py +0 -0
  566. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_litellm_logging.py +0 -0
  567. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_litellm_model_via_env_generic.py +0 -0
  568. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_litellm_reasoning_passthrough.py +0 -0
  569. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_litellm_runtime.py +0 -0
  570. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_litellm_smoke.py +0 -0
  571. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_live_llm_trajectory.py +0 -0
  572. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_llm_judge.py +0 -0
  573. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_llm_judge_event_tags.py +0 -0
  574. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_llm_judge_verifier.py +0 -0
  575. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_loop_strategies.py +0 -0
  576. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_loop_summary.py +0 -0
  577. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_loop_sweep.py +0 -0
  578. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_memory_scorer.py +0 -0
  579. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_metrics.py +0 -0
  580. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_mle_bench_adapter.py +0 -0
  581. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_mock_openai_responses_server.py +0 -0
  582. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_monitor_scaffold.py +0 -0
  583. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_native_acp_usage.py +0 -0
  584. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_no_cross_provider_fallback.py +0 -0
  585. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_notification_order_real.py +0 -0
  586. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_opencode_family_proxy_tracking.py +0 -0
  587. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_oracle.py +0 -0
  588. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_oracle_chokepoint.py +0 -0
  589. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_paths_safe.py +0 -0
  590. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_paths_symlink_helpers.py +0 -0
  591. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_pi_acp_launcher.py +0 -0
  592. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_pi_acp_proxy_routing.py +0 -0
  593. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_process.py +0 -0
  594. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_project_skills_layout.py +0 -0
  595. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_provider_auth_detection.py +0 -0
  596. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_providers.py +0 -0
  597. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_reexport.py +0 -0
  598. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_registry_invariants.py +0 -0
  599. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_release_hardening_r5.py +0 -0
  600. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_release_version.py +0 -0
  601. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_release_workflow_wiring.py +0 -0
  602. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_resolve_env_helpers.py +0 -0
  603. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_review_boundaries.py +0 -0
  604. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_review_rubric.py +0 -0
  605. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_review_runtime.py +0 -0
  606. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_reward_lenient.py +0 -0
  607. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_reward_node.py +0 -0
  608. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_reward_range.py +0 -0
  609. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_reward_unified_contract.py +0 -0
  610. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rewards.py +0 -0
  611. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rewards_jsonl.py +0 -0
  612. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rollout_architecture.py +0 -0
  613. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rollout_branch.py +0 -0
  614. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rollout_config_path_coercion.py +0 -0
  615. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rollout_environment.py +0 -0
  616. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rollout_hard_deadline.py +0 -0
  617. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rollout_import_no_side_effects.py +0 -0
  618. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rollout_on_ask_user_wiring.py +0 -0
  619. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rollout_planes_contract.py +0 -0
  620. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rollout_probe_sandbox_health.py +0 -0
  621. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rollout_session_factory_dispatch.py +0 -0
  622. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rollout_setup_commands.py +0 -0
  623. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rollout_upload.py +0 -0
  624. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rubric_checks.py +0 -0
  625. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_rubric_config.py +0 -0
  626. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_runtime.py +0 -0
  627. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_runtime_capabilities.py +0 -0
  628. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_runtime_config_wired.py +0 -0
  629. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_runtime_live_sandbox.py +0 -0
  630. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox.py +0 -0
  631. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox_exec_secret_handling.py +0 -0
  632. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox_hardening.py +0 -0
  633. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox_isolation_copy_traversal.py +0 -0
  634. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox_live_process.py +0 -0
  635. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox_multi_service.py +0 -0
  636. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox_prebuilt_validation.py +0 -0
  637. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox_protocol.py +0 -0
  638. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox_provider_registry_drift.py +0 -0
  639. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox_setup.py +0 -0
  640. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox_snapshot_contract.py +0 -0
  641. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox_upload_symlink.py +0 -0
  642. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sandbox_verifier_workspace.py +0 -0
  643. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_scene.py +0 -0
  644. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_scene_outbox_trial.py +0 -0
  645. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_scene_parallel_group.py +0 -0
  646. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_scene_result_aggregation.py +0 -0
  647. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_scoring.py +0 -0
  648. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sdk_internals.py +0 -0
  649. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sdk_lockdown.py +0 -0
  650. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sdk_run_alias.py +0 -0
  651. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_sealed_channel_container.py +0 -0
  652. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_self_gen_cli.py +0 -0
  653. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_self_gen_export_error_channel.py +0 -0
  654. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_self_gen_export_failures.py +0 -0
  655. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_self_gen_orchestration.py +0 -0
  656. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_session_factory_runtime.py +0 -0
  657. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_session_request_permission_dispatch.py +0 -0
  658. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_skill_eval.py +0 -0
  659. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_skill_eval_dryrun.py +0 -0
  660. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_skill_eval_integration.py +0 -0
  661. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_skill_eval_sweep.py +0 -0
  662. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_skill_eval_traversal.py +0 -0
  663. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_skill_invocation_artifacts.py +0 -0
  664. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_skill_policy.py +0 -0
  665. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_skills.py +0 -0
  666. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_skills_dir_agent_home_link.py +0 -0
  667. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_skillsbench_conversion_conformance.py +0 -0
  668. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_skillsbench_harbor_run_suite.py +0 -0
  669. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_smoke.py +0 -0
  670. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_smoke_wiring.py +0 -0
  671. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_source_adapters.py +0 -0
  672. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_subscription_auth.py +0 -0
  673. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_task_check_eval_consistency.py +0 -0
  674. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_task_config.py +0 -0
  675. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_task_digest.py +0 -0
  676. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_task_document.py +0 -0
  677. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_task_download.py +0 -0
  678. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_task_export.py +0 -0
  679. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_task_output_format.py +0 -0
  680. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_task_package.py +0 -0
  681. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_task_runtime_primitive.py +0 -0
  682. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_tasks.py +0 -0
  683. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_token_usage_normalization.py +0 -0
  684. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_trace_import_cli.py +0 -0
  685. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_trace_task_gen_traversal.py +0 -0
  686. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_trace_to_task_evidence.py +0 -0
  687. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_traces_huggingface.py +0 -0
  688. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_traces_parsers.py +0 -0
  689. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_traces_task_gen.py +0 -0
  690. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_train_cli.py +0 -0
  691. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_train_mode_artifact_emission.py +0 -0
  692. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_train_trl_cli.py +0 -0
  693. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_trajectory_integration.py +0 -0
  694. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_trajectory_streaming.py +0 -0
  695. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_trial_agent_timeout_verify.py +0 -0
  696. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_trial_install_agent_timeout.py +0 -0
  697. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_trial_litellm_runtime.py +0 -0
  698. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_trl_integration.py +0 -0
  699. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_usage_litellm.py +0 -0
  700. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_usage_required.py +0 -0
  701. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_usage_tracking.py +0 -0
  702. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_user.py +0 -0
  703. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_v06_guard_ports.py +0 -0
  704. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_verifier_document.py +0 -0
  705. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_verifier_multi_container.py +0 -0
  706. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_verifier_output.py +0 -0
  707. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_verifier_output_freshness.py +0 -0
  708. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_verifier_strategies.py +0 -0
  709. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_verifier_wedge_retry.py +0 -0
  710. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_verify.py +0 -0
  711. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_workflow_action_pinning.py +0 -0
  712. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/test_yaml_config.py +0 -0
  713. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/trajectories/__init__.py +0 -0
  714. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/trajectories/test_export.py +0 -0
  715. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/trajectories/test_export_adp.py +0 -0
  716. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/trajectories/test_export_atif.py +0 -0
  717. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/trajectories/test_export_common.py +0 -0
  718. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/trajectories/test_export_nan_handling.py +0 -0
  719. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/trajectories/test_export_prime_sft.py +0 -0
  720. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/trajectories/test_step_granularity.py +0 -0
  721. {benchflow-0.6.10.dev1930 → benchflow-0.6.10.dev1961}/tests/trajectories/test_tree.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: benchflow
3
- Version: 0.6.10.dev1930
3
+ Version: 0.6.10.dev1961
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
@@ -87,36 +87,36 @@ Description-Content-Type: text/markdown
87
87
 
88
88
  BenchFlow is a universal environment framework: it runs AI agents against task environments and scores them through one hardened contract. **A benchmark is just a frozen environment** — point BenchFlow at any of them, drive it with *any* ACP agent, and run single-agent, multi-agent, or multi-round patterns over the same Scene-based lifecycle.
89
89
 
90
- - **Run any benchmark** — three-layer routing runs supported frameworks natively, translates unknown formats and proves equivalence with a parity gate, or runs a bespoke harness as-is; every layer emits one scored-trajectory contract. See [Run any benchmark](./docs/running-any-benchmark.md)
91
- - **Any ACP agent** — Gemini CLI, Claude Code, Codex, OpenCode, OpenHands, Pi, or your own
92
- - **Single + multi + progressive** — single-agent / multi-agent (coder + reviewer, simulated user) / multi-round with a Python `BaseUser` callback
93
- - **Loop strategies** — wrap any agent in a `--loop-strategy` (`verify-retry`, `self-review`); every rollout captures a per-iteration reward + token trajectory, so you can plot capability against cost (can a cheap model + loops match an expensive one at equal token spend?)
94
- - **`task.md` tasks** — one file (YAML frontmatter + prompt body) replaces the split `task.toml` + `instruction.md` layout; author with `bench tasks init` / `check` / `migrate` / `export`
95
- - **Hosted environments** — run external PrimeIntellect / Verifiers environments through `--source-env`, without converting them to BenchFlow tasks
96
- - **Sandboxes** — Docker locally, Apple Container on Apple Silicon Macs, Daytona for parallel cloud runs (orphaned sandboxes auto-reaped at eval start), Modal for serverless/GPU-backed task environments, and AgentCore for AWS-hosted runtimes
97
- - **Hardened verifier** — defaults block BenchJack/Meerkat-style reward-hacking; tasks opt out per-feature
98
- - **Training-ready output** — scored rollouts emit a Verifiers/ORS reward record and best-effort ATIF (`trainer/atif.json`) / ADP (`trainer/adp.jsonl`) conversions; ATIF is omitted when the trajectory is empty, and conversion errors are reported in the rollout result
90
+ ## Qucik start: 1. Upload a trajectory
99
91
 
100
- ## 1. Upload a trajectory
101
-
102
- No BenchFlow account, Azure credentials, or API key is required:
92
+ For local Claude Code or Codex jsonl formatted trajectory files that you are proud of (contain challenging tasks you dealed with via chatting to agents), you can upload that file to BenchFlow to join the competition for winning $2,000 cash reward. No BenchFlow account, credentials, or API key is required:
103
93
 
104
94
  ```bash
105
95
  # Install or upgrade BenchFlow
106
96
  uv tool install --python 3.12 --upgrade benchflow
107
97
 
108
- # Upload one capture
98
+ # Interactive upload (prompts for path, GitHub ID, then email)
99
+ bench traj upload
100
+
101
+ # Or provide every input up front
109
102
  bench traj upload /absolute/path/to/trial \
110
103
  --github-id YOUR_GITHUB_ID \
111
104
  --email YOU@example.com
112
105
  ```
113
106
 
114
107
  The path may be a trial directory, a directory of JSONL files, or one JSONL
115
- file. Both contributor fields are required and are stored in `manifest.json`.
108
+ file. Path and contributor details are required inputs; any that are omitted are
109
+ prompted for interactively. Detected secret values are replaced locally with
110
+ `<XXX-benchflow-key-values-XXX>` before upload. Contributor details are stored
111
+ in `manifest.json`. After the path is entered, the CLI shows a redacted preview
112
+ and a trajectory report with partitioned human, thinking, and tool-call counts,
113
+ creation time, file size, and the number of masked key values. Interactive users
114
+ confirm the report before a byte-progress display starts the upload. The full
115
+ redacted report is retained in the uploaded `manifest.json`.
116
116
  See the concise [upload skill](./.agents/skills/benchflow-traj-upload/SKILL.md)
117
117
  or the [trajectory upload guide](./docs/traj-upload.md).
118
118
 
119
- ## 2. Run with a ChatGPT or Claude subscription
119
+ ## Qucik start: 2. Run with a ChatGPT or Claude subscription
120
120
 
121
121
  No OpenAI or Anthropic API key is required. Start Docker, install BenchFlow,
122
122
  then run **one** of these options. BenchFlow detects the saved host login and
@@ -13,36 +13,36 @@
13
13
 
14
14
  BenchFlow is a universal environment framework: it runs AI agents against task environments and scores them through one hardened contract. **A benchmark is just a frozen environment** — point BenchFlow at any of them, drive it with *any* ACP agent, and run single-agent, multi-agent, or multi-round patterns over the same Scene-based lifecycle.
15
15
 
16
- - **Run any benchmark** — three-layer routing runs supported frameworks natively, translates unknown formats and proves equivalence with a parity gate, or runs a bespoke harness as-is; every layer emits one scored-trajectory contract. See [Run any benchmark](./docs/running-any-benchmark.md)
17
- - **Any ACP agent** — Gemini CLI, Claude Code, Codex, OpenCode, OpenHands, Pi, or your own
18
- - **Single + multi + progressive** — single-agent / multi-agent (coder + reviewer, simulated user) / multi-round with a Python `BaseUser` callback
19
- - **Loop strategies** — wrap any agent in a `--loop-strategy` (`verify-retry`, `self-review`); every rollout captures a per-iteration reward + token trajectory, so you can plot capability against cost (can a cheap model + loops match an expensive one at equal token spend?)
20
- - **`task.md` tasks** — one file (YAML frontmatter + prompt body) replaces the split `task.toml` + `instruction.md` layout; author with `bench tasks init` / `check` / `migrate` / `export`
21
- - **Hosted environments** — run external PrimeIntellect / Verifiers environments through `--source-env`, without converting them to BenchFlow tasks
22
- - **Sandboxes** — Docker locally, Apple Container on Apple Silicon Macs, Daytona for parallel cloud runs (orphaned sandboxes auto-reaped at eval start), Modal for serverless/GPU-backed task environments, and AgentCore for AWS-hosted runtimes
23
- - **Hardened verifier** — defaults block BenchJack/Meerkat-style reward-hacking; tasks opt out per-feature
24
- - **Training-ready output** — scored rollouts emit a Verifiers/ORS reward record and best-effort ATIF (`trainer/atif.json`) / ADP (`trainer/adp.jsonl`) conversions; ATIF is omitted when the trajectory is empty, and conversion errors are reported in the rollout result
16
+ ## Qucik start: 1. Upload a trajectory
25
17
 
26
- ## 1. Upload a trajectory
27
-
28
- No BenchFlow account, Azure credentials, or API key is required:
18
+ For local Claude Code or Codex jsonl formatted trajectory files that you are proud of (contain challenging tasks you dealed with via chatting to agents), you can upload that file to BenchFlow to join the competition for winning $2,000 cash reward. No BenchFlow account, credentials, or API key is required:
29
19
 
30
20
  ```bash
31
21
  # Install or upgrade BenchFlow
32
22
  uv tool install --python 3.12 --upgrade benchflow
33
23
 
34
- # Upload one capture
24
+ # Interactive upload (prompts for path, GitHub ID, then email)
25
+ bench traj upload
26
+
27
+ # Or provide every input up front
35
28
  bench traj upload /absolute/path/to/trial \
36
29
  --github-id YOUR_GITHUB_ID \
37
30
  --email YOU@example.com
38
31
  ```
39
32
 
40
33
  The path may be a trial directory, a directory of JSONL files, or one JSONL
41
- file. Both contributor fields are required and are stored in `manifest.json`.
34
+ file. Path and contributor details are required inputs; any that are omitted are
35
+ prompted for interactively. Detected secret values are replaced locally with
36
+ `<XXX-benchflow-key-values-XXX>` before upload. Contributor details are stored
37
+ in `manifest.json`. After the path is entered, the CLI shows a redacted preview
38
+ and a trajectory report with partitioned human, thinking, and tool-call counts,
39
+ creation time, file size, and the number of masked key values. Interactive users
40
+ confirm the report before a byte-progress display starts the upload. The full
41
+ redacted report is retained in the uploaded `manifest.json`.
42
42
  See the concise [upload skill](./.agents/skills/benchflow-traj-upload/SKILL.md)
43
43
  or the [trajectory upload guide](./docs/traj-upload.md).
44
44
 
45
- ## 2. Run with a ChatGPT or Claude subscription
45
+ ## Qucik start: 2. Run with a ChatGPT or Claude subscription
46
46
 
47
47
  No OpenAI or Anthropic API key is required. Start Docker, install BenchFlow,
48
48
  then run **one** of these options. BenchFlow detects the saved host login and
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "benchflow"
3
- version = "0.6.10.dev1930"
3
+ version = "0.6.10.dev1961"
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"
@@ -160,10 +160,17 @@ markers = [
160
160
  target-version = "py312"
161
161
  # Vendored third-party service packages baked into task images (e.g. the
162
162
  # smolclaws claw-* sources copied under a ClawsBench task's environment/) are
163
- # not BenchFlow code — do not lint them.
163
+ # not BenchFlow code — do not lint them. The skill-creator, task-creator, and
164
+ # task-review skills are verbatim upstream copies; keeping them byte-identical
165
+ # matters more than local style, so they are excluded too. Skills authored here
166
+ # (e.g. benchflow-experiment-review) stay linted.
164
167
  extend-exclude = [
165
168
  ".agents/skills/skill-creator",
169
+ ".agents/skills/task-creator",
170
+ ".agents/skills/task-review",
166
171
  ".claude/skills/skill-creator",
172
+ ".claude/skills/task-creator",
173
+ ".claude/skills/task-review",
167
174
  "benchmarks/**/tasks/**/environment/claw-*",
168
175
  "tests/fixtures/skillsbench_slice",
169
176
  ]
@@ -0,0 +1,138 @@
1
+ """Rich terminal rendering for trajectory inspection and upload progress."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Callable, Iterator
6
+ from contextlib import contextmanager
7
+ from dataclasses import dataclass
8
+
9
+ from rich.console import Console
10
+ from rich.panel import Panel
11
+ from rich.progress import (
12
+ BarColumn,
13
+ DownloadColumn,
14
+ Progress,
15
+ SpinnerColumn,
16
+ TaskProgressColumn,
17
+ TextColumn,
18
+ TimeElapsedColumn,
19
+ )
20
+ from rich.table import Table
21
+ from rich.text import Text
22
+
23
+ from benchflow.publish.redact import REDACTED
24
+ from benchflow.publish.traj_capture import StagedFile
25
+ from benchflow.publish.traj_report import PREVIEW_WORD_LIMIT, TrajectoryReport
26
+
27
+
28
+ def render_trajectory_report(report: TrajectoryReport, *, console: Console) -> None:
29
+ """Render upload facts and a bounded, already-redacted trajectory preview."""
30
+ facts = Table.grid(padding=(0, 2))
31
+ facts.add_column(style="bold cyan", no_wrap=True)
32
+ facts.add_column()
33
+ facts.add_row("Primary trajectory", Text(report.primary_file))
34
+ facts.add_row("Format", report.format.value)
35
+ facts.add_row("Created", _format_created_at(report))
36
+ facts.add_row("JSONL files", str(report.file_count))
37
+ facts.add_row("Trajectory size", format_bytes(report.size_bytes))
38
+ facts.add_row("Total steps", str(report.total_steps))
39
+ facts.add_row("Thinking steps", str(report.thinking_steps))
40
+ facts.add_row("Tool-call steps", str(report.tool_call_steps))
41
+ facts.add_row("Human steps", str(report.human_steps))
42
+ facts.add_row(
43
+ "API keys / secrets masked",
44
+ Text(str(report.masked_values), style="bold green"),
45
+ )
46
+ facts.add_row("Safe replacement", Text(REDACTED))
47
+ console.print(Panel(facts, title="Trajectory report", border_style="cyan"))
48
+
49
+ if not report.preview:
50
+ return
51
+ preview = Table(
52
+ title=(
53
+ f"First {len(report.preview)} trajectory steps "
54
+ f"(up to {PREVIEW_WORD_LIMIT} words each)"
55
+ ),
56
+ show_lines=True,
57
+ header_style="bold cyan",
58
+ )
59
+ preview.add_column("#", justify="right", style="dim", no_wrap=True)
60
+ preview.add_column("Kind", no_wrap=True)
61
+ preview.add_column("Preview", overflow="fold")
62
+ for step in report.preview:
63
+ preview.add_row(str(step.number), step.kind, Text(step.summary))
64
+ console.print(preview)
65
+ if len(report.preview) < report.total_steps:
66
+ console.print(
67
+ f"[dim]Showing {len(report.preview)} of {report.total_steps} steps. "
68
+ "Use --preview-steps to change the preview.[/dim]"
69
+ )
70
+
71
+
72
+ @dataclass(frozen=True)
73
+ class UploadProgressHooks:
74
+ """Transport callbacks that feed one shared progress bar."""
75
+
76
+ on_bytes: Callable[[int], None]
77
+ on_file_complete: Callable[[StagedFile], None]
78
+
79
+
80
+ @contextmanager
81
+ def upload_progress(
82
+ files: tuple[StagedFile, ...],
83
+ *,
84
+ console: Console,
85
+ ) -> Iterator[UploadProgressHooks]:
86
+ """Display streamed byte progress and yield the transport callbacks."""
87
+ total_bytes = sum(item.size_bytes for item in files)
88
+ streamed_bytes = 0
89
+ boundary_bytes = 0
90
+ progress = Progress(
91
+ SpinnerColumn(style="cyan"),
92
+ TextColumn("[bold cyan]{task.description}"),
93
+ BarColumn(),
94
+ TaskProgressColumn(),
95
+ DownloadColumn(binary_units=True),
96
+ TimeElapsedColumn(),
97
+ console=console,
98
+ )
99
+ with progress:
100
+ task_id = progress.add_task("Uploading trajectory", total=total_bytes)
101
+
102
+ def on_bytes(count: int) -> None:
103
+ nonlocal streamed_bytes
104
+ streamed_bytes = min(streamed_bytes + count, total_bytes)
105
+ progress.update(task_id, completed=streamed_bytes)
106
+
107
+ def on_file_complete(staged_file: StagedFile) -> None:
108
+ # Resync at each file boundary: a transport retry may re-read
109
+ # bytes, so the boundary is authoritative for completed work.
110
+ nonlocal boundary_bytes, streamed_bytes
111
+ boundary_bytes = min(boundary_bytes + staged_file.size_bytes, total_bytes)
112
+ streamed_bytes = boundary_bytes
113
+ progress.update(
114
+ task_id,
115
+ completed=boundary_bytes,
116
+ description=f"Uploaded {staged_file.relname}",
117
+ )
118
+
119
+ yield UploadProgressHooks(on_bytes=on_bytes, on_file_complete=on_file_complete)
120
+ progress.update(
121
+ task_id,
122
+ completed=total_bytes,
123
+ description="Upload complete",
124
+ )
125
+
126
+
127
+ def _format_created_at(report: TrajectoryReport) -> str:
128
+ local = report.created_at.astimezone()
129
+ return f"{local:%Y-%m-%d %H:%M:%S %Z} ({report.created_at_source})"
130
+
131
+
132
+ def format_bytes(size: int) -> str:
133
+ value = float(size)
134
+ for unit in ("B", "KB", "MB", "GB"):
135
+ if value < 1024 or unit == "GB":
136
+ return f"{value:.1f} {unit}"
137
+ value /= 1024
138
+ raise AssertionError("unreachable")
@@ -0,0 +1,278 @@
1
+ """``bench traj upload`` — contribute validated trajectory captures."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ from collections.abc import Callable
7
+ from dataclasses import dataclass
8
+ from pathlib import Path
9
+ from typing import Annotated, Protocol
10
+
11
+ import typer
12
+ from rich.markup import escape
13
+
14
+ from benchflow.cli._shared import console, print_error
15
+ from benchflow.cli._traj_upload_ui import (
16
+ UploadProgressHooks,
17
+ format_bytes,
18
+ render_trajectory_report,
19
+ upload_progress,
20
+ )
21
+ from benchflow.publish.traj_capture import (
22
+ StagedCapture,
23
+ default_source_id,
24
+ finalize_trajectory_capture,
25
+ stage_trajectory_artifacts,
26
+ validate_email,
27
+ validate_github_id,
28
+ )
29
+ from benchflow.publish.traj_report import (
30
+ DEFAULT_PREVIEW_STEPS,
31
+ MAX_PREVIEW_STEPS,
32
+ build_trajectory_report,
33
+ )
34
+
35
+ # The environment variable remains an override for development and disaster
36
+ # recovery.
37
+ DEFAULT_TRAJ_BROKER_URL: str | None = (
38
+ "https://tasksminer-traj-broker.nicewave-c3abaecf.westus2.azurecontainerapps.io"
39
+ )
40
+
41
+
42
+ @dataclass(frozen=True)
43
+ class _UploadOptions:
44
+ path: Path | None
45
+ github_id: str | None
46
+ email: str | None
47
+ source_id: str | None
48
+ direct: bool
49
+ container_url: str | None
50
+ dry_run: bool
51
+ preview_steps: int
52
+
53
+
54
+ @dataclass(frozen=True)
55
+ class _UploadDestination:
56
+ url: str
57
+ direct: bool
58
+
59
+
60
+ class _PublishResult(Protocol):
61
+ @property
62
+ def url(self) -> str: ...
63
+
64
+ @property
65
+ def uploaded(self) -> tuple[str, ...]: ...
66
+
67
+ @property
68
+ def skipped(self) -> tuple[str, ...]: ...
69
+
70
+
71
+ def register_traj(app: typer.Typer) -> None:
72
+ """Attach the trajectory contribution group to the top-level app."""
73
+ traj_app = typer.Typer(help="Trajectory commands.")
74
+ app.add_typer(traj_app, name="traj", rich_help_panel="Core")
75
+
76
+ @traj_app.command("upload")
77
+ def upload(
78
+ path: Annotated[
79
+ Path | None,
80
+ typer.Argument(help="Trajectory JSONL file, directory, or trial directory"),
81
+ ] = None,
82
+ github_id: Annotated[
83
+ str | None,
84
+ typer.Option("--github-id", help="Contributor GitHub username"),
85
+ ] = None,
86
+ email: Annotated[
87
+ str | None,
88
+ typer.Option("--email", help="Contributor email stored in the manifest"),
89
+ ] = None,
90
+ source_id: Annotated[
91
+ str | None,
92
+ typer.Option("--source-id", help="Stable contributor source identifier"),
93
+ ] = None,
94
+ direct: Annotated[
95
+ bool,
96
+ typer.Option("--direct", help="Upload with local Azure credentials"),
97
+ ] = False,
98
+ container_url: Annotated[
99
+ str | None,
100
+ typer.Option("--container-url", help="Azure container URL for --direct"),
101
+ ] = None,
102
+ dry_run: Annotated[
103
+ bool,
104
+ typer.Option("--dry-run", help="Validate and stage without uploading"),
105
+ ] = False,
106
+ preview_steps: Annotated[
107
+ int,
108
+ typer.Option(
109
+ "--preview-steps",
110
+ min=0,
111
+ max=MAX_PREVIEW_STEPS,
112
+ help="Number of redacted trajectory steps to preview",
113
+ ),
114
+ ] = DEFAULT_PREVIEW_STEPS,
115
+ ) -> None:
116
+ """Inspect, redact, confirm, and upload trajectory JSONL."""
117
+ try:
118
+ _run_upload(
119
+ _UploadOptions(
120
+ path=path,
121
+ github_id=github_id,
122
+ email=email,
123
+ source_id=source_id,
124
+ direct=direct,
125
+ container_url=container_url,
126
+ dry_run=dry_run,
127
+ preview_steps=preview_steps,
128
+ )
129
+ )
130
+ except ValueError as exc:
131
+ print_error(str(exc))
132
+ raise typer.Exit(1) from None
133
+
134
+
135
+ def _run_upload(options: _UploadOptions) -> None:
136
+ interactive = any(
137
+ value is None for value in (options.path, options.github_id, options.email)
138
+ )
139
+ path = options.path or _prompt_for_path()
140
+ source_id = options.source_id or default_source_id(path)
141
+ destination = _resolve_destination(options)
142
+
143
+ with (
144
+ console.status(
145
+ "[bold cyan]Inspecting trajectory and masking key values…"
146
+ ) as status,
147
+ stage_trajectory_artifacts(path, source_id=source_id) as artifacts,
148
+ ):
149
+ report = build_trajectory_report(
150
+ artifacts.files,
151
+ masked_values=artifacts.redaction_replacements,
152
+ preview_steps=options.preview_steps,
153
+ )
154
+ status.stop()
155
+ render_trajectory_report(report, console=console)
156
+
157
+ github_id, email = _resolve_contributor(options.github_id, options.email)
158
+ staged = finalize_trajectory_capture(
159
+ artifacts,
160
+ uploaded_by=os.environ.get("BENCHFLOW_TRAJ_UPLOADED_BY"),
161
+ github_id=github_id,
162
+ email=email,
163
+ trajectory_report=report.as_manifest_metadata(),
164
+ )
165
+ if options.dry_run:
166
+ _print_dry_run(staged)
167
+ return
168
+ if interactive and not typer.confirm(
169
+ "Upload this trajectory?",
170
+ default=False,
171
+ ):
172
+ console.print("[yellow]Upload cancelled.[/yellow]")
173
+ return
174
+ with upload_progress(staged.files, console=console) as hooks:
175
+ result = _publish(staged, destination=destination, hooks=hooks)
176
+ _print_upload_result(staged, result)
177
+
178
+
179
+ def _resolve_contributor(
180
+ github_id: str | None,
181
+ email: str | None,
182
+ ) -> tuple[str, str]:
183
+ return (
184
+ github_id or _prompt_valid("GitHub ID", validate_github_id),
185
+ email or _prompt_valid("Email", validate_email),
186
+ )
187
+
188
+
189
+ def _prompt_for_path() -> Path:
190
+ while True:
191
+ raw = typer.prompt("Trajectory JSONL file or trial directory").strip()
192
+ # Shells wrap dragged-in paths in quotes; accept them as typed.
193
+ if len(raw) >= 2 and raw[0] == raw[-1] and raw[0] in {"'", '"'}:
194
+ raw = raw[1:-1]
195
+ path = Path(raw).expanduser()
196
+ if path.exists():
197
+ return path
198
+ print_error(f"path not found: {path}")
199
+
200
+
201
+ def _prompt_valid(label: str, validate: Callable[[str], str]) -> str:
202
+ while True:
203
+ try:
204
+ return validate(typer.prompt(label))
205
+ except ValueError as exc:
206
+ print_error(str(exc))
207
+
208
+
209
+ def _resolve_destination(options: _UploadOptions) -> _UploadDestination:
210
+ if options.direct:
211
+ destination = options.container_url or os.environ.get(
212
+ "BENCHFLOW_AZURE_CONTAINER_URL"
213
+ )
214
+ if not destination:
215
+ raise ValueError(
216
+ "--direct requires --container-url or BENCHFLOW_AZURE_CONTAINER_URL"
217
+ )
218
+ return _UploadDestination(url=destination, direct=True)
219
+ if options.container_url:
220
+ raise ValueError("--container-url is only valid with --direct")
221
+ destination = os.environ.get("BENCHFLOW_TRAJ_BROKER_URL") or DEFAULT_TRAJ_BROKER_URL
222
+ if not destination:
223
+ raise ValueError(
224
+ "no trajectory broker is configured; set BENCHFLOW_TRAJ_BROKER_URL, "
225
+ "or use --direct with --container-url/BENCHFLOW_AZURE_CONTAINER_URL "
226
+ "if you have Azure credentials"
227
+ )
228
+ return _UploadDestination(url=destination, direct=False)
229
+
230
+
231
+ def _publish(
232
+ staged: StagedCapture,
233
+ *,
234
+ destination: _UploadDestination,
235
+ hooks: UploadProgressHooks,
236
+ ) -> _PublishResult:
237
+ if destination.direct:
238
+ from benchflow.publish.azure_blob import upload_capture_direct
239
+
240
+ return upload_capture_direct(
241
+ staged,
242
+ container_url=destination.url,
243
+ on_file_complete=hooks.on_file_complete,
244
+ on_bytes=hooks.on_bytes,
245
+ )
246
+ from benchflow.publish.broker import upload_capture_via_broker
247
+
248
+ return upload_capture_via_broker(
249
+ staged,
250
+ broker_url=destination.url,
251
+ on_file_complete=hooks.on_file_complete,
252
+ on_bytes=hooks.on_bytes,
253
+ )
254
+
255
+
256
+ def _print_upload_result(staged: StagedCapture, result: _PublishResult) -> None:
257
+ if not result.uploaded:
258
+ console.print(f"[green]Already uploaded:[/green] {escape(result.url)} (no-op)")
259
+ return
260
+ size = sum(item.size_bytes for item in staged.files)
261
+ console.print(
262
+ "[green]Uploaded trajectory:[/green] "
263
+ f"{escape(result.url)} "
264
+ f"({len(result.uploaded)} uploaded, {len(result.skipped)} skipped, "
265
+ f"{format_bytes(size)}, {staged.redaction_replacements} redactions)"
266
+ )
267
+
268
+
269
+ def _print_dry_run(staged: StagedCapture) -> None:
270
+ console.print("[bold]Dry run[/bold] — no files uploaded")
271
+ console.print(f"Digest: sha256:{staged.traj_digest}")
272
+ for staged_file in staged.files:
273
+ console.print(
274
+ f" {escape(staged_file.relname)} ({format_bytes(staged_file.size_bytes)})"
275
+ )
276
+ if staged.ignored:
277
+ console.print(f"Ignored: {escape(', '.join(staged.ignored))}")
278
+ console.print(f"Redactions: {staged.redaction_replacements}")
@@ -0,0 +1,38 @@
1
+ """Byte-count reporting for streamed uploads."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Callable, Iterator
6
+ from typing import BinaryIO
7
+
8
+ _CHUNK_BYTES = 64 * 1024
9
+
10
+
11
+ class ProgressReader:
12
+ """File-like proxy that reports bytes consumed to a callback.
13
+
14
+ Supports both transport styles: httpx drains iterables, the Azure SDK
15
+ drains ``read``. ``seek``/``tell`` are delegated so either consumer can
16
+ still derive an exact Content-Length without emitting progress.
17
+ """
18
+
19
+ def __init__(self, stream: BinaryIO, on_bytes: Callable[[int], None]) -> None:
20
+ self._stream = stream
21
+ self._on_bytes = on_bytes
22
+
23
+ def read(self, size: int = -1) -> bytes:
24
+ chunk = self._stream.read(size)
25
+ if chunk:
26
+ self._on_bytes(len(chunk))
27
+ return chunk
28
+
29
+ def __iter__(self) -> Iterator[bytes]:
30
+ while chunk := self._stream.read(_CHUNK_BYTES):
31
+ self._on_bytes(len(chunk))
32
+ yield chunk
33
+
34
+ def seek(self, offset: int, whence: int = 0) -> int:
35
+ return self._stream.seek(offset, whence)
36
+
37
+ def tell(self) -> int:
38
+ return self._stream.tell()
@@ -3,13 +3,15 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import logging
6
+ from collections.abc import Callable
6
7
  from contextlib import contextmanager
7
8
  from dataclasses import dataclass
8
9
  from typing import Any
9
10
  from urllib.parse import urlparse
10
11
 
11
12
  from benchflow import __version__
12
- from benchflow.publish.traj_capture import StagedCapture
13
+ from benchflow.publish._progress import ProgressReader
14
+ from benchflow.publish.traj_capture import StagedCapture, StagedFile
13
15
 
14
16
 
15
17
  @dataclass(frozen=True)
@@ -33,6 +35,8 @@ def upload_capture_direct(
33
35
  *,
34
36
  container_url: str,
35
37
  credential: Any = None,
38
+ on_file_complete: Callable[[StagedFile], None] | None = None,
39
+ on_bytes: Callable[[int], None] | None = None,
36
40
  ) -> BlobPublishResult:
37
41
  """Create staged files in an Azure container without overwriting blobs."""
38
42
  try:
@@ -68,9 +72,12 @@ def upload_capture_direct(
68
72
  blob_name = prefix + staged_file.relname
69
73
  try:
70
74
  with staged_file.local_path.open("rb") as stream:
75
+ data = (
76
+ stream if on_bytes is None else ProgressReader(stream, on_bytes)
77
+ )
71
78
  client.upload_blob(
72
79
  name=blob_name,
73
- data=stream,
80
+ data=data,
74
81
  overwrite=False,
75
82
  content_settings=ContentSettings(
76
83
  content_type=staged_file.content_type
@@ -100,6 +107,8 @@ def upload_capture_direct(
100
107
  ) from exc
101
108
  else:
102
109
  uploaded.append(blob_name)
110
+ if on_file_complete is not None:
111
+ on_file_complete(staged_file)
103
112
  return BlobPublishResult(
104
113
  account=account,
105
114
  container=container,