verifiers 0.2.2.dev24__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.dev24 → verifiers-0.2.2.dev25}/PKG-INFO +1 -1
  2. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/conftest.py +10 -8
  3. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/test_configs.py +1 -1
  4. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/test_e2e.py +13 -13
  5. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/test_legacy.py +2 -2
  6. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/__init__.py +14 -33
  7. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/agent.py +19 -64
  8. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/dashboard/eval.py +19 -11
  9. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/dashboard/validate.py +1 -1
  10. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/debug.py +11 -3
  11. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/eval/main.py +1 -1
  12. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/eval/resume.py +1 -1
  13. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/eval/runner.py +2 -2
  14. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/init.py +1 -1
  15. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/output.py +1 -1
  16. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/replay.py +5 -2
  17. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/serve.py +2 -2
  18. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/validate.py +1 -1
  19. verifiers-0.2.2.dev25/verifiers/v1/configs/__init__.py +4 -0
  20. verifiers-0.2.2.dev25/verifiers/v1/configs/agent.py +77 -0
  21. verifiers-0.2.2.dev25/verifiers/v1/configs/cli/__init__.py +9 -0
  22. {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/debug.py +2 -2
  23. {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/env.py +1 -1
  24. {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/eval.py +1 -1
  25. {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/replay.py +1 -1
  26. {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/serve.py +1 -1
  27. {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/validate.py +1 -1
  28. verifiers-0.2.2.dev25/verifiers/v1/configs/env.py +156 -0
  29. verifiers-0.2.2.dev25/verifiers/v1/configs/harness.py +42 -0
  30. verifiers-0.2.2.dev25/verifiers/v1/configs/judge.py +73 -0
  31. verifiers-0.2.2.dev25/verifiers/v1/configs/retries.py +17 -0
  32. verifiers-0.2.2.dev25/verifiers/v1/configs/task.py +32 -0
  33. verifiers-0.2.2.dev25/verifiers/v1/configs/taskset.py +20 -0
  34. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/env.py +12 -155
  35. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/envs/agentic_judge/env.py +5 -5
  36. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/envs/single_agent/env.py +4 -2
  37. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/episode.py +7 -5
  38. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/gepa/config.py +2 -2
  39. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/gepa/reflection.py +2 -1
  40. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harness.py +5 -39
  41. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/bash/harness.py +2 -1
  42. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/claude_code/harness.py +2 -1
  43. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/codex/harness.py +2 -1
  44. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/kimi_code/harness.py +2 -1
  45. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/mini_swe_agent/harness.py +2 -1
  46. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/null/harness.py +2 -1
  47. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/pi/harness.py +2 -1
  48. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/pool/harness.py +2 -1
  49. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/rlm/harness.py +2 -1
  50. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/terminus_2/harness.py +2 -1
  51. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/judge.py +7 -66
  52. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/judges/reference.py +1 -1
  53. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/judges/rubric.py +2 -7
  54. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/loaders.py +8 -4
  55. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/push.py +1 -1
  56. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/retries.py +1 -15
  57. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/rollout.py +7 -7
  58. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/serve/client.py +3 -4
  59. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/serve/pool.py +1 -1
  60. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/serve/server.py +1 -1
  61. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/serve/types.py +4 -6
  62. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/task.py +2 -26
  63. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/taskset.py +2 -16
  64. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/harbor/taskset.py +2 -1
  65. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/lean/taskset.py +4 -2
  66. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/trace.py +34 -21
  67. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/utils/compile.py +2 -2
  68. verifiers-0.2.2.dev24/verifiers/v1/configs/__init__.py +0 -7
  69. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/.gitignore +0 -0
  70. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/LICENSE +0 -0
  71. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/README.md +0 -0
  72. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/pyproject.toml +0 -0
  73. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/__init__.py +0 -0
  74. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/conftest.py +0 -0
  75. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_browser_env.py +0 -0
  76. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_build_script.py +0 -0
  77. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_cli_agent_env.py +0 -0
  78. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_client_auth_errors.py +0 -0
  79. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_client_config.py +0 -0
  80. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_client_multimodal_types.py +0 -0
  81. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_composable_env.py +0 -0
  82. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_context_token_metrics.py +0 -0
  83. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_decorator_ranks.py +0 -0
  84. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_endpoint_registry.py +0 -0
  85. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_env_group.py +0 -0
  86. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_env_server.py +0 -0
  87. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_environment.py +0 -0
  88. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_environment_extra.py +0 -0
  89. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_error_chain.py +0 -0
  90. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_eval_display.py +0 -0
  91. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_eval_utils.py +0 -0
  92. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_gepa_cli.py +0 -0
  93. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_gepa_utils.py +0 -0
  94. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_gym_env.py +0 -0
  95. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_harbor_env_mcp.py +0 -0
  96. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_imports.py +0 -0
  97. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_init_script.py +0 -0
  98. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_install_utils.py +0 -0
  99. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_interception_utils.py +0 -0
  100. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_logging.py +0 -0
  101. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_math_rubric.py +0 -0
  102. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_maybe_think_parser.py +0 -0
  103. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_message_utils.py +0 -0
  104. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_message_utils_multimodal.py +0 -0
  105. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_multiturn_env.py +0 -0
  106. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_nemorl_client.py +0 -0
  107. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_openai_chat_completions_token_client.py +0 -0
  108. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_openai_responses_client.py +0 -0
  109. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_opencode_rlm_env.py +0 -0
  110. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_openenv_client.py +0 -0
  111. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_parser.py +0 -0
  112. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_path_utils.py +0 -0
  113. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_per_turn_timing.py +0 -0
  114. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_pricing_utils.py +0 -0
  115. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_prime_plugin.py +0 -0
  116. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_renderer_client.py +0 -0
  117. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_renderer_e2e.py +0 -0
  118. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_rlm_composable_env.py +0 -0
  119. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_rubric.py +0 -0
  120. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_rubric_group.py +0 -0
  121. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_sandbox_debug_env.py +0 -0
  122. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_sandbox_env.py +0 -0
  123. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_sandbox_mixin.py +0 -0
  124. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_save_utils.py +0 -0
  125. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_setup_script.py +0 -0
  126. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_singleturn_env.py +0 -0
  127. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_stateful_tool_env.py +0 -0
  128. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_think_parser.py +0 -0
  129. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_tool_env.py +0 -0
  130. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_tool_utils.py +0 -0
  131. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_trajectory_processing.py +0 -0
  132. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_tui_info_formatting.py +0 -0
  133. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_types.py +0 -0
  134. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/test_xml_parser.py +0 -0
  135. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  136. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/fixtures/duet_v1.py +0 -0
  137. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  138. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  139. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_multi_v0.py +0 -0
  140. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  141. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  142. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_v0.py +0 -0
  143. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/fixtures/echo_v1.py +0 -0
  144. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/fixtures/pyproject.toml +0 -0
  145. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  146. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/test_color_codeword_tasks.py +0 -0
  147. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/test_envs.py +0 -0
  148. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/test_graph.py +0 -0
  149. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/test_judges.py +0 -0
  150. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/test_scoring.py +0 -0
  151. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/test_taskset.py +0 -0
  152. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/tests/v1/test_trace.py +0 -0
  153. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/__init__.py +0 -0
  154. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/cli/__init__.py +0 -0
  155. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/cli/commands/__init__.py +0 -0
  156. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/cli/commands/build.py +0 -0
  157. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/cli/commands/eval.py +0 -0
  158. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/cli/commands/gepa.py +0 -0
  159. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/cli/commands/init.py +0 -0
  160. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/cli/commands/install.py +0 -0
  161. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/cli/commands/setup.py +0 -0
  162. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/cli/plugins/__init__.py +0 -0
  163. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/cli/plugins/prime.py +0 -0
  164. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/cli/tui.py +0 -0
  165. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/clients/__init__.py +0 -0
  166. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/clients/anthropic_messages_client.py +0 -0
  167. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/clients/client.py +0 -0
  168. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
  169. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/clients/openai_chat_completions_client.py +0 -0
  170. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
  171. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/clients/openai_completions_client.py +0 -0
  172. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/clients/openai_responses_client.py +0 -0
  173. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/clients/renderer_client.py +0 -0
  174. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/decorators.py +0 -0
  175. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/__init__.py +0 -0
  176. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/env_group.py +0 -0
  177. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/environment.py +0 -0
  178. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/README.md +0 -0
  179. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/__init__.py +0 -0
  180. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/cli_agent_env.py +0 -0
  181. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/README.md +0 -0
  182. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/__init__.py +0 -0
  183. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/_filter.py +0 -0
  184. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/composable_env.py +0 -0
  185. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/harness.py +0 -0
  186. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
  187. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  188. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
  189. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
  190. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
  191. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
  192. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
  193. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/task.py +0 -0
  194. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
  195. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  196. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  197. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  198. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
  199. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
  200. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  201. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
  202. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  203. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  204. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
  205. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  206. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  207. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  208. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  209. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  210. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  211. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  212. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  213. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  214. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  215. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  216. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  217. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  218. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  219. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  220. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  221. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  222. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  223. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  224. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  225. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  226. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  227. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  228. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/gym_env.py +0 -0
  229. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
  230. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/harbor_env/env.py +0 -0
  231. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
  232. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/mcp_env.py +0 -0
  233. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/opencode_env.py +0 -0
  234. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
  235. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
  236. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
  237. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/utils/__init__.py +0 -0
  238. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/utils/file_locks.py +0 -0
  239. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
  240. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/README.md +0 -0
  241. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/__init__.py +0 -0
  242. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/README.md +0 -0
  243. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
  244. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
  245. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
  246. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
  247. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  248. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  249. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/openenv_env.py +0 -0
  250. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
  251. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/integrations/textarena_env.py +0 -0
  252. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/multiturn_env.py +0 -0
  253. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/python_env.py +0 -0
  254. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/sandbox_env.py +0 -0
  255. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/singleturn_env.py +0 -0
  256. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/stateful_tool_env.py +0 -0
  257. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/envs/tool_env.py +0 -0
  258. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/errors.py +0 -0
  259. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/gepa/__init__.py +0 -0
  260. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/gepa/adapter.py +0 -0
  261. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/gepa/config.py +0 -0
  262. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/gepa/display.py +0 -0
  263. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/gepa/gepa_utils.py +0 -0
  264. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/parsers/__init__.py +0 -0
  265. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/parsers/maybe_think_parser.py +0 -0
  266. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/parsers/parser.py +0 -0
  267. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/parsers/think_parser.py +0 -0
  268. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/parsers/xml_parser.py +0 -0
  269. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/rubrics/__init__.py +0 -0
  270. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
  271. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/rubrics/judge_rubric.py +0 -0
  272. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/rubrics/math_rubric.py +0 -0
  273. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/rubrics/rubric.py +0 -0
  274. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/rubrics/rubric_group.py +0 -0
  275. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/scripts/__init__.py +0 -0
  276. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/scripts/build.py +0 -0
  277. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/scripts/eval.py +0 -0
  278. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/scripts/gepa.py +0 -0
  279. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/scripts/init.py +0 -0
  280. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/scripts/install.py +0 -0
  281. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/scripts/setup.py +0 -0
  282. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/scripts/tui.py +0 -0
  283. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/serve/__init__.py +0 -0
  284. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/serve/client/env_client.py +0 -0
  285. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/serve/client/zmq_env_client.py +0 -0
  286. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/serve/server/__init__.py +0 -0
  287. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/serve/server/env_router.py +0 -0
  288. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/serve/server/env_server.py +0 -0
  289. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/serve/server/env_worker.py +0 -0
  290. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/serve/server/zmq_env_server.py +0 -0
  291. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/serve/types.py +0 -0
  292. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/types.py +0 -0
  293. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/__init__.py +0 -0
  294. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/async_utils.py +0 -0
  295. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/client_utils.py +0 -0
  296. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/config_utils.py +0 -0
  297. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/data_utils.py +0 -0
  298. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/display_utils.py +0 -0
  299. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/env_config_utils.py +0 -0
  300. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/env_utils.py +0 -0
  301. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/error_utils.py +0 -0
  302. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/eval_display.py +0 -0
  303. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/eval_utils.py +0 -0
  304. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/heartbeat.py +0 -0
  305. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/import_utils.py +0 -0
  306. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/install_utils.py +0 -0
  307. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/interception_utils.py +0 -0
  308. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/logging_utils.py +0 -0
  309. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/message_utils.py +0 -0
  310. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/metric_utils.py +0 -0
  311. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/path_utils.py +0 -0
  312. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/pricing_utils.py +0 -0
  313. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/process_utils.py +0 -0
  314. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/response_utils.py +0 -0
  315. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/save_utils.py +0 -0
  316. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/serve_utils.py +0 -0
  317. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/thread_utils.py +0 -0
  318. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/threaded_sandbox_client.py +0 -0
  319. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/tool_utils.py +0 -0
  320. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/usage_utils.py +0 -0
  321. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/utils/version_utils.py +0 -0
  322. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/acp/__init__.py +0 -0
  323. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/acp/_runner.py +0 -0
  324. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/__init__.py +0 -0
  325. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  326. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/dashboard/base.py +0 -0
  327. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/dashboard/replay.py +0 -0
  328. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/eval/__init__.py +0 -0
  329. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/gepa.py +0 -0
  330. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/cli/resolve.py +0 -0
  331. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/clients/__init__.py +0 -0
  332. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/clients/client.py +0 -0
  333. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/clients/config.py +0 -0
  334. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/clients/eval.py +0 -0
  335. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/clients/train.py +0 -0
  336. {verifiers-0.2.2.dev24/verifiers/v1/configs → verifiers-0.2.2.dev25/verifiers/v1/configs/cli}/init.py +0 -0
  337. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/decorators.py +0 -0
  338. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/dialects/__init__.py +0 -0
  339. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/dialects/anthropic.py +0 -0
  340. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/dialects/base.py +0 -0
  341. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/dialects/chat.py +0 -0
  342. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/dialects/responses.py +0 -0
  343. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/envs/__init__.py +0 -0
  344. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  345. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  346. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/envs/best_of_n/env.py +0 -0
  347. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  348. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  349. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/envs/user_sim/env.py +0 -0
  350. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/errors.py +0 -0
  351. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/gepa/__init__.py +0 -0
  352. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/gepa/adapter.py +0 -0
  353. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/gepa/dataset.py +0 -0
  354. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/gepa/runner.py +0 -0
  355. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/graph.py +0 -0
  356. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/__init__.py +0 -0
  357. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  358. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/bash/program.py +0 -0
  359. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  360. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  361. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  362. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  363. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  364. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/null/__init__.py +0 -0
  365. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/null/program.py +0 -0
  366. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  367. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/pool/__init__.py +0 -0
  368. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  369. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  370. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  371. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/interception/__init__.py +0 -0
  372. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/interception/base.py +0 -0
  373. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/interception/pool.py +0 -0
  374. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/interception/server.py +0 -0
  375. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  376. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/interception/tunnel/base.py +0 -0
  377. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/interception/tunnel/custom.py +0 -0
  378. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/interception/tunnel/prime.py +0 -0
  379. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/judges/__init__.py +0 -0
  380. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/judges/reference.txt +0 -0
  381. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/judges/rubric.txt +0 -0
  382. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/legacy.py +0 -0
  383. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/mcp/__init__.py +0 -0
  384. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/mcp/launch.py +0 -0
  385. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/mcp/server.py +0 -0
  386. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/mcp/toolset.py +0 -0
  387. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/__init__.py +0 -0
  388. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/base.py +0 -0
  389. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  390. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/docker/egress.py +0 -0
  391. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/limiters.py +0 -0
  392. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/modal.py +0 -0
  393. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/prime.py +0 -0
  394. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/runtimes/subprocess.py +0 -0
  395. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/scoring.py +0 -0
  396. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/serve/__init__.py +0 -0
  397. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/session.py +0 -0
  398. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/state.py +0 -0
  399. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/__init__.py +0 -0
  400. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  401. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  402. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  403. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  404. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  405. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  406. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  407. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/types.py +0 -0
  408. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/utils/__init__.py +0 -0
  409. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/utils/aio.py +0 -0
  410. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/utils/format.py +0 -0
  411. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/utils/generic.py +0 -0
  412. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/utils/git.py +0 -0
  413. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/utils/image.py +0 -0
  414. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/utils/install.py +0 -0
  415. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/utils/interrupt.py +0 -0
  416. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/utils/logging.py +0 -0
  417. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/utils/memory.py +0 -0
  418. {verifiers-0.2.2.dev24 → verifiers-0.2.2.dev25}/verifiers/v1/utils/sampling.py +0 -0
  419. {verifiers-0.2.2.dev24 → 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.dev24
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
@@ -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", ""))
@@ -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,20 +14,18 @@ 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
31
  NetworkPolicyConfig,
@@ -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(
@@ -283,8 +232,8 @@ class Agent:
283
232
 
284
233
  Built from an `AgentConfig` alone; `client=`/`interception=` inject live
285
234
  resources to borrow — agents on one endpoint should share one `Client`, and a
286
- live `Interception`'s owner keeps its lifecycle. The harness config's
287
- `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
288
237
  per task; `run(runtime=...)` places the run into an existing box instead
289
238
  (borrowed boxes are never started or torn down by the run)."""
290
239
 
@@ -302,21 +251,26 @@ class Agent:
302
251
  "AgentConfig.model is unset; an Agent needs a pinned model "
303
252
  "(inside an env the run's own model fills it in)"
304
253
  )
305
- harness_config = config.harness
306
- if harness_config is None:
307
- 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()})
308
262
  self.config = config
309
- self.harness = load_harness(harness_config)
263
+ self.harness = load_harness(config.harness)
310
264
  self._owns_client = client is None
311
265
  if self._owns_client:
312
266
  client = resolve_client(config.client or EvalClientConfig())
313
267
  self.ctx = ModelContext(
314
268
  model=config.model,
315
269
  client=client,
316
- sampling=config.sampling if config.sampling is not None else Sampling(),
270
+ sampling=config.sampling,
317
271
  )
318
272
  self._closed = False
319
- self.runtime_config: RuntimeConfig = self.harness.config.runtime
273
+ self.runtime_config: RuntimeConfig = config.runtime
320
274
  self.interception = interception
321
275
  self.limits = RolloutLimits(
322
276
  max_turns=config.max_turns,
@@ -575,6 +529,7 @@ class Agent:
575
529
  else task.data.timeout.harness
576
530
  )
577
531
  return dict(
532
+ agent_config=self.config,
578
533
  harness=self.harness,
579
534
  ctx=self.ctx,
580
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
 
@@ -6,7 +6,7 @@ import logging
6
6
  import time
7
7
 
8
8
  from verifiers.v1.clients import ModelContext, resolve_client
9
- from verifiers.v1.configs.eval import EvalConfig
9
+ from verifiers.v1.configs.cli.eval import EvalConfig
10
10
  from verifiers.v1.cli.eval import resume
11
11
  from verifiers.v1.cli.dashboard import dashboard
12
12
  from verifiers.v1.cli.output import (
@@ -108,7 +108,7 @@ async def run_eval_server(config: EvalConfig) -> list[Episode]:
108
108
  from functools import partial
109
109
 
110
110
  from verifiers.v1.utils.logging import setup_logging
111
- from verifiers.v1.configs.env import pool_serve_kwargs
111
+ from verifiers.v1.configs.cli.env import pool_serve_kwargs
112
112
  from verifiers.v1.serve import EnvClient, env_config_data, serve_env
113
113
 
114
114
  legacy = config.is_legacy
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
 
6
6
  from pydantic_config import cli
7
7
 
8
- from verifiers.v1.configs.init import InitConfig
8
+ from verifiers.v1.configs.cli.init import InitConfig
9
9
 
10
10
  USAGE = (
11
11
  "usage: uv run init <name> [--path ./environments] [-T/--add-tool] "
@@ -17,7 +17,7 @@ from pathlib import Path
17
17
  import tomli_w
18
18
  from pydantic import BaseModel, TypeAdapter
19
19
 
20
- from verifiers.v1.configs.eval import EvalConfig
20
+ from verifiers.v1.configs.cli.eval import EvalConfig
21
21
  from verifiers.v1.episode import Episode, WireEpisode
22
22
  from verifiers.v1.trace import Trace
23
23
  from verifiers.v1.utils.aio import run_shielded
@@ -27,9 +27,10 @@ from verifiers.v1.cli.output import (
27
27
  save_config,
28
28
  write_config,
29
29
  )
30
- from verifiers.v1.configs.replay import ReplayConfig
30
+ from verifiers.v1.configs.cli.replay import ReplayConfig
31
31
  from verifiers.v1.state import state_cls
32
32
  from verifiers.v1.task import Task, WireTaskData, task_data_cls
33
+ from verifiers.v1.configs.agent import WireAgentConfig
33
34
  from verifiers.v1.trace import Trace
34
35
  from verifiers.v1.utils.interrupt import install_interrupt
35
36
  from verifiers.v1.utils.logging import setup_logging
@@ -86,7 +87,9 @@ async def run_replay(config: ReplayConfig, source: Path, out: Path) -> list[Trac
86
87
  # An episode may hold no traces (its env hooks failed before any agent ran);
87
88
  # there's nothing to re-score, so it drops out in the flatten. Each kept trace
88
89
  # remembers its episode's env identity — the replay output re-stamps it.
89
- episodes = read_episodes(source, Trace[WireTaskData, state_cls(task_cls)])
90
+ episodes = read_episodes(
91
+ source, Trace[WireTaskData, state_cls(task_cls), WireAgentConfig]
92
+ )
90
93
  sourced = [(trace, e.env) for e in episodes for trace in e.traces]
91
94
  if config.num_traces is not None:
92
95
  sourced = sourced[: config.num_traces]
@@ -13,8 +13,8 @@ from verifiers.v1.cli.resolve import (
13
13
  references_config_file,
14
14
  with_positional_taskset,
15
15
  )
16
- from verifiers.v1.configs.serve import ServeConfig
17
- from verifiers.v1.configs.env import pool_serve_kwargs
16
+ from verifiers.v1.configs.cli.serve import ServeConfig
17
+ from verifiers.v1.configs.cli.env import pool_serve_kwargs
18
18
  from verifiers.v1.serve import serve_env
19
19
 
20
20
  USAGE = "usage: uv run serve [<taskset-id>] [--env.id <id>] [--id <env-id> (legacy)] [options] [@ file.toml]"