verifiers 0.2.2.dev96__tar.gz → 0.2.2.dev112__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.dev96 → verifiers-0.2.2.dev112}/PKG-INFO +4 -2
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/pyproject.toml +32 -1
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/conftest.py +4 -1
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_tool_v1.py +4 -5
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/test_envs.py +2 -4
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/acp/__init__.py +6 -2
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/clients/train.py +6 -2
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/client.py +3 -2
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/dialects/chat.py +5 -1
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/envs/agentic_judge/env.py +5 -3
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/envs/user_sim/env.py +2 -1
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/gepa/runner.py +1 -1
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/claude_code/harness.py +31 -15
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/codex/harness.py +33 -19
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/kimi_code/harness.py +3 -1
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/mini_swe_agent/harness.py +3 -1
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/openclaw/harness.py +2 -4
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/pi/harness.py +7 -3
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/pool/harness.py +1 -1
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/rlm/harness.py +1 -1
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/terminus_2/harness.py +3 -1
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/interception/server.py +21 -2
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/mcp/launch.py +108 -41
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/mcp/server.py +3 -2
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/mcp/toolset.py +1 -1
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/rollout.py +4 -13
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/base.py +9 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/limiters.py +9 -4
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/session.py +6 -3
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/__init__.py +3 -0
- verifiers-0.2.2.dev112/verifiers/v1/tasksets/nemo_gym/__init__.py +17 -0
- verifiers-0.2.2.dev112/verifiers/v1/tasksets/nemo_gym/response.py +110 -0
- verifiers-0.2.2.dev112/verifiers/v1/tasksets/nemo_gym/server.py +42 -0
- verifiers-0.2.2.dev112/verifiers/v1/tasksets/nemo_gym/taskset.py +170 -0
- verifiers-0.2.2.dev112/verifiers/v1/tasksets/nemo_gym/toolset.py +107 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/.gitignore +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/LICENSE +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/README.md +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/conftest.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_browser_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_build_script.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_client_config.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_composable_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_env_group.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_env_server.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_environment.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_environment_extra.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_error_chain.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_eval_display.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_eval_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_gym_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_imports.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_init_script.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_install_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_interception_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_logging.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_math_rubric.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_message_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_openenv_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_parser.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_path_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_renderer_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_rubric.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_rubric_group.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_save_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_setup_script.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_think_parser.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_tool_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_tool_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_types.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/test_xml_parser.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/fixtures/duet_v1.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/test_configs.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/test_e2e.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/test_graph.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/test_judges.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/tests/v1/test_trace.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/cli/tui.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/clients/client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/clients/renderer_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/decorators.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/environment.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/errors.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/gepa/config.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/gepa/display.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/scripts/build.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/scripts/init.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/scripts/install.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/serve/types.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/types.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/acp/runner.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/agent.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/resume.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/init.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/legacy.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/episode.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/errors.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/graph.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harness.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/bash/program.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/node.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/null/program.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/pool/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/judge.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/state.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/task.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/harbor/env.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/trace.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/types.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/loaders.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/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.dev112
|
|
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
|
|
@@ -39,7 +39,7 @@ Requires-Dist: prime-sandboxes>=0.2.35
|
|
|
39
39
|
Requires-Dist: prime-tunnel>=0.1.8
|
|
40
40
|
Requires-Dist: pydantic>=2.12.3
|
|
41
41
|
Requires-Dist: pyzmq>=27.1.0
|
|
42
|
-
Requires-Dist: renderers>=0.1.9
|
|
42
|
+
Requires-Dist: renderers>=0.1.9
|
|
43
43
|
Requires-Dist: requests
|
|
44
44
|
Requires-Dist: rich>=11.0.0
|
|
45
45
|
Requires-Dist: setproctitle>=1.3.0
|
|
@@ -54,6 +54,8 @@ Provides-Extra: harbor
|
|
|
54
54
|
Requires-Dist: harbor==0.20.0; (python_version >= '3.12') and extra == 'harbor'
|
|
55
55
|
Provides-Extra: modal
|
|
56
56
|
Requires-Dist: modal>=1.4.0; extra == 'modal'
|
|
57
|
+
Provides-Extra: nemo-gym
|
|
58
|
+
Requires-Dist: nemo-gym==0.4.0; (python_version >= '3.12') and extra == 'nemo-gym'
|
|
57
59
|
Provides-Extra: notebook
|
|
58
60
|
Requires-Dist: nest-asyncio>=1.6.0; extra == 'notebook'
|
|
59
61
|
Provides-Extra: openenv
|
|
@@ -51,7 +51,7 @@ dependencies = [
|
|
|
51
51
|
"uvloop>=0.21.0; sys_platform != 'win32' and sys_platform != 'cygwin' and platform_python_implementation != 'PyPy'",
|
|
52
52
|
"loguru>=0.7.0",
|
|
53
53
|
"tomli-w>=1.0.0",
|
|
54
|
-
"renderers>=0.1.9
|
|
54
|
+
"renderers>=0.1.9",
|
|
55
55
|
"typing_extensions>=4.12.2",
|
|
56
56
|
]
|
|
57
57
|
|
|
@@ -107,12 +107,43 @@ notebook = [
|
|
|
107
107
|
openenv = [
|
|
108
108
|
"openenv>=0.4.1",
|
|
109
109
|
]
|
|
110
|
+
nemo-gym = [
|
|
111
|
+
# NeMo Gym currently publishes Python 3.12+ packages; keep core verifiers installable on 3.11.
|
|
112
|
+
"nemo-gym==0.4.0; python_version >= '3.12'",
|
|
113
|
+
]
|
|
110
114
|
[tool.uv]
|
|
111
115
|
preview = true
|
|
112
116
|
required-version = ">=0.11.1"
|
|
113
117
|
exclude-newer = "7 days"
|
|
114
118
|
default-groups = ["dev", "examples"]
|
|
115
119
|
|
|
120
|
+
# NeMo Gym declares its full platform stack; this integration only starts resource servers.
|
|
121
|
+
[[tool.uv.dependency-metadata]]
|
|
122
|
+
name = "nemo-gym"
|
|
123
|
+
version = "0.4.0"
|
|
124
|
+
requires-python = ">=3.12"
|
|
125
|
+
requires-dist = [
|
|
126
|
+
"aiohttp>=3.14.1",
|
|
127
|
+
"fastapi",
|
|
128
|
+
"gprof2dot",
|
|
129
|
+
"hydra-core",
|
|
130
|
+
"itsdangerous",
|
|
131
|
+
"mcp>=1.27,<2",
|
|
132
|
+
"omegaconf",
|
|
133
|
+
"openai>=2.9",
|
|
134
|
+
"orjson",
|
|
135
|
+
"pandas",
|
|
136
|
+
"pydantic",
|
|
137
|
+
"pydot",
|
|
138
|
+
"ray>=2.55.1",
|
|
139
|
+
"requests",
|
|
140
|
+
"rich",
|
|
141
|
+
"typing-extensions",
|
|
142
|
+
"uvicorn",
|
|
143
|
+
"wandb",
|
|
144
|
+
"yappi",
|
|
145
|
+
]
|
|
146
|
+
|
|
116
147
|
[[tool.uv.index]]
|
|
117
148
|
name = "pypi"
|
|
118
149
|
url = "https://pypi.org/simple"
|
|
@@ -164,7 +164,10 @@ def _eval_config(
|
|
|
164
164
|
seat_cfg.setdefault("max_output_tokens", max_tokens)
|
|
165
165
|
seat_cfg.setdefault("timeout", {"rollout": rollout_timeout, "scoring": 60})
|
|
166
166
|
# Flake resilience: retries are per-agent now (flat RetryConfig).
|
|
167
|
-
seat_cfg.setdefault(
|
|
167
|
+
seat_cfg.setdefault(
|
|
168
|
+
"retries",
|
|
169
|
+
{"max_retries": 2, "include": ["ProviderError", "HarnessError"]},
|
|
170
|
+
)
|
|
168
171
|
return EvalConfig(
|
|
169
172
|
env={
|
|
170
173
|
"taskset": taskset_cfg,
|
|
@@ -11,6 +11,7 @@ so it would also serve taskset-scoped (`Taskset.toolsets`).
|
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
import verifiers.v1 as vf
|
|
14
|
+
from verifiers.v1.types import content_text
|
|
14
15
|
|
|
15
16
|
PHRASE = "hello world"
|
|
16
17
|
ECHO_TOKEN = "ok-7f3" # the tool stamps this; only a real tool call can surface it
|
|
@@ -36,11 +37,9 @@ class EchoToolTask(vf.Task[vf.TaskData, vf.State, EchoToolTaskConfig]):
|
|
|
36
37
|
|
|
37
38
|
@vf.reward(weight=1.0)
|
|
38
39
|
async def echoed(self, trace: vf.Trace) -> float:
|
|
39
|
-
#
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
replies = ((m.content or "").lower() for m in trace.assistant_messages)
|
|
43
|
-
return float(any(PHRASE in r and ECHO_TOKEN in r for r in replies))
|
|
40
|
+
# A stamped TOOL result proves the tool really ran with the phrase.
|
|
41
|
+
results = (content_text(m.content).lower() for m in trace.tool_messages)
|
|
42
|
+
return float(any(PHRASE in r and ECHO_TOKEN in r for r in results))
|
|
44
43
|
|
|
45
44
|
|
|
46
45
|
class EchoToolConfig(vf.TasksetConfig):
|
|
@@ -17,10 +17,8 @@ EVAL_TIMEOUT = 600 # 10 minutes for a capped eval (-n 1 -r 1)
|
|
|
17
17
|
|
|
18
18
|
ENVIRONMENTS = Path(__file__).parent.parent.parent / "environments"
|
|
19
19
|
|
|
20
|
-
#
|
|
21
|
-
|
|
22
|
-
# research-environments now.
|
|
23
|
-
SKIP_EVAL: set[str] = set()
|
|
20
|
+
# V1 tasksets that aren't part of the default CI install.
|
|
21
|
+
SKIP_EVAL = {"nemo_gym_weather_v1"}
|
|
24
22
|
|
|
25
23
|
# Per-run caps are seat fields; recipe envs name their own seats.
|
|
26
24
|
SEATS: dict[str, tuple[str, ...]] = {
|
|
@@ -121,7 +121,9 @@ class ACP:
|
|
|
121
121
|
"allow_empty_tool_reply": allow_empty_tool_reply,
|
|
122
122
|
}
|
|
123
123
|
program = await runtime.prepare_uv_script(
|
|
124
|
-
ACP_SOURCE,
|
|
124
|
+
ACP_SOURCE,
|
|
125
|
+
{**env, "UV_FROZEN": "false"},
|
|
126
|
+
activate=False,
|
|
125
127
|
)
|
|
126
128
|
directory = f".vf-acp-{secrets.token_hex(8)}"
|
|
127
129
|
created = await runtime.run(["mkdir", "-m", "700", directory], {})
|
|
@@ -198,7 +200,9 @@ class ACPHarnessSession(HarnessSession):
|
|
|
198
200
|
async def _start(self) -> None:
|
|
199
201
|
self._stderr_tail.clear()
|
|
200
202
|
program = await self.runtime.prepare_uv_script(
|
|
201
|
-
ACP_SOURCE,
|
|
203
|
+
ACP_SOURCE,
|
|
204
|
+
{**self.env, "UV_FROZEN": "false"},
|
|
205
|
+
activate=False,
|
|
202
206
|
)
|
|
203
207
|
process = await self.runtime.open_process([*program, "stream"], self.env)
|
|
204
208
|
self._process = process
|
|
@@ -12,6 +12,7 @@ from typing import Any, ClassVar, TypeVar
|
|
|
12
12
|
from openai import OpenAIError
|
|
13
13
|
from renderers import OverlongPromptError as RendererOverlongPromptError
|
|
14
14
|
from renderers import RenderedTokens, Renderer, RendererConfig
|
|
15
|
+
from renderers.base import ToolCallParseStatus
|
|
15
16
|
|
|
16
17
|
from verifiers.v1.clients.base import build_async_openai
|
|
17
18
|
from verifiers.v1.clients.client import SESSION_ID_HEADER, Client
|
|
@@ -115,6 +116,8 @@ def response_from_generate(
|
|
|
115
116
|
)
|
|
116
117
|
for i, tc in enumerate(result.get("tool_calls") or [])
|
|
117
118
|
if getattr(tc, "name", None)
|
|
119
|
+
# TODO: we need a better way for renderers to expose this
|
|
120
|
+
and getattr(tc, "status", None) != ToolCallParseStatus.UNKNOWN_TOOL
|
|
118
121
|
] or None
|
|
119
122
|
prompt_ids = result.get("prompt_ids") or []
|
|
120
123
|
completion_ids = result.get("completion_ids") or []
|
|
@@ -296,8 +299,9 @@ class ElasticRendererPool:
|
|
|
296
299
|
class TrainClient(Client):
|
|
297
300
|
"""Renders prompts to token ids and calls a vLLM `/inference/v1/generate` engine.
|
|
298
301
|
|
|
299
|
-
|
|
300
|
-
|
|
302
|
+
Owned by the interception server and shared by the rollouts it multiplexes: they reuse
|
|
303
|
+
its engine connection pool, and each turn takes a slot on the shared
|
|
304
|
+
`ElasticRendererPool`."""
|
|
301
305
|
|
|
302
306
|
def __init__(self, config: TrainClientConfig) -> None:
|
|
303
307
|
self.config = config
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"""Client configs: describe an OpenAI-compatible endpoint.
|
|
2
2
|
|
|
3
3
|
A `BaseClientConfig` is an OpenAI-compatible endpoint (base_url + API-key env var
|
|
4
|
-
+ extra headers); `clients.resolve_client` turns one into a live `Client
|
|
5
|
-
|
|
4
|
+
+ extra headers); `clients.resolve_client` turns one into a live `Client` — the
|
|
5
|
+
interception server builds one per distinct config and shares it across the rollouts
|
|
6
|
+
it multiplexes. The default Prime endpoint, API key, and team fall back to
|
|
6
7
|
the active Prime CLI config, so direct `uv run eval` calls behave like `prime eval`.
|
|
7
8
|
Both the eval entrypoint (its model client) and in-env LLM calls (e.g. a judge reward)
|
|
8
9
|
build clients from these. `ClientConfig` is the CLI-selectable discriminated union
|
|
@@ -141,7 +141,11 @@ def _content_to_wire(content):
|
|
|
141
141
|
|
|
142
142
|
def message_to_wire(message: Message) -> dict:
|
|
143
143
|
if message.role == "assistant":
|
|
144
|
-
|
|
144
|
+
# Strict providers reject `content: null` without tool calls.
|
|
145
|
+
content = message.content
|
|
146
|
+
if content is None and not message.tool_calls:
|
|
147
|
+
content = ""
|
|
148
|
+
wire: dict = {"role": "assistant", "content": content}
|
|
145
149
|
if message.provider_state:
|
|
146
150
|
wire["reasoning_details"] = message.provider_state
|
|
147
151
|
elif message.reasoning_content is not None:
|
|
@@ -309,8 +309,6 @@ class AgenticJudgeEnv(vf.Env[AgenticJudgeEnvConfig]):
|
|
|
309
309
|
|
|
310
310
|
async def finalize(self, task: vf.Task, episode: vf.Episode) -> None:
|
|
311
311
|
by_agent = {t.agent.name: t for t in episode.traces}
|
|
312
|
-
if "judge" not in by_agent:
|
|
313
|
-
return
|
|
314
312
|
solution, verdict = by_agent["solver"], by_agent["judge"]
|
|
315
313
|
verdicts = RubricVerdicts.model_validate(verdict.info.get("verdict")).verdicts
|
|
316
314
|
criteria = self.config.task.criteria()
|
|
@@ -332,6 +330,10 @@ class SharedAgenticJudgeEnv(AgenticJudgeEnv):
|
|
|
332
330
|
async def run(self, task: vf.Task, agents: vf.Agents) -> None:
|
|
333
331
|
async with agents.solver.provision(task) as box:
|
|
334
332
|
solution = await agents.solver.run(task, runtime=box)
|
|
333
|
+
if not solution.ok:
|
|
334
|
+
raise RuntimeError(
|
|
335
|
+
"the solver's rollout failed, so the judge never ran"
|
|
336
|
+
)
|
|
335
337
|
judge_task = JudgeTask.from_trace(solution, self.config.task)
|
|
336
338
|
await agents.judge.run(judge_task, runtime=box)
|
|
337
339
|
|
|
@@ -342,7 +344,7 @@ class IsolatedAgenticJudgeEnv(AgenticJudgeEnv):
|
|
|
342
344
|
async def run(self, task: vf.Task, agents: vf.Agents) -> None:
|
|
343
345
|
solution = await agents.solver.run(task)
|
|
344
346
|
if not solution.ok:
|
|
345
|
-
|
|
347
|
+
raise RuntimeError("the solver's rollout failed, so the judge never ran")
|
|
346
348
|
await agents.judge.run(
|
|
347
349
|
JudgeTask.from_trace(solution, self.config.task, share_runtime=False)
|
|
348
350
|
)
|
|
@@ -21,13 +21,14 @@ from pydantic import Field
|
|
|
21
21
|
|
|
22
22
|
import verifiers.v1 as vf
|
|
23
23
|
|
|
24
|
-
PERSONA = """You are role-playing a USER talking to an AI assistant. This is your situation
|
|
24
|
+
PERSONA = """You are role-playing a USER talking to an AI assistant. This is your situation — what you want the ASSISTANT to do for you:
|
|
25
25
|
|
|
26
26
|
{scenario}
|
|
27
27
|
|
|
28
28
|
Rules:
|
|
29
29
|
- Open the conversation with your request, in your own words.
|
|
30
30
|
- Stay in character: short, natural user messages; never act as the assistant.
|
|
31
|
+
- The assistant does the work, not you: never perform the task yourself — any tool call, answer, or output format it asks for must come from the assistant; ask for it instead.
|
|
31
32
|
- Reveal details only when asked, as a real user would.
|
|
32
33
|
- When the assistant has fully met your goal — or you are convinced it cannot — reply with exactly {done} and nothing else."""
|
|
33
34
|
|
|
@@ -73,7 +73,7 @@ def run_gepa(env: Env, config: GEPAConfig) -> GEPAResult:
|
|
|
73
73
|
await append_episode(run_dir, episode, write_lock)
|
|
74
74
|
|
|
75
75
|
try:
|
|
76
|
-
# The endpoint stays config:
|
|
76
|
+
# The endpoint stays config: the interception server builds the live client.
|
|
77
77
|
ctx = ModelContext(
|
|
78
78
|
client=config.client, model=config.model, sampling=config.sampling
|
|
79
79
|
)
|
{verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/claude_code/harness.py
RENAMED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import shlex
|
|
4
4
|
|
|
5
|
+
from pydantic import Field
|
|
6
|
+
|
|
5
7
|
from verifiers.v1.acp import ACP
|
|
6
8
|
from verifiers.v1.clients import ModelContext
|
|
7
9
|
from verifiers.v1.configs.harness import HarnessConfig
|
|
@@ -11,31 +13,30 @@ from verifiers.v1.runtimes import ProgramResult, Runtime
|
|
|
11
13
|
from verifiers.v1.task import TaskData
|
|
12
14
|
from verifiers.v1.trace import Trace
|
|
13
15
|
|
|
14
|
-
CLAUDE_ACP_DIR = "/var/tmp/vf-claude-agent-acp"
|
|
16
|
+
CLAUDE_ACP_DIR = "/var/tmp/vf-claude-agent-acp-{version}-{acp_version}"
|
|
15
17
|
PACKAGES_DIR = f"{CLAUDE_ACP_DIR}/packages"
|
|
16
|
-
ACP_VERSION = "0.
|
|
18
|
+
ACP_VERSION = "0.65.0"
|
|
19
|
+
CLAUDE_BIN = f"{PACKAGES_DIR}/node_modules/.bin/claude"
|
|
17
20
|
ACP_BIN = f"{PACKAGES_DIR}/node_modules/.bin/claude-agent-acp"
|
|
18
|
-
ACP_COMMAND = [f"{NODE_BIN_DIR}/node", ACP_BIN]
|
|
19
21
|
CLAUDE_CONFIG_ROOT = ".vf-claude"
|
|
20
22
|
SKILLS_DIR = ".claude/skills"
|
|
21
23
|
ACP_INSTALL = r"""
|
|
22
24
|
set -e
|
|
23
25
|
export PATH="/var/tmp/vf-node/bin:$PATH"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
exit 0
|
|
27
|
-
fi
|
|
28
|
-
npm install --prefix /var/tmp/vf-claude-agent-acp/packages --ignore-scripts --no-audit --no-fund \
|
|
26
|
+
rm -f {ready}
|
|
27
|
+
npm install --prefix {packages} --no-audit --no-fund \
|
|
29
28
|
--omit=dev \
|
|
29
|
+
"@anthropic-ai/claude-code@$VF_CLAUDE_CODE_VERSION" \
|
|
30
30
|
"@agentclientprotocol/claude-agent-acp@$VF_CLAUDE_ACP_VERSION" >/dev/null
|
|
31
|
-
|
|
31
|
+
touch {ready}
|
|
32
32
|
"""
|
|
33
33
|
|
|
34
34
|
CLAUDE_ACP = ACP()
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
class ClaudeCodeHarnessConfig(HarnessConfig):
|
|
38
|
-
|
|
38
|
+
version: str = Field(default="2.1.223", pattern=r"^[A-Za-z0-9._+-]+$")
|
|
39
|
+
"""Claude Code release to install, pinned for reproducibility."""
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
|
|
@@ -47,15 +48,26 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
|
|
|
47
48
|
async def setup(self, runtime: Runtime) -> None:
|
|
48
49
|
await self.install_skills(runtime, SKILLS_DIR)
|
|
49
50
|
await ensure_node(runtime)
|
|
51
|
+
versions = {"version": self.config.version, "acp_version": ACP_VERSION}
|
|
52
|
+
directory = CLAUDE_ACP_DIR.format(**versions)
|
|
53
|
+
packages = PACKAGES_DIR.format(**versions)
|
|
54
|
+
claude_bin = CLAUDE_BIN.format(**versions)
|
|
55
|
+
acp_bin = ACP_BIN.format(**versions)
|
|
56
|
+
ready = f"{directory}/.ready"
|
|
57
|
+
script = ACP_INSTALL.replace("{packages}", packages).replace("{ready}", ready)
|
|
58
|
+
ensure = shlex.quote(
|
|
59
|
+
f"[ -f {ready} ] && [ -x {claude_bin} ] && [ -x {acp_bin} ] || ({script})"
|
|
60
|
+
)
|
|
50
61
|
acp_guarded = (
|
|
51
|
-
f"mkdir -p {
|
|
52
|
-
f'"$(command -v flock || command -v lockf)" {
|
|
53
|
-
f"sh -c {
|
|
62
|
+
f"mkdir -p {directory} && "
|
|
63
|
+
f'"$(command -v flock || command -v lockf)" {directory}/install.lock '
|
|
64
|
+
f"sh -c {ensure}"
|
|
54
65
|
)
|
|
55
66
|
acp_result = await runtime.run(
|
|
56
67
|
["sh", "-c", acp_guarded],
|
|
57
68
|
{
|
|
58
69
|
**self.config.resolved_env,
|
|
70
|
+
"VF_CLAUDE_CODE_VERSION": self.config.version,
|
|
59
71
|
"VF_CLAUDE_ACP_VERSION": ACP_VERSION,
|
|
60
72
|
},
|
|
61
73
|
)
|
|
@@ -80,6 +92,7 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
|
|
|
80
92
|
)
|
|
81
93
|
system_prompt, prompt = self.resolve_prompt(data)
|
|
82
94
|
config_dir = self.config_dir(trace)
|
|
95
|
+
versions = {"version": self.config.version, "acp_version": ACP_VERSION}
|
|
83
96
|
options: dict[str, object] = {
|
|
84
97
|
"strictMcpConfig": True,
|
|
85
98
|
"disallowedTools": self.config.disabled_tools or [],
|
|
@@ -92,6 +105,7 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
|
|
|
92
105
|
"ANTHROPIC_BASE_URL": endpoint.removesuffix("/v1"),
|
|
93
106
|
"ANTHROPIC_API_KEY": secret,
|
|
94
107
|
"ANTHROPIC_MODEL": ctx.model,
|
|
108
|
+
"CLAUDE_CODE_EXECUTABLE": CLAUDE_BIN.format(**versions),
|
|
95
109
|
"CLAUDE_CONFIG_DIR": config_dir,
|
|
96
110
|
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
|
|
97
111
|
"DISABLE_AUTOUPDATER": "1",
|
|
@@ -107,7 +121,7 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
|
|
|
107
121
|
mcp_urls,
|
|
108
122
|
data,
|
|
109
123
|
env=env,
|
|
110
|
-
command=
|
|
124
|
+
command=[f"{NODE_BIN_DIR}/node", ACP_BIN.format(**versions)],
|
|
111
125
|
prompt=prompt or "",
|
|
112
126
|
session_meta=session_meta,
|
|
113
127
|
)
|
|
@@ -124,6 +138,7 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
|
|
|
124
138
|
) -> ProgramResult:
|
|
125
139
|
system_prompt, prompt = self.resolve_prompt(data)
|
|
126
140
|
config_dir = self.config_dir(trace)
|
|
141
|
+
versions = {"version": self.config.version, "acp_version": ACP_VERSION}
|
|
127
142
|
|
|
128
143
|
options: dict[str, object] = {
|
|
129
144
|
"strictMcpConfig": True,
|
|
@@ -138,6 +153,7 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
|
|
|
138
153
|
"ANTHROPIC_BASE_URL": endpoint.removesuffix("/v1"),
|
|
139
154
|
"ANTHROPIC_API_KEY": secret,
|
|
140
155
|
"ANTHROPIC_MODEL": ctx.model,
|
|
156
|
+
"CLAUDE_CODE_EXECUTABLE": CLAUDE_BIN.format(**versions),
|
|
141
157
|
"CLAUDE_CONFIG_DIR": config_dir,
|
|
142
158
|
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
|
|
143
159
|
"DISABLE_AUTOUPDATER": "1",
|
|
@@ -146,7 +162,7 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
|
|
|
146
162
|
return await CLAUDE_ACP.run(
|
|
147
163
|
runtime,
|
|
148
164
|
env,
|
|
149
|
-
|
|
165
|
+
[f"{NODE_BIN_DIR}/node", ACP_BIN.format(**versions)],
|
|
150
166
|
prompt or "",
|
|
151
167
|
mcp_urls=mcp_urls,
|
|
152
168
|
session_path=f"{config_dir}/acp-session",
|
|
@@ -7,6 +7,8 @@ import re
|
|
|
7
7
|
import shlex
|
|
8
8
|
from collections import Counter
|
|
9
9
|
|
|
10
|
+
from pydantic import Field
|
|
11
|
+
|
|
10
12
|
from verifiers.v1.acp import ACP
|
|
11
13
|
from verifiers.v1.clients import ModelContext
|
|
12
14
|
from verifiers.v1.configs.harness import HarnessConfig
|
|
@@ -21,33 +23,29 @@ logger = logging.getLogger(__name__)
|
|
|
21
23
|
PROVIDER = "intercept"
|
|
22
24
|
KEY_VAR = "CODEX_INTERCEPT_KEY"
|
|
23
25
|
|
|
24
|
-
CODEX_DIR = "/var/tmp/vf-codex"
|
|
26
|
+
CODEX_DIR = "/var/tmp/vf-codex-{version}-{acp_version}"
|
|
25
27
|
PACKAGES_DIR = f"{CODEX_DIR}/acp"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
ACP_VERSION = "1.1.10"
|
|
29
|
+
CODEX_BIN = f"{PACKAGES_DIR}/node_modules/.bin/codex"
|
|
28
30
|
ACP_BIN = f"{PACKAGES_DIR}/node_modules/.bin/codex-acp"
|
|
29
|
-
ACP_COMMAND = [f"{NODE_BIN_DIR}/node", ACP_BIN]
|
|
30
31
|
SKILLS_DIR = ".agents/skills"
|
|
31
32
|
INSTALL = r"""
|
|
32
33
|
set -e
|
|
33
34
|
export PATH="/var/tmp/vf-node/bin:$PATH"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
&& [ -x /var/tmp/vf-codex/acp/node_modules/.bin/codex ] \
|
|
37
|
-
&& [ -x /var/tmp/vf-codex/acp/node_modules/.bin/codex-acp ]; then
|
|
38
|
-
exit 0
|
|
39
|
-
fi
|
|
40
|
-
npm install --prefix /var/tmp/vf-codex/acp --ignore-scripts --no-audit --no-fund \
|
|
35
|
+
rm -f {ready}
|
|
36
|
+
npm install --prefix {packages} --ignore-scripts --no-audit --no-fund \
|
|
41
37
|
--omit=dev \
|
|
42
38
|
"@agentclientprotocol/codex-acp@$VF_CODEX_ACP_VERSION" \
|
|
43
39
|
"@openai/codex@$VF_CODEX_VERSION" >/dev/null
|
|
44
|
-
|
|
40
|
+
touch {ready}
|
|
45
41
|
"""
|
|
46
42
|
|
|
47
43
|
CODEX_ACP = ACP()
|
|
48
44
|
|
|
49
45
|
|
|
50
46
|
class CodexHarnessConfig(HarnessConfig):
|
|
47
|
+
version: str = Field(default="0.146.1", pattern=r"^[A-Za-z0-9._+-]+$")
|
|
48
|
+
"""Codex release to install, pinned for reproducibility."""
|
|
51
49
|
multi_agent: bool = False
|
|
52
50
|
"""Enable Codex's native multi-agent v2 tools."""
|
|
53
51
|
|
|
@@ -63,19 +61,29 @@ class CodexHarness(Harness[CodexHarnessConfig]):
|
|
|
63
61
|
await ensure_node(runtime)
|
|
64
62
|
logger.info(
|
|
65
63
|
"codex: ensuring Codex %s and codex-acp %s are installed",
|
|
66
|
-
|
|
64
|
+
self.config.version,
|
|
67
65
|
ACP_VERSION,
|
|
68
66
|
)
|
|
67
|
+
versions = {"version": self.config.version, "acp_version": ACP_VERSION}
|
|
68
|
+
directory = CODEX_DIR.format(**versions)
|
|
69
|
+
packages = PACKAGES_DIR.format(**versions)
|
|
70
|
+
codex_bin = CODEX_BIN.format(**versions)
|
|
71
|
+
acp_bin = ACP_BIN.format(**versions)
|
|
72
|
+
ready = f"{directory}/.ready"
|
|
73
|
+
script = INSTALL.replace("{packages}", packages).replace("{ready}", ready)
|
|
74
|
+
ensure = shlex.quote(
|
|
75
|
+
f"[ -f {ready} ] && [ -x {codex_bin} ] && [ -x {acp_bin} ] || ({script})"
|
|
76
|
+
)
|
|
69
77
|
guarded = (
|
|
70
|
-
f"mkdir -p {
|
|
71
|
-
f'"$(command -v flock || command -v lockf)" {
|
|
72
|
-
f"sh -c {
|
|
78
|
+
f"mkdir -p {directory} && "
|
|
79
|
+
f'"$(command -v flock || command -v lockf)" {directory}/install.lock '
|
|
80
|
+
f"sh -c {ensure}"
|
|
73
81
|
)
|
|
74
82
|
install = await runtime.run(
|
|
75
83
|
["sh", "-c", guarded],
|
|
76
84
|
{
|
|
77
85
|
**self.config.resolved_env,
|
|
78
|
-
"VF_CODEX_VERSION":
|
|
86
|
+
"VF_CODEX_VERSION": self.config.version,
|
|
79
87
|
"VF_CODEX_ACP_VERSION": ACP_VERSION,
|
|
80
88
|
},
|
|
81
89
|
)
|
|
@@ -112,7 +120,10 @@ class CodexHarness(Harness[CodexHarnessConfig]):
|
|
|
112
120
|
{},
|
|
113
121
|
data,
|
|
114
122
|
env=env,
|
|
115
|
-
command=
|
|
123
|
+
command=[
|
|
124
|
+
f"{NODE_BIN_DIR}/node",
|
|
125
|
+
ACP_BIN.format(version=self.config.version, acp_version=ACP_VERSION),
|
|
126
|
+
],
|
|
116
127
|
prompt=prompt,
|
|
117
128
|
system_prompt=system_prompt,
|
|
118
129
|
)
|
|
@@ -139,7 +150,10 @@ class CodexHarness(Harness[CodexHarnessConfig]):
|
|
|
139
150
|
return await CODEX_ACP.run(
|
|
140
151
|
runtime,
|
|
141
152
|
env,
|
|
142
|
-
|
|
153
|
+
[
|
|
154
|
+
f"{NODE_BIN_DIR}/node",
|
|
155
|
+
ACP_BIN.format(version=self.config.version, acp_version=ACP_VERSION),
|
|
156
|
+
],
|
|
143
157
|
prompt,
|
|
144
158
|
system_prompt=system_prompt,
|
|
145
159
|
session_path=f"{self.trace_home(trace)}/acp-session",
|
{verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/kimi_code/harness.py
RENAMED
|
@@ -4,6 +4,8 @@ import json
|
|
|
4
4
|
import logging
|
|
5
5
|
import shlex
|
|
6
6
|
|
|
7
|
+
from pydantic import Field
|
|
8
|
+
|
|
7
9
|
from verifiers.v1.acp import ACP
|
|
8
10
|
from verifiers.v1.clients import ModelContext
|
|
9
11
|
from verifiers.v1.configs.harness import HarnessConfig
|
|
@@ -43,7 +45,7 @@ KIMI_ACP = ACP()
|
|
|
43
45
|
|
|
44
46
|
|
|
45
47
|
class KimiCodeHarnessConfig(HarnessConfig):
|
|
46
|
-
version: str = "0.
|
|
48
|
+
version: str = Field(default="0.34.0", pattern=r"^[A-Za-z0-9._+-]+$")
|
|
47
49
|
"""Kimi Code release to install, pinned for reproducibility."""
|
|
48
50
|
|
|
49
51
|
|
{verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/mini_swe_agent/harness.py
RENAMED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
|
+
from pydantic import Field
|
|
4
|
+
|
|
3
5
|
from verifiers.v1.clients import ModelContext
|
|
4
6
|
from verifiers.v1.configs.harness import HarnessConfig
|
|
5
7
|
from verifiers.v1.harness import Harness
|
|
@@ -11,7 +13,7 @@ PROGRAM_SOURCE = (Path(__file__).resolve().parent / "program.py").read_text()
|
|
|
11
13
|
|
|
12
14
|
|
|
13
15
|
class MiniSWEAgentHarnessConfig(HarnessConfig):
|
|
14
|
-
version: str = "2.4.
|
|
16
|
+
version: str = Field(default="2.4.6", pattern=r"^[A-Za-z0-9._+-]+$")
|
|
15
17
|
"""mini-swe-agent release to install, pinned for reproducibility."""
|
|
16
18
|
|
|
17
19
|
|
|
@@ -117,10 +117,8 @@ class OpenClawHarness(Harness[OpenClawHarnessConfig]):
|
|
|
117
117
|
data: TaskData,
|
|
118
118
|
) -> ProgramResult:
|
|
119
119
|
system_prompt, prompt = self.resolve_prompt(data)
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
"none",
|
|
123
|
-
) or ctx.model.rsplit("/", 1)[-1].startswith(("gpt-5", "o1", "o3", "o4"))
|
|
120
|
+
# Opt-in via sampling: OpenClaw redacts persisted encrypted reasoning, so resumed sessions 400 replaying it.
|
|
121
|
+
reasoning = ctx.sampling.reasoning_effort not in (None, "none")
|
|
124
122
|
directory = OPENCLAW_DIR.format(version=self.config.version)
|
|
125
123
|
state_dir = f".vf-openclaw/{trace.id}"
|
|
126
124
|
config_path = f"{state_dir}/openclaw.json"
|
|
@@ -4,6 +4,8 @@ import json
|
|
|
4
4
|
import logging
|
|
5
5
|
import shlex
|
|
6
6
|
|
|
7
|
+
from pydantic import Field
|
|
8
|
+
|
|
7
9
|
from verifiers.v1.acp import ACP
|
|
8
10
|
from verifiers.v1.clients import ModelContext
|
|
9
11
|
from verifiers.v1.configs.harness import HarnessConfig
|
|
@@ -23,8 +25,8 @@ PI_DIR = "/var/tmp/vf-pi"
|
|
|
23
25
|
PACKAGES_DIR = f"{PI_DIR}/mcp"
|
|
24
26
|
PI_BIN = f"{PACKAGES_DIR}/node_modules/.bin/pi"
|
|
25
27
|
SKILLS_DIR = ".agents/skills"
|
|
26
|
-
MCP_VERSION = "2.
|
|
27
|
-
ACP_VERSION = "0.0.
|
|
28
|
+
MCP_VERSION = "2.20.1"
|
|
29
|
+
ACP_VERSION = "0.0.33"
|
|
28
30
|
MCP_ADAPTER = f"{PACKAGES_DIR}/node_modules/pi-mcp-adapter/index.ts"
|
|
29
31
|
ACP_BIN = f"{PACKAGES_DIR}/node_modules/.bin/pi-acp"
|
|
30
32
|
ACP_COMMAND = [
|
|
@@ -86,7 +88,7 @@ PI_ACP = ACP()
|
|
|
86
88
|
|
|
87
89
|
|
|
88
90
|
class PiHarnessConfig(HarnessConfig):
|
|
89
|
-
version: str = "0.
|
|
91
|
+
version: str = Field(default="0.84.0", pattern=r"^[A-Za-z0-9._+-]+$")
|
|
90
92
|
"""Pi release to install, pinned for reproducibility."""
|
|
91
93
|
|
|
92
94
|
|
|
@@ -223,4 +225,6 @@ class PiHarness(Harness[PiHarnessConfig]):
|
|
|
223
225
|
ACP_COMMAND,
|
|
224
226
|
prompt,
|
|
225
227
|
session_path=f"{agent_dir}/acp-session",
|
|
228
|
+
# Pi can end after its final tool completes without a text message.
|
|
229
|
+
allow_empty_tool_reply=True,
|
|
226
230
|
)
|
|
@@ -31,7 +31,7 @@ POOL_ACP = ACP()
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class PoolHarnessConfig(HarnessConfig):
|
|
34
|
-
version: str = Field(default="1.0.
|
|
34
|
+
version: str = Field(default="1.0.15", pattern=r"^[A-Za-z0-9._+-]+$")
|
|
35
35
|
"""Pool release to install, pinned for reproducibility."""
|
|
36
36
|
|
|
37
37
|
|
|
@@ -30,7 +30,7 @@ RLM_ACP = ACP()
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class RLMHarnessConfig(HarnessConfig):
|
|
33
|
-
version: str = "main"
|
|
33
|
+
version: str = Field(default="main", min_length=1)
|
|
34
34
|
"""Git ref (branch, tag, or commit) of rlm-harness to install."""
|
|
35
35
|
max_depth: int = 0
|
|
36
36
|
"""Recursion depth rlm may spawn sub-harnesses to (RLM_MAX_DEPTH)."""
|
{verifiers-0.2.2.dev96 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/terminus_2/harness.py
RENAMED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
from pathlib import Path
|
|
3
3
|
|
|
4
|
+
from pydantic import Field
|
|
5
|
+
|
|
4
6
|
from verifiers.v1.clients import ModelContext
|
|
5
7
|
from verifiers.v1.configs.harness import HarnessConfig
|
|
6
8
|
from verifiers.v1.harness import Harness
|
|
@@ -13,7 +15,7 @@ logger = logging.getLogger(__name__)
|
|
|
13
15
|
|
|
14
16
|
|
|
15
17
|
class Terminus2HarnessConfig(HarnessConfig):
|
|
16
|
-
version: str = "0.20.0"
|
|
18
|
+
version: str = Field(default="0.20.0", pattern=r"^[A-Za-z0-9._+-]+$")
|
|
17
19
|
"""Harbor release to install, pinned for reproducibility."""
|
|
18
20
|
|
|
19
21
|
|