verifiers 0.1.15.dev186__tar.gz → 0.1.15.dev188__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 (357) hide show
  1. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/PKG-INFO +1 -1
  2. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_client_multimodal_types.py +0 -38
  3. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_openai_responses_client.py +0 -19
  4. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_renderer_client.py +0 -8
  5. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/clients/anthropic_messages_client.py +6 -6
  6. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/clients/openai_chat_completions_client.py +40 -11
  7. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/clients/openai_responses_client.py +33 -19
  8. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/clients/renderer_client.py +1 -5
  9. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/__init__.py +6 -0
  10. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +3 -0
  11. verifiers-0.1.15.dev188/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +712 -0
  12. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/.gitignore +0 -0
  13. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/LICENSE +0 -0
  14. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/README.md +0 -0
  15. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/pyproject.toml +0 -0
  16. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/AGENTS.md +0 -0
  17. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/README.md +0 -0
  18. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/__init__.py +0 -0
  19. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/conftest.py +0 -0
  20. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_browser_env.py +0 -0
  21. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_build_script.py +0 -0
  22. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_cli_agent_env.py +0 -0
  23. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_client_auth_errors.py +0 -0
  24. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_client_config.py +0 -0
  25. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_composable_env.py +0 -0
  26. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_context_token_metrics.py +0 -0
  27. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_decorator_ranks.py +0 -0
  28. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_endpoint_registry.py +0 -0
  29. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_env_group.py +0 -0
  30. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_env_server.py +0 -0
  31. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_environment.py +0 -0
  32. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_environment_extra.py +0 -0
  33. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_envs.py +0 -0
  34. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_error_chain.py +0 -0
  35. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_eval_cli.py +0 -0
  36. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_eval_display.py +0 -0
  37. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_eval_utils.py +0 -0
  38. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_gepa_cli.py +0 -0
  39. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_gepa_utils.py +0 -0
  40. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_gym_env.py +0 -0
  41. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_harbor_env_mcp.py +0 -0
  42. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_imports.py +0 -0
  43. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_init_script.py +0 -0
  44. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_install_utils.py +0 -0
  45. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_interception_utils.py +0 -0
  46. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_langchain_deep_agents_wikispeedia.py +0 -0
  47. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_lean_task.py +0 -0
  48. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_logging.py +0 -0
  49. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_math_rubric.py +0 -0
  50. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_maybe_think_parser.py +0 -0
  51. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_mcp_search_env.py +0 -0
  52. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_message_utils.py +0 -0
  53. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_message_utils_multimodal.py +0 -0
  54. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_multiturn_env.py +0 -0
  55. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_nemorl_client.py +0 -0
  56. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_openai_chat_completions_token_client.py +0 -0
  57. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_opencode_harbor.py +0 -0
  58. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_opencode_rlm_env.py +0 -0
  59. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_openenv_client.py +0 -0
  60. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_parser.py +0 -0
  61. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_path_utils.py +0 -0
  62. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_per_turn_timing.py +0 -0
  63. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_pricing_utils.py +0 -0
  64. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_prime_plugin.py +0 -0
  65. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_renderer_e2e.py +0 -0
  66. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_rlm_composable_env.py +0 -0
  67. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_rubric.py +0 -0
  68. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_rubric_group.py +0 -0
  69. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_sandbox_debug_env.py +0 -0
  70. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_sandbox_env.py +0 -0
  71. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_sandbox_mixin.py +0 -0
  72. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_save_utils.py +0 -0
  73. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_setup_script.py +0 -0
  74. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_singleturn_env.py +0 -0
  75. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_stateful_tool_env.py +0 -0
  76. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_think_parser.py +0 -0
  77. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_tool_env.py +0 -0
  78. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_tool_utils.py +0 -0
  79. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_trajectory_processing.py +0 -0
  80. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_tui_info_formatting.py +0 -0
  81. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_types.py +0 -0
  82. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_bfcl.py +0 -0
  83. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_config_extension.py +0 -0
  84. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_empty_completions.py +0 -0
  85. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_endpoint_protocols.py +0 -0
  86. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_example_counts.py +0 -0
  87. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_group_reward_env.py +0 -0
  88. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_harbor_cli.py +0 -0
  89. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_mini_swe_agent.py +0 -0
  90. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_nemo_gym_harness.py +0 -0
  91. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_openenv_taskset.py +0 -0
  92. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_openreward_taskset.py +0 -0
  93. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_replay_harness.py +0 -0
  94. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_rlm_swe.py +0 -0
  95. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_runtime_lifecycle.py +0 -0
  96. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_scoring_functions.py +0 -0
  97. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_taskset_bindings.py +0 -0
  98. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_taskset_utils.py +0 -0
  99. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_v1_textarena_taskset.py +0 -0
  100. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_wiki_search_v1.py +0 -0
  101. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_wordle_env.py +0 -0
  102. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_wordle_v1_env.py +0 -0
  103. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/tests/test_xml_parser.py +0 -0
  104. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/AGENTS.md +0 -0
  105. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/__init__.py +0 -0
  106. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/cli/__init__.py +0 -0
  107. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/cli/commands/__init__.py +0 -0
  108. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/cli/commands/build.py +0 -0
  109. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/cli/commands/eval.py +0 -0
  110. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/cli/commands/gepa.py +0 -0
  111. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/cli/commands/init.py +0 -0
  112. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/cli/commands/install.py +0 -0
  113. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/cli/commands/setup.py +0 -0
  114. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/cli/plugins/__init__.py +0 -0
  115. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/cli/plugins/prime.py +0 -0
  116. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/cli/tui.py +0 -0
  117. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/clients/__init__.py +0 -0
  118. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/clients/client.py +0 -0
  119. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
  120. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
  121. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/clients/openai_completions_client.py +0 -0
  122. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/decorators.py +0 -0
  123. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/AGENTS.md +0 -0
  124. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/__init__.py +0 -0
  125. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/env_group.py +0 -0
  126. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/environment.py +0 -0
  127. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/README.md +0 -0
  128. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/__init__.py +0 -0
  129. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/cli_agent_env.py +0 -0
  130. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/README.md +0 -0
  131. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/__init__.py +0 -0
  132. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/_filter.py +0 -0
  133. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/composable_env.py +0 -0
  134. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/harness.py +0 -0
  135. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
  136. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  137. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
  138. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
  139. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
  140. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
  141. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
  142. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/task.py +0 -0
  143. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  144. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  145. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  146. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  147. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
  148. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/lean/__init__.py +0 -0
  149. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/lean/lean_task.py +0 -0
  150. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  151. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  152. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/README.md +0 -0
  153. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/__init__.py +0 -0
  154. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/openseeker/README.md +0 -0
  155. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/openseeker/__init__.py +0 -0
  156. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/openseeker/taskset.py +0 -0
  157. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/README.md +0 -0
  158. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/__init__.py +0 -0
  159. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/__init__.py +0 -0
  160. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/__init__.py +0 -0
  161. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/tool_pdf.py +0 -0
  162. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/eval_toolkit.py +0 -0
  163. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/evaluator.py +0 -0
  164. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/__init__.py +0 -0
  165. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/base_client.py +0 -0
  166. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/__init__.py +0 -0
  167. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/cache_prompts.py +0 -0
  168. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/__init__.py +0 -0
  169. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/cache_filesys.py +0 -0
  170. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/load_eval_script.py +0 -0
  171. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/misc.py +0 -0
  172. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/tool_visit.py +0 -0
  173. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/url_tools.py +0 -0
  174. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/verification_tree.py +0 -0
  175. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/open_ended.py +0 -0
  176. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/quest/taskset.py +0 -0
  177. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/README.md +0 -0
  178. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/__init__.py +0 -0
  179. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/taskset.py +0 -0
  180. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/search/search_tasksets.py +0 -0
  181. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
  182. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  183. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  184. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  185. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  186. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  187. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  188. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  189. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  190. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  191. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  192. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  193. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  194. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  195. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  196. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  197. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  198. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  199. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  200. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  201. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  202. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  203. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  204. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  205. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/gym_env.py +0 -0
  206. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
  207. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/harbor_env/env.py +0 -0
  208. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
  209. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/mcp_env.py +0 -0
  210. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/opencode_env.py +0 -0
  211. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
  212. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
  213. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
  214. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/utils/__init__.py +0 -0
  215. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/utils/file_locks.py +0 -0
  216. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
  217. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/integrations/README.md +0 -0
  218. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/integrations/__init__.py +0 -0
  219. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/integrations/browser_env/README.md +0 -0
  220. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
  221. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
  222. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
  223. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
  224. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  225. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  226. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/integrations/openenv_env.py +0 -0
  227. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
  228. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/integrations/textarena_env.py +0 -0
  229. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/multiturn_env.py +0 -0
  230. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/python_env.py +0 -0
  231. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/sandbox_env.py +0 -0
  232. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/singleturn_env.py +0 -0
  233. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/stateful_tool_env.py +0 -0
  234. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/envs/tool_env.py +0 -0
  235. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/errors.py +0 -0
  236. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/gepa/__init__.py +0 -0
  237. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/gepa/adapter.py +0 -0
  238. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/gepa/config.py +0 -0
  239. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/gepa/display.py +0 -0
  240. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/gepa/gepa_utils.py +0 -0
  241. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/parsers/__init__.py +0 -0
  242. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/parsers/maybe_think_parser.py +0 -0
  243. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/parsers/parser.py +0 -0
  244. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/parsers/think_parser.py +0 -0
  245. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/parsers/xml_parser.py +0 -0
  246. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rl/README.md +0 -0
  247. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rl/__init__.py +0 -0
  248. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rl/inference/__init__.py +0 -0
  249. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rl/inference/client.py +0 -0
  250. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rl/inference/server.py +0 -0
  251. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rl/trainer/__init__.py +0 -0
  252. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rl/trainer/config.py +0 -0
  253. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rl/trainer/orchestrator.py +0 -0
  254. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rl/trainer/trainer.py +0 -0
  255. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rl/trainer/utils.py +0 -0
  256. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rubrics/__init__.py +0 -0
  257. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
  258. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rubrics/judge_rubric.py +0 -0
  259. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rubrics/math_rubric.py +0 -0
  260. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rubrics/rubric.py +0 -0
  261. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/rubrics/rubric_group.py +0 -0
  262. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/scripts/__init__.py +0 -0
  263. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/scripts/build.py +0 -0
  264. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/scripts/eval.py +0 -0
  265. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/scripts/gepa.py +0 -0
  266. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/scripts/init.py +0 -0
  267. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/scripts/install.py +0 -0
  268. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/scripts/rl.py +0 -0
  269. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/scripts/setup.py +0 -0
  270. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/scripts/train.py +0 -0
  271. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/scripts/tui.py +0 -0
  272. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/scripts/vllm.py +0 -0
  273. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/serve/__init__.py +0 -0
  274. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/serve/client/env_client.py +0 -0
  275. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/serve/client/zmq_env_client.py +0 -0
  276. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/serve/server/__init__.py +0 -0
  277. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/serve/server/env_router.py +0 -0
  278. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/serve/server/env_server.py +0 -0
  279. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/serve/server/env_worker.py +0 -0
  280. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/serve/server/zmq_env_server.py +0 -0
  281. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/serve/types.py +0 -0
  282. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/types.py +0 -0
  283. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/__init__.py +0 -0
  284. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/async_utils.py +0 -0
  285. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/client_utils.py +0 -0
  286. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/config_utils.py +0 -0
  287. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/data_utils.py +0 -0
  288. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/display_utils.py +0 -0
  289. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/env_config_utils.py +0 -0
  290. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/env_utils.py +0 -0
  291. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/error_utils.py +0 -0
  292. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/eval_display.py +0 -0
  293. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/eval_utils.py +0 -0
  294. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/heartbeat.py +0 -0
  295. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/import_utils.py +0 -0
  296. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/install_utils.py +0 -0
  297. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/interception_utils.py +0 -0
  298. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/logging_utils.py +0 -0
  299. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/message_utils.py +0 -0
  300. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/metric_utils.py +0 -0
  301. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/path_utils.py +0 -0
  302. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/pricing_utils.py +0 -0
  303. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/process_utils.py +0 -0
  304. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/response_utils.py +0 -0
  305. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/save_utils.py +0 -0
  306. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/serve_utils.py +0 -0
  307. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/thread_utils.py +0 -0
  308. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/threaded_sandbox_client.py +0 -0
  309. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/tool_utils.py +0 -0
  310. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/usage_utils.py +0 -0
  311. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/utils/version_utils.py +0 -0
  312. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/ENVIRONMENT_BEST_PRACTICES.md +0 -0
  313. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/README.md +0 -0
  314. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/RE_MIGRATION.md +0 -0
  315. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/__init__.py +0 -0
  316. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/artifact.py +0 -0
  317. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/config.py +0 -0
  318. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/env.py +0 -0
  319. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/harness.py +0 -0
  320. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/model.py +0 -0
  321. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/program.py +0 -0
  322. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/runtime.py +0 -0
  323. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/runtime_handles.py +0 -0
  324. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/sandbox.py +0 -0
  325. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/state.py +0 -0
  326. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/task.py +0 -0
  327. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/taskset.py +0 -0
  328. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/toolset.py +0 -0
  329. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/types.py +0 -0
  330. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/user.py +0 -0
  331. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/__init__.py +0 -0
  332. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/binding_utils.py +0 -0
  333. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/config_callable_utils.py +0 -0
  334. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/config_utils.py +0 -0
  335. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/endpoint_utils.py +0 -0
  336. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/json_utils.py +0 -0
  337. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/judge_utils.py +0 -0
  338. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/lifecycle_utils.py +0 -0
  339. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/logging_utils.py +0 -0
  340. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/mcp_proxy_utils.py +0 -0
  341. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/mcp_utils.py +0 -0
  342. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/object_utils.py +0 -0
  343. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/program_utils.py +0 -0
  344. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/prompt_utils.py +0 -0
  345. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/runtime_owner_utils.py +0 -0
  346. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/runtime_registry.py +0 -0
  347. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/sandbox_program_utils.py +0 -0
  348. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/sandbox_python_utils.py +0 -0
  349. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/sandbox_utils.py +0 -0
  350. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/scoring_utils.py +0 -0
  351. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/serialization_utils.py +0 -0
  352. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/task_freeze_utils.py +0 -0
  353. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/taskset_utils.py +0 -0
  354. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/tool_utils.py +0 -0
  355. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/toolset_utils.py +0 -0
  356. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/trajectory_utils.py +0 -0
  357. {verifiers-0.1.15.dev186 → verifiers-0.1.15.dev188}/verifiers/v1/utils/usage_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: verifiers
