verifiers 0.1.15.dev168__tar.gz → 0.1.15.dev169__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 (346) hide show
  1. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/PKG-INFO +5 -1
  2. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/pyproject.toml +4 -0
  3. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/README.md +35 -0
  4. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/__init__.py +5 -0
  5. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/README.md +52 -0
  6. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/__init__.py +5 -0
  7. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/__init__.py +17 -0
  8. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/__init__.py +5 -0
  9. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/tool_pdf.py +275 -0
  10. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/eval_toolkit.py +1119 -0
  11. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/evaluator.py +1271 -0
  12. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/__init__.py +5 -0
  13. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/base_client.py +15 -0
  14. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/__init__.py +4 -0
  15. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/cache_prompts.py +15 -0
  16. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/__init__.py +7 -0
  17. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/cache_filesys.py +45 -0
  18. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/load_eval_script.py +107 -0
  19. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/misc.py +106 -0
  20. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/tool_visit.py +69 -0
  21. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/url_tools.py +27 -0
  22. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/verification_tree.py +153 -0
  23. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/quest/taskset.py +667 -0
  24. verifiers-0.1.15.dev169/verifiers/envs/experimental/composable/tasksets/search/search_tasksets.py +26 -0
  25. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/.gitignore +0 -0
  26. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/LICENSE +0 -0
  27. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/README.md +0 -0
  28. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/AGENTS.md +0 -0
  29. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/README.md +0 -0
  30. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/__init__.py +0 -0
  31. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/conftest.py +0 -0
  32. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_browser_env.py +0 -0
  33. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_build_script.py +0 -0
  34. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_cli_agent_env.py +0 -0
  35. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_client_auth_errors.py +0 -0
  36. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_client_config.py +0 -0
  37. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_client_multimodal_types.py +0 -0
  38. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_composable_env.py +0 -0
  39. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_context_token_metrics.py +0 -0
  40. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_decorator_ranks.py +0 -0
  41. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_endpoint_registry.py +0 -0
  42. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_env_group.py +0 -0
  43. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_env_server.py +0 -0
  44. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_environment.py +0 -0
  45. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_environment_extra.py +0 -0
  46. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_envs.py +0 -0
  47. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_error_chain.py +0 -0
  48. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_eval_cli.py +0 -0
  49. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_eval_display.py +0 -0
  50. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_eval_utils.py +0 -0
  51. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_gepa_cli.py +0 -0
  52. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_gepa_utils.py +0 -0
  53. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_gym_env.py +0 -0
  54. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_harbor_env_mcp.py +0 -0
  55. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_imports.py +0 -0
  56. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_init_script.py +0 -0
  57. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_install_utils.py +0 -0
  58. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_interception_utils.py +0 -0
  59. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_langchain_deep_agents_wikispeedia.py +0 -0
  60. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_lean_task.py +0 -0
  61. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_logging.py +0 -0
  62. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_math_rubric.py +0 -0
  63. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_maybe_think_parser.py +0 -0
  64. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_mcp_search_env.py +0 -0
  65. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_message_utils.py +0 -0
  66. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_message_utils_multimodal.py +0 -0
  67. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_multiturn_env.py +0 -0
  68. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_nemorl_client.py +0 -0
  69. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_openai_chat_completions_token_client.py +0 -0
  70. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_openai_responses_client.py +0 -0
  71. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_opencode_harbor.py +0 -0
  72. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_opencode_rlm_env.py +0 -0
  73. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_openenv_client.py +0 -0
  74. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_parser.py +0 -0
  75. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_path_utils.py +0 -0
  76. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_per_turn_timing.py +0 -0
  77. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_pricing_utils.py +0 -0
  78. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_prime_plugin.py +0 -0
  79. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_renderer_client.py +0 -0
  80. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_renderer_e2e.py +0 -0
  81. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_rlm_composable_env.py +0 -0
  82. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_rubric.py +0 -0
  83. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_rubric_group.py +0 -0
  84. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_sandbox_env.py +0 -0
  85. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_sandbox_mixin.py +0 -0
  86. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_save_utils.py +0 -0
  87. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_setup_script.py +0 -0
  88. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_singleturn_env.py +0 -0
  89. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_stateful_tool_env.py +0 -0
  90. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_think_parser.py +0 -0
  91. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_tool_env.py +0 -0
  92. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_tool_utils.py +0 -0
  93. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_trajectory_processing.py +0 -0
  94. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_tui_info_formatting.py +0 -0
  95. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_types.py +0 -0
  96. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_bfcl.py +0 -0
  97. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_config_extension.py +0 -0
  98. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_empty_completions.py +0 -0
  99. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_endpoint_protocols.py +0 -0
  100. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_example_counts.py +0 -0
  101. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_group_reward_env.py +0 -0
  102. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_harbor_cli.py +0 -0
  103. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_mini_swe_agent.py +0 -0
  104. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_nemo_gym_harness.py +0 -0
  105. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_openenv_taskset.py +0 -0
  106. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_openreward_taskset.py +0 -0
  107. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_replay_harness.py +0 -0
  108. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_rlm_swe.py +0 -0
  109. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_runtime_lifecycle.py +0 -0
  110. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_scoring_functions.py +0 -0
  111. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_taskset_bindings.py +0 -0
  112. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_taskset_utils.py +0 -0
  113. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_v1_textarena_taskset.py +0 -0
  114. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_wiki_search_v1.py +0 -0
  115. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_wordle_env.py +0 -0
  116. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_wordle_v1_env.py +0 -0
  117. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/tests/test_xml_parser.py +0 -0
  118. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/AGENTS.md +0 -0
  119. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/__init__.py +0 -0
  120. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/cli/__init__.py +0 -0
  121. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/cli/commands/__init__.py +0 -0
  122. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/cli/commands/build.py +0 -0
  123. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/cli/commands/eval.py +0 -0
  124. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/cli/commands/gepa.py +0 -0
  125. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/cli/commands/init.py +0 -0
  126. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/cli/commands/install.py +0 -0
  127. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/cli/commands/setup.py +0 -0
  128. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/cli/plugins/__init__.py +0 -0
  129. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/cli/plugins/prime.py +0 -0
  130. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/cli/tui.py +0 -0
  131. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/clients/__init__.py +0 -0
  132. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/clients/anthropic_messages_client.py +0 -0
  133. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/clients/client.py +0 -0
  134. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
  135. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/clients/openai_chat_completions_client.py +0 -0
  136. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
  137. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/clients/openai_completions_client.py +0 -0
  138. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/clients/openai_responses_client.py +0 -0
  139. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/clients/renderer_client.py +0 -0
  140. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/decorators.py +0 -0
  141. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/AGENTS.md +0 -0
  142. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/__init__.py +0 -0
  143. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/env_group.py +0 -0
  144. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/environment.py +0 -0
  145. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/README.md +0 -0
  146. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/__init__.py +0 -0
  147. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/cli_agent_env.py +0 -0
  148. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/README.md +0 -0
  149. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/__init__.py +0 -0
  150. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/_filter.py +0 -0
  151. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/composable_env.py +0 -0
  152. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/harness.py +0 -0
  153. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
  154. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  155. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
  156. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
  157. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
  158. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
  159. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/task.py +0 -0
  160. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
  161. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  162. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  163. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  164. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
  165. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  166. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/lean/__init__.py +0 -0
  167. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/lean/lean_task.py +0 -0
  168. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  169. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  170. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
  171. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  172. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  173. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  174. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  175. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  176. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  177. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  178. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  179. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  180. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  181. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  182. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  183. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  184. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  185. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  186. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  187. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  188. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  189. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  190. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  191. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  192. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  193. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  194. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/gym_env.py +0 -0
  195. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
  196. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/harbor_env/env.py +0 -0
  197. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
  198. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/mcp_env.py +0 -0
  199. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/opencode_env.py +0 -0
  200. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
  201. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
  202. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
  203. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/utils/__init__.py +0 -0
  204. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/utils/file_locks.py +0 -0
  205. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
  206. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/integrations/README.md +0 -0
  207. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/integrations/__init__.py +0 -0
  208. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/integrations/browser_env/README.md +0 -0
  209. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
  210. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
  211. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
  212. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
  213. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  214. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  215. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/integrations/openenv_env.py +0 -0
  216. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
  217. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/integrations/textarena_env.py +0 -0
  218. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/multiturn_env.py +0 -0
  219. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/python_env.py +0 -0
  220. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/sandbox_env.py +0 -0
  221. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/singleturn_env.py +0 -0
  222. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/stateful_tool_env.py +0 -0
  223. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/envs/tool_env.py +0 -0
  224. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/errors.py +0 -0
  225. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/gepa/__init__.py +0 -0
  226. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/gepa/adapter.py +0 -0
  227. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/gepa/config.py +0 -0
  228. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/gepa/display.py +0 -0
  229. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/gepa/gepa_utils.py +0 -0
  230. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/parsers/__init__.py +0 -0
  231. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/parsers/maybe_think_parser.py +0 -0
  232. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/parsers/parser.py +0 -0
  233. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/parsers/think_parser.py +0 -0
  234. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/parsers/xml_parser.py +0 -0
  235. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rl/README.md +0 -0
  236. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rl/__init__.py +0 -0
  237. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rl/inference/__init__.py +0 -0
  238. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rl/inference/client.py +0 -0
  239. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rl/inference/server.py +0 -0
  240. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rl/trainer/__init__.py +0 -0
  241. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rl/trainer/config.py +0 -0
  242. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rl/trainer/orchestrator.py +0 -0
  243. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rl/trainer/trainer.py +0 -0
  244. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rl/trainer/utils.py +0 -0
  245. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rubrics/__init__.py +0 -0
  246. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
  247. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rubrics/judge_rubric.py +0 -0
  248. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rubrics/math_rubric.py +0 -0
  249. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rubrics/rubric.py +0 -0
  250. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/rubrics/rubric_group.py +0 -0
  251. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/scripts/__init__.py +0 -0
  252. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/scripts/build.py +0 -0
  253. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/scripts/eval.py +0 -0
  254. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/scripts/gepa.py +0 -0
  255. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/scripts/init.py +0 -0
  256. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/scripts/install.py +0 -0
  257. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/scripts/rl.py +0 -0
  258. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/scripts/setup.py +0 -0
  259. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/scripts/train.py +0 -0
  260. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/scripts/tui.py +0 -0
  261. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/scripts/vllm.py +0 -0
  262. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/serve/__init__.py +0 -0
  263. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/serve/client/env_client.py +0 -0
  264. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/serve/client/zmq_env_client.py +0 -0
  265. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/serve/server/__init__.py +0 -0
  266. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/serve/server/env_router.py +0 -0
  267. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/serve/server/env_server.py +0 -0
  268. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/serve/server/env_worker.py +0 -0
  269. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/serve/server/zmq_env_server.py +0 -0
  270. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/serve/types.py +0 -0
  271. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/types.py +0 -0
  272. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/__init__.py +0 -0
  273. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/async_utils.py +0 -0
  274. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/client_utils.py +0 -0
  275. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/config_utils.py +0 -0
  276. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/data_utils.py +0 -0
  277. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/display_utils.py +0 -0
  278. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/env_config_utils.py +0 -0
  279. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/env_utils.py +0 -0
  280. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/error_utils.py +0 -0
  281. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/eval_display.py +0 -0
  282. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/eval_utils.py +0 -0
  283. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/heartbeat.py +0 -0
  284. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/import_utils.py +0 -0
  285. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/install_utils.py +0 -0
  286. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/interception_utils.py +0 -0
  287. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/logging_utils.py +0 -0
  288. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/message_utils.py +0 -0
  289. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/metric_utils.py +0 -0
  290. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/path_utils.py +0 -0
  291. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/pricing_utils.py +0 -0
  292. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/process_utils.py +0 -0
  293. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/response_utils.py +0 -0
  294. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/save_utils.py +0 -0
  295. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/serve_utils.py +0 -0
  296. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/thread_utils.py +0 -0
  297. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/threaded_sandbox_client.py +0 -0
  298. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/tool_utils.py +0 -0
  299. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/usage_utils.py +0 -0
  300. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/utils/version_utils.py +0 -0
  301. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/ENVIRONMENT_BEST_PRACTICES.md +0 -0
  302. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/README.md +0 -0
  303. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/RE_MIGRATION.md +0 -0
  304. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/__init__.py +0 -0
  305. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/artifact.py +0 -0
  306. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/config.py +0 -0
  307. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/env.py +0 -0
  308. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/harness.py +0 -0
  309. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/model.py +0 -0
  310. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/program.py +0 -0
  311. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/runtime.py +0 -0
  312. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/runtime_handles.py +0 -0
  313. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/sandbox.py +0 -0
  314. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/state.py +0 -0
  315. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/task.py +0 -0
  316. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/taskset.py +0 -0
  317. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/toolset.py +0 -0
  318. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/types.py +0 -0
  319. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/user.py +0 -0
  320. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/__init__.py +0 -0
  321. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/binding_utils.py +0 -0
  322. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/config_callable_utils.py +0 -0
  323. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/config_utils.py +0 -0
  324. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/endpoint_utils.py +0 -0
  325. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/json_utils.py +0 -0
  326. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/judge_utils.py +0 -0
  327. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/lifecycle_utils.py +0 -0
  328. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/logging_utils.py +0 -0
  329. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/mcp_proxy_utils.py +0 -0
  330. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/mcp_utils.py +0 -0
  331. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/object_utils.py +0 -0
  332. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/program_utils.py +0 -0
  333. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/prompt_utils.py +0 -0
  334. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/runtime_owner_utils.py +0 -0
  335. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/runtime_registry.py +0 -0
  336. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/sandbox_program_utils.py +0 -0
  337. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/sandbox_python_utils.py +0 -0
  338. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/sandbox_utils.py +0 -0
  339. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/scoring_utils.py +0 -0
  340. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/serialization_utils.py +0 -0
  341. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/task_freeze_utils.py +0 -0
  342. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/taskset_utils.py +0 -0
  343. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/tool_utils.py +0 -0
  344. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/toolset_utils.py +0 -0
  345. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/verifiers/v1/utils/trajectory_utils.py +0 -0
  346. {verifiers-0.1.15.dev168 → verifiers-0.1.15.dev169}/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.dev168
