benchflow 0.6.7.dev1845__tar.gz → 0.6.8.dev1861__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.
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/CHANGELOG.md +106 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/PKG-INFO +2 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/pyproject.toml +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/config_override.py +3 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/scoring.py +12 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/task_authoring/scaffolding.py +2 -2
- benchflow-0.6.8.dev1861/src/benchflow/_utils/text.py +86 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/runtime.py +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/_toolathlon.py +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/harbor.py +8 -6
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/source.py +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/registry.py +4 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/_live_progress.py +9 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/orchestrator.py +2 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/demo_task/task.md +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/diagnostics.py +29 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/_registry/env0@outage.toml +7 -8
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/_registry/env0@prod.toml +10 -14
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/experimental/mcp/reviewer_server.py +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/litellm_runtime.py +207 -20
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/review/wrapper.py +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/__init__.py +28 -7
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_setup.py +4 -4
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/apple_container.py +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/daytona.py +31 -27
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/daytona_pty.py +68 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/daytona_strategies.py +3 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/setup.py +3 -3
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/skill_eval/_core.py +7 -8
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/skill_policy.py +2 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/__init__.py +2 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/_document_normalize.py +3 -3
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/_document_parse.py +81 -6
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/_document_profiles.py +2 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/acceptance_live_validation.py +2 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/config.py +144 -29
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/document.py +1 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/export.py +22 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/imports.py +5 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/runtime_capabilities.py +15 -15
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/traces/task_gen.py +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/acceptance_live_harness.py +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/task.md +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/hello-world-task/task.md +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acp_mcp_servers.py +2 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agentcore_sandbox.py +1 -3
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_live_progress.py +69 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_config_override.py +4 -3
- benchflow-0.6.8.dev1861/tests/test_diagnostics.py +151 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_env_setup.py +3 -3
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_environment_manifest_controls.py +4 -4
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_inbound_adapters.py +2 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_internet_policy.py +8 -8
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_job.py +17 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_runtime.py +41 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_live_llm_trajectory.py +226 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_mle_bench_adapter.py +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_release_workflow_wiring.py +24 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_setup_commands.py +3 -3
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_upload.py +9 -9
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_runtime_capabilities.py +9 -9
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_eval.py +3 -4
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_eval_integration.py +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_eval_sweep.py +4 -4
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_policy.py +1 -1
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_source_adapters.py +27 -29
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_config.py +133 -19
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_document.py +157 -24
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_export.py +62 -8
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_package.py +6 -6
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_traces_task_gen.py +2 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verifier_document.py +2 -2
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verify.py +1 -1
- benchflow-0.6.7.dev1845/src/benchflow/_utils/text.py +0 -37
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/.gitignore +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/LICENSE +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/README.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_dotenv.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_paths.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_run.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_types.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/benchmark_repos.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/build_context_stage.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/config.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/content_address.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/dataset_registry.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/env_registry.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/evaluation_results.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/hf_datasets.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/json_safe.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/learner_memory.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/live_activity.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/result_metadata.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/reward_events.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/source_provenance.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/task_authoring/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/task_authoring/_evidence_paths.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/task_authoring/acceptance_evidence.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/task_authoring/structural_checks.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/yaml_loader.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/client.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/container_transport.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/selection.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/session.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/transport.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/types.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/_toolathlon_container.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/_toolathlon_fake_mail.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/_toolathlon_poste_users.tsv +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/_toolathlon_services.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/inbound.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/inspect_ai.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/ors.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/resources/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/resources/mcp_atlas_bridge.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/resources/mcp_atlas_judge.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agent_router.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agent_router_guide.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agent_router_parity.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agent_router_scaffold.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/codex_config.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/credentials.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/deepagents_acp_shim.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/env.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/errors.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/harvey_lab_acp_shim.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/install.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/manifest.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/openclaw_acp_shim.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/pi_acp_launcher.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/protocol.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/providers.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/remote_manifests.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/branch.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/_failure_evidence.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/_hosted_env.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/_options.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/_shared.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/adopt.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/agent.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/continue_cmd.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/environment.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/eval_artifacts.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/eval_lift.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/hub.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/main.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/monitor.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/review.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/sandbox.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/skills.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/tasks.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/trace_import.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/train.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/batch.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/replay_proxy.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/run_folder.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/sandbox_proxy.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/contracts/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/contracts/planes.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/contracts/user.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/demo_task/environment/Dockerfile +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/demo_task/instruction.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/demo_task/task.toml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/demo_task/tests/test.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/manifest.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/manifest_env.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/protocol.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/readiness.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/eval_artifacts.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/eval_lift.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/eval_plan.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/eval_sharding.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/eval_worker.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/evaluation.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/experimental/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/experimental/mcp/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/experimental/mcp/hooks.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/hosted_env.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/hub/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/hub/harbor_registry.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/integrations/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/integrations/trl/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/integrations/trl/spec.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/learner_skills.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/learner_store.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/loop_strategies.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/loop_sweep.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/metrics.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/models.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/monitor.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/litellm_bedrock_patch.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/litellm_bedrock_preflight.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/litellm_config.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/litellm_logging.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/runtime.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/publish/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/publish/huggingface.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/py.typed +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/review/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/review/config.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/review/default-rubric.json +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/review/prompts.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/review/runner.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/README.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/builtins.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/events.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/file_readers.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/llm.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/memory_scorer.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/node.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/protocol.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/rubric.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/rubric_config.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/validation.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_config.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_deadline.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_results.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_skills.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_usage.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_user_loop.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/session_factory_runtime.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/task_runtime.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout_branch.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout_planes.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/runtime.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_base.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_cache_reclaim.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_compose.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_compose_files/docker-compose-base.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_compose_files/docker-compose-build.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_compose_files/docker-compose-no-network.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_compose_files/docker-compose-prebuilt.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_sdk_ops.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/agentcore.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/agentcore_builder.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/agentcore_image.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/agentcore_provisioning.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/agentcore_reaper.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/agentcore_sealed.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/daytona_dind.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/daytona_reaper.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/docker.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/lockdown.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/metadata.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/modal_impl.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/process/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/process/_base.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/process/agentcore.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/process/apple.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/process/daytona.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/process/docker.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/protocol.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/providers.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/services.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/snapshot.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/user.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/scenes.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sdk.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/self_gen.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/skill_eval/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/skill_eval/gepa_export.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/skill_eval/schema.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/skills.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/_document_evidence.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/acceptance_live.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/acceptance_live_model.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/acceptance_live_report.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/discovery.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/env.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/output_format.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/package.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/paths.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/prompts.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/runtime_view.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/task.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_core.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_document.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_errors.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_judge_inputs.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_ors_episode.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_reward_kit.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_scan.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_script_strategy.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/templates/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/templates/judge.py.tmpl +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/templates/test.sh.tmpl +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/traces/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/traces/huggingface.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/traces/local.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/traces/models.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/traces/parsers.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/training/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/training/backends/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/training/backends/prime_rl.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/training/run_manifest.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/_capture.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/_export_common.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/_llm_capture.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/call_purpose.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/export.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/export_adp.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/export_atif.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/export_prime_sft.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/export_trl_sft.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/metrics.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/results.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/tree.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/trl_sft_tokenization.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/types.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/viewer.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/usage_tracking.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_manifest_dirscan.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_manifest_loader.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_manifest_parity.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_manifest_wiring.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_namespace_shorthand.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_plugin_entry_points.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_protocol.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_remote_manifest_autoload.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/README.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/environment/Dockerfile +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/environment/docker-compose.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/environment/skills/conformance-writer/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/instruction.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/solution/solve.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/task.toml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/tests/test.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/conformance-results.json +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/proof_multi_agent.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/proof_snapshot.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/run_conformance.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/self_gen_smoke_skills/skill-creator/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conftest.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/continue_run/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/continue_run/_helpers.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/continue_run/test_batch.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/continue_run/test_orchestrator.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/continue_run/test_replay_proxy.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/continue_run/test_run_folder.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/test_chibench_manifest.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/test_clawsbench_manifest.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/test_manifest.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/test_manifest_env.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/test_protocol.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/test_readiness.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/hello-world-task/environment/Dockerfile +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/hello-world-task/instruction.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/hello-world-task/solution/solve.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/hello-world-task/task.toml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/hello-world-task/tests/test.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/test_claude.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/test_codex.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/test_codex_custom_provider.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/test_gemini.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/test_openclaw.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/traces/minimal-claude.jsonl +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/traces/minimal-opentraces.jsonl +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/README.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/alpha-task/environment/Dockerfile +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/alpha-task/instruction.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/alpha-task/task.toml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/alpha-task/tests/test.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/beta-task/data/empty.bin +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/beta-task/data/unicode.txt +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/beta-task/instruction.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/beta-task/task.toml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/not-a-task/notes.txt +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/mock_acp_agent.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/mock_acp_agent_interleaved.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/mock_acp_agent_multi_turn.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/mock_openai_responses_server.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/Dockerfile +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/data/michigan_stations.txt +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/flood-detection/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/nws-flood-thresholds/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/usgs-data-download/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/instruction.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/solution/solve.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/task.toml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test_outputs.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/Dockerfile +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/climate.csv +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/hydrology.csv +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/land_cover.csv +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/water_temperature.csv +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/contribution-analysis/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/meteorology-driver-classification/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/pca-decomposition/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/trend-analysis/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/instruction.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/solution/solve.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/task.toml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test_outputs.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/manifest.json +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/Dockerfile +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/r2r_simulator.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/finite-horizon-lqr/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/integral-action-design/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/mpc-horizon-tuning/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/state-space-linearization/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/system_config.json +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/instruction.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/solution/solve.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/task.toml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test_outputs.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/Dockerfile +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/generate_training_pcaps.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/local.rules +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/scripts/summarize_http_requests.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/scripts/run_suricata_offline.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-rules-basics/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/suricata.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/instruction.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/solution/solve.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/task.toml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test_outputs.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/Dockerfile +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syz-extract-constants/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzkaller-build-loop/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzlang-ioctl-basics/SKILL.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/instruction.md +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/solution/solve.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/task.toml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test_outputs.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/_consistency.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/agent_judge.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/check_adapter_evidence.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/check_hosted_env_evidence.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/check_results.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/check_skillsbench_harbor_parity.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/check_trace_to_task_evidence.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/claude-agent-acp.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/codex-acp.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/gemini.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/harvey-lab-harness.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/mimo.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/openclaw.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/opencode.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/openhands.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/pi-acp.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/deepagents_harness.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/rubric_checks.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/run.sh +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/run_suite.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/scenarios.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/suites/release.yaml +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acceptance_evidence.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acceptance_live.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acceptance_live_execution.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acp.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acp_capability_advertising.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acp_model_config_dispatch.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acp_pinned_protocol_guard.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acp_setup_failure_propagation.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_adapter_scripts.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_adapters.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_cli.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_env_resolution.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_gemini_defaults.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_idle_timeout_cli.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_model_decouple.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_registry.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_router.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_router_cli_e2e.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_router_scaffold.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_setup.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_spec.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agentcore_builder.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agentcore_parallel.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agentcore_reaper.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agentcore_transport.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_api_error_capture.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_apple_container_sandbox.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_bare_model_provider.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_base_install_imports.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_bedrock_thinking.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_benchflow_experiment_review_validator.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_benchmark_repos_resolve_repo_path.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_branch.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_build_context_stage.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_build_review_pack.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_capture_trajectory.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_check_skillsbench_harbor_parity.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_clawsbench_slice.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_adopt_aliases.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_arg_validation.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_daytona.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_docs_drift.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_edge_case_hardening.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_hub_env.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_misc.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_codex_review.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_codex_self_write_auth.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_config_redaction.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_connect_as_env.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_console_error_truncation.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_console_progress.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_continuallearningbench_adapter.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_dataset_registry.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_daytona_command_polling.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_daytona_dind_compose_up.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_daytona_download.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_daytona_litellm_runtime.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_daytona_poll_deadline.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_daytona_reap.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_deepagents_agent.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_docker_prune_scoping.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_docker_uploads.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_docs_examples.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eng50_capabilities.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_env_registry.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_artifact_cli.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_filters_applied.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_lift.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_sharding.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_single_task_summary.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_source_provenance.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_worker_retry.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_zero_task_guard.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_evaluation_environment_manifest.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_exclude_tasks.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_filter_credentialed_cells.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_harvey_lab_shim.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_hilbench_adapter.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_hosted_env.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_hosted_env_rollout_contract.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_hub_harbor_registry.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_inbound_adapter_manifest.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_agent_judge.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_check_results.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_consistency.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_matrix.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_provider_selection.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_run_suite.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_suite.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_job_sequential_shared.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_job_sequential_shared_resume.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_judge_robustness.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_judge_symlink_ingestion.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_learner_skills.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_learner_skills_traversal.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_learner_store.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_learner_store_persistence.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_config.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_hardening.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_logging.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_model_via_env_generic.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_reasoning_passthrough.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_smoke.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_llm_judge.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_llm_judge_event_tags.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_llm_judge_verifier.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_loop_strategies.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_loop_summary.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_loop_sweep.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_memory_scorer.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_metrics.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_mock_openai_responses_server.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_monitor_scaffold.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_native_acp_usage.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_no_cross_provider_fallback.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_notification_order_real.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_opencode_family_proxy_tracking.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_oracle.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_oracle_chokepoint.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_paths_safe.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_paths_symlink_helpers.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_pi_acp_launcher.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_pi_acp_proxy_routing.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_process.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_project_skills_layout.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_provider_auth_detection.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_providers.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_reexport.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_registry_invariants.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_release_hardening_r5.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_release_version.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_resolve_env_helpers.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_review_boundaries.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_review_rubric.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_review_runtime.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_reward_lenient.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_reward_node.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_reward_range.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_reward_unified_contract.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rewards.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rewards_jsonl.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_architecture.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_branch.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_config_path_coercion.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_environment.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_hard_deadline.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_import_no_side_effects.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_on_ask_user_wiring.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_planes_contract.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_probe_sandbox_health.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_session_factory_dispatch.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rubric_checks.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rubric_config.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_runtime.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_runtime_config_wired.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_runtime_live_sandbox.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_exec_secret_handling.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_hardening.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_isolation_copy_traversal.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_live_process.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_multi_service.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_prebuilt_validation.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_protocol.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_provider_registry_drift.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_setup.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_snapshot_contract.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_upload_symlink.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_verifier_workspace.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_scene.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_scene_outbox_trial.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_scene_parallel_group.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_scene_result_aggregation.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_scoring.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sdk_internals.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sdk_lockdown.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sdk_run_alias.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sealed_channel_container.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_self_gen_cli.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_self_gen_export_error_channel.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_self_gen_export_failures.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_self_gen_orchestration.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_session_factory_runtime.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_session_request_permission_dispatch.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_eval_dryrun.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_eval_traversal.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_invocation_artifacts.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skills.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skills_dir_agent_home_link.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skillsbench_conversion_conformance.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skillsbench_harbor_run_suite.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_smoke.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_smoke_wiring.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_subscription_auth.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_check_eval_consistency.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_digest.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_download.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_output_format.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_runtime_primitive.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_tasks.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_token_usage_normalization.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trace_import_cli.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trace_task_gen_traversal.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trace_to_task_evidence.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_traces_huggingface.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_traces_parsers.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_train_cli.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_train_mode_artifact_emission.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_train_trl_cli.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trajectory_integration.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trajectory_streaming.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trial_agent_timeout_verify.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trial_install_agent_timeout.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trial_litellm_runtime.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trl_integration.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_usage_litellm.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_usage_required.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_usage_tracking.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_user.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_v06_guard_ports.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verifier_multi_container.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verifier_output.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verifier_output_freshness.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verifier_strategies.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verifier_wedge_retry.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_workflow_action_pinning.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_yaml_config.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/__init__.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_export.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_export_adp.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_export_atif.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_export_common.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_export_nan_handling.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_export_prime_sft.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_redaction.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_step_granularity.py +0 -0
- {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_tree.py +0 -0
|
@@ -2,6 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
### Changed
|
|
6
|
+
- **BREAKING (task.md): the `environment:` frontmatter key is renamed to
|
|
7
|
+
`sandbox:`.** The native task-config surface now accepts only `sandbox:`
|
|
8
|
+
(plus `verifier.sandbox:` for the verifier's separate sandbox spec and
|
|
9
|
+
`verifier.sandbox_mode:` for shared/separate selection); `environment:`,
|
|
10
|
+
`verifier.environment:`, and `verifier.environment_mode:` no longer
|
|
11
|
+
validate and fail with an actionable message naming the rename. **The
|
|
12
|
+
one-line fix for existing task.md files is renaming the key.**
|
|
13
|
+
Legacy/Harbor `task.toml` imports are unaffected: the toml loader
|
|
14
|
+
converts `[environment]`, `[verifier.environment]`, and
|
|
15
|
+
`environment_mode` to the `sandbox` spellings (declaring both spellings
|
|
16
|
+
in one file is an error), and `bench tasks export` emits the inverse —
|
|
17
|
+
a stock-Harbor `[environment]`-spelled `task.toml`. All native emitters
|
|
18
|
+
— `model_dump_toml`, `bench tasks migrate`, task scaffolding,
|
|
19
|
+
skill-eval/trace/adapter task generation, rubric-review wrappers — now
|
|
20
|
+
write `sandbox`. Python API: the compat property
|
|
21
|
+
`TaskConfig.environment` is removed (use `TaskConfig.sandbox`),
|
|
22
|
+
`VerifierConfig.environment`/`environment_mode` became
|
|
23
|
+
`sandbox`/`sandbox_mode`, and the `VerifierEnvironmentMode` enum is now
|
|
24
|
+
`VerifierSandboxMode`. The Environment plane
|
|
25
|
+
(`--environment-manifest`, `benchflow.environment.manifest`, the
|
|
26
|
+
eval-config `environment:` docker/daytona selector) is a different
|
|
27
|
+
subsystem and is unchanged.
|
|
28
|
+
|
|
29
|
+
## 0.6.7 — 2026-08-09
|
|
30
|
+
|
|
5
31
|
### Added
|
|
6
32
|
- **Built-in environment registry.** The committed env-axis pins
|
|
7
33
|
(`env0@prod`, `env0@outage`) moved from `benchmarks/_environments/` into
|
|
@@ -10,13 +36,71 @@
|
|
|
10
36
|
`pip install benchflow` with no checkout and no env vars.
|
|
11
37
|
`$BENCHFLOW_ENV_REGISTRY`, when set, still wins entirely; resolution
|
|
12
38
|
stays content-addressed (sha256 logged), and unknown names now error
|
|
13
|
-
listing the available specs.
|
|
39
|
+
listing the available specs. (#961)
|
|
14
40
|
- **Console progress heartbeat.** Single-concurrency eval runs print a
|
|
15
41
|
throttled progress line (`… 6.2min, 12 tool calls (last: …)`) about every
|
|
16
42
|
45 seconds while the agent works, so a long prompt is distinguishable from
|
|
17
43
|
a hang. The heartbeat is auto-gated off for multi-concurrency jobs;
|
|
18
44
|
`bench eval run --quiet` suppresses it, and `BENCHFLOW_PROGRESS=on`/`off`
|
|
19
45
|
overrides the auto-gate. (#951)
|
|
46
|
+
- **Live per-task activity in the eval dashboard.** Under a TTY the
|
|
47
|
+
running-now table gains an activity column ("38 calls · last:
|
|
48
|
+
file_editor", plus tokens once a usage snapshot exists), polled from the
|
|
49
|
+
ACP session's existing heartbeat counters. The agents-manifest autoload
|
|
50
|
+
also clones quietly — one "Cloning …" summary line instead of raw git
|
|
51
|
+
progress. (#956)
|
|
52
|
+
- **Phase labels and per-task failure reasons.** The activity cell is never
|
|
53
|
+
blank while a row exists: sandbox create, agent install, and verify show
|
|
54
|
+
dim phase labels ("creating sandbox…", "installing agent…",
|
|
55
|
+
"verifying…"). The final block prints one dim "✗ task: reason" line per
|
|
56
|
+
failed task — verifier error first, else a compact reward/metric
|
|
57
|
+
breakdown, else the reward — capped at 5 lines. `--quiet` now silences
|
|
58
|
+
the dashboard as well as the heartbeat. (#957)
|
|
59
|
+
- **Failure reasons mined from verifier artifacts.** When a displayed
|
|
60
|
+
failure would read as a bare "reward X", the CLI reads a small bounded
|
|
61
|
+
artifact from the rollout's own verifier dir — the CTRF report (first
|
|
62
|
+
failed test plus its assertion line) or a tail of `test-stdout.txt` — and
|
|
63
|
+
a dim "(details: …/verifier)" pointer names the artifact directory.
|
|
64
|
+
Artifacts resolve by the recorded rollout name, never by glob. (#959)
|
|
65
|
+
- **Fractional rewards in console summaries.** Per-task lines carry the
|
|
66
|
+
scored reward (`✗ task (reward=0.30, tools=47)`), the Score line renders
|
|
67
|
+
", mean reward 0.30" alongside the binarized counts, and
|
|
68
|
+
`EvaluationResult` / `summary.json` gain a `mean_reward` field (mean over
|
|
69
|
+
scored rollouts; errors excluded, not zeroed). (#960)
|
|
70
|
+
- **Full failure counts on per-task console lines.** A CTRF report with
|
|
71
|
+
more than one failed test rolls up as " (+N more failure(s); P/T checks
|
|
72
|
+
passed)" after the first failure — the count suffix is never truncated
|
|
73
|
+
away — and parametrized test names keep their `[param]` ids whenever the
|
|
74
|
+
report carries them. (#962)
|
|
75
|
+
- **Live token usage in the dashboard footer.** The footer sums completed
|
|
76
|
+
tasks' trusted telemetry plus every running rollout's live ACP session
|
|
77
|
+
usage, so spend is visible while the run executes (usage lands per
|
|
78
|
+
completed prompt; cost stays scoring-time from the gateway log).
|
|
79
|
+
Single-tool agents' activity cell drops the redundant "last:" suffix in
|
|
80
|
+
favor of "38 calls · 412.0k tok" once tokens are available. (#963)
|
|
81
|
+
- **env0-shaped failure breakdowns.** The failure-reason tiers understand
|
|
82
|
+
metrics nested one level under `metrics` / `details`, pair
|
|
83
|
+
`<name>_found` with `<name>_total` into fractions ("deadlines 1/5",
|
|
84
|
+
lowest-signal first), probe `verifier/reward.json` on disk between the
|
|
85
|
+
CTRF and stdout tiers, and every failure block with on-disk verifier
|
|
86
|
+
artifacts gets one "(details: …)" pointer. (#964)
|
|
87
|
+
- **Mid-prompt live token usage via the gateway's live capture.** The #963
|
|
88
|
+
live tokens stepped forward only when an ACP prompt completed, so a
|
|
89
|
+
single-prompt rollout showed "— tokens" for its whole agent phase. The
|
|
90
|
+
proxy runtime's existing live-capture loop (which already tails the
|
|
91
|
+
sandbox gateway's callback log every second) now also accumulates
|
|
92
|
+
provider tokens into an O(1) counter, and the dashboard reconciles the
|
|
93
|
+
two non-decreasing live signals as max(ACP, gateway) — display-only,
|
|
94
|
+
still replaced by the trusted scoring import at completion, and any
|
|
95
|
+
gateway-side failure degrades to the ACP-only behavior. (#965)
|
|
96
|
+
|
|
97
|
+
- **Compact flow-style arrays in emitted task.md frontmatter.** Short
|
|
98
|
+
scalar-only lists render on one line (`tags: [parsing, nlp]`) instead of
|
|
99
|
+
multiline bullets, so hand-written flow arrays survive `bench tasks
|
|
100
|
+
migrate` / normalize round-trips. The style predicate measures each list
|
|
101
|
+
with the real YAML emitter (so it can never disagree with PyYAML's own
|
|
102
|
+
quoting) and falls back to block style for long, nested, or multiline
|
|
103
|
+
items. Parsing is unchanged — both styles were always accepted. (#967)
|
|
20
104
|
|
|
21
105
|
### Changed
|
|
22
106
|
- Migrated the clawsbench `archive-amazon-shipping` task to the native
|
|
@@ -51,6 +135,27 @@
|
|
|
51
135
|
environment now fails loud when it declares services but none are startable
|
|
52
136
|
in the image, instead of passing a vacuous readiness gate and dying at the
|
|
53
137
|
verifier. (#954)
|
|
138
|
+
- Pointed the built-in `env0@prod` / `env0@outage` pins at the org-owned
|
|
139
|
+
`ghcr.io/benchflow-ai/env0:0.2.0` base image. The wheel-shipped pins named a
|
|
140
|
+
personal Docker Hub image while their own comments and the environment docs
|
|
141
|
+
declared the ghcr image authoritative; `base_image` is recorded as rollout
|
|
142
|
+
provenance, so every env0 result carried the wrong base. Verified on Daytona
|
|
143
|
+
(env0 `auth-least-privilege-summary`, 8/8 services ready, reward 1.0).
|
|
144
|
+
- Restored the `env0@outage` perturbation (gmail and slack removed relative
|
|
145
|
+
to `env0@prod`) that the #954 upstream sync had erased by mirroring the
|
|
146
|
+
full service list into both pins, and corrected the pin header's stale
|
|
147
|
+
slack port. (#955)
|
|
148
|
+
- **ACP protocol JSON glued to PTY shell noise now decodes.** On PTY
|
|
149
|
+
transports, an agent's initialize response could arrive on the same line
|
|
150
|
+
as the shell prompt (ANSI/OSC-prefixed), fail the strict whole-line JSON
|
|
151
|
+
parse, and get filed as noise — the handshake then "timed out" at any
|
|
152
|
+
window with the answer sitting in the agent log. The PTY-facing transport
|
|
153
|
+
now retries from the first `{` and once more after an ANSI scrub, but
|
|
154
|
+
only until the first successfully decoded protocol message per
|
|
155
|
+
connection; afterwards the strict contract rules, so log-echoed envelopes
|
|
156
|
+
cannot impersonate protocol traffic mid-session. The pre-prompt handshake
|
|
157
|
+
window is also env-configurable via `BENCHFLOW_ACP_HANDSHAKE_TIMEOUT`
|
|
158
|
+
(seconds; default 60). (#958)
|
|
54
159
|
|
|
55
160
|
## 0.6.6 — 2026-08-04
|
|
56
161
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: benchflow
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.8.dev1861
|
|
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
|
|
@@ -144,8 +144,9 @@ def apply_config_override(config: Any, overlay: dict[str, Any] | None) -> Any:
|
|
|
144
144
|
|
|
145
145
|
# Merge against the FIELD-NAME dump (``by_alias=False``) so overlays use the
|
|
146
146
|
# canonical field names (``agent``, ``sandbox``, …); ``populate_by_name`` lets
|
|
147
|
-
# re-validation accept them. ``
|
|
148
|
-
#
|
|
147
|
+
# re-validation accept them. (``sandbox`` is now the only spelling — the
|
|
148
|
+
# legacy ``environment`` alias was removed in the rename — but ``oracle``
|
|
149
|
+
# still serializes via alias, so the field-name dump stays load-bearing.)
|
|
149
150
|
merged = deep_merge(config.model_dump(by_alias=False), overlay)
|
|
150
151
|
patched = TaskConfig.model_validate(merged)
|
|
151
152
|
logger.debug(
|
|
@@ -4,7 +4,10 @@ import math
|
|
|
4
4
|
from collections.abc import Iterable, Mapping
|
|
5
5
|
from typing import Any, Literal
|
|
6
6
|
|
|
7
|
-
from benchflow.diagnostics import
|
|
7
|
+
from benchflow.diagnostics import (
|
|
8
|
+
DIAGNOSTIC_REASON_IDLE_TIMEOUT,
|
|
9
|
+
TRANSIENT_SANDBOX_TRANSPORT_MARKER,
|
|
10
|
+
)
|
|
8
11
|
|
|
9
12
|
# Error category constants
|
|
10
13
|
INSTALL_FAILED = "install_failure"
|
|
@@ -174,6 +177,14 @@ def _looks_like_infra_error(error: str) -> bool:
|
|
|
174
177
|
"connection reset",
|
|
175
178
|
"connection refused",
|
|
176
179
|
"broken pipe",
|
|
180
|
+
# Stamped by TransientSandboxTransportError at the sandbox-SDK
|
|
181
|
+
# boundary, where the vendor exception type is still available to
|
|
182
|
+
# judge. One marker covers every provider call — exec, upload,
|
|
183
|
+
# download, stat — instead of one entry per vendor message
|
|
184
|
+
# prefix, which would be endless and silently incomplete.
|
|
185
|
+
TRANSIENT_SANDBOX_TRANSPORT_MARKER,
|
|
186
|
+
# Predates the marker above and is kept for strings rebuilt
|
|
187
|
+
# outside that boundary (e.g. a verifier error re-raised as text).
|
|
177
188
|
"failed to get session command",
|
|
178
189
|
"sandbox not found",
|
|
179
190
|
"workspace not found",
|
|
@@ -333,7 +333,7 @@ timeout_sec = 300
|
|
|
333
333
|
[verifier]
|
|
334
334
|
timeout_sec = 120
|
|
335
335
|
|
|
336
|
-
[
|
|
336
|
+
[sandbox]
|
|
337
337
|
cpus = 1
|
|
338
338
|
memory_mb = 2048
|
|
339
339
|
""")
|
|
@@ -412,7 +412,7 @@ agent:
|
|
|
412
412
|
timeout_sec: 300
|
|
413
413
|
verifier:
|
|
414
414
|
timeout_sec: 120
|
|
415
|
-
|
|
415
|
+
sandbox:
|
|
416
416
|
cpus: 1
|
|
417
417
|
memory_mb: 2048
|
|
418
418
|
---
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"""Plain-text rendering for console and log lines.
|
|
2
|
+
|
|
3
|
+
Two helpers live here: :func:`truncate_end`, which shortens a message
|
|
4
|
+
without letting a sliced token read as a whole word, and
|
|
5
|
+
:func:`describe_exception`, which renders an exception so the resulting
|
|
6
|
+
line is never detail-free.
|
|
7
|
+
|
|
8
|
+
The eval console renders one line per rollout, e.g.::
|
|
9
|
+
|
|
10
|
+
[ERR] my-task (tools=0) (Docker compose command failed ...)
|
|
11
|
+
|
|
12
|
+
Error messages routinely embed task names and paths, and a bare
|
|
13
|
+
``msg[:n]`` slice can cut one of those tokens in half — ``environment
|
|
14
|
+
authored-task`` rendered as ``environment auth`` — which reads as a
|
|
15
|
+
different, complete name. ``truncate_end`` is the canonical fix: the cut
|
|
16
|
+
only ever removes the tail, backs up to a word boundary when one exists,
|
|
17
|
+
and is marked with an ellipsis so a shortened message can never
|
|
18
|
+
masquerade as a full one.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def truncate_end(message: str, limit: int) -> str:
|
|
25
|
+
"""Shorten ``message`` to at most ``limit`` characters, ending in ``…``.
|
|
26
|
+
|
|
27
|
+
The kept text is always a verbatim prefix of the original (interior
|
|
28
|
+
words are never dropped), backed up to the previous word boundary so
|
|
29
|
+
a sliced token cannot read as a complete word. A single token longer
|
|
30
|
+
than the budget is still cut, with the ellipsis marking the cut.
|
|
31
|
+
Messages within budget are returned unchanged.
|
|
32
|
+
"""
|
|
33
|
+
if len(message) <= limit:
|
|
34
|
+
return message
|
|
35
|
+
if limit <= 1:
|
|
36
|
+
return "…" if limit == 1 else ""
|
|
37
|
+
kept = message[: limit - 1]
|
|
38
|
+
if message[limit - 1] != " ":
|
|
39
|
+
head, sep, _partial = kept.rpartition(" ")
|
|
40
|
+
if sep:
|
|
41
|
+
kept = head
|
|
42
|
+
return kept.rstrip() + "…"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def describe_exception(exc: BaseException) -> str:
|
|
46
|
+
"""Render ``exc`` as a one-line description that is never detail-free.
|
|
47
|
+
|
|
48
|
+
``f"{exc}"`` keeps only ``str(exc)``, which for some SDK errors carries
|
|
49
|
+
no information at all. The Daytona SDK wraps every toolbox call as
|
|
50
|
+
``"<prefix>: " + str(underlying)``, and httpx raises its timeout and
|
|
51
|
+
connection errors with an *empty* message — so a read timeout on
|
|
52
|
+
``execute_session_command`` stringifies to the bare
|
|
53
|
+
``"Failed to execute session command: "``, a message whose detail after
|
|
54
|
+
the colon is empty. The exception *class* (``DaytonaTimeoutError`` vs
|
|
55
|
+
``DaytonaConnectionError``) is then the only surviving evidence of what
|
|
56
|
+
actually went wrong, and plain interpolation discards it.
|
|
57
|
+
|
|
58
|
+
Lead with the class name so "the exec timed out" can never again be
|
|
59
|
+
indistinguishable from "the connection dropped". The trailing
|
|
60
|
+
``status_code``/``error_code`` fields serve the *other* shape of SDK
|
|
61
|
+
failure — an OpenAPI exception carrying an HTTP response — and are
|
|
62
|
+
absent by construction for the detail-free transport case above, which
|
|
63
|
+
never reaches a response at all.
|
|
64
|
+
"""
|
|
65
|
+
name = type(exc).__name__
|
|
66
|
+
message = str(exc).strip()
|
|
67
|
+
# Approximation: this tests the whole message, not specifically the
|
|
68
|
+
# detail after a wrapper prefix — a message that legitimately ends in a
|
|
69
|
+
# colon is annotated too. That is harmless, and the alternative means
|
|
70
|
+
# knowing every vendor's prefix.
|
|
71
|
+
if message.endswith(":"):
|
|
72
|
+
message = f"{message} (no detail)"
|
|
73
|
+
described = f"{name}: {message}" if message else f"{name} (no message)"
|
|
74
|
+
details: list[str] = []
|
|
75
|
+
status_code = getattr(exc, "status_code", None)
|
|
76
|
+
# Both fields are "absent" when falsy, but only ``status_code`` has a
|
|
77
|
+
# meaningful zero-ish value to protect (no HTTP status is 0, yet an
|
|
78
|
+
# explicit 0 should still surface as evidence of a malformed response).
|
|
79
|
+
if status_code is not None:
|
|
80
|
+
details.append(f"status_code={status_code}")
|
|
81
|
+
error_code = getattr(exc, "error_code", None)
|
|
82
|
+
if error_code:
|
|
83
|
+
details.append(f"error_code={error_code}")
|
|
84
|
+
if details:
|
|
85
|
+
described = f"{described} [{', '.join(details)}]"
|
|
86
|
+
return described
|
|
@@ -549,7 +549,7 @@ async def connect_acp(
|
|
|
549
549
|
dormant and the auto-approve policy ran unconditionally (#382 follow-up).
|
|
550
550
|
|
|
551
551
|
``mcp_servers`` are the task's configured MCP servers (mapped from
|
|
552
|
-
``[[
|
|
552
|
+
``[[sandbox.mcp_servers]]``); they are attached to the ACP session at
|
|
553
553
|
``session/new`` so the agent can reach them. ``None`` attaches none.
|
|
554
554
|
|
|
555
555
|
Retries with exponential backoff on ConnectionError (Daytona SSH storms).
|
|
@@ -15,12 +15,14 @@ BenchFlow-native shape:
|
|
|
15
15
|
└── tests/ # test.sh — the verifier
|
|
16
16
|
|
|
17
17
|
This adapter is consequently a thin *normalizer*: it loads the foreign
|
|
18
|
-
``task.toml`` through
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
``task.toml`` through :func:`~benchflow.task.imports.import_task_config_toml`,
|
|
19
|
+
whose toml import boundary translates Harbor's ``[environment]``-keyed
|
|
20
|
+
sandbox section to the native ``sandbox`` key and handles the ``version`` ->
|
|
21
|
+
``schema_version`` rename before native :class:`TaskConfig` validation. It
|
|
22
|
+
then reads ``instruction.md`` and records the build/solution/test files under
|
|
23
|
+
their native relative paths. Beyond that spelling translation no field
|
|
24
|
+
remapping is needed — Harbor is structurally the native format, which is
|
|
25
|
+
exactly what makes Terminal-Bench backward-compatible through this edge.
|
|
24
26
|
"""
|
|
25
27
|
|
|
26
28
|
from __future__ import annotations
|
|
@@ -243,7 +243,7 @@ def _materialize_mcp_atlas(ctx: _SourceContext, output_dir: Path) -> None:
|
|
|
243
243
|
"MCP_ATLAS_JUDGE_MODEL": "${MCP_ATLAS_JUDGE_MODEL:-qwen/qwen-plus}",
|
|
244
244
|
},
|
|
245
245
|
},
|
|
246
|
-
"
|
|
246
|
+
"sandbox": {
|
|
247
247
|
"cpus": 4,
|
|
248
248
|
"memory_mb": 8192,
|
|
249
249
|
"storage_mb": 10240,
|
|
@@ -53,6 +53,8 @@ import shlex
|
|
|
53
53
|
from dataclasses import dataclass, field
|
|
54
54
|
from pathlib import Path
|
|
55
55
|
|
|
56
|
+
from benchflow._utils.text import describe_exception
|
|
57
|
+
|
|
56
58
|
|
|
57
59
|
def _install_python_script(container_path: str, source: str) -> str:
|
|
58
60
|
"""Shell snippet that ensures python3 and writes `source` to container_path.
|
|
@@ -1469,7 +1471,7 @@ def _load_agent_plugin_packages() -> None:
|
|
|
1469
1471
|
try:
|
|
1470
1472
|
eps = entry_points(group="benchflow.agents")
|
|
1471
1473
|
except Exception as exc: # pragma: no cover - metadata backend quirks
|
|
1472
|
-
FAILED_AGENT_PLUGINS["<entry-point-scan>"] =
|
|
1474
|
+
FAILED_AGENT_PLUGINS["<entry-point-scan>"] = describe_exception(exc)
|
|
1473
1475
|
logging.getLogger(__name__).warning(
|
|
1474
1476
|
"benchflow.agents entry-point scan failed; ALL agent plugins are "
|
|
1475
1477
|
"disabled: %s",
|
|
@@ -1483,7 +1485,7 @@ def _load_agent_plugin_packages() -> None:
|
|
|
1483
1485
|
if callable(loaded):
|
|
1484
1486
|
loaded()
|
|
1485
1487
|
except Exception as exc:
|
|
1486
|
-
FAILED_AGENT_PLUGINS[ep.name] =
|
|
1488
|
+
FAILED_AGENT_PLUGINS[ep.name] = describe_exception(exc)
|
|
1487
1489
|
logging.getLogger(__name__).warning(
|
|
1488
1490
|
"benchflow.agents plugin %r failed to load (some or all of its "
|
|
1489
1491
|
"agents may be unavailable or partially registered): %s",
|
|
@@ -135,13 +135,21 @@ def _fmt_tokens(n: int) -> str:
|
|
|
135
135
|
# while the session counters are unavailable — before the agent session
|
|
136
136
|
# exists and after it is torn down — so sandbox create, agent install, and
|
|
137
137
|
# the verifier read as work, not as a hang.
|
|
138
|
+
#
|
|
139
|
+
# The labels must be monotonic across a run: the row is a progress indicator,
|
|
140
|
+
# so stepping back to an earlier stage reads as the run having restarted.
|
|
141
|
+
# "executed" maps to the agent stage, not the verifier: since verify() marks
|
|
142
|
+
# "verifying" at its own entry, the only stretch that renders under "executed"
|
|
143
|
+
# is the inside of disconnect() (session already dropped, agent process being
|
|
144
|
+
# killed) — labelling that "verifying…" made the row show "verifying…", then
|
|
145
|
+
# "running agent…" (disconnect's "installed"), then "verifying…" again.
|
|
138
146
|
_PHASE_LABELS = {
|
|
139
147
|
"created": "creating sandbox…",
|
|
140
148
|
"setup": "creating sandbox…",
|
|
141
149
|
"started": "installing agent…",
|
|
142
150
|
"installed": "running agent…",
|
|
143
151
|
"connected": "running agent…",
|
|
144
|
-
"executed": "
|
|
152
|
+
"executed": "running agent…",
|
|
145
153
|
"verifying": "verifying…",
|
|
146
154
|
"verified": "cleaning up…",
|
|
147
155
|
"cleaned": "cleaning up…",
|
{benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/orchestrator.py
RENAMED
|
@@ -30,6 +30,7 @@ from dataclasses import dataclass
|
|
|
30
30
|
from pathlib import Path
|
|
31
31
|
from typing import Any, cast
|
|
32
32
|
|
|
33
|
+
from benchflow._utils.text import describe_exception
|
|
33
34
|
from benchflow.continue_run.replay_proxy import ReplayProxy, ReplayRouter
|
|
34
35
|
from benchflow.continue_run.run_folder import RunFolder, RunFolderError, load_run_folder
|
|
35
36
|
from benchflow.continue_run.sandbox_proxy import (
|
|
@@ -442,7 +443,7 @@ async def _safe_sandbox_continuation_teardown(
|
|
|
442
443
|
try:
|
|
443
444
|
await awaitable
|
|
444
445
|
except Exception as exc:
|
|
445
|
-
message = f"{label}: {exc}"
|
|
446
|
+
message = f"{label}: {describe_exception(exc)}"
|
|
446
447
|
errors.append(message)
|
|
447
448
|
logger.warning("Continuation teardown step failed: %s", message)
|
|
448
449
|
|
|
@@ -477,6 +477,33 @@ class RolloutDiagnostics:
|
|
|
477
477
|
return d if isinstance(d, TransportClosedDiagnostic) else None
|
|
478
478
|
|
|
479
479
|
|
|
480
|
+
TRANSIENT_SANDBOX_TRANSPORT_MARKER = "transient sandbox transport failure"
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
class TransientSandboxTransportError(ConnectionError):
|
|
484
|
+
"""A sandbox-provider API call failed at the transport layer.
|
|
485
|
+
|
|
486
|
+
Raised at the SDK boundary, where the vendor exception *type* is still
|
|
487
|
+
alive, and carrying one stable marker so downstream classification never
|
|
488
|
+
has to keep a census of vendor message prefixes.
|
|
489
|
+
|
|
490
|
+
This exists because the vendor prefix is the wrong thing to match on.
|
|
491
|
+
The Daytona SDK stamps a different prefix per method — "Failed to
|
|
492
|
+
execute session command: ", "Failed to upload files: ", "Failed to get
|
|
493
|
+
file info: " — while the *failure* is identical in every case: an httpx
|
|
494
|
+
timeout or disconnect against the toolbox API, with an empty message.
|
|
495
|
+
Enumerating those prefixes in the classifier means one entry per vendor
|
|
496
|
+
method, silently incomplete the moment the SDK adds or renames one, and
|
|
497
|
+
it also over-matches: a permanent 401/400/409 shares the prefix but is
|
|
498
|
+
not transient. Deciding at the raise site, where
|
|
499
|
+
``_is_daytona_transient_retry_error`` can inspect the real class, keeps
|
|
500
|
+
both halves honest.
|
|
501
|
+
"""
|
|
502
|
+
|
|
503
|
+
def __init__(self, detail: str) -> None:
|
|
504
|
+
super().__init__(f"{TRANSIENT_SANDBOX_TRANSPORT_MARKER}: {detail}")
|
|
505
|
+
|
|
506
|
+
|
|
480
507
|
# Summary / check_results helpers driven by the registry
|
|
481
508
|
|
|
482
509
|
|
|
@@ -514,6 +541,8 @@ __all__ = [
|
|
|
514
541
|
"IdleTimeoutError",
|
|
515
542
|
"TransportClosedError",
|
|
516
543
|
"RolloutDiagnostics",
|
|
544
|
+
"TRANSIENT_SANDBOX_TRANSPORT_MARKER",
|
|
545
|
+
"TransientSandboxTransportError",
|
|
517
546
|
"summary_warning",
|
|
518
547
|
"format_issue_for_field",
|
|
519
548
|
]
|
|
@@ -9,10 +9,13 @@
|
|
|
9
9
|
# resolves on a bare pip install with no $BENCHFLOW_ENV_REGISTRY set:
|
|
10
10
|
#
|
|
11
11
|
# bench eval create --tasks-dir <task> --environment-manifest env0@outage ...
|
|
12
|
+
#
|
|
13
|
+
# NOTE: ghcr.io/benchflow-ai/env0:0.2.0 is amd64-only — run env0 on Daytona
|
|
14
|
+
# (x86_64), not local Docker on Apple Silicon.
|
|
12
15
|
|
|
13
16
|
[environment]
|
|
14
17
|
name = "env-0"
|
|
15
|
-
base_image = "
|
|
18
|
+
base_image = "ghcr.io/benchflow-ai/env0:0.2.0"
|
|
16
19
|
owns_lifecycle = false
|
|
17
20
|
isolation = "per_task"
|
|
18
21
|
|
|
@@ -22,13 +25,9 @@ mechanism = "image"
|
|
|
22
25
|
[environment.readiness]
|
|
23
26
|
timeout_sec = 60
|
|
24
27
|
|
|
25
|
-
# Services below are copied VERBATIM from the upstream env-0.toml pin
|
|
26
|
-
#
|
|
27
|
-
#
|
|
28
|
-
# images (which ship mock-auth/mock-gmail/... console scripts), plus a
|
|
29
|
-
# phantom slack service and shifted ports — so ManifestEnvironment
|
|
30
|
-
# probed, found ZERO startable services, and readiness passed vacuously
|
|
31
|
-
# while every rollout died at the verifier with connection-refused.
|
|
28
|
+
# Services below are copied VERBATIM from the upstream env-0.toml pin,
|
|
29
|
+
# minus this variant's deliberate outage (mock-gmail and mock-slack
|
|
30
|
+
# removed).
|
|
32
31
|
|
|
33
32
|
[[environment.services]]
|
|
34
33
|
name = "mock-auth"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# env0@prod — pinned, content-addressed Environment-plane manifest for env-0.
|
|
2
2
|
#
|
|
3
3
|
# This is a built-in registry entry, shipped inside the benchflow wheel
|
|
4
|
-
# (benchflow/environment/_registry/) so
|
|
4
|
+
# (benchflow/environment/_registry/) so the env-axis pin resolves on a
|
|
5
5
|
# bare pip install — no checkout, no env vars:
|
|
6
6
|
#
|
|
7
7
|
# bench eval create --tasks-dir <env0 tasks> --environment-manifest env0@prod ...
|
|
@@ -9,16 +9,18 @@
|
|
|
9
9
|
# Set $BENCHFLOW_ENV_REGISTRY to a local directory of name@version.toml files
|
|
10
10
|
# to override the built-in registry entirely.
|
|
11
11
|
#
|
|
12
|
-
# Mirrors benchflow-ai/env0 tasks/_manifests/env-0.toml (the source of truth).
|
|
13
|
-
# FROM the shared base and bake seed data;
|
|
14
|
-
# probes each service's CLI and starts only
|
|
15
|
-
# image, gating the agent on each
|
|
12
|
+
# Mirrors benchflow-ai/env0 tasks/_manifests/env-0.toml (the source of truth).
|
|
13
|
+
# env-0's per-task images build FROM the shared base and bake seed data;
|
|
14
|
+
# benchflow's ManifestEnvironment probes each service's CLI and starts only
|
|
15
|
+
# the ones installed in the per-task image, gating the agent on each
|
|
16
|
+
# service's /health.
|
|
16
17
|
#
|
|
17
|
-
# NOTE:
|
|
18
|
+
# NOTE: ghcr.io/benchflow-ai/env0:0.2.0 is amd64-only — run env0 on Daytona
|
|
19
|
+
# (x86_64), not local Docker on Apple Silicon.
|
|
18
20
|
|
|
19
21
|
[environment]
|
|
20
22
|
name = "env-0"
|
|
21
|
-
base_image = "
|
|
23
|
+
base_image = "ghcr.io/benchflow-ai/env0:0.2.0"
|
|
22
24
|
owns_lifecycle = false
|
|
23
25
|
isolation = "per_task"
|
|
24
26
|
|
|
@@ -28,13 +30,7 @@ mechanism = "image"
|
|
|
28
30
|
[environment.readiness]
|
|
29
31
|
timeout_sec = 60
|
|
30
32
|
|
|
31
|
-
# Services below are copied VERBATIM from the upstream env-0.toml pin
|
|
32
|
-
# (2026-08-09 sync). The previous pin had drifted: bare CLI names
|
|
33
|
-
# (auth/gmail/...) that do not exist in ghcr.io/benchflow-ai/env0:0.2.0
|
|
34
|
-
# images (which ship mock-auth/mock-gmail/... console scripts), plus a
|
|
35
|
-
# phantom slack service and shifted ports — so ManifestEnvironment
|
|
36
|
-
# probed, found ZERO startable services, and readiness passed vacuously
|
|
37
|
-
# while every rollout died at the verifier with connection-refused.
|
|
33
|
+
# Services below are copied VERBATIM from the upstream env-0.toml pin.
|
|
38
34
|
|
|
39
35
|
[[environment.services]]
|
|
40
36
|
name = "mock-auth"
|
|
@@ -9,7 +9,7 @@ with a clean tool-call interface that prevents reward hacking (reviewer
|
|
|
9
9
|
never has write access to /app/).
|
|
10
10
|
|
|
11
11
|
Usage in task.toml:
|
|
12
|
-
[[
|
|
12
|
+
[[sandbox.mcp_servers]]
|
|
13
13
|
name = "reviewer"
|
|
14
14
|
transport = "streamable-http"
|
|
15
15
|
url = "http://localhost:8100/mcp"
|