benchflow 0.7.2.dev1986__tar.gz → 0.7.2.dev1994__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/CHANGELOG.md +36 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/PKG-INFO +14 -11
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/README.md +13 -10
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/pyproject.toml +1 -1
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/main.py +19 -3
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/traj.py +23 -10
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/viewer.py +176 -15
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traj_upload_cli.py +36 -5
- benchflow-0.7.2.dev1994/tests/test_viewer_confirm.py +205 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/.gitignore +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/LICENSE +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_dotenv.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_paths.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_run.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_types.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/benchmark_repos.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/build_context_stage.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/config.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/config_override.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/content_address.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/dataset_registry.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/env_registry.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/evaluation_results.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/hf_datasets.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/json_safe.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/learner_memory.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/live_activity.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/result_metadata.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/reward_events.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/scoring.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/source_provenance.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/_evidence_paths.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/acceptance_evidence.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/scaffolding.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/task_authoring/structural_checks.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/text.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/_utils/yaml_loader.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/client.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/container_transport.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/runtime.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/selection.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/session.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/transport.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/acp/types.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon_container.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon_fake_mail.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon_poste_users.tsv +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/_toolathlon_services.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/harbor.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/inbound.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/inspect_ai.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/ors.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/resources/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/resources/mcp_atlas_bridge.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/resources/mcp_atlas_judge.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/adapters/source.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agent_router.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agent_router_guide.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agent_router_parity.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agent_router_scaffold.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/codex_config.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/credentials.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/deepagents_acp_shim.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/env.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/errors.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/harvey_lab_acp_shim.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/install.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/manifest.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/openclaw_acp_shim.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/pi_acp_launcher.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/protocol.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/providers.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/registry.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/agents/remote_manifests.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/branch.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_failure_evidence.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_hosted_env.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_live_progress.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_options.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_shared.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/_traj_upload_ui.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/adopt.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/agent.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/continue_cmd.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/environment.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/eval_artifacts.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/eval_lift.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/hub.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/monitor.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/review.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/sandbox.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/skills.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/tasks.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/trace_import.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/cli/train.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/batch.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/orchestrator.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/replay_proxy.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/run_folder.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/continue_run/sandbox_proxy.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/contracts/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/contracts/planes.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/contracts/user.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/environment/Dockerfile +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/instruction.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/task.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/task.toml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/demo_task/tests/test.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/diagnostics.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/_registry/env0@outage.toml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/_registry/env0@prod.toml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/manifest.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/manifest_env.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/protocol.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/environment/readiness.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/eval_artifacts.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/eval_lift.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/eval_plan.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/eval_sharding.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/eval_worker.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/evaluation.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/experimental/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/experimental/mcp/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/experimental/mcp/hooks.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/experimental/mcp/reviewer_server.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/hosted_env.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/hub/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/hub/harbor_registry.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/integrations/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/integrations/trl/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/integrations/trl/spec.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/learner_skills.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/learner_store.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/loop_strategies.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/loop_sweep.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/metrics.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/models.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/monitor.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_bedrock_patch.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_bedrock_preflight.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_config.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_logging.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/litellm_runtime.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/providers/runtime.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/_progress.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/azure_blob.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/broker.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/huggingface.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/redact.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/traj_capture.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/publish/traj_report.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/py.typed +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/review/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/review/config.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/review/default-rubric.json +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/review/prompts.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/review/runner.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/review/wrapper.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/README.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/builtins.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/events.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/file_readers.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/llm.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/memory_scorer.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/node.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/protocol.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/rubric.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/rubric_config.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rewards/validation.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_config.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_deadline.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_results.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_setup.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_skills.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_usage.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/_user_loop.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/session_factory_runtime.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout/task_runtime.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout_branch.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/rollout_planes.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/runtime.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_base.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_cache_reclaim.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose_files/docker-compose-base.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose_files/docker-compose-build.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose_files/docker-compose-no-network.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_compose_files/docker-compose-prebuilt.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/_sdk_ops.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_builder.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_image.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_provisioning.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_reaper.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/agentcore_sealed.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/apple_container.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona_dind.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona_pty.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona_reaper.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/daytona_strategies.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/docker.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/lockdown.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/metadata.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/modal_impl.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/_base.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/agentcore.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/apple.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/daytona.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/process/docker.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/protocol.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/providers.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/services.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/setup.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/snapshot.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sandbox/user.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/scenes.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/sdk.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/self_gen.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/skill_eval/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/skill_eval/_core.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/skill_eval/gepa_export.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/skill_eval/schema.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/skill_policy.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/skills.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/_document_evidence.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/_document_normalize.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/_document_parse.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/_document_profiles.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/acceptance_live.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/acceptance_live_model.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/acceptance_live_report.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/acceptance_live_validation.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/config.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/discovery.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/document.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/env.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/export.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/imports.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/output_format.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/package.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/paths.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/prompts.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/runtime_capabilities.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/runtime_view.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/task.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_core.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_document.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_errors.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_judge_inputs.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_ors_episode.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_reward_kit.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_scan.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/task/verifier_script_strategy.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/templates/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/templates/judge.py.tmpl +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/templates/test.sh.tmpl +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/traces/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/traces/huggingface.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/traces/local.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/traces/models.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/traces/parsers.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/traces/task_gen.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/training/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/training/backends/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/training/backends/prime_rl.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/training/run_manifest.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/_capture.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/_export_common.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/_llm_capture.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/call_purpose.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export_adp.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export_atif.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export_prime_sft.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/export_trl_sft.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/metrics.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/results.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/sessions.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/tree.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/trl_sft_tokenization.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/trajectories/types.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/src/benchflow/usage_tracking.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/acceptance_live_harness.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_manifest_dirscan.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_manifest_loader.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_manifest_parity.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_manifest_wiring.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_namespace_shorthand.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_plugin_entry_points.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_protocol.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/agents/test_remote_manifest_autoload.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/README.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/environment/Dockerfile +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/environment/docker-compose.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/environment/skills/conformance-writer/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/instruction.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/solution/solve.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/task.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/task.toml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/acp_smoke/tests/test.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/conformance-results.json +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/proof_multi_agent.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/proof_snapshot.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/run_conformance.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conformance/self_gen_smoke_skills/skill-creator/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/conftest.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/continue_run/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/continue_run/_helpers.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/continue_run/test_batch.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/continue_run/test_orchestrator.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/continue_run/test_replay_proxy.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/continue_run/test_run_folder.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/test_chibench_manifest.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/test_clawsbench_manifest.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/test_manifest.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/test_manifest_env.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/test_protocol.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/environment/test_readiness.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/environment/Dockerfile +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/instruction.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/solution/solve.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/task.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/task.toml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/hello-world-task/tests/test.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/test_claude.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/test_codex.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/test_codex_custom_provider.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/test_gemini.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/test_openclaw.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/traces/minimal-claude.jsonl +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/examples/traces/minimal-opentraces.jsonl +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/README.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/alpha-task/environment/Dockerfile +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/alpha-task/instruction.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/alpha-task/task.toml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/alpha-task/tests/test.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/beta-task/data/empty.bin +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/beta-task/data/unicode.txt +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/beta-task/instruction.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/beta-task/task.toml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/digest/not-a-task/notes.txt +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/mock_acp_agent.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/mock_acp_agent_interleaved.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/mock_acp_agent_multi_turn.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/mock_openai_responses_server.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/Dockerfile +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/data/michigan_stations.txt +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/flood-detection/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/nws-flood-thresholds/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/usgs-data-download/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/instruction.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/solution/solve.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/task.toml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test_outputs.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/Dockerfile +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/climate.csv +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/hydrology.csv +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/land_cover.csv +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/water_temperature.csv +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/contribution-analysis/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/meteorology-driver-classification/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/pca-decomposition/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/trend-analysis/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/instruction.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/solution/solve.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/task.toml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test_outputs.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/manifest.json +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/Dockerfile +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/r2r_simulator.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/finite-horizon-lqr/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/integral-action-design/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/mpc-horizon-tuning/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/state-space-linearization/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/system_config.json +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/instruction.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/solution/solve.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/task.toml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test_outputs.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/Dockerfile +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/generate_training_pcaps.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/local.rules +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/scripts/summarize_http_requests.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/scripts/run_suricata_offline.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-rules-basics/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/suricata.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/instruction.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/solution/solve.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/task.toml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test_outputs.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/Dockerfile +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syz-extract-constants/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzkaller-build-loop/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzlang-ioctl-basics/SKILL.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/instruction.md +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/solution/solve.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/task.toml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test_outputs.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/_consistency.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/agent_judge.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/check_adapter_evidence.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/check_hosted_env_evidence.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/check_results.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/check_skillsbench_harbor_parity.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/check_trace_to_task_evidence.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/claude-agent-acp.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/codex-acp.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/gemini.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/harvey-lab-harness.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/mimo.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/openclaw.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/opencode.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/openhands.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/configs/pi-acp.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/deepagents_harness.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/rubric_checks.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/run.sh +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/run_suite.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/scenarios.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/integration/suites/release.yaml +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acceptance_evidence.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acceptance_live.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acceptance_live_execution.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acp.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acp_capability_advertising.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acp_mcp_servers.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acp_model_config_dispatch.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acp_pinned_protocol_guard.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_acp_setup_failure_propagation.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_adapter_scripts.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_adapters.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_cli.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_env_resolution.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_gemini_defaults.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_idle_timeout_cli.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_model_decouple.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_registry.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_router.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_router_cli_e2e.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_router_scaffold.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_setup.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agent_spec.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agentcore_builder.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agentcore_parallel.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agentcore_reaper.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agentcore_sandbox.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_agentcore_transport.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_api_error_capture.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_apple_container_sandbox.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_bare_model_provider.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_base_install_imports.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_bedrock_thinking.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_benchflow_experiment_review_validator.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_benchmark_repos_resolve_repo_path.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_branch.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_build_context_stage.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_build_review_pack.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_capture_trajectory.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_check_skillsbench_harbor_parity.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_clawsbench_slice.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_adopt_aliases.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_arg_validation.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_daytona.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_docs_drift.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_edge_case_hardening.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_hub_env.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_live_progress.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_cli_misc.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_codex_review.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_codex_self_write_auth.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_config_override.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_config_redaction.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_connect_as_env.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_console_error_truncation.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_console_progress.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_continuallearningbench_adapter.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_dataset_registry.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_daytona_command_polling.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_daytona_dind_compose_up.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_daytona_download.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_daytona_litellm_runtime.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_daytona_poll_deadline.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_daytona_reap.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_deepagents_agent.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_diagnostics.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_docker_prune_scoping.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_docker_uploads.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_docs_examples.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eng50_capabilities.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_env_registry.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_env_setup.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_environment_manifest_controls.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_artifact_cli.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_filters_applied.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_lift.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_sharding.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_single_task_summary.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_source_provenance.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_worker_retry.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_eval_zero_task_guard.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_evaluation_environment_manifest.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_exclude_tasks.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_filter_credentialed_cells.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_harvey_lab_shim.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_hilbench_adapter.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_hosted_env.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_hosted_env_rollout_contract.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_hub_harbor_registry.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_inbound_adapter_manifest.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_inbound_adapters.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_agent_judge.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_check_results.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_consistency.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_matrix.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_provider_selection.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_run_suite.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_integration_suite.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_internet_policy.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_job.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_job_sequential_shared.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_job_sequential_shared_resume.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_judge_robustness.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_judge_symlink_ingestion.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_learner_skills.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_learner_skills_traversal.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_learner_store.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_learner_store_persistence.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_config.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_hardening.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_logging.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_model_via_env_generic.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_reasoning_passthrough.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_runtime.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_litellm_smoke.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_live_llm_trajectory.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_llm_judge.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_llm_judge_event_tags.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_llm_judge_verifier.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_loop_strategies.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_loop_summary.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_loop_sweep.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_memory_scorer.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_metrics.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_mle_bench_adapter.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_mock_openai_responses_server.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_monitor_scaffold.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_native_acp_usage.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_no_cross_provider_fallback.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_notification_order_real.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_opencode_family_proxy_tracking.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_oracle.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_oracle_chokepoint.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_paths_safe.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_paths_symlink_helpers.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_pi_acp_launcher.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_pi_acp_proxy_routing.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_process.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_project_skills_layout.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_provider_auth_detection.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_providers.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_publish_azure_blob.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_reexport.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_registry_invariants.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_release_hardening_r5.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_release_version.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_release_workflow_wiring.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_resolve_env_helpers.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_review_boundaries.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_review_rubric.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_review_runtime.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_reward_lenient.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_reward_node.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_reward_range.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_reward_unified_contract.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rewards.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rewards_jsonl.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_architecture.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_branch.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_config_path_coercion.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_environment.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_hard_deadline.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_import_no_side_effects.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_on_ask_user_wiring.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_planes_contract.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_probe_sandbox_health.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_session_factory_dispatch.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_setup_commands.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rollout_upload.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rubric_checks.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_rubric_config.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_runtime.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_runtime_capabilities.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_runtime_config_wired.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_runtime_live_sandbox.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_exec_secret_handling.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_hardening.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_isolation_copy_traversal.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_live_process.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_multi_service.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_prebuilt_validation.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_protocol.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_provider_registry_drift.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_setup.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_snapshot_contract.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_upload_symlink.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sandbox_verifier_workspace.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_scene.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_scene_outbox_trial.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_scene_parallel_group.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_scene_result_aggregation.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_scoring.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sdk_internals.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sdk_lockdown.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sdk_run_alias.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_sealed_channel_container.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_self_gen_cli.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_self_gen_export_error_channel.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_self_gen_export_failures.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_self_gen_orchestration.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_session_factory_runtime.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_session_request_permission_dispatch.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_eval.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_eval_dryrun.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_eval_integration.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_eval_sweep.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_eval_traversal.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_invocation_artifacts.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skill_policy.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skills.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skills_dir_agent_home_link.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skillsbench_conversion_conformance.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_skillsbench_harbor_run_suite.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_smoke.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_smoke_wiring.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_source_adapters.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_subscription_auth.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_check_eval_consistency.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_config.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_digest.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_document.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_download.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_export.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_output_format.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_package.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_task_runtime_primitive.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_tasks.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_token_usage_normalization.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trace_import_cli.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trace_task_gen_traversal.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trace_to_task_evidence.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traces_huggingface.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traces_parsers.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traces_task_gen.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_train_cli.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_train_mode_artifact_emission.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_train_trl_cli.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traj_report.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traj_staging_phases.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_traj_upload_skill.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trajectory_integration.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trajectory_streaming.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trajectory_upload_layout.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trajectory_upload_service.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trial_agent_timeout_verify.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trial_install_agent_timeout.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trial_litellm_runtime.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_trl_integration.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_usage_litellm.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_usage_required.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_usage_tracking.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_user.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_v06_guard_ports.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verifier_document.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verifier_multi_container.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verifier_output.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verifier_output_freshness.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verifier_strategies.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verifier_wedge_retry.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_verify.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_workflow_action_pinning.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/test_yaml_config.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/__init__.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_adp.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_atif.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_common.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_nan_handling.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_export_prime_sft.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_redaction.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_step_granularity.py +0 -0
- {benchflow-0.7.2.dev1986 → benchflow-0.7.2.dev1994}/tests/trajectories/test_tree.py +0 -0
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
5
|
### Added
|
|
6
|
+
- **The trajectory viewer can collect the eval-prize confirmation in the
|
|
7
|
+
browser.** `bench eval view PATH --confirm` renders the normal page plus a
|
|
8
|
+
sticky site-styled bottom bar ("Submit this trajectory to the BenchFlow
|
|
9
|
+
eval prize?") with **Approve & submit** / **Not this one** buttons. A click
|
|
10
|
+
POSTs to `/decision`; the server prints a machine-readable
|
|
11
|
+
`DECISION: approved` or `DECISION: rejected` line to stdout, shuts down,
|
|
12
|
+
and the CLI exits `0` on approve and `3` on reject (non-1/2 so rejection
|
|
13
|
+
never collides with error or usage exits). Without the flag, behavior is
|
|
14
|
+
unchanged (no bar, no endpoint, Ctrl+C to stop). The
|
|
15
|
+
`benchflow-traj-upload` skill now prefers the button flow and falls back
|
|
16
|
+
to chat confirmation on CLIs older than 0.7.2.
|
|
6
17
|
- **Trajectory uploads are tagged with the session's repository by
|
|
7
18
|
default.** Unless `--source-id` is given, `bench traj upload` reads the
|
|
8
19
|
session's recorded working directory (Claude `cwd` events, Codex
|
|
@@ -14,6 +25,31 @@
|
|
|
14
25
|
undetectable repos fall back silently to the path-derived source id.
|
|
15
26
|
|
|
16
27
|
### Changed
|
|
28
|
+
- **Trajectory viewer tool calls are color-coded and backgrounds are light.**
|
|
29
|
+
Each tool kind now gets a muted GitHub-label-style accent on its name pill
|
|
30
|
+
and a left border strip on the card: shell/exec → amber, write/edit → blue,
|
|
31
|
+
read → teal, agent/task/skill → purple, web/search/fetch → cyan, everything
|
|
32
|
+
else → neutral gray. Tool arguments and tool outputs render on light
|
|
33
|
+
surfaces (`#f5f5f5` / white with dark ink) instead of near-black blocks;
|
|
34
|
+
the dark `#141414` terminal treatment is reserved for shell-command output
|
|
35
|
+
only, and the ink-black result card stays as the deliberate bento-ink
|
|
36
|
+
accent. Presentation only (CSS classes + a tool-name→accent mapping);
|
|
37
|
+
content strings and behavior are unchanged. Applies to all three viewer
|
|
38
|
+
templates, which share one stylesheet since #1019.
|
|
39
|
+
- **The contributor prompt now tells the agent to upgrade BenchFlow first.**
|
|
40
|
+
`CONTRIBUTOR_PROMPT` (kept in sync in `README.md`, `docs/traj-upload.md`,
|
|
41
|
+
and the `benchflow-traj-upload` skill evals) is a three-line block that
|
|
42
|
+
says to run `uv tool install --python 3.12 --upgrade --force benchflow`
|
|
43
|
+
before reading the skill, so agents that skim the skill or hit a stale copy
|
|
44
|
+
still install the latest CLI. The prompt also names OpenCode and Cursor
|
|
45
|
+
sessions and the re:Agent hackathon 72-hour window; README/docs render it
|
|
46
|
+
as a blockquote (soft-wraps on GitHub) behind an explicit "send this to
|
|
47
|
+
your coding agent" framing, and `bench traj setup` prints the same framing.
|
|
48
|
+
The skill's Discover step gains best-effort Cursor
|
|
49
|
+
(`~/.cursor/projects/*/agent-transcripts/`) and OpenCode
|
|
50
|
+
(`~/.local/share/opencode/opencode.db`, `opencode db path`) locations plus
|
|
51
|
+
a prefer-recent-matching-sessions note. Follow-up to the version
|
|
52
|
+
precondition from #1013/#1014.
|
|
17
53
|
- **Trajectory viewer restyled to match www.benchflow.ai.** All three
|
|
18
54
|
`bench eval view` pages (stream-json/JSONL, ACP events, multi-turn trial)
|
|
19
55
|
now share one inline stylesheet with the site's design language: light
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: benchflow
|
|
3
|
-
Version: 0.7.2.
|
|
3
|
+
Version: 0.7.2.dev1994
|
|
4
4
|
Summary: Multi-turn agent benchmarking with ACP — run any agent, any model, any provider.
|
|
5
5
|
Project-URL: Homepage, https://github.com/benchflow-ai/benchflow
|
|
6
6
|
Project-URL: Repository, https://github.com/benchflow-ai/benchflow
|
|
@@ -89,20 +89,23 @@ BenchFlow is a universal environment framework: it runs AI agents against task e
|
|
|
89
89
|
|
|
90
90
|
## Quick start: 1. Submit a trajectory
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
BenchFlow account, API key, or
|
|
92
|
+
**Send these to your coding agent.** Copy
|
|
93
|
+
the block below and paste it as a message to Claude Code, Codex, OpenCode, or
|
|
94
|
+
Cursor. That is the $2,000 eval prize path. No BenchFlow account, API key, or
|
|
95
|
+
Azure login.
|
|
95
96
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
> Submit my relevant local Claude Code, Codex, OpenCode, or Cursor session from the re:Agent e2e agentic science / ai4bio hackathon (last 72 hours, on this laptop) to the BenchFlow eval prize.
|
|
98
|
+
>
|
|
99
|
+
> 1. First make sure the latest benchflow CLI is installed: uv tool install --python 3.12 --upgrade --force benchflow
|
|
100
|
+
>
|
|
101
|
+
> 2. Then read https://raw.githubusercontent.com/benchflow-ai/benchflow/main/.agents/skills/benchflow-traj-upload/SKILL.md and follow it: find a session, open the viewer, and upload only after I (the human) review it.
|
|
99
102
|
|
|
100
103
|
The agent finds sessions on this machine, opens the viewer, and uploads after
|
|
101
104
|
you like what you see.
|
|
102
105
|
|
|
103
|
-
|
|
104
|
-
--force benchflow
|
|
105
|
-
when a newer release is available.
|
|
106
|
+
The prompt has the agent install the latest BenchFlow first (`uv tool
|
|
107
|
+
install --python 3.12 --upgrade --force benchflow`). The `bench traj` commands
|
|
108
|
+
also print a one-line upgrade hint when a newer release is available.
|
|
106
109
|
|
|
107
110
|
Prefer the terminal instead? The guided upload inspects before anything leaves
|
|
108
111
|
your machine — it renders a redacted trajectory report (step counts, masked
|
|
@@ -128,7 +131,7 @@ bench traj setup
|
|
|
128
131
|
```
|
|
129
132
|
|
|
130
133
|
`npx skills add` asks which agents to install for. `bench traj setup` copies
|
|
131
|
-
the skill into this project and prints the same
|
|
134
|
+
the skill into this project and prints the same agent prompt. See the
|
|
132
135
|
[upload skill](./.agents/skills/benchflow-traj-upload/SKILL.md).
|
|
133
136
|
|
|
134
137
|
## Quick start: 2. Run with a ChatGPT or Claude subscription
|
|
@@ -15,20 +15,23 @@ BenchFlow is a universal environment framework: it runs AI agents against task e
|
|
|
15
15
|
|
|
16
16
|
## Quick start: 1. Submit a trajectory
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
BenchFlow account, API key, or
|
|
18
|
+
**Send these to your coding agent.** Copy
|
|
19
|
+
the block below and paste it as a message to Claude Code, Codex, OpenCode, or
|
|
20
|
+
Cursor. That is the $2,000 eval prize path. No BenchFlow account, API key, or
|
|
21
|
+
Azure login.
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
> Submit my relevant local Claude Code, Codex, OpenCode, or Cursor session from the re:Agent e2e agentic science / ai4bio hackathon (last 72 hours, on this laptop) to the BenchFlow eval prize.
|
|
24
|
+
>
|
|
25
|
+
> 1. First make sure the latest benchflow CLI is installed: uv tool install --python 3.12 --upgrade --force benchflow
|
|
26
|
+
>
|
|
27
|
+
> 2. Then read https://raw.githubusercontent.com/benchflow-ai/benchflow/main/.agents/skills/benchflow-traj-upload/SKILL.md and follow it: find a session, open the viewer, and upload only after I (the human) review it.
|
|
25
28
|
|
|
26
29
|
The agent finds sessions on this machine, opens the viewer, and uploads after
|
|
27
30
|
you like what you see.
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
--force benchflow
|
|
31
|
-
when a newer release is available.
|
|
32
|
+
The prompt has the agent install the latest BenchFlow first (`uv tool
|
|
33
|
+
install --python 3.12 --upgrade --force benchflow`). The `bench traj` commands
|
|
34
|
+
also print a one-line upgrade hint when a newer release is available.
|
|
32
35
|
|
|
33
36
|
Prefer the terminal instead? The guided upload inspects before anything leaves
|
|
34
37
|
your machine — it renders a redacted trajectory report (step counts, masked
|
|
@@ -54,7 +57,7 @@ bench traj setup
|
|
|
54
57
|
```
|
|
55
58
|
|
|
56
59
|
`npx skills add` asks which agents to install for. `bench traj setup` copies
|
|
57
|
-
the skill into this project and prints the same
|
|
60
|
+
the skill into this project and prints the same agent prompt. See the
|
|
58
61
|
[upload skill](./.agents/skills/benchflow-traj-upload/SKILL.md).
|
|
59
62
|
|
|
60
63
|
## Quick start: 2. Run with a ChatGPT or Claude subscription
|
|
@@ -1228,11 +1228,27 @@ def eval_view(
|
|
|
1228
1228
|
),
|
|
1229
1229
|
],
|
|
1230
1230
|
port: Annotated[int, typer.Option(help="Server port")] = 8888,
|
|
1231
|
+
confirm: Annotated[
|
|
1232
|
+
bool,
|
|
1233
|
+
typer.Option(
|
|
1234
|
+
"--confirm",
|
|
1235
|
+
help=(
|
|
1236
|
+
"Show an Approve & submit / Not this one bar on the page; "
|
|
1237
|
+
"print DECISION: approved|rejected and exit 0 on approve, "
|
|
1238
|
+
"3 on reject."
|
|
1239
|
+
),
|
|
1240
|
+
),
|
|
1241
|
+
] = False,
|
|
1231
1242
|
) -> None:
|
|
1232
1243
|
"""View a trial or session trajectory in the browser."""
|
|
1233
|
-
from benchflow.trajectories
|
|
1234
|
-
|
|
1235
|
-
serve(str(rollout_dir), port)
|
|
1244
|
+
from benchflow.trajectories import viewer
|
|
1245
|
+
|
|
1246
|
+
decision = viewer.serve(str(rollout_dir), port, confirm=confirm)
|
|
1247
|
+
# Exit-code contract for --confirm: 0 approved, 3 rejected. 3 is chosen
|
|
1248
|
+
# so a rejection never collides with the CLI's existing error exits
|
|
1249
|
+
# (1 = errors, 2 = Typer usage errors).
|
|
1250
|
+
if decision == "rejected":
|
|
1251
|
+
raise typer.Exit(3)
|
|
1236
1252
|
|
|
1237
1253
|
|
|
1238
1254
|
# ── Command-group wiring ──────────────────────────────────────────────
|
|
@@ -54,14 +54,26 @@ SKILL_RAW_URL = (
|
|
|
54
54
|
"/.agents/skills/benchflow-traj-upload/SKILL.md"
|
|
55
55
|
)
|
|
56
56
|
|
|
57
|
+
UPGRADE_COMMAND = "uv tool install --python 3.12 --upgrade --force benchflow"
|
|
58
|
+
|
|
59
|
+
# Three unwrapped lines separated by blank lines: each logical unit is one
|
|
60
|
+
# full physical line (no hard wraps mid-sentence), so the URL and the upgrade
|
|
61
|
+
# command stay selectable in agents and terminals.
|
|
57
62
|
CONTRIBUTOR_PROMPT = (
|
|
58
|
-
"Submit my
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
"
|
|
63
|
+
"Submit my relevant local Claude Code, Codex, OpenCode, or Cursor session "
|
|
64
|
+
"from the re:Agent e2e agentic science / ai4bio hackathon (last 72 hours, "
|
|
65
|
+
"on this laptop) to the BenchFlow eval prize."
|
|
66
|
+
"\n\n"
|
|
67
|
+
f"1. First make sure the latest benchflow CLI is installed: {UPGRADE_COMMAND}"
|
|
68
|
+
"\n\n"
|
|
69
|
+
f"2. Then read {SKILL_RAW_URL} "
|
|
70
|
+
"and follow it: find a session, open the viewer, and upload only after "
|
|
71
|
+
"I (the human) review it."
|
|
62
72
|
)
|
|
63
73
|
|
|
64
|
-
|
|
74
|
+
CONTRIBUTOR_PROMPT_FRAMING = (
|
|
75
|
+
"Send this to your coding agent (it's a prompt for the agent, not steps for you):"
|
|
76
|
+
)
|
|
65
77
|
|
|
66
78
|
|
|
67
79
|
def _fetch_latest_version() -> str | None:
|
|
@@ -166,14 +178,14 @@ def register_traj(app: typer.Typer) -> None:
|
|
|
166
178
|
] = False,
|
|
167
179
|
prompt_only: Annotated[
|
|
168
180
|
bool,
|
|
169
|
-
typer.Option("--prompt", help="Print the copy-paste agent
|
|
181
|
+
typer.Option("--prompt", help="Print the copy-paste agent prompt and exit"),
|
|
170
182
|
] = False,
|
|
171
183
|
list_sessions: Annotated[
|
|
172
184
|
bool,
|
|
173
185
|
typer.Option("--list", help="List recent local sessions and exit"),
|
|
174
186
|
] = False,
|
|
175
187
|
) -> None:
|
|
176
|
-
"""Install the submit skill, or print the
|
|
188
|
+
"""Install the submit skill, or print the prompt to send to an agent."""
|
|
177
189
|
_maybe_print_update_hint()
|
|
178
190
|
if prompt_only:
|
|
179
191
|
_print_contributor_prompt()
|
|
@@ -194,7 +206,6 @@ def register_traj(app: typer.Typer) -> None:
|
|
|
194
206
|
_run_npx_skill_install()
|
|
195
207
|
else:
|
|
196
208
|
_install_project_skill(Path.cwd())
|
|
197
|
-
console.print("Paste this to your agent:")
|
|
198
209
|
_print_contributor_prompt()
|
|
199
210
|
if interactive and typer.confirm(
|
|
200
211
|
"List recent sessions and open the viewer now?", default=False
|
|
@@ -625,7 +636,9 @@ def _print_dry_run(staged: StagedCapture) -> None:
|
|
|
625
636
|
|
|
626
637
|
|
|
627
638
|
def _print_contributor_prompt() -> None:
|
|
628
|
-
#
|
|
639
|
+
# Plain print: Rich wrapping would break the unbroken URL line and make
|
|
640
|
+
# the block awkward to copy.
|
|
641
|
+
print(CONTRIBUTOR_PROMPT_FRAMING)
|
|
629
642
|
print(CONTRIBUTOR_PROMPT)
|
|
630
643
|
|
|
631
644
|
|
|
@@ -671,7 +684,7 @@ def _run_npx_skill_install() -> None:
|
|
|
671
684
|
check=False,
|
|
672
685
|
)
|
|
673
686
|
if completed.returncode != 0:
|
|
674
|
-
print_error("npx skills add failed; the copy-paste
|
|
687
|
+
print_error("npx skills add failed; the copy-paste prompt below still works.")
|
|
675
688
|
|
|
676
689
|
|
|
677
690
|
def _print_session_hits() -> None:
|
|
@@ -16,9 +16,15 @@ _RESULT_PREVIEW = 300 # max chars for result summary
|
|
|
16
16
|
|
|
17
17
|
# Shared stylesheet for all viewer pages, matching the www.benchflow.ai design
|
|
18
18
|
# language (light monochrome: near-white page, white cards, near-black ink,
|
|
19
|
-
#
|
|
20
|
-
#
|
|
21
|
-
#
|
|
19
|
+
# Satoshi/Google Sans Code with system-safe fallbacks). Kept inline so pages
|
|
20
|
+
# work fully offline with no external requests; one constant so the three
|
|
21
|
+
# templates stop drifting apart.
|
|
22
|
+
#
|
|
23
|
+
# The site itself is deliberately achromatic, so tool-call accents below are
|
|
24
|
+
# muted GitHub-label-style pastels (pale chip background + darker same-hue
|
|
25
|
+
# text + a soft left border strip) that read as annotations rather than
|
|
26
|
+
# fighting the monochrome base. The dark #141414 code treatment is reserved
|
|
27
|
+
# for terminal output of shell commands; everything else stays light.
|
|
22
28
|
_VIEWER_CSS = """\
|
|
23
29
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
24
30
|
:root {
|
|
@@ -46,8 +52,10 @@ body { font-family: var(--font-sans); background: var(--background); color: var(
|
|
|
46
52
|
.meta span { font-family: var(--font-mono); font-size: 11px; font-weight: 500; color: var(--ink-secondary); background: var(--secondary); padding: 3px 9px; border-radius: 4px; border: 1px solid var(--border); }
|
|
47
53
|
.step { margin-bottom: 8px; padding: 12px 16px; border-radius: var(--radius); background: var(--card); border: 1px solid var(--border); box-shadow: 0 1px 2px rgba(10, 10, 10, 0.04); }
|
|
48
54
|
.step.prompt { background: var(--secondary); border-color: var(--rule-strong); margin-bottom: 14px; }
|
|
49
|
-
.step.output { background: var(--
|
|
50
|
-
.step.output pre { color: var(--
|
|
55
|
+
.step.output { background: var(--card); border-color: var(--border); padding: 10px 16px; }
|
|
56
|
+
.step.output pre { color: var(--ink-secondary); font-family: var(--font-mono); font-size: 12px; line-height: 1.7; white-space: pre-wrap; word-break: break-word; }
|
|
57
|
+
.step.output.term { background: var(--code-bg); border-color: var(--code-bg); }
|
|
58
|
+
.step.output.term pre { color: var(--code-ink); }
|
|
51
59
|
.step.result { background: var(--ink); border-color: var(--ink); margin-top: 14px; }
|
|
52
60
|
.step.result .msg { color: var(--background); }
|
|
53
61
|
.step-header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
|
|
@@ -59,12 +67,70 @@ body { font-family: var(--font-sans); background: var(--background); color: var(
|
|
|
59
67
|
.msg { font-size: 14px; line-height: 1.65; white-space: pre-wrap; word-break: break-word; }
|
|
60
68
|
.thinking { font-size: 13px; color: var(--muted); font-style: italic; margin-bottom: 8px; padding: 8px 12px; background: var(--secondary); border-radius: 4px; border-left: 2px solid var(--rule-strong); white-space: pre-wrap; word-break: break-word; }
|
|
61
69
|
.tool { margin-bottom: 6px; }
|
|
62
|
-
.tool-name { display: inline-flex; align-items: center; font-family: var(--font-mono); font-size: 11px; font-weight: 600; color: var(--ink); background: var(--secondary); border: 1px solid var(--border); padding: 2px 9px; border-radius: 4px; }
|
|
63
|
-
.tool-args { margin-top: 6px; font-family: var(--font-mono); font-size: 12px; line-height: 1.7; color: var(--
|
|
70
|
+
.tool-name { display: inline-flex; align-items: center; font-family: var(--font-mono); font-size: 11px; font-weight: 600; color: var(--acc-ink, var(--ink)); background: var(--acc-bg, var(--secondary)); border: 1px solid var(--acc-line, var(--border)); padding: 2px 9px; border-radius: 4px; }
|
|
71
|
+
.tool-args { margin-top: 6px; font-family: var(--font-mono); font-size: 12px; line-height: 1.7; color: var(--ink-secondary); background: var(--secondary); border: 1px solid var(--border); padding: 10px 12px; border-radius: 6px; white-space: pre-wrap; word-break: break-word; }
|
|
72
|
+
.step.tool-step { border-left: 3px solid var(--acc-strip, var(--rule-strong)); }
|
|
73
|
+
.acc-bash { --acc-bg: #f7efda; --acc-line: #ecdcb2; --acc-ink: #8a5a12; --acc-strip: #dcb45e; }
|
|
74
|
+
.acc-edit { --acc-bg: #e8f0fa; --acc-line: #d0dff1; --acc-ink: #1d4e89; --acc-strip: #7fa8d8; }
|
|
75
|
+
.acc-read { --acc-bg: #e5f2ec; --acc-line: #cbe3d7; --acc-ink: #1a6b52; --acc-strip: #74bda0; }
|
|
76
|
+
.acc-agent { --acc-bg: #efeaf8; --acc-line: #ded3ef; --acc-ink: #5b3e96; --acc-strip: #a78fd6; }
|
|
77
|
+
.acc-web { --acc-bg: #e3f1f6; --acc-line: #c8e2ea; --acc-ink: #176478; --acc-strip: #6fb6ca; }
|
|
78
|
+
.acc-other { --acc-bg: var(--secondary); --acc-line: var(--border); --acc-ink: var(--ink-secondary); --acc-strip: var(--rule-strong); }
|
|
64
79
|
.metrics { font-family: var(--font-mono); font-size: 11px; color: var(--faint); margin-top: 4px; }
|
|
65
80
|
.turn-divider { border-top: 1px solid var(--border); margin: 24px 0; }
|
|
66
81
|
"""
|
|
67
82
|
|
|
83
|
+
# Sticky bottom confirmation bar injected only in --confirm mode. Styling
|
|
84
|
+
# reuses the page's CSS variables (white surface, top border, ink text, pill
|
|
85
|
+
# buttons) so it reads as part of the same www.benchflow.ai design language.
|
|
86
|
+
# The <style> block rides along with the snippet so plain (non-confirm) pages
|
|
87
|
+
# carry zero confirm markup or CSS.
|
|
88
|
+
_CONFIRM_BAR_HTML = """\
|
|
89
|
+
<style>
|
|
90
|
+
body { padding-bottom: 104px; }
|
|
91
|
+
.confirm-bar { position: fixed; bottom: 0; left: 0; right: 0; background: var(--card); border-top: 1px solid var(--border); box-shadow: 0 -1px 3px rgba(10, 10, 10, 0.05); z-index: 10; }
|
|
92
|
+
.confirm-inner { max-width: 960px; margin: 0 auto; padding: 14px 20px; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
|
|
93
|
+
.confirm-question { font-size: 14px; font-weight: 500; color: var(--ink); }
|
|
94
|
+
.confirm-actions { display: flex; gap: 8px; flex: none; }
|
|
95
|
+
.confirm-btn { font-family: var(--font-sans); font-size: 13px; font-weight: 600; letter-spacing: -0.01em; padding: 8px 18px; border-radius: 9999px; cursor: pointer; transition: background 0.15s ease; }
|
|
96
|
+
.confirm-btn.approve { background: var(--ink); color: var(--background); border: 1px solid var(--ink); }
|
|
97
|
+
.confirm-btn.approve:hover { background: #262626; }
|
|
98
|
+
.confirm-btn.reject { background: var(--card); color: var(--ink); border: 1px solid var(--rule-strong); }
|
|
99
|
+
.confirm-btn.reject:hover { background: var(--secondary); }
|
|
100
|
+
</style>
|
|
101
|
+
<div class="confirm-bar">
|
|
102
|
+
<div class="confirm-inner" id="confirm-inner">
|
|
103
|
+
<span class="confirm-question">Submit this trajectory to the BenchFlow eval prize?</span>
|
|
104
|
+
<div class="confirm-actions">
|
|
105
|
+
<button class="confirm-btn approve" onclick="__benchDecide('approve')">Approve & submit</button>
|
|
106
|
+
<button class="confirm-btn reject" onclick="__benchDecide('reject')">Not this one</button>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
<script>
|
|
111
|
+
async function __benchDecide(choice) {
|
|
112
|
+
try {
|
|
113
|
+
await fetch("/decision", { method: "POST", body: choice });
|
|
114
|
+
} catch (err) {
|
|
115
|
+
// The server exits right after answering; a dropped socket is still a
|
|
116
|
+
// delivered decision, so fall through to the confirmation note.
|
|
117
|
+
}
|
|
118
|
+
document.getElementById("confirm-inner").innerHTML =
|
|
119
|
+
choice === "approve"
|
|
120
|
+
? '<span class="confirm-question">Approved — go back to your agent.</span>'
|
|
121
|
+
: '<span class="confirm-question">Rejected — tell your agent which session instead.</span>';
|
|
122
|
+
}
|
|
123
|
+
</script>
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def _inject_confirm_bar(page: str) -> str:
|
|
128
|
+
"""Append the confirm bar just before </body> (or at the end as fallback)."""
|
|
129
|
+
if "</body>" in page:
|
|
130
|
+
return page.replace("</body>", f"{_CONFIRM_BAR_HTML}</body>", 1)
|
|
131
|
+
return page + _CONFIRM_BAR_HTML
|
|
132
|
+
|
|
133
|
+
|
|
68
134
|
# Small BenchFlow wordmark header (inline SVG logo from the site's icon set —
|
|
69
135
|
# no external requests) shown above the page title on every viewer page.
|
|
70
136
|
_WORDMARK_HTML = (
|
|
@@ -87,6 +153,28 @@ _WORDMARK_HTML = (
|
|
|
87
153
|
)
|
|
88
154
|
|
|
89
155
|
|
|
156
|
+
# Tool kind → accent class. Substring matching so it covers Claude Code tool
|
|
157
|
+
# names (Bash, Write, Edit, Read, Agent, WebSearch, ...), ACP kinds (execute,
|
|
158
|
+
# edit, read, search, fetch, ...), and Codex function names (shell, ...).
|
|
159
|
+
# Order matters: earlier entries win (e.g. "websearch" hits web before read).
|
|
160
|
+
_TOOL_ACCENTS: tuple[tuple[str, tuple[str, ...]], ...] = (
|
|
161
|
+
("acc-web", ("web", "search", "fetch", "grep", "glob", "browser")),
|
|
162
|
+
("acc-bash", ("bash", "shell", "exec", "terminal", "command")),
|
|
163
|
+
("acc-edit", ("write", "edit", "patch", "delete", "move", "notebook")),
|
|
164
|
+
("acc-read", ("read", "cat", "view", "ls", "list")),
|
|
165
|
+
("acc-agent", ("agent", "task", "skill", "oracle")),
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def _tool_accent_class(name: str) -> str:
|
|
170
|
+
"""Map a tool name/kind to its accent CSS class (presentation only)."""
|
|
171
|
+
lowered = name.lower()
|
|
172
|
+
for css_class, needles in _TOOL_ACCENTS:
|
|
173
|
+
if any(needle in lowered for needle in needles):
|
|
174
|
+
return css_class
|
|
175
|
+
return "acc-other"
|
|
176
|
+
|
|
177
|
+
|
|
90
178
|
def render_turn(events: list[dict], turn_number: int, prompt: str = "") -> str:
|
|
91
179
|
"""Render one turn's events as HTML blocks."""
|
|
92
180
|
blocks = []
|
|
@@ -103,6 +191,9 @@ def render_turn(events: list[dict], turn_number: int, prompt: str = "") -> str:
|
|
|
103
191
|
# Group: thinking → text → tool_use → tool_result → thinking → ...
|
|
104
192
|
pending_thinking = ""
|
|
105
193
|
pending_text = ""
|
|
194
|
+
# tool_use id → accent class, so each tool_result can match its call's
|
|
195
|
+
# accent and shell results alone keep the dark terminal treatment.
|
|
196
|
+
accent_by_tool_id: dict[str, str] = {}
|
|
106
197
|
|
|
107
198
|
for event in events:
|
|
108
199
|
etype = event.get("type", "")
|
|
@@ -160,7 +251,13 @@ def render_turn(events: list[dict], turn_number: int, prompt: str = "") -> str:
|
|
|
160
251
|
f"</div>"
|
|
161
252
|
)
|
|
162
253
|
|
|
163
|
-
|
|
254
|
+
accent = _tool_accent_class(block.get("name", ""))
|
|
255
|
+
if block.get("id"):
|
|
256
|
+
accent_by_tool_id[str(block["id"])] = accent
|
|
257
|
+
blocks.append(
|
|
258
|
+
f'<div class="step agent tool-step {accent}">'
|
|
259
|
+
f"{''.join(parts)}</div>"
|
|
260
|
+
)
|
|
164
261
|
|
|
165
262
|
elif etype == "user":
|
|
166
263
|
content = event.get("message", {}).get("content", "")
|
|
@@ -181,8 +278,13 @@ def render_turn(events: list[dict], turn_number: int, prompt: str = "") -> str:
|
|
|
181
278
|
display = "[binary content]"
|
|
182
279
|
else:
|
|
183
280
|
display = html.escape(raw[:400])
|
|
281
|
+
accent = accent_by_tool_id.get(
|
|
282
|
+
str(block.get("tool_use_id", "")), "acc-other"
|
|
283
|
+
)
|
|
284
|
+
term = " term" if accent == "acc-bash" else ""
|
|
184
285
|
blocks.append(
|
|
185
|
-
f'<div class="step output
|
|
286
|
+
f'<div class="step output tool-step {accent}{term}">'
|
|
287
|
+
f"<pre>{display}</pre></div>"
|
|
186
288
|
)
|
|
187
289
|
elif block.get("type") == "text" and block.get("text"):
|
|
188
290
|
texts.append(str(block["text"]))
|
|
@@ -408,8 +510,13 @@ def _render_acp_events(
|
|
|
408
510
|
kind = html.escape(event.get("kind", ""))
|
|
409
511
|
event_title = html.escape(event.get("title", ""))
|
|
410
512
|
status = event.get("status", "")
|
|
513
|
+
# ACP kinds are coarse ("other" covers Skill/Task/...); when the
|
|
514
|
+
# kind doesn't map, fall back to the human title for the accent.
|
|
515
|
+
accent = _tool_accent_class(event.get("kind", ""))
|
|
516
|
+
if accent == "acc-other":
|
|
517
|
+
accent = _tool_accent_class(event.get("title", ""))
|
|
411
518
|
blocks.append(
|
|
412
|
-
f'<div class="step agent">'
|
|
519
|
+
f'<div class="step agent tool-step {accent}">'
|
|
413
520
|
f'<div class="tool"><span class="tool-name">{kind}</span> {event_title}</div>'
|
|
414
521
|
f'<div class="metrics">{status}</div>'
|
|
415
522
|
f"</div>"
|
|
@@ -578,9 +685,21 @@ def _stream_json_page(title: str, events: list[dict], turn_blocks: list[str]) ->
|
|
|
578
685
|
|
|
579
686
|
|
|
580
687
|
def serve(
|
|
581
|
-
rollout_path: str,
|
|
582
|
-
|
|
583
|
-
|
|
688
|
+
rollout_path: str,
|
|
689
|
+
port: int = 8888,
|
|
690
|
+
prompts: list[str] | None = None,
|
|
691
|
+
confirm: bool = False,
|
|
692
|
+
) -> str | None:
|
|
693
|
+
"""Serve a trial directory or a session JSONL file as a web page.
|
|
694
|
+
|
|
695
|
+
With ``confirm=True`` the page carries an Approve/Reject bar posting to
|
|
696
|
+
``/decision``; the first valid decision shuts the server down and is
|
|
697
|
+
returned as ``"approved"`` or ``"rejected"`` after printing a
|
|
698
|
+
machine-readable ``DECISION: <value>`` line to stdout. Without it the
|
|
699
|
+
server runs until Ctrl+C and the return value is ``None`` — exactly the
|
|
700
|
+
pre-confirm behavior (no bar, no POST endpoint).
|
|
701
|
+
"""
|
|
702
|
+
import threading
|
|
584
703
|
from http.server import HTTPServer, SimpleHTTPRequestHandler
|
|
585
704
|
|
|
586
705
|
path = Path(rollout_path)
|
|
@@ -600,11 +719,20 @@ def serve(
|
|
|
600
719
|
print(f"No trajectories found in {path}")
|
|
601
720
|
sys.exit(1)
|
|
602
721
|
if write_sidecar:
|
|
722
|
+
# The sidecar stays the plain page: the confirm bar is a one-shot
|
|
723
|
+
# interaction against this live server, not part of the artifact.
|
|
603
724
|
(path / "trajectory.html").write_text(html_content)
|
|
725
|
+
if confirm:
|
|
726
|
+
html_content = _inject_confirm_bar(html_content)
|
|
604
727
|
|
|
605
728
|
print(f"Trajectory viewer: http://localhost:{port}")
|
|
606
729
|
print(f"Trial: {path}")
|
|
607
|
-
|
|
730
|
+
if confirm:
|
|
731
|
+
print("Waiting for Approve / Not this one in the browser (Ctrl+C to stop)\n")
|
|
732
|
+
else:
|
|
733
|
+
print("Press Ctrl+C to stop\n")
|
|
734
|
+
|
|
735
|
+
decision: str | None = None
|
|
608
736
|
|
|
609
737
|
class Handler(SimpleHTTPRequestHandler):
|
|
610
738
|
def do_GET(self):
|
|
@@ -616,11 +744,44 @@ def serve(
|
|
|
616
744
|
def log_message(self, format, *args):
|
|
617
745
|
pass
|
|
618
746
|
|
|
619
|
-
|
|
747
|
+
handler_cls: type[SimpleHTTPRequestHandler] = Handler
|
|
748
|
+
|
|
749
|
+
if confirm:
|
|
750
|
+
|
|
751
|
+
class ConfirmHandler(Handler):
|
|
752
|
+
def do_POST(self):
|
|
753
|
+
nonlocal decision
|
|
754
|
+
if self.path != "/decision":
|
|
755
|
+
self.send_error(404)
|
|
756
|
+
return
|
|
757
|
+
length = int(self.headers.get("Content-Length") or 0)
|
|
758
|
+
body = self.rfile.read(length).decode("utf-8", "replace").strip()
|
|
759
|
+
if body not in ("approve", "reject"):
|
|
760
|
+
self.send_error(400, "Body must be 'approve' or 'reject'")
|
|
761
|
+
return
|
|
762
|
+
decision = "approved" if body == "approve" else "rejected"
|
|
763
|
+
self.send_response(200)
|
|
764
|
+
self.send_header("Content-Type", "text/plain; charset=utf-8")
|
|
765
|
+
self.end_headers()
|
|
766
|
+
self.wfile.write(decision.encode())
|
|
767
|
+
# shutdown() blocks until serve_forever returns, and this
|
|
768
|
+
# handler runs inside that loop — stop from a helper thread.
|
|
769
|
+
threading.Thread(target=server.shutdown, daemon=True).start()
|
|
770
|
+
|
|
771
|
+
handler_cls = ConfirmHandler
|
|
772
|
+
|
|
773
|
+
server = HTTPServer(("localhost", port), handler_cls)
|
|
620
774
|
try:
|
|
621
775
|
server.serve_forever()
|
|
622
776
|
except KeyboardInterrupt:
|
|
623
777
|
print("\nStopped.")
|
|
778
|
+
return None
|
|
779
|
+
finally:
|
|
780
|
+
server.server_close()
|
|
781
|
+
|
|
782
|
+
if decision is not None:
|
|
783
|
+
print(f"DECISION: {decision}", flush=True)
|
|
784
|
+
return decision
|
|
624
785
|
|
|
625
786
|
|
|
626
787
|
if __name__ == "__main__":
|
|
@@ -715,17 +715,46 @@ def test_skip_update_check_env_var_never_fetches(
|
|
|
715
715
|
|
|
716
716
|
|
|
717
717
|
def test_setup_prompt_prints_the_copy_paste_line() -> None:
|
|
718
|
-
"""The human path is one
|
|
719
|
-
|
|
718
|
+
"""The human path is one prompt block to send to an agent.
|
|
719
|
+
|
|
720
|
+
Guards the version step and hand-off framing added in PR #1017
|
|
721
|
+
(follow-up to PRs #1013 and #1014): the prompt tells the agent to
|
|
722
|
+
upgrade BenchFlow before reading the skill, the upgrade command appears
|
|
723
|
+
before the skill URL, and the URL sits on one unbroken physical line.
|
|
724
|
+
README.md renders the prompt as a blockquote (a fenced code block would
|
|
725
|
+
not soft-wrap on GitHub), so each unwrapped prompt line is asserted to be
|
|
726
|
+
present in the README instead of the whole string verbatim.
|
|
727
|
+
"""
|
|
728
|
+
from benchflow.cli.traj import (
|
|
729
|
+
CONTRIBUTOR_PROMPT,
|
|
730
|
+
CONTRIBUTOR_PROMPT_FRAMING,
|
|
731
|
+
SKILL_RAW_URL,
|
|
732
|
+
UPGRADE_COMMAND,
|
|
733
|
+
)
|
|
720
734
|
|
|
721
735
|
result = runner.invoke(app, ["traj", "setup", "--prompt"])
|
|
722
736
|
readme = Path(__file__).resolve().parents[1] / "README.md"
|
|
737
|
+
readme_text = readme.read_text(encoding="utf-8")
|
|
723
738
|
|
|
724
739
|
assert result.exit_code == 0, result.output
|
|
725
|
-
|
|
740
|
+
output = click.unstyle(result.output)
|
|
741
|
+
assert CONTRIBUTOR_PROMPT_FRAMING in output
|
|
742
|
+
assert CONTRIBUTOR_PROMPT in output
|
|
726
743
|
assert SKILL_RAW_URL in result.output
|
|
727
744
|
assert "bench traj upload" not in result.output
|
|
728
|
-
|
|
745
|
+
|
|
746
|
+
prompt_lines = [line for line in CONTRIBUTOR_PROMPT.splitlines() if line]
|
|
747
|
+
assert len(prompt_lines) == 3
|
|
748
|
+
for line in prompt_lines:
|
|
749
|
+
assert line in readme_text
|
|
750
|
+
# Wording updated on main in 8cae2a42 ("Send these to your coding agent.").
|
|
751
|
+
assert "Send these to your coding agent" in readme_text
|
|
752
|
+
|
|
753
|
+
assert UPGRADE_COMMAND in CONTRIBUTOR_PROMPT
|
|
754
|
+
assert CONTRIBUTOR_PROMPT.index(UPGRADE_COMMAND) < CONTRIBUTOR_PROMPT.index(
|
|
755
|
+
SKILL_RAW_URL
|
|
756
|
+
)
|
|
757
|
+
assert any(SKILL_RAW_URL in line for line in prompt_lines)
|
|
729
758
|
|
|
730
759
|
|
|
731
760
|
def test_setup_yes_installs_the_skill(
|
|
@@ -740,7 +769,9 @@ def test_setup_yes_installs_the_skill(
|
|
|
740
769
|
assert skill.is_file()
|
|
741
770
|
text = skill.read_text(encoding="utf-8")
|
|
742
771
|
assert "open the viewer" in text
|
|
743
|
-
|
|
772
|
+
# PR #1017 reframed the hand-off copy: the block is a prompt for the
|
|
773
|
+
# agent, not steps for the human.
|
|
774
|
+
assert "Send this to your coding agent" in click.unstyle(result.output)
|
|
744
775
|
|
|
745
776
|
|
|
746
777
|
def test_list_recent_sessions_scans_all_projects_most_recent_first(
|