verifiers 0.2.2.dev56__tar.gz → 0.2.2.dev58__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.dev56 → verifiers-0.2.2.dev58}/PKG-INFO +1 -1
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/fixtures/counter_tool_v1.py +3 -1
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/fixtures/echo_acp_resume_v1.py +3 -1
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/fixtures/echo_tool_v1.py +11 -8
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/fixtures/tool_response_image_v1.py +17 -3
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/test_e2e.py +1 -1
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/agent.py +5 -2
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/init.py +7 -2
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/env.py +5 -12
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/mcp/launch.py +2 -2
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/rollout.py +3 -3
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/task.py +13 -39
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/taskset.py +13 -17
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/utils/compile.py +10 -9
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/.gitignore +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/LICENSE +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/README.md +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/pyproject.toml +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/conftest.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_browser_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_build_script.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_client_config.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_composable_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_env_group.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_env_server.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_environment.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_environment_extra.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_error_chain.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_eval_display.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_eval_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_gym_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_imports.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_init_script.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_install_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_interception_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_logging.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_math_rubric.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_message_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_openenv_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_parser.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_path_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_renderer_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_rubric.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_rubric_group.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_save_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_setup_script.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_think_parser.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_tool_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_tool_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_types.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/test_xml_parser.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/conftest.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/fixtures/duet_v1.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/test_configs.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/test_envs.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/test_graph.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/test_judges.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/tests/v1/test_trace.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/cli/tui.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/clients/client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/clients/renderer_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/decorators.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/environment.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/errors.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/gepa/config.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/gepa/display.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/scripts/build.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/scripts/init.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/scripts/install.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/serve/types.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/types.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/acp/_runner.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/artifacts.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/serve.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/clients/config.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/cli/init.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/cli/serve.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/legacy.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/decorators.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/episode.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/errors.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/graph.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/bash/program.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/null/program.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/pool/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/pool/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/judge.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/loaders.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/push.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/retries.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/scoring.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/session.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/state.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/trace.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/types.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/verifiers/v1/utils/sampling.py +0 -0
- {verifiers-0.2.2.dev56 → verifiers-0.2.2.dev58}/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.dev58
|
|
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
|
|
@@ -24,7 +24,9 @@ class CounterTaskConfig(vf.TaskConfig):
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class CounterTask(vf.Task[vf.TaskData, CounterState, CounterTaskConfig]):
|
|
27
|
-
|
|
27
|
+
@classmethod
|
|
28
|
+
def toolsets(cls, config: CounterTaskConfig) -> list[vf.Toolset]:
|
|
29
|
+
return [CounterToolset(config.tools)]
|
|
28
30
|
|
|
29
31
|
@vf.reward(weight=1.0)
|
|
30
32
|
async def counted(self, trace: vf.Trace) -> float:
|
|
@@ -28,7 +28,9 @@ class ACPResumeConfig(vf.TasksetConfig):
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class ACPResumeTask(vf.Task[vf.TaskData, vf.State, ACPResumeTaskConfig]):
|
|
31
|
-
|
|
31
|
+
@classmethod
|
|
32
|
+
def toolsets(cls, config: ACPResumeTaskConfig) -> list[vf.Toolset]:
|
|
33
|
+
return [ResumeToolset(config.tools)]
|
|
32
34
|
|
|
33
35
|
@vf.reward(weight=1.0)
|
|
34
36
|
async def resumed(self, trace: vf.Trace) -> float:
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"""echo (v1, MCP tool): retrieve a stamped echo from a `vf.Toolset`, then report it.
|
|
2
2
|
|
|
3
|
-
The v1 tool fixture for the e2e matrix. The task
|
|
4
|
-
with one `@vf.tool` method whose placement is
|
|
5
|
-
`--taskset.task.tools.runtime.type`):
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
The v1 tool fixture for the e2e matrix. The task constructs an `EchoToolset`
|
|
4
|
+
(`vf.Toolset`) in `Task.toolsets`, with one `@vf.tool` method whose placement is
|
|
5
|
+
CLI-tunable (`--taskset.task.tools.colocated`, `--taskset.task.tools.runtime.type`):
|
|
6
|
+
it runs colocated in the harness's runtime or in its own runtime, and the harness
|
|
7
|
+
must reach it wherever it lives. The tool stamps its output with a token the prompt
|
|
8
|
+
never reveals, so the reward is 1.0 only if the model actually called the tool —
|
|
9
|
+
trivial when the infra works, impossible when it doesn't. The tool is task-agnostic,
|
|
10
|
+
so it would also serve taskset-scoped (`Taskset.toolsets`).
|
|
10
11
|
"""
|
|
11
12
|
|
|
12
13
|
import verifiers.v1 as vf
|
|
@@ -29,7 +30,9 @@ class EchoToolTaskConfig(vf.TaskConfig):
|
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
class EchoToolTask(vf.Task[vf.TaskData, vf.State, EchoToolTaskConfig]):
|
|
32
|
-
|
|
33
|
+
@classmethod
|
|
34
|
+
def toolsets(cls, config: EchoToolTaskConfig) -> list[vf.Toolset]:
|
|
35
|
+
return [EchoToolset(config.tools)]
|
|
33
36
|
|
|
34
37
|
@vf.reward(weight=1.0)
|
|
35
38
|
async def echoed(self, trace: vf.Trace) -> float:
|
|
@@ -26,8 +26,16 @@ class VisionToolset(vf.Toolset[vf.ToolsetConfig]):
|
|
|
26
26
|
]
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
class
|
|
30
|
-
tools = (
|
|
29
|
+
class ToolResponseImageTaskConfig(vf.TaskConfig):
|
|
30
|
+
tools: vf.ToolsetConfig = vf.ToolsetConfig()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class ToolResponseImageTask(
|
|
34
|
+
vf.Task[vf.TaskData, vf.State, ToolResponseImageTaskConfig]
|
|
35
|
+
):
|
|
36
|
+
@classmethod
|
|
37
|
+
def toolsets(cls, config: ToolResponseImageTaskConfig) -> list[vf.Toolset]:
|
|
38
|
+
return [VisionToolset(config.tools)]
|
|
31
39
|
|
|
32
40
|
@vf.reward(weight=1.0)
|
|
33
41
|
async def preserved_image_tool_result(self, trace: vf.Trace) -> float:
|
|
@@ -39,7 +47,13 @@ class ToolResponseImageTask(vf.Task):
|
|
|
39
47
|
return 0.0
|
|
40
48
|
|
|
41
49
|
|
|
42
|
-
class
|
|
50
|
+
class ToolResponseImageConfig(vf.TasksetConfig):
|
|
51
|
+
task: ToolResponseImageTaskConfig = ToolResponseImageTaskConfig()
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class ToolResponseImageTaskset(
|
|
55
|
+
vf.Taskset[ToolResponseImageTask, ToolResponseImageConfig]
|
|
56
|
+
):
|
|
43
57
|
def load(self) -> list[ToolResponseImageTask]:
|
|
44
58
|
return [
|
|
45
59
|
ToolResponseImageTask(
|
|
@@ -234,7 +234,7 @@ async def test_tool(run_v1, harness_runtime, tool_runtime, tmp_path):
|
|
|
234
234
|
the harness's runtime, or its own runtime) x the harness `runtime`. The tool stamps
|
|
235
235
|
its output with a token the prompt never reveals, so reward 1.0 proves the tool was
|
|
236
236
|
reachable from wherever the harness runs and actually ran. Eval-wide SHARED servers
|
|
237
|
-
are a different scope (`Taskset.
|
|
237
|
+
are a different scope (`Taskset.toolsets`) with their own env-server-path coverage:
|
|
238
238
|
`test_shared_tool_isolation`."""
|
|
239
239
|
(trace,) = await run_v1(
|
|
240
240
|
"echo-tool-v1",
|
|
@@ -335,7 +335,7 @@ class Agent:
|
|
|
335
335
|
if self._server is None:
|
|
336
336
|
return None
|
|
337
337
|
if self._server.tunnel is not None or (
|
|
338
|
-
run_is_local and not shared_tools and not
|
|
338
|
+
run_is_local and not shared_tools and not task.toolsets(task.config)
|
|
339
339
|
):
|
|
340
340
|
return self._server
|
|
341
341
|
return None
|
|
@@ -517,7 +517,10 @@ class Agent:
|
|
|
517
517
|
)
|
|
518
518
|
run_is_local = runtime_is_local(runtime_config)
|
|
519
519
|
validate_pairing(
|
|
520
|
-
self.harness,
|
|
520
|
+
self.harness,
|
|
521
|
+
type(task),
|
|
522
|
+
runtime_config,
|
|
523
|
+
tools=[*task.toolsets(task.config), *shared_tools.values()],
|
|
521
524
|
)
|
|
522
525
|
# Timeout precedence: agent-level wins, else the task's, else no limit.
|
|
523
526
|
agent_timeout = (
|
|
@@ -71,7 +71,12 @@ def _taskset_py(pkg: str, prefix: str, *, add_tool: bool) -> str:
|
|
|
71
71
|
if add_tool:
|
|
72
72
|
local_imports.append(f"from {pkg}.servers.tool import {prefix}Toolset")
|
|
73
73
|
task_config_fields += "\n tools: vf.ToolsetConfig = vf.ToolsetConfig()"
|
|
74
|
-
task_decls +=
|
|
74
|
+
task_decls += (
|
|
75
|
+
"\n\n @classmethod"
|
|
76
|
+
f"\n def toolsets(cls, config: {prefix}TaskConfig) -> list[vf.Toolset]:"
|
|
77
|
+
f"\n return [{prefix}Toolset(config.tools)]"
|
|
78
|
+
"\n"
|
|
79
|
+
)
|
|
75
80
|
if local_imports:
|
|
76
81
|
imports += "\n\n" + "\n".join(local_imports)
|
|
77
82
|
methods_block = ""
|
|
@@ -178,7 +183,7 @@ def _readme(dash: str, pkg: str, *, add_tool: bool, add_harness: bool) -> str:
|
|
|
178
183
|
]
|
|
179
184
|
if add_tool:
|
|
180
185
|
layout.append(
|
|
181
|
-
f"- `{pkg}/servers/tool.py` — a `vf.Toolset` tool server,
|
|
186
|
+
f"- `{pkg}/servers/tool.py` — a `vf.Toolset` tool server, constructed in `Task.toolsets`."
|
|
182
187
|
)
|
|
183
188
|
if add_harness:
|
|
184
189
|
layout.append(
|
|
@@ -31,7 +31,7 @@ from verifiers.v1.interception import (
|
|
|
31
31
|
from verifiers.v1.mcp import SharedToolServer, serve_shared
|
|
32
32
|
from verifiers.v1.retries import run_episode_with_retry
|
|
33
33
|
from verifiers.v1.runtimes import SubprocessConfig, runtime_is_local
|
|
34
|
-
from verifiers.v1.task import Task
|
|
34
|
+
from verifiers.v1.task import Task
|
|
35
35
|
from verifiers.v1.trace import Error, Trace
|
|
36
36
|
from verifiers.v1.utils.generic import concrete_type
|
|
37
37
|
from verifiers.v1.utils.memory import trim_memory_periodically
|
|
@@ -378,24 +378,17 @@ class Env(ABC, Generic[ConfigT]):
|
|
|
378
378
|
|
|
379
379
|
def _requires_tunnel(self, shared: dict[str, SharedToolServer]) -> bool:
|
|
380
380
|
"""`requires_tunnel` over the consumers known before any rollout: role
|
|
381
|
-
runtimes, live `shared` servers, and the task class's tool servers
|
|
382
|
-
a
|
|
381
|
+
runtimes, live `shared` servers, and the task class's tool servers
|
|
382
|
+
(`Task.toolsets` is a classmethod, so no task instance is needed)."""
|
|
383
383
|
task_cls = type(self.taskset).task_type()
|
|
384
|
-
server_classes = [*task_cls.tools]
|
|
385
|
-
if server_classes and task_cls.server_config is not Task.server_config:
|
|
386
|
-
return True
|
|
387
|
-
sole = len({*task_cls.tools}) == 1
|
|
388
384
|
configs = [
|
|
389
|
-
|
|
390
|
-
task_cls.__name__, self.taskset.config.task, server_cls, sole=sole
|
|
391
|
-
)
|
|
392
|
-
for server_cls in server_classes
|
|
385
|
+
server.config for server in task_cls.toolsets(self.taskset.config.task)
|
|
393
386
|
]
|
|
394
387
|
return requires_tunnel(self._runs_local(), configs, shared.values())
|
|
395
388
|
|
|
396
389
|
@contextlib.asynccontextmanager
|
|
397
390
|
async def shared_tools(self):
|
|
398
|
-
servers = self.taskset.
|
|
391
|
+
servers = self.taskset.toolsets(self.taskset.config)
|
|
399
392
|
if not servers:
|
|
400
393
|
yield {}
|
|
401
394
|
return
|
|
@@ -343,7 +343,7 @@ async def serve_shared(toolsets: list[Toolset], harness_is_local: bool = True):
|
|
|
343
343
|
name = toolset.server_name
|
|
344
344
|
if name in servers:
|
|
345
345
|
raise ToolsetError(
|
|
346
|
-
f"duplicate shared tool server name '{name}' in Taskset.
|
|
346
|
+
f"duplicate shared tool server name '{name}' in Taskset.toolsets — "
|
|
347
347
|
f"give one a distinct TOOL_PREFIX"
|
|
348
348
|
)
|
|
349
349
|
if type(toolset).setup_task is not ServerBase.setup_task:
|
|
@@ -351,7 +351,7 @@ async def serve_shared(toolsets: list[Toolset], harness_is_local: bool = True):
|
|
|
351
351
|
"shared server %r overrides `setup_task`, but `setup_task` is NEVER "
|
|
352
352
|
"called for a taskset-scoped server (it's built once, task-agnostic) — "
|
|
353
353
|
"its per-task logic will not run. Move task-agnostic work into `setup`, "
|
|
354
|
-
"or
|
|
354
|
+
"or construct it in `Task.toolsets` to run it per-rollout.",
|
|
355
355
|
name,
|
|
356
356
|
)
|
|
357
357
|
if cfg.url: # already running remotely; nothing launched, nothing to bridge
|
|
@@ -258,7 +258,7 @@ class RolloutRun:
|
|
|
258
258
|
):
|
|
259
259
|
await self.harness.setup(runtime)
|
|
260
260
|
async with boundary(ToolsetError, "building tool servers"):
|
|
261
|
-
|
|
261
|
+
toolsets = self.task.toolsets(self.task.config)
|
|
262
262
|
# `base_url` is the interception server's reachable URL for this rollout.
|
|
263
263
|
# The harness reaches the model at `{base_url}/v1`; tool servers reach this
|
|
264
264
|
# rollout's `/state` + `/task` at `base_url` — it's universally reachable
|
|
@@ -268,7 +268,7 @@ class RolloutRun:
|
|
|
268
268
|
self._interception,
|
|
269
269
|
runtime,
|
|
270
270
|
self._session,
|
|
271
|
-
|
|
271
|
+
toolsets,
|
|
272
272
|
self._shared_tools,
|
|
273
273
|
)
|
|
274
274
|
)
|
|
@@ -276,7 +276,7 @@ class RolloutRun:
|
|
|
276
276
|
self._secret = secret
|
|
277
277
|
self._urls = await self._stack.enter_async_context(
|
|
278
278
|
serve_tools(
|
|
279
|
-
|
|
279
|
+
toolsets,
|
|
280
280
|
runtime,
|
|
281
281
|
shared=self._shared_tools,
|
|
282
282
|
state_secret=secret,
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
`TaskData` is the wire half: a frozen pydantic model carrying the data which
|
|
4
4
|
initializes a task instance. Rides on `trace.task.data` in `traces.jsonl`.
|
|
5
5
|
|
|
6
|
-
`Task` is the behavior half: runtime prep (`setup`/`finalize`), tool
|
|
7
|
-
(`
|
|
6
|
+
`Task` is the behavior half: runtime prep (`setup`/`finalize`), tool servers
|
|
7
|
+
(`toolsets`), and scoring (`@reward`/`@metric`) methods.
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
from __future__ import annotations
|
|
@@ -16,7 +16,6 @@ from collections.abc import Mapping
|
|
|
16
16
|
from typing import TYPE_CHECKING, ClassVar, Generic, Self
|
|
17
17
|
|
|
18
18
|
from pydantic import BaseModel, ConfigDict, Field
|
|
19
|
-
from pydantic_config import BaseConfig
|
|
20
19
|
from typing_extensions import TypeVar
|
|
21
20
|
|
|
22
21
|
from verifiers.v1.artifacts import Artifact
|
|
@@ -122,37 +121,10 @@ DataT = TypeVar("DataT", bound=TaskData)
|
|
|
122
121
|
ConfigT = TypeVar("ConfigT", bound=TaskConfig, default=TaskConfig)
|
|
123
122
|
|
|
124
123
|
|
|
125
|
-
def resolve_server_config(
|
|
126
|
-
owner: str, config: BaseConfig, server_cls: type, *, sole: bool = True
|
|
127
|
-
) -> BaseConfig:
|
|
128
|
-
"""The config a declared server class is built with, resolved off `config`'s
|
|
129
|
-
fields: exact type match, else — only for a `sole` declared server — the unique
|
|
130
|
-
isinstance match, else a default-constructed one. Two matching fields raise; the
|
|
131
|
-
`server_config` methods are the explicit-pairing override. The isinstance
|
|
132
|
-
fallback is `sole`-gated because with several servers a subclass-typed field
|
|
133
|
-
could silently pair with the wrong one."""
|
|
134
|
-
cfg_cls = server_cls._config_cls()
|
|
135
|
-
values = {name: getattr(config, name) for name in type(config).model_fields}
|
|
136
|
-
matched = [name for name, v in values.items() if type(v) is cfg_cls]
|
|
137
|
-
if not matched and sole:
|
|
138
|
-
matched = [name for name, v in values.items() if isinstance(v, cfg_cls)]
|
|
139
|
-
if len(matched) > 1:
|
|
140
|
-
raise TaskError(
|
|
141
|
-
f"{owner}: ambiguous config for {server_cls.__name__} — config fields "
|
|
142
|
-
f"{matched} all match {cfg_cls.__name__}; override `server_config` to pair "
|
|
143
|
-
f"them explicitly"
|
|
144
|
-
)
|
|
145
|
-
if matched:
|
|
146
|
-
return values[matched[0]]
|
|
147
|
-
return cfg_cls()
|
|
148
|
-
|
|
149
|
-
|
|
150
124
|
class Task(Generic[DataT, StateT, ConfigT]):
|
|
151
125
|
NEEDS_CONTAINER: ClassVar[bool] = False
|
|
152
126
|
"""Whether the task needs a containerized environment (isolated filesystem, ...)."""
|
|
153
127
|
|
|
154
|
-
tools: ClassVar[tuple[type[Toolset], ...]] = ()
|
|
155
|
-
|
|
156
128
|
def __init__(self, data: DataT, config: ConfigT | None = None) -> None:
|
|
157
129
|
self.data = data
|
|
158
130
|
self.config = config if config is not None else self.config_type()()
|
|
@@ -249,16 +221,18 @@ class Task(Generic[DataT, StateT, ConfigT]):
|
|
|
249
221
|
|
|
250
222
|
return [load_judge(config) for config in self.config.judges]
|
|
251
223
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
224
|
+
@classmethod
|
|
225
|
+
def toolsets(cls, config: ConfigT) -> list[Toolset]:
|
|
226
|
+
"""Tool servers launched per rollout, each constructed with its config off
|
|
227
|
+
`config` — override and wire explicitly:
|
|
228
|
+
|
|
229
|
+
@classmethod
|
|
230
|
+
def toolsets(cls, config: MyTaskConfig) -> list[vf.Toolset]:
|
|
231
|
+
return [SearchToolset(config.tools)]
|
|
259
232
|
|
|
260
|
-
|
|
261
|
-
|
|
233
|
+
A classmethod so consumers can size placement (tunnels) off the class
|
|
234
|
+
before any task instance exists."""
|
|
235
|
+
return []
|
|
262
236
|
|
|
263
237
|
|
|
264
238
|
TaskT = TypeVar("TaskT", bound=Task)
|
|
@@ -19,13 +19,12 @@ import itertools
|
|
|
19
19
|
import random
|
|
20
20
|
from abc import ABC, abstractmethod
|
|
21
21
|
from collections.abc import Callable, Iterable, Iterator
|
|
22
|
-
from typing import TYPE_CHECKING,
|
|
22
|
+
from typing import TYPE_CHECKING, Generic, Self
|
|
23
23
|
|
|
24
|
-
from pydantic_config import BaseConfig
|
|
25
24
|
from typing_extensions import TypeVar
|
|
26
25
|
|
|
27
26
|
from verifiers.v1.configs.taskset import TasksetConfig
|
|
28
|
-
from verifiers.v1.task import Task, TaskT
|
|
27
|
+
from verifiers.v1.task import Task, TaskT
|
|
29
28
|
from verifiers.v1.utils.generic import concrete_type
|
|
30
29
|
from verifiers.v1.utils.sampling import SEED
|
|
31
30
|
|
|
@@ -40,10 +39,6 @@ class Taskset(ABC, Generic[TaskT, TasksetConfigT]):
|
|
|
40
39
|
"""Whether the taskset is infinite (yields tasks forever). Class-declared;
|
|
41
40
|
a `head(n)` view shadows it per instance (bounded by construction)."""
|
|
42
41
|
|
|
43
|
-
tools: ClassVar[tuple[type[Toolset], ...]] = ()
|
|
44
|
-
"""Tool servers shared by all tasks in the taskset. The environment will
|
|
45
|
-
spawn a single, global instance, reused across tasks."""
|
|
46
|
-
|
|
47
42
|
def __init__(self, config: TasksetConfigT) -> None:
|
|
48
43
|
self.config = config
|
|
49
44
|
override = config.system_prompt
|
|
@@ -102,13 +97,14 @@ class Taskset(ABC, Generic[TaskT, TasksetConfigT]):
|
|
|
102
97
|
def task_type(cls) -> type[Task]:
|
|
103
98
|
return concrete_type(cls, Task, origin=Taskset) or Task
|
|
104
99
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
100
|
+
@classmethod
|
|
101
|
+
def toolsets(cls, config: TasksetConfigT) -> list[Toolset]:
|
|
102
|
+
"""Tool servers shared by all tasks in the taskset (one global instance
|
|
103
|
+
per server, reused across an environment worker's rollouts), each
|
|
104
|
+
constructed with its config off `config` — override and wire explicitly:
|
|
105
|
+
|
|
106
|
+
@classmethod
|
|
107
|
+
def toolsets(cls, config: MyConfig) -> list[vf.Toolset]:
|
|
108
|
+
return [SearchToolset(config.tools)]
|
|
109
|
+
"""
|
|
110
|
+
return []
|
|
@@ -77,18 +77,19 @@ def validate_pairing(
|
|
|
77
77
|
task_cls: type[Task],
|
|
78
78
|
runtime_config: RuntimeConfig,
|
|
79
79
|
*,
|
|
80
|
-
|
|
80
|
+
tools: Collection = (),
|
|
81
81
|
) -> None:
|
|
82
82
|
"""Reject an impossible harness/task/runtime combination before any work happens.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
if not harness.SUPPORTS_MCP and
|
|
83
|
+
A failure holds for every row the task class can carry. For `tools` only
|
|
84
|
+
emptiness matters — task-declared and shared servers alike mean MCP is in play.
|
|
85
|
+
(Hosting a user is interaction-scoped, not task-scoped — `Agent.interaction`
|
|
86
|
+
checks the harness can resume an exchange.)"""
|
|
87
|
+
if not harness.SUPPORTS_MCP and tools:
|
|
88
88
|
raise ValueError(
|
|
89
|
-
f"Harness {harness.config.id!r} does not support MCP tools, but "
|
|
90
|
-
f"{task_cls.__name__}
|
|
91
|
-
f"supports MCP (e.g. --env.agent.harness.id bash),
|
|
89
|
+
f"Harness {harness.config.id!r} does not support MCP tools, but the run "
|
|
90
|
+
f"serves some ({task_cls.__name__}'s or the taskset's shared servers). Run "
|
|
91
|
+
f"it with a harness that supports MCP (e.g. --env.agent.harness.id bash), "
|
|
92
|
+
f"or use tasks without tools."
|
|
92
93
|
)
|
|
93
94
|
if not harness.SUPPORTS_SKILLS and harness.config.skills:
|
|
94
95
|
raise ValueError(
|
|
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.dev56 → verifiers-0.2.2.dev58}/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
|