verifiers 0.2.2.dev75__tar.gz → 0.2.2.dev77__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.
Files changed (430) hide show
  1. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/PKG-INFO +1 -1
  2. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/pyproject.toml +1 -2
  3. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/__init__.py +2 -2
  4. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/cli/__init__.py +1 -2
  5. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/cli/eval.py +2 -2
  6. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/harness.py +2 -0
  7. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/serve.py +5 -5
  8. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/bash/harness.py +2 -1
  9. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/bash/program.py +3 -2
  10. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/browser_use/harness.py +2 -1
  11. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/browser_use/program.py +3 -2
  12. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/codex/harness.py +1 -1
  13. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/null/harness.py +2 -1
  14. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/null/program.py +3 -2
  15. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/openclaw/harness.py +1 -1
  16. verifiers-0.2.2.dev75/verifiers/v1/cli/serve.py +0 -79
  17. verifiers-0.2.2.dev75/verifiers/v1/configs/cli/serve.py +0 -62
  18. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/.gitignore +0 -0
  19. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/LICENSE +0 -0
  20. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/README.md +0 -0
  21. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/__init__.py +0 -0
  22. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/conftest.py +0 -0
  23. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_browser_env.py +0 -0
  24. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_build_script.py +0 -0
  25. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_cli_agent_env.py +0 -0
  26. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_client_auth_errors.py +0 -0
  27. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_client_config.py +0 -0
  28. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_client_multimodal_types.py +0 -0
  29. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_composable_env.py +0 -0
  30. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_context_token_metrics.py +0 -0
  31. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_decorator_ranks.py +0 -0
  32. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_endpoint_registry.py +0 -0
  33. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_env_group.py +0 -0
  34. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_env_server.py +0 -0
  35. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_environment.py +0 -0
  36. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_environment_extra.py +0 -0
  37. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_error_chain.py +0 -0
  38. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_eval_display.py +0 -0
  39. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_eval_utils.py +0 -0
  40. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_gepa_cli.py +0 -0
  41. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_gepa_utils.py +0 -0
  42. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_gym_env.py +0 -0
  43. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_harbor_env_mcp.py +0 -0
  44. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_imports.py +0 -0
  45. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_init_script.py +0 -0
  46. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_install_utils.py +0 -0
  47. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_interception_utils.py +0 -0
  48. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_logging.py +0 -0
  49. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_math_rubric.py +0 -0
  50. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_maybe_think_parser.py +0 -0
  51. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_message_utils.py +0 -0
  52. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_message_utils_multimodal.py +0 -0
  53. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_multiturn_env.py +0 -0
  54. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_nemorl_client.py +0 -0
  55. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_openai_chat_completions_token_client.py +0 -0
  56. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_openai_responses_client.py +0 -0
  57. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_opencode_rlm_env.py +0 -0
  58. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_openenv_client.py +0 -0
  59. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_parser.py +0 -0
  60. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_path_utils.py +0 -0
  61. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_per_turn_timing.py +0 -0
  62. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_pricing_utils.py +0 -0
  63. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_prime_plugin.py +0 -0
  64. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_renderer_client.py +0 -0
  65. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_renderer_e2e.py +0 -0
  66. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_rlm_composable_env.py +0 -0
  67. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_rubric.py +0 -0
  68. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_rubric_group.py +0 -0
  69. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_sandbox_debug_env.py +0 -0
  70. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_sandbox_env.py +0 -0
  71. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_sandbox_mixin.py +0 -0
  72. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_save_utils.py +0 -0
  73. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_setup_script.py +0 -0
  74. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_singleturn_env.py +0 -0
  75. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_stateful_tool_env.py +0 -0
  76. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_think_parser.py +0 -0
  77. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_tool_env.py +0 -0
  78. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_tool_utils.py +0 -0
  79. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_trajectory_processing.py +0 -0
  80. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_tui_info_formatting.py +0 -0
  81. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_types.py +0 -0
  82. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/test_xml_parser.py +0 -0
  83. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/conftest.py +0 -0
  84. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  85. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/fixtures/duet_v1.py +0 -0
  86. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  87. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  88. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/fixtures/echo_multi_v0.py +0 -0
  89. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  90. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  91. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/fixtures/echo_v0.py +0 -0
  92. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/fixtures/echo_v1.py +0 -0
  93. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/fixtures/pyproject.toml +0 -0
  94. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  95. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/test_color_codeword_tasks.py +0 -0
  96. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/test_configs.py +0 -0
  97. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/test_e2e.py +0 -0
  98. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/test_envs.py +0 -0
  99. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/test_graph.py +0 -0
  100. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/test_judges.py +0 -0
  101. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/test_legacy.py +0 -0
  102. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/test_scoring.py +0 -0
  103. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/test_taskset.py +0 -0
  104. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/tests/v1/test_trace.py +0 -0
  105. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/__init__.py +0 -0
  106. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/cli/__init__.py +0 -0
  107. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/cli/commands/__init__.py +0 -0
  108. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/cli/commands/build.py +0 -0
  109. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/cli/commands/eval.py +0 -0
  110. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/cli/commands/gepa.py +0 -0
  111. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/cli/commands/init.py +0 -0
  112. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/cli/commands/install.py +0 -0
  113. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/cli/commands/setup.py +0 -0
  114. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/cli/plugins/__init__.py +0 -0
  115. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/cli/plugins/prime.py +0 -0
  116. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/cli/tui.py +0 -0
  117. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/clients/__init__.py +0 -0
  118. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/clients/anthropic_messages_client.py +0 -0
  119. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/clients/client.py +0 -0
  120. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
  121. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/clients/openai_chat_completions_client.py +0 -0
  122. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
  123. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/clients/openai_completions_client.py +0 -0
  124. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/clients/openai_responses_client.py +0 -0
  125. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/clients/renderer_client.py +0 -0
  126. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/decorators.py +0 -0
  127. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/__init__.py +0 -0
  128. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/env_group.py +0 -0
  129. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/environment.py +0 -0
  130. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/README.md +0 -0
  131. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/__init__.py +0 -0
  132. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/cli_agent_env.py +0 -0
  133. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/README.md +0 -0
  134. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/__init__.py +0 -0
  135. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/_filter.py +0 -0
  136. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/composable_env.py +0 -0
  137. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/harness.py +0 -0
  138. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
  139. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  140. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
  141. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
  142. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
  143. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
  144. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
  145. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/task.py +0 -0
  146. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
  147. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  148. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  149. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  150. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
  151. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
  152. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  153. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
  154. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  155. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  156. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
  157. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  158. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  159. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  160. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  161. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  162. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  163. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  164. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  165. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  166. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  167. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  168. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  169. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  170. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  171. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  172. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  173. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  174. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  175. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  176. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  177. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  178. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  179. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  180. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/gym_env.py +0 -0
  181. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
  182. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/harbor_env/env.py +0 -0
  183. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
  184. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/mcp_env.py +0 -0
  185. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/opencode_env.py +0 -0
  186. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
  187. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
  188. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
  189. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/utils/__init__.py +0 -0
  190. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/utils/file_locks.py +0 -0
  191. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
  192. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/integrations/README.md +0 -0
  193. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/integrations/__init__.py +0 -0
  194. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/integrations/browser_env/README.md +0 -0
  195. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
  196. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
  197. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
  198. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
  199. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  200. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  201. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/integrations/openenv_env.py +0 -0
  202. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
  203. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/integrations/textarena_env.py +0 -0
  204. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/multiturn_env.py +0 -0
  205. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/python_env.py +0 -0
  206. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/sandbox_env.py +0 -0
  207. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/singleturn_env.py +0 -0
  208. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/stateful_tool_env.py +0 -0
  209. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/envs/tool_env.py +0 -0
  210. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/errors.py +0 -0
  211. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/gepa/__init__.py +0 -0
  212. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/gepa/adapter.py +0 -0
  213. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/gepa/config.py +0 -0
  214. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/gepa/display.py +0 -0
  215. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/gepa/gepa_utils.py +0 -0
  216. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/parsers/__init__.py +0 -0
  217. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/parsers/maybe_think_parser.py +0 -0
  218. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/parsers/parser.py +0 -0
  219. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/parsers/think_parser.py +0 -0
  220. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/parsers/xml_parser.py +0 -0
  221. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/rubrics/__init__.py +0 -0
  222. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
  223. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/rubrics/judge_rubric.py +0 -0
  224. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/rubrics/math_rubric.py +0 -0
  225. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/rubrics/rubric.py +0 -0
  226. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/rubrics/rubric_group.py +0 -0
  227. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/scripts/__init__.py +0 -0
  228. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/scripts/build.py +0 -0
  229. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/scripts/eval.py +0 -0
  230. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/scripts/gepa.py +0 -0
  231. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/scripts/init.py +0 -0
  232. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/scripts/install.py +0 -0
  233. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/scripts/setup.py +0 -0
  234. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/scripts/tui.py +0 -0
  235. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/serve/__init__.py +0 -0
  236. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/serve/client/env_client.py +0 -0
  237. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/serve/client/zmq_env_client.py +0 -0
  238. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/serve/server/__init__.py +0 -0
  239. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/serve/server/env_router.py +0 -0
  240. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/serve/server/env_server.py +0 -0
  241. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/serve/server/env_worker.py +0 -0
  242. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/serve/server/zmq_env_server.py +0 -0
  243. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/serve/types.py +0 -0
  244. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/types.py +0 -0
  245. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/__init__.py +0 -0
  246. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/async_utils.py +0 -0
  247. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/client_utils.py +0 -0
  248. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/config_utils.py +0 -0
  249. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/data_utils.py +0 -0
  250. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/display_utils.py +0 -0
  251. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/env_config_utils.py +0 -0
  252. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/env_utils.py +0 -0
  253. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/error_utils.py +0 -0
  254. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/eval_display.py +0 -0
  255. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/eval_utils.py +0 -0
  256. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/heartbeat.py +0 -0
  257. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/import_utils.py +0 -0
  258. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/install_utils.py +0 -0
  259. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/interception_utils.py +0 -0
  260. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/logging_utils.py +0 -0
  261. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/message_utils.py +0 -0
  262. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/metric_utils.py +0 -0
  263. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/path_utils.py +0 -0
  264. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/pricing_utils.py +0 -0
  265. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/process_utils.py +0 -0
  266. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/response_utils.py +0 -0
  267. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/save_utils.py +0 -0
  268. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/serve_utils.py +0 -0
  269. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/thread_utils.py +0 -0
  270. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/threaded_sandbox_client.py +0 -0
  271. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/tool_utils.py +0 -0
  272. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/usage_utils.py +0 -0
  273. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/utils/version_utils.py +0 -0
  274. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/acp/__init__.py +0 -0
  275. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/acp/_runner.py +0 -0
  276. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/agent.py +0 -0
  277. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/__init__.py +0 -0
  278. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  279. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/dashboard/base.py +0 -0
  280. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/dashboard/eval.py +0 -0
  281. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/dashboard/replay.py +0 -0
  282. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/dashboard/validate.py +0 -0
  283. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/debug.py +0 -0
  284. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/eval/__init__.py +0 -0
  285. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/eval/main.py +0 -0
  286. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/eval/resume.py +0 -0
  287. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/eval/runner.py +0 -0
  288. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/gepa.py +0 -0
  289. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/init.py +0 -0
  290. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/output.py +0 -0
  291. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/replay.py +0 -0
  292. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/resolve.py +0 -0
  293. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/cli/validate.py +0 -0
  294. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/clients/__init__.py +0 -0
  295. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/clients/base.py +0 -0
  296. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/clients/client.py +0 -0
  297. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/clients/eval.py +0 -0
  298. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/clients/train.py +0 -0
  299. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/__init__.py +0 -0
  300. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/agent.py +0 -0
  301. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/cli/debug.py +0 -0
  302. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/cli/env.py +0 -0
  303. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/cli/init.py +0 -0
  304. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/cli/replay.py +0 -0
  305. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/cli/validate.py +0 -0
  306. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/client.py +0 -0
  307. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/env.py +0 -0
  308. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/judge.py +0 -0
  309. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/legacy.py +0 -0
  310. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/retries.py +0 -0
  311. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/task.py +0 -0
  312. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/configs/taskset.py +0 -0
  313. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/dialects/__init__.py +0 -0
  314. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/dialects/anthropic.py +0 -0
  315. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/dialects/base.py +0 -0
  316. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/dialects/chat.py +0 -0
  317. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/dialects/responses.py +0 -0
  318. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/env.py +0 -0
  319. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/envs/__init__.py +0 -0
  320. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  321. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  322. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  323. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/envs/best_of_n/env.py +0 -0
  324. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  325. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/envs/single_agent/env.py +0 -0
  326. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  327. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/envs/user_sim/env.py +0 -0
  328. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/episode.py +0 -0
  329. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/errors.py +0 -0
  330. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/gepa/__init__.py +0 -0
  331. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/gepa/adapter.py +0 -0
  332. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/gepa/config.py +0 -0
  333. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/gepa/dataset.py +0 -0
  334. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/gepa/reflection.py +0 -0
  335. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/gepa/runner.py +0 -0
  336. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/graph.py +0 -0
  337. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harness.py +0 -0
  338. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/__init__.py +0 -0
  339. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  340. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  341. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  342. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  343. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  344. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  345. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  346. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  347. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  348. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  349. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  350. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  351. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  352. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/null/__init__.py +0 -0
  353. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  354. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  355. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/pi/harness.py +0 -0
  356. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/pool/__init__.py +0 -0
  357. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/pool/harness.py +0 -0
  358. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  359. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  360. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  361. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  362. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  363. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/interception/__init__.py +0 -0
  364. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/interception/base.py +0 -0
  365. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/interception/pool.py +0 -0
  366. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/interception/server.py +0 -0
  367. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  368. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/interception/tunnel/base.py +0 -0
  369. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/interception/tunnel/custom.py +0 -0
  370. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/interception/tunnel/prime.py +0 -0
  371. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/judge.py +0 -0
  372. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/judges/__init__.py +0 -0
  373. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/judges/reference.py +0 -0
  374. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/judges/reference.txt +0 -0
  375. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/judges/rubric.py +0 -0
  376. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/judges/rubric.txt +0 -0
  377. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/legacy.py +0 -0
  378. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/mcp/__init__.py +0 -0
  379. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/mcp/launch.py +0 -0
  380. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/mcp/server.py +0 -0
  381. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/mcp/toolset.py +0 -0
  382. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/rollout.py +0 -0
  383. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/runtimes/__init__.py +0 -0
  384. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/runtimes/base.py +0 -0
  385. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  386. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/runtimes/docker/egress.py +0 -0
  387. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/runtimes/limiters.py +0 -0
  388. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/runtimes/modal.py +0 -0
  389. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/runtimes/prime.py +0 -0
  390. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/runtimes/subprocess.py +0 -0
  391. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/serve/__init__.py +0 -0
  392. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/serve/client.py +0 -0
  393. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/serve/pool.py +0 -0
  394. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/serve/server.py +0 -0
  395. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/serve/types.py +0 -0
  396. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/session.py +0 -0
  397. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/state.py +0 -0
  398. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/task.py +0 -0
  399. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/taskset.py +0 -0
  400. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/tasksets/__init__.py +0 -0
  401. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  402. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/tasksets/harbor/env.py +0 -0
  403. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  404. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  405. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  406. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  407. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  408. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  409. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  410. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  411. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/trace.py +0 -0
  412. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/types.py +0 -0
  413. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/__init__.py +0 -0
  414. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/aio.py +0 -0
  415. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/artifacts.py +0 -0
  416. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/compile.py +0 -0
  417. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/decorators.py +0 -0
  418. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/format.py +0 -0
  419. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/generic.py +0 -0
  420. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/git.py +0 -0
  421. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/image.py +0 -0
  422. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/install.py +0 -0
  423. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/interrupt.py +0 -0
  424. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/loaders.py +0 -0
  425. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/logging.py +0 -0
  426. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/memory.py +0 -0
  427. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/platform.py +0 -0
  428. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/retries.py +0 -0
  429. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/verifiers/v1/utils/score.py +0 -0
  430. {verifiers-0.2.2.dev75 → verifiers-0.2.2.dev77}/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.dev75