3
+ Version: 0.1.15.dev169
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
@@ -22,8 +22,10 @@ Classifier: Programming Language :: Python :: 3.13
22
22
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
23
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
24
  Requires-Python: <3.14,>=3.10
25
+ Requires-Dist: aiohttp>=3.9.0
25
26
  Requires-Dist: aiolimiter>=1.2.1
26
27
  Requires-Dist: anthropic>=0.78.0
28
+ Requires-Dist: certifi
27
29
  Requires-Dist: datasets<4.7.0,>=3.0.0
28
30
  Requires-Dist: gepa
29
31
  Requires-Dist: httpx>=0.27.0
@@ -35,10 +37,12 @@ Requires-Dist: nest-asyncio>=1.6.0
35
37
  Requires-Dist: numpy
36
38
  Requires-Dist: openai-agents>=0.0.7
37
39
  Requires-Dist: openai>=1.108.1
40
+ Requires-Dist: pillow
38
41
  Requires-Dist: prime-pydantic-config[toml]
39
42
  Requires-Dist: prime-sandboxes>=0.2.25
40
43
  Requires-Dist: prime-tunnel>=0.1.6
41
44
  Requires-Dist: pydantic>=2.11.9
45
+ Requires-Dist: pymupdf
42
46
  Requires-Dist: pyzmq>=27.1.0
