verifiers 0.1.15.dev410__tar.gz → 0.1.15.dev412__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.1.15.dev410 → verifiers-0.1.15.dev412}/PKG-INFO +1 -1
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/GUIDE.md +1 -1
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/validate.py +8 -1
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/default/harness.py +43 -9
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/default/program.py +100 -9
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/rollout.py +5 -2
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/taskset.py +8 -2
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/.gitignore +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/LICENSE +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/pyproject.toml +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/AGENTS.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/conftest.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_browser_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_build_script.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_client_config.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_composable_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_env_group.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_env_server.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_environment.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_environment_extra.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_envs.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_error_chain.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_eval_display.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_eval_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_gym_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_imports.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_init_script.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_install_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_interception_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_logging.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_math_rubric.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_message_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_openenv_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_parser.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_path_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_renderer_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_rubric.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_rubric_group.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_save_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_setup_script.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_think_parser.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_tool_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_tool_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_types.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_wordle_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/test_xml_parser.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/conftest.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/test_configs.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/test_e2e.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/test_envs.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/test_graph.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/test_trace.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/AGENTS.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/cli/tui.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/clients/client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/clients/renderer_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/decorators.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/AGENTS.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/environment.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/openseeker/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/openseeker/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/openseeker/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/tool_pdf.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/eval_toolkit.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/evaluator.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/base_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/cache_prompts.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/cache_filesys.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/load_eval_script.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/misc.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/tool_visit.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/url_tools.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/verification_tree.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/open_ended.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/quest/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/search/search_tasksets.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/errors.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/gepa/config.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/gepa/display.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rl/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rl/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rl/inference/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rl/inference/client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rl/inference/server.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rl/trainer/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rl/trainer/config.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rl/trainer/orchestrator.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rl/trainer/trainer.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rl/trainer/utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/scripts/build.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/scripts/init.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/scripts/install.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/scripts/rl.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/scripts/train.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/scripts/vllm.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/serve/types.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/types.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/ARCHITECTURE.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/README.md +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/cli/serve.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/clients/config.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/configs/eval.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/configs/init.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/configs/validate.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/decorators.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/env.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/episode.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/errors.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/graph.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harness.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/default/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/null/program.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/judge.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/loaders.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/mcp/multiplex.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/mcp/user.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/retries.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/runtimes/docker.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/state.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/task.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/trace.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/types.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/utils/memory.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.1.15.
|
|
3
|
+
Version: 0.1.15.dev412
|
|
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
|
|
@@ -552,7 +552,7 @@ Otherwise pick a built-in, selected with `--harness.id`:
|
|
|
552
552
|
|
|
553
553
|
| id | what it is |
|
|
554
554
|
| --- | --- |
|
|
555
|
-
| `default` | a `bash` + `edit` coding agent (
|
|
555
|
+
| `default` | a `bash` + `edit` coding agent (`edit` on by default — `--harness.edit false` for bash-only; `--harness.search true` adds a serper.dev `search` tool) — the fallback when no harness is given |
|
|
556
556
|
| `null` | a tiny OpenAI chat loop (MCP tools only, no tools of its own) |
|
|
557
557
|
| `rlm` | the RLM CLI agent |
|
|
558
558
|
| `codex` | the Codex CLI (Responses dialect + SSE relay) |
|
|
@@ -29,9 +29,12 @@ from verifiers.v1.cli.resolve import (
|
|
|
29
29
|
with_positional_taskset,
|
|
30
30
|
)
|
|
31
31
|
from verifiers.v1.configs.validate import ValidateConfig
|
|
32
|
+
from verifiers.v1.decorators import invoke
|
|
32
33
|
from verifiers.v1.env import resolve_runtime_config
|
|
33
34
|
from verifiers.v1.runtimes import make_runtime
|
|
35
|
+
from verifiers.v1.state import state_cls
|
|
34
36
|
from verifiers.v1.taskset import Taskset
|
|
37
|
+
from verifiers.v1.trace import Trace
|
|
35
38
|
|
|
36
39
|
logger = logging.getLogger(__name__)
|
|
37
40
|
|
|
@@ -81,8 +84,12 @@ async def _validate_task(taskset: Taskset, task, config: ValidateConfig) -> dict
|
|
|
81
84
|
)
|
|
82
85
|
valid, exc = False, None
|
|
83
86
|
try:
|
|
87
|
+
trace = Trace(task=task, state=state_cls(type(taskset))())
|
|
84
88
|
await runtime.start()
|
|
85
|
-
await asyncio.wait_for(
|
|
89
|
+
await asyncio.wait_for(
|
|
90
|
+
invoke(taskset.setup, {"task": task, "trace": trace, "runtime": runtime}),
|
|
91
|
+
setup_timeout,
|
|
92
|
+
)
|
|
86
93
|
valid = await asyncio.wait_for(
|
|
87
94
|
taskset.validate(task, runtime), config.validate_timeout
|
|
88
95
|
)
|
{verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/default/harness.py
RENAMED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
"""The built-in default harness: a chat loop with a local `bash` tool
|
|
1
|
+
"""The built-in default harness: a chat loop with a local `bash` tool, plus optional `edit`/`search`.
|
|
2
2
|
|
|
3
3
|
A growing-message-list chat loop with a local `bash` tool that runs shell commands in the runtime,
|
|
4
|
-
the taskset's MCP tools, and
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
`--harness.id` is given. Its uv script
|
|
8
|
-
as the harness program. For a pure chat
|
|
4
|
+
the taskset's MCP tools, and two optional local tools: `edit` (single-occurrence string replacement
|
|
5
|
+
in a file, ported from the rlm `edit` skill; on by default — a model handles it more reliably than
|
|
6
|
+
hand-built `sed`/heredoc shell) and `search` (Google results via serper.dev; off by default, needs
|
|
7
|
+
`SERPER_API_KEY`). This is the fallback harness when no `--harness.id` is given. Its uv script
|
|
8
|
+
(deps: openai, mcp) is prepared during setup, then launched as the harness program. For a pure chat
|
|
9
|
+
loop with no local tools, use the `null` harness.
|
|
9
10
|
"""
|
|
10
11
|
|
|
11
12
|
import json
|
|
13
|
+
import os
|
|
12
14
|
from pathlib import Path
|
|
13
15
|
|
|
14
16
|
from verifiers.v1.harness import Harness, HarnessConfig
|
|
@@ -27,6 +29,11 @@ BASH_SYSTEM_PROMPT = (
|
|
|
27
29
|
EDIT_SYSTEM_PROMPT = (
|
|
28
30
|
"You also have an edit tool for single-occurrence string replacement in a file."
|
|
29
31
|
)
|
|
32
|
+
# Appended when search is enabled, so the model knows the extra tool exists.
|
|
33
|
+
SEARCH_PROMPT = (
|
|
34
|
+
"You also have a search tool that returns Google results (title, URL, snippet) for a query; "
|
|
35
|
+
"use it to research, and use bash (e.g. curl) to read result pages in full when needed."
|
|
36
|
+
)
|
|
30
37
|
|
|
31
38
|
|
|
32
39
|
class DefaultHarnessConfig(HarnessConfig):
|
|
@@ -37,6 +44,11 @@ class DefaultHarnessConfig(HarnessConfig):
|
|
|
37
44
|
"""Offer the local `edit` tool (single-occurrence string replacement in a file) alongside
|
|
38
45
|
`bash`. On by default; set `--harness.edit false` for a bash-only agent."""
|
|
39
46
|
|
|
47
|
+
search: bool = False
|
|
48
|
+
"""Offer a `search` tool (Google web results via serper.dev). Requires `SERPER_API_KEY` in the
|
|
49
|
+
eval environment; the key is handed to the program over argv (like the interception secret) so
|
|
50
|
+
the agent's `bash` subprocesses don't inherit it."""
|
|
51
|
+
|
|
40
52
|
|
|
41
53
|
class DefaultHarness(Harness[DefaultHarnessConfig]):
|
|
42
54
|
APPENDS_SYSTEM_PROMPT = True
|
|
@@ -57,10 +69,14 @@ class DefaultHarness(Harness[DefaultHarnessConfig]):
|
|
|
57
69
|
mcp_urls: dict[str, str],
|
|
58
70
|
) -> ProgramResult:
|
|
59
71
|
system_prompt, prompt = self.resolve_prompt(trace.task)
|
|
60
|
-
|
|
72
|
+
fragments = [BASH_SYSTEM_PROMPT]
|
|
61
73
|
if self.config.edit:
|
|
62
|
-
|
|
63
|
-
|
|
74
|
+
fragments.append(EDIT_SYSTEM_PROMPT)
|
|
75
|
+
if self.config.search:
|
|
76
|
+
fragments.append(SEARCH_PROMPT)
|
|
77
|
+
system_prompt = "\n\n".join(
|
|
78
|
+
p for p in (" ".join(fragments), system_prompt) if p
|
|
79
|
+
)
|
|
64
80
|
env = {**self.config.resolved_env}
|
|
65
81
|
args = [
|
|
66
82
|
f"--base-url={endpoint}",
|
|
@@ -70,6 +86,24 @@ class DefaultHarness(Harness[DefaultHarnessConfig]):
|
|
|
70
86
|
]
|
|
71
87
|
if self.config.edit:
|
|
72
88
|
args.append("--edit")
|
|
89
|
+
if self.config.search:
|
|
90
|
+
# Resolve the key and keep it OUT of the program env: it's handed to the program over
|
|
91
|
+
# argv (--serper-key), so popping it here stops the agent's `bash` subprocesses from
|
|
92
|
+
# inheriting it via $SERPER_API_KEY / /proc/self/environ. Prefer a key set in the harness
|
|
93
|
+
# env (--harness.env / forward_env); fall back to the host env only when the key is
|
|
94
|
+
# *absent* (None), not present-but-empty — a rollout setting SERPER_API_KEY="" is
|
|
95
|
+
# deliberately masking the host secret, so honor that (the check below then fails loudly
|
|
96
|
+
# rather than leaking the host key). The pop is scoped to search=true, so an unrelated
|
|
97
|
+
# key forwarded for the agent's own bash-side use is left untouched.
|
|
98
|
+
serper_key = env.pop("SERPER_API_KEY", None)
|
|
99
|
+
if serper_key is None:
|
|
100
|
+
serper_key = os.environ.get("SERPER_API_KEY")
|
|
101
|
+
if not serper_key:
|
|
102
|
+
raise ValueError(
|
|
103
|
+
"default search=true requires SERPER_API_KEY in the eval environment "
|
|
104
|
+
"(the host env or --harness.env)"
|
|
105
|
+
)
|
|
106
|
+
args += ["--search", f"--serper-key={serper_key}"]
|
|
73
107
|
if mcp_urls:
|
|
74
108
|
# The program connects to the tool servers over HTTP; hand it a standard
|
|
75
109
|
# `mcpServers` URL config (the `mcp` client itself comes from the uv deps).
|
{verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/v1/harnesses/default/program.py
RENAMED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
# /// script
|
|
2
2
|
# requires-python = ">=3.10"
|
|
3
|
-
# dependencies = ["openai", "mcp"]
|
|
3
|
+
# dependencies = ["openai", "mcp", "httpx"]
|
|
4
4
|
# ///
|
|
5
|
-
"""The default harness's program: a chat loop with a local `bash` tool (+ optional `edit`, MCP).
|
|
5
|
+
"""The default harness's program: a chat loop with a local `bash` tool (+ optional `edit`, `search`, MCP).
|
|
6
6
|
|
|
7
7
|
A growing-message-list chat loop. It always offers a local `bash` tool that runs shell commands in
|
|
8
8
|
the runtime; with `--edit` it also offers a local `edit` tool that replaces a unique string in a
|
|
9
|
-
file
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
file, and with `--search` a `search` tool (Serper Google search). When the harness sets
|
|
10
|
+
MCP_CONFIG (a standard `mcpServers` URL map) it also connects to those servers over streamable
|
|
11
|
+
HTTP, exposes their tools to the model as `<server>_<tool>`, and routes those calls to the server.
|
|
12
|
+
The loop runs until the model answers without a tool call.
|
|
12
13
|
|
|
13
|
-
It runs as a uv script (deps: openai, mcp), so the chat + tool plumbing is just the SDKs —
|
|
14
|
-
harness bootstraps `uv` in the runtime. The interception endpoint, per-rollout secret,
|
|
15
|
-
arrive as argv (not env), so the local tools' subprocesses never inherit them.
|
|
14
|
+
It runs as a uv script (deps: openai, mcp, httpx), so the chat + tool plumbing is just the SDKs —
|
|
15
|
+
the harness bootstraps `uv` in the runtime. The interception endpoint, per-rollout secret, model,
|
|
16
|
+
and serper key arrive as argv (not env), so the local tools' subprocesses never inherit them.
|
|
16
17
|
"""
|
|
17
18
|
|
|
18
19
|
import argparse
|
|
@@ -23,8 +24,11 @@ import subprocess
|
|
|
23
24
|
from contextlib import AsyncExitStack
|
|
24
25
|
from pathlib import Path
|
|
25
26
|
|
|
27
|
+
import httpx
|
|
26
28
|
from openai import AsyncOpenAI
|
|
27
29
|
|
|
30
|
+
SERPER_URL = "https://google.serper.dev/search"
|
|
31
|
+
|
|
28
32
|
BASH_TOOL = {
|
|
29
33
|
"type": "function",
|
|
30
34
|
"function": {
|
|
@@ -66,6 +70,77 @@ EDIT_TOOL = {
|
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
|
|
73
|
+
SEARCH_TOOL = {
|
|
74
|
+
"type": "function",
|
|
75
|
+
"function": {
|
|
76
|
+
"name": "search",
|
|
77
|
+
"description": (
|
|
78
|
+
"Run a web search via Serper (Google) and return the top organic results as title, "
|
|
79
|
+
"URL, and snippet. Issue focused queries and call it several times to cover different "
|
|
80
|
+
"angles; use the bash tool (e.g. curl) to read a result page in full."
|
|
81
|
+
),
|
|
82
|
+
"parameters": {
|
|
83
|
+
"type": "object",
|
|
84
|
+
"properties": {
|
|
85
|
+
"query": {"type": "string", "description": "The search query."},
|
|
86
|
+
"num_results": {
|
|
87
|
+
"type": "integer",
|
|
88
|
+
"description": "Number of results to return (default 5).",
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
"required": ["query"],
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def format_results(results, query: str) -> str:
|
|
98
|
+
"""Format Serper organic results as title/URL/snippet blocks."""
|
|
99
|
+
sections = []
|
|
100
|
+
for i, result in enumerate(results, 1):
|
|
101
|
+
title = (result.get("title") or "").strip() or "Untitled"
|
|
102
|
+
lines = [f"Result {i}: {title}"]
|
|
103
|
+
link = (result.get("link") or "").strip()
|
|
104
|
+
if link:
|
|
105
|
+
lines.append(f"URL: {link}")
|
|
106
|
+
snippet = (result.get("snippet") or "").strip()
|
|
107
|
+
if snippet:
|
|
108
|
+
lines.append(f" - {snippet}")
|
|
109
|
+
sections.append("\n".join(lines))
|
|
110
|
+
if not sections:
|
|
111
|
+
return f"No results returned for query: {query}"
|
|
112
|
+
return "\n\n---\n\n".join(sections)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def run_search(query: str, api_key: str, num_results: int = 5) -> str:
|
|
116
|
+
"""Serper Google web search -> formatted organic results.
|
|
117
|
+
|
|
118
|
+
The key arrives as an argument (handed in by the harness over argv, like the interception
|
|
119
|
+
secret) instead of from `$SERPER_API_KEY`, so the agent's `bash` subprocesses never inherit it.
|
|
120
|
+
The whole call is wrapped so a bad query or malformed payload becomes a tool error rather than
|
|
121
|
+
raising out of the chat loop and killing the rollout."""
|
|
122
|
+
if not api_key:
|
|
123
|
+
return "Error: no Serper API key (SERPER_API_KEY was not set in the eval environment)"
|
|
124
|
+
# num_results comes straight from model tool JSON, so it may be a non-int (e.g. "ten"); coerce
|
|
125
|
+
# defensively — `organic[:num_results]` would otherwise raise on a bad slice.
|
|
126
|
+
try:
|
|
127
|
+
num_results = max(1, int(num_results))
|
|
128
|
+
except (TypeError, ValueError):
|
|
129
|
+
num_results = 5
|
|
130
|
+
try:
|
|
131
|
+
response = httpx.post(
|
|
132
|
+
SERPER_URL,
|
|
133
|
+
json={"q": query},
|
|
134
|
+
headers={"X-API-KEY": api_key, "Content-Type": "application/json"},
|
|
135
|
+
timeout=45,
|
|
136
|
+
)
|
|
137
|
+
response.raise_for_status()
|
|
138
|
+
organic = response.json().get("organic") or []
|
|
139
|
+
return format_results(organic[:num_results], query)
|
|
140
|
+
except Exception as e:
|
|
141
|
+
return f"search failed ({e}). Try again or rephrase the query."
|
|
142
|
+
|
|
143
|
+
|
|
69
144
|
def run_bash(command: str) -> str:
|
|
70
145
|
try:
|
|
71
146
|
result = subprocess.run(
|
|
@@ -183,12 +258,19 @@ def parse_args() -> argparse.Namespace:
|
|
|
183
258
|
parser.add_argument("--prompt", default="")
|
|
184
259
|
parser.add_argument("--mcp-config", default="")
|
|
185
260
|
parser.add_argument("--edit", action="store_true")
|
|
261
|
+
parser.add_argument("--search", action="store_true")
|
|
262
|
+
parser.add_argument("--serper-key", default="")
|
|
186
263
|
return parser.parse_args()
|
|
187
264
|
|
|
188
265
|
|
|
189
266
|
async def main() -> None:
|
|
190
267
|
args = parse_args()
|
|
191
|
-
client
|
|
268
|
+
# No client-side retries: re-sending a request whose turn the interception already committed
|
|
269
|
+
# re-samples it and forks the trace into an extra dead-end branch. A generous timeout lets a
|
|
270
|
+
# slow turn finish instead of timing out and re-sending; genuine failures surface as error rows.
|
|
271
|
+
client = AsyncOpenAI(
|
|
272
|
+
base_url=args.base_url, api_key=args.api_key, timeout=1800.0, max_retries=0
|
|
273
|
+
)
|
|
192
274
|
config = json.loads(args.mcp_config or "{}")
|
|
193
275
|
async with AsyncExitStack() as stack:
|
|
194
276
|
mcp_tools, dispatch = (
|
|
@@ -197,6 +279,8 @@ async def main() -> None:
|
|
|
197
279
|
tools = [BASH_TOOL]
|
|
198
280
|
if args.edit:
|
|
199
281
|
tools.append(EDIT_TOOL)
|
|
282
|
+
if args.search:
|
|
283
|
+
tools.append(SEARCH_TOOL)
|
|
200
284
|
tools += mcp_tools
|
|
201
285
|
messages = (
|
|
202
286
|
[{"role": "system", "content": args.system_prompt}]
|
|
@@ -254,6 +338,13 @@ async def main() -> None:
|
|
|
254
338
|
tool_args.get("old_str"),
|
|
255
339
|
tool_args.get("new_str"),
|
|
256
340
|
)
|
|
341
|
+
elif name == "search" and args.search:
|
|
342
|
+
content = await asyncio.to_thread(
|
|
343
|
+
run_search,
|
|
344
|
+
tool_args.get("query", ""),
|
|
345
|
+
args.serper_key,
|
|
346
|
+
tool_args.get("num_results", 5),
|
|
347
|
+
)
|
|
257
348
|
else:
|
|
258
349
|
content = f"error: unknown tool {name!r}"
|
|
259
350
|
messages.append(
|
|
@@ -20,7 +20,7 @@ from enum import StrEnum
|
|
|
20
20
|
|
|
21
21
|
from verifiers.v1.harness import Harness
|
|
22
22
|
from verifiers.v1.clients import RolloutContext
|
|
23
|
-
from verifiers.v1.decorators import discover_decorated
|
|
23
|
+
from verifiers.v1.decorators import discover_decorated, invoke
|
|
24
24
|
from verifiers.v1.errors import (
|
|
25
25
|
HarnessError,
|
|
26
26
|
RolloutError,
|
|
@@ -165,7 +165,10 @@ class Rollout:
|
|
|
165
165
|
boundary(TasksetError, "taskset setup"),
|
|
166
166
|
asyncio.timeout_at(setup_deadline),
|
|
167
167
|
):
|
|
168
|
-
await
|
|
168
|
+
await invoke(
|
|
169
|
+
self.taskset.setup,
|
|
170
|
+
{"task": self.task, "trace": trace, "runtime": runtime},
|
|
171
|
+
)
|
|
169
172
|
async with (
|
|
170
173
|
boundary(HarnessError, "harness setup"),
|
|
171
174
|
asyncio.timeout_at(setup_deadline),
|
|
@@ -80,10 +80,16 @@ class Taskset(Generic[TaskT, ConfigT, StateT]):
|
|
|
80
80
|
multi-turn conversation (e.g. a TextArena game)."""
|
|
81
81
|
return None
|
|
82
82
|
|
|
83
|
-
async def setup(self, task: TaskT, runtime: Runtime) -> None:
|
|
83
|
+
async def setup(self, task: TaskT, trace: Trace, runtime: Runtime) -> None:
|
|
84
84
|
"""Prepare the live runtime for this task, after `runtime.start()` and before the
|
|
85
85
|
harness runs. No-op by default; override to run per-task setup in the runtime (e.g.
|
|
86
|
-
a SWE row checking out its base commit). Errors propagate and fail the rollout.
|
|
86
|
+
a SWE row checking out its base commit). Errors propagate and fail the rollout.
|
|
87
|
+
|
|
88
|
+
Like the scoring hooks, `setup` declares the inputs it needs *by parameter name* and
|
|
89
|
+
the framework injects them: any subset of `task`, `trace`, `runtime`. The trace (and
|
|
90
|
+
its per-rollout `trace.state`) already exists when `setup` runs, so an override may
|
|
91
|
+
stash per-rollout state there — e.g. `setup(self, task, trace, runtime)` or the
|
|
92
|
+
legacy `setup(self, task, runtime)` both work."""
|
|
87
93
|
return None
|
|
88
94
|
|
|
89
95
|
async def finalize(self, task: TaskT, trace: Trace, runtime: Runtime) -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.1.15.dev410 → verifiers-0.1.15.dev412}/tests/v1/fixtures/tool_response_image_v1.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
|
{verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/clients/anthropic_messages_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/clients/openai_completions_client.py
RENAMED
|
File without changes
|
{verifiers-0.1.15.dev410 → verifiers-0.1.15.dev412}/verifiers/clients/openai_responses_client.py
RENAMED
|
File without changes
|