verifiers 0.2.0__tar.gz → 0.2.1.dev2__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 (401) hide show
  1. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/PKG-INFO +1 -1
  2. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/test_e2e.py +5 -0
  3. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/test_trace.py +4 -0
  4. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/dashboard/base.py +11 -1
  5. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/dashboard/eval.py +22 -5
  6. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/eval/main.py +22 -13
  7. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/dialects/chat.py +4 -1
  8. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/interception/server.py +15 -3
  9. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/legacy.py +19 -0
  10. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/push.py +6 -0
  11. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/trace.py +6 -0
  12. verifiers-0.2.1.dev2/verifiers/v1/utils/interrupt.py +33 -0
  13. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/.gitignore +0 -0
  14. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/LICENSE +0 -0
  15. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/README.md +0 -0
  16. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/pyproject.toml +0 -0
  17. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/AGENTS.md +0 -0
  18. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/__init__.py +0 -0
  19. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/conftest.py +0 -0
  20. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_browser_env.py +0 -0
  21. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_build_script.py +0 -0
  22. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_cli_agent_env.py +0 -0
  23. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_client_auth_errors.py +0 -0
  24. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_client_config.py +0 -0
  25. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_client_multimodal_types.py +0 -0
  26. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_composable_env.py +0 -0
  27. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_context_token_metrics.py +0 -0
  28. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_decorator_ranks.py +0 -0
  29. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_endpoint_registry.py +0 -0
  30. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_env_group.py +0 -0
  31. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_env_server.py +0 -0
  32. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_environment.py +0 -0
  33. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_environment_extra.py +0 -0
  34. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_envs.py +0 -0
  35. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_error_chain.py +0 -0
  36. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_eval_display.py +0 -0
  37. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_eval_utils.py +0 -0
  38. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_gepa_cli.py +0 -0
  39. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_gepa_utils.py +0 -0
  40. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_gym_env.py +0 -0
  41. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_harbor_env_mcp.py +0 -0
  42. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_imports.py +0 -0
  43. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_init_script.py +0 -0
  44. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_install_utils.py +0 -0
  45. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_interception_utils.py +0 -0
  46. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_logging.py +0 -0
  47. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_math_rubric.py +0 -0
  48. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_maybe_think_parser.py +0 -0
  49. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_message_utils.py +0 -0
  50. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_message_utils_multimodal.py +0 -0
  51. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_multiturn_env.py +0 -0
  52. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_nemorl_client.py +0 -0
  53. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_openai_chat_completions_token_client.py +0 -0
  54. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_openai_responses_client.py +0 -0
  55. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_opencode_rlm_env.py +0 -0
  56. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_openenv_client.py +0 -0
  57. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_parser.py +0 -0
  58. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_path_utils.py +0 -0
  59. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_per_turn_timing.py +0 -0
  60. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_pricing_utils.py +0 -0
  61. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_prime_plugin.py +0 -0
  62. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_renderer_client.py +0 -0
  63. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_renderer_e2e.py +0 -0
  64. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_rlm_composable_env.py +0 -0
  65. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_rubric.py +0 -0
  66. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_rubric_group.py +0 -0
  67. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_sandbox_debug_env.py +0 -0
  68. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_sandbox_env.py +0 -0
  69. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_sandbox_mixin.py +0 -0
  70. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_save_utils.py +0 -0
  71. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_setup_script.py +0 -0
  72. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_singleturn_env.py +0 -0
  73. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_stateful_tool_env.py +0 -0
  74. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_think_parser.py +0 -0
  75. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_tool_env.py +0 -0
  76. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_tool_utils.py +0 -0
  77. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_trajectory_processing.py +0 -0
  78. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_tui_info_formatting.py +0 -0
  79. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_types.py +0 -0
  80. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_wordle_env.py +0 -0
  81. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/test_xml_parser.py +0 -0
  82. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/conftest.py +0 -0
  83. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  84. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  85. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/fixtures/echo_multi_v0.py +0 -0
  86. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  87. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  88. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/fixtures/echo_v0.py +0 -0
  89. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/fixtures/echo_v1.py +0 -0
  90. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/fixtures/pyproject.toml +0 -0
  91. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  92. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/test_color_codeword_tasks.py +0 -0
  93. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/test_configs.py +0 -0
  94. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/test_envs.py +0 -0
  95. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/test_graph.py +0 -0
  96. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/test_judges.py +0 -0
  97. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/test_legacy.py +0 -0
  98. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/tests/v1/test_scoring.py +0 -0
  99. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/__init__.py +0 -0
  100. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/cli/__init__.py +0 -0
  101. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/cli/commands/__init__.py +0 -0
  102. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/cli/commands/build.py +0 -0
  103. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/cli/commands/eval.py +0 -0
  104. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/cli/commands/gepa.py +0 -0
  105. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/cli/commands/init.py +0 -0
  106. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/cli/commands/install.py +0 -0
  107. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/cli/commands/setup.py +0 -0
  108. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/cli/plugins/__init__.py +0 -0
  109. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/cli/plugins/prime.py +0 -0
  110. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/cli/tui.py +0 -0
  111. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/clients/__init__.py +0 -0
  112. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/clients/anthropic_messages_client.py +0 -0
  113. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/clients/client.py +0 -0
  114. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
  115. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/clients/openai_chat_completions_client.py +0 -0
  116. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
  117. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/clients/openai_completions_client.py +0 -0
  118. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/clients/openai_responses_client.py +0 -0
  119. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/clients/renderer_client.py +0 -0
  120. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/decorators.py +0 -0
  121. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/AGENTS.md +0 -0
  122. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/__init__.py +0 -0
  123. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/env_group.py +0 -0
  124. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/environment.py +0 -0
  125. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/README.md +0 -0
  126. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/__init__.py +0 -0
  127. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/cli_agent_env.py +0 -0
  128. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/README.md +0 -0
  129. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/__init__.py +0 -0
  130. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/_filter.py +0 -0
  131. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/composable_env.py +0 -0
  132. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/harness.py +0 -0
  133. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
  134. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  135. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
  136. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
  137. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
  138. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
  139. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
  140. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/task.py +0 -0
  141. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
  142. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  143. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  144. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  145. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
  146. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
  147. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  148. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
  149. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  150. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  151. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/README.md +0 -0
  152. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/__init__.py +0 -0
  153. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/openseeker/README.md +0 -0
  154. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/openseeker/__init__.py +0 -0
  155. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/openseeker/taskset.py +0 -0
  156. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/README.md +0 -0
  157. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/__init__.py +0 -0
  158. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/__init__.py +0 -0
  159. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/__init__.py +0 -0
  160. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/tool_pdf.py +0 -0
  161. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/eval_toolkit.py +0 -0
  162. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/evaluator.py +0 -0
  163. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/__init__.py +0 -0
  164. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/base_client.py +0 -0
  165. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/__init__.py +0 -0
  166. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/cache_prompts.py +0 -0
  167. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/__init__.py +0 -0
  168. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/cache_filesys.py +0 -0
  169. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/load_eval_script.py +0 -0
  170. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/misc.py +0 -0
  171. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/tool_visit.py +0 -0
  172. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/url_tools.py +0 -0
  173. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/verification_tree.py +0 -0
  174. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/open_ended.py +0 -0
  175. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/quest/taskset.py +0 -0
  176. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/README.md +0 -0
  177. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/__init__.py +0 -0
  178. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/taskset.py +0 -0
  179. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/search/search_tasksets.py +0 -0
  180. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
  181. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  182. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  183. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  184. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  185. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  186. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  187. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  188. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  189. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  190. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  191. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  192. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  193. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  194. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  195. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  196. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  197. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  198. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  199. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  200. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  201. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  202. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  203. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  204. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/gym_env.py +0 -0
  205. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
  206. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/harbor_env/env.py +0 -0
  207. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
  208. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/mcp_env.py +0 -0
  209. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/opencode_env.py +0 -0
  210. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
  211. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
  212. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
  213. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/utils/__init__.py +0 -0
  214. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/utils/file_locks.py +0 -0
  215. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
  216. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/integrations/README.md +0 -0
  217. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/integrations/__init__.py +0 -0
  218. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/integrations/browser_env/README.md +0 -0
  219. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
  220. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
  221. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
  222. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
  223. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  224. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  225. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/integrations/openenv_env.py +0 -0
  226. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
  227. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/integrations/textarena_env.py +0 -0
  228. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/multiturn_env.py +0 -0
  229. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/python_env.py +0 -0
  230. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/sandbox_env.py +0 -0
  231. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/singleturn_env.py +0 -0
  232. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/stateful_tool_env.py +0 -0
  233. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/envs/tool_env.py +0 -0
  234. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/errors.py +0 -0
  235. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/gepa/__init__.py +0 -0
  236. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/gepa/adapter.py +0 -0
  237. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/gepa/config.py +0 -0
  238. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/gepa/display.py +0 -0
  239. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/gepa/gepa_utils.py +0 -0
  240. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/parsers/__init__.py +0 -0
  241. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/parsers/maybe_think_parser.py +0 -0
  242. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/parsers/parser.py +0 -0
  243. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/parsers/think_parser.py +0 -0
  244. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/parsers/xml_parser.py +0 -0
  245. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/rubrics/__init__.py +0 -0
  246. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
  247. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/rubrics/judge_rubric.py +0 -0
  248. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/rubrics/math_rubric.py +0 -0
  249. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/rubrics/rubric.py +0 -0
  250. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/rubrics/rubric_group.py +0 -0
  251. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/scripts/__init__.py +0 -0
  252. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/scripts/build.py +0 -0
  253. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/scripts/eval.py +0 -0
  254. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/scripts/gepa.py +0 -0
  255. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/scripts/init.py +0 -0
  256. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/scripts/install.py +0 -0
  257. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/scripts/setup.py +0 -0
  258. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/scripts/tui.py +0 -0
  259. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/serve/__init__.py +0 -0
  260. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/serve/client/env_client.py +0 -0
  261. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/serve/client/zmq_env_client.py +0 -0
  262. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/serve/server/__init__.py +0 -0
  263. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/serve/server/env_router.py +0 -0
  264. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/serve/server/env_server.py +0 -0
  265. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/serve/server/env_worker.py +0 -0
  266. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/serve/server/zmq_env_server.py +0 -0
  267. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/serve/types.py +0 -0
  268. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/types.py +0 -0
  269. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/__init__.py +0 -0
  270. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/async_utils.py +0 -0
  271. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/client_utils.py +0 -0
  272. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/config_utils.py +0 -0
  273. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/data_utils.py +0 -0
  274. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/display_utils.py +0 -0
  275. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/env_config_utils.py +0 -0
  276. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/env_utils.py +0 -0
  277. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/error_utils.py +0 -0
  278. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/eval_display.py +0 -0
  279. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/eval_utils.py +0 -0
  280. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/heartbeat.py +0 -0
  281. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/import_utils.py +0 -0
  282. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/install_utils.py +0 -0
  283. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/interception_utils.py +0 -0
  284. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/logging_utils.py +0 -0
  285. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/message_utils.py +0 -0
  286. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/metric_utils.py +0 -0
  287. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/path_utils.py +0 -0
  288. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/pricing_utils.py +0 -0
  289. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/process_utils.py +0 -0
  290. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/response_utils.py +0 -0
  291. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/save_utils.py +0 -0
  292. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/serve_utils.py +0 -0
  293. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/thread_utils.py +0 -0
  294. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/threaded_sandbox_client.py +0 -0
  295. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/tool_utils.py +0 -0
  296. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/usage_utils.py +0 -0
  297. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/utils/version_utils.py +0 -0
  298. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/__init__.py +0 -0
  299. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/__init__.py +0 -0
  300. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  301. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/dashboard/replay.py +0 -0
  302. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/dashboard/validate.py +0 -0
  303. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/debug.py +0 -0
  304. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/eval/__init__.py +0 -0
  305. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/eval/resume.py +0 -0
  306. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/eval/runner.py +0 -0
  307. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/init.py +0 -0
  308. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/output.py +0 -0
  309. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/replay.py +0 -0
  310. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/resolve.py +0 -0
  311. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/serve.py +0 -0
  312. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/cli/validate.py +0 -0
  313. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/clients/__init__.py +0 -0
  314. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/clients/client.py +0 -0
  315. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/clients/config.py +0 -0
  316. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/clients/eval.py +0 -0
  317. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/clients/train.py +0 -0
  318. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/configs/__init__.py +0 -0
  319. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/configs/debug.py +0 -0
  320. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/configs/eval.py +0 -0
  321. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/configs/init.py +0 -0
  322. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/configs/replay.py +0 -0
  323. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/configs/serve.py +0 -0
  324. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/configs/validate.py +0 -0
  325. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/decorators.py +0 -0
  326. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/dialects/__init__.py +0 -0
  327. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/dialects/anthropic.py +0 -0
  328. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/dialects/base.py +0 -0
  329. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/dialects/responses.py +0 -0
  330. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/env.py +0 -0
  331. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/episode.py +0 -0
  332. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/errors.py +0 -0
  333. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/graph.py +0 -0
  334. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harness.py +0 -0
  335. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/__init__.py +0 -0
  336. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  337. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/codex/harness.py +0 -0
  338. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/default/__init__.py +0 -0
  339. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/default/harness.py +0 -0
  340. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/default/program.py +0 -0
  341. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  342. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  343. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  344. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  345. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  346. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/null/__init__.py +0 -0
  347. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/null/harness.py +0 -0
  348. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/null/program.py +0 -0
  349. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  350. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  351. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  352. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  353. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  354. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/interception/__init__.py +0 -0
  355. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/interception/pool.py +0 -0
  356. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/judge.py +0 -0
  357. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/judges/__init__.py +0 -0
  358. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/judges/reference.py +0 -0
  359. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/judges/reference.txt +0 -0
  360. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/judges/rubric.py +0 -0
  361. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/judges/rubric.txt +0 -0
  362. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/loaders.py +0 -0
  363. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/mcp/__init__.py +0 -0
  364. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/mcp/launch.py +0 -0
  365. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/mcp/server.py +0 -0
  366. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/mcp/toolset.py +0 -0
  367. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/mcp/user.py +0 -0
  368. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/retries.py +0 -0
  369. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/rollout.py +0 -0
  370. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/runtimes/__init__.py +0 -0
  371. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/runtimes/base.py +0 -0
  372. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/runtimes/docker.py +0 -0
  373. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/runtimes/limiters.py +0 -0
  374. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/runtimes/modal.py +0 -0
  375. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/runtimes/prime.py +0 -0
  376. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/runtimes/subprocess.py +0 -0
  377. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/scoring.py +0 -0
  378. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/serve/__init__.py +0 -0
  379. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/serve/client.py +0 -0
  380. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/serve/pool.py +0 -0
  381. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/serve/server.py +0 -0
  382. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/serve/types.py +0 -0
  383. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/state.py +0 -0
  384. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/task.py +0 -0
  385. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/taskset.py +0 -0
  386. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/tasksets/__init__.py +0 -0
  387. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  388. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  389. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  390. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  391. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  392. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  393. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  394. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/types.py +0 -0
  395. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/utils/__init__.py +0 -0
  396. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/utils/aio.py +0 -0
  397. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/utils/format.py +0 -0
  398. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/utils/generic.py +0 -0
  399. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/utils/install.py +0 -0
  400. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/utils/logging.py +0 -0
  401. {verifiers-0.2.0 → verifiers-0.2.1.dev2}/verifiers/v1/utils/memory.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: verifiers