43
47
  Requires-Dist: regex<2026.4.4
44
48
  Requires-Dist: requests
@@ -53,6 +53,10 @@ dependencies = [
53
53
  "setproctitle>=1.3.0",
54
54
  "regex<2026.4.4",
55
55
  "httpx>=0.27.0",
56
+ "aiohttp>=3.9.0",
57
+ "pymupdf",
58
+ "pillow",
59
+ "certifi",
56
60
  "prime-pydantic-config[toml]",
57
61
  "uvloop>=0.21.0; sys_platform != 'win32' and sys_platform != 'cygwin' and platform_python_implementation != 'PyPy'",
58
62
  ]
@@ -0,0 +1,35 @@
1
+ # Search Tasksets
2
+
3
+ Composable search/research tasksets for agents that solve live information-seeking tasks in a sandbox.
4
+
5
+ The search family is intentionally backend-oriented, mirroring the SWE taskset pattern while keeping the task contract research-centric: each task expects a single final answer rather than a code patch. Agents may use web/search tools, browser helpers, or other sandbox resources provided by the paired environment.
6
+
7
+ ## Backends
8
+
9
+ | Backend | Source | Default dataset | Status |
10
+ |---|---|---|---|
11
+ | `quest` | [OSU-NLP-Group/QUEST](https://github.com/OSU-NLP-Group/QUEST) | [`osunlp/QUEST-RL-Data`](https://huggingface.co/datasets/osunlp/QUEST-RL-Data) | Objective tasks supported |
12
+
13
+ ## Usage
14
+
15
+ ```python
16
+ from verifiers.envs.experimental.composable.tasksets.search import make_search_taskset
17
+
18
+ taskset = make_search_taskset(backend="quest", category="objective")
19
+ ```
20
+
21
+ `make_search_taskset()` dispatches by backend name. Unknown backends raise `ValueError` with the available backend list.
22
+
23
+ ## Output Contract
24
+
25
+ Search tasksets should define their own output contract. The initial `quest` backend expects the agent to write one final researched response to `/task/answer.txt`, including supporting URLs/citations when available. Scratch reasoning, tool traces, and logs should not be written as the final answer.
26
+
27
+ ## Error Handling
28
+
29
+ Search tasksets should use the framework error taxonomy for infrastructure failures:
30
+
31
+ - `vf.SandboxError` for sandbox setup, command, or lifecycle failures.
32
+ - `vf.ModelError` for judge/model provider failures.
33
+ - `vf.InfraError` for dataset, evaluator, or external runtime failures.
34
+
35
+ Incorrect answers should not set `state["error"]`; they should score normally, often as `0.0`.
@@ -0,0 +1,5 @@
1
+ """Composable search/research tasksets."""
2
+
3
+ from .search_tasksets import make_quest_taskset, make_search_taskset
4
+
5
+ __all__ = ["make_quest_taskset", "make_search_taskset"]
@@ -0,0 +1,52 @@
1
+ # QUEST Search Taskset
2
+
3
+ Objective QUEST tasks ported into the composable search taskset framework.
4
+
5
+ ## Source
6
+
7
+ - Dataset: [`osunlp/QUEST-RL-Data`](https://huggingface.co/datasets/osunlp/QUEST-RL-Data)
8
+ - Upstream project: [`OSU-NLP-Group/QUEST`](https://github.com/OSU-NLP-Group/QUEST)
9
+
10
+ The taskset loads the Hugging Face dataset, filters to `rl_task_category == "objective"` by default, and uses the dataset-provided generated evaluation scripts under `eval_scripts/*.py`.
11
+
12
+ ## Task Contract
13
+
14
+ Each example is a live research question. The agent should produce one final answer in `/task/answer.txt`.
15
+
16
+ The paired `rlm_search` environment prompts RLM to write this file and provides web search/open-page skills. The rubric can fall back to the final assistant text if the answer file is empty, but agents should still write the file directly.
17
+
18
+ ## Scoring
19
+
20
+ `QuestRubric` loads the generated eval script for the example's `task_id` and calls its async `evaluate_answer(...)` entrypoint using the vendored minimal `obj_task_eval` runtime. The rollout reward is `summary["final_score"]`, clipped to `[0.0, 1.0]`.
21
+
22
+ Generated scripts may request URL-backed verification. PDF URLs are detected and parsed with the upstream QUEST PDF parser path before falling back to generic webpage retrieval.
23
+
24
+ This port intentionally preserves upstream QUEST behavior for URL-backed verification semantics. The upstream verifier generally treats invalid, irrelevant, or inaccessible cited webpages as unsupported claims, which can assign `0.0` to the affected verification node even when the immediate cause is source access such as a bot challenge, rate limit, timeout, or parser failure. Future work should consider a finer-grained source-access taxonomy so verifier infrastructure limitations can be distinguished from model-provided bad URLs or unsupported claims.
25
+
26
+ A reward of `0.0` with no `state["error"]` means the QUEST evaluator ran and judged the answer incorrect under the upstream-compatible scoring path. Infrastructure and evaluator failures outside normal QUEST source verification are represented with `vf.Error` subclasses instead of ad hoc success metrics.
27
+
28
+ ## Error Handling
29
+
30
+ QUEST uses Verifiers' framework-managed error field for non-answer failures when the failure comes from external runtime systems:
31
+
32
+ - Missing live sandbox or answer-file read failure: `vf.SandboxError`.
33
+ - Transient judge provider/network/rate-limit/server failures: retryable `vf.InfraError`.
34
+ - Empty or invalid judge responses: retryable `vf.InvalidModelResponseError` / `vf.EmptyModelResponseError`.
35
+ - Judge auth, model-not-found, content-filter, or invalid request failures: non-retryable `vf.ModelError`.
36
+ - QUEST eval-script download/cache resolution failure: `vf.InfraError`.
37
+
38
+ Wrong answers, empty answers, and inaccessible or irrelevant cited sources remain ordinary scored outcomes and return `0.0` without setting `state["error"]`. Generated eval-script source errors, missing task metadata, missing eval-script files, import/load failures, and unexpected evaluator runtime bugs are not converted to `vf.Error`; they raise normally so broken evaluator code fails hard.
39
+
40
+ ## Common Arguments
41
+
42
+ | Argument | Default | Description |
43
+ |---|---:|---|
44
+ | `dataset_name` | `osunlp/QUEST-RL-Data` | Hugging Face dataset name. |
45
+ | `split` | `train` | Dataset split. |
46
+ | `category` | `objective` | Initial implementation supports objective tasks only. |
47
+ | `answer_file` | `/task/answer.txt` | Final answer path in the sandbox. |
48
+ | `judge_model` | `openai/gpt-5.4-mini` | OpenAI-compatible model for QUEST verifier calls. |
49
+ | `judge_base_url` | `https://api.pinference.ai/api/v1` | Judge API base URL. |
50
+ | `judge_api_key_var` | `PRIME_API_KEY` | Env var containing the judge API key. |
51
+ | `quest_eval_scripts_dir` | HF cache | Optional local directory containing `eval_scripts/*.py`. |
52
+ | `quest_cache_dir` | `~/.cache/verifiers/quest` | Host cache for QUEST verifier state. |
@@ -0,0 +1,5 @@
1
+ """QUEST search taskset."""
2
+
3
+ from .taskset import QuestRubric, QuestTaskSet
4
+
5
+ __all__ = ["QuestRubric", "QuestTaskSet"]
@@ -0,0 +1,17 @@
1
+ """Vendored QUEST objective evaluation runtime."""
2
+
3
+ from .eval_toolkit import BinaryEvalResult, Extractor, Verifier, create_evaluator
4
+ from .evaluator import Evaluator
5
+ from .utils import CacheFileSys
6
+ from .verification_tree import AggregationStrategy, VerificationNode
7
+
8
+ __all__ = [
9
+ "AggregationStrategy",
10
+ "BinaryEvalResult",
11
+ "CacheFileSys",
12
+ "Evaluator",
13
+ "Extractor",
14
+ "Verifier",
15
+ "VerificationNode",
16
+ "create_evaluator",
17
+ ]
@@ -0,0 +1,5 @@
1
+ """Vendored QUEST API tool shims."""
2
+
3
+ from .tool_pdf import PDFParser
4
+
5
+ __all__ = ["PDFParser"]
@@ -0,0 +1,275 @@
1
+ """Lightweight PDF parser from QUEST objective evaluation.
2
+
3
+ The parser accepts a URL, local path, bytes, or ``BytesIO`` object and returns
4
+ ``(imgs, text)``. ``imgs`` is a list of base64-encoded page JPEGs and ``text``
5
+ is extracted page text. Failures return a blank image plus an explanatory text
6
+ message, matching upstream QUEST's tolerant evaluator behavior.
7
+ """
8
+
9
+ import asyncio
10
+ import base64
11
+ import random
12
+ from io import BytesIO
13
+ from logging import Logger
14
+ from typing import List, Optional, Tuple, Union
15
+ from urllib.parse import unquote, urlparse
16
+
17
+ import aiohttp
18
+ import certifi
19
+ import fitz
20
+ import httpx
21
+ import requests
22
+ from PIL import Image
23
+
24
+ from ..utils.url_tools import normalize_url_for_browser
25
+
26
+ PDF_MAGIC = b"%PDF-"
27
+ UA_CHROME = (
28
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
29
+ "AppleWebKit/537.36 (KHTML, like Gecko) "
30
+ "Chrome/124.0.0.0 Safari/537.36"
31
+ )
32
+ USER_AGENT_STRINGS = [
33
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 "
34
+ "(KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
35
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 "
36
+ "(KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
37
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_4_1) AppleWebKit/537.36 "
38
+ "(KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 OPR/109.0.0.0",
39
+ ]
40
+
41
+
42
+ def make_blank_png_b64() -> str:
43
+ """Return a transparent 1x1 PNG as base64."""
44
+ img = Image.new("RGBA", (1, 1), (0, 0, 0, 0))
45
+ buf = BytesIO()
46
+ img.save(buf, format="PNG")
47
+ return base64.b64encode(buf.getvalue()).decode()
48
+
49
+
50
+ def is_pdf_by_suffix(url: str) -> bool:
51
+ """Check whether a URL likely points to a PDF based on path/query patterns."""
52
+ parsed = urlparse(url.lower())
53
+ path = unquote(parsed.path)
54
+ if path.endswith(".pdf"):
55
+ return True
56
+
57
+ pdf_patterns = [
58
+ "arxiv.org/pdf/",
59
+ "/download/pdf",
60
+ "/fulltext.pdf",
61
+ "/article/pdf",
62
+ "/content/pdf",
63
+ "type=pdf",
64
+ "format=pdf",
65
+ "download=pdf",
66
+ ".pdf?",
67
+ "/pdf/",
68
+ "pdfviewer",
69
+ ]
70
+ url_lower = url.lower()
71
+ return any(pattern in url_lower for pattern in pdf_patterns)
72
+
73
+
74
+ def is_pdf_by_requests_head(url: str) -> bool:
75
+ """Check via HEAD request whether a URL is a PDF."""
76
+ try:
77
+ response = requests.head(
78
+ url,
79
+ allow_redirects=True,
80
+ timeout=10,
81
+ verify=certifi.where(),
82
+ )
83
+ content_type = response.headers.get("content-type", "").lower()
84
+ return "pdf" in content_type
85
+ except requests.RequestException:
86
+ return False
87
+
88
+
89
+ async def is_pdf_by_httpx_get_range(url: str, timeout: int = 10) -> bool:
90
+ """Check PDF via a partial GET request to read the file header."""
91
+ try:
92
+ async with httpx.AsyncClient(
93
+ follow_redirects=True,
94
+ timeout=timeout,
95
+ verify=False,
96
+ ) as client:
97
+ headers = {
98
+ "User-Agent": random.choice(USER_AGENT_STRINGS),
99
+ "Range": "bytes=0-1023",
100
+ "Accept": "*/*",
101
+ }
102
+ response = await client.get(url, headers=headers)
103
+ content_type = (
104
+ response.headers.get("content-type", "").split(";")[0].strip().lower()
105
+ )
106
+ if "pdf" in content_type:
107
+ return True
108
+ return bool(response.content and response.content.startswith(PDF_MAGIC))
109
+ except (httpx.TimeoutException, httpx.ConnectError, httpx.HTTPError):
110
+ return False
111
+ except Exception:
112
+ return False
113
+
114
+
115
+ async def is_pdf_by_full_get(url: str, timeout: int = 15) -> bool:
116
+ """Last-resort PDF detection by streaming the start of the response body."""
117
+ try:
118
+ async with httpx.AsyncClient(
119
+ follow_redirects=True,
120
+ timeout=timeout,
121
+ verify=False,
122
+ ) as client:
123
+ headers = {
124
+ "User-Agent": random.choice(USER_AGENT_STRINGS),
125
+ "Accept": "*/*",
126
+ }
127
+ async with client.stream("GET", url, headers=headers) as response:
128
+ chunk_data = b""
129
+ async for chunk in response.aiter_bytes(chunk_size=5):
130
+ chunk_data += chunk
131
+ if len(chunk_data) >= 5:
132
+ break
133
+ if chunk_data and chunk_data.startswith(PDF_MAGIC):
134
+ return True
135
+ content_type = (
136
+ response.headers.get("content-type", "")
137
+ .split(";")[0]
138
+ .strip()
139
+ .lower()
140
+ )
141
+ return "pdf" in content_type
142
+ except Exception:
143
+ return False
144
+
145
+
146
+ async def is_pdf(url: str, logger: Optional[Logger] = None) -> bool:
147
+ """Robustly detect whether a URL points to a PDF file."""
148
+ url = normalize_url_for_browser(url)
149
+ if logger:
150
+ logger.debug(f"Checking if URL is PDF: {url}")
151
+
152
+ if is_pdf_by_suffix(url):
153
+ if logger:
154
+ logger.info(f"URL pattern indicates PDF: {url}")
155
+ return True
156
+ if is_pdf_by_requests_head(url):
157
+ if logger:
158
+ logger.info(f"HEAD request confirms PDF: {url}")
159
+ return True
160
+ if await is_pdf_by_httpx_get_range(url):
161
+ if logger:
162
+ logger.info(f"Partial GET confirms PDF: {url}")
163
+ return True
164
+ if await is_pdf_by_full_get(url):
165
+ if logger:
166
+ logger.info(f"Full GET confirms PDF: {url}")
167
+ return True
168
+ return False
169
+
170
+
171
+ class PDFParser:
172
+ """Download and parse PDFs for QUEST source verification."""
173
+
174
+ MAX_PAGES: int = 100
175
+ MAX_IMAGE_PAGES: int = 50
176
+ RENDER_DPI: int = 144
177
+ JPEG_QUALITY: int = 70
178
+
179
+ async def extract(
180
+ self,
181
+ source: Union[str, bytes, BytesIO],
182
+ ) -> Tuple[Optional[List[str]], Optional[str]]:
183
+ """Extract page screenshots and text from a PDF source."""
184
+ try:
185
+ if isinstance(source, (bytes, BytesIO)):
186
+ data = source.getvalue() if isinstance(source, BytesIO) else source
187
+ elif isinstance(source, str) and source.lower().startswith(
188
+ ("http://", "https://")
189
+ ):
190
+ data = await self._fetch_pdf_bytes(source)
191
+ else:
192
+ data = await asyncio.to_thread(
193
+ lambda path: open(path, "rb").read(), str(source)
194
+ )
195
+
196
+ if not data.lstrip().startswith(PDF_MAGIC):
197
+ return [
198
+ make_blank_png_b64()
199
+ ], "PDF extraction failed: Invalid PDF format"
200
+
201
+ return await asyncio.to_thread(self._extract_from_bytes, data)
202
+ except Exception as exc:
203
+ return [make_blank_png_b64()], f"PDF extraction failed: {exc}"
204
+
205
+ async def parse_url(self, url: str) -> str | None:
206
+ """Compatibility helper returning text for a PDF URL."""
207
+ _imgs, text = await self.extract(url)
208
+ return text
209
+
210
+ def parse_bytes(self, data: bytes) -> str | None:
211
+ """Compatibility helper returning text for PDF bytes."""
212
+ _imgs, text = self._extract_from_bytes(data)
213
+ return text
214
+
215
+ async def _fetch_pdf_bytes(self, url: str) -> bytes:
216
+ """Fetch PDF bytes with a browser user agent and an arXiv backup domain."""
217
+ headers = {
218
+ "User-Agent": UA_CHROME,
219
+ "Accept": "application/pdf,application/octet-stream;q=0.9,*/*;q=0.8",
220
+ }
221
+
222
+ async def download(fetch_url: str) -> bytes:
223
+ async with aiohttp.ClientSession(headers=headers) as session:
224
+ async with session.get(
225
+ fetch_url, allow_redirects=True, timeout=30
226
+ ) as response:
227
+ response.raise_for_status()
228
+ return await response.read()
229
+
230
+ data = await download(url)
231
+ if not data.lstrip().startswith(PDF_MAGIC) and "arxiv.org" in url:
232
+ backup = url.replace("://arxiv.org", "://export.arxiv.org")
233
+ try:
234
+ data = await download(backup)
235
+ except Exception:
236
+ pass
237
+ return data
238
+
239
+ def _extract_from_bytes(
240
+ self, data: bytes
241
+ ) -> Tuple[Optional[List[str]], Optional[str]]:
242
+ """Parse PDF bytes into page images and text."""
243
+ if not data.lstrip().startswith(PDF_MAGIC):
244
+ return [make_blank_png_b64()], "PDF extraction failed: Invalid PDF format"
245
+
246
+ try:
247
+ doc = fitz.open(stream=data, filetype="pdf")
248
+ except (fitz.FileDataError, RuntimeError):
249
+ return [
250
+ make_blank_png_b64()
251
+ ], "PDF extraction failed: Unable to parse PDF file"
252
+
253
+ imgs: List[str] = []
254
+ texts: List[str] = []
255
+ zoom = self.RENDER_DPI / 72
256
+ max_pages = min(self.MAX_PAGES, doc.page_count)
257
+ max_img_pages = min(self.MAX_IMAGE_PAGES, doc.page_count)
258
+
259
+ for index in range(max_pages):
260
+ page = doc.load_page(index)
261
+ texts.append(page.get_text("text"))
262
+ if index < max_img_pages:
263
+ pix = page.get_pixmap(matrix=fitz.Matrix(zoom, zoom), alpha=False)
264
+ img = Image.frombytes("RGB", (pix.width, pix.height), pix.samples)
265
+ buf = BytesIO()
266
+ img.save(
267
+ buf,
268
+ "JPEG",
269
+ quality=self.JPEG_QUALITY,
270
+ optimize=True,
271
+ progressive=True,
272
+ )
273
+ imgs.append(base64.b64encode(buf.getvalue()).decode())
274
+ doc.close()
275
+ return imgs, "\n".join(texts)