verifiers 0.1.15.dev410__tar.gz → 0.1.15.dev411__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 (403) hide show
  1. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/PKG-INFO +1 -1
  2. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/GUIDE.md +1 -1
  3. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/default/harness.py +43 -9
  4. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/default/program.py +100 -9
  5. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/.gitignore +0 -0
  6. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/LICENSE +0 -0
  7. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/README.md +0 -0
  8. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/pyproject.toml +0 -0
  9. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/AGENTS.md +0 -0
  10. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/README.md +0 -0
  11. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/__init__.py +0 -0
  12. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/conftest.py +0 -0
  13. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_browser_env.py +0 -0
  14. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_build_script.py +0 -0
  15. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_cli_agent_env.py +0 -0
  16. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_client_auth_errors.py +0 -0
  17. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_client_config.py +0 -0
  18. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_client_multimodal_types.py +0 -0
  19. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_composable_env.py +0 -0
  20. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_context_token_metrics.py +0 -0
  21. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_decorator_ranks.py +0 -0
  22. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_endpoint_registry.py +0 -0
  23. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_env_group.py +0 -0
  24. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_env_server.py +0 -0
  25. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_environment.py +0 -0
  26. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_environment_extra.py +0 -0
  27. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_envs.py +0 -0
  28. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_error_chain.py +0 -0
  29. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_eval_display.py +0 -0
  30. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_eval_utils.py +0 -0
  31. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_gepa_cli.py +0 -0
  32. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_gepa_utils.py +0 -0
  33. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_gym_env.py +0 -0
  34. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_harbor_env_mcp.py +0 -0
  35. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_imports.py +0 -0
  36. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_init_script.py +0 -0
  37. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_install_utils.py +0 -0
  38. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_interception_utils.py +0 -0
  39. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_logging.py +0 -0
  40. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_math_rubric.py +0 -0
  41. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_maybe_think_parser.py +0 -0
  42. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_message_utils.py +0 -0
  43. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_message_utils_multimodal.py +0 -0
  44. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_multiturn_env.py +0 -0
  45. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_nemorl_client.py +0 -0
  46. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_openai_chat_completions_token_client.py +0 -0
  47. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_openai_responses_client.py +0 -0
  48. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_opencode_rlm_env.py +0 -0
  49. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_openenv_client.py +0 -0
  50. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_parser.py +0 -0
  51. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_path_utils.py +0 -0
  52. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_per_turn_timing.py +0 -0
  53. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_pricing_utils.py +0 -0
  54. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_prime_plugin.py +0 -0
  55. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_renderer_client.py +0 -0
  56. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_renderer_e2e.py +0 -0
  57. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_rlm_composable_env.py +0 -0
  58. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_rubric.py +0 -0
  59. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_rubric_group.py +0 -0
  60. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_sandbox_debug_env.py +0 -0
  61. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_sandbox_env.py +0 -0
  62. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_sandbox_mixin.py +0 -0
  63. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_save_utils.py +0 -0
  64. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_setup_script.py +0 -0
  65. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_singleturn_env.py +0 -0
  66. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_stateful_tool_env.py +0 -0
  67. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_think_parser.py +0 -0
  68. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_tool_env.py +0 -0
  69. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_tool_utils.py +0 -0
  70. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_trajectory_processing.py +0 -0
  71. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_tui_info_formatting.py +0 -0
  72. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_types.py +0 -0
  73. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_wordle_env.py +0 -0
  74. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/test_xml_parser.py +0 -0
  75. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/conftest.py +0 -0
  76. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  77. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  78. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/fixtures/echo_multi_v0.py +0 -0
  79. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  80. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  81. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/fixtures/echo_v0.py +0 -0
  82. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/fixtures/echo_v1.py +0 -0
  83. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/fixtures/pyproject.toml +0 -0
  84. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  85. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/test_color_codeword_tasks.py +0 -0
  86. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/test_configs.py +0 -0
  87. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/test_e2e.py +0 -0
  88. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/test_envs.py +0 -0
  89. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/test_graph.py +0 -0
  90. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/test_legacy.py +0 -0
  91. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/tests/v1/test_trace.py +0 -0
  92. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/AGENTS.md +0 -0
  93. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/__init__.py +0 -0
  94. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/cli/__init__.py +0 -0
  95. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/cli/commands/__init__.py +0 -0
  96. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/cli/commands/build.py +0 -0
  97. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/cli/commands/eval.py +0 -0
  98. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/cli/commands/gepa.py +0 -0
  99. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/cli/commands/init.py +0 -0
  100. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/cli/commands/install.py +0 -0
  101. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/cli/commands/setup.py +0 -0
  102. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/cli/plugins/__init__.py +0 -0
  103. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/cli/plugins/prime.py +0 -0
  104. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/cli/tui.py +0 -0
  105. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/clients/__init__.py +0 -0
  106. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/clients/anthropic_messages_client.py +0 -0
  107. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/clients/client.py +0 -0
  108. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
  109. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/clients/openai_chat_completions_client.py +0 -0
  110. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
  111. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/clients/openai_completions_client.py +0 -0
  112. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/clients/openai_responses_client.py +0 -0
  113. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/clients/renderer_client.py +0 -0
  114. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/decorators.py +0 -0
  115. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/AGENTS.md +0 -0
  116. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/__init__.py +0 -0
  117. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/env_group.py +0 -0
  118. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/environment.py +0 -0
  119. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/README.md +0 -0
  120. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/__init__.py +0 -0
  121. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/cli_agent_env.py +0 -0
  122. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/README.md +0 -0
  123. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/__init__.py +0 -0
  124. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/_filter.py +0 -0
  125. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/composable_env.py +0 -0
  126. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/harness.py +0 -0
  127. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
  128. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  129. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
  130. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
  131. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
  132. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
  133. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
  134. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/task.py +0 -0
  135. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
  136. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  137. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  138. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  139. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
  140. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
  141. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  142. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
  143. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  144. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  145. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/README.md +0 -0
  146. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/__init__.py +0 -0
  147. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/openseeker/README.md +0 -0
  148. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/openseeker/__init__.py +0 -0
  149. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/openseeker/taskset.py +0 -0
  150. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/README.md +0 -0
  151. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/__init__.py +0 -0
  152. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/__init__.py +0 -0
  153. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/__init__.py +0 -0
  154. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/tool_pdf.py +0 -0
  155. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/eval_toolkit.py +0 -0
  156. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/evaluator.py +0 -0
  157. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/__init__.py +0 -0
  158. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/base_client.py +0 -0
  159. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/__init__.py +0 -0
  160. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/cache_prompts.py +0 -0
  161. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/__init__.py +0 -0
  162. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/cache_filesys.py +0 -0
  163. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/load_eval_script.py +0 -0
  164. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/misc.py +0 -0
  165. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/tool_visit.py +0 -0
  166. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/url_tools.py +0 -0
  167. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/verification_tree.py +0 -0
  168. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/open_ended.py +0 -0
  169. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/quest/taskset.py +0 -0
  170. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/README.md +0 -0
  171. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/__init__.py +0 -0
  172. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/taskset.py +0 -0
  173. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/search/search_tasksets.py +0 -0
  174. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
  175. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  176. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  177. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  178. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  179. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  180. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  181. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  182. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  183. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  184. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  185. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  186. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  187. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  188. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  189. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  190. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  191. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  192. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  193. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  194. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  195. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  196. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  197. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  198. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/gym_env.py +0 -0
  199. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
  200. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/harbor_env/env.py +0 -0
  201. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
  202. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/mcp_env.py +0 -0
  203. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/opencode_env.py +0 -0
  204. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
  205. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
  206. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
  207. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/utils/__init__.py +0 -0
  208. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/utils/file_locks.py +0 -0
  209. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
  210. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/integrations/README.md +0 -0
  211. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/integrations/__init__.py +0 -0
  212. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/integrations/browser_env/README.md +0 -0
  213. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
  214. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
  215. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
  216. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
  217. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  218. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  219. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/integrations/openenv_env.py +0 -0
  220. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
  221. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/integrations/textarena_env.py +0 -0
  222. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/multiturn_env.py +0 -0
  223. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/python_env.py +0 -0
  224. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/sandbox_env.py +0 -0
  225. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/singleturn_env.py +0 -0
  226. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/stateful_tool_env.py +0 -0
  227. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/envs/tool_env.py +0 -0
  228. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/errors.py +0 -0
  229. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/gepa/__init__.py +0 -0
  230. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/gepa/adapter.py +0 -0
  231. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/gepa/config.py +0 -0
  232. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/gepa/display.py +0 -0
  233. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/gepa/gepa_utils.py +0 -0
  234. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/parsers/__init__.py +0 -0
  235. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/parsers/maybe_think_parser.py +0 -0
  236. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/parsers/parser.py +0 -0
  237. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/parsers/think_parser.py +0 -0
  238. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/parsers/xml_parser.py +0 -0
  239. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rl/README.md +0 -0
  240. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rl/__init__.py +0 -0
  241. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rl/inference/__init__.py +0 -0
  242. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rl/inference/client.py +0 -0
  243. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rl/inference/server.py +0 -0
  244. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rl/trainer/__init__.py +0 -0
  245. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rl/trainer/config.py +0 -0
  246. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rl/trainer/orchestrator.py +0 -0
  247. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rl/trainer/trainer.py +0 -0
  248. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rl/trainer/utils.py +0 -0
  249. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rubrics/__init__.py +0 -0
  250. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
  251. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rubrics/judge_rubric.py +0 -0
  252. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rubrics/math_rubric.py +0 -0
  253. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rubrics/rubric.py +0 -0
  254. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/rubrics/rubric_group.py +0 -0
  255. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/scripts/__init__.py +0 -0
  256. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/scripts/build.py +0 -0
  257. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/scripts/eval.py +0 -0
  258. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/scripts/gepa.py +0 -0
  259. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/scripts/init.py +0 -0
  260. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/scripts/install.py +0 -0
  261. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/scripts/rl.py +0 -0
  262. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/scripts/setup.py +0 -0
  263. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/scripts/train.py +0 -0
  264. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/scripts/tui.py +0 -0
  265. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/scripts/vllm.py +0 -0
  266. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/serve/__init__.py +0 -0
  267. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/serve/client/env_client.py +0 -0
  268. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/serve/client/zmq_env_client.py +0 -0
  269. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/serve/server/__init__.py +0 -0
  270. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/serve/server/env_router.py +0 -0
  271. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/serve/server/env_server.py +0 -0
  272. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/serve/server/env_worker.py +0 -0
  273. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/serve/server/zmq_env_server.py +0 -0
  274. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/serve/types.py +0 -0
  275. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/types.py +0 -0
  276. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/__init__.py +0 -0
  277. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/async_utils.py +0 -0
  278. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/client_utils.py +0 -0
  279. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/config_utils.py +0 -0
  280. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/data_utils.py +0 -0
  281. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/display_utils.py +0 -0
  282. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/env_config_utils.py +0 -0
  283. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/env_utils.py +0 -0
  284. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/error_utils.py +0 -0
  285. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/eval_display.py +0 -0
  286. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/eval_utils.py +0 -0
  287. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/heartbeat.py +0 -0
  288. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/import_utils.py +0 -0
  289. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/install_utils.py +0 -0
  290. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/interception_utils.py +0 -0
  291. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/logging_utils.py +0 -0
  292. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/message_utils.py +0 -0
  293. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/metric_utils.py +0 -0
  294. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/path_utils.py +0 -0
  295. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/pricing_utils.py +0 -0
  296. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/process_utils.py +0 -0
  297. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/response_utils.py +0 -0
  298. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/save_utils.py +0 -0
  299. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/serve_utils.py +0 -0
  300. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/thread_utils.py +0 -0
  301. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/threaded_sandbox_client.py +0 -0
  302. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/tool_utils.py +0 -0
  303. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/usage_utils.py +0 -0
  304. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/utils/version_utils.py +0 -0
  305. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/ARCHITECTURE.md +0 -0
  306. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/README.md +0 -0
  307. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/__init__.py +0 -0
  308. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/__init__.py +0 -0
  309. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  310. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/dashboard/base.py +0 -0
  311. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/dashboard/eval.py +0 -0
  312. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/dashboard/validate.py +0 -0
  313. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/eval/__init__.py +0 -0
  314. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/eval/main.py +0 -0
  315. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/eval/resume.py +0 -0
  316. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/eval/runner.py +0 -0
  317. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/init.py +0 -0
  318. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/output.py +0 -0
  319. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/resolve.py +0 -0
  320. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/serve.py +0 -0
  321. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/cli/validate.py +0 -0
  322. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/clients/__init__.py +0 -0
  323. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/clients/client.py +0 -0
  324. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/clients/config.py +0 -0
  325. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/clients/eval.py +0 -0
  326. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/clients/train.py +0 -0
  327. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/configs/__init__.py +0 -0
  328. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/configs/eval.py +0 -0
  329. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/configs/init.py +0 -0
  330. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/configs/serve.py +0 -0
  331. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/configs/validate.py +0 -0
  332. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/decorators.py +0 -0
  333. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/dialects/__init__.py +0 -0
  334. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/dialects/anthropic.py +0 -0
  335. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/dialects/base.py +0 -0
  336. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/dialects/chat.py +0 -0
  337. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/dialects/responses.py +0 -0
  338. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/env.py +0 -0
  339. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/episode.py +0 -0
  340. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/errors.py +0 -0
  341. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/graph.py +0 -0
  342. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harness.py +0 -0
  343. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/__init__.py +0 -0
  344. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  345. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/codex/harness.py +0 -0
  346. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/default/__init__.py +0 -0
  347. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  348. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  349. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  350. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  351. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  352. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/null/__init__.py +0 -0
  353. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/null/harness.py +0 -0
  354. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/null/program.py +0 -0
  355. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  356. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  357. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  358. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  359. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  360. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/interception/__init__.py +0 -0
  361. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/interception/pool.py +0 -0
  362. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/interception/server.py +0 -0
  363. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/judge.py +0 -0
  364. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/legacy.py +0 -0
  365. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/loaders.py +0 -0
  366. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/mcp/__init__.py +0 -0
  367. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/mcp/launch.py +0 -0
  368. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/mcp/multiplex.py +0 -0
  369. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/mcp/server.py +0 -0
  370. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/mcp/toolset.py +0 -0
  371. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/mcp/user.py +0 -0
  372. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/retries.py +0 -0
  373. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/rollout.py +0 -0
  374. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/runtimes/__init__.py +0 -0
  375. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/runtimes/base.py +0 -0
  376. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/runtimes/docker.py +0 -0
  377. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/runtimes/limiters.py +0 -0
  378. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/runtimes/modal.py +0 -0
  379. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/runtimes/prime.py +0 -0
  380. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/runtimes/subprocess.py +0 -0
  381. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/serve/__init__.py +0 -0
  382. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/serve/client.py +0 -0
  383. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/serve/pool.py +0 -0
  384. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/serve/server.py +0 -0
  385. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/serve/types.py +0 -0
  386. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/state.py +0 -0
  387. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/task.py +0 -0
  388. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/taskset.py +0 -0
  389. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/tasksets/__init__.py +0 -0
  390. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  391. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  392. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  393. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  394. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  395. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  396. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  397. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/trace.py +0 -0
  398. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/types.py +0 -0
  399. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/utils/__init__.py +0 -0
  400. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/utils/format.py +0 -0
  401. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/utils/install.py +0 -0
  402. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/utils/logging.py +0 -0
  403. {verifiers-0.1.15.dev410 → verifiers-0.1.15.dev411}/verifiers/v1/utils/memory.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: verifiers
