verifiers 0.3.1.dev9__tar.gz → 0.3.1.dev11__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.3.1.dev9 → verifiers-0.3.1.dev11}/PKG-INFO +1 -1
- verifiers-0.3.1.dev11/tests/v1/test_scoring.py +101 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/__init__.py +9 -1
- verifiers-0.3.1.dev11/verifiers/v1/configs/task.py +64 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/openclaw/harness.py +3 -15
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/pi/harness.py +4 -16
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/rollout.py +2 -4
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/task.py +23 -4
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/loaders.py +58 -1
- verifiers-0.3.1.dev9/tests/v1/test_scoring.py +0 -31
- verifiers-0.3.1.dev9/verifiers/v1/configs/task.py +0 -32
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/.gitignore +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/LICENSE +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/README.md +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/pyproject.toml +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/conftest.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_browser_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_build_script.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_client_config.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_composable_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_env_group.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_env_server.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_environment.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_environment_extra.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_error_chain.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_eval_display.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_eval_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_gym_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_imports.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_init_script.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_install_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_interception_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_logging.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_math_rubric.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_message_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_openenv_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_parser.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_path_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_renderer_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_rubric.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_rubric_group.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_save_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_setup_script.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_think_parser.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_tool_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_tool_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_types.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/test_xml_parser.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/conftest.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/fixtures/duet_v1.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/test_configs.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/test_e2e.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/test_envs.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/test_graph.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/test_judges.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/tests/v1/test_trace.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/cli/tui.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/clients/client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/clients/renderer_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/decorators.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/environment.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/errors.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/gepa/config.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/gepa/display.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/scripts/build.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/scripts/init.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/scripts/install.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/serve/types.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/types.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/acp/runner.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/agent.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/resume.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/cli/init.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/legacy.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/episode.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/errors.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/graph.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/bash/program.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/node.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/null/program.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/pool/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/pool/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/judge.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/session.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/state.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/harbor/env.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/trace.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/types.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.3.1.dev9 → verifiers-0.3.1.dev11}/verifiers/v1/utils/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.3.1.
|
|
3
|
+
Version: 0.3.1.dev11
|
|
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
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import verifiers.v1 as vf
|
|
2
|
+
from verifiers.v1.graph import MessageNode
|
|
3
|
+
from verifiers.v1.types import AssistantMessage, UserMessage
|
|
4
|
+
|
|
5
|
+
PLUGGED_FNS_PY = """
|
|
6
|
+
async def reply_length(trace) -> float:
|
|
7
|
+
return float(len(trace.last_reply or ""))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
async def exact_match(task, trace) -> float:
|
|
11
|
+
return float(task.answer in (trace.last_reply or ""))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
async def marker(trace) -> float:
|
|
15
|
+
return 0.125
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
async def two_turns(trace) -> bool:
|
|
19
|
+
return trace.num_turns >= 2
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class HookData(vf.TaskData):
|
|
24
|
+
answer: str = ""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class HookTask(vf.Task[HookData]):
|
|
28
|
+
@vf.stop
|
|
29
|
+
async def single_turn(self, trace: vf.Trace) -> bool:
|
|
30
|
+
return trace.num_turns >= 1
|
|
31
|
+
|
|
32
|
+
@vf.reward
|
|
33
|
+
async def lcs(self, trace: vf.Trace) -> float:
|
|
34
|
+
return 0.5
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
async def test_config_plugged_fns_merge_and_override(tmp_path) -> None:
|
|
38
|
+
fns = tmp_path / "fns.py"
|
|
39
|
+
fns.write_text(PLUGGED_FNS_PY)
|
|
40
|
+
config = vf.TaskConfig(
|
|
41
|
+
stops={"single_turn": vf.DecoratedFunctionConfig(fn=f"{fns}:two_turns")},
|
|
42
|
+
metrics={"reply_length": vf.DecoratedFunctionConfig(fn=f"{fns}:reply_length")},
|
|
43
|
+
rewards={
|
|
44
|
+
"exact_match": vf.RewardFunctionConfig(fn=f"{fns}:exact_match", weight=0.5),
|
|
45
|
+
"lcs": vf.RewardFunctionConfig(fn=f"{fns}:marker", weight=2.0),
|
|
46
|
+
},
|
|
47
|
+
)
|
|
48
|
+
task = HookTask(HookData(idx=0, prompt="abc", answer="cba"), config)
|
|
49
|
+
trace = vf.Trace(
|
|
50
|
+
agent=vf.AgentInfo(config=vf.AgentConfig()),
|
|
51
|
+
task=vf.TraceTask(type="HookTask", data=task.data),
|
|
52
|
+
nodes=[
|
|
53
|
+
MessageNode(parent=None, message=UserMessage(content="abc"), sampled=False),
|
|
54
|
+
MessageNode(
|
|
55
|
+
parent=0, message=AssistantMessage(content="cba"), sampled=True
|
|
56
|
+
),
|
|
57
|
+
],
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
# the plugged `single_turn` replaces the decorated one: no stop after one turn
|
|
61
|
+
(stop,) = task.hooks("stop")
|
|
62
|
+
assert stop.__name__ == "single_turn"
|
|
63
|
+
assert not await stop(trace)
|
|
64
|
+
|
|
65
|
+
await task.score(trace)
|
|
66
|
+
# `lcs` scored by the plugged marker (config wins the name clash), config weight
|
|
67
|
+
assert trace.rewards["lcs"].score == 0.125
|
|
68
|
+
assert trace.rewards["lcs"].weight == 2.0
|
|
69
|
+
assert trace.rewards["exact_match"].score == 1.0
|
|
70
|
+
assert trace.rewards["exact_match"].weight == 0.5
|
|
71
|
+
assert trace.metrics["reply_length"] == 3.0
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def test_compare_stdout_results_accepts_token_equal_text() -> None:
|
|
75
|
+
assert vf.compare_stdout_results("hello world\n", "hello world\n")
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def test_compare_stdout_results_keeps_numeric_tolerance() -> None:
|
|
79
|
+
assert vf.compare_stdout_results("1.0001 2.0\n", "1.0002 2.0009\n")
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def test_parse_pytest_outcomes_strips_xfail_xpass_reasons() -> None:
|
|
83
|
+
output = (
|
|
84
|
+
"XFAIL tests/test_mod.py::test_xfail - known bug - still tracked\n"
|
|
85
|
+
"XPASS tests/test_mod.py::test_xpass - always xfail - unexpectedly passed\n"
|
|
86
|
+
"FAILED tests/test_mod.py::test_param[a - b] - assert left - right\n"
|
|
87
|
+
"PASSED tests/test_mod.py::test_ok"
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
assert vf.parse_pytest_outcomes(output) == {
|
|
91
|
+
"tests/test_mod.py::test_xfail": "XFAIL",
|
|
92
|
+
"tests/test_mod.py::test_xpass": "XPASS",
|
|
93
|
+
"tests/test_mod.py::test_param[a - b]": "FAILED",
|
|
94
|
+
"tests/test_mod.py::test_ok": "PASSED",
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def test_parse_judge_choice_uses_first_choice_after_verdict_marker() -> None:
|
|
99
|
+
response = "Final Judgment: B because it is a better answer"
|
|
100
|
+
|
|
101
|
+
assert vf.parse_judge_choice(response, choices=("A", "B")) == "B"
|
|
@@ -26,7 +26,12 @@ from verifiers.v1.configs.serve import (
|
|
|
26
26
|
StaticPoolConfig,
|
|
27
27
|
pool_serve_kwargs,
|
|
28
28
|
)
|
|
29
|
-
from verifiers.v1.configs.task import
|
|
29
|
+
from verifiers.v1.configs.task import (
|
|
30
|
+
DecoratedFunctionConfig,
|
|
31
|
+
FunctionConfig,
|
|
32
|
+
RewardFunctionConfig,
|
|
33
|
+
TaskConfig,
|
|
34
|
+
)
|
|
30
35
|
from verifiers.v1.configs.taskset import TasksetConfig
|
|
31
36
|
from verifiers.v1.env import Env
|
|
32
37
|
from verifiers.v1.envs.single_agent import SingleAgentEnv, SingleAgentEnvConfig
|
|
@@ -240,6 +245,9 @@ __all__ = [ # noqa: RUF022 - grouped by public API area
|
|
|
240
245
|
"Taskset",
|
|
241
246
|
"TaskConfig",
|
|
242
247
|
"TasksetConfig",
|
|
248
|
+
"FunctionConfig",
|
|
249
|
+
"DecoratedFunctionConfig",
|
|
250
|
+
"RewardFunctionConfig",
|
|
243
251
|
"BaseConfig",
|
|
244
252
|
"Harness",
|
|
245
253
|
"HarnessSession",
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""Run-time task knobs (`--env.taskset.task.*`), read by `Task` behavior."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pydantic import Field, FiniteFloat, model_validator
|
|
6
|
+
from pydantic_config import BaseConfig
|
|
7
|
+
|
|
8
|
+
from verifiers.v1.configs.judge import Judges, check_judges, resolve_judges
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class FunctionConfig(BaseConfig):
|
|
12
|
+
"""A function plugged in by import path."""
|
|
13
|
+
|
|
14
|
+
fn: str
|
|
15
|
+
"""Import path to the function: `pkg.module.function`, `pkg.module:function`,
|
|
16
|
+
or `path/to/file.py:function`."""
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class DecoratedFunctionConfig(FunctionConfig):
|
|
20
|
+
"""A plugged function standing in for a decorated task method."""
|
|
21
|
+
|
|
22
|
+
priority: int = 0
|
|
23
|
+
"""Execution order, like the decorator's — higher runs first, ties break by name."""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class RewardFunctionConfig(DecoratedFunctionConfig):
|
|
27
|
+
"""A plugged function standing in for a `@vf.reward` task method."""
|
|
28
|
+
|
|
29
|
+
weight: FiniteFloat = 1.0
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class TaskConfig(BaseConfig):
|
|
33
|
+
"""Run-time knobs read by `Task` behavior.
|
|
34
|
+
|
|
35
|
+
Subclass for server placement, judge, or scoring settings. Every field needs a
|
|
36
|
+
default because constructing a task without a config builds the declared config type.
|
|
37
|
+
Load-time dataset settings belong on `TasksetConfig` instead.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
judges: Judges = Field(default_factory=list)
|
|
41
|
+
"""Judge plugins run after task rewards, set through `--env.taskset.task.judges`."""
|
|
42
|
+
|
|
43
|
+
stops: dict[str, DecoratedFunctionConfig] = Field(default_factory=dict)
|
|
44
|
+
"""Stop conditions `(trace) -> bool` plugged by name, merged with the task's
|
|
45
|
+
`@vf.stop` methods (a plugged function replaces a decorated one with the same
|
|
46
|
+
name)."""
|
|
47
|
+
metrics: dict[str, DecoratedFunctionConfig] = Field(default_factory=dict)
|
|
48
|
+
"""Metrics `(task, trace, runtime) -> float` plugged by name, merged with the
|
|
49
|
+
task's `@vf.metric` methods."""
|
|
50
|
+
rewards: dict[str, RewardFunctionConfig] = Field(default_factory=dict)
|
|
51
|
+
"""Weighted rewards `(task, trace, runtime) -> float` plugged by name, merged with
|
|
52
|
+
the task's `@vf.reward` methods."""
|
|
53
|
+
|
|
54
|
+
@model_validator(mode="before")
|
|
55
|
+
@classmethod
|
|
56
|
+
def _resolve_judges(cls, data):
|
|
57
|
+
if isinstance(data, dict) and data.get("judges"):
|
|
58
|
+
data["judges"] = resolve_judges(data["judges"])
|
|
59
|
+
return data
|
|
60
|
+
|
|
61
|
+
@model_validator(mode="after")
|
|
62
|
+
def _check_judges(self) -> TaskConfig:
|
|
63
|
+
check_judges(self.judges)
|
|
64
|
+
return self
|
|
@@ -117,8 +117,7 @@ class OpenClawHarness(Harness[OpenClawHarnessConfig]):
|
|
|
117
117
|
data: TaskData,
|
|
118
118
|
) -> ProgramResult:
|
|
119
119
|
system_prompt, prompt = self.resolve_prompt(data)
|
|
120
|
-
|
|
121
|
-
reasoning = ctx.sampling.reasoning_effort not in (None, "none")
|
|
120
|
+
provider, _ = ctx.model.split("/", 1)
|
|
122
121
|
directory = OPENCLAW_DIR.format(version=self.config.version)
|
|
123
122
|
state_dir = f".vf-openclaw/{trace.id}"
|
|
124
123
|
config_path = f"{state_dir}/openclaw.json"
|
|
@@ -130,7 +129,7 @@ class OpenClawHarness(Harness[OpenClawHarnessConfig]):
|
|
|
130
129
|
"workspace": ".",
|
|
131
130
|
"skipBootstrap": True,
|
|
132
131
|
"sandbox": {"mode": "off"},
|
|
133
|
-
"model": {"primary":
|
|
132
|
+
"model": {"primary": ctx.model},
|
|
134
133
|
}
|
|
135
134
|
},
|
|
136
135
|
"tools": {
|
|
@@ -140,21 +139,10 @@ class OpenClawHarness(Harness[OpenClawHarnessConfig]):
|
|
|
140
139
|
"deny": self.config.disabled_tools or [],
|
|
141
140
|
},
|
|
142
141
|
"models": {
|
|
143
|
-
"mode": "replace",
|
|
144
142
|
"providers": {
|
|
145
|
-
|
|
143
|
+
provider: {
|
|
146
144
|
"baseUrl": endpoint,
|
|
147
145
|
"apiKey": "${OPENCLAW_INTERCEPT_KEY}",
|
|
148
|
-
"api": "openai-responses",
|
|
149
|
-
"authHeader": True,
|
|
150
|
-
"models": [
|
|
151
|
-
{
|
|
152
|
-
"id": ctx.model,
|
|
153
|
-
"name": ctx.model,
|
|
154
|
-
"reasoning": reasoning,
|
|
155
|
-
"input": ["text", "image"],
|
|
156
|
-
}
|
|
157
|
-
],
|
|
158
146
|
}
|
|
159
147
|
},
|
|
160
148
|
},
|
|
@@ -17,7 +17,6 @@ from verifiers.v1.trace import Trace
|
|
|
17
17
|
|
|
18
18
|
logger = logging.getLogger(__name__)
|
|
19
19
|
|
|
20
|
-
PROVIDER = "intercept"
|
|
21
20
|
KEY_VAR = "PI_INTERCEPT_KEY"
|
|
22
21
|
HOME_VAR = "VF_PI_ORIGINAL_HOME"
|
|
23
22
|
|
|
@@ -143,23 +142,12 @@ class PiHarness(Harness[PiHarnessConfig]):
|
|
|
143
142
|
) -> ProgramResult:
|
|
144
143
|
system_prompt, prompt = self.resolve_prompt(data)
|
|
145
144
|
agent_dir = f".vf-pi-agent-{trace.id}"
|
|
146
|
-
|
|
147
|
-
None,
|
|
148
|
-
"none",
|
|
149
|
-
) or ctx.model.rsplit("/", 1)[-1].startswith(("gpt-5", "o1", "o3", "o4"))
|
|
145
|
+
provider, model = ctx.model.split("/", 1)
|
|
150
146
|
models = {
|
|
151
147
|
"providers": {
|
|
152
|
-
|
|
148
|
+
provider: {
|
|
153
149
|
"baseUrl": endpoint,
|
|
154
|
-
"api": "openai-completions",
|
|
155
150
|
"apiKey": f"${KEY_VAR}",
|
|
156
|
-
"models": [
|
|
157
|
-
{
|
|
158
|
-
"id": ctx.model,
|
|
159
|
-
"reasoning": reasoning,
|
|
160
|
-
"input": ["text", "image"],
|
|
161
|
-
}
|
|
162
|
-
],
|
|
163
151
|
}
|
|
164
152
|
}
|
|
165
153
|
}
|
|
@@ -202,9 +190,9 @@ class PiHarness(Harness[PiHarnessConfig]):
|
|
|
202
190
|
PI_BIN,
|
|
203
191
|
"--no-approve",
|
|
204
192
|
"--provider",
|
|
205
|
-
|
|
193
|
+
provider,
|
|
206
194
|
"--model",
|
|
207
|
-
|
|
195
|
+
model,
|
|
208
196
|
*mcp_args,
|
|
209
197
|
*skill_args,
|
|
210
198
|
]
|
|
@@ -30,7 +30,7 @@ from verifiers.v1.state import state_cls
|
|
|
30
30
|
from verifiers.v1.task import Task
|
|
31
31
|
from verifiers.v1.trace import AgentInfo, Trace, TraceTask
|
|
32
32
|
from verifiers.v1.types import Messages
|
|
33
|
-
from verifiers.v1.utils.decorators import
|
|
33
|
+
from verifiers.v1.utils.decorators import invoke
|
|
34
34
|
|
|
35
35
|
logger = logging.getLogger(__name__)
|
|
36
36
|
|
|
@@ -91,9 +91,7 @@ class Rollout:
|
|
|
91
91
|
)
|
|
92
92
|
if on_trace is not None:
|
|
93
93
|
on_trace(self.trace)
|
|
94
|
-
self._session = RolloutSession(
|
|
95
|
-
ctx, self.trace, discover_decorated(task, "stop"), limits
|
|
96
|
-
)
|
|
94
|
+
self._session = RolloutSession(ctx, self.trace, task.hooks("stop"), limits)
|
|
97
95
|
self._stack = AsyncExitStack()
|
|
98
96
|
self._failed = False
|
|
99
97
|
self._failure: Exception | None = None
|
|
@@ -12,8 +12,8 @@ from __future__ import annotations
|
|
|
12
12
|
import copy
|
|
13
13
|
import inspect
|
|
14
14
|
import logging
|
|
15
|
-
from collections.abc import Mapping
|
|
16
|
-
from typing import TYPE_CHECKING, ClassVar, Generic, Self
|
|
15
|
+
from collections.abc import Callable, Mapping
|
|
16
|
+
from typing import TYPE_CHECKING, Any, ClassVar, Generic, Self
|
|
17
17
|
|
|
18
18
|
from pydantic import BaseModel, ConfigDict, Field
|
|
19
19
|
from typing_extensions import TypeVar
|
|
@@ -164,8 +164,8 @@ class Task(Generic[DataT, StateT, ConfigT]):
|
|
|
164
164
|
available["runtime"] = runtime
|
|
165
165
|
|
|
166
166
|
async with boundary(TaskError, f"task {type(self).__name__} scoring"):
|
|
167
|
-
metrics =
|
|
168
|
-
rewards =
|
|
167
|
+
metrics = self.hooks("metric")
|
|
168
|
+
rewards = self.hooks("reward")
|
|
169
169
|
if runtime is None:
|
|
170
170
|
skipped = [
|
|
171
171
|
fn.__name__ for fn in (*metrics, *rewards) if requires_runtime(fn)
|
|
@@ -231,6 +231,25 @@ class Task(Generic[DataT, StateT, ConfigT]):
|
|
|
231
231
|
|
|
232
232
|
return [load_judge(config) for config in self.config.judges]
|
|
233
233
|
|
|
234
|
+
def hooks(self, attr: str) -> list[Callable[..., Any]]:
|
|
235
|
+
"""The task's `@vf.<attr>` methods merged with the config-plugged functions —
|
|
236
|
+
a plugged function replaces a decorated method with the same name — sorted by
|
|
237
|
+
descending priority then name."""
|
|
238
|
+
from verifiers.v1.utils.loaders import load_plugged_fn
|
|
239
|
+
|
|
240
|
+
plugged = {
|
|
241
|
+
"stop": self.config.stops,
|
|
242
|
+
"metric": self.config.metrics,
|
|
243
|
+
"reward": self.config.rewards,
|
|
244
|
+
}[attr]
|
|
245
|
+
merged = {fn.__name__: fn for fn in discover_decorated(self, attr)}
|
|
246
|
+
merged |= {
|
|
247
|
+
name: load_plugged_fn(name, spec, attr) for name, spec in plugged.items()
|
|
248
|
+
}
|
|
249
|
+
fns = list(merged.values())
|
|
250
|
+
fns.sort(key=lambda fn: (-getattr(fn, f"{attr}_priority", 0), fn.__name__))
|
|
251
|
+
return fns
|
|
252
|
+
|
|
234
253
|
@classmethod
|
|
235
254
|
def toolsets(cls, config: ConfigT) -> list[Toolset]:
|
|
236
255
|
"""Tool servers launched per rollout, each constructed with its config off
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
"""Resolve taskset, harness, judge, and environment plugins."""
|
|
1
|
+
"""Resolve taskset, harness, judge, hook, and environment plugins."""
|
|
2
2
|
|
|
3
3
|
import contextvars
|
|
4
|
+
import functools
|
|
4
5
|
import importlib
|
|
5
6
|
import importlib.util
|
|
6
7
|
import pkgutil
|
|
7
8
|
from collections.abc import Callable
|
|
9
|
+
from pathlib import Path
|
|
8
10
|
from types import ModuleType
|
|
11
|
+
from typing import Any
|
|
9
12
|
|
|
10
13
|
from pydantic import ValidationError
|
|
11
14
|
from pydantic_config import BaseConfig
|
|
@@ -13,6 +16,7 @@ from pydantic_config import BaseConfig
|
|
|
13
16
|
from verifiers.v1.configs.env import EnvConfig
|
|
14
17
|
from verifiers.v1.configs.harness import HarnessConfig
|
|
15
18
|
from verifiers.v1.configs.judge import JudgeConfig
|
|
19
|
+
from verifiers.v1.configs.task import DecoratedFunctionConfig, RewardFunctionConfig
|
|
16
20
|
from verifiers.v1.configs.taskset import TasksetConfig
|
|
17
21
|
from verifiers.v1.env import Env
|
|
18
22
|
from verifiers.v1.envs.single_agent import SingleAgentEnv
|
|
@@ -205,6 +209,59 @@ def load_judge(config: JudgeConfig) -> Judge:
|
|
|
205
209
|
return judge_class(config.id)(config)
|
|
206
210
|
|
|
207
211
|
|
|
212
|
+
@functools.cache
|
|
213
|
+
def file_module(path: str) -> ModuleType:
|
|
214
|
+
"""Import a standalone `.py` file, cached by path so repeated plugged-fn loads
|
|
215
|
+
share one module object."""
|
|
216
|
+
resolved = Path(path).resolve()
|
|
217
|
+
spec = importlib.util.spec_from_file_location(resolved.stem, resolved)
|
|
218
|
+
if spec is None or spec.loader is None:
|
|
219
|
+
raise ImportError(f"cannot import module from {path!r}")
|
|
220
|
+
module = importlib.util.module_from_spec(spec)
|
|
221
|
+
spec.loader.exec_module(module)
|
|
222
|
+
return module
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
def plugged_fn(path: str) -> Callable[..., Any]:
|
|
226
|
+
"""Resolve a plugged function's import path: `pkg.module.function`,
|
|
227
|
+
`pkg.module:function`, or `path/to/file.py:function`."""
|
|
228
|
+
module_path, _, attr = path.rpartition(":")
|
|
229
|
+
if not module_path:
|
|
230
|
+
module_path, _, attr = path.rpartition(".")
|
|
231
|
+
if not module_path or not attr:
|
|
232
|
+
raise ValueError(
|
|
233
|
+
f"fn {path!r} must be `pkg.module.function`, `pkg.module:function`, "
|
|
234
|
+
"or `path/to/file.py:function`"
|
|
235
|
+
)
|
|
236
|
+
if module_path.endswith(".py"):
|
|
237
|
+
module = file_module(module_path)
|
|
238
|
+
else:
|
|
239
|
+
module = importlib.import_module(module_path)
|
|
240
|
+
fn = getattr(module, attr, None)
|
|
241
|
+
if not callable(fn):
|
|
242
|
+
raise TypeError(f"fn {path!r} is not a function (got {fn!r})")
|
|
243
|
+
return fn
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def load_plugged_fn(
|
|
247
|
+
name: str, config: DecoratedFunctionConfig, attr: str
|
|
248
|
+
) -> Callable[..., Any]:
|
|
249
|
+
"""Build a task hook from a config entry: the imported async function wrapped
|
|
250
|
+
under the plugged `name`, tagged like its `@vf.<attr>` equivalent."""
|
|
251
|
+
fn = plugged_fn(config.fn)
|
|
252
|
+
|
|
253
|
+
@functools.wraps(fn)
|
|
254
|
+
def plugged(*args: Any, **kwargs: Any) -> Any:
|
|
255
|
+
return fn(*args, **kwargs)
|
|
256
|
+
|
|
257
|
+
plugged.__name__ = name
|
|
258
|
+
setattr(plugged, attr, True)
|
|
259
|
+
setattr(plugged, f"{attr}_priority", config.priority)
|
|
260
|
+
if isinstance(config, RewardFunctionConfig):
|
|
261
|
+
plugged._vf_weight = config.weight
|
|
262
|
+
return plugged
|
|
263
|
+
|
|
264
|
+
|
|
208
265
|
def taskset_config_type(taskset_id: str) -> type[TasksetConfig]:
|
|
209
266
|
"""Resolve the taskset's config specialization through its MRO."""
|
|
210
267
|
return (
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import verifiers.v1 as vf
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
def test_compare_stdout_results_accepts_token_equal_text() -> None:
|
|
5
|
-
assert vf.compare_stdout_results("hello world\n", "hello world\n")
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def test_compare_stdout_results_keeps_numeric_tolerance() -> None:
|
|
9
|
-
assert vf.compare_stdout_results("1.0001 2.0\n", "1.0002 2.0009\n")
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def test_parse_pytest_outcomes_strips_xfail_xpass_reasons() -> None:
|
|
13
|
-
output = (
|
|
14
|
-
"XFAIL tests/test_mod.py::test_xfail - known bug - still tracked\n"
|
|
15
|
-
"XPASS tests/test_mod.py::test_xpass - always xfail - unexpectedly passed\n"
|
|
16
|
-
"FAILED tests/test_mod.py::test_param[a - b] - assert left - right\n"
|
|
17
|
-
"PASSED tests/test_mod.py::test_ok"
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
assert vf.parse_pytest_outcomes(output) == {
|
|
21
|
-
"tests/test_mod.py::test_xfail": "XFAIL",
|
|
22
|
-
"tests/test_mod.py::test_xpass": "XPASS",
|
|
23
|
-
"tests/test_mod.py::test_param[a - b]": "FAILED",
|
|
24
|
-
"tests/test_mod.py::test_ok": "PASSED",
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def test_parse_judge_choice_uses_first_choice_after_verdict_marker() -> None:
|
|
29
|
-
response = "Final Judgment: B because it is a better answer"
|
|
30
|
-
|
|
31
|
-
assert vf.parse_judge_choice(response, choices=("A", "B")) == "B"
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"""Run-time task knobs (`--env.taskset.task.*`), read by `Task` behavior."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from pydantic import Field, model_validator
|
|
6
|
-
from pydantic_config import BaseConfig
|
|
7
|
-
|
|
8
|
-
from verifiers.v1.configs.judge import Judges, check_judges, resolve_judges
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class TaskConfig(BaseConfig):
|
|
12
|
-
"""Run-time knobs read by `Task` behavior.
|
|
13
|
-
|
|
14
|
-
Subclass for server placement, judge, or scoring settings. Every field needs a
|
|
15
|
-
default because constructing a task without a config builds the declared config type.
|
|
16
|
-
Load-time dataset settings belong on `TasksetConfig` instead.
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
judges: Judges = Field(default_factory=list)
|
|
20
|
-
"""Judge plugins run after task rewards, set through `--env.taskset.task.judges`."""
|
|
21
|
-
|
|
22
|
-
@model_validator(mode="before")
|
|
23
|
-
@classmethod
|
|
24
|
-
def _resolve_judges(cls, data):
|
|
25
|
-
if isinstance(data, dict) and data.get("judges"):
|
|
26
|
-
data["judges"] = resolve_judges(data["judges"])
|
|
27
|
-
return data
|
|
28
|
-
|
|
29
|
-
@model_validator(mode="after")
|
|
30
|
-
def _check_judges(self) -> TaskConfig:
|
|
31
|
-
check_judges(self.judges)
|
|
32
|
-
return self
|
|
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.3.1.dev9 → verifiers-0.3.1.dev11}/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
|