verifiers 0.2.2.dev93__tar.gz → 0.2.2.dev95__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.dev93 → verifiers-0.2.2.dev95}/PKG-INFO +1 -1
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/test_e2e.py +2 -1
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/harnesses/rlm.py +2 -3
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/utils/git_checkout_cache.py +2 -1
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/path_utils.py +12 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/acp/runner.py +39 -17
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/interception/tunnel/prime.py +2 -2
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/runtimes/limiters.py +19 -15
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/runtimes/modal.py +1 -1
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/runtimes/prime.py +1 -1
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/.gitignore +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/LICENSE +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/README.md +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/pyproject.toml +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/conftest.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_browser_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_build_script.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_client_config.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_composable_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_env_group.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_env_server.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_environment.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_environment_extra.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_error_chain.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_eval_display.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_eval_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_gym_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_imports.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_init_script.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_install_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_interception_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_logging.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_math_rubric.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_message_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_openenv_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_parser.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_path_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_renderer_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_rubric.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_rubric_group.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_save_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_setup_script.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_think_parser.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_tool_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_tool_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_types.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/test_xml_parser.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/conftest.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/fixtures/duet_v1.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/test_configs.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/test_envs.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/test_graph.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/test_judges.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/tests/v1/test_trace.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/cli/tui.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/renderer_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/decorators.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/environment.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/errors.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/gepa/config.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/gepa/display.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/scripts/build.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/scripts/init.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/scripts/install.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/serve/types.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/types.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/agent.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/cli/init.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/legacy.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/episode.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/errors.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/graph.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/bash/program.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/node.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/null/program.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/pool/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/pool/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/judge.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/session.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/state.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/task.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/tasksets/harbor/env.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/trace.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/types.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/loaders.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/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.dev95
|
|
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
|
|
@@ -231,11 +231,12 @@ async def test_acp_resume_with_tool(run_v1, harness, harness_runtime, tmp_path):
|
|
|
231
231
|
assert trace.ok, trace.errors
|
|
232
232
|
assert trace.stop_condition == "user_closed"
|
|
233
233
|
assert trace.rewards["resumed"].score == 1.0
|
|
234
|
-
assert trace.tools # ACP-native tools, or Pi's MCP adapter meta-tool
|
|
235
234
|
segments = trace.info["acp_segments"]
|
|
236
235
|
assert len(segments) == 2
|
|
237
236
|
assert segments[0]["terminated"] is False
|
|
238
237
|
assert segments[1]["terminated"] is False
|
|
238
|
+
# Native MCP tools need not appear in the intercepted model request that
|
|
239
|
+
# populates trace.tools; the ACP transcript is the source of truth for use.
|
|
239
240
|
assert "tool" in segments[1]["roles"]
|
|
240
241
|
assert segments[1]["tool_outputs"]
|
|
241
242
|
if harness == "rlm":
|
|
@@ -15,6 +15,7 @@ from verifiers.envs.experimental.utils.git_checkout_cache import (
|
|
|
15
15
|
validate_git_checkout,
|
|
16
16
|
)
|
|
17
17
|
from verifiers.types import Messages, State, SystemMessage, TrajectoryStep
|
|
18
|
+
from verifiers.utils.path_utils import CACHE_DIR
|
|
18
19
|
|
|
19
20
|
DEFAULT_RLM_REPO_URL = "github.com/PrimeIntellect-ai/rlm-harness.git"
|
|
20
21
|
DEFAULT_RLM_REF = "main"
|
|
@@ -24,9 +25,7 @@ DEFAULT_RLM_MAX_DEPTH = 0
|
|
|
24
25
|
DEFAULT_APPEND_TO_SYSTEM_PROMPT_PATH = "/task/append_to_system_prompt.txt"
|
|
25
26
|
DEFAULT_RLM_CHECKOUT_PATH = "/tmp/rlm-checkout"
|
|
26
27
|
DEFAULT_RLM_CHECKOUT_UPLOAD_NAME = "rlm_checkout"
|
|
27
|
-
DEFAULT_RLM_LOCAL_CHECKOUT_CACHE_ROOT =
|
|
28
|
-
Path.home() / ".cache" / "verifiers" / "rlm-checkouts"
|
|
29
|
-
)
|
|
28
|
+
DEFAULT_RLM_LOCAL_CHECKOUT_CACHE_ROOT = CACHE_DIR / "rlm-checkouts"
|
|
30
29
|
_REQUIRED_CHECKOUT_FILES = ("install.sh", "pyproject.toml")
|
|
31
30
|
|
|
32
31
|
COMPACTION_BOUNDARY_MARKER = "--- context compacted ---"
|
|
@@ -16,6 +16,7 @@ from verifiers.envs.experimental.utils.file_locks import (
|
|
|
16
16
|
exclusive_path_lock,
|
|
17
17
|
sibling_lock_path,
|
|
18
18
|
)
|
|
19
|
+
from verifiers.utils.path_utils import CACHE_DIR
|
|
19
20
|
|
|
20
21
|
_IN_USE_LOCK_SUFFIX = ".in-use.lock"
|
|
21
22
|
|
|
@@ -23,7 +24,7 @@ _IN_USE_LOCK_SUFFIX = ".in-use.lock"
|
|
|
23
24
|
# resolved checkout's in-use lock file. See ``_acquire_in_use_lock``.
|
|
24
25
|
_held_in_use_locks: dict[Path, IO] = {}
|
|
25
26
|
|
|
26
|
-
DEFAULT_GIT_CHECKOUT_CACHE_ROOT =
|
|
27
|
+
DEFAULT_GIT_CHECKOUT_CACHE_ROOT = CACHE_DIR / "git-checkouts"
|
|
27
28
|
_FULL_COMMIT_SHA_RE = re.compile(r"^[0-9a-fA-F]{40}$")
|
|
28
29
|
|
|
29
30
|
logger = logging.getLogger(__name__)
|
|
@@ -9,6 +9,18 @@ from verifiers.types import EvalConfig
|
|
|
9
9
|
logger = logging.getLogger(__name__)
|
|
10
10
|
|
|
11
11
|
|
|
12
|
+
def home_dir() -> Path:
|
|
13
|
+
"""Best-effort home directory; fall back to the temp dir so import never fails."""
|
|
14
|
+
try:
|
|
15
|
+
return Path.home()
|
|
16
|
+
except RuntimeError:
|
|
17
|
+
return Path(tempfile.gettempdir())
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
CACHE_DIR = home_dir() / ".cache" / "verifiers"
|
|
21
|
+
"""User-local cache root for verifiers-managed state."""
|
|
22
|
+
|
|
23
|
+
|
|
12
24
|
def write_temp_file(content: str, suffix: str = ".txt") -> str:
|
|
13
25
|
"""Write content to a named temporary file and return its path.
|
|
14
26
|
|
|
@@ -36,6 +36,7 @@ from acp.schema import (
|
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
MAX_PACKET_BYTES = 128 * 1024 * 1024
|
|
39
|
+
LATE_UPDATE_GRACE_SECONDS = 1.0
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
class VerifiersACPClient(Client):
|
|
@@ -43,6 +44,7 @@ class VerifiersACPClient(Client):
|
|
|
43
44
|
self.visible_reply = ""
|
|
44
45
|
self.message_id: str | None = None
|
|
45
46
|
self.tool_calls: dict[str, str] = {}
|
|
47
|
+
self.output_changed = asyncio.Condition()
|
|
46
48
|
|
|
47
49
|
def reset(self) -> None:
|
|
48
50
|
self.visible_reply = ""
|
|
@@ -50,22 +52,23 @@ class VerifiersACPClient(Client):
|
|
|
50
52
|
self.tool_calls = {}
|
|
51
53
|
|
|
52
54
|
async def session_update(self, session_id: str, update: Any, **kwargs: Any) -> None:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
55
|
+
async with self.output_changed:
|
|
56
|
+
if isinstance(update, ToolCall):
|
|
57
|
+
self.tool_calls[update.tool_call_id] = update.status or "pending"
|
|
58
|
+
elif isinstance(update, ToolCallUpdate):
|
|
59
|
+
if update.status:
|
|
60
|
+
self.tool_calls[update.tool_call_id] = update.status
|
|
61
|
+
elif isinstance(update, AgentMessageChunk) and isinstance(
|
|
62
|
+
update.content, TextContentBlock
|
|
63
|
+
):
|
|
64
|
+
message_id = getattr(update, "message_id", None)
|
|
65
|
+
if message_id is not None and message_id != self.message_id:
|
|
66
|
+
self.visible_reply = ""
|
|
67
|
+
self.message_id = message_id
|
|
68
|
+
self.visible_reply += update.content.text
|
|
69
|
+
else:
|
|
70
|
+
return
|
|
71
|
+
self.output_changed.notify_all()
|
|
69
72
|
|
|
70
73
|
async def request_permission(
|
|
71
74
|
self,
|
|
@@ -172,6 +175,25 @@ async def prompt(
|
|
|
172
175
|
except RequestError as error:
|
|
173
176
|
detail = error.data.get("details") if isinstance(error.data, dict) else None
|
|
174
177
|
raise RuntimeError(detail or str(error)) from error
|
|
178
|
+
|
|
179
|
+
# ACP 0.11 dispatches notifications in background tasks but resolves a request
|
|
180
|
+
# response directly in its receive loop. An agent that sends its final
|
|
181
|
+
# session/update immediately before session/prompt returns can therefore wake
|
|
182
|
+
# this coroutine before the update handler has run. Wait specifically for text:
|
|
183
|
+
# a completed tool update may also arrive first and must not hide a later reply.
|
|
184
|
+
def has_visible_reply() -> bool:
|
|
185
|
+
return bool(client.visible_reply.strip())
|
|
186
|
+
|
|
187
|
+
if not has_visible_reply():
|
|
188
|
+
async with client.output_changed:
|
|
189
|
+
try:
|
|
190
|
+
await asyncio.wait_for(
|
|
191
|
+
client.output_changed.wait_for(has_visible_reply),
|
|
192
|
+
timeout=LATE_UPDATE_GRACE_SECONDS,
|
|
193
|
+
)
|
|
194
|
+
except asyncio.TimeoutError: # noqa: UP041 - Python 3.10 compatibility
|
|
195
|
+
pass
|
|
196
|
+
|
|
175
197
|
tool_statuses = list(client.tool_calls.values())
|
|
176
198
|
completed_tool_turn = (
|
|
177
199
|
config.get("allow_empty_tool_reply", False)
|
|
@@ -179,7 +201,7 @@ async def prompt(
|
|
|
179
201
|
and bool(tool_statuses)
|
|
180
202
|
and all(status in ("completed", "failed") for status in tool_statuses)
|
|
181
203
|
)
|
|
182
|
-
if not
|
|
204
|
+
if not has_visible_reply() and not completed_tool_turn:
|
|
183
205
|
raise RuntimeError(
|
|
184
206
|
"ACP agent produced no visible reply "
|
|
185
207
|
f"(stop_reason={response.stop_reason}, tool_statuses={tool_statuses})"
|
|
@@ -13,7 +13,7 @@ from verifiers.v1.runtimes.limiters import creation_limiter
|
|
|
13
13
|
from verifiers.v1.utils.aio import run_shielded
|
|
14
14
|
|
|
15
15
|
# The prime_tunnel service caps tunnel starts at 512/min per API token — a property of the
|
|
16
|
-
# tunnel service, shared by every process
|
|
16
|
+
# tunnel service, shared by every process for the user that opens one. One user-global
|
|
17
17
|
# limiter, not a per-runtime config knob.
|
|
18
18
|
_TUNNELS_PER_MIN = 512
|
|
19
19
|
TUNNEL_LIMITER = creation_limiter(_TUNNELS_PER_MIN / 60, "prime-tunnel")
|
|
@@ -30,7 +30,7 @@ class PrimeTunnel(Tunnel[PrimeTunnelConfig]):
|
|
|
30
30
|
@contextlib.asynccontextmanager
|
|
31
31
|
async def expose(self, port: int) -> AsyncIterator[str]:
|
|
32
32
|
"""Bridge the host `port` to a public URL via prime_tunnel (frpc). Tunnel creation
|
|
33
|
-
is network-bound and globally rate-capped (512/min,
|
|
33
|
+
is network-bound and globally rate-capped (512/min, user-wide via the shared
|
|
34
34
|
`TUNNEL_LIMITER`), so transient failures are retried; a terminal one raises
|
|
35
35
|
`TunnelError`. The tunnel is torn down on exit."""
|
|
36
36
|
from prime_tunnel import Tunnel as TunnelClient
|
|
@@ -1,41 +1,45 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""User-global creation-rate limiters for the remote runtimes.
|
|
2
2
|
|
|
3
|
-
A leaky bucket backed by a lock file
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
process
|
|
7
|
-
|
|
3
|
+
A leaky bucket backed by a lock file under the user cache (``~/.cache/verifiers``, falling
|
|
4
|
+
back to the temp dir when no home is resolvable), so a provider's per-account creation rate
|
|
5
|
+
(Modal sandboxes, Prime tunnels) is enforced across EVERY process for the user —
|
|
6
|
+
the single-process eval and all the elastically-spawned env-server worker processes alike — not
|
|
7
|
+
just within one process. Keyed by name: one bucket file per name, shared by every process (and
|
|
8
|
+
run) for the user.
|
|
8
9
|
"""
|
|
9
10
|
|
|
10
11
|
import asyncio
|
|
11
12
|
import fcntl
|
|
12
13
|
import os
|
|
13
|
-
import tempfile
|
|
14
14
|
import time
|
|
15
15
|
from typing import Self
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
from verifiers.utils.path_utils import CACHE_DIR
|
|
18
|
+
|
|
19
|
+
LIMITER_DIR = CACHE_DIR / "limiter"
|
|
18
20
|
|
|
19
21
|
|
|
20
22
|
class CreationLimiter:
|
|
21
23
|
"""An async leaky bucket shared across processes via a lock file: each `async with`
|
|
22
24
|
reserves the next `1/per_sec`-spaced slot (advancing the on-disk cursor under an exclusive
|
|
23
|
-
flock) and sleeps until it, so the aggregate creation rate across all
|
|
24
|
-
at `per_sec`. The reservation runs off the event loop; the wait does not
|
|
25
|
+
flock) and sleeps until it, so the aggregate creation rate across all of the user's
|
|
26
|
+
processes stays at `per_sec`. The reservation runs off the event loop; the wait does not
|
|
27
|
+
hold the lock."""
|
|
25
28
|
|
|
26
29
|
def __init__(self, name: str, per_sec: float) -> None:
|
|
27
30
|
self._interval = 1 / per_sec
|
|
28
|
-
self._path =
|
|
31
|
+
self._path = LIMITER_DIR / f"{name}.bucket"
|
|
29
32
|
|
|
30
33
|
def _reserve(self) -> float:
|
|
31
|
-
os.makedirs(
|
|
32
|
-
#
|
|
34
|
+
os.makedirs(LIMITER_DIR, exist_ok=True)
|
|
35
|
+
# Wall clock persists across reboots (monotonic does not), so a cursor left in
|
|
36
|
+
# ~/.cache from a previous boot cannot turn into a huge stale wait.
|
|
33
37
|
with open(self._path, "a+") as f:
|
|
34
38
|
fcntl.flock(f.fileno(), fcntl.LOCK_EX)
|
|
35
39
|
try:
|
|
36
40
|
f.seek(0)
|
|
37
41
|
data = f.read().strip()
|
|
38
|
-
now = time.
|
|
42
|
+
now = time.time()
|
|
39
43
|
slot = max(now, float(data) if data else 0.0)
|
|
40
44
|
f.seek(0)
|
|
41
45
|
f.truncate()
|
|
@@ -59,7 +63,7 @@ _creation_limiters: dict[str, CreationLimiter] = {}
|
|
|
59
63
|
|
|
60
64
|
|
|
61
65
|
def creation_limiter(per_sec: float | None, name: str) -> CreationLimiter | None:
|
|
62
|
-
"""A
|
|
66
|
+
"""A user-global limiter pacing `name`'s creation to `per_sec`/s (None/<= 0 disables).
|
|
63
67
|
|
|
64
68
|
All callers (and processes) sharing a `name` share one bucket, so use one rate per name."""
|
|
65
69
|
if not per_sec or per_sec <= 0:
|
|
@@ -53,7 +53,7 @@ class ModalConfig(BaseConfig):
|
|
|
53
53
|
"""Disk in GB. Modal sandboxes have no disk knob, so this is accepted (so a task can
|
|
54
54
|
declare it without a warning) but not enforced."""
|
|
55
55
|
creates_per_sec: float | None = 40.0
|
|
56
|
-
"""Pace sandbox creation to this many per second, enforced
|
|
56
|
+
"""Pace sandbox creation to this many per second, enforced user-wide across every
|
|
57
57
|
env-server worker process (None/<= 0 disables it)."""
|
|
58
58
|
|
|
59
59
|
|
|
@@ -66,7 +66,7 @@ class PrimeConfig(NetworkPolicyConfig):
|
|
|
66
66
|
idle_timeout: float | None = 3600
|
|
67
67
|
"""Seconds of inactivity before the sandbox self-deletes (None disables)."""
|
|
68
68
|
creates_per_min: int | None = None
|
|
69
|
-
"""Pace sandbox creation to this many per minute, enforced
|
|
69
|
+
"""Pace sandbox creation to this many per minute, enforced user-wide across every
|
|
70
70
|
env-server worker process (None/<= 0 disables it). (Tunnel creation is limited separately
|
|
71
71
|
and globally — see interception.tunnel.prime.TUNNEL_LIMITER.)"""
|
|
72
72
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.dev93 → verifiers-0.2.2.dev95}/tests/test_openai_chat_completions_token_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/anthropic_messages_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/nemorl_chat_completions_client.py
RENAMED
|
File without changes
|
{verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/openai_chat_completions_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/openai_completions_client.py
RENAMED
|
File without changes
|
{verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/clients/openai_responses_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
|
{verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/cli_agent_env.py
RENAMED
|
File without changes
|
{verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/README.md
RENAMED
|
File without changes
|
{verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/_filter.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.2.2.dev93 → verifiers-0.2.2.dev95}/verifiers/envs/experimental/composable/harness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|