3
- Version: 0.1.15.dev410
3
+ Version: 0.1.15.dev411
4
4
  Summary: Verifiers: Environments for LLM Reinforcement Learning
5
5
  Project-URL: Homepage, https://github.com/primeintellect-ai/verifiers
6
6
  Project-URL: Documentation, https://github.com/primeintellect-ai/verifiers
@@ -552,7 +552,7 @@ Otherwise pick a built-in, selected with `--harness.id`:
552
552
 
553
553
  | id | what it is |
554
554
  | --- | --- |
555
- | `default` | a `bash` + `edit` coding agent (the `edit` tool is on by default — `--harness.edit false` for bash-only) — the fallback when no harness is given |
555
+ | `default` | a `bash` + `edit` coding agent (`edit` on by default — `--harness.edit false` for bash-only; `--harness.search true` adds a serper.dev `search` tool) — the fallback when no harness is given |
556
556
  | `null` | a tiny OpenAI chat loop (MCP tools only, no tools of its own) |
557
557
  | `rlm` | the RLM CLI agent |
558
558
  | `codex` | the Codex CLI (Responses dialect + SSE relay) |
@@ -1,14 +1,16 @@
1
- """The built-in default harness: a chat loop with a local `bash` tool and an optional `edit` tool.
1
+ """The built-in default harness: a chat loop with a local `bash` tool, plus optional `edit`/`search`.
2
2
 