3
- Version: 0.1.15.dev186
3
+ Version: 0.1.15.dev188
4
4
  Summary: Verifiers: Environments for LLM Reinforcement Learning
5
5
  Project-URL: Homepage, https://github.com/primeintellect-ai/verifiers
6
6
  Project-URL: Documentation, https://github.com/primeintellect-ai/verifiers
@@ -3,7 +3,6 @@ from types import SimpleNamespace
3
3
  import pytest
4
4
 
5
5
  from verifiers.clients.openai_chat_completions_client import OpenAIChatCompletionsClient
6
- from verifiers.errors import EmptyModelResponseError
7
6
  from verifiers.types import (
8
7
  AssistantMessage,
9
8
  ImageUrlContentPart,
@@ -59,25 +58,6 @@ async def test_openai_to_native_prompt_with_typed_multimodal_content_parts():
59
58
  ]
60
59
 
61
60
 
62
- @pytest.mark.asyncio
63
- async def test_openai_chat_rejects_reasoning_only_native_response():
64
- client = OpenAIChatCompletionsClient(object())
65
- native_response = SimpleNamespace(
66
- choices=[
67
- SimpleNamespace(
68
- message=_OpenAIMessage(
69
- content=None,
70
- reasoning_content="hidden chain",
71
- tool_calls=None,
72
- )
73
- )
74
- ]
75
- )
76
-
77
- with pytest.raises(EmptyModelResponseError, match="reasoning but no content"):
78
- await client.raise_from_native_response(native_response)
79
-
80
-
81
61
  @pytest.mark.asyncio