3
+ Version: 0.2.2.dev77
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
@@ -72,7 +72,7 @@ dev = [
72
72
  "textarena==0.7.4",
73
73
  ]
74
74
  # V1 examples and support packages, resolved from their local sources below.
75
- # Installed by default (tool.uv.default-groups) so the v1 CLIs (eval <id>, serve) run straight
75
+ # Installed by default (tool.uv.default-groups) so the v1 CLIs (eval <id>, validate) run straight
76
76
  # from this repo. The built-in tasksets/harnesses ship inside verifiers (verifiers/v1/...).
77
77
  examples = [
78
78
  "compact",
@@ -152,7 +152,6 @@ eval = "verifiers.v1.cli.eval.main:main"
152
152
  validate = "verifiers.v1.cli.validate:main"
153
153
  debug = "verifiers.v1.cli.debug:main"
154
154
  replay = "verifiers.v1.cli.replay:main"
155
- serve = "verifiers.v1.cli.serve:main"
156
155
  init = "verifiers.v1.cli.init:main"
157
156
  gepa = "verifiers.v1.cli.gepa:main"
158
157
  vf-gepa = "verifiers.scripts.gepa:main"
@@ -22,7 +22,7 @@ from verifiers.v1.configs.legacy import LegacyEnvConfig
22
22
  from verifiers.v1.configs.retries import RetryConfig
23
23
  from verifiers.v1.configs.serve import (
24
24
  ElasticPoolConfig,
25
- ServingConfig,
25
+ ServeConfig,
26
26
  StaticPoolConfig,
27
27
  pool_serve_kwargs,
28
28
  )
@@ -254,7 +254,7 @@ __all__ = [ # noqa: RUF022 - grouped by public API area
254
254
  "Env",
255
255
  "SingleAgentEnv",
256
256
  "EnvConfig",
257
- "ServingConfig",
257
+ "ServeConfig",
258
258
  "LegacyEnvConfig",
259
259
  "resolve_env_field",
260
260
  "narrowed_env_annotation",
@@ -3,7 +3,6 @@
3
3
  from verifiers.v1.configs.cli.debug import DebugConfig
4
4
  from verifiers.v1.configs.cli.eval import EvalConfig
5
5
  from verifiers.v1.configs.cli.init import InitConfig
6
- from verifiers.v1.configs.cli.serve import ServeConfig
7
6
  from verifiers.v1.configs.cli.validate import ValidateConfig
8
7
 
9
- __all__ = ["DebugConfig", "EvalConfig", "InitConfig", "ServeConfig", "ValidateConfig"]
8
+ __all__ = ["DebugConfig", "EvalConfig", "InitConfig", "ValidateConfig"]
@@ -10,7 +10,7 @@ from verifiers.v1.clients import ClientConfig, EvalClientConfig
10
10
  from verifiers.v1.configs.cli.env import narrowed_env_annotation, resolve_env_field
11
11
  from verifiers.v1.configs.env import EnvConfig
12
12
  from verifiers.v1.configs.legacy import LegacyEnvConfig
13
- from verifiers.v1.configs.serve import ServingConfig
13
+ from verifiers.v1.configs.serve import ServeConfig
14
14
  from verifiers.v1.envs.single_agent import SingleAgentEnvConfig
15
15
  from verifiers.v1.types import SamplingConfig
16
16
 
@@ -19,7 +19,7 @@ class EvalConfig(BaseConfig):
19
19
  env: SerializeAsAny[EnvConfig] = SingleAgentEnvConfig()
20
20
  """The environment — which env, its seed taskset, each agent, its knobs. Narrowed to
21
21
  the selected env's config class by the env id, else the taskset id."""
22
- serve: ServingConfig = ServingConfig()
22
+ serve: ServeConfig = ServeConfig()
23
23
  """How the env is hosted under `--server`: the worker pool, each worker's episode
24
24
  bound. Ignored by an in-process run."""
25
25
  legacy: LegacyEnvConfig = LegacyEnvConfig()
@@ -20,6 +20,8 @@ class HarnessConfig(BaseConfig):
20
20
  """Extra program variables; harness-owned variables take precedence."""
21
21
  forward_env: list[str] = Field(default_factory=list)
22
22
  """Host variables to forward without writing secrets into config; explicit `env` wins."""
23
+ tool_timeout: float = Field(600.0, gt=0)
24
+ """Seconds a single MCP tool call may take; raise it for tools that boot a VM."""
23
25
  disabled_tools: list[str] | None = None
24
26
  skills: list[Path] = Field(default_factory=list)
25
27
  """Skill folders to upload into the program's skill discovery directory — each
@@ -1,8 +1,8 @@
1
1
  """How an env is served: the worker pool, where it binds, and each worker's bound.
2
2
 
3
3
  Serving is its own axis. `[env]` says what runs; this says how it's hosted, so an
4
- eval, a `serve` process, and a trainer configure it identically instead of each
5
- flattening pool knobs onto its own config."""
4
+ eval and a trainer's env server configure it identically instead of each flattening
5
+ pool knobs onto its own config."""
6
6
 
7
7
  from typing import Annotated, Literal
8
8
 
@@ -35,10 +35,10 @@ PoolConfig = Annotated[
35
35
  ]
36
36
 
37
37
 
38
- class ServingConfig(BaseConfig):
38
+ class ServeConfig(BaseConfig):
39
39
  """The `[serve]` block: the worker pool, the ZMQ address, and each worker's
40
- episode bound. Read by whoever hosts the env — the `serve` CLI, a server-backed
41
- eval, a trainer's orchestrator."""
40
+ episode bound. Read by whoever hosts the env — a server-backed eval, a
41
+ trainer's env-server process."""
42
42
 
43
43
  pool: PoolConfig = Field(default_factory=ElasticPoolConfig)
44
44
  """Worker-pool sizing. `elastic` (default) starts at one worker and scales up on
@@ -101,7 +101,8 @@ class BashHarness(Harness[BashHarnessConfig]):
101
101
  + json.dumps(
102
102
  {
103
103
  "mcpServers": {
104
- name: {"url": url} for name, url in mcp_urls.items()
104
+ name: {"url": url, "timeout": self.config.tool_timeout}
105
+ for name, url in mcp_urls.items()
105
106
  }
106
107
  }
107
108
  )
@@ -18,7 +18,7 @@ from tenacity import AsyncRetrying, stop_after_attempt, wait_exponential_jitter
18
18
  SERPER_URL = "https://google.serper.dev/search"
19
19
 
20
20
  MCP_CALL_ATTEMPTS = 6
21
- MCP_TIMEOUT = httpx.Timeout(600.0, connect=5.0) # the OpenAI SDK client defaults
21
+ MCP_TIMEOUT = 600.0
22
22
 
23
23
 
24
24
  BASH_TOOL = {
@@ -202,7 +202,8 @@ async def mcp_session(spec: dict):
202
202
  try:
203
203
  http_client = await stack.enter_async_context(
204
204
  create_mcp_http_client(
205
- headers=spec.get("headers") or None, timeout=MCP_TIMEOUT
205
+ headers=spec.get("headers") or None,
206
+ timeout=httpx.Timeout(spec.get("timeout", MCP_TIMEOUT), connect=5.0),
206
207
  )
207
208
  )
208
209
  read, write, *_ = await stack.enter_async_context(
@@ -104,7 +104,8 @@ class BrowserUseHarness(Harness[BrowserUseHarnessConfig]):
104
104
  + json.dumps(
105
105
  {
106
106
  "mcpServers": {
107
- name: {"url": url} for name, url in mcp_urls.items()
107
+ name: {"url": url, "timeout": self.config.tool_timeout}
108
+ for name, url in mcp_urls.items()
108
109
  }
109
110
  }
110
111
  )
@@ -36,7 +36,7 @@ from openai import AsyncOpenAI
36
36
  from tenacity import AsyncRetrying, stop_after_attempt, wait_exponential_jitter
37
37
 
38
38
  MCP_CALL_ATTEMPTS = 6
39
- MCP_TIMEOUT = httpx.Timeout(600.0, connect=5.0) # the OpenAI SDK client defaults
39
+ MCP_TIMEOUT = 600.0
40
40
 
41
41
  BROWSER_TOOL_TIMEOUT = 3600
42
42
  """Matches the bash harness's command timeout."""
@@ -203,7 +203,8 @@ async def mcp_session(spec: dict):
203
203
  try:
204
204
  http_client = await stack.enter_async_context(
205
205
  create_mcp_http_client(
206
- headers=spec.get("headers") or None, timeout=MCP_TIMEOUT
206
+ headers=spec.get("headers") or None,
207
+ timeout=httpx.Timeout(spec.get("timeout", MCP_TIMEOUT), connect=5.0),
207
208
  )
208
209
  )
209
210
  read, write, *_ = await stack.enter_async_context(
@@ -254,7 +254,7 @@ class CodexHarness(Harness[CodexHarnessConfig]):
254
254
  (
255
255
  f"{json.dumps(name, ensure_ascii=False)}="
256
256
  f"{{url={json.dumps(url, ensure_ascii=False)},required=true,"
257
- "startup_timeout_sec=60.0,tool_timeout_sec=600.0}"
257
+ f"startup_timeout_sec=60.0,tool_timeout_sec={self.config.tool_timeout}}}"
258
258
  )
259
259
  for name, url in mcp_urls.items()
260
260
  )
@@ -53,7 +53,8 @@ class NullHarness(Harness[NullHarnessConfig]):
53
53
  + json.dumps(
54
54
  {
55
55
  "mcpServers": {
56
- name: {"url": url} for name, url in mcp_urls.items()
56
+ name: {"url": url, "timeout": self.config.tool_timeout}
57
+ for name, url in mcp_urls.items()
57
58
  }
58
59
  }
59
60
  )
@@ -15,7 +15,7 @@ from openai import AsyncOpenAI
15
15
  from tenacity import AsyncRetrying, stop_after_attempt, wait_exponential_jitter
16
16
 
17
17
  MCP_CALL_ATTEMPTS = 6
18
- MCP_TIMEOUT = httpx.Timeout(600.0, connect=5.0) # the OpenAI SDK client defaults
18
+ MCP_TIMEOUT = 600.0
19
19
 
20
20
 
21
21
  async def chat(
@@ -43,7 +43,8 @@ async def mcp_session(spec: dict):
43
43
  try:
44
44
  http_client = await stack.enter_async_context(
45
45
  create_mcp_http_client(
46
- headers=spec.get("headers") or None, timeout=MCP_TIMEOUT
46
+ headers=spec.get("headers") or None,
47
+ timeout=httpx.Timeout(spec.get("timeout", MCP_TIMEOUT), connect=5.0),
47
48
  )
48
49
  )
49
50
  read, write, *_ = await stack.enter_async_context(
@@ -166,7 +166,7 @@ class OpenClawHarness(Harness[OpenClawHarnessConfig]):
166
166
  "url": url,
167
167
  "transport": "streamable-http",
168
168
  "connectionTimeoutMs": 60_000,
169
- "requestTimeoutMs": 600_000,
169
+ "requestTimeoutMs": int(self.config.tool_timeout * 1000),
170
170
  }
171
171
  for name, url in mcp_urls.items()
172
172
  }
@@ -1,79 +0,0 @@
1
- """Environment-server CLI entrypoint."""
2
-
3
- import sys
4
- from functools import partial
5
-
6
- from pydantic_config import cli
7
-
8
- from verifiers.v1.cli.resolve import (
9
- extract_id,
10
- narrow_config,
11
- plugin_errors,
12
- references_config_file,
13
- with_positional_taskset,
14
- )
15
- from verifiers.v1.configs.cli.serve import ServeConfig
16
- from verifiers.v1.configs.serve import pool_serve_kwargs
17
- from verifiers.v1.serve import serve_env
18
- from verifiers.v1.utils.logging import setup_logging
19
-
20
- USAGE = "usage: uv run serve [<taskset-id>] [--env.id <id>] [--legacy.id <env-id> (v0)] [options] [@ file.toml]"
21
-
22
-
23
- def main(argv: list[str] | None = None) -> None:
24
- argv = with_positional_taskset(list(sys.argv[1:]) if argv is None else list(argv))
25
-
26
- if not argv or any(arg in ("-h", "--help") for arg in argv):
27
- print(USAGE)
28
- sys.argv = [sys.argv[0], "--help"]
29
- with plugin_errors():
30
- cli(narrow_config(ServeConfig, argv))
31
- return
32
- legacy_id = any(a == "--legacy.id" or a.startswith("--legacy.id=") for a in argv)
33
- # An env-block flag (or a since-moved flat axis) skips the usage gate so the typed
34
- # parse renders its did-you-mean instead of a bare usage line.
35
- typed_axis = any(
36
- a.startswith(("--env.", "--taskset.", "--harness.", "--serve.")) for a in argv
37
- )
38
- if (
39
- not extract_id(argv, "env.taskset")
40
- and not legacy_id
41
- and not references_config_file(argv)
42
- and not typed_axis
43
- ):
44
- raise SystemExit(
45
- USAGE
46
- ) # need a taskset (positional / --env.taskset.id), a v0 --legacy.id, or @ file.toml
47
-
48
- with plugin_errors():
49
- config_type = narrow_config(ServeConfig, argv)
50
- sys.argv = [sys.argv[0], *argv]
51
- config = cli(config_type)
52
- if config.dry_run:
53
- print(config.model_dump_json(indent=2, exclude_none=True))
54
- return
55
- level = "DEBUG" if config.verbose else "INFO"
56
- setup_logging(level)
57
-
58
- # The pool config decides in-process vs router + worker pool (static or elastic); the
59
- # frontend speaks the same protocol either way. serve_env owns the SIGTERM teardown.
60
- # Pool workers are spawned with no logging, so hand serve_env the same setup to apply
61
- # in each one.
62
- server_kwargs = (
63
- {
64
- "env_id": config.legacy.id,
65
- "env_args": config.legacy.args,
66
- "extra_env_kwargs": config.legacy.extra_env_kwargs,
67
- }
68
- if config.is_legacy
69
- # `--serve.max-concurrent` is each v1 worker's episode bound; the legacy
70
- # bridge has never had one.
71
- else {"config": config.env, "max_concurrent": config.serve.max_concurrent}
72
- )
73
- serve_env(
74
- **pool_serve_kwargs(config.serve.pool),
75
- legacy=config.is_legacy,
76
- address=config.serve.address,
77
- log_setup=partial(setup_logging, level),
78
- **server_kwargs,
79
- )
@@ -1,62 +0,0 @@
1
- """Environment-server CLI configuration."""
2
-
3
- from pydantic import AliasChoices, Field, SerializeAsAny, model_validator
4
- from pydantic_config import BaseConfig
5
-
6
- from verifiers.v1.configs.cli.env import narrowed_env_annotation, resolve_env_field
7
- from verifiers.v1.configs.env import EnvConfig
8
- from verifiers.v1.configs.legacy import LegacyEnvConfig
9
- from verifiers.v1.configs.serve import ServingConfig
10
- from verifiers.v1.envs.single_agent import SingleAgentEnvConfig
11
-
12
-
13
- class ServeConfig(BaseConfig):
14
- """`uv run serve`: what to serve (`[env]`, or `[legacy]` for a classic v0 env) and
15
- how it's hosted (`[serve]`)."""
16
-
17
- env: SerializeAsAny[EnvConfig] = SingleAgentEnvConfig()
18
- """The environment — which env, its seed taskset, each agent, its knobs. Narrowed to
19
- the selected env's config class by the env id, else the taskset id."""
20
- serve: ServingConfig = ServingConfig()
21
- """How it's served: the worker pool, the bind address, each worker's episode bound."""
22
- legacy: LegacyEnvConfig = LegacyEnvConfig()
23
- """A classic (v0) environment to serve through the bridge instead of `[env]`."""
24
- verbose: bool = Field(False, validation_alias=AliasChoices("verbose", "v"))
25
- """Log at debug level instead of info."""
26
- dry_run: bool = False
27
- """Resolve + validate the config and dump it, then exit."""
28
-
29
- @property
30
- def is_legacy(self) -> bool:
31
- """Whether this run goes through the v0 bridge: a legacy id and no v1 taskset."""
32
- return self.legacy.id is not None and not self.env.taskset.id
33
-
34
- @property
35
- def env_id(self) -> str:
36
- """The run's identifier: the v1 env's, else the v0 env id."""
37
- return self.env.env_id or self.legacy.id or ""
38
-
39
- @model_validator(mode="after")
40
- def _refuse_mixed_run(self):
41
- # A v0 id next to any v1 env identity leaves one of the two going nowhere, and
42
- # which one depends on `is_legacy`: a taskset makes it False, so the v0 env never
43
- # loads; a bare `--env.id` leaves it True, so the v0 env runs under the v1 name.
44
- if self.legacy.id is None or not self.env.env_id:
45
- return self
46
- if self.env.taskset.id:
47
- raise ValueError(
48
- f"--legacy.id {self.legacy.id!r} is a classic (v0) env and can't combine "
49
- f"with the v1 taskset {self.env.taskset.id!r}. Pairing a reusable env with "
50
- f"a taskset is --env.id {self.legacy.id!r} (TOML: id under [env]); to run "
51
- "the v0 env instead, drop the taskset."
52
- )
53
- raise ValueError(
54
- f"--legacy.id {self.legacy.id!r} is a classic (v0) env and can't combine with "
55
- f"the v1 env --env.id {self.env.id!r}: the v0 env is what would run, stamped "
56
- "with the v1 env's name. Keep whichever one you meant to run."
57
- )
58
-
59
- @model_validator(mode="before")
60
- @classmethod
61
- def _resolve_env(cls, data):
62
- return resolve_env_field(data, narrowed_env_annotation(cls))
File without changes