3
3
  A growing-message-list chat loop with a local `bash` tool that runs shell commands in the runtime,
4
- the taskset's MCP tools, and on by default, gated by the `edit` config flag — a local `edit`
5
- tool for single-occurrence string replacement in a file (ported from the rlm `edit` skill; a model
6
- handles it more reliably than hand-built `sed`/heredoc shell). This is the fallback harness when no
7
- `--harness.id` is given. Its uv script (deps: openai, mcp) is prepared during setup, then launched
8
- as the harness program. For a pure chat loop with no local tools, use the `null` harness.
4
+ the taskset's MCP tools, and two optional local tools: `edit` (single-occurrence string replacement
5
+ in a file, ported from the rlm `edit` skill; on by default — a model handles it more reliably than
6
+ hand-built `sed`/heredoc shell) and `search` (Google results via serper.dev; off by default, needs
7
+ `SERPER_API_KEY`). This is the fallback harness when no `--harness.id` is given. Its uv script
8
+ (deps: openai, mcp) is prepared during setup, then launched as the harness program. For a pure chat
9
+ loop with no local tools, use the `null` harness.
9
10
  """
10
11
 
11
12
  import json
13
+ import os
12
14
  from pathlib import Path
13
15
 
14
16
  from verifiers.v1.harness import Harness, HarnessConfig
@@ -27,6 +29,11 @@ BASH_SYSTEM_PROMPT = (
27
29
  EDIT_SYSTEM_PROMPT = (
28
30
  "You also have an edit tool for single-occurrence string replacement in a file."
29
31
  )
32
+ # Appended when search is enabled, so the model knows the extra tool exists.
33
+ SEARCH_PROMPT = (
34
+ "You also have a search tool that returns Google results (title, URL, snippet) for a query; "
35
+ "use it to research, and use bash (e.g. curl) to read result pages in full when needed."
36
+ )
30
37
 
31
38
 
32
39
  class DefaultHarnessConfig(HarnessConfig):
@@ -37,6 +44,11 @@ class DefaultHarnessConfig(HarnessConfig):
37
44
  """Offer the local `edit` tool (single-occurrence string replacement in a file) alongside