82
62
  async def test_openai_chat_accepts_refusal_with_reasoning_native_response():
83
63
  client = OpenAIChatCompletionsClient(object())
@@ -282,24 +262,6 @@ async def test_anthropic_from_native_response_always_parses_reasoning():
282
262
  assert response.message.content == "final answer"
283
263
 
284
264
 
285
- @pytest.mark.asyncio
286
- async def test_anthropic_rejects_reasoning_only_native_response():
287
- pytest.importorskip("anthropic")
288
- from verifiers.clients.anthropic_messages_client import AnthropicMessagesClient
289
-
290
- client = AnthropicMessagesClient(object())
291
- native_response = SimpleNamespace(
292
- id="msg_think",
293
- model="claude-haiku-4-5",
294
- stop_reason="end_turn",
295
- usage=SimpleNamespace(input_tokens=1, output_tokens=1),
296
- content=[SimpleNamespace(type="thinking", thinking="hidden chain")],
297
- )
298
-
299
- with pytest.raises(EmptyModelResponseError, match="reasoning but no content"):
300
- await client.raise_from_native_response(native_response)
301
-
302
-
303
265
  @pytest.mark.asyncio
304
266
  async def test_anthropic_tool_call_round_trips_thinking_blocks():
305
267
  pytest.importorskip("anthropic")
