verifiers 0.2.2.dev8__tar.gz → 0.2.2.dev10__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.dev8 → verifiers-0.2.2.dev10}/PKG-INFO +1 -1
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/fixtures/duet_v1.py +1 -1
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/test_e2e.py +4 -4
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/agent.py +1 -1
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/dashboard/eval.py +5 -5
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/eval/runner.py +1 -1
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/configs/eval.py +1 -1
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/env.py +11 -11
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/envs/agentic_judge/env.py +1 -1
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/envs/best_of_n/env.py +1 -1
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/episode.py +2 -2
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/gepa/adapter.py +2 -2
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/retries.py +4 -4
- verifiers-0.2.2.dev8/tests/AGENTS.md +0 -5
- verifiers-0.2.2.dev8/verifiers/envs/AGENTS.md +0 -72
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/.gitignore +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/LICENSE +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/README.md +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/pyproject.toml +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/conftest.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_browser_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_build_script.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_client_config.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_composable_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_env_group.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_env_server.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_environment.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_environment_extra.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_error_chain.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_eval_display.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_eval_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_gym_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_imports.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_init_script.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_install_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_interception_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_logging.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_math_rubric.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_message_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_openenv_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_parser.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_path_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_renderer_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_rubric.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_rubric_group.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_save_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_setup_script.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_think_parser.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_tool_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_tool_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_types.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/test_xml_parser.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/conftest.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/test_configs.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/test_envs.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/test_graph.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/test_judges.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/tests/v1/test_trace.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/cli/tui.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/clients/client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/clients/renderer_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/decorators.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/environment.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/errors.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/gepa/config.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/gepa/display.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/scripts/build.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/scripts/init.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/scripts/install.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/serve/types.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/types.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/serve.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/clients/config.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/configs/debug.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/configs/init.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/configs/replay.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/configs/validate.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/decorators.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/errors.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/graph.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harness.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/bash/program.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/null/program.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/pool/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/pool/harness.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/judge.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/loaders.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/mcp/user.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/push.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/runtimes/docker.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/scoring.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/session.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/state.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/task.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/trace.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/types.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/verifiers/v1/utils/sampling.py +0 -0
- {verifiers-0.2.2.dev8 → verifiers-0.2.2.dev10}/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.dev10
|
|
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
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
The multi-agent fixture for the v1 e2e suite (resolved by id `duet-v1`): an
|
|
4
4
|
`Env` subclass exported alongside its taskset, with two roles ("a", a trainable
|
|
5
5
|
seat on the run's model; "b", pinned untrainable), a `run()` that fans both out on
|
|
6
|
-
the task, and a `finalize()` that records a sibling-dependent signal. One
|
|
6
|
+
the task, and a `finalize()` that records a sibling-dependent signal. One episode
|
|
7
7
|
should land one record carrying two role-stamped traces.
|
|
8
8
|
"""
|
|
9
9
|
|
|
@@ -265,8 +265,8 @@ async def test_agentic(run_v1, harness, harness_runtime, tmp_path):
|
|
|
265
265
|
@pytest.mark.e2e
|
|
266
266
|
async def test_multi_agent_env(run_v1, tmp_path):
|
|
267
267
|
"""An `Env` subclass shipped with its taskset (duet-v1): two roles run the
|
|
268
|
-
task, `score()` episodes a sibling-dependent metric, and one
|
|
269
|
-
|
|
268
|
+
task, `score()` episodes a sibling-dependent metric, and one episode carries
|
|
269
|
+
two role-stamped traces."""
|
|
270
270
|
import json
|
|
271
271
|
|
|
272
272
|
traces = await run_v1(
|
|
@@ -275,7 +275,7 @@ async def test_multi_agent_env(run_v1, tmp_path):
|
|
|
275
275
|
output_dir=tmp_path,
|
|
276
276
|
max_turns=2,
|
|
277
277
|
)
|
|
278
|
-
assert len(traces) == 2 # one
|
|
278
|
+
assert len(traces) == 2 # one episode, one trace per role
|
|
279
279
|
assert sorted(t.agent_name for t in traces) == ["a", "b"]
|
|
280
280
|
(b,) = [t for t in traces if t.agent_name == "b"]
|
|
281
281
|
assert b.trainable is False
|
|
@@ -305,7 +305,7 @@ async def test_env_id_best_of_n(run_v1, tmp_path):
|
|
|
305
305
|
output_dir=tmp_path,
|
|
306
306
|
max_turns=2,
|
|
307
307
|
)
|
|
308
|
-
assert len(traces) == 2 # one
|
|
308
|
+
assert len(traces) == 2 # one episode, two attempts
|
|
309
309
|
assert all(t.agent_name == "agent" and t.ok for t in traces)
|
|
310
310
|
assert any(t.metrics["best"] == 1.0 for t in traces)
|
|
311
311
|
assert all(t.metrics["pass_at_n"] == 1.0 for t in traces) # echo always passes
|
|
@@ -350,7 +350,7 @@ class Agent:
|
|
|
350
350
|
|
|
351
351
|
|
|
352
352
|
class _EpisodeAgent(Agent):
|
|
353
|
-
"""One role's `Agent` for one
|
|
353
|
+
"""One role's `Agent` for one episode, built fresh each time (a cheap
|
|
354
354
|
bundle of references — expensive resources are env-owned and borrowed, so no
|
|
355
355
|
state spans concurrent episodes): traces get their agent standing the moment
|
|
356
356
|
they're created, finished ones land in `completed` (the episode's traces),
|
|
@@ -291,7 +291,7 @@ def Progress(
|
|
|
291
291
|
) -> Group:
|
|
292
292
|
# On resume, `slots` includes the previous session's kept rollouts (as finished slots), so
|
|
293
293
|
# progress, reward, err, and the breakdown cover the whole run, not just this session's.
|
|
294
|
-
done = [s for s in slots if s.done] # fully scored
|
|
294
|
+
done = [s for s in slots if s.done] # fully scored episodes
|
|
295
295
|
done_traces = [t for s in done for t in s.traces]
|
|
296
296
|
# Score aggregates read the policy's traces: auxiliary roles (a judge's verdict
|
|
297
297
|
# run, a modeled user) are `trainable=False` and carry no rewards, so counting
|
|
@@ -300,7 +300,7 @@ def Progress(
|
|
|
300
300
|
scored = [t for t in done_traces if t.trainable] or done_traces
|
|
301
301
|
total = len(slots)
|
|
302
302
|
# Headline reward = mean over non-errored traces; when any errored, `format_mean` appends
|
|
303
|
-
# the global avg (errored count as 0) in parens. `err` is the share of
|
|
303
|
+
# the global avg (errored count as 0) in parens. `err` is the share of episodes that
|
|
304
304
|
# ended not-ok (a trace errored, or the env's rollout()/score() hook itself failed).
|
|
305
305
|
reward = format_mean(scored, lambda t: t.reward)
|
|
306
306
|
err = (
|
|
@@ -477,7 +477,7 @@ def _stage(trace: Trace) -> str:
|
|
|
477
477
|
"""The stage a live (not-yet-done) rollout is in, derived from its trace's timing
|
|
478
478
|
spans — the engine opens and closes each span exactly at the stage transitions, so
|
|
479
479
|
the current stage is the latest span started but not yet ended. A completed trace
|
|
480
|
-
whose slot isn't done is waiting on its
|
|
480
|
+
whose slot isn't done is waiting on its episode's other traces (and the env's
|
|
481
481
|
`score()`) — that's scoring."""
|
|
482
482
|
if trace.is_completed:
|
|
483
483
|
return "scoring"
|
|
@@ -531,7 +531,7 @@ def _brace(i: int, size: int) -> str:
|
|
|
531
531
|
|
|
532
532
|
def Rows(groups: list[list[RunSlot]], now: float, runtime_type: str) -> Table:
|
|
533
533
|
# (brace, state, left sections, result, time); a slot contributes one row per live
|
|
534
|
-
# trace (a multi-agent
|
|
534
|
+
# trace (a multi-agent episode shows each role's trace), braced per task.
|
|
535
535
|
rows: list[tuple[str, str, list[str], str, str]] = []
|
|
536
536
|
for group in groups:
|
|
537
537
|
group_rows: list[tuple[str, list[str], str, str]] = []
|
|
@@ -572,7 +572,7 @@ def Rows(groups: list[list[RunSlot]], now: float, runtime_type: str) -> Table:
|
|
|
572
572
|
): # flag a clipped rollout next to its stop condition
|
|
573
573
|
stop = f"{stop} (truncated)".strip()
|
|
574
574
|
elif t.is_completed and (err := t.error) is not None:
|
|
575
|
-
# An errored trace whose
|
|
575
|
+
# An errored trace whose episode is still running its other
|
|
576
576
|
# traces (or `score()`) is already a failure — show it, don't
|
|
577
577
|
# let it sit as "scoring" until the whole episode lands.
|
|
578
578
|
state, result, stop = "error", err.type, ""
|
|
@@ -33,7 +33,7 @@ class EvalConfig(EnvServerConfig):
|
|
|
33
33
|
"group_size", "rollouts_per_example", "num_rollouts", "r"
|
|
34
34
|
),
|
|
35
35
|
)
|
|
36
|
-
"""Independent
|
|
36
|
+
"""Independent episodes per task — the trainer's group size."""
|
|
37
37
|
shuffle: bool = Field(False, validation_alias=AliasChoices("shuffle", "s"))
|
|
38
38
|
"""Shuffle tasks before taking the first `num_tasks`."""
|
|
39
39
|
max_concurrent: int | None = Field(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""Compose a taskset, its agents, and how one task becomes one
|
|
1
|
+
"""Compose a taskset, its agents, and how one task becomes one episode."""
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import contextlib
|
|
@@ -196,7 +196,7 @@ def _as_error(e: Exception) -> Error:
|
|
|
196
196
|
|
|
197
197
|
@dataclass
|
|
198
198
|
class RunSlot:
|
|
199
|
-
"""One planned
|
|
199
|
+
"""One planned episode, observable while it happens: `traces` collects the
|
|
200
200
|
current attempt (a retry restarts the list), `episode`/`done` land when final."""
|
|
201
201
|
|
|
202
202
|
task: Task
|
|
@@ -218,7 +218,7 @@ ConfigT = TypeVar("ConfigT", bound=EnvConfig)
|
|
|
218
218
|
|
|
219
219
|
|
|
220
220
|
class Env(ABC, Generic[ConfigT]):
|
|
221
|
-
"""A taskset, the agents that play it, and how one task becomes one
|
|
221
|
+
"""A taskset, the agents that play it, and how one task becomes one episode.
|
|
222
222
|
|
|
223
223
|
Abstract: every run gets a concrete subclass — `SingleAgentEnv` for every plain
|
|
224
224
|
taskset. A multi-agent env declares each role as an `AgentConfig` field on an
|
|
@@ -298,10 +298,10 @@ class Env(ABC, Generic[ConfigT]):
|
|
|
298
298
|
|
|
299
299
|
@abstractmethod
|
|
300
300
|
async def run(self, task: Task, agents: Agents) -> None:
|
|
301
|
-
"""One
|
|
301
|
+
"""One episode: how the agents interact on `task`, returning nothing —
|
|
302
302
|
every finished run joins the episode automatically, stamped with its seat's
|
|
303
303
|
standing. An agent-run failure is data on its trace (this hook decides what
|
|
304
|
-
it means); an exception raised here is the
|
|
304
|
+
it means); an exception raised here is the episode itself failing."""
|
|
305
305
|
|
|
306
306
|
async def finalize(self, task: Task, episode: Episode) -> None:
|
|
307
307
|
"""Cross-agent judgement — THE programmable judgement surface: plain
|
|
@@ -309,11 +309,11 @@ class Env(ABC, Generic[ConfigT]):
|
|
|
309
309
|
ran on each trace's own task). `episode.traces` is the flat episode in
|
|
310
310
|
completion order, each trace's `agent_name` stamp naming its agent; attach
|
|
311
311
|
signals via `record_reward`/`record_metric`, in program order. A raise
|
|
312
|
-
fails the
|
|
312
|
+
fails the episode (the retryable unit) — validate strictly, never
|
|
313
313
|
record a guess."""
|
|
314
314
|
|
|
315
315
|
def complete(self, episode: Episode) -> bool:
|
|
316
|
-
"""Whether a finished
|
|
316
|
+
"""Whether a finished episode is a valid result — what `--resume` keeps
|
|
317
317
|
vs. redoes (default `episode.ok`). An env whose `run()` tolerates a
|
|
318
318
|
failed participant overrides this, else resume re-runs accepted rollouts."""
|
|
319
319
|
return episode.ok
|
|
@@ -340,7 +340,7 @@ class Env(ABC, Generic[ConfigT]):
|
|
|
340
340
|
on_trace: Callable[[Trace], None] | None,
|
|
341
341
|
on_discard: Callable[[Trace], None] | None,
|
|
342
342
|
) -> Agents:
|
|
343
|
-
"""One
|
|
343
|
+
"""One episode's `Agents` — fresh value objects riding the live serving
|
|
344
344
|
resources (nothing shared across concurrent episodes); `setup()` sees them first."""
|
|
345
345
|
|
|
346
346
|
def make(name: str, spec: AgentConfig) -> Agent:
|
|
@@ -391,7 +391,7 @@ class Env(ABC, Generic[ConfigT]):
|
|
|
391
391
|
on_discard: Callable[[Trace], None] | None = None,
|
|
392
392
|
gate: asyncio.Semaphore | None = None,
|
|
393
393
|
) -> Episode:
|
|
394
|
-
"""One
|
|
394
|
+
"""One episode of `task`, minted as the wire atom: `setup()` then `run()`
|
|
395
395
|
over fresh agents, then `finalize()`; `gate` bounds
|
|
396
396
|
the agent runs, so internal fan-out counts against `--max-concurrent` too.
|
|
397
397
|
Traces join the episode as runs complete — a hook raising mid-way yields the
|
|
@@ -440,7 +440,7 @@ class Env(ABC, Generic[ConfigT]):
|
|
|
440
440
|
return episode
|
|
441
441
|
|
|
442
442
|
def slots(self, task: Task, n: int = 1) -> list[RunSlot]:
|
|
443
|
-
"""Plan `n` independent
|
|
443
|
+
"""Plan `n` independent episodes of `task` (`-r n`): nothing couples them."""
|
|
444
444
|
if n < 1:
|
|
445
445
|
raise ValueError("a task needs at least one rollout (n >= 1)")
|
|
446
446
|
return [RunSlot(task) for _ in range(n)]
|
|
@@ -452,7 +452,7 @@ class Env(ABC, Generic[ConfigT]):
|
|
|
452
452
|
semaphore: asyncio.Semaphore | None = None,
|
|
453
453
|
on_complete: Callable[[Episode], Awaitable[None]] | None = None,
|
|
454
454
|
) -> Episode:
|
|
455
|
-
"""Run one planned
|
|
455
|
+
"""Run one planned episode to completion, with whole-episode
|
|
456
456
|
retries per `--env.retries`; `semaphore` gates the agent RUNS, not the
|
|
457
457
|
episode; `on_complete` (the runners' persistence hook) fires when final."""
|
|
458
458
|
|
|
@@ -152,7 +152,7 @@ class AgenticJudgeEnv(vf.Env[AgenticJudgeEnvConfig]):
|
|
|
152
152
|
async def finalize(self, task: vf.Task, episode: vf.Episode) -> None:
|
|
153
153
|
"""Record the scraped verdict on the SOLVER's trace. Strict on scale: an
|
|
154
154
|
off-scale score raises (a judge answering `95` must not clamp to full
|
|
155
|
-
marks), failing the
|
|
155
|
+
marks), failing the episode rather than scoring the solver wrong."""
|
|
156
156
|
by_agent = {t.agent_name: t for t in episode.traces}
|
|
157
157
|
solution, verdict = by_agent["solver"], by_agent["judge"]
|
|
158
158
|
data = verdict.info.get("verdict")
|
|
@@ -18,7 +18,7 @@ class BestOfNEnvConfig(vf.EnvConfig):
|
|
|
18
18
|
# composes with a plain run's `--env.agent.*` flags unchanged.
|
|
19
19
|
agent: vf.AgentConfig = vf.AgentConfig()
|
|
20
20
|
n: int = Field(4, ge=1)
|
|
21
|
-
"""Independent attempts per
|
|
21
|
+
"""Independent attempts per episode, scored against each other."""
|
|
22
22
|
threshold: float = 1.0
|
|
23
23
|
"""A sibling counts as solved when its task reward reaches this (`pass_at_n`)."""
|
|
24
24
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""The episode — one
|
|
1
|
+
"""The episode — one run's traces plus their shared standing, whole."""
|
|
2
2
|
|
|
3
3
|
import uuid
|
|
4
4
|
from typing import Generic
|
|
@@ -12,7 +12,7 @@ from verifiers.v1.types import StrictBaseModel
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class Episode(StrictBaseModel, Generic[DataT, StateT]):
|
|
15
|
-
"""One
|
|
15
|
+
"""One run of a task, whole: its identity and standing (`id`, `env`, `errors`)
|
|
16
16
|
next to its flat `traces` — the object `finalize()` receives, the engine
|
|
17
17
|
returns, and the durability envelope: one episode is one `traces.jsonl` line
|
|
18
18
|
and one serve reply, so it persists and arrives whole or not at all — a torn
|
|
@@ -54,7 +54,7 @@ class GEPAAdapter:
|
|
|
54
54
|
capture_traces: bool = False,
|
|
55
55
|
) -> EvaluationBatch[Episode, Episode]:
|
|
56
56
|
"""Run `candidate`'s system prompt on the tasks named by `batch` (`Task.idx` values)
|
|
57
|
-
and score them — one
|
|
57
|
+
and score them — one episode and one score per batch entry, so the batch stays
|
|
58
58
|
aligned however many traces the env's episode holds. Called synchronously by GEPA on
|
|
59
59
|
the main thread; each batch's rollouts run on the runner's persistent loop via
|
|
60
60
|
`run_until_complete`."""
|
|
@@ -122,7 +122,7 @@ class GEPAAdapter:
|
|
|
122
122
|
|
|
123
123
|
|
|
124
124
|
def _episode_score(episode: Episode) -> float:
|
|
125
|
-
"""A candidate's score on one
|
|
125
|
+
"""A candidate's score on one episode: the mean reward of the episode's scored
|
|
126
126
|
traces. Seats that recorded no rewards (a reward-less judge) don't dilute the
|
|
127
127
|
signal; an episode with no scored traces scores 0."""
|
|
128
128
|
scored = [trace.reward for trace in episode.traces if trace.rewards]
|
|
@@ -5,7 +5,7 @@ framework adds targeted retries only where no SDK sits underneath (`retrying()`)
|
|
|
5
5
|
Two opt-in whole-run retry atoms sit above that: `Agent.run` reruns ITS OWN rollout
|
|
6
6
|
while the trace ends with a retryable error (`--env.<agent>.retries` — a flaky
|
|
7
7
|
grader retries without re-burning the solver), and `run_episode_with_retry` reruns
|
|
8
|
-
the entire
|
|
8
|
+
the entire episode (`--env.retries`) — the coarse fallback for faults no agent
|
|
9
9
|
owns: the env's own hooks, cross-agent state. Both match by exception type name;
|
|
10
10
|
both off by default.
|
|
11
11
|
"""
|
|
@@ -105,7 +105,7 @@ def trace_should_retry(trace, retry: RetryConfig) -> bool:
|
|
|
105
105
|
|
|
106
106
|
|
|
107
107
|
def episode_should_retry(episode: Episode, retry: RetryConfig) -> bool:
|
|
108
|
-
"""Whether a finished
|
|
108
|
+
"""Whether a finished episode should be retried: any LIVE captured error —
|
|
109
109
|
episode-level, or on a trace that ended not-`ok` — is retryable. An `ok` trace's
|
|
110
110
|
errors are history its own per-agent retry already recovered from, never
|
|
111
111
|
grounds to re-run the episode. All of a failed trace's captures count, not just
|
|
@@ -121,7 +121,7 @@ async def run_episode_with_retry(
|
|
|
121
121
|
run: Callable[[], Awaitable[Episode]],
|
|
122
122
|
retry: RetryConfig,
|
|
123
123
|
) -> Episode:
|
|
124
|
-
"""Run one
|
|
124
|
+
"""Run one episode (each attempt mints a fresh one), retrying while
|
|
125
125
|
it ends with a retryable error. When the final attempt fails too, the earlier
|
|
126
126
|
attempts' errors are prepended so the episode shows the full history; a final
|
|
127
127
|
good attempt returns clean."""
|
|
@@ -136,7 +136,7 @@ async def run_episode_with_retry(
|
|
|
136
136
|
history.extend(trace.errors)
|
|
137
137
|
delay = backoff(attempt)
|
|
138
138
|
logger.warning(
|
|
139
|
-
"retrying
|
|
139
|
+
"retrying episode %s (retry %d/%d) in %.1fs after error: %s",
|
|
140
140
|
final.id,
|
|
141
141
|
attempt + 1,
|
|
142
142
|
retry.max_retries,
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
# Environments
|
|
2
|
-
|
|
3
|
-
**WIP** -- subject to change.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
Environment classes are organized into three categories:
|
|
8
|
-
|
|
9
|
-
| Category | Location | Description |
|
|
10
|
-
|----------|----------|-------------|
|
|
11
|
-
| **Core** | `verifiers/envs/` | Stable base classes and sandbox environments |
|
|
12
|
-
| **Integrations** | `verifiers/envs/integrations/` | Third-party library wrappers (lazy-loaded, require extras) |
|
|
13
|
-
| **Experimental** | `verifiers/envs/experimental/` | Newer environments with sharper edges |
|
|
14
|
-
|
|
15
|
-
Avoid storing global state in the environment. Instead, use the state argument to the environment's methods.
|
|
16
|
-
|
|
17
|
-
## Core Environments
|
|
18
|
-
|
|
19
|
-
Base classes for building environments:
|
|
20
|
-
|
|
21
|
-
- `SingleTurnEnv` - Single response Q&A tasks
|
|
22
|
-
- `MultiTurnEnv` - Multi-turn interactions (games, simulations, agents)
|
|
23
|
-
- `ToolEnv` - Stateless, idempotent tools passed as Python functions with all arguments exposed to the model. For managing additional state, use `StatefulToolEnv`.
|
|
24
|
-
- `StatefulToolEnv` - Tools requiring per-rollout state (e.g. sandbox ID). Use `update_tool_args` to inject state into tool calls. See `sandbox_env.py` for an example.
|
|
25
|
-
- `SandboxEnv` - Sandboxed container execution using `prime` sandboxes. All sandbox setup logic should be included in the start command and queued via `setup_state`, but not awaited—await resources only when first needed to overlap provisioning with rollout. See `python_env.py` for an example.
|
|
26
|
-
- `PythonEnv` - Persistent Python REPL in sandbox
|
|
27
|
-
|
|
28
|
-
## Integrations
|
|
29
|
-
|
|
30
|
-
Third-party library wrappers that require additional dependencies:
|
|
31
|
-
|
|
32
|
-
| Environment | Extra | Install Command |
|
|
33
|
-
|-------------|-------|-----------------|
|
|
34
|
-
| `TextArenaEnv` | `ta` | `uv add 'verifiers[ta]'` |
|
|
35
|
-
| `ReasoningGymEnv` | `rg` | `uv add 'verifiers[rg]'` |
|
|
36
|
-
| `BrowserEnv` | `browser` | `uv add 'verifiers[browser]'` |
|
|
37
|
-
|
|
38
|
-
When developing in the `verifiers` repo:
|
|
39
|
-
```bash
|
|
40
|
-
uv sync --extra ta # for TextArenaEnv
|
|
41
|
-
uv sync --extra rg # for ReasoningGymEnv
|
|
42
|
-
uv sync --extra browser # for BrowserEnv
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### TextArenaEnv
|
|
46
|
-
|
|
47
|
-
Wrapper for text-based TextArena environments (games, simulations). When adding new TextArena environments, investigate the `textarena` source code to determine the observation format. Often you'll want to re-render observations via `feedback_fn`, as `verifiers` doesn't allow overwriting past messages (only concatenation), and many TextArena games return full game state rather than turn-level diffs.
|
|
48
|
-
|
|
49
|
-
### ReasoningGymEnv
|
|
50
|
-
|
|
51
|
-
Wrapper for [reasoning-gym](https://github.com/reasoning-gym/reasoning-gym) procedural datasets. Supports single datasets or composite mixtures via `DatasetSpec`.
|
|
52
|
-
|
|
53
|
-
### BrowserEnv
|
|
54
|
-
|
|
55
|
-
Browser automation environment using [Browserbase](https://browserbase.com) with two modes:
|
|
56
|
-
|
|
57
|
-
**DOM mode** (`mode="dom"`): Natural language browser control via Stagehand SDK.
|
|
58
|
-
|
|
59
|
-
**CUA mode** (`mode="cua"`): Vision-based browser control using coordinate-based primitives.
|
|
60
|
-
|
|
61
|
-
CUA mode supports automatic sandbox deployment (`use_sandbox=True`, the default), where the CUA server is automatically deployed to a sandbox container. This eliminates the need for manual server setup. The server files are located in `assets/templates/browserbase/cua/` and are uploaded to sandboxes during rollout initialization.
|
|
62
|
-
|
|
63
|
-
For local development, set `use_sandbox=False` and start the server manually from `assets/templates/browserbase/cua/`.
|
|
64
|
-
|
|
65
|
-
## Experimental
|
|
66
|
-
|
|
67
|
-
See `verifiers/envs/experimental/README.md` for documentation on:
|
|
68
|
-
- `GymEnv` - Universal Gym-compatible environment runner
|
|
69
|
-
- `MCPEnv` - MCP server integration
|
|
70
|
-
- `CliAgentEnv` - Agent code in sandboxes with API call interception
|
|
71
|
-
- V1 `vf.Env` / `vf.Taskset` / `vf.Harness` - taskset/harness agent composition
|
|
72
|
-
- `HarborEnv` - Harbor-format task loading
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.dev8 → verifiers-0.2.2.dev10}/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
|