verifiers 0.2.2.dev23__tar.gz → 0.2.2.dev25__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 (419) hide show
  1. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/PKG-INFO +2 -2
  2. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/pyproject.toml +1 -1
  3. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/conftest.py +10 -8
  4. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/fixtures/pyproject.toml +1 -0
  5. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/test_configs.py +1 -1
  6. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/test_e2e.py +13 -13
  7. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/test_legacy.py +2 -2
  8. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/__init__.py +14 -33
  9. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/agent.py +34 -73
  10. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/dashboard/eval.py +19 -11
  11. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/dashboard/validate.py +1 -1
  12. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/debug.py +11 -3
  13. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/eval/main.py +1 -1
  14. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/eval/resume.py +1 -1
  15. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/eval/runner.py +2 -2
  16. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/init.py +1 -1
  17. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/output.py +1 -1
  18. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/replay.py +5 -2
  19. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/serve.py +2 -2
  20. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/validate.py +1 -1
  21. verifiers-0.2.2.dev25/verifiers/v1/configs/__init__.py +4 -0
  22. verifiers-0.2.2.dev25/verifiers/v1/configs/agent.py +77 -0
  23. verifiers-0.2.2.dev25/verifiers/v1/configs/cli/__init__.py +9 -0
  24. {verifiers-0.2.2.dev23/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/debug.py +2 -2
  25. {verifiers-0.2.2.dev23/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/env.py +1 -1
  26. {verifiers-0.2.2.dev23/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/eval.py +1 -1
  27. {verifiers-0.2.2.dev23/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/replay.py +1 -1
  28. {verifiers-0.2.2.dev23/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/serve.py +1 -1
  29. {verifiers-0.2.2.dev23/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/validate.py +1 -1
  30. verifiers-0.2.2.dev25/verifiers/v1/configs/env.py +156 -0
  31. verifiers-0.2.2.dev25/verifiers/v1/configs/harness.py +42 -0
  32. verifiers-0.2.2.dev25/verifiers/v1/configs/judge.py +73 -0
  33. verifiers-0.2.2.dev25/verifiers/v1/configs/retries.py +17 -0
  34. verifiers-0.2.2.dev25/verifiers/v1/configs/task.py +32 -0
  35. verifiers-0.2.2.dev25/verifiers/v1/configs/taskset.py +20 -0
  36. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/env.py +12 -155
  37. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/envs/agentic_judge/env.py +5 -5
  38. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/envs/single_agent/env.py +4 -2
  39. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/episode.py +7 -5
  40. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/gepa/config.py +2 -2
  41. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/gepa/reflection.py +2 -1
  42. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harness.py +5 -39
  43. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/bash/harness.py +2 -1
  44. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/claude_code/harness.py +2 -1
  45. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/codex/harness.py +2 -1
  46. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/kimi_code/harness.py +2 -1
  47. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/mini_swe_agent/harness.py +2 -1
  48. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/null/harness.py +2 -1
  49. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/pi/harness.py +2 -1
  50. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/pool/harness.py +2 -1
  51. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/rlm/harness.py +2 -1
  52. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/terminus_2/harness.py +2 -1
  53. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/judge.py +7 -66
  54. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/judges/reference.py +1 -1
  55. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/judges/rubric.py +2 -7
  56. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/loaders.py +8 -4
  57. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/mcp/launch.py +7 -7
  58. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/push.py +1 -1
  59. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/retries.py +1 -15
  60. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/rollout.py +7 -7
  61. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/__init__.py +2 -0
  62. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/base.py +43 -3
  63. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/docker/__init__.py +8 -35
  64. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/prime.py +57 -4
  65. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/serve/client.py +3 -4
  66. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/serve/pool.py +1 -1
  67. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/serve/server.py +1 -1
  68. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/serve/types.py +4 -6
  69. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/task.py +5 -29
  70. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/taskset.py +2 -16
  71. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/harbor/taskset.py +2 -1
  72. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/lean/taskset.py +4 -2
  73. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/trace.py +34 -21
  74. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/compile.py +8 -14
  75. verifiers-0.2.2.dev23/verifiers/v1/configs/__init__.py +0 -7
  76. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/.gitignore +0 -0
  77. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/LICENSE +0 -0
  78. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/README.md +0 -0
  79. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/__init__.py +0 -0
  80. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/conftest.py +0 -0
  81. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_browser_env.py +0 -0
  82. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_build_script.py +0 -0
  83. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_cli_agent_env.py +0 -0
  84. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_client_auth_errors.py +0 -0
  85. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_client_config.py +0 -0
  86. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_client_multimodal_types.py +0 -0
  87. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_composable_env.py +0 -0
  88. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_context_token_metrics.py +0 -0
  89. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_decorator_ranks.py +0 -0
  90. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_endpoint_registry.py +0 -0
  91. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_env_group.py +0 -0
  92. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_env_server.py +0 -0
  93. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_environment.py +0 -0
  94. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_environment_extra.py +0 -0
  95. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_error_chain.py +0 -0
  96. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_eval_display.py +0 -0
  97. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_eval_utils.py +0 -0
  98. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_gepa_cli.py +0 -0
  99. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_gepa_utils.py +0 -0
  100. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_gym_env.py +0 -0
  101. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_harbor_env_mcp.py +0 -0
  102. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_imports.py +0 -0
  103. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_init_script.py +0 -0
  104. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_install_utils.py +0 -0
  105. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_interception_utils.py +0 -0
  106. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_logging.py +0 -0
  107. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_math_rubric.py +0 -0
  108. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_maybe_think_parser.py +0 -0
  109. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_message_utils.py +0 -0
  110. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_message_utils_multimodal.py +0 -0
  111. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_multiturn_env.py +0 -0
  112. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_nemorl_client.py +0 -0
  113. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_openai_chat_completions_token_client.py +0 -0
  114. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_openai_responses_client.py +0 -0
  115. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_opencode_rlm_env.py +0 -0
  116. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_openenv_client.py +0 -0
  117. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_parser.py +0 -0
  118. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_path_utils.py +0 -0
  119. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_per_turn_timing.py +0 -0
  120. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_pricing_utils.py +0 -0
  121. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_prime_plugin.py +0 -0
  122. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_renderer_client.py +0 -0
  123. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_renderer_e2e.py +0 -0
  124. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_rlm_composable_env.py +0 -0
  125. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_rubric.py +0 -0
  126. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_rubric_group.py +0 -0
  127. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_sandbox_debug_env.py +0 -0
  128. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_sandbox_env.py +0 -0
  129. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_sandbox_mixin.py +0 -0
  130. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_save_utils.py +0 -0
  131. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_setup_script.py +0 -0
  132. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_singleturn_env.py +0 -0
  133. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_stateful_tool_env.py +0 -0
  134. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_think_parser.py +0 -0
  135. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_tool_env.py +0 -0
  136. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_tool_utils.py +0 -0
  137. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_trajectory_processing.py +0 -0
  138. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_tui_info_formatting.py +0 -0
  139. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_types.py +0 -0
  140. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/test_xml_parser.py +0 -0
  141. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  142. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/fixtures/duet_v1.py +0 -0
  143. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  144. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  145. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_multi_v0.py +0 -0
  146. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  147. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  148. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_v0.py +0 -0
  149. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_v1.py +0 -0
  150. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  151. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/test_color_codeword_tasks.py +0 -0
  152. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/test_envs.py +0 -0
  153. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/test_graph.py +0 -0
  154. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/test_judges.py +0 -0
  155. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/test_scoring.py +0 -0
  156. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/test_taskset.py +0 -0
  157. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/tests/v1/test_trace.py +0 -0
  158. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/__init__.py +0 -0
  159. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/cli/__init__.py +0 -0
  160. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/cli/commands/__init__.py +0 -0
  161. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/cli/commands/build.py +0 -0
  162. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/cli/commands/eval.py +0 -0
  163. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/cli/commands/gepa.py +0 -0
  164. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/cli/commands/init.py +0 -0
  165. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/cli/commands/install.py +0 -0
  166. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/cli/commands/setup.py +0 -0
  167. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/cli/plugins/__init__.py +0 -0
  168. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/cli/plugins/prime.py +0 -0
  169. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/cli/tui.py +0 -0
  170. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/clients/__init__.py +0 -0
  171. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/clients/anthropic_messages_client.py +0 -0
  172. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/clients/client.py +0 -0
  173. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
  174. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/clients/openai_chat_completions_client.py +0 -0
  175. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
  176. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/clients/openai_completions_client.py +0 -0
  177. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/clients/openai_responses_client.py +0 -0
  178. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/clients/renderer_client.py +0 -0
  179. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/decorators.py +0 -0
  180. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/__init__.py +0 -0
  181. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/env_group.py +0 -0
  182. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/environment.py +0 -0
  183. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/README.md +0 -0
  184. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/__init__.py +0 -0
  185. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/cli_agent_env.py +0 -0
  186. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/README.md +0 -0
  187. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/__init__.py +0 -0
  188. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/_filter.py +0 -0
  189. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/composable_env.py +0 -0
  190. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/harness.py +0 -0
  191. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
  192. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  193. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
  194. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
  195. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
  196. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
  197. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
  198. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/task.py +0 -0
  199. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
  200. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  201. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  202. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  203. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
  204. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
  205. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  206. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
  207. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  208. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  209. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
  210. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  211. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  212. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  213. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  214. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  215. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  216. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  217. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  218. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  219. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  220. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  221. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  222. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  223. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  224. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  225. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  226. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  227. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  228. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  229. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  230. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  231. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  232. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  233. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/gym_env.py +0 -0
  234. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
  235. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/harbor_env/env.py +0 -0
  236. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
  237. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/mcp_env.py +0 -0
  238. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/opencode_env.py +0 -0
  239. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
  240. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
  241. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
  242. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/utils/__init__.py +0 -0
  243. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/utils/file_locks.py +0 -0
  244. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
  245. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/README.md +0 -0
  246. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/__init__.py +0 -0
  247. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/README.md +0 -0
  248. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
  249. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
  250. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
  251. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
  252. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  253. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  254. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/openenv_env.py +0 -0
  255. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
  256. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/textarena_env.py +0 -0
  257. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/multiturn_env.py +0 -0
  258. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/python_env.py +0 -0
  259. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/sandbox_env.py +0 -0
  260. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/singleturn_env.py +0 -0
  261. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/stateful_tool_env.py +0 -0
  262. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/envs/tool_env.py +0 -0
  263. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/errors.py +0 -0
  264. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/gepa/__init__.py +0 -0
  265. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/gepa/adapter.py +0 -0
  266. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/gepa/config.py +0 -0
  267. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/gepa/display.py +0 -0
  268. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/gepa/gepa_utils.py +0 -0
  269. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/parsers/__init__.py +0 -0
  270. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/parsers/maybe_think_parser.py +0 -0
  271. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/parsers/parser.py +0 -0
  272. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/parsers/think_parser.py +0 -0
  273. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/parsers/xml_parser.py +0 -0
  274. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/rubrics/__init__.py +0 -0
  275. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
  276. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/rubrics/judge_rubric.py +0 -0
  277. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/rubrics/math_rubric.py +0 -0
  278. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/rubrics/rubric.py +0 -0
  279. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/rubrics/rubric_group.py +0 -0
  280. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/scripts/__init__.py +0 -0
  281. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/scripts/build.py +0 -0
  282. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/scripts/eval.py +0 -0
  283. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/scripts/gepa.py +0 -0
  284. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/scripts/init.py +0 -0
  285. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/scripts/install.py +0 -0
  286. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/scripts/setup.py +0 -0
  287. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/scripts/tui.py +0 -0
  288. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/serve/__init__.py +0 -0
  289. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/serve/client/env_client.py +0 -0
  290. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/serve/client/zmq_env_client.py +0 -0
  291. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/serve/server/__init__.py +0 -0
  292. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/serve/server/env_router.py +0 -0
  293. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/serve/server/env_server.py +0 -0
  294. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/serve/server/env_worker.py +0 -0
  295. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/serve/server/zmq_env_server.py +0 -0
  296. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/serve/types.py +0 -0
  297. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/types.py +0 -0
  298. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/__init__.py +0 -0
  299. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/async_utils.py +0 -0
  300. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/client_utils.py +0 -0
  301. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/config_utils.py +0 -0
  302. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/data_utils.py +0 -0
  303. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/display_utils.py +0 -0
  304. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/env_config_utils.py +0 -0
  305. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/env_utils.py +0 -0
  306. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/error_utils.py +0 -0
  307. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/eval_display.py +0 -0
  308. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/eval_utils.py +0 -0
  309. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/heartbeat.py +0 -0
  310. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/import_utils.py +0 -0
  311. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/install_utils.py +0 -0
  312. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/interception_utils.py +0 -0
  313. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/logging_utils.py +0 -0
  314. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/message_utils.py +0 -0
  315. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/metric_utils.py +0 -0
  316. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/path_utils.py +0 -0
  317. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/pricing_utils.py +0 -0
  318. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/process_utils.py +0 -0
  319. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/response_utils.py +0 -0
  320. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/save_utils.py +0 -0
  321. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/serve_utils.py +0 -0
  322. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/thread_utils.py +0 -0
  323. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/threaded_sandbox_client.py +0 -0
  324. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/tool_utils.py +0 -0
  325. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/usage_utils.py +0 -0
  326. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/utils/version_utils.py +0 -0
  327. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/acp/__init__.py +0 -0
  328. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/acp/_runner.py +0 -0
  329. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/__init__.py +0 -0
  330. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  331. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/dashboard/base.py +0 -0
  332. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/dashboard/replay.py +0 -0
  333. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/eval/__init__.py +0 -0
  334. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/gepa.py +0 -0
  335. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/cli/resolve.py +0 -0
  336. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/clients/__init__.py +0 -0
  337. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/clients/client.py +0 -0
  338. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/clients/config.py +0 -0
  339. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/clients/eval.py +0 -0
  340. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/clients/train.py +0 -0
  341. {verifiers-0.2.2.dev23/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/init.py +0 -0
  342. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/decorators.py +0 -0
  343. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/dialects/__init__.py +0 -0
  344. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/dialects/anthropic.py +0 -0
  345. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/dialects/base.py +0 -0
  346. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/dialects/chat.py +0 -0
  347. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/dialects/responses.py +0 -0
  348. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/envs/__init__.py +0 -0
  349. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  350. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  351. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/envs/best_of_n/env.py +0 -0
  352. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  353. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  354. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/envs/user_sim/env.py +0 -0
  355. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/errors.py +0 -0
  356. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/gepa/__init__.py +0 -0
  357. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/gepa/adapter.py +0 -0
  358. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/gepa/dataset.py +0 -0
  359. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/gepa/runner.py +0 -0
  360. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/graph.py +0 -0
  361. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/__init__.py +0 -0
  362. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  363. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/bash/program.py +0 -0
  364. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  365. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  366. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  367. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  368. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  369. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/null/__init__.py +0 -0
  370. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/null/program.py +0 -0
  371. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  372. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/pool/__init__.py +0 -0
  373. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  374. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  375. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  376. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/interception/__init__.py +0 -0
  377. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/interception/base.py +0 -0
  378. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/interception/pool.py +0 -0
  379. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/interception/server.py +0 -0
  380. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  381. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/interception/tunnel/base.py +0 -0
  382. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/interception/tunnel/custom.py +0 -0
  383. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/interception/tunnel/prime.py +0 -0
  384. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/judges/__init__.py +0 -0
  385. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/judges/reference.txt +0 -0
  386. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/judges/rubric.txt +0 -0
  387. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/legacy.py +0 -0
  388. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/mcp/__init__.py +0 -0
  389. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/mcp/server.py +0 -0
  390. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/mcp/toolset.py +0 -0
  391. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/docker/egress.py +0 -0
  392. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/limiters.py +0 -0
  393. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/modal.py +0 -0
  394. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/subprocess.py +0 -0
  395. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/scoring.py +0 -0
  396. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/serve/__init__.py +0 -0
  397. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/session.py +0 -0
  398. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/state.py +0 -0
  399. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/__init__.py +0 -0
  400. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  401. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  402. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  403. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  404. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  405. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  406. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  407. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/types.py +0 -0
  408. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/__init__.py +0 -0
  409. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/aio.py +0 -0
  410. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/format.py +0 -0
  411. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/generic.py +0 -0
  412. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/git.py +0 -0
  413. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/image.py +0 -0
  414. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/install.py +0 -0
  415. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/interrupt.py +0 -0
  416. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/logging.py +0 -0
  417. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/memory.py +0 -0
  418. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/sampling.py +0 -0
  419. {verifiers-0.2.2.dev23 → verifiers-0.2.2.dev25}/verifiers/v1/utils/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: verifiers
3
- Version: 0.2.2.dev23
3
+ Version: 0.2.2.dev25
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
@@ -35,7 +35,7 @@ Requires-Dist: numpy>=2.1.0
35
35
  Requires-Dist: openai-agents>=0.8.2
36
36
  Requires-Dist: openai>=2.9.0
37
37
  Requires-Dist: prime-pydantic-config[toml]>=0.4.2
38
- Requires-Dist: prime-sandboxes>=0.2.31
38
+ Requires-Dist: prime-sandboxes>=0.2.33
39
39
  Requires-Dist: prime-tunnel>=0.1.8
40
40
  Requires-Dist: pydantic>=2.12.3
41
41
  Requires-Dist: pyzmq>=27.1.0
@@ -35,7 +35,7 @@ dependencies = [
35
35
  "openai>=2.9.0",
36
36
  "openai-agents>=0.8.2",
37
37
  "prime-tunnel>=0.1.8",
38
- "prime-sandboxes>=0.2.31",
38
+ "prime-sandboxes>=0.2.33",
39
39
  "pydantic>=2.12.3",
40
40
  "requests",
41
41
  "rich>=11.0.0",
@@ -37,7 +37,7 @@ from pathlib import Path
37
37
  import pytest
38
38
 
39
39
  import verifiers.v1 as vf
40
- from verifiers.v1.configs.eval import EvalConfig
40
+ from verifiers.v1.configs.cli.eval import EvalConfig
41
41
  from verifiers.v1.loaders import load_environment
42
42
  from verifiers.v1.cli.eval.runner import run_eval
43
43
  from verifiers.v1.trace import Trace
@@ -123,16 +123,16 @@ def _eval_config(
123
123
  max_turns: int | None = 4,
124
124
  rollout_timeout: float = 180,
125
125
  taskset_overrides: dict | None = None,
126
- harness_overrides: dict | None = None,
126
+ runtime: dict | None = None,
127
127
  env: dict | None = None,
128
128
  pool: dict | None = None,
129
129
  model: str | None = None,
130
130
  reasoning_effort: str | None = None,
131
131
  ) -> EvalConfig:
132
132
  """Build the smallest `EvalConfig` that still exercises the path, shared by the in-process
133
- (`run_v1`) and env-server (`run_v1_server`) fixtures. `taskset_overrides` / `harness_overrides`
134
- are merged onto the `{id: ...}` config (placement, runtime, etc.); `model` overrides the default
135
- text model (e.g. a VLM for an image task).
133
+ (`run_v1`) and env-server (`run_v1_server`) fixtures. `taskset_overrides` merges onto the
134
+ `{id: ...}` config; `runtime` places the `agent` seat's harness (an agent field, not a
135
+ harness one); `model` overrides the default text model (e.g. a VLM for an image task).
136
136
 
137
137
  `temperature=0` (greedy) makes the run reproducible; `max_tokens` is generous headroom,
138
138
  not a target — these trivial tasks finish in a few hundred tokens, so capping tighter only
@@ -145,9 +145,11 @@ def _eval_config(
145
145
  env_cfg = dict(env or {})
146
146
  _configure_prime_runtimes(taskset_cfg)
147
147
  if harness:
148
- harness_cfg = {"id": harness, **(harness_overrides or {})}
149
- _configure_prime_runtimes(harness_cfg)
150
- env_cfg.setdefault("agent", {})["harness"] = harness_cfg
148
+ env_cfg.setdefault("agent", {})["harness"] = {"id": harness}
149
+ if runtime:
150
+ runtime_cfg = dict(runtime)
151
+ _configure_prime_runtimes(runtime_cfg)
152
+ env_cfg.setdefault("agent", {})["runtime"] = runtime_cfg
151
153
  # Per-run caps live on the seats: resolve the env's declared roles and cap
152
154
  # each one (a test's own seat dict wins over the shared defaults).
153
155
  config_cls = vf.env_config_type(taskset, env_cfg.get("id", ""))
@@ -15,6 +15,7 @@ build-backend = "hatchling.build"
15
15
  [tool.hatch.build]
16
16
  include = [
17
17
  "counter_tool_v1.py",
18
+ "echo_acp_resume_v1.py",
18
19
  "echo_tool_v1.py",
19
20
  "tool_response_image_v1.py",
20
21
  "pyproject.toml",
@@ -11,7 +11,7 @@ from pathlib import Path
11
11
 
12
12
  import pytest
13
13
 
14
- from verifiers.v1.configs.eval import EvalConfig
14
+ from verifiers.v1.configs.cli.eval import EvalConfig
15
15
 
16
16
  CONFIGS = sorted(
17
17
  p
@@ -100,7 +100,7 @@ async def test_single_turn(run_v1, harness, harness_runtime, tmp_path):
100
100
  (trace,) = await run_v1(
101
101
  "echo-v1",
102
102
  harness=harness,
103
- harness_overrides={"runtime": {"type": harness_runtime}},
103
+ runtime={"type": harness_runtime},
104
104
  output_dir=tmp_path,
105
105
  max_turns=2,
106
106
  )
@@ -109,7 +109,7 @@ async def test_single_turn(run_v1, harness, harness_runtime, tmp_path):
109
109
  assert trace.stop_condition == "agent_completed"
110
110
  assert trace.reward == 1.0
111
111
  # The seat's resolved identity rides the trace (policy metadata for trainers).
112
- assert trace.agent is not None and trace.agent.sampling.temperature == 0
112
+ assert trace.agent is not None and trace.agent.config.sampling.temperature == 0
113
113
  # Every sampled turn has one per-call record, linked to its assistant node.
114
114
  sampled = [i for i, n in enumerate(trace.nodes) if n.sampled]
115
115
  assert [c.node for c in trace.calls if c.error is None] == sampled
@@ -130,7 +130,7 @@ async def test_user(run_v1, harness_runtime, tmp_path):
130
130
  (trace,) = await run_v1(
131
131
  "echo-user-sim-v1",
132
132
  harness="null",
133
- harness_overrides={"runtime": {"type": harness_runtime}},
133
+ runtime={"type": harness_runtime},
134
134
  output_dir=tmp_path,
135
135
  max_turns=6,
136
136
  )
@@ -189,7 +189,7 @@ async def test_acp_resume_with_tool(run_v1, harness, harness_runtime, tmp_path):
189
189
  (trace,) = await run_v1(
190
190
  "echo-acp-resume-v1",
191
191
  harness=harness,
192
- harness_overrides={"runtime": {"type": harness_runtime}},
192
+ runtime={"type": harness_runtime},
193
193
  output_dir=tmp_path,
194
194
  max_turns=8,
195
195
  max_tokens=8192,
@@ -219,7 +219,7 @@ async def test_tool(run_v1, harness_runtime, tool_runtime, tmp_path):
219
219
  (trace,) = await run_v1(
220
220
  "echo-tool-v1",
221
221
  harness="null",
222
- harness_overrides={"runtime": {"type": harness_runtime}},
222
+ runtime={"type": harness_runtime},
223
223
  output_dir=tmp_path,
224
224
  max_turns=6,
225
225
  taskset_overrides={"task": {"tools": tool_runtime}},
@@ -246,7 +246,7 @@ async def test_tool_state(run_v1, harness_runtime, tool_runtime, tmp_path):
246
246
  (trace,) = await run_v1(
247
247
  "counter-tool-v1",
248
248
  harness="null",
249
- harness_overrides={"runtime": {"type": harness_runtime}},
249
+ runtime={"type": harness_runtime},
250
250
  output_dir=tmp_path,
251
251
  max_turns=8,
252
252
  taskset_overrides={"task": {"tools": tool_runtime}},
@@ -267,7 +267,7 @@ async def test_shared_tool_isolation(
267
267
  traces = await run_v1_server(
268
268
  "scratchpad-v1",
269
269
  harness="null",
270
- harness_overrides={"runtime": {"type": harness_runtime}},
270
+ runtime={"type": harness_runtime},
271
271
  output_dir=tmp_path,
272
272
  num_tasks=2,
273
273
  n=1,
@@ -287,7 +287,7 @@ async def test_tool_response_image(run_v1, tmp_path):
287
287
  (trace,) = await run_v1(
288
288
  "tool-response-image-v1",
289
289
  harness="null",
290
- harness_overrides={"runtime": {"type": "subprocess"}},
290
+ runtime={"type": "subprocess"},
291
291
  model="openai/gpt-5.6-luna",
292
292
  reasoning_effort="none",
293
293
  output_dir=tmp_path,
@@ -314,7 +314,7 @@ async def test_rubric_judge(run_v1, tmp_path):
314
314
  (trace,) = await run_v1(
315
315
  "echo-v1",
316
316
  harness="null",
317
- harness_overrides={"runtime": {"type": "subprocess"}},
317
+ runtime={"type": "subprocess"},
318
318
  output_dir=tmp_path,
319
319
  taskset_overrides={"task": {"judges": [{"id": "rubric", "path": str(rubric)}]}},
320
320
  max_turns=2,
@@ -332,7 +332,7 @@ async def test_agentic(run_v1, harness, harness_runtime, tmp_path):
332
332
  (trace,) = await run_v1(
333
333
  "echo-agentic-v1",
334
334
  harness=harness,
335
- harness_overrides={"runtime": {"type": harness_runtime}},
335
+ runtime={"type": harness_runtime},
336
336
  output_dir=tmp_path,
337
337
  max_turns=10,
338
338
  )
@@ -406,7 +406,7 @@ async def test_env_id_agentic_judge(run_v1, tmp_path):
406
406
  # The judge reads the transcript and reasons before it writes the
407
407
  # verdict file; the shared 2048-token run cap truncates it mid-audit.
408
408
  "judge": {
409
- "harness": {"runtime": {"type": "docker"}},
409
+ "runtime": {"type": "docker"},
410
410
  "max_output_tokens": 8192,
411
411
  },
412
412
  },
@@ -551,13 +551,13 @@ async def test_replay_round_trip(run_v1, tmp_path):
551
551
 
552
552
  from verifiers.v1.cli.output import CONFIG_FILE
553
553
  from verifiers.v1.cli.replay import run_replay
554
- from verifiers.v1.configs.replay import ReplayConfig
554
+ from verifiers.v1.configs.cli.replay import ReplayConfig
555
555
 
556
556
  run_dir = tmp_path / "run"
557
557
  (source,) = await run_v1(
558
558
  "reverse-text-v1",
559
559
  harness="null",
560
- harness_overrides={"runtime": {"type": "subprocess"}},
560
+ runtime={"type": "subprocess"},
561
561
  output_dir=run_dir,
562
562
  max_turns=2,
563
563
  )
@@ -22,7 +22,7 @@ async def test_v0_single_turn_matches_v1_shape(run_v0, run_v1, tmp_path):
22
22
  (v0,) = await run_v0("echo-v0", output_dir=tmp_path / "v0")
23
23
  (v1,) = await run_v1(
24
24
  "echo-v1",
25
- harness_overrides={"runtime": {"type": "subprocess"}},
25
+ runtime={"type": "subprocess"},
26
26
  output_dir=tmp_path / "v1",
27
27
  max_turns=2,
28
28
  )
@@ -36,7 +36,7 @@ async def test_v0_multi_turn_matches_v1_shape(run_v0, run_v1, tmp_path):
36
36
  (v0,) = await run_v0("echo-multi-v0", output_dir=tmp_path / "v0")
37
37
  (v1,) = await run_v1(
38
38
  "echo-v1",
39
- harness_overrides={"runtime": {"type": "subprocess"}},
39
+ runtime={"type": "subprocess"},
40
40
  output_dir=tmp_path / "v1",
41
41
  max_turns=2,
42
42
  )
@@ -13,25 +13,16 @@ from verifiers.v1.clients import (
13
13
  resolve_client,
14
14
  )
15
15
  from verifiers.v1.decorators import metric, reward, stop, tool
16
- from verifiers.v1.agent import (
17
- Agent,
18
- AgentConfig,
19
- Agents,
20
- Interaction,
21
- Segment,
22
- make_agent,
23
- )
24
- from verifiers.v1.configs.env import (
16
+ from verifiers.v1.configs.agent import AgentConfig
17
+ from verifiers.v1.agent import Agent, Agents, Interaction, Segment, make_agent
18
+ from verifiers.v1.configs.cli.env import (
25
19
  ElasticPoolConfig,
26
20
  EnvServerConfig,
27
21
  StaticPoolConfig,
28
22
  pool_serve_kwargs,
29
23
  )
30
- from verifiers.v1.env import (
31
- EnvConfig,
32
- Env,
33
- default_agent_harness,
34
- )
24
+ from verifiers.v1.configs.env import EnvConfig, default_agent_harness
25
+ from verifiers.v1.env import Env
35
26
  from verifiers.v1.envs.single_agent import SingleAgentEnv, SingleAgentEnvConfig
36
27
  from verifiers.v1.errors import (
37
28
  EnvError,
@@ -44,15 +35,10 @@ from verifiers.v1.errors import (
44
35
  ToolsetError,
45
36
  TunnelError,
46
37
  )
47
- from verifiers.v1.harness import Harness, HarnessConfig
48
- from verifiers.v1.judge import (
49
- Judge,
50
- JudgeConfig,
51
- JudgeResponse,
52
- Judges,
53
- JudgeSamplingConfig,
54
- JudgeView,
55
- )
38
+ from verifiers.v1.configs.harness import HarnessConfig
39
+ from verifiers.v1.harness import Harness
40
+ from verifiers.v1.configs.judge import JudgeConfig, JudgeSamplingConfig, Judges
41
+ from verifiers.v1.judge import Judge, JudgeResponse, JudgeView
56
42
  from verifiers.v1.judges import (
57
43
  ReferenceJudge,
58
44
  ReferenceJudgeConfig,
@@ -86,7 +72,7 @@ from verifiers.v1.scoring import (
86
72
  read_answer_file_or_last_reply as read_answer_file_or_last_reply,
87
73
  verify_boxed_math_answer as verify_boxed_math_answer,
88
74
  )
89
- from verifiers.v1.retries import RetryConfig
75
+ from verifiers.v1.configs.retries import RetryConfig
90
76
  from verifiers.v1.utils.git import (
91
77
  PATCH_CAP_BYTES as PATCH_CAP_BYTES,
92
78
  capture_patch as capture_patch,
@@ -102,15 +88,10 @@ from verifiers.v1.runtimes import (
102
88
  SubprocessConfig,
103
89
  )
104
90
  from verifiers.v1.state import State, StateT
105
- from verifiers.v1.task import (
106
- Task,
107
- TaskConfig,
108
- TaskData,
109
- TaskResources,
110
- TaskTimeout,
111
- WireTaskData,
112
- )
113
- from verifiers.v1.taskset import Taskset, TasksetConfig
91
+ from verifiers.v1.configs.task import TaskConfig
92
+ from verifiers.v1.task import Task, TaskData, TaskResources, TaskTimeout, WireTaskData
93
+ from verifiers.v1.configs.taskset import TasksetConfig
94
+ from verifiers.v1.taskset import Taskset
114
95
  from verifiers.v1.mcp import (
115
96
  Toolset,
116
97
  SharedToolsetConfig,
@@ -14,23 +14,21 @@ from contextlib import asynccontextmanager, nullcontext
14
14
  from dataclasses import dataclass
15
15
  from typing import AsyncIterator
16
16
 
17
- from pydantic import SerializeAsAny, model_validator
18
- from pydantic_config import BaseConfig
19
17
 
18
+ from verifiers.v1.configs.agent import AgentConfig, TimeoutConfig
20
19
  from verifiers.v1.clients import (
21
20
  Client,
22
- ClientConfig,
23
21
  EvalClientConfig,
24
22
  ModelContext,
25
23
  resolve_client,
26
24
  )
27
- from verifiers.v1.harness import Harness, HarnessConfig
25
+ from verifiers.v1.harness import Harness
28
26
  from verifiers.v1.interception import Interception, InterceptionServer
29
27
  from verifiers.v1.mcp import SharedToolServer
30
- from verifiers.v1.retries import RetryConfig, backoff, trace_should_retry
28
+ from verifiers.v1.retries import backoff, trace_should_retry
31
29
  from verifiers.v1.rollout import RolloutRun, _as_messages
32
30
  from verifiers.v1.runtimes import (
33
- DockerConfig,
31
+ NetworkPolicyConfig,
34
32
  Runtime,
35
33
  RuntimeConfig,
36
34
  SubprocessConfig,
@@ -44,7 +42,6 @@ from verifiers.v1.types import (
44
42
  AssistantMessage,
45
43
  Messages,
46
44
  Sampling,
47
- SamplingConfig,
48
45
  ToolMessage,
49
46
  UserMessage,
50
47
  )
@@ -54,57 +51,9 @@ from verifiers.v1.utils.compile import (
54
51
  validate_pairing,
55
52
  )
56
53
 
57
- logger = logging.getLogger(__name__)
58
-
54
+ __all__ = ["Agent", "AgentConfig", "Agents", "TimeoutConfig", "make_agent"]
59
55
 
60
- class TimeoutConfig(BaseConfig):
61
- """Per-agent wall-clock timeouts per rollout stage, in seconds (None = no
62
- limit); each stage falls back to the task's own `TaskTimeout` when unset. An
63
- interaction's rollout budget is cumulative across its active harness segments
64
- and pauses while the caller computes the next user turn."""
65
-
66
- setup: float | None = None # one shared budget: task setup + provisioning
67
- rollout: float | None = None
68
- finalize: float | None = None
69
- scoring: float | None = None
70
-
71
-
72
- class AgentConfig(BaseConfig):
73
- """One env agent: who plays it, and its per-run caps. It pins only what
74
- makes it a different actor; everything unpinned falls back — the model context
75
- to the run's own, the harness to the taskset's default."""
76
-
77
- harness: SerializeAsAny[HarnessConfig] | None = None
78
- """The agent's program + runtime policy (None = the taskset's default harness)."""
79
- model: str | None = None
80
- """Model id (None = the run's model, i.e. the policy under evaluation/training)."""
81
- client: ClientConfig | None = None
82
- """Endpoint override (None = the run's client)."""
83
- sampling: SamplingConfig | None = None
84
- """Sampling override (None = the run's sampling)."""
85
- timeout: TimeoutConfig = TimeoutConfig()
86
- retries: RetryConfig = RetryConfig()
87
- """Whole-run retries: rerun this agent's rollout while its trace ends with a
88
- retryable error (never into a borrowed box)."""
89
- max_turns: int | None = None
90
- """Max model turns per run (None = no limit). Framework-enforced (the
91
- interception server refuses turns past it), so it applies to any harness."""
92
- max_input_tokens: int | None = None
93
- max_output_tokens: int | None = None
94
- max_total_tokens: int | None = None
95
- """Token caps per run (None = no limit); framework-enforced between turns."""
96
-
97
- @model_validator(mode="before")
98
- @classmethod
99
- def _resolve_harness(cls, data):
100
- """Narrow a pinned `harness` to its concrete config type by `id` (absent
101
- stays None = the taskset's default). The lazy import keeps class-body
102
- `AgentConfig()` defaults constructible while this module initializes."""
103
- if isinstance(data, dict) and data.get("harness") is not None:
104
- from verifiers.v1.loaders import harness_config_type, narrow_plugin_field
105
-
106
- narrow_plugin_field(data, "harness", harness_config_type, "bash")
107
- return data
56
+ logger = logging.getLogger(__name__)
108
57
 
109
58
 
110
59
  def _check_borrowed_placement(
@@ -114,20 +63,26 @@ def _check_borrowed_placement(
114
63
  be honored. Reject requirements that cannot be applied to the running box; an
115
64
  image mismatch on a container only warns, since sharing its world is the point."""
116
65
  task_policy = "*" not in task.data.network_allow or bool(task.data.network_block)
117
- base_docker = base_config if isinstance(base_config, DockerConfig) else None
118
- if task_policy or (base_docker is not None and base_docker.network_isolated):
66
+ base_policy = base_config if isinstance(base_config, NetworkPolicyConfig) else None
67
+ if task_policy or (base_policy is not None and base_policy.network_restricted):
119
68
  config = runtime.config
120
- if not isinstance(config, DockerConfig):
69
+ if not isinstance(config, NetworkPolicyConfig):
121
70
  raise ValueError(
122
- f"task {task.data.idx!r} requires a Docker URL network policy, but "
123
- f"borrowed runtime {runtime.name!r} is not Docker-backed; use "
71
+ f"task {task.data.idx!r} requires a framework-aware network policy, "
72
+ f"but borrowed runtime {runtime.name!r} does not support one; use "
124
73
  "agent.provision(task)"
125
74
  )
126
- policy_base = (
127
- base_docker if base_docker is not None else DockerConfig(allow=["*"])
75
+ if base_policy is not None and type(config) is not type(base_policy):
76
+ raise ValueError(
77
+ f"the configured {base_policy.type} network policy cannot be applied "
78
+ f"to borrowed {config.type} runtime {runtime.name!r}; use "
79
+ "agent.provision(task)"
80
+ )
81
+ policy_base = base_policy or config.model_copy(
82
+ update={"allow": ["*"], "block": []}
128
83
  )
129
84
  expected = resolve_runtime_config(policy_base, task)
130
- assert isinstance(expected, DockerConfig)
85
+ assert isinstance(expected, NetworkPolicyConfig)
131
86
  # Do not inherit extra destinations from a box provisioned for another task.
132
87
  if set(config.allow) != set(expected.allow) or set(config.block) != set(
133
88
  expected.block
@@ -277,8 +232,8 @@ class Agent:
277
232
 
278
233
  Built from an `AgentConfig` alone; `client=`/`interception=` inject live
279
234
  resources to borrow — agents on one endpoint should share one `Client`, and a
280
- live `Interception`'s owner keeps its lifecycle. The harness config's
281
- `runtime` is a *policy*: each `run` provisions a fresh box from it, resolved
235
+ live `Interception`'s owner keeps its lifecycle. The config's `runtime` is a
236
+ *policy*: each `run` provisions a fresh box from it, resolved
282
237
  per task; `run(runtime=...)` places the run into an existing box instead
283
238
  (borrowed boxes are never started or torn down by the run)."""
284
239
 
@@ -296,21 +251,26 @@ class Agent:
296
251
  "AgentConfig.model is unset; an Agent needs a pinned model "
297
252
  "(inside an env the run's own model fills it in)"
298
253
  )
299
- harness_config = config.harness
300
- if harness_config is None:
301
- harness_config = harness_config_type("bash")(id="bash")
254
+ # Resolve the unpinned identity fields into the config: it is the agent's
255
+ # full identity — what stamps onto every trace (`AgentInfo.config`).
256
+ if config.harness is None:
257
+ config = config.model_copy(
258
+ update={"harness": harness_config_type("bash")(id="bash")}
259
+ )
260
+ if config.sampling is None:
261
+ config = config.model_copy(update={"sampling": Sampling()})
302
262
  self.config = config
303
- self.harness = load_harness(harness_config)
263
+ self.harness = load_harness(config.harness)
304
264
  self._owns_client = client is None
305
265
  if self._owns_client:
306
266
  client = resolve_client(config.client or EvalClientConfig())
307
267
  self.ctx = ModelContext(
308
268
  model=config.model,
309
269
  client=client,
310
- sampling=config.sampling if config.sampling is not None else Sampling(),
270
+ sampling=config.sampling,
311
271
  )
312
272
  self._closed = False
313
- self.runtime_config: RuntimeConfig = self.harness.config.runtime
273
+ self.runtime_config: RuntimeConfig = config.runtime
314
274
  self.interception = interception
315
275
  self.limits = RolloutLimits(
316
276
  max_turns=config.max_turns,
@@ -569,6 +529,7 @@ class Agent:
569
529
  else task.data.timeout.harness
570
530
  )
571
531
  return dict(
532
+ agent_config=self.config,
572
533
  harness=self.harness,
573
534
  ctx=self.ctx,
574
535
  runtime_config=runtime_config,
@@ -16,7 +16,7 @@ from verifiers.v1.cli.dashboard.base import live_view
16
16
  from verifiers.v1.cli.output import output_path
17
17
  from verifiers.v1.utils.install import env_name
18
18
  from verifiers.v1.utils.interrupt import cleaning_up
19
- from verifiers.v1.configs.eval import EvalConfig
19
+ from verifiers.v1.configs.cli.eval import EvalConfig
20
20
  from verifiers.v1.env import RunSlot
21
21
  from verifiers.v1.trace import Trace
22
22
  from verifiers.v1.types import Usage
@@ -73,7 +73,7 @@ _MARK = {
73
73
  def _seat_value(config: EvalConfig, read):
74
74
  """A cap as the overview shows it: the declared seats' shared value, the
75
75
  string 'per-seat' when they disagree (caps live on the seats)."""
76
- from verifiers.v1.env import _declared_agent_configs
76
+ from verifiers.v1.configs.env import _declared_agent_configs
77
77
 
78
78
  values = {read(spec) for spec in _declared_agent_configs(config.env).values()}
79
79
  return values.pop() if len(values) == 1 else "per-seat"
@@ -163,8 +163,9 @@ def _warning(config: EvalConfig) -> Text | None:
163
163
  from verifiers.v1.loaders import harness_class
164
164
 
165
165
  if any(
166
- h.runtime.type == "subprocess" and harness_class(h.id).EXECUTES_CODE
167
- for h in config.env.agent_harnesses().values()
166
+ getattr(config.env, role).runtime.type == "subprocess"
167
+ and harness_class(h.id).EXECUTES_CODE
168
+ for role, h in config.env.agent_harnesses().items()
168
169
  ):
169
170
  return Text(
170
171
  "warning Runs on the local system; local files and settings may affect this "
@@ -185,7 +186,7 @@ def overrides(
185
186
  `model_validate(config.toml)`, and that toml is dumped with `exclude_none` (every field), so
186
187
  `model_fields_set` would flag them all. `default` is the reference instance, threaded through
187
188
  recursion so a pinned nested default (`taskset.task.tools`) reads as
188
- unchanged. `skip` holds dotted paths (`harness.runtime.type`)."""
189
+ unchanged. `skip` holds dotted paths (`runtime.type`)."""
189
190
  segments: list[str] = []
190
191
  fields = type(config).model_fields
191
192
  for field in sorted(fields):
@@ -237,9 +238,11 @@ def Overview(config: EvalConfig) -> Table:
237
238
  env_label = f"{env_name(config.env.id)}+{env_label}"
238
239
  # One seat story when every seat resolves the same way (the common case); one
239
240
  # row per seat when they diverge (a judge on its own harness/runtime).
241
+ runtimes = {role: getattr(config.env, role).runtime.type for role in seats}
240
242
  stories = list(
241
243
  dict.fromkeys(
242
- f"{h.name} harness · {h.runtime.type} runtime" for h in seats.values()
244
+ f"{h.name} harness · {runtimes[role]} runtime"
245
+ for role, h in seats.items()
243
246
  )
244
247
  )
245
248
  if len(stories) == 1:
@@ -247,19 +250,23 @@ def Overview(config: EvalConfig) -> Table:
247
250
  else:
248
251
  grid.add_row("env", env_label)
249
252
  for role, h in seats.items():
250
- grid.add_row(f" {role}", f"{h.name} harness · {h.runtime.type} runtime")
253
+ grid.add_row(f" {role}", f"{h.name} harness · {runtimes[role]} runtime")
251
254
  model = f"{config.model} ({sampling})" if sampling else config.model
252
255
  grid.add_row("model", f"{model} via {config.client.base_url}")
253
256
  # Non-default knobs the user set, one row each when non-empty. `escape` the cell: an override
254
257
  # value (or our `[...]`/`{...}` delimiters) can carry Rich markup that would otherwise be
255
- # parsed as styling and dropped. `id` is in the `env` row; harness `runtime.type` too (hidden
256
- # here), but only for the harness — `taskset.task.tools.runtime.type` has no other display.
258
+ # parsed as styling and dropped. `id` is in the `env` row; the seat's `runtime.type` too
259
+ # (hidden here), but only for the seat — `taskset.task.tools.runtime.type` has no other display.
257
260
  if taskset_over := overrides(taskset, skip=frozenset({"id"})):
258
261
  grid.add_row("taskset", escape(" · ".join(taskset_over)))
259
262
  for role, h in seats.items():
260
- if harness_over := overrides(h, skip=frozenset({"id", "runtime.type"})):
263
+ if harness_over := overrides(h, skip=frozenset({"id"})):
261
264
  label = f"{role}.harness" if len(seats) > 1 else "harness"
262
265
  grid.add_row(label, escape(" · ".join(harness_over)))
266
+ runtime = getattr(config.env, role).runtime
267
+ if runtime_over := overrides(runtime, skip=frozenset({"type"})):
268
+ label = f"{role}.runtime" if len(seats) > 1 else "runtime"
269
+ grid.add_row(label, escape(" · ".join(runtime_over)))
263
270
  limits, timeouts = _aligned([_limits(config), _timeouts(config)])
264
271
  grid.add_row("limits", limits)
265
272
  grid.add_row("timeouts", timeouts)
@@ -753,7 +760,8 @@ def _render(
753
760
  now,
754
761
  "/".join(
755
762
  dict.fromkeys(
756
- h.runtime.type for h in config.env.agent_harnesses().values()
763
+ getattr(config.env, role).runtime.type
764
+ for role in config.env.agent_harnesses()
757
765
  )
758
766
  )
759
767
  or "subprocess",
@@ -13,7 +13,7 @@ from rich.table import Table
13
13
  from rich.text import Text
14
14
 
15
15
  from verifiers.v1.cli.dashboard.base import live_view
16
- from verifiers.v1.configs.validate import ValidateConfig
16
+ from verifiers.v1.configs.cli.validate import ValidateConfig
17
17
  from verifiers.v1.utils.format import format_time
18
18
 
19
19
  _STYLE = {
@@ -22,13 +22,13 @@ from verifiers.v1.cli.resolve import (
22
22
  references_config_file,
23
23
  with_positional_taskset,
24
24
  )
25
- from verifiers.v1.configs.debug import DebugConfig
25
+ from verifiers.v1.configs.cli.debug import DebugConfig
26
26
  from verifiers.v1.decorators import invoke
27
27
  from verifiers.v1.utils.compile import resolve_runtime_config
28
28
  from verifiers.v1.runtimes import ProgramResult, Runtime, make_runtime
29
29
  from verifiers.v1.state import state_cls
30
30
  from verifiers.v1.task import Task
31
- from verifiers.v1.trace import Error, Trace, TraceTask
31
+ from verifiers.v1.trace import AgentInfo, Error, Trace, TraceTask
32
32
  from verifiers.v1.utils.interrupt import install_interrupt
33
33
  from verifiers.v1.utils.logging import setup_logging
34
34
 
@@ -202,6 +202,14 @@ async def debug_task(task: Task, config: DebugConfig) -> tuple[Trace, bool]:
202
202
  trace = Trace(
203
203
  task=TraceTask(type=type(task).__name__, data=task.data),
204
204
  state=state_cls(type(task))(),
205
+ # No agent plays here (no model, no harness): the seat records the
206
+ # runtime policy, and the provisioned box lands on it below (id, resolved
207
+ # type, cache status).
208
+ agent=AgentInfo(
209
+ config=vf.AgentConfig(runtime=config.runtime),
210
+ name="debug",
211
+ trainable=False,
212
+ ),
205
213
  )
206
214
  debug = {
207
215
  "task": task_info(task),
@@ -214,7 +222,7 @@ async def debug_task(task: Task, config: DebugConfig) -> tuple[Trace, bool]:
214
222
  resolve_runtime_config(config.runtime, task),
215
223
  name=f"debug-{task.data.idx}-{uuid4().hex[:8]}",
216
224
  )
217
- trace.runtime = runtime.info
225
+ trace.agent.runtime = runtime.info
218
226
  setup_timeout = (
219
227
  config.timeout.setup
220
228
  if config.timeout.setup is not None
@@ -19,7 +19,7 @@ from verifiers.v1.cli.resolve import (
19
19
  )
20
20
  from verifiers.v1.cli.eval.resume import load_resume_config, split_resume
21
21
  from verifiers.v1.cli.eval.runner import run_eval
22
- from verifiers.v1.configs.eval import EvalConfig
22
+ from verifiers.v1.configs.cli.eval import EvalConfig
23
23
 
24
24
  logger = logging.getLogger(__name__)
25
25
 
@@ -22,7 +22,7 @@ from typing import TypeVar
22
22
  from pydantic_core import from_json
23
23
 
24
24
  from verifiers.v1.cli.output import CONFIG_FILE, TRACES_FILE, sniff_episode
25
- from verifiers.v1.configs.eval import EvalConfig
25
+ from verifiers.v1.configs.cli.eval import EvalConfig
26
26
  from verifiers.v1.episode import Episode, WireEpisode
27
27
  from verifiers.v1.trace import WireTrace
28
28