@@ -8,7 +8,6 @@ from verifiers.clients.openai_responses_client import (
8
8
  OPENAI_RESPONSES_OUTPUT_FIELD,
9
9
  OpenAIResponsesClient,
10
10
  )
11
- from verifiers.errors import EmptyModelResponseError
12
11
  from verifiers.types import (
13
12
  AssistantMessage,
14
13
  ClientConfig,
@@ -134,24 +133,6 @@ async def test_get_native_response_normalizes_sampling_args_and_tools():
134
133
  ]
135
134
 
136
135
 
137
- @pytest.mark.asyncio
138
- async def test_raise_from_native_response_rejects_reasoning_only_response():
139
- native_response = SimpleNamespace(
140
- output=[
141
- {
142
- "type": "reasoning",
143
- "id": "rs_1",
144
- "summary": [{"type": "summary_text", "text": "thinking"}],
145
- "status": "completed",
146
- }
147
- ]
148
- )
149
- client = OpenAIResponsesClient(object())
150
-
151
- with pytest.raises(EmptyModelResponseError, match="reasoning but no content"):
152
- await client.raise_from_native_response(native_response)
153
-
154
-
155
136
  @pytest.mark.asyncio
156
137
  async def test_to_native_tool_omits_strict_when_unset():
157
138
  client = OpenAIResponsesClient(object())
