verifiers 0.2.1.dev12__tar.gz → 0.2.1.dev20__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.1.dev12 → verifiers-0.2.1.dev20}/PKG-INFO +1 -1
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/__init__.py +2 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/dashboard/eval.py +14 -11
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/debug.py +14 -7
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/clients/train.py +4 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/graph.py +55 -5
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/rollout.py +8 -2
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/trace.py +35 -1
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/types.py +18 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/.gitignore +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/LICENSE +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/README.md +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/pyproject.toml +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/AGENTS.md +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/conftest.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_browser_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_build_script.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_cli_agent_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_client_auth_errors.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_client_config.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_client_multimodal_types.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_composable_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_context_token_metrics.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_decorator_ranks.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_endpoint_registry.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_env_group.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_env_server.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_environment.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_environment_extra.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_envs.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_error_chain.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_eval_display.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_eval_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_gepa_cli.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_gepa_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_gym_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_harbor_env_mcp.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_imports.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_init_script.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_install_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_interception_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_logging.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_math_rubric.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_maybe_think_parser.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_message_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_message_utils_multimodal.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_multiturn_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_nemorl_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_openai_responses_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_opencode_rlm_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_openenv_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_parser.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_path_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_per_turn_timing.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_pricing_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_prime_plugin.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_renderer_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_renderer_e2e.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_rlm_composable_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_rubric.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_rubric_group.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_sandbox_debug_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_sandbox_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_sandbox_mixin.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_save_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_setup_script.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_singleturn_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_stateful_tool_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_think_parser.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_tool_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_tool_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_trajectory_processing.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_tui_info_formatting.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_types.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_wordle_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/test_xml_parser.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/conftest.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/fixtures/echo_multi_v0.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/fixtures/echo_v0.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/test_configs.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/test_e2e.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/test_envs.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/test_graph.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/test_judges.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/test_legacy.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/tests/v1/test_trace.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/cli/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/cli/commands/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/cli/commands/build.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/cli/commands/eval.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/cli/commands/gepa.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/cli/commands/install.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/cli/commands/setup.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/cli/plugins/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/cli/plugins/prime.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/cli/tui.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/clients/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/clients/anthropic_messages_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/clients/client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/clients/openai_chat_completions_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/clients/openai_completions_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/clients/openai_responses_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/clients/renderer_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/decorators.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/AGENTS.md +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/env_group.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/environment.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/README.md +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/cli_agent_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/README.md +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/_filter.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/composable_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/harness.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/task.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/README.md +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/openseeker/README.md +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/openseeker/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/openseeker/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/README.md +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/tool_pdf.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/eval_toolkit.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/evaluator.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/base_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/cache_prompts.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/cache_filesys.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/load_eval_script.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/misc.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/tool_visit.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/url_tools.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/verification_tree.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/open_ended.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/quest/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/README.md +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/search/search_tasksets.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/gym_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/harbor_env/env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/mcp_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/opencode_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/utils/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/utils/file_locks.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/integrations/README.md +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/integrations/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/integrations/browser_env/README.md +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/integrations/openenv_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/integrations/textarena_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/multiturn_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/python_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/sandbox_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/singleturn_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/stateful_tool_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/envs/tool_env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/errors.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/gepa/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/gepa/adapter.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/gepa/config.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/gepa/display.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/gepa/gepa_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/parsers/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/parsers/maybe_think_parser.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/parsers/parser.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/parsers/think_parser.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/parsers/xml_parser.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/rubrics/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/rubrics/judge_rubric.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/rubrics/math_rubric.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/rubrics/rubric.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/rubrics/rubric_group.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/scripts/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/scripts/build.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/scripts/eval.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/scripts/gepa.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/scripts/init.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/scripts/install.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/scripts/setup.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/scripts/tui.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/serve/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/serve/client/env_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/serve/client/zmq_env_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/serve/server/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/serve/server/env_router.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/serve/server/env_server.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/serve/server/env_worker.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/serve/server/zmq_env_server.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/serve/types.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/types.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/async_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/client_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/config_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/data_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/display_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/env_config_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/env_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/error_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/eval_display.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/eval_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/heartbeat.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/import_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/install_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/interception_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/logging_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/message_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/metric_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/path_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/pricing_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/process_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/response_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/save_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/serve_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/thread_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/threaded_sandbox_client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/tool_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/usage_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/utils/version_utils.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/serve.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/clients/config.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/configs/debug.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/configs/eval.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/configs/init.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/configs/replay.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/configs/validate.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/decorators.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/env.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/episode.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/errors.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harness.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/default/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/default/harness.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/default/program.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/null/program.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/judge.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/legacy.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/loaders.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/mcp/user.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/push.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/retries.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/runtimes/docker.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/scoring.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/state.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/task.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/utils/install.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.2.1.dev12 → verifiers-0.2.1.dev20}/verifiers/v1/utils/sampling.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.2.1.
|
|
3
|
+
Version: 0.2.1.dev20
|
|
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
|
|
@@ -114,6 +114,7 @@ from verifiers.v1.types import (
|
|
|
114
114
|
ID,
|
|
115
115
|
ImageUrlContentPart,
|
|
116
116
|
ImageUrlSource,
|
|
117
|
+
KeptTokens,
|
|
117
118
|
Message,
|
|
118
119
|
MessageContent,
|
|
119
120
|
Messages,
|
|
@@ -166,6 +167,7 @@ __all__ = [
|
|
|
166
167
|
"MessageNode",
|
|
167
168
|
"Branch",
|
|
168
169
|
"TurnTokens",
|
|
170
|
+
"KeptTokens",
|
|
169
171
|
"Timing",
|
|
170
172
|
"TimeSpan",
|
|
171
173
|
"Error",
|
|
@@ -40,6 +40,7 @@ _LABEL_WIDTH = len("timeouts")
|
|
|
40
40
|
|
|
41
41
|
_STYLE = {
|
|
42
42
|
"pending": "dim",
|
|
43
|
+
"boot": "orange3",
|
|
43
44
|
"setup": "yellow",
|
|
44
45
|
"running": "cyan",
|
|
45
46
|
"finalize": "magenta",
|
|
@@ -49,6 +50,7 @@ _STYLE = {
|
|
|
49
50
|
}
|
|
50
51
|
_MARK_LABEL = {
|
|
51
52
|
"pending": "pending",
|
|
53
|
+
"boot": "boot",
|
|
52
54
|
"setup": "setup",
|
|
53
55
|
"running": "rollout",
|
|
54
56
|
"finalize": "finalize",
|
|
@@ -317,7 +319,7 @@ def _breakdown(done: list[Trace]) -> Table | None:
|
|
|
317
319
|
if judge.cost is not None:
|
|
318
320
|
total_judge_cost += judge.cost
|
|
319
321
|
have_judge = True
|
|
320
|
-
for phase in ("setup", "generation", "finalize", "scoring"):
|
|
322
|
+
for phase in ("boot", "setup", "generation", "finalize", "scoring"):
|
|
321
323
|
span = getattr(trace.timing, phase)
|
|
322
324
|
if span.end: # phase was timed for this rollout
|
|
323
325
|
phase_secs[phase] = phase_secs.get(phase, 0.0) + span.duration
|
|
@@ -351,7 +353,7 @@ def _breakdown(done: list[Trace]) -> Table | None:
|
|
|
351
353
|
grid.add_row("usage", " · ".join(usage))
|
|
352
354
|
time_segments = [
|
|
353
355
|
f"{phase} {format_time(phase_secs[phase] / phase_count[phase])}"
|
|
354
|
-
for phase in ("setup", "generation", "finalize", "scoring")
|
|
356
|
+
for phase in ("boot", "setup", "generation", "finalize", "scoring")
|
|
355
357
|
if phase_count.get(phase)
|
|
356
358
|
]
|
|
357
359
|
if time_segments:
|
|
@@ -383,11 +385,12 @@ def _tokens(trace: Trace) -> tuple[int, int, int | None, int | None, int]:
|
|
|
383
385
|
|
|
384
386
|
|
|
385
387
|
def _started(rollout: Rollout) -> float:
|
|
386
|
-
# Sort key: when a rollout began (its
|
|
387
|
-
# yet, so it sorts last (+inf) — behind
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
388
|
+
# Sort key: when a rollout began (its boot start; setup for pre-boot-span traces on
|
|
389
|
+
# resume). A still-pending rollout has no trace yet, so it sorts last (+inf) — behind
|
|
390
|
+
# everything already in flight, in task order.
|
|
391
|
+
if rollout.trace is None:
|
|
392
|
+
return float("inf")
|
|
393
|
+
return rollout.trace.timing.boot.start or rollout.trace.timing.setup.start
|
|
391
394
|
|
|
392
395
|
|
|
393
396
|
def _groups(rollouts: list[Rollout]) -> list[list[Rollout]]:
|
|
@@ -450,14 +453,14 @@ def Rows(groups: list[list[Rollout]], now: float, runtime_type: str) -> Table:
|
|
|
450
453
|
)
|
|
451
454
|
runtime = f"{runtime_type}({descriptor})" if descriptor else runtime_type
|
|
452
455
|
turns = t.num_turns
|
|
453
|
-
start = t.timing.setup.start
|
|
456
|
+
start = t.timing.boot.start or t.timing.setup.start
|
|
454
457
|
end = (
|
|
455
458
|
t.timing.scoring.end
|
|
456
459
|
or t.timing.finalize.end
|
|
457
460
|
or t.timing.generation.end
|
|
458
|
-
# a rollout that errored in setup has only
|
|
459
|
-
# else (still running) the timer would grow off `now` forever
|
|
460
|
-
or (t.timing.setup.end if t.is_completed else 0)
|
|
461
|
+
# a rollout that errored in boot/setup has only that span's end — freeze there
|
|
462
|
+
# once done, else (still running) the timer would grow off `now` forever
|
|
463
|
+
or ((t.timing.setup.end or t.timing.boot.end) if t.is_completed else 0)
|
|
461
464
|
or now
|
|
462
465
|
)
|
|
463
466
|
prompt, completion, cached, reasoning, nbranches = _tokens(t)
|
|
@@ -138,15 +138,19 @@ def record_debug_error(
|
|
|
138
138
|
setup_timeout: float | None,
|
|
139
139
|
action_timeout: float | None,
|
|
140
140
|
) -> None:
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
141
|
+
now = time.time()
|
|
142
|
+
for span in (trace.timing.boot, trace.timing.setup, trace.timing.generation):
|
|
143
|
+
if span.start and not span.end:
|
|
144
|
+
span.end = now
|
|
145
145
|
in_action = bool(trace.timing.generation.start)
|
|
146
|
-
stage =
|
|
146
|
+
stage = (
|
|
147
|
+
"debug action" if in_action else "setup" if trace.timing.setup.start else "boot"
|
|
148
|
+
)
|
|
147
149
|
timeout = action_timeout if in_action else setup_timeout
|
|
148
150
|
error_start = (
|
|
149
|
-
trace.timing.generation.start
|
|
151
|
+
trace.timing.generation.start
|
|
152
|
+
if in_action
|
|
153
|
+
else trace.timing.setup.start or trace.timing.boot.start
|
|
150
154
|
)
|
|
151
155
|
debug.update(error_info(error, error_start, timeout, stage))
|
|
152
156
|
debug.setdefault("runtime", runtime_info(runtime))
|
|
@@ -226,8 +230,11 @@ async def debug_task(task: Task, config: DebugConfig) -> tuple[Trace, bool]:
|
|
|
226
230
|
else task.data.timeout.setup
|
|
227
231
|
)
|
|
228
232
|
try:
|
|
229
|
-
trace.timing.
|
|
233
|
+
trace.timing.boot.start = time.time()
|
|
230
234
|
await runtime.start()
|
|
235
|
+
now = time.time()
|
|
236
|
+
trace.timing.boot.end = now
|
|
237
|
+
trace.timing.setup.start = now
|
|
231
238
|
debug["runtime"] = runtime_info(runtime)
|
|
232
239
|
await asyncio.wait_for(
|
|
233
240
|
invoke(task.setup, {"trace": trace, "runtime": runtime}),
|
|
@@ -25,6 +25,7 @@ from verifiers.v1.graph import PendingTurn
|
|
|
25
25
|
from verifiers.v1.types import (
|
|
26
26
|
AssistantMessage,
|
|
27
27
|
FinishReason,
|
|
28
|
+
KeptTokens,
|
|
28
29
|
Response,
|
|
29
30
|
SamplingConfig,
|
|
30
31
|
Tool,
|
|
@@ -149,6 +150,9 @@ def response_from_generate(
|
|
|
149
150
|
is_content=attribution.is_content if attribution is not None else None,
|
|
150
151
|
multi_modal_data=result.get("multi_modal_data"),
|
|
151
152
|
routed_experts=result.get("routed_experts"),
|
|
153
|
+
kept_tokens=KeptTokens(**kept)
|
|
154
|
+
if (kept := result.get("kept_tokens"))
|
|
155
|
+
else None,
|
|
152
156
|
),
|
|
153
157
|
)
|
|
154
158
|
|
|
@@ -31,6 +31,7 @@ from renderers.base import MultiModalData, PlaceholderRange, RenderedTokens
|
|
|
31
31
|
from verifiers.v1.types import (
|
|
32
32
|
AssistantMessage,
|
|
33
33
|
FinishReason,
|
|
34
|
+
KeptTokens,
|
|
34
35
|
Message,
|
|
35
36
|
Response,
|
|
36
37
|
StrictBaseModel,
|
|
@@ -118,6 +119,12 @@ class MessageNode(StrictBaseModel):
|
|
|
118
119
|
the turn's `generate` payload by `_attribute_routed_experts`; `Branch.routed_experts`
|
|
119
120
|
concatenates these along the path into the trainer's router-replay input. Rides the wire as
|
|
120
121
|
a raw-bytes `__nd__` dict; kept off disk by the dump-site `exclude` in prime-rl."""
|
|
122
|
+
kept_tokens: KeptTokens | None = None
|
|
123
|
+
"""Kept-set sampling masks for this node's sampled tokens, decoded: `ids` flat int32
|
|
124
|
+
in position order, `counts` the per-token kept-set sizes (aligned with `logprobs`;
|
|
125
|
+
0 = no mask). Assistant nodes only; consumed via `Branch.kept_tokens` for
|
|
126
|
+
sampling-replay training. Rides the wire as raw-bytes `__nd__` dicts; kept off disk
|
|
127
|
+
by the dump-site `exclude` in prime-rl."""
|
|
121
128
|
|
|
122
129
|
model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True)
|
|
123
130
|
|
|
@@ -166,18 +173,40 @@ class MessageNode(StrictBaseModel):
|
|
|
166
173
|
)
|
|
167
174
|
|
|
168
175
|
@field_serializer("routed_experts")
|
|
169
|
-
def
|
|
170
|
-
"""
|
|
171
|
-
return None if
|
|
176
|
+
def serialize_ndarray_field(self, arr: np.ndarray | None) -> dict | None:
|
|
177
|
+
"""Integer array -> raw-bytes `__nd__` dict so it rides the wire (numpy can't JSON)."""
|
|
178
|
+
return None if arr is None else _encode_ndarray(arr)
|
|
172
179
|
|
|
173
180
|
@field_validator("routed_experts", mode="before")
|
|
174
181
|
@classmethod
|
|
175
|
-
def
|
|
182
|
+
def deserialize_ndarray_field(cls, value: Any) -> np.ndarray | None:
|
|
176
183
|
if value is None or isinstance(value, np.ndarray):
|
|
177
184
|
return value
|
|
178
185
|
if isinstance(value, dict) and value.get("__nd__"):
|
|
179
186
|
return _decode_ndarray(value)
|
|
180
|
-
raise TypeError(f"cannot build
|
|
187
|
+
raise TypeError(f"cannot build ndarray field from {type(value).__name__}")
|
|
188
|
+
|
|
189
|
+
@field_serializer("kept_tokens")
|
|
190
|
+
def serialize_kept_tokens(self, kept: KeptTokens | None) -> dict | None:
|
|
191
|
+
"""`KeptTokens` -> dict of raw-bytes `__nd__` entries so the arrays ride the wire."""
|
|
192
|
+
if kept is None:
|
|
193
|
+
return None
|
|
194
|
+
return {
|
|
195
|
+
"ids": _encode_ndarray(kept.ids),
|
|
196
|
+
"counts": _encode_ndarray(kept.counts),
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
@field_validator("kept_tokens", mode="before")
|
|
200
|
+
@classmethod
|
|
201
|
+
def deserialize_kept_tokens(cls, value: Any) -> KeptTokens | None:
|
|
202
|
+
if value is None or isinstance(value, KeptTokens):
|
|
203
|
+
return value
|
|
204
|
+
if isinstance(value, dict):
|
|
205
|
+
return KeptTokens(
|
|
206
|
+
ids=_decode_ndarray(value["ids"]),
|
|
207
|
+
counts=_decode_ndarray(value["counts"]),
|
|
208
|
+
)
|
|
209
|
+
raise TypeError(f"cannot build KeptTokens from {type(value).__name__}")
|
|
181
210
|
|
|
182
211
|
|
|
183
212
|
def _canonical_tool_arguments(arguments: str) -> str:
|
|
@@ -434,6 +463,23 @@ def _attribute_routed_experts(
|
|
|
434
463
|
off = end
|
|
435
464
|
|
|
436
465
|
|
|
466
|
+
def _attribute_kept_tokens(
|
|
467
|
+
trace: Trace, assistant_id: int, payload: KeptTokens | None
|
|
468
|
+
) -> None:
|
|
469
|
+
"""Attach this turn's kept-set sampling masks to the assistant node (the payload
|
|
470
|
+
covers exactly the turn's completion tokens, so no path arithmetic). A payload
|
|
471
|
+
that doesn't line up with the node's sampled tokens is dropped, not misaligned."""
|
|
472
|
+
if payload is None:
|
|
473
|
+
return
|
|
474
|
+
counts = np.frombuffer(binascii.a2b_base64(payload.counts), dtype=np.int32)
|
|
475
|
+
ids = np.frombuffer(binascii.a2b_base64(payload.ids), dtype=np.int32)
|
|
476
|
+
node = trace.nodes[assistant_id]
|
|
477
|
+
if len(counts) != sum(node.mask) or int(counts.sum()) != len(ids):
|
|
478
|
+
return
|
|
479
|
+
# Own the buffers — the payload views reference the turn's response bytes.
|
|
480
|
+
node.kept_tokens = KeptTokens(ids=ids.copy(), counts=counts.copy())
|
|
481
|
+
|
|
482
|
+
|
|
437
483
|
def _commit_turn(turn: PendingTurn, response: Response) -> None:
|
|
438
484
|
trace = turn.trace
|
|
439
485
|
prompt = turn.prompt
|
|
@@ -540,6 +586,10 @@ def _commit_turn(turn: PendingTurn, response: Response) -> None:
|
|
|
540
586
|
trace, new_node_ids, path_len, tokens.routed_experts if tokens else None
|
|
541
587
|
)
|
|
542
588
|
|
|
589
|
+
# Attribute this turn's kept-set sampling masks onto the assistant node (they are
|
|
590
|
+
# completion-aligned, so only the sampled node carries them).
|
|
591
|
+
_attribute_kept_tokens(trace, assistant_id, tokens.kept_tokens if tokens else None)
|
|
592
|
+
|
|
543
593
|
|
|
544
594
|
# --- walking the graph (views) ---------------------------------------------------------
|
|
545
595
|
|
|
@@ -37,6 +37,7 @@ logger = logging.getLogger(__name__)
|
|
|
37
37
|
|
|
38
38
|
class Phase(StrEnum):
|
|
39
39
|
PENDING = "pending"
|
|
40
|
+
BOOT = "boot"
|
|
40
41
|
SETUP = "setup"
|
|
41
42
|
RUNNING = "running"
|
|
42
43
|
FINALIZE = "finalize"
|
|
@@ -108,8 +109,8 @@ class Rollout:
|
|
|
108
109
|
state=state_cls(type(self.task))(),
|
|
109
110
|
)
|
|
110
111
|
self.trace = trace # expose for the --rich dashboard
|
|
111
|
-
self.phase = Phase.
|
|
112
|
-
trace.timing.
|
|
112
|
+
self.phase = Phase.BOOT # leaving the queue: the runtime boots now
|
|
113
|
+
trace.timing.boot.start = time.time()
|
|
113
114
|
self.runtime = make_runtime(self.runtime_config, name=trace.id)
|
|
114
115
|
runtime = self.runtime
|
|
115
116
|
trace.runtime = runtime.info
|
|
@@ -125,6 +126,10 @@ class Rollout:
|
|
|
125
126
|
try:
|
|
126
127
|
session = RolloutSession(ctx, trace, stops, self.limits)
|
|
127
128
|
await runtime.start()
|
|
129
|
+
now = time.time()
|
|
130
|
+
trace.timing.boot.end = now
|
|
131
|
+
trace.timing.setup.start = now
|
|
132
|
+
self.phase = Phase.SETUP
|
|
128
133
|
# Task setup and harness provisioning share one setup-stage deadline.
|
|
129
134
|
setup_deadline = (
|
|
130
135
|
None
|
|
@@ -228,6 +233,7 @@ class Rollout:
|
|
|
228
233
|
trace.is_completed = True
|
|
229
234
|
now = time.time()
|
|
230
235
|
for span in (
|
|
236
|
+
trace.timing.boot,
|
|
231
237
|
trace.timing.setup,
|
|
232
238
|
trace.timing.generation,
|
|
233
239
|
trace.timing.finalize,
|
|
@@ -22,6 +22,7 @@ from verifiers.v1.state import State, StateT
|
|
|
22
22
|
from verifiers.v1.task import DataT, WireTaskData
|
|
23
23
|
from verifiers.v1.types import (
|
|
24
24
|
AssistantMessage,
|
|
25
|
+
KeptTokens,
|
|
25
26
|
Messages,
|
|
26
27
|
StrictBaseModel,
|
|
27
28
|
Tool,
|
|
@@ -46,6 +47,7 @@ class TimeSpan(StrictBaseModel):
|
|
|
46
47
|
|
|
47
48
|
class Timing(StrictBaseModel):
|
|
48
49
|
start: float = Field(default_factory=time.time)
|
|
50
|
+
boot: TimeSpan = Field(default_factory=TimeSpan)
|
|
49
51
|
setup: TimeSpan = Field(default_factory=TimeSpan)
|
|
50
52
|
generation: TimeSpan = Field(default_factory=TimeSpan)
|
|
51
53
|
finalize: TimeSpan = Field(default_factory=TimeSpan)
|
|
@@ -139,6 +141,32 @@ class Branch(StrictBaseModel):
|
|
|
139
141
|
total = sum(len(n.token_ids) for n in nodes)
|
|
140
142
|
return merged if merged.shape[0] == total else None
|
|
141
143
|
|
|
144
|
+
@property
|
|
145
|
+
def kept_tokens(self) -> KeptTokens | None:
|
|
146
|
+
"""The branch's kept-set sampling masks: `counts` is int32 aligned 1:1 with
|
|
147
|
+
`token_ids` (0 = no mask, safe under partial coverage — unlike `routed_experts`
|
|
148
|
+
this is not all-or-nothing), `ids` the flat int32 concatenation of the kept
|
|
149
|
+
sets in position order. None when no node carries kept-set data."""
|
|
150
|
+
if all(n.kept_tokens is None for n in self.nodes):
|
|
151
|
+
return None
|
|
152
|
+
# `_attribute_kept_tokens` validates counts/ids against the node's sampled
|
|
153
|
+
# tokens before setting the field, so this is a straight scatter+concat
|
|
154
|
+
# (a corrupted node would fail loudly on the scatter shape mismatch).
|
|
155
|
+
ids_parts: list[np.ndarray] = []
|
|
156
|
+
counts_parts: list[np.ndarray] = []
|
|
157
|
+
for node in self.nodes:
|
|
158
|
+
counts = np.zeros(len(node.mask), dtype=np.int32)
|
|
159
|
+
if node.kept_tokens is not None and len(node.kept_tokens.counts):
|
|
160
|
+
counts[np.nonzero(node.mask)[0]] = node.kept_tokens.counts
|
|
161
|
+
ids_parts.append(node.kept_tokens.ids)
|
|
162
|
+
counts_parts.append(counts)
|
|
163
|
+
ids = (
|
|
164
|
+
np.concatenate(ids_parts).astype(np.int32, copy=False)
|
|
165
|
+
if ids_parts
|
|
166
|
+
else np.zeros(0, dtype=np.int32)
|
|
167
|
+
)
|
|
168
|
+
return KeptTokens(ids=ids, counts=np.concatenate(counts_parts))
|
|
169
|
+
|
|
142
170
|
@property
|
|
143
171
|
def num_total_tokens(self) -> int:
|
|
144
172
|
return sum(len(n.token_ids) for n in self.nodes)
|
|
@@ -172,7 +200,13 @@ class Branch(StrictBaseModel):
|
|
|
172
200
|
|
|
173
201
|
|
|
174
202
|
_NODE_DUMP_EXCLUDE: dict = {
|
|
175
|
-
"nodes": {
|
|
203
|
+
"nodes": {
|
|
204
|
+
"__all__": {
|
|
205
|
+
"multi_modal_data",
|
|
206
|
+
"routed_experts",
|
|
207
|
+
"kept_tokens",
|
|
208
|
+
}
|
|
209
|
+
}
|
|
176
210
|
}
|
|
177
211
|
"""Raw tensor fields kept on the msgpack wire but excluded from JSON records."""
|
|
178
212
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from collections.abc import Iterable
|
|
2
|
+
from dataclasses import dataclass
|
|
2
3
|
from typing import Annotated, Any, Literal
|
|
3
4
|
|
|
4
5
|
from pydantic import AfterValidator, AliasChoices, BaseModel, ConfigDict, Field
|
|
@@ -178,6 +179,18 @@ class RoutedExperts(TypedDict):
|
|
|
178
179
|
start: int
|
|
179
180
|
|
|
180
181
|
|
|
182
|
+
@dataclass
|
|
183
|
+
class KeptTokens:
|
|
184
|
+
"""Kept-set sampling masks for sampling replay: `ids` (every kept set concatenated
|
|
185
|
+
in position order) and `counts` (kept-set size per completion token; 0 = no usable
|
|
186
|
+
mask). Base64 blobs straight off the `generate` response on the `TurnTokens`
|
|
187
|
+
carrier; decoded to flat int32 arrays on `MessageNode` (`len(ids) == sum(counts)`,
|
|
188
|
+
row boundaries recovered from `counts`)."""
|
|
189
|
+
|
|
190
|
+
ids: Any
|
|
191
|
+
counts: Any
|
|
192
|
+
|
|
193
|
+
|
|
181
194
|
class TurnTokens(StrictBaseModel):
|
|
182
195
|
"""Training tokens from renderer tokenization or provider-returned token IDs."""
|
|
183
196
|
|
|
@@ -200,6 +213,11 @@ class TurnTokens(StrictBaseModel):
|
|
|
200
213
|
# per token), attributed per node by the turn's `commit` into `MessageNode.routed_experts`,
|
|
201
214
|
# then dropped. None unless the engine ran with `enable_return_routed_experts`.
|
|
202
215
|
routed_experts: RoutedExperts | None = Field(default=None, exclude=True)
|
|
216
|
+
# Transient carrier (excluded): the kept-set sampling masks from `generate` (token ids
|
|
217
|
+
# surviving top-p/top-k truncation, per completion token), attributed to the assistant
|
|
218
|
+
# node by the turn's `commit`, then dropped. None unless the engine ran with
|
|
219
|
+
# `enable_return_kept_tokens`.
|
|
220
|
+
kept_tokens: KeptTokens | None = Field(default=None, exclude=True)
|
|
203
221
|
|
|
204
222
|
|
|
205
223
|
class Response(StrictBaseModel):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.1.dev12 → verifiers-0.2.1.dev20}/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
|