3
- Version: 0.2.0
3
+ Version: 0.2.1.dev2
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
@@ -74,6 +74,11 @@ async def test_tool(run_v1, harness_runtime, tool_runtime, tmp_path):
74
74
  assert trace.errors == []
75
75
  assert trace.num_turns >= 2 # tool call + answer
76
76
  assert trace.reward == 1.0
77
+ # The interception server captured the advertised tools onto the trace (for tool-use SFT):
78
+ # the null harness offered the task's MCP tool as `echo_back`, schema included.
79
+ assert trace.tools is not None
80
+ (echo_tool,) = [t for t in trace.tools if t.name == "echo_back"]
81
+ assert "message" in echo_tool.parameters.get("properties", {})
77
82
 
78
83
 
79
84
  @pytest.mark.e2e
@@ -60,6 +60,7 @@ def test_wire_trace_round_trip():
60
60
  # carry node `parent` links for `num_branches` to survive.
61
61
  tr = vf.Trace[MyTask, vf.State](
62
62
  task=vf.TraceTask(type="MyTask", data=MyTask(idx=0, prompt="q", answer="a")),
63
+ tools=[vf.Tool(name="echo", description="", parameters={"type": "object"})],
63
64
  nodes=[
64
65
  MessageNode(parent=None, message=UserMessage(content="q"), sampled=False),
65
66
  MessageNode(parent=0, message=AssistantMessage(content="a1"), sampled=True),
@@ -80,6 +81,9 @@ def test_wire_trace_round_trip():
80
81
  assert rt.reward == 1.0 # property recomputed from `rewards`
81
82
  assert rt.stop_condition == "done"
82
83
  assert rt.info == {"build": "ok"}
84
+ assert (
85
+ rt.tools == tr.tools
86
+ ) # the advertised tools persist (tool-use SFT reads them)
83
87
  assert rt.task.data.model_extra == {
84
88
  "answer": "a"
85
89
  } # taskset extras preserved on WireTaskData
@@ -9,6 +9,8 @@ from collections.abc import Callable, Iterator
9
9
  from rich.console import Group
10
10
  from rich.live import Live
11
11
 
12
+ from verifiers.v1.utils.interrupt import cleaning_up
13
+
12
14
  try: # POSIX-only terminal control; absent on Windows, where key reading is skipped.
13
15
  import termios
14
16
  import tty
@@ -82,10 +84,17 @@ async def live_view(
82
84
  """Refresh `render()` every 0.25s until the block exits, then draw one final frame. When
83
85
  `on_key` is given, left/right arrow presses are dispatched to it (and redraw at once)."""
84
86
  with Live(render(), auto_refresh=False) as live:
87
+ stopping = False
85
88
 
86
89
  async def loop() -> None:
87
90
  while True:
88
- await asyncio.sleep(0.25)
91
+ try:
92
+ await asyncio.sleep(0.25)
93
+ except asyncio.CancelledError:
94
+ # Ctrl-C cancels every task at once; keep refreshing so the cleanup notice
95
+ # stays live through teardown, stopping only when live_view tears down.
96
+ if stopping or not cleaning_up():
97
+ raise
89
98
  live.update(render(), refresh=True)
90
99
 
91
100
  task = asyncio.create_task(loop())
@@ -93,6 +102,7 @@ async def live_view(
93
102
  try:
94
103
  yield
95
104
  finally:
105
+ stopping = True
96
106
  task.cancel()
97
107
  with contextlib.suppress(asyncio.CancelledError):
98
108
  await task
@@ -14,6 +14,7 @@ from rich.text import Text
14
14
 
15
15
  from verifiers.v1.cli.dashboard.base import live_view
16
16
  from verifiers.v1.cli.output import output_path
17
+ from verifiers.v1.utils.interrupt import cleaning_up
17
18
  from verifiers.v1.configs.eval import EvalConfig
18
19
  from verifiers.v1.rollout import Phase, Rollout
19
20
  from verifiers.v1.trace import Trace
@@ -110,6 +111,22 @@ def _aligned(rows: list[list[str]]) -> list[str]:
110
111
  ]
111
112
 
112
113
 
114
+ def _interrupt_footer() -> Group | None:
115
+ """The graceful-shutdown notice under the rollouts once Ctrl-C has begun teardown — the
116
+ on-screen echo of the warning (console logging is silenced in rich mode); a further Ctrl-C
117
+ is ignored while it shows. Sits beside the `--push` line, mirroring its placement."""
118
+ if not cleaning_up():
119
+ return None
120
+ return Group(
121
+ Rule(style="dim"),
122
+ Text(
123
+ "interrupted — cleaning up, tearing down containers/sandboxes. "
124
+ "please wait; a further ctrl-c is ignored.",
125
+ style="yellow",
126
+ ),
127
+ )
128
+
129
+
113
130
  def _warning(config: EvalConfig) -> Text | None:
114
131
  """A local-runtime caution for a code-running harness (none for the tool-less `null`),
115
132
  shown above the overview rather than as a row in it."""
@@ -561,11 +578,11 @@ def _render(
561
578
  now = time.time()
562
579
  warning = _warning(config)
563
580
  header = Group(warning, Text(""), Overview(config)) if warning else Overview(config)
564
- # The --push status line appears under the rollouts once the upload starts (None during the run
565
- # / when off). Measure the fixed top (header + progress + rule) and the footer so the rollout
566
- # rows fill what's left; page through them (timer / arrows) when they'd overflow (else rich
567
- # truncates).
568
- footer = _push_footer(push)
581
+ # The --push status line (and, on Ctrl-C, the cleanup notice) appear under the rollouts. Measure
582
+ # the fixed top (header + progress + rule) and the footer so the rollout rows fill what's left;
583
+ # page through them (timer / arrows) when they'd overflow (else rich truncates).
584
+ footers = [f for f in (_push_footer(push), _interrupt_footer()) if f is not None]
585
+ footer = Group(*footers) if footers else None
569
586
  top = Group(header, Progress(rollouts, start), Rule(style="dim"))
570
587
  reserved = len(_CONSOLE.render_lines(top))
571
588
  if footer is not None:
@@ -2,12 +2,12 @@
2
2
 
3
3
  import asyncio
4
4
  import logging
5
- import signal
6
5
  import sys
7
6
 
8
7
  from pydantic_config import cli
9
8
 
10
9
  import verifiers.v1 as vf
10
+ from verifiers.v1.utils.interrupt import install as install_interrupt
11
11
  from verifiers.v1.utils.logging import setup_logging
12
12
  from verifiers.v1.cli.output import output_path, write_config
13
13
  from verifiers.v1.cli.resolve import (
@@ -80,21 +80,30 @@ def main(argv: list[str] | None = None) -> None:
80
80
  logging.lastResort = None
81
81
  else:
82
82
  setup_logging(level, log_file=log_file, console=True)
83
- # Make SIGTERM behave like Ctrl-C (SIGINT) so a killed/timed-out eval still runs each
84
- # rollout's `finally` (tears down containers/sandboxes) and any worker pool it spawned.
85
- signal.signal(signal.SIGTERM, lambda *_: (_ for _ in ()).throw(KeyboardInterrupt()))
83
+ # First Ctrl-C / SIGTERM warns and raises KeyboardInterrupt so a killed/timed-out eval still
84
+ # runs each rollout's `finally` (tears down containers/sandboxes) and any worker pool it
85
+ # spawned; further signals during that cleanup are swallowed so an impatient second Ctrl-C
86
+ # can't orphan those resources.
87
+ install_interrupt()
86
88
 
87
- if config.is_legacy: # v0 backwards-compat: run the classic env, bridged to Traces
88
- from verifiers.v1.legacy import run_legacy_eval
89
+ try:
90
+ if (
91
+ config.is_legacy
92
+ ): # v0 backwards-compat: run the classic env, bridged to Traces
93
+ from verifiers.v1.legacy import run_legacy_eval
89
94
 
90
- traces = asyncio.run(run_legacy_eval(config))
91
- elif config.server: # opt-in: drive rollouts through the env-server worker pool
92
- from verifiers.v1.cli.eval.runner import run_eval_server
95
+ traces = asyncio.run(run_legacy_eval(config))
96
+ elif config.server: # opt-in: drive rollouts through the env-server worker pool
97
+ from verifiers.v1.cli.eval.runner import run_eval_server
93
98
 
94
- traces = asyncio.run(run_eval_server(config))
95
- else: # in-process (default), with or without the live dashboard
96
- env = vf.Environment(config)
97
- traces = asyncio.run(run_eval(env, config))
99
+ traces = asyncio.run(run_eval_server(config))
100
+ else: # in-process (default), with or without the live dashboard
101
+ env = vf.Environment(config)
102
+ traces = asyncio.run(run_eval(env, config))
103
+ except KeyboardInterrupt:
104
+ # Graceful cleanup has already run (each rollout's `finally`); partial results are on
105
+ # disk. Exit on the conventional Ctrl-C code without a traceback.
106
+ raise SystemExit(130)
98
107
  if config.push and not rich:
99
108
  from verifiers.v1.push import push_traces
100
109
 
@@ -96,6 +96,9 @@ def parse_message(raw: dict) -> Message:
96
96
 
97
97
 
98
98
  def parse_tools(raw: list[dict] | None) -> list[Tool] | None:
99
+ # `or None` so a tools array with no function entries (e.g. only `custom`/built-in
100
+ # tools) parses to None, not [] — the same contract as the anthropic/responses
101
+ # dialects, and what keeps an empty parse from clearing `Trace.tools`.
99
102
  if not raw:
100
103
  return None
101
104
  return [
@@ -107,7 +110,7 @@ def parse_tools(raw: list[dict] | None) -> list[Tool] | None:
107
110
  )
108
111
  for t in raw
109
112
  if t.get("type", "function") == "function"
110
- ]
113
+ ] or None
111
114
 
112
115
 
113
116
  # --- vf -> chat wire ----------------------------------------------------------
@@ -43,7 +43,7 @@ from verifiers.v1.errors import (
43
43
  UserError,
44
44
  )
45
45
  from verifiers.v1.trace import Trace
46
- from verifiers.v1.types import Messages
46
+ from verifiers.v1.types import Messages, Tool
47
47
 
48
48
  if TYPE_CHECKING:
49
49
  from verifiers.v1.mcp import Respond
@@ -259,7 +259,10 @@ class InterceptionServer:
259
259
  # dialect's typed view for building the trace; the renderer re-derives its own from `body`.
260
260
  # A user simulator extends both each turn (`dialect.extend` for wire, `prompt` for trace).
261
261
  prompt: Messages
262
- prompt, _ = dialect.parse_request(body)
262
+ # `tools` is recorded onto the trace only when a turn commits (below / in `_stream`):
263
+ # the request is ground truth for what the model saw, but a refused or failed request
264
+ # was never seen at all.
265
+ prompt, tools = dialect.parse_request(body)
263
266
  # Cache the opening so retries do not advance the simulator twice.
264
267
  if (
265
268
  session.user is not None
@@ -273,7 +276,7 @@ class InterceptionServer:
273
276
  # If the simulator ended at the open (its task's `@stop` now fires), the loop's
274
277
  # `refused()` below halts the harness before any model call — no special-casing here.
275
278
  if dialect.streaming(body):
276
- return await self._stream(request, session, dialect, body, prompt)
279
+ return await self._stream(request, session, dialect, body, prompt, tools)
277
280
  headers = request.headers.copy()
278
281
  # A user simulator turns one program request into a multi-turn exchange: after each
279
282
  # model turn the simulator's reply is injected as a user turn and the model is
@@ -356,6 +359,12 @@ class InterceptionServer:
356
359
  )
357
360
  turn.commit(response) # one node per new message;
358
361
  # branches fall out of walking the graph (see Trace.branches / verifiers.v1.graph)
362
+ if tools:
363
+ # Persist the advertised tools now that the model actually saw them (see
364
+ # `Trace.tools`). Only a tools-bearing turn updates it (truthy, so an empty
365
+ # parse or a trailing tool-less call never erases the schemas the recorded
366
+ # tool calls need).
367
+ session.trace.tools = tools
359
368
  # Hand back to the program when the model wants a tool (the program runs it) or
360
369
  # when there's no user simulator to keep the conversation going.
361
370
  if response.message.tool_calls or session.user is None:
@@ -389,6 +398,7 @@ class InterceptionServer:
389
398
  dialect: Dialect,
390
399
  body: dict,
391
400
  prompt: Messages,
401
+ tools: list[Tool] | None = None,
392
402
  ) -> web.StreamResponse:
393
403
  """A streamed (SSE) model turn: relay the provider's stream through to the program,
394
404
  incrementally assembling the response to record on the trace. Single-shot — a streamed
@@ -502,6 +512,8 @@ class InterceptionServer:
502
512
  if parser_error is not None:
503
513
  raise parser_error
504
514
  turn.commit(parser.finish())
515
+ if tools: # record only on commit, like the non-streaming path
516
+ session.trace.tools = tools
505
517
  logger.debug("intercept stream turn: id=%s", session.trace.id)
506
518
  finally:
507
519
  # Release the withheld events only now — after the commit — then close.
@@ -20,6 +20,7 @@ from typing import Any
20
20
 
21
21
  import zmq
22
22
  import zmq.asyncio
23
+ from pydantic import ValidationError
23
24
 
24
25
  from verifiers.v1.clients.config import ClientConfig, TrainClientConfig
25
26
  from verifiers.v1.serve.server import EnvServer
@@ -37,6 +38,7 @@ from verifiers.v1.types import (
37
38
  Response,
38
39
  SamplingConfig,
39
40
  SystemMessage,
41
+ Tool,
40
42
  ToolCall,
41
43
  ToolMessage,
42
44
  TurnTokens,
@@ -61,6 +63,22 @@ def _as_dict(obj: Any) -> Any:
61
63
  return obj
62
64
 
63
65
 
66
+ def _to_v1_tools(raw: Any) -> list[Tool] | None:
67
+ """Map v0 ``RolloutOutput.tool_defs`` onto ``Trace.tools``. The v0 and v1 ``Tool``
68
+ shapes are identical (name/description/parameters/strict), so this is a re-validation;
69
+ malformed entries are dropped rather than failing the whole trace mapping."""
70
+ defs: list[Tool] = []
71
+ for t in raw or []:
72
+ t = _as_dict(t)
73
+ if not isinstance(t, dict):
74
+ continue
75
+ try:
76
+ defs.append(Tool.model_validate(t))
77
+ except ValidationError:
78
+ continue
79
+ return defs or None
80
+
81
+
64
82
  def _text(content: Any) -> str:
65
83
  """Flatten a message ``content`` (str, or a list of content parts) to text."""
66
84
  if isinstance(content, str):
@@ -234,6 +252,7 @@ def rollout_output_to_trace(out: dict, task_idx: int) -> Trace:
234
252
  type="Task",
235
253
  data=_to_wire_task(task_idx, out.get("prompt"), out.get("answer")),
236
254
  ),
255
+ tools=_to_v1_tools(out.get("tool_defs")),
237
256
  rewards={"reward": float(out.get("reward") or 0.0)},
238
257
  metrics={k: float(v) for k, v in (out.get("metrics") or {}).items()},
239
258
  is_completed=bool(out.get("is_completed", True)),
@@ -56,6 +56,12 @@ def trace_to_sample(trace: Trace, rollout_number: int = 1) -> dict[str, Any]:
56
56
  "prompt": [],
57
57
  "completion": dump(branches[-1].messages) if branches else [],
58
58
  "answer": task.get("answer"),
59
+ # The tools advertised to the model (`Trace.tools`); keyed `tool_defs` because the
60
+ # v0 sample format already carries it there, so bridged and native rollouts render
61
+ # the same on the platform.
62
+ "tool_defs": [t.model_dump(mode="json", exclude_none=True) for t in trace.tools]
63
+ if trace.tools
64
+ else None,
59
65
  "reward": trace.reward,
60
66
  "timing": trace.timing.model_dump(mode="json", exclude_none=True),
61
67
  "is_completed": trace.is_completed,
@@ -24,6 +24,7 @@ from verifiers.v1.types import (
24
24
  AssistantMessage,
25
25
  Messages,
26
26
  StrictBaseModel,
27
+ Tool,
27
28
  ToolMessage,
28
29
  Usage,
29
30
  content_text,
@@ -200,6 +201,11 @@ class Trace(StrictBaseModel, Generic[DataT, StateT]):
200
201
  """The runtime's full config plus its provisioned resource ID."""
201
202
  nodes: list[MessageNode] = Field(default_factory=list)
202
203
  """The message graph; branches are derived views and storage stays linear in turns."""
204
+ tools: list[Tool] | None = None
205
+ """The tools advertised to the model, recorded when an intercepted turn commits (last
206
+ committed turn wins) — never from a refused/failed request the model never saw. The full
207
+ advertised list (not just tools called), so tool-use SFT can re-render the exact prompt;
208
+ a trace-level snapshot: mid-rollout changes collapse to the last set the model saw."""
203
209
 
204
210
  rewards: dict[str, float] = Field(default_factory=dict)
205
211
  """Weighted contributions from task rewards, group rewards, and judges."""
@@ -0,0 +1,33 @@
1
+ """Graceful-shutdown signal handling for the eval CLI: the first Ctrl-C/SIGTERM warns and
2
+ raises KeyboardInterrupt so asyncio unwinds each rollout's teardown `finally`; further signals
3
+ are swallowed so a second Ctrl-C can't orphan containers/sandboxes mid-cleanup."""
4
+
5
+ import logging
6
+ import signal
7
+
8
+ logger = logging.getLogger(__name__)
9
+
10
+ _cleaning_up = False
11
+
12
+
13
+ def cleaning_up() -> bool:
14
+ """Whether a shutdown signal has begun graceful cleanup (read by the dashboard)."""
15
+ return _cleaning_up
16
+
17
+
18
+ def install() -> None:
19
+ """Route SIGINT/SIGTERM through the graceful-shutdown handler."""
20
+
21
+ def handle(*_) -> None:
22
+ global _cleaning_up
23
+ first, _cleaning_up = not _cleaning_up, True
24
+ logger.warning(
25
+ "interrupted — cleaning up, please wait..."
26
+ if first
27
+ else "cleanup in progress — please wait (ctrl-c ignored)"
28
+ )
29
+ if first:
30
+ raise KeyboardInterrupt
31
+
32
+ signal.signal(signal.SIGINT, handle)
33
+ signal.signal(signal.SIGTERM, handle)
File without changes
File without changes
File without changes
File without changes