@@ -355,14 +355,6 @@ async def test_renderer_client_rejects_empty_dict_native_response():
355
355
  await client.raise_from_native_response({})
356
356
 
357
357
 
358
- @pytest.mark.asyncio
359
- async def test_renderer_client_rejects_reasoning_only_native_response():
360
- client = object.__new__(RendererClient)
361
-
362
- with pytest.raises(EmptyModelResponseError, match="reasoning but no content"):
363
- await client.raise_from_native_response({"reasoning_content": "hidden chain"})
364
-
365
-
366
358
  @pytest.mark.asyncio
367
359
  async def test_from_native_response_uses_request_id_and_token_lengths():
368
360
  """vLLM's /inference/v1/generate returns ``request_id`` (not ``id``) and
@@ -390,14 +390,14 @@ class AnthropicMessagesClient(
390
390
  has_text = True
391
391
  elif block_type == "tool_use":
392
392
  has_tool_call = True
393
- elif block_type in {"thinking", "redacted_thinking"}:
393
+ elif block_type == "thinking" and getattr(content_block, "thinking", None):
394
+ has_reasoning = True
395
+ elif block_type == "redacted_thinking" and getattr(
396
+ content_block, "data", None
397
+ ):
394
398
  has_reasoning = True
395
399
 
396
- if not (has_text or has_tool_call):
397
- if has_reasoning:
398
- raise EmptyModelResponseError(
399
- "Model returned reasoning but no content and did not call any tools"
400
- )
400
+ if not (has_text or has_tool_call or has_reasoning):
401
401
  raise EmptyModelResponseError(
402
402
  "Model returned no content and did not call any tools"
403
403
  )
@@ -100,6 +100,12 @@ def get_usage_field(usage: Any, key: str) -> Any:
100
100
  return getattr(usage, key, None)
101
101
 
102
102
 
103
+ def _get_reasoning_tokens(usage: Any) -> int:
104
+ completion_details = get_usage_field(usage, "completion_tokens_details")
105
+ reasoning_tokens = get_usage_field(completion_details, "reasoning_tokens")
106
+ return reasoning_tokens if isinstance(reasoning_tokens, int) else 0
107
+
108
+
103
109
  def content_to_text(content: Any) -> str:
104
110
  """Get all text content from OAI message content."""
105
111
  if isinstance(content, str):
@@ -142,8 +148,19 @@ def parse_reasoning_content(message: Any) -> str | None:
142
148
 
143
149
  for field in DEFAULT_REASONING_FIELDS:
144
150
  value = message_dict.get(field)
145
- if isinstance(value, str):
151
+ if isinstance(value, str) and value:
146
152
  return value
153
+ details = message_dict.get("reasoning_details")
154
+ if isinstance(details, list) and any(
155
+ isinstance(detail, Mapping)
156
+ and any(
157
+ detail.get(field)
158
+ for field in ("text", "summary", "data", "signature", "encrypted_content")
159
+ )
160
+ for detail in details
161
+ ):
162
+ # Keep structured provider reasoning as a replayable marker without flattening it.
163
+ return ""
147
164
  return None
148
165
 
149
166
 
@@ -345,12 +362,11 @@ class OpenAIChatCompletionsClient(
345
362
  or parse_refusal_content(message)
346
363
  )
347
364
  has_tool_calls = bool(getattr(message, "tool_calls", None))
348
- has_reasoning = bool(parse_reasoning_content(message))
349
- if not (has_content or has_tool_calls):
350
- if has_reasoning:
351
- raise EmptyModelResponseError(
352
- "Model returned reasoning but no content and did not call any tools"
353
- )
365
+ has_reasoning = (
366
+ parse_reasoning_content(message) is not None
367
+ or _get_reasoning_tokens(getattr(response, "usage", None)) > 0
368
+ )
369
+ if not (has_content or has_tool_calls or has_reasoning):
354
370
  raise EmptyModelResponseError(
355
371
  "Model returned no content and did not call any tools"
356
372
  )
@@ -442,6 +458,7 @@ class OpenAIChatCompletionsClient(
442
458
  prompt_tokens = get_usage_field(usage, "input_tokens")
443
459
  completion_tokens = get_usage_field(usage, "output_tokens")
444
460
  total_tokens = get_usage_field(usage, "total_tokens")
461
+ reasoning_tokens = _get_reasoning_tokens(usage)
445
462
  if not isinstance(prompt_tokens, int) or not isinstance(
446
463
  completion_tokens, int
447
464
  ):
@@ -450,7 +467,7 @@ class OpenAIChatCompletionsClient(
450
467
  total_tokens = prompt_tokens + completion_tokens
451
468
  return Usage(
452
469
  prompt_tokens=prompt_tokens,
453
- reasoning_tokens=0,
470
+ reasoning_tokens=reasoning_tokens,
454
471
  completion_tokens=completion_tokens,
455
472
  total_tokens=total_tokens,
456
473
  )
@@ -528,17 +545,29 @@ class OpenAIChatCompletionsClient(
528
545
  if not isinstance(model, str):
529
546
  model = ""
530
547
 
548
+ message = response.choices[0].message
549
+ content = parse_content(response)
550
+ reasoning_content = parse_reasoning_content(message)
551
+ tool_calls = parse_tool_calls(response)
552
+ if (
553
+ content is None
554
+ and reasoning_content is None
555
+ and not tool_calls
556
+ and _get_reasoning_tokens(getattr(response, "usage", None)) > 0
557
+ ):
558
+ content = ""
559
+
531
560
  return Response(
532
561
  id=response_id,
533
562
  created=created,
534
563
  model=model,
535
564
  usage=parse_usage(response),
536
565
  message=ResponseMessage(
537
- content=parse_content(response),
538
- reasoning_content=parse_reasoning_content(response.choices[0].message),
566
+ content=content,
567
+ reasoning_content=reasoning_content,
539
568
  finish_reason=parse_finish_reason(response),
540
569
  is_truncated=parse_is_truncated(response),
541
570
  tokens=parse_tokens(response),
542
- tool_calls=parse_tool_calls(response) or None,
571
+ tool_calls=tool_calls or None,
543
572
  ),
544
573
  )
@@ -53,6 +53,12 @@ def _model_dump(value: Any) -> dict[str, Any]:
53
53
  return {}
54
54
 
55
55
 
56
+ def _get_reasoning_tokens(usage: Any) -> int:
57
+ output_details = get_usage_field(usage, "output_tokens_details")
58
+ reasoning_tokens = get_usage_field(output_details, "reasoning_tokens")
59
+ return reasoning_tokens if isinstance(reasoning_tokens, int) else 0
60
+
61
+
56
62
  class OpenAIResponsesClient(
57
63
  Client[
58
64
  AsyncOpenAI,
@@ -171,7 +177,7 @@ class OpenAIResponsesClient(
171
177
  return raw_items
172
178
 
173
179
  items: list[dict[str, Any]] = []
174
- if content_to_text(message.content):
180
+ if content_to_text(message.content) or message.content == "":
175
181
  items.append(
176
182
  {
177
183
  "type": "message",
@@ -267,9 +273,14 @@ class OpenAIResponsesClient(
267
273
  message = _get_field(error, "message", "Model response failed")
268
274
  raise InvalidModelResponseError(str(message))
269
275
 
276
+ has_usage_reasoning = (
277
+ _get_reasoning_tokens(getattr(response, "usage", None)) > 0
278
+ )
270
279
  output = getattr(response, "output", None)
271
- if output is None:
280
+ if output is None and not has_usage_reasoning:
272
281
  raise EmptyModelResponseError("Model returned no output")
282
+ if output is None:
283
+ output = []
273
284
  if not isinstance(output, Iterable):
274
285
  raise InvalidModelResponseError("Model returned invalid output")
275
286
 
@@ -293,11 +304,8 @@ class OpenAIResponsesClient(
293
304
  ):
294
305
  has_text = True
295
306
 
296
- if not (has_text or has_tool_call):
297
- if has_reasoning:
298
- raise EmptyModelResponseError(
299
- "Model returned reasoning but no content and did not call any tools"
300
- )
307
+ has_reasoning = has_reasoning or has_usage_reasoning
308
+ if not (has_text or has_tool_call or has_reasoning):
301
309
  raise EmptyModelResponseError(
302
310
  "Model returned no content and did not call any tools"
303
311
  )
@@ -374,20 +382,13 @@ class OpenAIResponsesClient(
374
382
  prompt_tokens = get_usage_field(usage, "input_tokens")
375
383
  completion_tokens = get_usage_field(usage, "output_tokens")
376
384
  total_tokens = get_usage_field(usage, "total_tokens")
377
- output_details = get_usage_field(usage, "output_tokens_details")
378
- reasoning_tokens = (
379
- get_usage_field(output_details, "reasoning_tokens")
380
- if output_details is not None
381
- else 0
382
- )
385
+ reasoning_tokens = _get_reasoning_tokens(usage)
383
386
  if not isinstance(prompt_tokens, int) or not isinstance(
384
387
  completion_tokens, int
385
388
  ):
386
389
  return None
387
390
  if not isinstance(total_tokens, int):
388
391
  total_tokens = prompt_tokens + completion_tokens
389
- if not isinstance(reasoning_tokens, int):
390
- reasoning_tokens = 0
391
392
  return Usage(
392
393
  prompt_tokens=prompt_tokens,
393
394
  reasoning_tokens=reasoning_tokens,
@@ -421,14 +422,27 @@ class OpenAIResponsesClient(
421
422
  if not isinstance(model, str):
422
423
  model = ""
423
424
 
425
+ output_items = raw_output_items(response)
426
+ content = parse_content(response)
427
+ reasoning_content = parse_reasoning_content(response)
428
+ tool_calls = parse_tool_calls(response)
429
+ if (
430
+ not output_items
431
+ and content is None
432
+ and reasoning_content is None
433
+ and not tool_calls
434
+ and _get_reasoning_tokens(getattr(response, "usage", None)) > 0
435
+ ):
436
+ content = ""
437
+
424
438
  message_data: dict[str, Any] = {
425
- "content": parse_content(response),
426
- "reasoning_content": parse_reasoning_content(response),
439
+ "content": content,
440
+ "reasoning_content": reasoning_content,
427
441
  "finish_reason": parse_finish_reason(response),
428
442
  "is_truncated": parse_is_truncated(response),
429
443
  "tokens": None,
430
- "tool_calls": parse_tool_calls(response) or None,
431
- OPENAI_RESPONSES_OUTPUT_FIELD: raw_output_items(response),
444
+ "tool_calls": tool_calls or None,
445
+ OPENAI_RESPONSES_OUTPUT_FIELD: output_items,
432
446
  }
433
447
 
434
448
  return Response(
@@ -641,11 +641,7 @@ class RendererClient(
641
641
  # model having tried to call a tool, so we don't filter by status here.
642
642
  has_tool_calls = bool(response.get("tool_calls"))
643
643
  has_reasoning = bool(response.get("reasoning_content"))
644
- if not (has_content or has_tool_calls):
645
- if has_reasoning:
646
- raise EmptyModelResponseError(
647
- "Model returned reasoning but no content and did not call any tools"
648
- )
644
+ if not (has_content or has_tool_calls or has_reasoning):
649
645
  raise EmptyModelResponseError(
650
646
  "Model returned no content and did not call any tools"
651
647
  )
@@ -32,6 +32,10 @@ from verifiers.envs.experimental.composable.tasksets.harbor.harbor import (
32
32
  HarborRubric,
33
33
  HarborTaskSet,
34
34
  )
35
+ from verifiers.envs.experimental.composable.tasksets.harbor.cli_gym import (
36
+ CLIGymTaskSet,
37
+ make_cli_gym_taskset,
38
+ )
35
39
  from verifiers.envs.experimental.composable.tasksets.harbor.terminal_lego import (
36
40
  TerminalLegoTaskSet,
37
41
  make_terminal_lego_taskset,
@@ -64,6 +68,8 @@ __all__ = [
64
68
  "HarborDatasetTaskSet",
65
69
  "HarborRubric",
66
70
  "HarborDatasetRubric",
71
+ "CLIGymTaskSet",
72
+ "make_cli_gym_taskset",
67
73
  "TerminalLegoTaskSet",
68
74
  "make_terminal_lego_taskset",
69
75
  ]
@@ -4,6 +4,7 @@ from .harbor import (
4
4
  HarborRubric,
5
5
  HarborTaskSet,
6
6
  )
7
+ from .cli_gym import CLIGymTaskSet, make_cli_gym_taskset
7
8
  from .terminal_lego import TerminalLegoTaskSet, make_terminal_lego_taskset
8
9
 
9
10
  __all__ = [
@@ -11,6 +12,8 @@ __all__ = [
11
12
  "HarborDatasetTaskSet",
12
13
  "HarborRubric",
13
14
  "HarborDatasetRubric",
15
+ "CLIGymTaskSet",
16
+ "make_cli_gym_taskset",
14
17
  "TerminalLegoTaskSet",
15
18
  "make_terminal_lego_taskset",
16
19
  ]