verifiers 0.2.2.dev84__tar.gz → 0.2.2.dev86__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.dev84 → verifiers-0.2.2.dev86}/PKG-INFO +1 -1
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/fixtures/echo_agentic_v1.py +8 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/test_e2e.py +56 -12
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/envs/agentic_judge/__init__.py +2 -2
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/envs/agentic_judge/env.py +48 -36
- verifiers-0.2.2.dev86/verifiers/v1/envs/shared_agentic_judge/__init__.py +6 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/runtimes/base.py +5 -7
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/runtimes/docker/__init__.py +8 -1
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/runtimes/prime.py +16 -13
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/.gitignore +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/LICENSE +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/README.md +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/pyproject.toml +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/conftest.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_browser_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_build_script.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_client_config.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_composable_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_env_group.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_env_server.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_environment.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_environment_extra.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_error_chain.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_eval_display.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_eval_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_gym_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_imports.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_init_script.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_install_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_interception_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_logging.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_math_rubric.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_message_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_openenv_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_parser.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_path_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_renderer_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_rubric.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_rubric_group.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_save_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_setup_script.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_think_parser.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_tool_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_tool_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_types.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_xml_parser.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/conftest.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/fixtures/duet_v1.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/test_configs.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/test_envs.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/test_graph.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/test_judges.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/v1/test_trace.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/cli/tui.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/clients/client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/clients/renderer_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/decorators.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/environment.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/errors.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/gepa/config.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/gepa/display.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/scripts/build.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/scripts/init.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/scripts/install.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/serve/types.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/types.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/acp/_runner.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/agent.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/cli/init.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/legacy.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/episode.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/errors.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/graph.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/bash/program.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/null/program.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/pool/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/pool/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/judge.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/session.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/state.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/task.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/tasksets/harbor/env.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/trace.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/types.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/loaders.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/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.dev86
|
|
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
|
|
@@ -31,6 +31,13 @@ class EchoAgenticData(vf.TaskData):
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class EchoAgenticTask(vf.Task[EchoAgenticData]):
|
|
34
|
+
async def finalize(self, trace: vf.Trace, runtime: Runtime) -> None:
|
|
35
|
+
# Subprocess uses a runtime-owned temporary cwd, not a restorable absolute
|
|
36
|
+
# path; isolated agentic judging requires a container anyway.
|
|
37
|
+
if runtime.type == "subprocess":
|
|
38
|
+
return
|
|
39
|
+
trace.state.artifacts = await vf.collect(runtime, self.data.artifacts)
|
|
40
|
+
|
|
34
41
|
@vf.reward(weight=1.0)
|
|
35
42
|
async def wrote_phrase(self, runtime: Runtime) -> float:
|
|
36
43
|
try:
|
|
@@ -57,6 +64,7 @@ class EchoAgenticTaskset(vf.Taskset[EchoAgenticTask, EchoAgenticConfig]):
|
|
|
57
64
|
),
|
|
58
65
|
system_prompt=SYSTEM,
|
|
59
66
|
answer=phrase,
|
|
67
|
+
artifacts=[vf.Artifact(source=TARGET)],
|
|
60
68
|
),
|
|
61
69
|
self.config.task,
|
|
62
70
|
)
|
|
@@ -418,24 +418,20 @@ async def test_env_id_best_of_n(run_v1, tmp_path):
|
|
|
418
418
|
|
|
419
419
|
|
|
420
420
|
@pytest.mark.e2e
|
|
421
|
-
async def
|
|
422
|
-
"""The agentic judge
|
|
423
|
-
|
|
424
|
-
the judge lands in the SAME box with the graded trace uploaded,
|
|
425
|
-
investigates with real execution, and its parsed verdict
|
|
426
|
-
lands on the solver's trace under the spec's reward key. Wiring, not taste:
|
|
427
|
-
the judge followed the verdict-file contract — the grade itself is the
|
|
428
|
-
model's call. Exercises the config surface too: a policy-only prompt
|
|
429
|
-
override (the verdict contract is appended regardless) and
|
|
430
|
-
reward-composition weights."""
|
|
421
|
+
async def test_env_id_shared_agentic_judge(run_v1, tmp_path):
|
|
422
|
+
"""The shared agentic judge provisions one restricted solver-owned box and
|
|
423
|
+
safely reuses it for the judge's empirical verification."""
|
|
431
424
|
policy = tmp_path / "judge_policy.txt"
|
|
432
425
|
policy.write_text("Check EMPIRICALLY that the agent echoed the word back.")
|
|
433
426
|
traces = await run_v1(
|
|
434
427
|
"echo-v1",
|
|
435
428
|
harness=None,
|
|
436
429
|
env={
|
|
437
|
-
"id": "agentic-judge",
|
|
438
|
-
"solver": {
|
|
430
|
+
"id": "shared-agentic-judge",
|
|
431
|
+
"solver": {
|
|
432
|
+
"harness": {"id": "bash"},
|
|
433
|
+
"runtime": {"type": "docker", "block": ["example.com"]},
|
|
434
|
+
},
|
|
439
435
|
"judge": {
|
|
440
436
|
"harness": {"id": "bash"},
|
|
441
437
|
"max_output_tokens": 8192,
|
|
@@ -455,6 +451,8 @@ async def test_env_id_agentic_judge(run_v1, tmp_path):
|
|
|
455
451
|
(judge,) = [t for t in traces if t.agent.name == "judge"]
|
|
456
452
|
assert solver.ok and judge.ok
|
|
457
453
|
assert judge.agent.trainable is False
|
|
454
|
+
assert solver.agent.runtime is not None and judge.agent.runtime is not None
|
|
455
|
+
assert solver.agent.runtime.id == judge.agent.runtime.id
|
|
458
456
|
# The task's own reward keeps its raw score; the rescale lands on the weight.
|
|
459
457
|
assert solver.rewards["echoed"].score == 1.0
|
|
460
458
|
assert solver.rewards["echoed"].weight == 0.5
|
|
@@ -462,6 +460,52 @@ async def test_env_id_agentic_judge(run_v1, tmp_path):
|
|
|
462
460
|
assert 0.0 <= solver.rewards["judge"].score <= 1.0
|
|
463
461
|
|
|
464
462
|
|
|
463
|
+
@pytest.mark.e2e
|
|
464
|
+
async def test_env_id_agentic_judge(run_v1, tmp_path):
|
|
465
|
+
"""The isolated agentic judge destroys the restricted solver box, transfers
|
|
466
|
+
its declared artifact, and restores it in a fresh box with the same policy."""
|
|
467
|
+
policy = tmp_path / "isolated_judge_policy.txt"
|
|
468
|
+
policy.write_text(
|
|
469
|
+
"Check EMPIRICALLY that answer.txt contains exactly the requested phrase."
|
|
470
|
+
)
|
|
471
|
+
traces = await run_v1(
|
|
472
|
+
"echo-agentic-v1",
|
|
473
|
+
harness=None,
|
|
474
|
+
env={
|
|
475
|
+
"id": "agentic-judge",
|
|
476
|
+
"solver": {
|
|
477
|
+
"harness": {"id": "bash"},
|
|
478
|
+
"runtime": {"type": "docker", "block": ["example.com"]},
|
|
479
|
+
},
|
|
480
|
+
"judge": {
|
|
481
|
+
"harness": {"id": "bash"},
|
|
482
|
+
"max_output_tokens": 8192,
|
|
483
|
+
},
|
|
484
|
+
"task": {
|
|
485
|
+
"prompt": {"path": str(policy)},
|
|
486
|
+
"hint": "Do not rely on README.md",
|
|
487
|
+
},
|
|
488
|
+
"score": {"task_weight": 0.5},
|
|
489
|
+
},
|
|
490
|
+
output_dir=tmp_path,
|
|
491
|
+
max_turns=10,
|
|
492
|
+
rollout_timeout=600,
|
|
493
|
+
)
|
|
494
|
+
assert sorted(t.agent.name for t in traces) == ["judge", "solver"]
|
|
495
|
+
(solver,) = [t for t in traces if t.agent.name == "solver"]
|
|
496
|
+
(judge,) = [t for t in traces if t.agent.name == "judge"]
|
|
497
|
+
assert solver.ok and judge.ok
|
|
498
|
+
assert judge.agent.trainable is False
|
|
499
|
+
assert solver.agent.runtime is not None and judge.agent.runtime is not None
|
|
500
|
+
assert solver.agent.runtime.id != judge.agent.runtime.id
|
|
501
|
+
assert solver.agent.runtime.type == judge.agent.runtime.type == "docker"
|
|
502
|
+
assert "/app/answer.txt" in solver.state.artifacts
|
|
503
|
+
assert solver.rewards["wrote_phrase"].score == 1.0
|
|
504
|
+
assert solver.rewards["wrote_phrase"].weight == 0.5
|
|
505
|
+
assert isinstance(judge.info.get("verdict"), dict)
|
|
506
|
+
assert 0.0 <= solver.rewards["judge"].score <= 1.0
|
|
507
|
+
|
|
508
|
+
|
|
465
509
|
@pytest.mark.e2e
|
|
466
510
|
async def test_env_id_user_sim(run_v1, tmp_path):
|
|
467
511
|
"""The user-sim env over the echo taskset: a modeled user (null harness) opens
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
from verifiers.v1.envs.agentic_judge.env import (
|
|
2
|
-
AgenticJudgeEnv,
|
|
3
2
|
AgenticJudgeEnvConfig,
|
|
4
3
|
Criterion,
|
|
4
|
+
IsolatedAgenticJudgeEnv,
|
|
5
5
|
JudgeTaskConfig,
|
|
6
6
|
ScoreConfig,
|
|
7
7
|
TextFile,
|
|
8
8
|
)
|
|
9
9
|
|
|
10
10
|
__all__ = [
|
|
11
|
-
"AgenticJudgeEnv",
|
|
12
11
|
"AgenticJudgeEnvConfig",
|
|
13
12
|
"Criterion",
|
|
13
|
+
"IsolatedAgenticJudgeEnv",
|
|
14
14
|
"JudgeTaskConfig",
|
|
15
15
|
"ScoreConfig",
|
|
16
16
|
"TextFile",
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
"""
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
`/tmp/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
"""Agentic judging: a solver plays the task, then a judge verifies the work.
|
|
2
|
+
|
|
3
|
+
Two reusable envs share the grading protocol. `--env.id agentic-judge` provisions
|
|
4
|
+
a fresh box from the solver's runtime policy and restores only the task's collected
|
|
5
|
+
artifacts; `--env.id shared-agentic-judge` explicitly runs the judge in the
|
|
6
|
+
solver's box. The judge grades rubric criteria (`[env.task]`: policy prompt,
|
|
7
|
+
criteria file) and writes its verdicts to `/tmp/verdict.json`, with the solver's
|
|
8
|
+
full trace record uploaded at `/tmp/trace.json`. `finalize()` validates them
|
|
9
|
+
strictly onto the solver's trace — `judge/<name>` metrics plus a weighted-mean
|
|
10
|
+
`judge` reward, composed with the taskset's own rewards via `[env.score]`
|
|
11
|
+
(judge-only by default).
|
|
12
|
+
|
|
13
|
+
The environment id selects the runtime boundary; there is no mode boolean whose
|
|
14
|
+
value can disagree with the environment's security and artifact semantics.
|
|
14
15
|
"""
|
|
15
16
|
|
|
16
17
|
import json
|
|
@@ -165,6 +166,8 @@ class JudgeTask(vf.Task):
|
|
|
165
166
|
image=solved.image,
|
|
166
167
|
workdir=solved.workdir,
|
|
167
168
|
resources=solved.resources,
|
|
169
|
+
network_allow=solved.network_allow,
|
|
170
|
+
network_block=solved.network_block,
|
|
168
171
|
),
|
|
169
172
|
files=files,
|
|
170
173
|
artifacts={} if share_runtime else solution.state.artifacts,
|
|
@@ -258,20 +261,22 @@ class AgenticJudgeEnvConfig(vf.EnvConfig):
|
|
|
258
261
|
"""The solver agent. Its runtime must be a container:
|
|
259
262
|
`--env.solver.runtime.type docker|prime`."""
|
|
260
263
|
judge: vf.AgentConfig = vf.AgentConfig()
|
|
261
|
-
"""The judge agent. Its runtime is ignored
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
"""Whether the judge grades in the solver's runtime."""
|
|
264
|
+
"""The judge agent. Its runtime setting is ignored: both judging modes use the
|
|
265
|
+
solver's resolved runtime policy, either by borrowing its box or provisioning a
|
|
266
|
+
fresh equivalent one."""
|
|
265
267
|
task: JudgeTaskConfig = JudgeTaskConfig()
|
|
266
268
|
score: ScoreConfig = ScoreConfig()
|
|
267
269
|
|
|
268
270
|
|
|
269
271
|
class AgenticJudgeEnv(vf.Env[AgenticJudgeEnvConfig]):
|
|
272
|
+
"""Common agentic-judge protocol; subclasses choose the runtime boundary."""
|
|
273
|
+
|
|
270
274
|
def __init__(self, config: AgenticJudgeEnvConfig) -> None:
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
+
# Both modes use the solver's policy. Shared judging borrows that exact box;
|
|
276
|
+
# isolated judging resolves the mirrored JudgeTask into a fresh equivalent.
|
|
277
|
+
config.judge = config.judge.model_copy(
|
|
278
|
+
update={"runtime": config.solver.runtime}
|
|
279
|
+
)
|
|
275
280
|
super().__init__(config)
|
|
276
281
|
self._check_agents()
|
|
277
282
|
# A missing policy file or a malformed rubric fails here, not mid-episode.
|
|
@@ -302,21 +307,6 @@ class AgenticJudgeEnv(vf.Env[AgenticJudgeEnvConfig]):
|
|
|
302
307
|
# The judge grades the policy; its tokens are never training data.
|
|
303
308
|
agents.judge.trainable = False
|
|
304
309
|
|
|
305
|
-
async def run(self, task: vf.Task, agents: vf.Agents) -> None:
|
|
306
|
-
if self.config.share_runtime:
|
|
307
|
-
async with agents.solver.provision(task) as box:
|
|
308
|
-
solution = await agents.solver.run(task, runtime=box)
|
|
309
|
-
judge_task = JudgeTask.from_trace(solution, self.config.task)
|
|
310
|
-
await agents.judge.run(judge_task, runtime=box)
|
|
311
|
-
return
|
|
312
|
-
|
|
313
|
-
solution = await agents.solver.run(task)
|
|
314
|
-
if not solution.ok:
|
|
315
|
-
return
|
|
316
|
-
await agents.judge.run(
|
|
317
|
-
JudgeTask.from_trace(solution, self.config.task, share_runtime=False)
|
|
318
|
-
)
|
|
319
|
-
|
|
320
310
|
async def finalize(self, task: vf.Task, episode: vf.Episode) -> None:
|
|
321
311
|
by_agent = {t.agent.name: t for t in episode.traces}
|
|
322
312
|
if "judge" not in by_agent:
|
|
@@ -334,3 +324,25 @@ class AgenticJudgeEnv(vf.Env[AgenticJudgeEnvConfig]):
|
|
|
334
324
|
total = sum(criterion.weight for criterion in criteria)
|
|
335
325
|
reward = sum(c.weight * scores[c.name] for c in criteria) / total
|
|
336
326
|
solution.record_reward("judge", reward, weight=self.config.score.judge_weight)
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
class SharedAgenticJudgeEnv(AgenticJudgeEnv):
|
|
330
|
+
"""Judge the solver in its runtime, preserving the complete mutable workspace."""
|
|
331
|
+
|
|
332
|
+
async def run(self, task: vf.Task, agents: vf.Agents) -> None:
|
|
333
|
+
async with agents.solver.provision(task) as box:
|
|
334
|
+
solution = await agents.solver.run(task, runtime=box)
|
|
335
|
+
judge_task = JudgeTask.from_trace(solution, self.config.task)
|
|
336
|
+
await agents.judge.run(judge_task, runtime=box)
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
class IsolatedAgenticJudgeEnv(AgenticJudgeEnv):
|
|
340
|
+
"""Judge only collected artifacts in a fresh box with the solver's policy."""
|
|
341
|
+
|
|
342
|
+
async def run(self, task: vf.Task, agents: vf.Agents) -> None:
|
|
343
|
+
solution = await agents.solver.run(task)
|
|
344
|
+
if not solution.ok:
|
|
345
|
+
return
|
|
346
|
+
await agents.judge.run(
|
|
347
|
+
JudgeTask.from_trace(solution, self.config.task, share_runtime=False)
|
|
348
|
+
)
|
|
@@ -332,19 +332,17 @@ class Runtime(ABC):
|
|
|
332
332
|
return url
|
|
333
333
|
|
|
334
334
|
async def prepare_setup(self) -> None:
|
|
335
|
-
"""
|
|
335
|
+
"""Open egress for trusted setup when reusing a restricted runtime."""
|
|
336
336
|
if not self.network_restricted:
|
|
337
337
|
return
|
|
338
338
|
if self._setup_claimed:
|
|
339
|
-
|
|
340
|
-
f"network-filtered {self.type} runtimes are single-rollout; "
|
|
341
|
-
"provision a fresh runtime instead of reusing this one"
|
|
342
|
-
)
|
|
339
|
+
await self.prepare_execution(None)
|
|
343
340
|
self._setup_claimed = True
|
|
344
341
|
|
|
345
|
-
async def prepare_execution(self, routes: list[str]) -> None:
|
|
342
|
+
async def prepare_execution(self, routes: list[str] | None) -> None:
|
|
346
343
|
"""Last setup step, right before the agent starts. Restricted runtimes enforce
|
|
347
|
-
their policy here; `routes` identifies the interception and MCP endpoints.
|
|
344
|
+
their policy here; `routes` identifies the interception and MCP endpoints.
|
|
345
|
+
None restores unrestricted egress for another trusted setup phase."""
|
|
348
346
|
|
|
349
347
|
@property
|
|
350
348
|
def network_restricted(self) -> bool:
|
|
@@ -233,11 +233,16 @@ class DockerRuntime(Runtime):
|
|
|
233
233
|
return url.replace(host, "host.docker.internal", 1)
|
|
234
234
|
return url
|
|
235
235
|
|
|
236
|
-
async def prepare_execution(self, routes: list[str]) -> None:
|
|
236
|
+
async def prepare_execution(self, routes: list[str] | None) -> None:
|
|
237
237
|
"""Allow the declared framework routes, then leave the proxy as the only route."""
|
|
238
238
|
if not self.network_restricted:
|
|
239
239
|
return
|
|
240
240
|
assert self._proxy is not None
|
|
241
|
+
if routes is None:
|
|
242
|
+
self._proxy.policy = NetworkPolicy(
|
|
243
|
+
["*"], [], [HOST_ALIAS], allow_non_global=True
|
|
244
|
+
)
|
|
245
|
+
return
|
|
241
246
|
framework = [
|
|
242
247
|
urlsplit(url)._replace(path="", query="", fragment="").geturl()
|
|
243
248
|
for url in routes
|
|
@@ -247,6 +252,8 @@ class DockerRuntime(Runtime):
|
|
|
247
252
|
self.config.block,
|
|
248
253
|
framework,
|
|
249
254
|
)
|
|
255
|
+
if self._cut:
|
|
256
|
+
return
|
|
250
257
|
script = (
|
|
251
258
|
"set -eu; HOST=$1; "
|
|
252
259
|
"PORT=$2; "
|
|
@@ -181,22 +181,25 @@ class PrimeRuntime(Runtime):
|
|
|
181
181
|
) as e: # provisioning failure is one rollout's problem, not the eval's
|
|
182
182
|
raise SandboxError(f"prime sandbox provisioning failed: {e}") from e
|
|
183
183
|
|
|
184
|
-
async def prepare_execution(self, routes: list[str]) -> None:
|
|
184
|
+
async def prepare_execution(self, routes: list[str] | None) -> None:
|
|
185
185
|
"""Apply the host policy after setup and wait until the platform enforces it."""
|
|
186
186
|
if not self.network_restricted:
|
|
187
187
|
return
|
|
188
188
|
try:
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
h for h in (urlsplit(route).hostname for route in routes) if h
|
|
192
|
-
)
|
|
193
|
-
)
|
|
194
|
-
if self.config.allow == ["*"]:
|
|
195
|
-
policy = {"deny": self.config.block}
|
|
189
|
+
if routes is None:
|
|
190
|
+
policy = {"allow": ["*"]}
|
|
196
191
|
else:
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
192
|
+
hosts = list(
|
|
193
|
+
dict.fromkeys(
|
|
194
|
+
h for h in (urlsplit(route).hostname for route in routes) if h
|
|
195
|
+
)
|
|
196
|
+
)
|
|
197
|
+
if self.config.allow == ["*"]:
|
|
198
|
+
policy = {"deny": self.config.block}
|
|
199
|
+
else:
|
|
200
|
+
entries = list(dict.fromkeys([*hosts, *self.config.allow]))
|
|
201
|
+
validate_egress_lists(entries, None)
|
|
202
|
+
policy = {"allow": entries} if entries else {"deny": ["*"]}
|
|
200
203
|
status = await self._client.set_network(self.info.id, **policy)
|
|
201
204
|
try:
|
|
202
205
|
async with asyncio.timeout(60):
|
|
@@ -217,8 +220,8 @@ class PrimeRuntime(Runtime):
|
|
|
217
220
|
logger.info(
|
|
218
221
|
"prime: egress policy applied on sandbox %s (allow=%s block=%s)",
|
|
219
222
|
self.info.id,
|
|
220
|
-
|
|
221
|
-
|
|
223
|
+
policy.get("allow"),
|
|
224
|
+
policy.get("deny"),
|
|
222
225
|
)
|
|
223
226
|
|
|
224
227
|
async def run(self, argv: list[str], env: dict[str, str]) -> ProgramResult:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.2.2.dev84 → verifiers-0.2.2.dev86}/tests/test_openai_chat_completions_token_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|