38
45
  `bash`. On by default; set `--harness.edit false` for a bash-only agent."""
39
46
 
47
+ search: bool = False
48
+ """Offer a `search` tool (Google web results via serper.dev). Requires `SERPER_API_KEY` in the
49
+ eval environment; the key is handed to the program over argv (like the interception secret) so
50
+ the agent's `bash` subprocesses don't inherit it."""
51
+
40
52
 
41
53
  class DefaultHarness(Harness[DefaultHarnessConfig]):
42
54
  APPENDS_SYSTEM_PROMPT = True
@@ -57,10 +69,14 @@ class DefaultHarness(Harness[DefaultHarnessConfig]):
57
69
  mcp_urls: dict[str, str],
58
70
  ) -> ProgramResult:
59
71
  system_prompt, prompt = self.resolve_prompt(trace.task)
60
- harness_prompt = BASH_SYSTEM_PROMPT
72
+ fragments = [BASH_SYSTEM_PROMPT]
61
73
  if self.config.edit:
62
- harness_prompt = f"{BASH_SYSTEM_PROMPT} {EDIT_SYSTEM_PROMPT}"
63
- system_prompt = "\n\n".join(p for p in (harness_prompt, system_prompt) if p)
74
+ fragments.append(EDIT_SYSTEM_PROMPT)
75
+ if self.config.search:
76
+ fragments.append(SEARCH_PROMPT)
77
+ system_prompt = "\n\n".join(
78
+ p for p in (" ".join(fragments), system_prompt) if p
79
+ )
64
80
  env = {**self.config.resolved_env}
65
81
  args = [
66
82
  f"--base-url={endpoint}",
@@ -70,6 +86,24 @@ class DefaultHarness(Harness[DefaultHarnessConfig]):
70
86
  ]
71
87
  if self.config.edit:
72
88
  args.append("--edit")
89
+ if self.config.search:
90
+ # Resolve the key and keep it OUT of the program env: it's handed to the program over
91
+ # argv (--serper-key), so popping it here stops the agent's `bash` subprocesses from
92
+ # inheriting it via $SERPER_API_KEY / /proc/self/environ. Prefer a key set in the harness
93
+ # env (--harness.env / forward_env); fall back to the host env only when the key is
94
+ # *absent* (None), not present-but-empty — a rollout setting SERPER_API_KEY="" is
95
+ # deliberately masking the host secret, so honor that (the check below then fails loudly
96
+ # rather than leaking the host key). The pop is scoped to search=true, so an unrelated
97
+ # key forwarded for the agent's own bash-side use is left untouched.
98
+ serper_key = env.pop("SERPER_API_KEY", None)
99
+ if serper_key is None:
100
+ serper_key = os.environ.get("SERPER_API_KEY")
101
+ if not serper_key:
102
+ raise ValueError(
103
+ "default search=true requires SERPER_API_KEY in the eval environment "
104
+ "(the host env or --harness.env)"
105
+ )
106
+ args += ["--search", f"--serper-key={serper_key}"]
73
107
  if mcp_urls:
74
108
  # The program connects to the tool servers over HTTP; hand it a standard
75
109
  # `mcpServers` URL config (the `mcp` client itself comes from the uv deps).
@@ -1,18 +1,19 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.10"
3
- # dependencies = ["openai", "mcp"]
3
+ # dependencies = ["openai", "mcp", "httpx"]
4
4
  # ///
5
- """The default harness's program: a chat loop with a local `bash` tool (+ optional `edit`, MCP).
5
+ """The default harness's program: a chat loop with a local `bash` tool (+ optional `edit`, `search`, MCP).
6
6
 
7
7
  A growing-message-list chat loop. It always offers a local `bash` tool that runs shell commands in
8
8
  the runtime; with `--edit` it also offers a local `edit` tool that replaces a unique string in a
9
- file. When the harness sets MCP_CONFIG (a standard `mcpServers` URL map) it also connects to those
10
- servers over streamable HTTP, exposes their tools to the model as `<server>_<tool>`, and routes
11
- those calls to the server. The loop runs until the model answers without a tool call.
9
+ file, and with `--search` a `search` tool (Serper Google search). When the harness sets
10
+ MCP_CONFIG (a standard `mcpServers` URL map) it also connects to those servers over streamable
11
+ HTTP, exposes their tools to the model as `<server>_<tool>`, and routes those calls to the server.
12
+ The loop runs until the model answers without a tool call.
12
13
 
13
- It runs as a uv script (deps: openai, mcp), so the chat + tool plumbing is just the SDKs — the
14
- harness bootstraps `uv` in the runtime. The interception endpoint, per-rollout secret, and model
15
- arrive as argv (not env), so the local tools' subprocesses never inherit them.
14
+ It runs as a uv script (deps: openai, mcp, httpx), so the chat + tool plumbing is just the SDKs —
15
+ the harness bootstraps `uv` in the runtime. The interception endpoint, per-rollout secret, model,
16
+ and serper key arrive as argv (not env), so the local tools' subprocesses never inherit them.
16
17
  """
