verifiers 0.2.2.dev17__tar.gz → 0.2.2.dev18__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.dev17 → verifiers-0.2.2.dev18}/PKG-INFO +1 -1
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_e2e.py +8 -6
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harness.py +36 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/bash/harness.py +1 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/claude_code/harness.py +4 -1
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/codex/harness.py +3 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/kimi_code/harness.py +3 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/null/harness.py +1 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/pi/harness.py +12 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/pool/harness.py +3 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/rlm/harness.py +9 -5
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/terminus_2/harness.py +2 -10
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/compile.py +12 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/.gitignore +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/LICENSE +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/README.md +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/pyproject.toml +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/conftest.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_browser_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_build_script.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_client_config.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_composable_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_env_group.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_env_server.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_environment.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_environment_extra.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_error_chain.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_eval_display.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_eval_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_gym_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_imports.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_init_script.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_install_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_interception_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_logging.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_math_rubric.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_message_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_openenv_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_parser.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_path_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_renderer_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_rubric.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_rubric_group.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_save_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_setup_script.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_think_parser.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_tool_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_tool_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_types.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_xml_parser.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/conftest.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/duet_v1.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_configs.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_envs.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_graph.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_judges.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_trace.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/tui.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/renderer_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/decorators.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/environment.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/errors.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/gepa/config.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/gepa/display.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/build.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/init.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/install.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/types.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/types.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/agent.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/serve.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/clients/config.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/debug.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/eval.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/init.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/replay.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/validate.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/decorators.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/episode.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/errors.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/graph.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/bash/program.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/null/program.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/pool/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/judge.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/loaders.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/mcp/user.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/push.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/retries.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/scoring.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/session.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/state.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/task.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/trace.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/types.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/sampling.py +0 -0
- {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/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.dev18
|
|
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
|
|
@@ -15,26 +15,28 @@ def _pair(a: str, b: str, id: str, *extra_marks):
|
|
|
15
15
|
return pytest.param(a, b, marks=[*marks, *extra_marks], id=id)
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
# harness x harness runtime: every harness once, both local runtimes hit
|
|
19
|
-
#
|
|
18
|
+
# harness x harness runtime: every harness once, both local runtimes hit (subprocess
|
|
19
|
+
# only carries the in-house loops — the rest NEEDS_CONTAINER), one remote row per
|
|
20
|
+
# provider. codex/claude-code are excluded here (unreliable on a no-op echo chat
|
|
20
21
|
# task) — test_agentic covers them.
|
|
21
22
|
CHAT_PLACEMENTS = [
|
|
22
23
|
_pair("null", "subprocess", "null-harness-in-subprocess"),
|
|
23
24
|
_pair("bash", "docker", "bash-harness-in-docker"),
|
|
24
|
-
_pair("rlm", "
|
|
25
|
+
_pair("rlm", "docker", "rlm-harness-in-docker"),
|
|
25
26
|
_pair("kimi-code", "docker", "kimi-code-harness-in-docker"),
|
|
26
27
|
_pair("bash", "prime", "bash-harness-in-prime"),
|
|
27
28
|
_pair("bash", "modal", "bash-harness-in-modal"),
|
|
28
29
|
]
|
|
29
30
|
|
|
30
31
|
# harness x harness runtime for the shell task: every coding agent once (null is a chat
|
|
31
|
-
# loop with no shell), both local runtimes hit
|
|
32
|
+
# loop with no shell), both local runtimes hit (subprocess only carries bash), one
|
|
33
|
+
# remote row per provider.
|
|
32
34
|
AGENTIC_PLACEMENTS = [
|
|
33
35
|
_pair("bash", "subprocess", "bash-harness-in-subprocess"),
|
|
34
36
|
_pair("rlm", "docker", "rlm-harness-in-docker"),
|
|
35
|
-
_pair("kimi-code", "
|
|
37
|
+
_pair("kimi-code", "docker", "kimi-code-harness-in-docker"),
|
|
36
38
|
_pair("codex", "docker", "codex-harness-in-docker"),
|
|
37
|
-
_pair("claude-code", "
|
|
39
|
+
_pair("claude-code", "docker", "claude-code-harness-in-docker"),
|
|
38
40
|
_pair("bash", "prime", "bash-harness-in-prime"),
|
|
39
41
|
_pair("bash", "modal", "bash-harness-in-modal"),
|
|
40
42
|
]
|
|
@@ -4,6 +4,7 @@ import logging
|
|
|
4
4
|
import os
|
|
5
5
|
from abc import ABC, abstractmethod
|
|
6
6
|
from collections.abc import Mapping
|
|
7
|
+
from pathlib import Path
|
|
7
8
|
from typing import TYPE_CHECKING, ClassVar, Generic, TypeVar
|
|
8
9
|
|
|
9
10
|
from pydantic import Field
|
|
@@ -41,6 +42,10 @@ class HarnessConfig(BaseConfig):
|
|
|
41
42
|
forward_env: list[str] = Field(default_factory=list)
|
|
42
43
|
"""Host variables to forward without writing secrets into config; explicit `env` wins."""
|
|
43
44
|
disabled_tools: list[str] | None = None
|
|
45
|
+
skills: list[Path] = Field(default_factory=list)
|
|
46
|
+
"""Skill folders to upload into the program's skill discovery directory — each
|
|
47
|
+
lands at `<skills dir>/<folder name>`. Only harnesses whose program discovers
|
|
48
|
+
skills natively (`SUPPORTS_SKILLS`) accept them."""
|
|
44
49
|
|
|
45
50
|
@property
|
|
46
51
|
def name(self) -> str:
|
|
@@ -66,6 +71,15 @@ class Harness(ABC, Generic[ConfigT]):
|
|
|
66
71
|
every real harness; the tool-less chat loops (`null`) override to False. Read
|
|
67
72
|
where model-directed execution changes the rules: the subprocess-on-host
|
|
68
73
|
warning, the judge env's sandbox requirement."""
|
|
74
|
+
SUPPORTS_SKILLS: ClassVar[bool] = False
|
|
75
|
+
"""Whether the program discovers SKILL.md skills — its `setup` calls
|
|
76
|
+
`install_skills` with the program's fixed discovery location; configuring
|
|
77
|
+
`skills` on a harness without support is rejected up front."""
|
|
78
|
+
NEEDS_CONTAINER: ClassVar[bool] = True
|
|
79
|
+
"""Whether the program must run in a container runtime: True for every harness
|
|
80
|
+
that installs and drives a third-party program — on the host (subprocess) it
|
|
81
|
+
leaks host state (auth, config, processes) both ways. Only the minimal
|
|
82
|
+
in-house loops (`bash`, `null`) override to False."""
|
|
69
83
|
|
|
70
84
|
def __init__(self, config: ConfigT) -> None:
|
|
71
85
|
self.config = config
|
|
@@ -102,6 +116,28 @@ class Harness(ABC, Generic[ConfigT]):
|
|
|
102
116
|
async def setup(self, runtime: Runtime) -> None:
|
|
103
117
|
"""Provision this harness in `runtime` before its execution timeout starts."""
|
|
104
118
|
|
|
119
|
+
async def install_skills(self, runtime: Runtime, dest: str) -> None:
|
|
120
|
+
"""Upload each `config.skills` folder into `runtime` at `dest/<folder name>` —
|
|
121
|
+
the program's fixed skill discovery location, which a supporting harness's
|
|
122
|
+
`setup` passes."""
|
|
123
|
+
for skill in self.config.skills:
|
|
124
|
+
# Resolve so `.`/`..` entries get their real folder name (and can't
|
|
125
|
+
# place files outside `dest`).
|
|
126
|
+
skill = skill.resolve()
|
|
127
|
+
if not skill.is_dir():
|
|
128
|
+
raise ValueError(f"skill {str(skill)!r} is not a folder")
|
|
129
|
+
executables = []
|
|
130
|
+
for file in sorted(skill.rglob("*")):
|
|
131
|
+
if not file.is_file():
|
|
132
|
+
continue
|
|
133
|
+
target = f"{dest}/{skill.name}/{file.relative_to(skill).as_posix()}"
|
|
134
|
+
await runtime.write(target, file.read_bytes())
|
|
135
|
+
if os.access(file, os.X_OK):
|
|
136
|
+
executables.append(target)
|
|
137
|
+
if executables:
|
|
138
|
+
# `write` moves bytes, not modes; restore the execute bits scripts need.
|
|
139
|
+
await runtime.run(["chmod", "+x", *executables], {})
|
|
140
|
+
|
|
105
141
|
async def run(
|
|
106
142
|
self,
|
|
107
143
|
ctx: ModelContext,
|
|
@@ -41,6 +41,7 @@ class BashHarness(Harness[BashHarnessConfig]):
|
|
|
41
41
|
SUPPORTS_MCP = True
|
|
42
42
|
SUPPORTS_USER_SIM = True
|
|
43
43
|
SUPPORTS_MESSAGE_PROMPT = True
|
|
44
|
+
NEEDS_CONTAINER = False
|
|
44
45
|
|
|
45
46
|
async def setup(self, runtime: Runtime) -> None:
|
|
46
47
|
await runtime.prepare_uv_script(PROGRAM_SOURCE, self.config.resolved_env)
|
{verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/claude_code/harness.py
RENAMED
|
@@ -13,6 +13,7 @@ from verifiers.v1.trace import Trace
|
|
|
13
13
|
CLAUDE_HOME = "/tmp/vf-claude-code-{version}"
|
|
14
14
|
CLAUDE_BIN = f"{CLAUDE_HOME}/.local/bin/claude"
|
|
15
15
|
CLAUDE_CONFIG_DIR = ".vf-claude"
|
|
16
|
+
SKILLS_DIR = f"{CLAUDE_CONFIG_DIR}/skills"
|
|
16
17
|
INSTALL = """
|
|
17
18
|
set -e
|
|
18
19
|
command -v curl >/dev/null || (apt-get update -qq && apt-get install -y -qq curl ca-certificates >/dev/null)
|
|
@@ -30,8 +31,10 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
|
|
|
30
31
|
SUPPORTS_MCP = True
|
|
31
32
|
# images would require streaming inputs
|
|
32
33
|
SUPPORTS_MESSAGE_PROMPT = False
|
|
34
|
+
SUPPORTS_SKILLS = True
|
|
33
35
|
|
|
34
36
|
async def setup(self, runtime: Runtime) -> None:
|
|
37
|
+
await self.install_skills(runtime, SKILLS_DIR)
|
|
35
38
|
home = CLAUDE_HOME.format(version=self.config.version)
|
|
36
39
|
binary = CLAUDE_BIN.format(version=self.config.version)
|
|
37
40
|
script = INSTALL.format(version=self.config.version, home=home)
|
|
@@ -66,13 +69,13 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
|
|
|
66
69
|
"ANTHROPIC_BASE_URL": endpoint.removesuffix("/v1"),
|
|
67
70
|
"ANTHROPIC_API_KEY": secret,
|
|
68
71
|
"CLAUDE_CONFIG_DIR": CLAUDE_CONFIG_DIR,
|
|
72
|
+
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
|
|
69
73
|
"DISABLE_AUTOUPDATER": "1",
|
|
70
74
|
"IS_SANDBOX": "1",
|
|
71
75
|
}
|
|
72
76
|
argv = [
|
|
73
77
|
CLAUDE_BIN.format(version=self.config.version),
|
|
74
78
|
"--print",
|
|
75
|
-
"--bare",
|
|
76
79
|
"--dangerously-skip-permissions",
|
|
77
80
|
"--no-session-persistence",
|
|
78
81
|
"--model",
|
|
@@ -23,6 +23,7 @@ KEY_VAR = "CODEX_INTERCEPT_KEY"
|
|
|
23
23
|
|
|
24
24
|
CODEX_DIR = "/tmp/vf-codex"
|
|
25
25
|
CODEX_BIN = f"{CODEX_DIR}/bin/codex"
|
|
26
|
+
SKILLS_DIR = ".agents/skills"
|
|
26
27
|
INSTALL = r"""
|
|
27
28
|
set -e
|
|
28
29
|
mkdir -p {dir}/bin
|
|
@@ -46,8 +47,10 @@ class CodexHarness(Harness[CodexHarnessConfig]):
|
|
|
46
47
|
APPENDS_SYSTEM_PROMPT = False # TODO
|
|
47
48
|
SUPPORTS_MCP = False # TODO
|
|
48
49
|
SUPPORTS_MESSAGE_PROMPT = True
|
|
50
|
+
SUPPORTS_SKILLS = True
|
|
49
51
|
|
|
50
52
|
async def setup(self, runtime: Runtime) -> None:
|
|
53
|
+
await self.install_skills(runtime, SKILLS_DIR)
|
|
51
54
|
logger.info("codex: ensuring codex %s is installed", self.config.version)
|
|
52
55
|
script = (
|
|
53
56
|
INSTALL.replace("{version}", self.config.version)
|
|
@@ -13,6 +13,7 @@ logger = logging.getLogger(__name__)
|
|
|
13
13
|
|
|
14
14
|
BINARY = "/tmp/vf-kimi-code/bin/kimi"
|
|
15
15
|
KIMI_HOME = ".vf-kimi-code"
|
|
16
|
+
SKILLS_DIR = f"{KIMI_HOME}/skills"
|
|
16
17
|
|
|
17
18
|
INSTALL = r"""
|
|
18
19
|
set -e
|
|
@@ -39,8 +40,10 @@ class KimiCodeHarnessConfig(HarnessConfig):
|
|
|
39
40
|
class KimiCodeHarness(Harness[KimiCodeHarnessConfig]):
|
|
40
41
|
APPENDS_SYSTEM_PROMPT = False
|
|
41
42
|
SUPPORTS_MCP = True
|
|
43
|
+
SUPPORTS_SKILLS = True
|
|
42
44
|
|
|
43
45
|
async def setup(self, runtime: Runtime) -> None:
|
|
46
|
+
await self.install_skills(runtime, SKILLS_DIR)
|
|
44
47
|
logger.info(
|
|
45
48
|
"kimi-code: ensuring Kimi Code %s is installed", self.config.version
|
|
46
49
|
)
|
|
@@ -20,6 +20,7 @@ class NullHarness(Harness[NullHarnessConfig]):
|
|
|
20
20
|
SUPPORTS_USER_SIM = True
|
|
21
21
|
SUPPORTS_MESSAGE_PROMPT = True
|
|
22
22
|
EXECUTES_CODE = False
|
|
23
|
+
NEEDS_CONTAINER = False
|
|
23
24
|
|
|
24
25
|
async def setup(self, runtime: Runtime) -> None:
|
|
25
26
|
await runtime.prepare_uv_script(PROGRAM_SOURCE, self.config.resolved_env)
|
|
@@ -26,6 +26,7 @@ HOME_VAR = "VF_PI_ORIGINAL_HOME"
|
|
|
26
26
|
|
|
27
27
|
PI_DIR = "/tmp/vf-pi"
|
|
28
28
|
PI_BIN = f"{PI_DIR}/pi"
|
|
29
|
+
SKILLS_DIR = ".agents/skills"
|
|
29
30
|
MCP_VERSION = "2.11.0"
|
|
30
31
|
MCP_ADAPTER = f"{PI_DIR}/mcp/node_modules/pi-mcp-adapter/index.ts"
|
|
31
32
|
|
|
@@ -95,8 +96,12 @@ class PiHarness(Harness[PiHarnessConfig]):
|
|
|
95
96
|
APPENDS_SYSTEM_PROMPT = True
|
|
96
97
|
SUPPORTS_MCP = True
|
|
97
98
|
SUPPORTS_MESSAGE_PROMPT = True
|
|
99
|
+
# Pi's project skill discovery is trust-gated (a prompt print mode can't answer),
|
|
100
|
+
# so the installed skills are passed explicitly via `--skill` at launch.
|
|
101
|
+
SUPPORTS_SKILLS = True
|
|
98
102
|
|
|
99
103
|
async def setup(self, runtime: Runtime) -> None:
|
|
104
|
+
await self.install_skills(runtime, SKILLS_DIR)
|
|
100
105
|
logger.info(
|
|
101
106
|
"pi: ensuring Pi %s and pi-mcp-adapter %s are installed",
|
|
102
107
|
self.config.version,
|
|
@@ -234,6 +239,12 @@ class PiHarness(Harness[PiHarnessConfig]):
|
|
|
234
239
|
if self.config.disabled_tools
|
|
235
240
|
else []
|
|
236
241
|
)
|
|
242
|
+
skill_args = [
|
|
243
|
+
arg
|
|
244
|
+
for skill in self.config.skills
|
|
245
|
+
# Resolve like `install_skills` so the path matches what it wrote.
|
|
246
|
+
for arg in ("--skill", f"{SKILLS_DIR}/{skill.resolve().name}")
|
|
247
|
+
]
|
|
237
248
|
system_args = ["--append-system-prompt", system_prompt] if system_prompt else []
|
|
238
249
|
argv = [
|
|
239
250
|
"sh",
|
|
@@ -252,6 +263,7 @@ class PiHarness(Harness[PiHarnessConfig]):
|
|
|
252
263
|
ctx.model,
|
|
253
264
|
*mcp_args,
|
|
254
265
|
*tool_args,
|
|
266
|
+
*skill_args,
|
|
255
267
|
*system_args,
|
|
256
268
|
*image_args,
|
|
257
269
|
]
|
|
@@ -13,6 +13,7 @@ from verifiers.v1.types import SystemMessage, TextContentPart, UserMessage
|
|
|
13
13
|
|
|
14
14
|
POOL_DIR = "/tmp/vf-pool-{version}"
|
|
15
15
|
SETTINGS_PATH = ".poolside/settings.local.yaml"
|
|
16
|
+
SKILLS_DIR = ".poolside/skills"
|
|
16
17
|
INSTALL = r"""
|
|
17
18
|
set -e
|
|
18
19
|
command -v curl >/dev/null || (apt-get update -qq && apt-get install -y -qq curl ca-certificates >/dev/null)
|
|
@@ -35,8 +36,10 @@ class PoolHarness(Harness[PoolHarnessConfig]):
|
|
|
35
36
|
APPENDS_SYSTEM_PROMPT = True
|
|
36
37
|
SUPPORTS_MCP = True
|
|
37
38
|
SUPPORTS_MESSAGE_PROMPT = True
|
|
39
|
+
SUPPORTS_SKILLS = True
|
|
38
40
|
|
|
39
41
|
async def setup(self, runtime: Runtime) -> None:
|
|
42
|
+
await self.install_skills(runtime, SKILLS_DIR)
|
|
40
43
|
directory = POOL_DIR.format(version=self.config.version)
|
|
41
44
|
binary = f"{directory}/pool"
|
|
42
45
|
script = INSTALL.replace("{version}", self.config.version).replace(
|
|
@@ -24,6 +24,7 @@ RLM_REPO = "github.com/PrimeIntellect-ai/rlm.git"
|
|
|
24
24
|
RLM_HOME = ".rlm"
|
|
25
25
|
RLM_DIR = "/tmp/vf-rlm"
|
|
26
26
|
RLM_BIN = f"{RLM_DIR}/bin/rlm"
|
|
27
|
+
SKILLS_DIR = "/task/rlm-skills"
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
class RLMHarnessConfig(HarnessConfig):
|
|
@@ -31,9 +32,9 @@ class RLMHarnessConfig(HarnessConfig):
|
|
|
31
32
|
"""Git ref (branch, tag, or commit) of rlm to install."""
|
|
32
33
|
max_depth: int = 0
|
|
33
34
|
"""Recursion depth rlm may spawn sub-harnesses to (RLM_MAX_DEPTH)."""
|
|
34
|
-
|
|
35
|
+
builtin_skills: list[BuiltinSkill] = []
|
|
35
36
|
"""Built-in rlm skills to enable (RLM_SKILLS), e.g. `["edit"]`; empty enables none.
|
|
36
|
-
The tool set is fixed (ipython);
|
|
37
|
+
The tool set is fixed (ipython); the base `skills` field takes SKILL.md paths."""
|
|
37
38
|
summarize_at_tokens: int | tuple[int, int] | None = None
|
|
38
39
|
"""Auto-compaction threshold (RLM_SUMMARIZE_AT_TOKENS): compact the context once it grows
|
|
39
40
|
past this many tokens. An int is a fixed threshold; a `(lo, hi)` pair draws a per-group
|
|
@@ -63,7 +64,7 @@ class RLMHarnessConfig(HarnessConfig):
|
|
|
63
64
|
if self.disabled_tools:
|
|
64
65
|
raise ValueError(
|
|
65
66
|
"the rlm harness has a fixed tool set (ipython) and does not support "
|
|
66
|
-
"`disabled_tools`; use `
|
|
67
|
+
"`disabled_tools`; use `builtin_skills` to enable built-in skills instead."
|
|
67
68
|
)
|
|
68
69
|
return self
|
|
69
70
|
|
|
@@ -71,8 +72,11 @@ class RLMHarnessConfig(HarnessConfig):
|
|
|
71
72
|
class RLMHarness(Harness[RLMHarnessConfig]):
|
|
72
73
|
APPENDS_SYSTEM_PROMPT = True
|
|
73
74
|
SUPPORTS_MCP = True
|
|
75
|
+
SUPPORTS_SKILLS = True
|
|
74
76
|
|
|
75
77
|
async def setup(self, runtime: Runtime) -> None:
|
|
78
|
+
# Before the installer: install.sh packages the skills it finds.
|
|
79
|
+
await self.install_skills(runtime, SKILLS_DIR)
|
|
76
80
|
# install.sh fetches curl/uv itself; add git only when the image lacks it.
|
|
77
81
|
install = (
|
|
78
82
|
"command -v git >/dev/null 2>&1 || "
|
|
@@ -123,8 +127,8 @@ class RLMHarness(Harness[RLMHarnessConfig]):
|
|
|
123
127
|
}
|
|
124
128
|
if system_prompt is not None:
|
|
125
129
|
env["RLM_APPEND_TO_SYSTEM_PROMPT"] = system_prompt
|
|
126
|
-
if self.config.
|
|
127
|
-
env["RLM_SKILLS"] = ",".join(self.config.
|
|
130
|
+
if self.config.builtin_skills:
|
|
131
|
+
env["RLM_SKILLS"] = ",".join(self.config.builtin_skills)
|
|
128
132
|
if mcp_urls:
|
|
129
133
|
env["RLM_MCP_CONFIG"] = json.dumps(
|
|
130
134
|
{"mcpServers": {name: {"url": url} for name, url in mcp_urls.items()}}
|
{verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/terminus_2/harness.py
RENAMED
|
@@ -18,18 +18,10 @@ class Terminus2HarnessConfig(HarnessConfig):
|
|
|
18
18
|
class Terminus2Harness(Harness[Terminus2HarnessConfig]):
|
|
19
19
|
APPENDS_SYSTEM_PROMPT = True
|
|
20
20
|
SUPPORTS_MCP = False
|
|
21
|
+
# Beyond the usual host leaks, Terminus drives tmux: on the host its tmux server —
|
|
22
|
+
# and the `tmux kill-server` cleanup in `launch` — would share the user's own.
|
|
21
23
|
|
|
22
24
|
async def setup(self, runtime: Runtime) -> None:
|
|
23
|
-
# TODO: Terminus drives tmux; on the host (subprocess) runtime its tmux server — and the
|
|
24
|
-
# `tmux kill-server` cleanup in `launch` — share the host's tmux, so a host run can kill
|
|
25
|
-
# the user's own tmux session. Until tmux is isolated (a dedicated `tmux -L` socket + a
|
|
26
|
-
# created, private TMUX_TMPDIR), refuse the host runtime; run Terminus 2 in a container.
|
|
27
|
-
if runtime.type == "subprocess":
|
|
28
|
-
raise RuntimeError(
|
|
29
|
-
"Terminus 2 drives tmux and is unsafe on the subprocess (host) runtime — its tmux "
|
|
30
|
-
"cleanup can kill the host's tmux server. Run it in a container runtime "
|
|
31
|
-
"(--env.agent.harness.runtime.type docker|prime|modal)."
|
|
32
|
-
)
|
|
33
25
|
source = PROGRAM_SOURCE.replace("{version}", self.config.version)
|
|
34
26
|
await runtime.prepare_uv_script(source, self.config.resolved_env)
|
|
35
27
|
|
|
@@ -95,6 +95,18 @@ def validate_pairing(
|
|
|
95
95
|
f"{task_cls.__name__} exposes tool servers (MCP). Run it with a harness that "
|
|
96
96
|
f"supports MCP (e.g. --env.agent.harness.id bash), or use tasks without tools."
|
|
97
97
|
)
|
|
98
|
+
if not harness.SUPPORTS_SKILLS and harness.config.skills:
|
|
99
|
+
raise ValueError(
|
|
100
|
+
f"Harness {harness.config.id!r} has no native skill support, but "
|
|
101
|
+
"`skills` is set. Run them with a harness whose program discovers "
|
|
102
|
+
"skills (e.g. --env.agent.harness.id claude-code)."
|
|
103
|
+
)
|
|
104
|
+
if harness.NEEDS_CONTAINER and isinstance(runtime_config, SubprocessConfig):
|
|
105
|
+
raise ValueError(
|
|
106
|
+
f"Harness {harness.config.id!r} needs a container runtime "
|
|
107
|
+
"(NEEDS_CONTAINER), but this run resolves to the subprocess runtime; "
|
|
108
|
+
"use --env.agent.harness.runtime.type docker or prime."
|
|
109
|
+
)
|
|
98
110
|
if not harness.SUPPORTS_USER_SIM and task_cls.user is not None:
|
|
99
111
|
raise ValueError(
|
|
100
112
|
f"Harness {harness.config.id!r} does not drive a user simulator, but "
|
|
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.dev17 → verifiers-0.2.2.dev18}/tests/test_openai_chat_completions_token_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/anthropic_messages_client.py
RENAMED
|
File without changes
|
|
File without changes
|