verifiers 0.2.2.dev24__tar.gz → 0.2.2.dev26__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.
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/PKG-INFO +1 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/conftest.py +10 -8
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/test_configs.py +1 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/test_e2e.py +30 -21
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/test_legacy.py +2 -2
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/__init__.py +14 -33
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/agent.py +19 -64
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/dashboard/eval.py +19 -11
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/dashboard/validate.py +1 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/debug.py +11 -3
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/eval/main.py +1 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/eval/resume.py +1 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/eval/runner.py +2 -2
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/init.py +1 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/output.py +1 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/replay.py +5 -2
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/serve.py +2 -2
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/validate.py +1 -1
- verifiers-0.2.2.dev26/verifiers/v1/configs/__init__.py +4 -0
- verifiers-0.2.2.dev26/verifiers/v1/configs/agent.py +77 -0
- verifiers-0.2.2.dev26/verifiers/v1/configs/cli/__init__.py +9 -0
- {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev26/verifiers/v1/configs/cli}/debug.py +2 -2
- {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev26/verifiers/v1/configs/cli}/env.py +1 -1
- {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev26/verifiers/v1/configs/cli}/eval.py +1 -1
- {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev26/verifiers/v1/configs/cli}/replay.py +1 -1
- {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev26/verifiers/v1/configs/cli}/serve.py +1 -1
- {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev26/verifiers/v1/configs/cli}/validate.py +1 -1
- verifiers-0.2.2.dev26/verifiers/v1/configs/env.py +156 -0
- verifiers-0.2.2.dev26/verifiers/v1/configs/harness.py +42 -0
- verifiers-0.2.2.dev26/verifiers/v1/configs/judge.py +73 -0
- verifiers-0.2.2.dev26/verifiers/v1/configs/retries.py +17 -0
- verifiers-0.2.2.dev26/verifiers/v1/configs/task.py +32 -0
- verifiers-0.2.2.dev26/verifiers/v1/configs/taskset.py +20 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/env.py +12 -155
- verifiers-0.2.2.dev26/verifiers/v1/envs/agentic_judge/__init__.py +15 -0
- verifiers-0.2.2.dev26/verifiers/v1/envs/agentic_judge/env.py +347 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/envs/single_agent/env.py +4 -2
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/episode.py +7 -5
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/gepa/config.py +2 -2
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/gepa/reflection.py +2 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harness.py +5 -39
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/bash/harness.py +2 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/claude_code/harness.py +2 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/codex/harness.py +2 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/kimi_code/harness.py +2 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/mini_swe_agent/harness.py +2 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/null/harness.py +2 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/pi/harness.py +2 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/pool/harness.py +2 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/rlm/harness.py +2 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/terminus_2/harness.py +2 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/judge.py +7 -66
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/judges/reference.py +1 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/judges/rubric.py +2 -7
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/loaders.py +8 -4
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/push.py +1 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/retries.py +1 -15
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/rollout.py +7 -7
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/serve/client.py +3 -4
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/serve/pool.py +1 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/serve/server.py +1 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/serve/types.py +4 -6
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/task.py +2 -26
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/taskset.py +2 -16
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/tasksets/harbor/taskset.py +2 -1
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/tasksets/lean/taskset.py +4 -2
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/trace.py +34 -21
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/compile.py +2 -2
- verifiers-0.2.2.dev24/verifiers/v1/configs/__init__.py +0 -7
- verifiers-0.2.2.dev24/verifiers/v1/envs/agentic_judge/__init__.py +0 -3
- verifiers-0.2.2.dev24/verifiers/v1/envs/agentic_judge/env.py +0 -174
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/.gitignore +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/LICENSE +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/README.md +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/pyproject.toml +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/conftest.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_browser_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_build_script.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_client_config.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_composable_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_env_group.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_env_server.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_environment.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_environment_extra.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_error_chain.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_eval_display.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_eval_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_gym_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_imports.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_init_script.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_install_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_interception_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_logging.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_math_rubric.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_message_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_openenv_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_parser.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_path_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_renderer_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_rubric.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_rubric_group.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_save_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_setup_script.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_think_parser.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_tool_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_tool_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_types.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/test_xml_parser.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/fixtures/duet_v1.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/test_envs.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/test_graph.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/test_judges.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/tests/v1/test_trace.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/cli/tui.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/clients/client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/clients/renderer_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/decorators.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/environment.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/errors.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/gepa/config.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/gepa/display.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/scripts/build.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/scripts/init.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/scripts/install.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/serve/types.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/types.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/acp/_runner.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/clients/config.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev26/verifiers/v1/configs/cli}/init.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/decorators.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/errors.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/graph.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/bash/program.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/null/program.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/pool/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/scoring.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/session.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/state.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/types.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/sampling.py +0 -0
- {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev26}/verifiers/v1/utils/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.2.2.
|
|
3
|
+
Version: 0.2.2.dev26
|
|
4
4
|
Summary: Verifiers: Environments for LLM Reinforcement Learning
|
|
5
5
|
Project-URL: Homepage, https://github.com/primeintellect-ai/verifiers
|
|
6
6
|
Project-URL: Documentation, https://github.com/primeintellect-ai/verifiers
|
|
@@ -37,7 +37,7 @@ from pathlib import Path
|
|
|
37
37
|
import pytest
|
|
38
38
|
|
|
39
39
|
import verifiers.v1 as vf
|
|
40
|
-
from verifiers.v1.configs.eval import EvalConfig
|
|
40
|
+
from verifiers.v1.configs.cli.eval import EvalConfig
|
|
41
41
|
from verifiers.v1.loaders import load_environment
|
|
42
42
|
from verifiers.v1.cli.eval.runner import run_eval
|
|
43
43
|
from verifiers.v1.trace import Trace
|
|
@@ -123,16 +123,16 @@ def _eval_config(
|
|
|
123
123
|
max_turns: int | None = 4,
|
|
124
124
|
rollout_timeout: float = 180,
|
|
125
125
|
taskset_overrides: dict | None = None,
|
|
126
|
-
|
|
126
|
+
runtime: dict | None = None,
|
|
127
127
|
env: dict | None = None,
|
|
128
128
|
pool: dict | None = None,
|
|
129
129
|
model: str | None = None,
|
|
130
130
|
reasoning_effort: str | None = None,
|
|
131
131
|
) -> EvalConfig:
|
|
132
132
|
"""Build the smallest `EvalConfig` that still exercises the path, shared by the in-process
|
|
133
|
-
(`run_v1`) and env-server (`run_v1_server`) fixtures. `taskset_overrides`
|
|
134
|
-
|
|
135
|
-
text model (e.g. a VLM for an image task).
|
|
133
|
+
(`run_v1`) and env-server (`run_v1_server`) fixtures. `taskset_overrides` merges onto the
|
|
134
|
+
`{id: ...}` config; `runtime` places the `agent` seat's harness (an agent field, not a
|
|
135
|
+
harness one); `model` overrides the default text model (e.g. a VLM for an image task).
|
|
136
136
|
|
|
137
137
|
`temperature=0` (greedy) makes the run reproducible; `max_tokens` is generous headroom,
|
|
138
138
|
not a target — these trivial tasks finish in a few hundred tokens, so capping tighter only
|
|
@@ -145,9 +145,11 @@ def _eval_config(
|
|
|
145
145
|
env_cfg = dict(env or {})
|
|
146
146
|
_configure_prime_runtimes(taskset_cfg)
|
|
147
147
|
if harness:
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
env_cfg.setdefault("agent", {})["harness"] = {"id": harness}
|
|
149
|
+
if runtime:
|
|
150
|
+
runtime_cfg = dict(runtime)
|
|
151
|
+
_configure_prime_runtimes(runtime_cfg)
|
|
152
|
+
env_cfg.setdefault("agent", {})["runtime"] = runtime_cfg
|
|
151
153
|
# Per-run caps live on the seats: resolve the env's declared roles and cap
|
|
152
154
|
# each one (a test's own seat dict wins over the shared defaults).
|
|
153
155
|
config_cls = vf.env_config_type(taskset, env_cfg.get("id", ""))
|
|
@@ -100,7 +100,7 @@ async def test_single_turn(run_v1, harness, harness_runtime, tmp_path):
|
|
|
100
100
|
(trace,) = await run_v1(
|
|
101
101
|
"echo-v1",
|
|
102
102
|
harness=harness,
|
|
103
|
-
|
|
103
|
+
runtime={"type": harness_runtime},
|
|
104
104
|
output_dir=tmp_path,
|
|
105
105
|
max_turns=2,
|
|
106
106
|
)
|
|
@@ -109,7 +109,7 @@ async def test_single_turn(run_v1, harness, harness_runtime, tmp_path):
|
|
|
109
109
|
assert trace.stop_condition == "agent_completed"
|
|
110
110
|
assert trace.reward == 1.0
|
|
111
111
|
# The seat's resolved identity rides the trace (policy metadata for trainers).
|
|
112
|
-
assert trace.agent is not None and trace.agent.sampling.temperature == 0
|
|
112
|
+
assert trace.agent is not None and trace.agent.config.sampling.temperature == 0
|
|
113
113
|
# Every sampled turn has one per-call record, linked to its assistant node.
|
|
114
114
|
sampled = [i for i, n in enumerate(trace.nodes) if n.sampled]
|
|
115
115
|
assert [c.node for c in trace.calls if c.error is None] == sampled
|
|
@@ -130,7 +130,7 @@ async def test_user(run_v1, harness_runtime, tmp_path):
|
|
|
130
130
|
(trace,) = await run_v1(
|
|
131
131
|
"echo-user-sim-v1",
|
|
132
132
|
harness="null",
|
|
133
|
-
|
|
133
|
+
runtime={"type": harness_runtime},
|
|
134
134
|
output_dir=tmp_path,
|
|
135
135
|
max_turns=6,
|
|
136
136
|
)
|
|
@@ -189,7 +189,7 @@ async def test_acp_resume_with_tool(run_v1, harness, harness_runtime, tmp_path):
|
|
|
189
189
|
(trace,) = await run_v1(
|
|
190
190
|
"echo-acp-resume-v1",
|
|
191
191
|
harness=harness,
|
|
192
|
-
|
|
192
|
+
runtime={"type": harness_runtime},
|
|
193
193
|
output_dir=tmp_path,
|
|
194
194
|
max_turns=8,
|
|
195
195
|
max_tokens=8192,
|
|
@@ -219,7 +219,7 @@ async def test_tool(run_v1, harness_runtime, tool_runtime, tmp_path):
|
|
|
219
219
|
(trace,) = await run_v1(
|
|
220
220
|
"echo-tool-v1",
|
|
221
221
|
harness="null",
|
|
222
|
-
|
|
222
|
+
runtime={"type": harness_runtime},
|
|
223
223
|
output_dir=tmp_path,
|
|
224
224
|
max_turns=6,
|
|
225
225
|
taskset_overrides={"task": {"tools": tool_runtime}},
|
|
@@ -246,7 +246,7 @@ async def test_tool_state(run_v1, harness_runtime, tool_runtime, tmp_path):
|
|
|
246
246
|
(trace,) = await run_v1(
|
|
247
247
|
"counter-tool-v1",
|
|
248
248
|
harness="null",
|
|
249
|
-
|
|
249
|
+
runtime={"type": harness_runtime},
|
|
250
250
|
output_dir=tmp_path,
|
|
251
251
|
max_turns=8,
|
|
252
252
|
taskset_overrides={"task": {"tools": tool_runtime}},
|
|
@@ -267,7 +267,7 @@ async def test_shared_tool_isolation(
|
|
|
267
267
|
traces = await run_v1_server(
|
|
268
268
|
"scratchpad-v1",
|
|
269
269
|
harness="null",
|
|
270
|
-
|
|
270
|
+
runtime={"type": harness_runtime},
|
|
271
271
|
output_dir=tmp_path,
|
|
272
272
|
num_tasks=2,
|
|
273
273
|
n=1,
|
|
@@ -287,7 +287,7 @@ async def test_tool_response_image(run_v1, tmp_path):
|
|
|
287
287
|
(trace,) = await run_v1(
|
|
288
288
|
"tool-response-image-v1",
|
|
289
289
|
harness="null",
|
|
290
|
-
|
|
290
|
+
runtime={"type": "subprocess"},
|
|
291
291
|
model="openai/gpt-5.6-luna",
|
|
292
292
|
reasoning_effort="none",
|
|
293
293
|
output_dir=tmp_path,
|
|
@@ -314,7 +314,7 @@ async def test_rubric_judge(run_v1, tmp_path):
|
|
|
314
314
|
(trace,) = await run_v1(
|
|
315
315
|
"echo-v1",
|
|
316
316
|
harness="null",
|
|
317
|
-
|
|
317
|
+
runtime={"type": "subprocess"},
|
|
318
318
|
output_dir=tmp_path,
|
|
319
319
|
taskset_overrides={"task": {"judges": [{"id": "rubric", "path": str(rubric)}]}},
|
|
320
320
|
max_turns=2,
|
|
@@ -332,7 +332,7 @@ async def test_agentic(run_v1, harness, harness_runtime, tmp_path):
|
|
|
332
332
|
(trace,) = await run_v1(
|
|
333
333
|
"echo-agentic-v1",
|
|
334
334
|
harness=harness,
|
|
335
|
-
|
|
335
|
+
runtime={"type": harness_runtime},
|
|
336
336
|
output_dir=tmp_path,
|
|
337
337
|
max_turns=10,
|
|
338
338
|
)
|
|
@@ -392,23 +392,32 @@ async def test_env_id_best_of_n(run_v1, tmp_path):
|
|
|
392
392
|
|
|
393
393
|
@pytest.mark.e2e
|
|
394
394
|
async def test_env_id_agentic_judge(run_v1, tmp_path):
|
|
395
|
-
"""The agentic judge over the echo taskset (needs docker): the
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
395
|
+
"""The agentic judge over the echo taskset (needs docker): the box is
|
|
396
|
+
provisioned once from the solver's runtime policy, the solver plays in it,
|
|
397
|
+
the judge lands in the SAME box with the graded trace uploaded,
|
|
398
|
+
investigates with real execution, and its parsed verdict
|
|
399
|
+
lands on the solver's trace under the spec's reward key. Wiring, not taste:
|
|
400
|
+
the judge followed the verdict-file contract — the grade itself is the
|
|
401
|
+
model's call. Exercises the config surface too: a policy-only prompt
|
|
402
|
+
override (the verdict contract is appended regardless) and
|
|
403
|
+
reward-composition weights."""
|
|
400
404
|
traces = await run_v1(
|
|
401
405
|
"echo-v1",
|
|
402
406
|
harness=None, # seats pin their own harness; there is no run-level one
|
|
403
407
|
env={
|
|
404
408
|
"id": "agentic-judge",
|
|
405
|
-
|
|
406
|
-
|
|
409
|
+
# The solver owns the shared box, so the container is pinned here.
|
|
410
|
+
"solver": {"harness": {"id": "bash"}, "runtime": {"type": "docker"}},
|
|
411
|
+
# The judge reads the trace and reasons before it writes the
|
|
407
412
|
# verdict file; the shared 2048-token run cap truncates it mid-audit.
|
|
408
413
|
"judge": {
|
|
409
|
-
"harness": {"
|
|
414
|
+
"harness": {"id": "bash"},
|
|
410
415
|
"max_output_tokens": 8192,
|
|
411
416
|
},
|
|
417
|
+
"task": {
|
|
418
|
+
"prompt": "Check EMPIRICALLY that the agent echoed the word back.",
|
|
419
|
+
},
|
|
420
|
+
"score": {"task_weight": 0.5},
|
|
412
421
|
},
|
|
413
422
|
output_dir=tmp_path,
|
|
414
423
|
max_turns=10,
|
|
@@ -419,7 +428,7 @@ async def test_env_id_agentic_judge(run_v1, tmp_path):
|
|
|
419
428
|
(judge,) = [t for t in traces if t.agent_name == "judge"]
|
|
420
429
|
assert solver.ok and judge.ok
|
|
421
430
|
assert judge.trainable is False
|
|
422
|
-
assert solver.rewards["echoed"] ==
|
|
431
|
+
assert solver.rewards["echoed"] == 0.5 # the task's own reward, rescaled
|
|
423
432
|
assert isinstance(judge.info.get("verdict"), dict) # scraped off the box
|
|
424
433
|
assert 0.0 <= solver.rewards["judge"] <= 1.0
|
|
425
434
|
|
|
@@ -551,13 +560,13 @@ async def test_replay_round_trip(run_v1, tmp_path):
|
|
|
551
560
|
|
|
552
561
|
from verifiers.v1.cli.output import CONFIG_FILE
|
|
553
562
|
from verifiers.v1.cli.replay import run_replay
|
|
554
|
-
from verifiers.v1.configs.replay import ReplayConfig
|
|
563
|
+
from verifiers.v1.configs.cli.replay import ReplayConfig
|
|
555
564
|
|
|
556
565
|
run_dir = tmp_path / "run"
|
|
557
566
|
(source,) = await run_v1(
|
|
558
567
|
"reverse-text-v1",
|
|
559
568
|
harness="null",
|
|
560
|
-
|
|
569
|
+
runtime={"type": "subprocess"},
|
|
561
570
|
output_dir=run_dir,
|
|
562
571
|
max_turns=2,
|
|
563
572
|
)
|
|
@@ -22,7 +22,7 @@ async def test_v0_single_turn_matches_v1_shape(run_v0, run_v1, tmp_path):
|
|
|
22
22
|
(v0,) = await run_v0("echo-v0", output_dir=tmp_path / "v0")
|
|
23
23
|
(v1,) = await run_v1(
|
|
24
24
|
"echo-v1",
|
|
25
|
-
|
|
25
|
+
runtime={"type": "subprocess"},
|
|
26
26
|
output_dir=tmp_path / "v1",
|
|
27
27
|
max_turns=2,
|
|
28
28
|
)
|
|
@@ -36,7 +36,7 @@ async def test_v0_multi_turn_matches_v1_shape(run_v0, run_v1, tmp_path):
|
|
|
36
36
|
(v0,) = await run_v0("echo-multi-v0", output_dir=tmp_path / "v0")
|
|
37
37
|
(v1,) = await run_v1(
|
|
38
38
|
"echo-v1",
|
|
39
|
-
|
|
39
|
+
runtime={"type": "subprocess"},
|
|
40
40
|
output_dir=tmp_path / "v1",
|
|
41
41
|
max_turns=2,
|
|
42
42
|
)
|
|
@@ -13,25 +13,16 @@ from verifiers.v1.clients import (
|
|
|
13
13
|
resolve_client,
|
|
14
14
|
)
|
|
15
15
|
from verifiers.v1.decorators import metric, reward, stop, tool
|
|
16
|
-
from verifiers.v1.agent import
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
Agents,
|
|
20
|
-
Interaction,
|
|
21
|
-
Segment,
|
|
22
|
-
make_agent,
|
|
23
|
-
)
|
|
24
|
-
from verifiers.v1.configs.env import (
|
|
16
|
+
from verifiers.v1.configs.agent import AgentConfig
|
|
17
|
+
from verifiers.v1.agent import Agent, Agents, Interaction, Segment, make_agent
|
|
18
|
+
from verifiers.v1.configs.cli.env import (
|
|
25
19
|
ElasticPoolConfig,
|
|
26
20
|
EnvServerConfig,
|
|
27
21
|
StaticPoolConfig,
|
|
28
22
|
pool_serve_kwargs,
|
|
29
23
|
)
|
|
30
|
-
from verifiers.v1.env import
|
|
31
|
-
|
|
32
|
-
Env,
|
|
33
|
-
default_agent_harness,
|
|
34
|
-
)
|
|
24
|
+
from verifiers.v1.configs.env import EnvConfig, default_agent_harness
|
|
25
|
+
from verifiers.v1.env import Env
|
|
35
26
|
from verifiers.v1.envs.single_agent import SingleAgentEnv, SingleAgentEnvConfig
|
|
36
27
|
from verifiers.v1.errors import (
|
|
37
28
|
EnvError,
|
|
@@ -44,15 +35,10 @@ from verifiers.v1.errors import (
|
|
|
44
35
|
ToolsetError,
|
|
45
36
|
TunnelError,
|
|
46
37
|
)
|
|
47
|
-
from verifiers.v1.harness import
|
|
48
|
-
from verifiers.v1.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
JudgeResponse,
|
|
52
|
-
Judges,
|
|
53
|
-
JudgeSamplingConfig,
|
|
54
|
-
JudgeView,
|
|
55
|
-
)
|
|
38
|
+
from verifiers.v1.configs.harness import HarnessConfig
|
|
39
|
+
from verifiers.v1.harness import Harness
|
|
40
|
+
from verifiers.v1.configs.judge import JudgeConfig, JudgeSamplingConfig, Judges
|
|
41
|
+
from verifiers.v1.judge import Judge, JudgeResponse, JudgeView
|
|
56
42
|
from verifiers.v1.judges import (
|
|
57
43
|
ReferenceJudge,
|
|
58
44
|
ReferenceJudgeConfig,
|
|
@@ -86,7 +72,7 @@ from verifiers.v1.scoring import (
|
|
|
86
72
|
read_answer_file_or_last_reply as read_answer_file_or_last_reply,
|
|
87
73
|
verify_boxed_math_answer as verify_boxed_math_answer,
|
|
88
74
|
)
|
|
89
|
-
from verifiers.v1.retries import RetryConfig
|
|
75
|
+
from verifiers.v1.configs.retries import RetryConfig
|
|
90
76
|
from verifiers.v1.utils.git import (
|
|
91
77
|
PATCH_CAP_BYTES as PATCH_CAP_BYTES,
|
|
92
78
|
capture_patch as capture_patch,
|
|
@@ -102,15 +88,10 @@ from verifiers.v1.runtimes import (
|
|
|
102
88
|
SubprocessConfig,
|
|
103
89
|
)
|
|
104
90
|
from verifiers.v1.state import State, StateT
|
|
105
|
-
from verifiers.v1.task import
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
TaskResources,
|
|
110
|
-
TaskTimeout,
|
|
111
|
-
WireTaskData,
|
|
112
|
-
)
|
|
113
|
-
from verifiers.v1.taskset import Taskset, TasksetConfig
|
|
91
|
+
from verifiers.v1.configs.task import TaskConfig
|
|
92
|
+
from verifiers.v1.task import Task, TaskData, TaskResources, TaskTimeout, WireTaskData
|
|
93
|
+
from verifiers.v1.configs.taskset import TasksetConfig
|
|
94
|
+
from verifiers.v1.taskset import Taskset
|
|
114
95
|
from verifiers.v1.mcp import (
|
|
115
96
|
Toolset,
|
|
116
97
|
SharedToolsetConfig,
|
|
@@ -14,20 +14,18 @@ from contextlib import asynccontextmanager, nullcontext
|
|
|
14
14
|
from dataclasses import dataclass
|
|
15
15
|
from typing import AsyncIterator
|
|
16
16
|
|
|
17
|
-
from pydantic import SerializeAsAny, model_validator
|
|
18
|
-
from pydantic_config import BaseConfig
|
|
19
17
|
|
|
18
|
+
from verifiers.v1.configs.agent import AgentConfig, TimeoutConfig
|
|
20
19
|
from verifiers.v1.clients import (
|
|
21
20
|
Client,
|
|
22
|
-
ClientConfig,
|
|
23
21
|
EvalClientConfig,
|
|
24
22
|
ModelContext,
|
|
25
23
|
resolve_client,
|
|
26
24
|
)
|
|
27
|
-
from verifiers.v1.harness import Harness
|
|
25
|
+
from verifiers.v1.harness import Harness
|
|
28
26
|
from verifiers.v1.interception import Interception, InterceptionServer
|
|
29
27
|
from verifiers.v1.mcp import SharedToolServer
|
|
30
|
-
from verifiers.v1.retries import
|
|
28
|
+
from verifiers.v1.retries import backoff, trace_should_retry
|
|
31
29
|
from verifiers.v1.rollout import RolloutRun, _as_messages
|
|
32
30
|
from verifiers.v1.runtimes import (
|
|
33
31
|
NetworkPolicyConfig,
|
|
@@ -44,7 +42,6 @@ from verifiers.v1.types import (
|
|
|
44
42
|
AssistantMessage,
|
|
45
43
|
Messages,
|
|
46
44
|
Sampling,
|
|
47
|
-
SamplingConfig,
|
|
48
45
|
ToolMessage,
|
|
49
46
|
UserMessage,
|
|
50
47
|
)
|
|
@@ -54,57 +51,9 @@ from verifiers.v1.utils.compile import (
|
|
|
54
51
|
validate_pairing,
|
|
55
52
|
)
|
|
56
53
|
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
__all__ = ["Agent", "AgentConfig", "Agents", "TimeoutConfig", "make_agent"]
|
|
59
55
|
|
|
60
|
-
|
|
61
|
-
"""Per-agent wall-clock timeouts per rollout stage, in seconds (None = no
|
|
62
|
-
limit); each stage falls back to the task's own `TaskTimeout` when unset. An
|
|
63
|
-
interaction's rollout budget is cumulative across its active harness segments
|
|
64
|
-
and pauses while the caller computes the next user turn."""
|
|
65
|
-
|
|
66
|
-
setup: float | None = None # one shared budget: task setup + provisioning
|
|
67
|
-
rollout: float | None = None
|
|
68
|
-
finalize: float | None = None
|
|
69
|
-
scoring: float | None = None
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
class AgentConfig(BaseConfig):
|
|
73
|
-
"""One env agent: who plays it, and its per-run caps. It pins only what
|
|
74
|
-
makes it a different actor; everything unpinned falls back — the model context
|
|
75
|
-
to the run's own, the harness to the taskset's default."""
|
|
76
|
-
|
|
77
|
-
harness: SerializeAsAny[HarnessConfig] | None = None
|
|
78
|
-
"""The agent's program + runtime policy (None = the taskset's default harness)."""
|
|
79
|
-
model: str | None = None
|
|
80
|
-
"""Model id (None = the run's model, i.e. the policy under evaluation/training)."""
|
|
81
|
-
client: ClientConfig | None = None
|
|
82
|
-
"""Endpoint override (None = the run's client)."""
|
|
83
|
-
sampling: SamplingConfig | None = None
|
|
84
|
-
"""Sampling override (None = the run's sampling)."""
|
|
85
|
-
timeout: TimeoutConfig = TimeoutConfig()
|
|
86
|
-
retries: RetryConfig = RetryConfig()
|
|
87
|
-
"""Whole-run retries: rerun this agent's rollout while its trace ends with a
|
|
88
|
-
retryable error (never into a borrowed box)."""
|
|
89
|
-
max_turns: int | None = None
|
|
90
|
-
"""Max model turns per run (None = no limit). Framework-enforced (the
|
|
91
|
-
interception server refuses turns past it), so it applies to any harness."""
|
|
92
|
-
max_input_tokens: int | None = None
|
|
93
|
-
max_output_tokens: int | None = None
|
|
94
|
-
max_total_tokens: int | None = None
|
|
95
|
-
"""Token caps per run (None = no limit); framework-enforced between turns."""
|
|
96
|
-
|
|
97
|
-
@model_validator(mode="before")
|
|
98
|
-
@classmethod
|
|
99
|
-
def _resolve_harness(cls, data):
|
|
100
|
-
"""Narrow a pinned `harness` to its concrete config type by `id` (absent
|
|
101
|
-
stays None = the taskset's default). The lazy import keeps class-body
|
|
102
|
-
`AgentConfig()` defaults constructible while this module initializes."""
|
|
103
|
-
if isinstance(data, dict) and data.get("harness") is not None:
|
|
104
|
-
from verifiers.v1.loaders import harness_config_type, narrow_plugin_field
|
|
105
|
-
|
|
106
|
-
narrow_plugin_field(data, "harness", harness_config_type, "bash")
|
|
107
|
-
return data
|
|
56
|
+
logger = logging.getLogger(__name__)
|
|
108
57
|
|
|
109
58
|
|
|
110
59
|
def _check_borrowed_placement(
|
|
@@ -283,8 +232,8 @@ class Agent:
|
|
|
283
232
|
|
|
284
233
|
Built from an `AgentConfig` alone; `client=`/`interception=` inject live
|
|
285
234
|
resources to borrow — agents on one endpoint should share one `Client`, and a
|
|
286
|
-
live `Interception`'s owner keeps its lifecycle. The
|
|
287
|
-
|
|
235
|
+
live `Interception`'s owner keeps its lifecycle. The config's `runtime` is a
|
|
236
|
+
*policy*: each `run` provisions a fresh box from it, resolved
|
|
288
237
|
per task; `run(runtime=...)` places the run into an existing box instead
|
|
289
238
|
(borrowed boxes are never started or torn down by the run)."""
|
|
290
239
|
|
|
@@ -302,21 +251,26 @@ class Agent:
|
|
|
302
251
|
"AgentConfig.model is unset; an Agent needs a pinned model "
|
|
303
252
|
"(inside an env the run's own model fills it in)"
|
|
304
253
|
)
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
254
|
+
# Resolve the unpinned identity fields into the config: it is the agent's
|
|
255
|
+
# full identity — what stamps onto every trace (`AgentInfo.config`).
|
|
256
|
+
if config.harness is None:
|
|
257
|
+
config = config.model_copy(
|
|
258
|
+
update={"harness": harness_config_type("bash")(id="bash")}
|
|
259
|
+
)
|
|
260
|
+
if config.sampling is None:
|
|
261
|
+
config = config.model_copy(update={"sampling": Sampling()})
|
|
308
262
|
self.config = config
|
|
309
|
-
self.harness = load_harness(
|
|
263
|
+
self.harness = load_harness(config.harness)
|
|
310
264
|
self._owns_client = client is None
|
|
311
265
|
if self._owns_client:
|
|
312
266
|
client = resolve_client(config.client or EvalClientConfig())
|
|
313
267
|
self.ctx = ModelContext(
|
|
314
268
|
model=config.model,
|
|
315
269
|
client=client,
|
|
316
|
-
sampling=config.sampling
|
|
270
|
+
sampling=config.sampling,
|
|
317
271
|
)
|
|
318
272
|
self._closed = False
|
|
319
|
-
self.runtime_config: RuntimeConfig =
|
|
273
|
+
self.runtime_config: RuntimeConfig = config.runtime
|
|
320
274
|
self.interception = interception
|
|
321
275
|
self.limits = RolloutLimits(
|
|
322
276
|
max_turns=config.max_turns,
|
|
@@ -575,6 +529,7 @@ class Agent:
|
|
|
575
529
|
else task.data.timeout.harness
|
|
576
530
|
)
|
|
577
531
|
return dict(
|
|
532
|
+
agent_config=self.config,
|
|
578
533
|
harness=self.harness,
|
|
579
534
|
ctx=self.ctx,
|
|
580
535
|
runtime_config=runtime_config,
|
|
@@ -16,7 +16,7 @@ from verifiers.v1.cli.dashboard.base import live_view
|
|
|
16
16
|
from verifiers.v1.cli.output import output_path
|
|
17
17
|
from verifiers.v1.utils.install import env_name
|
|
18
18
|
from verifiers.v1.utils.interrupt import cleaning_up
|
|
19
|
-
from verifiers.v1.configs.eval import EvalConfig
|
|
19
|
+
from verifiers.v1.configs.cli.eval import EvalConfig
|
|
20
20
|
from verifiers.v1.env import RunSlot
|
|
21
21
|
from verifiers.v1.trace import Trace
|
|
22
22
|
from verifiers.v1.types import Usage
|
|
@@ -73,7 +73,7 @@ _MARK = {
|
|
|
73
73
|
def _seat_value(config: EvalConfig, read):
|
|
74
74
|
"""A cap as the overview shows it: the declared seats' shared value, the
|
|
75
75
|
string 'per-seat' when they disagree (caps live on the seats)."""
|
|
76
|
-
from verifiers.v1.env import _declared_agent_configs
|
|
76
|
+
from verifiers.v1.configs.env import _declared_agent_configs
|
|
77
77
|
|
|
78
78
|
values = {read(spec) for spec in _declared_agent_configs(config.env).values()}
|
|
79
79
|
return values.pop() if len(values) == 1 else "per-seat"
|
|
@@ -163,8 +163,9 @@ def _warning(config: EvalConfig) -> Text | None:
|
|
|
163
163
|
from verifiers.v1.loaders import harness_class
|
|
164
164
|
|
|
165
165
|
if any(
|
|
166
|
-
|
|
167
|
-
|
|
166
|
+
getattr(config.env, role).runtime.type == "subprocess"
|
|
167
|
+
and harness_class(h.id).EXECUTES_CODE
|
|
168
|
+
for role, h in config.env.agent_harnesses().items()
|
|
168
169
|
):
|
|
169
170
|
return Text(
|
|
170
171
|
"warning Runs on the local system; local files and settings may affect this "
|
|
@@ -185,7 +186,7 @@ def overrides(
|
|
|
185
186
|
`model_validate(config.toml)`, and that toml is dumped with `exclude_none` (every field), so
|
|
186
187
|
`model_fields_set` would flag them all. `default` is the reference instance, threaded through
|
|
187
188
|
recursion so a pinned nested default (`taskset.task.tools`) reads as
|
|
188
|
-
unchanged. `skip` holds dotted paths (`
|
|
189
|
+
unchanged. `skip` holds dotted paths (`runtime.type`)."""
|
|
189
190
|
segments: list[str] = []
|
|
190
191
|
fields = type(config).model_fields
|
|
191
192
|
for field in sorted(fields):
|
|
@@ -237,9 +238,11 @@ def Overview(config: EvalConfig) -> Table:
|
|
|
237
238
|
env_label = f"{env_name(config.env.id)}+{env_label}"
|
|
238
239
|
# One seat story when every seat resolves the same way (the common case); one
|
|
239
240
|
# row per seat when they diverge (a judge on its own harness/runtime).
|
|
241
|
+
runtimes = {role: getattr(config.env, role).runtime.type for role in seats}
|
|
240
242
|
stories = list(
|
|
241
243
|
dict.fromkeys(
|
|
242
|
-
f"{h.name} harness · {
|
|
244
|
+
f"{h.name} harness · {runtimes[role]} runtime"
|
|
245
|
+
for role, h in seats.items()
|
|
243
246
|
)
|
|
244
247
|
)
|
|
245
248
|
if len(stories) == 1:
|
|
@@ -247,19 +250,23 @@ def Overview(config: EvalConfig) -> Table:
|
|
|
247
250
|
else:
|
|
248
251
|
grid.add_row("env", env_label)
|
|
249
252
|
for role, h in seats.items():
|
|
250
|
-
grid.add_row(f" {role}", f"{h.name} harness · {
|
|
253
|
+
grid.add_row(f" {role}", f"{h.name} harness · {runtimes[role]} runtime")
|
|
251
254
|
model = f"{config.model} ({sampling})" if sampling else config.model
|
|
252
255
|
grid.add_row("model", f"{model} via {config.client.base_url}")
|
|
253
256
|
# Non-default knobs the user set, one row each when non-empty. `escape` the cell: an override
|
|
254
257
|
# value (or our `[...]`/`{...}` delimiters) can carry Rich markup that would otherwise be
|
|
255
|
-
# parsed as styling and dropped. `id` is in the `env` row;
|
|
256
|
-
# here), but only for the
|
|
258
|
+
# parsed as styling and dropped. `id` is in the `env` row; the seat's `runtime.type` too
|
|
259
|
+
# (hidden here), but only for the seat — `taskset.task.tools.runtime.type` has no other display.
|
|
257
260
|
if taskset_over := overrides(taskset, skip=frozenset({"id"})):
|
|
258
261
|
grid.add_row("taskset", escape(" · ".join(taskset_over)))
|
|
259
262
|
for role, h in seats.items():
|
|
260
|
-
if harness_over := overrides(h, skip=frozenset({"id"
|
|
263
|
+
if harness_over := overrides(h, skip=frozenset({"id"})):
|
|
261
264
|
label = f"{role}.harness" if len(seats) > 1 else "harness"
|
|
262
265
|
grid.add_row(label, escape(" · ".join(harness_over)))
|
|
266
|
+
runtime = getattr(config.env, role).runtime
|
|
267
|
+
if runtime_over := overrides(runtime, skip=frozenset({"type"})):
|
|
268
|
+
label = f"{role}.runtime" if len(seats) > 1 else "runtime"
|
|
269
|
+
grid.add_row(label, escape(" · ".join(runtime_over)))
|
|
263
270
|
limits, timeouts = _aligned([_limits(config), _timeouts(config)])
|
|
264
271
|
grid.add_row("limits", limits)
|
|
265
272
|
grid.add_row("timeouts", timeouts)
|
|
@@ -753,7 +760,8 @@ def _render(
|
|
|
753
760
|
now,
|
|
754
761
|
"/".join(
|
|
755
762
|
dict.fromkeys(
|
|
756
|
-
|
|
763
|
+
getattr(config.env, role).runtime.type
|
|
764
|
+
for role in config.env.agent_harnesses()
|
|
757
765
|
)
|
|
758
766
|
)
|
|
759
767
|
or "subprocess",
|
|
@@ -13,7 +13,7 @@ from rich.table import Table
|
|
|
13
13
|
from rich.text import Text
|
|
14
14
|
|
|
15
15
|
from verifiers.v1.cli.dashboard.base import live_view
|
|
16
|
-
from verifiers.v1.configs.validate import ValidateConfig
|
|
16
|
+
from verifiers.v1.configs.cli.validate import ValidateConfig
|
|
17
17
|
from verifiers.v1.utils.format import format_time
|
|
18
18
|
|
|
19
19
|
_STYLE = {
|
|
@@ -22,13 +22,13 @@ from verifiers.v1.cli.resolve import (
|
|
|
22
22
|
references_config_file,
|
|
23
23
|
with_positional_taskset,
|
|
24
24
|
)
|
|
25
|
-
from verifiers.v1.configs.debug import DebugConfig
|
|
25
|
+
from verifiers.v1.configs.cli.debug import DebugConfig
|
|
26
26
|
from verifiers.v1.decorators import invoke
|
|
27
27
|
from verifiers.v1.utils.compile import resolve_runtime_config
|
|
28
28
|
from verifiers.v1.runtimes import ProgramResult, Runtime, make_runtime
|
|
29
29
|
from verifiers.v1.state import state_cls
|
|
30
30
|
from verifiers.v1.task import Task
|
|
31
|
-
from verifiers.v1.trace import Error, Trace, TraceTask
|
|
31
|
+
from verifiers.v1.trace import AgentInfo, Error, Trace, TraceTask
|
|
32
32
|
from verifiers.v1.utils.interrupt import install_interrupt
|
|
33
33
|
from verifiers.v1.utils.logging import setup_logging
|
|
34
34
|
|
|
@@ -202,6 +202,14 @@ async def debug_task(task: Task, config: DebugConfig) -> tuple[Trace, bool]:
|
|
|
202
202
|
trace = Trace(
|
|
203
203
|
task=TraceTask(type=type(task).__name__, data=task.data),
|
|
204
204
|
state=state_cls(type(task))(),
|
|
205
|
+
# No agent plays here (no model, no harness): the seat records the
|
|
206
|
+
# runtime policy, and the provisioned box lands on it below (id, resolved
|
|
207
|
+
# type, cache status).
|
|
208
|
+
agent=AgentInfo(
|
|
209
|
+
config=vf.AgentConfig(runtime=config.runtime),
|
|
210
|
+
name="debug",
|
|
211
|
+
trainable=False,
|
|
212
|
+
),
|
|
205
213
|
)
|
|
206
214
|
debug = {
|
|
207
215
|
"task": task_info(task),
|
|
@@ -214,7 +222,7 @@ async def debug_task(task: Task, config: DebugConfig) -> tuple[Trace, bool]:
|
|
|
214
222
|
resolve_runtime_config(config.runtime, task),
|
|
215
223
|
name=f"debug-{task.data.idx}-{uuid4().hex[:8]}",
|
|
216
224
|
)
|
|
217
|
-
trace.runtime = runtime.info
|
|
225
|
+
trace.agent.runtime = runtime.info
|
|
218
226
|
setup_timeout = (
|
|
219
227
|
config.timeout.setup
|
|
220
228
|
if config.timeout.setup is not None
|
|
@@ -19,7 +19,7 @@ from verifiers.v1.cli.resolve import (
|
|
|
19
19
|
)
|
|
20
20
|
from verifiers.v1.cli.eval.resume import load_resume_config, split_resume
|
|
21
21
|
from verifiers.v1.cli.eval.runner import run_eval
|
|
22
|
-
from verifiers.v1.configs.eval import EvalConfig
|
|
22
|
+
from verifiers.v1.configs.cli.eval import EvalConfig
|
|
23
23
|
|
|
24
24
|
logger = logging.getLogger(__name__)
|
|
25
25
|
|
|
@@ -22,7 +22,7 @@ from typing import TypeVar
|
|
|
22
22
|
from pydantic_core import from_json
|
|
23
23
|
|
|
24
24
|
from verifiers.v1.cli.output import CONFIG_FILE, TRACES_FILE, sniff_episode
|
|
25
|
-
from verifiers.v1.configs.eval import EvalConfig
|
|
25
|
+
from verifiers.v1.configs.cli.eval import EvalConfig
|
|
26
26
|
from verifiers.v1.episode import Episode, WireEpisode
|
|
27
27
|
from verifiers.v1.trace import WireTrace
|
|
28
28
|
|
|
@@ -6,7 +6,7 @@ import logging
|
|
|
6
6
|
import time
|
|
7
7
|
|
|
8
8
|
from verifiers.v1.clients import ModelContext, resolve_client
|
|
9
|
-
from verifiers.v1.configs.eval import EvalConfig
|
|
9
|
+
from verifiers.v1.configs.cli.eval import EvalConfig
|
|
10
10
|
from verifiers.v1.cli.eval import resume
|
|
11
11
|
from verifiers.v1.cli.dashboard import dashboard
|
|
12
12
|
from verifiers.v1.cli.output import (
|
|
@@ -108,7 +108,7 @@ async def run_eval_server(config: EvalConfig) -> list[Episode]:
|
|
|
108
108
|
from functools import partial
|
|
109
109
|
|
|
110
110
|
from verifiers.v1.utils.logging import setup_logging
|
|
111
|
-
from verifiers.v1.configs.env import pool_serve_kwargs
|
|
111
|
+
from verifiers.v1.configs.cli.env import pool_serve_kwargs
|
|
112
112
|
from verifiers.v1.serve import EnvClient, env_config_data, serve_env
|
|
113
113
|
|
|
114
114
|
legacy = config.is_legacy
|
|
@@ -17,7 +17,7 @@ from pathlib import Path
|
|
|
17
17
|
import tomli_w
|
|
18
18
|
from pydantic import BaseModel, TypeAdapter
|
|
19
19
|
|
|
20
|
-
from verifiers.v1.configs.eval import EvalConfig
|
|
20
|
+
from verifiers.v1.configs.cli.eval import EvalConfig
|
|
21
21
|
from verifiers.v1.episode import Episode, WireEpisode
|
|
22
22
|
from verifiers.v1.trace import Trace
|
|
23
23
|
from verifiers.v1.utils.aio import run_shielded
|