17
18
 
18
19
  import argparse
@@ -23,8 +24,11 @@ import subprocess
23
24
  from contextlib import AsyncExitStack
24
25
  from pathlib import Path
25
26
 
27
+ import httpx
26
28
  from openai import AsyncOpenAI
27
29
 
30
+ SERPER_URL = "https://google.serper.dev/search"
31
+
28
32
  BASH_TOOL = {
29
33
  "type": "function",
30
34
  "function": {
@@ -66,6 +70,77 @@ EDIT_TOOL = {
66
70
  }
67
71
 
68
72
 
73
+ SEARCH_TOOL = {
74
+ "type": "function",
75
+ "function": {
76
+ "name": "search",
77
+ "description": (
78
+ "Run a web search via Serper (Google) and return the top organic results as title, "
79
+ "URL, and snippet. Issue focused queries and call it several times to cover different "
80
+ "angles; use the bash tool (e.g. curl) to read a result page in full."
81
+ ),
82
+ "parameters": {
83
+ "type": "object",
84
+ "properties": {
85
+ "query": {"type": "string", "description": "The search query."},
86
+ "num_results": {
87
+ "type": "integer",
88
+ "description": "Number of results to return (default 5).",
89
+ },
90
+ },
91
+ "required": ["query"],
92
+ },
93
+ },
94
+ }
95
+
96
+
97
+ def format_results(results, query: str) -> str:
98
+ """Format Serper organic results as title/URL/snippet blocks."""
99
+ sections = []
100
+ for i, result in enumerate(results, 1):
101
+ title = (result.get("title") or "").strip() or "Untitled"
102
+ lines = [f"Result {i}: {title}"]
103
+ link = (result.get("link") or "").strip()
104
+ if link:
105
+ lines.append(f"URL: {link}")
106
+ snippet = (result.get("snippet") or "").strip()
107
+ if snippet:
108
+ lines.append(f" - {snippet}")
109
+ sections.append("\n".join(lines))
110
+ if not sections:
111
+ return f"No results returned for query: {query}"
112
+ return "\n\n---\n\n".join(sections)
113
+
114
+
115
+ def run_search(query: str, api_key: str, num_results: int = 5) -> str:
116
+ """Serper Google web search -> formatted organic results.
117
+
118
+ The key arrives as an argument (handed in by the harness over argv, like the interception
119
+ secret) instead of from `$SERPER_API_KEY`, so the agent's `bash` subprocesses never inherit it.
120
+ The whole call is wrapped so a bad query or malformed payload becomes a tool error rather than
121
+ raising out of the chat loop and killing the rollout."""
122
+ if not api_key:
123
+ return "Error: no Serper API key (SERPER_API_KEY was not set in the eval environment)"
124
+ # num_results comes straight from model tool JSON, so it may be a non-int (e.g. "ten"); coerce
125
+ # defensively — `organic[:num_results]` would otherwise raise on a bad slice.
126
+ try:
127
+ num_results = max(1, int(num_results))
128
+ except (TypeError, ValueError):
129
+ num_results = 5
130
+ try:
131
+ response = httpx.post(
132
+ SERPER_URL,
133
+ json={"q": query},
134
+ headers={"X-API-KEY": api_key, "Content-Type": "application/json"},
135
+ timeout=45,
136
+ )
137
+ response.raise_for_status()
138
+ organic = response.json().get("organic") or []
139
+ return format_results(organic[:num_results], query)
140
+ except Exception as e:
141
+ return f"search failed ({e}). Try again or rephrase the query."
142
+
143
+
69
144
  def run_bash(command: str) -> str:
70
145
  try:
71
146
  result = subprocess.run(
@@ -183,12 +258,19 @@ def parse_args() -> argparse.Namespace:
183
258
  parser.add_argument("--prompt", default="")
184
259
  parser.add_argument("--mcp-config", default="")
185
260
  parser.add_argument("--edit", action="store_true")
261
+ parser.add_argument("--search", action="store_true")
262
+ parser.add_argument("--serper-key", default="")
186
263
  return parser.parse_args()
187
264
 
188
265
 
189
266
  async def main() -> None:
190
267
  args = parse_args()
191
- client = AsyncOpenAI(base_url=args.base_url, api_key=args.api_key)
268
+ # No client-side retries: re-sending a request whose turn the interception already committed
269
+ # re-samples it and forks the trace into an extra dead-end branch. A generous timeout lets a
270
+ # slow turn finish instead of timing out and re-sending; genuine failures surface as error rows.
271
+ client = AsyncOpenAI(
272
+ base_url=args.base_url, api_key=args.api_key, timeout=1800.0, max_retries=0
273
+ )
192
274
  config = json.loads(args.mcp_config or "{}")
193
275
  async with AsyncExitStack() as stack:
194
276
  mcp_tools, dispatch = (
@@ -197,6 +279,8 @@ async def main() -> None:
197
279
  tools = [BASH_TOOL]
198
280
  if args.edit:
199
281
  tools.append(EDIT_TOOL)
282
+ if args.search:
283
+ tools.append(SEARCH_TOOL)
200
284
  tools += mcp_tools
201
285
  messages = (
202
286
  [{"role": "system", "content": args.system_prompt}]
@@ -254,6 +338,13 @@ async def main() -> None:
254
338
  tool_args.get("old_str"),
255
339
  tool_args.get("new_str"),
256
340
  )
341
+ elif name == "search" and args.search:
342
+ content = await asyncio.to_thread(
343
+ run_search,
344
+ tool_args.get("query", ""),
345
+ args.serper_key,
346
+ tool_args.get("num_results", 5),
347
+ )
257
348
  else:
258
349
  content = f"error: unknown tool {name!r}"
259
350
  messages.append(