verifiers 0.2.2.dev97__tar.gz → 0.2.2.dev112__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 (436) hide show
  1. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/PKG-INFO +4 -2
  2. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/pyproject.toml +32 -1
  3. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/test_envs.py +2 -4
  4. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/acp/__init__.py +6 -2
  5. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/clients/train.py +6 -2
  6. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/client.py +3 -2
  7. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/envs/agentic_judge/env.py +5 -3
  8. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/gepa/runner.py +1 -1
  9. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/claude_code/harness.py +31 -15
  10. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/codex/harness.py +33 -19
  11. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/kimi_code/harness.py +3 -1
  12. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/mini_swe_agent/harness.py +3 -1
  13. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/pi/harness.py +7 -3
  14. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/pool/harness.py +1 -1
  15. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/rlm/harness.py +1 -1
  16. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/terminus_2/harness.py +3 -1
  17. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/interception/server.py +21 -2
  18. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/mcp/launch.py +108 -41
  19. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/mcp/server.py +3 -2
  20. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/mcp/toolset.py +1 -1
  21. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/rollout.py +4 -13
  22. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/base.py +9 -0
  23. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/limiters.py +9 -4
  24. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/session.py +6 -3
  25. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/__init__.py +3 -0
  26. verifiers-0.2.2.dev112/verifiers/v1/tasksets/nemo_gym/__init__.py +17 -0
  27. verifiers-0.2.2.dev112/verifiers/v1/tasksets/nemo_gym/response.py +110 -0
  28. verifiers-0.2.2.dev112/verifiers/v1/tasksets/nemo_gym/server.py +42 -0
  29. verifiers-0.2.2.dev112/verifiers/v1/tasksets/nemo_gym/taskset.py +170 -0
  30. verifiers-0.2.2.dev112/verifiers/v1/tasksets/nemo_gym/toolset.py +107 -0
  31. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/.gitignore +0 -0
  32. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/LICENSE +0 -0
  33. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/README.md +0 -0
  34. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/__init__.py +0 -0
  35. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/conftest.py +0 -0
  36. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_browser_env.py +0 -0
  37. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_build_script.py +0 -0
  38. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_cli_agent_env.py +0 -0
  39. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_client_auth_errors.py +0 -0
  40. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_client_config.py +0 -0
  41. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_client_multimodal_types.py +0 -0
  42. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_composable_env.py +0 -0
  43. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_context_token_metrics.py +0 -0
  44. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_decorator_ranks.py +0 -0
  45. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_endpoint_registry.py +0 -0
  46. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_env_group.py +0 -0
  47. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_env_server.py +0 -0
  48. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_environment.py +0 -0
  49. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_environment_extra.py +0 -0
  50. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_error_chain.py +0 -0
  51. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_eval_display.py +0 -0
  52. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_eval_utils.py +0 -0
  53. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_gepa_cli.py +0 -0
  54. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_gepa_utils.py +0 -0
  55. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_gym_env.py +0 -0
  56. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_harbor_env_mcp.py +0 -0
  57. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_imports.py +0 -0
  58. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_init_script.py +0 -0
  59. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_install_utils.py +0 -0
  60. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_interception_utils.py +0 -0
  61. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_logging.py +0 -0
  62. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_math_rubric.py +0 -0
  63. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_maybe_think_parser.py +0 -0
  64. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_message_utils.py +0 -0
  65. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_message_utils_multimodal.py +0 -0
  66. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_multiturn_env.py +0 -0
  67. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_nemorl_client.py +0 -0
  68. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_openai_chat_completions_token_client.py +0 -0
  69. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_openai_responses_client.py +0 -0
  70. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_opencode_rlm_env.py +0 -0
  71. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_openenv_client.py +0 -0
  72. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_parser.py +0 -0
  73. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_path_utils.py +0 -0
  74. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_per_turn_timing.py +0 -0
  75. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_pricing_utils.py +0 -0
  76. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_prime_plugin.py +0 -0
  77. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_renderer_client.py +0 -0
  78. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_renderer_e2e.py +0 -0
  79. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_rlm_composable_env.py +0 -0
  80. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_rubric.py +0 -0
  81. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_rubric_group.py +0 -0
  82. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_sandbox_debug_env.py +0 -0
  83. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_sandbox_env.py +0 -0
  84. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_sandbox_mixin.py +0 -0
  85. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_save_utils.py +0 -0
  86. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_setup_script.py +0 -0
  87. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_singleturn_env.py +0 -0
  88. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_stateful_tool_env.py +0 -0
  89. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_think_parser.py +0 -0
  90. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_tool_env.py +0 -0
  91. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_tool_utils.py +0 -0
  92. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_trajectory_processing.py +0 -0
  93. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_tui_info_formatting.py +0 -0
  94. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_types.py +0 -0
  95. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/test_xml_parser.py +0 -0
  96. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/conftest.py +0 -0
  97. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  98. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/fixtures/duet_v1.py +0 -0
  99. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  100. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  101. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_multi_v0.py +0 -0
  102. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  103. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  104. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_v0.py +0 -0
  105. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/fixtures/echo_v1.py +0 -0
  106. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/fixtures/pyproject.toml +0 -0
  107. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  108. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/test_color_codeword_tasks.py +0 -0
  109. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/test_configs.py +0 -0
  110. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/test_e2e.py +0 -0
  111. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/test_graph.py +0 -0
  112. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/test_judges.py +0 -0
  113. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/test_legacy.py +0 -0
  114. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/test_scoring.py +0 -0
  115. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/test_taskset.py +0 -0
  116. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/tests/v1/test_trace.py +0 -0
  117. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/__init__.py +0 -0
  118. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/cli/__init__.py +0 -0
  119. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/cli/commands/__init__.py +0 -0
  120. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/cli/commands/build.py +0 -0
  121. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/cli/commands/eval.py +0 -0
  122. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/cli/commands/gepa.py +0 -0
  123. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/cli/commands/init.py +0 -0
  124. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/cli/commands/install.py +0 -0
  125. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/cli/commands/setup.py +0 -0
  126. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/cli/plugins/__init__.py +0 -0
  127. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/cli/plugins/prime.py +0 -0
  128. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/cli/tui.py +0 -0
  129. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/clients/__init__.py +0 -0
  130. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/clients/anthropic_messages_client.py +0 -0
  131. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/clients/client.py +0 -0
  132. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
  133. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/clients/openai_chat_completions_client.py +0 -0
  134. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
  135. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/clients/openai_completions_client.py +0 -0
  136. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/clients/openai_responses_client.py +0 -0
  137. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/clients/renderer_client.py +0 -0
  138. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/decorators.py +0 -0
  139. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/__init__.py +0 -0
  140. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/env_group.py +0 -0
  141. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/environment.py +0 -0
  142. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/README.md +0 -0
  143. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/__init__.py +0 -0
  144. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/cli_agent_env.py +0 -0
  145. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/README.md +0 -0
  146. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/__init__.py +0 -0
  147. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/_filter.py +0 -0
  148. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/composable_env.py +0 -0
  149. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/harness.py +0 -0
  150. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
  151. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  152. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
  153. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
  154. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
  155. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
  156. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
  157. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/task.py +0 -0
  158. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
  159. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  160. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  161. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  162. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
  163. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
  164. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  165. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
  166. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  167. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  168. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
  169. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  170. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  171. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  172. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  173. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  174. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  175. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  176. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  177. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  178. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  179. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  180. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  181. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  182. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  183. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  184. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  185. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  186. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  187. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  188. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  189. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  190. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  191. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  192. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/gym_env.py +0 -0
  193. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
  194. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/harbor_env/env.py +0 -0
  195. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
  196. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/mcp_env.py +0 -0
  197. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/opencode_env.py +0 -0
  198. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
  199. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
  200. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
  201. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/utils/__init__.py +0 -0
  202. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/utils/file_locks.py +0 -0
  203. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
  204. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/README.md +0 -0
  205. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/__init__.py +0 -0
  206. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/README.md +0 -0
  207. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
  208. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
  209. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
  210. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
  211. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  212. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  213. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/openenv_env.py +0 -0
  214. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
  215. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/integrations/textarena_env.py +0 -0
  216. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/multiturn_env.py +0 -0
  217. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/python_env.py +0 -0
  218. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/sandbox_env.py +0 -0
  219. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/singleturn_env.py +0 -0
  220. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/stateful_tool_env.py +0 -0
  221. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/envs/tool_env.py +0 -0
  222. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/errors.py +0 -0
  223. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/gepa/__init__.py +0 -0
  224. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/gepa/adapter.py +0 -0
  225. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/gepa/config.py +0 -0
  226. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/gepa/display.py +0 -0
  227. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/gepa/gepa_utils.py +0 -0
  228. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/parsers/__init__.py +0 -0
  229. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/parsers/maybe_think_parser.py +0 -0
  230. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/parsers/parser.py +0 -0
  231. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/parsers/think_parser.py +0 -0
  232. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/parsers/xml_parser.py +0 -0
  233. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/rubrics/__init__.py +0 -0
  234. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
  235. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/rubrics/judge_rubric.py +0 -0
  236. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/rubrics/math_rubric.py +0 -0
  237. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/rubrics/rubric.py +0 -0
  238. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/rubrics/rubric_group.py +0 -0
  239. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/scripts/__init__.py +0 -0
  240. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/scripts/build.py +0 -0
  241. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/scripts/eval.py +0 -0
  242. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/scripts/gepa.py +0 -0
  243. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/scripts/init.py +0 -0
  244. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/scripts/install.py +0 -0
  245. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/scripts/setup.py +0 -0
  246. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/scripts/tui.py +0 -0
  247. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/serve/__init__.py +0 -0
  248. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/serve/client/env_client.py +0 -0
  249. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/serve/client/zmq_env_client.py +0 -0
  250. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/serve/server/__init__.py +0 -0
  251. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/serve/server/env_router.py +0 -0
  252. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/serve/server/env_server.py +0 -0
  253. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/serve/server/env_worker.py +0 -0
  254. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/serve/server/zmq_env_server.py +0 -0
  255. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/serve/types.py +0 -0
  256. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/types.py +0 -0
  257. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/__init__.py +0 -0
  258. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/async_utils.py +0 -0
  259. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/client_utils.py +0 -0
  260. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/config_utils.py +0 -0
  261. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/data_utils.py +0 -0
  262. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/display_utils.py +0 -0
  263. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/env_config_utils.py +0 -0
  264. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/env_utils.py +0 -0
  265. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/error_utils.py +0 -0
  266. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/eval_display.py +0 -0
  267. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/eval_utils.py +0 -0
  268. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/heartbeat.py +0 -0
  269. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/import_utils.py +0 -0
  270. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/install_utils.py +0 -0
  271. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/interception_utils.py +0 -0
  272. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/logging_utils.py +0 -0
  273. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/message_utils.py +0 -0
  274. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/metric_utils.py +0 -0
  275. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/path_utils.py +0 -0
  276. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/pricing_utils.py +0 -0
  277. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/process_utils.py +0 -0
  278. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/response_utils.py +0 -0
  279. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/save_utils.py +0 -0
  280. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/serve_utils.py +0 -0
  281. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/thread_utils.py +0 -0
  282. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/threaded_sandbox_client.py +0 -0
  283. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/tool_utils.py +0 -0
  284. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/usage_utils.py +0 -0
  285. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/utils/version_utils.py +0 -0
  286. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/__init__.py +0 -0
  287. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/acp/runner.py +0 -0
  288. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/agent.py +0 -0
  289. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/__init__.py +0 -0
  290. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  291. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/dashboard/base.py +0 -0
  292. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/dashboard/eval.py +0 -0
  293. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/dashboard/replay.py +0 -0
  294. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/dashboard/validate.py +0 -0
  295. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/debug.py +0 -0
  296. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/eval/__init__.py +0 -0
  297. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/eval/main.py +0 -0
  298. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/eval/resume.py +0 -0
  299. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/eval/runner.py +0 -0
  300. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/gepa.py +0 -0
  301. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/init.py +0 -0
  302. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/output.py +0 -0
  303. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/replay.py +0 -0
  304. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/resolve.py +0 -0
  305. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/resume.py +0 -0
  306. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/cli/validate.py +0 -0
  307. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/clients/__init__.py +0 -0
  308. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/clients/base.py +0 -0
  309. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/clients/client.py +0 -0
  310. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/clients/eval.py +0 -0
  311. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/__init__.py +0 -0
  312. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/agent.py +0 -0
  313. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/__init__.py +0 -0
  314. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/debug.py +0 -0
  315. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/env.py +0 -0
  316. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/eval.py +0 -0
  317. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/init.py +0 -0
  318. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/replay.py +0 -0
  319. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/cli/validate.py +0 -0
  320. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/env.py +0 -0
  321. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/harness.py +0 -0
  322. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/judge.py +0 -0
  323. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/legacy.py +0 -0
  324. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/retries.py +0 -0
  325. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/serve.py +0 -0
  326. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/task.py +0 -0
  327. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/configs/taskset.py +0 -0
  328. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/dialects/__init__.py +0 -0
  329. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/dialects/anthropic.py +0 -0
  330. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/dialects/base.py +0 -0
  331. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/dialects/chat.py +0 -0
  332. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/dialects/responses.py +0 -0
  333. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/env.py +0 -0
  334. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/envs/__init__.py +0 -0
  335. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  336. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  337. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/envs/best_of_n/env.py +0 -0
  338. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  339. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  340. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/envs/single_agent/env.py +0 -0
  341. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  342. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/envs/user_sim/env.py +0 -0
  343. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/episode.py +0 -0
  344. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/errors.py +0 -0
  345. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/gepa/__init__.py +0 -0
  346. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/gepa/adapter.py +0 -0
  347. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/gepa/config.py +0 -0
  348. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/gepa/dataset.py +0 -0
  349. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/gepa/reflection.py +0 -0
  350. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/graph.py +0 -0
  351. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harness.py +0 -0
  352. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/__init__.py +0 -0
  353. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  354. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/bash/harness.py +0 -0
  355. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/bash/program.py +0 -0
  356. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  357. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  358. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  359. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  360. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  361. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  362. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  363. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  364. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  365. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  366. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  367. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/node.py +0 -0
  368. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/null/__init__.py +0 -0
  369. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/null/harness.py +0 -0
  370. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/null/program.py +0 -0
  371. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  372. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
  373. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  374. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/pool/__init__.py +0 -0
  375. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  376. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  377. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  378. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/interception/__init__.py +0 -0
  379. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/interception/base.py +0 -0
  380. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/interception/pool.py +0 -0
  381. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  382. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/interception/tunnel/base.py +0 -0
  383. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/interception/tunnel/custom.py +0 -0
  384. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/interception/tunnel/prime.py +0 -0
  385. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/judge.py +0 -0
  386. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/judges/__init__.py +0 -0
  387. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/judges/reference.py +0 -0
  388. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/judges/reference.txt +0 -0
  389. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/judges/rubric.py +0 -0
  390. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/judges/rubric.txt +0 -0
  391. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/legacy.py +0 -0
  392. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/mcp/__init__.py +0 -0
  393. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/__init__.py +0 -0
  394. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  395. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/docker/egress.py +0 -0
  396. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/modal.py +0 -0
  397. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/prime.py +0 -0
  398. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/runtimes/subprocess.py +0 -0
  399. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/serve/__init__.py +0 -0
  400. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/serve/client.py +0 -0
  401. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/serve/pool.py +0 -0
  402. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/serve/server.py +0 -0
  403. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/serve/types.py +0 -0
  404. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/state.py +0 -0
  405. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/task.py +0 -0
  406. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/taskset.py +0 -0
  407. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  408. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/harbor/env.py +0 -0
  409. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  410. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  411. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  412. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  413. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  414. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  415. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  416. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  417. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/trace.py +0 -0
  418. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/types.py +0 -0
  419. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/__init__.py +0 -0
  420. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/aio.py +0 -0
  421. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/artifacts.py +0 -0
  422. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/compile.py +0 -0
  423. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/decorators.py +0 -0
  424. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/format.py +0 -0
  425. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/generic.py +0 -0
  426. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/git.py +0 -0
  427. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/image.py +0 -0
  428. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/install.py +0 -0
  429. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/interrupt.py +0 -0
  430. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/loaders.py +0 -0
  431. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/logging.py +0 -0
  432. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/memory.py +0 -0
  433. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/platform.py +0 -0
  434. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/retries.py +0 -0
  435. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/verifiers/v1/utils/score.py +0 -0
  436. {verifiers-0.2.2.dev97 → verifiers-0.2.2.dev112}/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.dev97
3
+ Version: 0.2.2.dev112
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
@@ -39,7 +39,7 @@ Requires-Dist: prime-sandboxes>=0.2.35
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
42
- Requires-Dist: renderers>=0.1.9.dev9
42
+ Requires-Dist: renderers>=0.1.9
43
43
  Requires-Dist: requests
44
44
  Requires-Dist: rich>=11.0.0
45
45
  Requires-Dist: setproctitle>=1.3.0
@@ -54,6 +54,8 @@ Provides-Extra: harbor
54
54
  Requires-Dist: harbor==0.20.0; (python_version >= '3.12') and extra == 'harbor'
55
55
  Provides-Extra: modal
56
56
  Requires-Dist: modal>=1.4.0; extra == 'modal'
57
+ Provides-Extra: nemo-gym
58
+ Requires-Dist: nemo-gym==0.4.0; (python_version >= '3.12') and extra == 'nemo-gym'
57
59
  Provides-Extra: notebook
58
60
  Requires-Dist: nest-asyncio>=1.6.0; extra == 'notebook'
59
61
  Provides-Extra: openenv
@@ -51,7 +51,7 @@ dependencies = [
51
51
  "uvloop>=0.21.0; sys_platform != 'win32' and sys_platform != 'cygwin' and platform_python_implementation != 'PyPy'",
52
52
  "loguru>=0.7.0",
53
53
  "tomli-w>=1.0.0",
54
- "renderers>=0.1.9.dev9",
54
+ "renderers>=0.1.9",
55
55
  "typing_extensions>=4.12.2",
56
56
  ]
57
57
 
@@ -107,12 +107,43 @@ notebook = [
107
107
  openenv = [
108
108
  "openenv>=0.4.1",
109
109
  ]
110
+ nemo-gym = [
111
+ # NeMo Gym currently publishes Python 3.12+ packages; keep core verifiers installable on 3.11.
112
+ "nemo-gym==0.4.0; python_version >= '3.12'",
113
+ ]
110
114
  [tool.uv]
111
115
  preview = true
112
116
  required-version = ">=0.11.1"
113
117
  exclude-newer = "7 days"
114
118
  default-groups = ["dev", "examples"]
115
119
 
120
+ # NeMo Gym declares its full platform stack; this integration only starts resource servers.
121
+ [[tool.uv.dependency-metadata]]
122
+ name = "nemo-gym"
123
+ version = "0.4.0"
124
+ requires-python = ">=3.12"
125
+ requires-dist = [
126
+ "aiohttp>=3.14.1",
127
+ "fastapi",
128
+ "gprof2dot",
129
+ "hydra-core",
130
+ "itsdangerous",
131
+ "mcp>=1.27,<2",
132
+ "omegaconf",
133
+ "openai>=2.9",
134
+ "orjson",
135
+ "pandas",
136
+ "pydantic",
137
+ "pydot",
138
+ "ray>=2.55.1",
139
+ "requests",
140
+ "rich",
141
+ "typing-extensions",
142
+ "uvicorn",
143
+ "wandb",
144
+ "yappi",
145
+ ]
146
+
116
147
  [[tool.uv.index]]
117
148
  name = "pypi"
118
149
  url = "https://pypi.org/simple"
@@ -17,10 +17,8 @@ EVAL_TIMEOUT = 600 # 10 minutes for a capped eval (-n 1 -r 1)
17
17
 
18
18
  ENVIRONMENTS = Path(__file__).parent.parent.parent / "environments"
19
19
 
20
- # v1 tasksets that can't run a plain-CI smoke eval — e.g. they need a docker/prime runtime or
21
- # clone a corpus CI can't read. Empty: the SWE/container and corpus tasksets live in
22
- # research-environments now.
23
- SKIP_EVAL: set[str] = set()
20
+ # V1 tasksets that aren't part of the default CI install.
21
+ SKIP_EVAL = {"nemo_gym_weather_v1"}
24
22
 
25
23
  # Per-run caps are seat fields; recipe envs name their own seats.
26
24
  SEATS: dict[str, tuple[str, ...]] = {
@@ -121,7 +121,9 @@ class ACP:
121
121
  "allow_empty_tool_reply": allow_empty_tool_reply,
122
122
  }
123
123
  program = await runtime.prepare_uv_script(
124
- ACP_SOURCE, {**env, "UV_FROZEN": "false"}
124
+ ACP_SOURCE,
125
+ {**env, "UV_FROZEN": "false"},
126
+ activate=False,
125
127
  )
126
128
  directory = f".vf-acp-{secrets.token_hex(8)}"
127
129
  created = await runtime.run(["mkdir", "-m", "700", directory], {})
@@ -198,7 +200,9 @@ class ACPHarnessSession(HarnessSession):
198
200
  async def _start(self) -> None:
199
201
  self._stderr_tail.clear()
200
202
  program = await self.runtime.prepare_uv_script(
201
- ACP_SOURCE, {**self.env, "UV_FROZEN": "false"}
203
+ ACP_SOURCE,
204
+ {**self.env, "UV_FROZEN": "false"},
205
+ activate=False,
202
206
  )
203
207
  process = await self.runtime.open_process([*program, "stream"], self.env)
204
208
  self._process = process
@@ -12,6 +12,7 @@ from typing import Any, ClassVar, TypeVar
12
12
  from openai import OpenAIError
13
13
  from renderers import OverlongPromptError as RendererOverlongPromptError
14
14
  from renderers import RenderedTokens, Renderer, RendererConfig
15
+ from renderers.base import ToolCallParseStatus
15
16
 
16
17
  from verifiers.v1.clients.base import build_async_openai
17
18
  from verifiers.v1.clients.client import SESSION_ID_HEADER, Client
@@ -115,6 +116,8 @@ def response_from_generate(
115
116
  )
116
117
  for i, tc in enumerate(result.get("tool_calls") or [])
117
118
  if getattr(tc, "name", None)
119
+ # TODO: we need a better way for renderers to expose this
120
+ and getattr(tc, "status", None) != ToolCallParseStatus.UNKNOWN_TOOL
118
121
  ] or None
119
122
  prompt_ids = result.get("prompt_ids") or []
120
123
  completion_ids = result.get("completion_ids") or []
@@ -296,8 +299,9 @@ class ElasticRendererPool:
296
299
  class TrainClient(Client):
297
300
  """Renders prompts to token ids and calls a vLLM `/inference/v1/generate` engine.
298
301
 
299
- One client per rollout: it owns its engine connection and takes a slot on the shared
300
- `ElasticRendererPool` for each turn."""
302
+ Owned by the interception server and shared by the rollouts it multiplexes: they reuse
303
+ its engine connection pool, and each turn takes a slot on the shared
304
+ `ElasticRendererPool`."""
301
305
 
302
306
  def __init__(self, config: TrainClientConfig) -> None:
303
307
  self.config = config
@@ -1,8 +1,9 @@
1
1
  """Client configs: describe an OpenAI-compatible endpoint.
2
2
 
3
3
  A `BaseClientConfig` is an OpenAI-compatible endpoint (base_url + API-key env var
4
- + extra headers); `clients.resolve_client` turns one into a live `Client`, and every
5
- rollout does so for itself. The default Prime endpoint, API key, and team fall back to
4
+ + extra headers); `clients.resolve_client` turns one into a live `Client` the
5
+ interception server builds one per distinct config and shares it across the rollouts
6
+ it multiplexes. The default Prime endpoint, API key, and team fall back to
6
7
  the active Prime CLI config, so direct `uv run eval` calls behave like `prime eval`.
7
8
  Both the eval entrypoint (its model client) and in-env LLM calls (e.g. a judge reward)
8
9
  build clients from these. `ClientConfig` is the CLI-selectable discriminated union
@@ -309,8 +309,6 @@ class AgenticJudgeEnv(vf.Env[AgenticJudgeEnvConfig]):
309
309
 
310
310
  async def finalize(self, task: vf.Task, episode: vf.Episode) -> None:
311
311
  by_agent = {t.agent.name: t for t in episode.traces}
312
- if "judge" not in by_agent:
313
- return
314
312
  solution, verdict = by_agent["solver"], by_agent["judge"]
315
313
  verdicts = RubricVerdicts.model_validate(verdict.info.get("verdict")).verdicts
316
314
  criteria = self.config.task.criteria()
@@ -332,6 +330,10 @@ class SharedAgenticJudgeEnv(AgenticJudgeEnv):
332
330
  async def run(self, task: vf.Task, agents: vf.Agents) -> None:
333
331
  async with agents.solver.provision(task) as box:
334
332
  solution = await agents.solver.run(task, runtime=box)
333
+ if not solution.ok:
334
+ raise RuntimeError(
335
+ "the solver's rollout failed, so the judge never ran"
336
+ )
335
337
  judge_task = JudgeTask.from_trace(solution, self.config.task)
336
338
  await agents.judge.run(judge_task, runtime=box)
337
339
 
@@ -342,7 +344,7 @@ class IsolatedAgenticJudgeEnv(AgenticJudgeEnv):
342
344
  async def run(self, task: vf.Task, agents: vf.Agents) -> None:
343
345
  solution = await agents.solver.run(task)
344
346
  if not solution.ok:
345
- return
347
+ raise RuntimeError("the solver's rollout failed, so the judge never ran")
346
348
  await agents.judge.run(
347
349
  JudgeTask.from_trace(solution, self.config.task, share_runtime=False)
348
350
  )
@@ -73,7 +73,7 @@ def run_gepa(env: Env, config: GEPAConfig) -> GEPAResult:
73
73
  await append_episode(run_dir, episode, write_lock)
74
74
 
75
75
  try:
76
- # The endpoint stays config: each rollout builds and closes its own client.
76
+ # The endpoint stays config: the interception server builds the live client.
77
77
  ctx = ModelContext(
78
78
  client=config.client, model=config.model, sampling=config.sampling
79
79
  )
@@ -2,6 +2,8 @@
2
2
 
3
3
  import shlex
4
4
 
5
+ from pydantic import Field
6
+
5
7
  from verifiers.v1.acp import ACP
6
8
  from verifiers.v1.clients import ModelContext
7
9
  from verifiers.v1.configs.harness import HarnessConfig
@@ -11,31 +13,30 @@ from verifiers.v1.runtimes import ProgramResult, Runtime
11
13
  from verifiers.v1.task import TaskData
12
14
  from verifiers.v1.trace import Trace
13
15
 
14
- CLAUDE_ACP_DIR = "/var/tmp/vf-claude-agent-acp"
16
+ CLAUDE_ACP_DIR = "/var/tmp/vf-claude-agent-acp-{version}-{acp_version}"
15
17
  PACKAGES_DIR = f"{CLAUDE_ACP_DIR}/packages"
16
- ACP_VERSION = "0.63.0"
18
+ ACP_VERSION = "0.65.0"
19
+ CLAUDE_BIN = f"{PACKAGES_DIR}/node_modules/.bin/claude"
17
20
  ACP_BIN = f"{PACKAGES_DIR}/node_modules/.bin/claude-agent-acp"
18
- ACP_COMMAND = [f"{NODE_BIN_DIR}/node", ACP_BIN]
19
21
  CLAUDE_CONFIG_ROOT = ".vf-claude"
20
22
  SKILLS_DIR = ".claude/skills"
21
23
  ACP_INSTALL = r"""
22
24
  set -e
23
25
  export PATH="/var/tmp/vf-node/bin:$PATH"
24
- if [ "$(cat /var/tmp/vf-claude-agent-acp/.version 2>/dev/null)" = "$VF_CLAUDE_ACP_VERSION" ] \
25
- && [ -x /var/tmp/vf-claude-agent-acp/packages/node_modules/.bin/claude-agent-acp ]; then
26
- exit 0
27
- fi
28
- npm install --prefix /var/tmp/vf-claude-agent-acp/packages --ignore-scripts --no-audit --no-fund \
26
+ rm -f {ready}
27
+ npm install --prefix {packages} --no-audit --no-fund \
29
28
  --omit=dev \
29
+ "@anthropic-ai/claude-code@$VF_CLAUDE_CODE_VERSION" \
30
30
  "@agentclientprotocol/claude-agent-acp@$VF_CLAUDE_ACP_VERSION" >/dev/null
31
- printf %s "$VF_CLAUDE_ACP_VERSION" > /var/tmp/vf-claude-agent-acp/.version
31
+ touch {ready}
32
32
  """
33
33
 
34
34
  CLAUDE_ACP = ACP()
35
35
 
36
36
 
37
37
  class ClaudeCodeHarnessConfig(HarnessConfig):
38
- pass
38
+ version: str = Field(default="2.1.223", pattern=r"^[A-Za-z0-9._+-]+$")
39
+ """Claude Code release to install, pinned for reproducibility."""
39
40
 
40
41
 
41
42
  class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
@@ -47,15 +48,26 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
47
48
  async def setup(self, runtime: Runtime) -> None:
48
49
  await self.install_skills(runtime, SKILLS_DIR)
49
50
  await ensure_node(runtime)
51
+ versions = {"version": self.config.version, "acp_version": ACP_VERSION}
52
+ directory = CLAUDE_ACP_DIR.format(**versions)
53
+ packages = PACKAGES_DIR.format(**versions)
54
+ claude_bin = CLAUDE_BIN.format(**versions)
55
+ acp_bin = ACP_BIN.format(**versions)
56
+ ready = f"{directory}/.ready"
57
+ script = ACP_INSTALL.replace("{packages}", packages).replace("{ready}", ready)
58
+ ensure = shlex.quote(
59
+ f"[ -f {ready} ] && [ -x {claude_bin} ] && [ -x {acp_bin} ] || ({script})"
60
+ )
50
61
  acp_guarded = (
51
- f"mkdir -p {CLAUDE_ACP_DIR} && "
52
- f'"$(command -v flock || command -v lockf)" {CLAUDE_ACP_DIR}/install.lock '
53
- f"sh -c {shlex.quote(ACP_INSTALL)}"
62
+ f"mkdir -p {directory} && "
63
+ f'"$(command -v flock || command -v lockf)" {directory}/install.lock '
64
+ f"sh -c {ensure}"
54
65
  )
55
66
  acp_result = await runtime.run(
56
67
  ["sh", "-c", acp_guarded],
57
68
  {
58
69
  **self.config.resolved_env,
70
+ "VF_CLAUDE_CODE_VERSION": self.config.version,
59
71
  "VF_CLAUDE_ACP_VERSION": ACP_VERSION,
60
72
  },
61
73
  )
@@ -80,6 +92,7 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
80
92
  )
81
93
  system_prompt, prompt = self.resolve_prompt(data)
82
94
  config_dir = self.config_dir(trace)
95
+ versions = {"version": self.config.version, "acp_version": ACP_VERSION}
83
96
  options: dict[str, object] = {
84
97
  "strictMcpConfig": True,
85
98
  "disallowedTools": self.config.disabled_tools or [],
@@ -92,6 +105,7 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
92
105
  "ANTHROPIC_BASE_URL": endpoint.removesuffix("/v1"),
93
106
  "ANTHROPIC_API_KEY": secret,
94
107
  "ANTHROPIC_MODEL": ctx.model,
108
+ "CLAUDE_CODE_EXECUTABLE": CLAUDE_BIN.format(**versions),
95
109
  "CLAUDE_CONFIG_DIR": config_dir,
96
110
  "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
97
111
  "DISABLE_AUTOUPDATER": "1",
@@ -107,7 +121,7 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
107
121
  mcp_urls,
108
122
  data,
109
123
  env=env,
110
- command=ACP_COMMAND,
124
+ command=[f"{NODE_BIN_DIR}/node", ACP_BIN.format(**versions)],
111
125
  prompt=prompt or "",
112
126
  session_meta=session_meta,
113
127
  )
@@ -124,6 +138,7 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
124
138
  ) -> ProgramResult:
125
139
  system_prompt, prompt = self.resolve_prompt(data)
126
140
  config_dir = self.config_dir(trace)
141
+ versions = {"version": self.config.version, "acp_version": ACP_VERSION}
127
142
 
128
143
  options: dict[str, object] = {
129
144
  "strictMcpConfig": True,
@@ -138,6 +153,7 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
138
153
  "ANTHROPIC_BASE_URL": endpoint.removesuffix("/v1"),
139
154
  "ANTHROPIC_API_KEY": secret,
140
155
  "ANTHROPIC_MODEL": ctx.model,
156
+ "CLAUDE_CODE_EXECUTABLE": CLAUDE_BIN.format(**versions),
141
157
  "CLAUDE_CONFIG_DIR": config_dir,
142
158
  "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
143
159
  "DISABLE_AUTOUPDATER": "1",
@@ -146,7 +162,7 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
146
162
  return await CLAUDE_ACP.run(
147
163
  runtime,
148
164
  env,
149
- ACP_COMMAND,
165
+ [f"{NODE_BIN_DIR}/node", ACP_BIN.format(**versions)],
150
166
  prompt or "",
151
167
  mcp_urls=mcp_urls,
152
168
  session_path=f"{config_dir}/acp-session",
@@ -7,6 +7,8 @@ import re
7
7
  import shlex
8
8
  from collections import Counter
9
9
 
10
+ from pydantic import Field
11
+
10
12
  from verifiers.v1.acp import ACP
11
13
  from verifiers.v1.clients import ModelContext
12
14
  from verifiers.v1.configs.harness import HarnessConfig
@@ -21,33 +23,29 @@ logger = logging.getLogger(__name__)
21
23
  PROVIDER = "intercept"
22
24
  KEY_VAR = "CODEX_INTERCEPT_KEY"
23
25
 
24
- CODEX_DIR = "/var/tmp/vf-codex"
26
+ CODEX_DIR = "/var/tmp/vf-codex-{version}-{acp_version}"
25
27
  PACKAGES_DIR = f"{CODEX_DIR}/acp"
26
- CODEX_VERSION = "0.145.0"
27
- ACP_VERSION = "1.1.7"
28
+ ACP_VERSION = "1.1.10"
29
+ CODEX_BIN = f"{PACKAGES_DIR}/node_modules/.bin/codex"
28
30
  ACP_BIN = f"{PACKAGES_DIR}/node_modules/.bin/codex-acp"
29
- ACP_COMMAND = [f"{NODE_BIN_DIR}/node", ACP_BIN]
30
31
  SKILLS_DIR = ".agents/skills"
31
32
  INSTALL = r"""
32
33
  set -e
33
34
  export PATH="/var/tmp/vf-node/bin:$PATH"
34
- versions="$VF_CODEX_VERSION:$VF_CODEX_ACP_VERSION"
35
- if [ "$(cat /var/tmp/vf-codex/.versions 2>/dev/null)" = "$versions" ] \
36
- && [ -x /var/tmp/vf-codex/acp/node_modules/.bin/codex ] \
37
- && [ -x /var/tmp/vf-codex/acp/node_modules/.bin/codex-acp ]; then
38
- exit 0
39
- fi
40
- npm install --prefix /var/tmp/vf-codex/acp --ignore-scripts --no-audit --no-fund \
35
+ rm -f {ready}
36
+ npm install --prefix {packages} --ignore-scripts --no-audit --no-fund \
41
37
  --omit=dev \
42
38
  "@agentclientprotocol/codex-acp@$VF_CODEX_ACP_VERSION" \
43
39
  "@openai/codex@$VF_CODEX_VERSION" >/dev/null
44
- printf %s "$versions" > /var/tmp/vf-codex/.versions
40
+ touch {ready}
45
41
  """
46
42
 
47
43
  CODEX_ACP = ACP()
48
44
 
49
45
 
50
46
  class CodexHarnessConfig(HarnessConfig):
47
+ version: str = Field(default="0.146.1", pattern=r"^[A-Za-z0-9._+-]+$")
48
+ """Codex release to install, pinned for reproducibility."""
51
49
  multi_agent: bool = False
52
50
  """Enable Codex's native multi-agent v2 tools."""
53
51
 
@@ -63,19 +61,29 @@ class CodexHarness(Harness[CodexHarnessConfig]):
63
61
  await ensure_node(runtime)
64
62
  logger.info(
65
63
  "codex: ensuring Codex %s and codex-acp %s are installed",
66
- CODEX_VERSION,
64
+ self.config.version,
67
65
  ACP_VERSION,
68
66
  )
67
+ versions = {"version": self.config.version, "acp_version": ACP_VERSION}
68
+ directory = CODEX_DIR.format(**versions)
69
+ packages = PACKAGES_DIR.format(**versions)
70
+ codex_bin = CODEX_BIN.format(**versions)
71
+ acp_bin = ACP_BIN.format(**versions)
72
+ ready = f"{directory}/.ready"
73
+ script = INSTALL.replace("{packages}", packages).replace("{ready}", ready)
74
+ ensure = shlex.quote(
75
+ f"[ -f {ready} ] && [ -x {codex_bin} ] && [ -x {acp_bin} ] || ({script})"
76
+ )
69
77
  guarded = (
70
- f"mkdir -p {CODEX_DIR} && "
71
- f'"$(command -v flock || command -v lockf)" {CODEX_DIR}/install.lock '
72
- f"sh -c {shlex.quote(INSTALL)}"
78
+ f"mkdir -p {directory} && "
79
+ f'"$(command -v flock || command -v lockf)" {directory}/install.lock '
80
+ f"sh -c {ensure}"
73
81
  )
74
82
  install = await runtime.run(
75
83
  ["sh", "-c", guarded],
76
84
  {
77
85
  **self.config.resolved_env,
78
- "VF_CODEX_VERSION": CODEX_VERSION,
86
+ "VF_CODEX_VERSION": self.config.version,
79
87
  "VF_CODEX_ACP_VERSION": ACP_VERSION,
80
88
  },
81
89
  )
@@ -112,7 +120,10 @@ class CodexHarness(Harness[CodexHarnessConfig]):
112
120
  {},
113
121
  data,
114
122
  env=env,
115
- command=ACP_COMMAND,
123
+ command=[
124
+ f"{NODE_BIN_DIR}/node",
125
+ ACP_BIN.format(version=self.config.version, acp_version=ACP_VERSION),
126
+ ],
116
127
  prompt=prompt,
117
128
  system_prompt=system_prompt,
118
129
  )
@@ -139,7 +150,10 @@ class CodexHarness(Harness[CodexHarnessConfig]):
139
150
  return await CODEX_ACP.run(
140
151
  runtime,
141
152
  env,
142
- ACP_COMMAND,
153
+ [
154
+ f"{NODE_BIN_DIR}/node",
155
+ ACP_BIN.format(version=self.config.version, acp_version=ACP_VERSION),
156
+ ],
143
157
  prompt,
144
158
  system_prompt=system_prompt,
145
159
  session_path=f"{self.trace_home(trace)}/acp-session",
@@ -4,6 +4,8 @@ import json
4
4
  import logging
5
5
  import shlex
6
6
 
7
+ from pydantic import Field
8
+
7
9
  from verifiers.v1.acp import ACP
8
10
  from verifiers.v1.clients import ModelContext
9
11
  from verifiers.v1.configs.harness import HarnessConfig
@@ -43,7 +45,7 @@ KIMI_ACP = ACP()
43
45
 
44
46
 
45
47
  class KimiCodeHarnessConfig(HarnessConfig):
46
- version: str = "0.29.0"
48
+ version: str = Field(default="0.34.0", pattern=r"^[A-Za-z0-9._+-]+$")
47
49
  """Kimi Code release to install, pinned for reproducibility."""
48
50
 
49
51
 
@@ -1,5 +1,7 @@
1
1
  from pathlib import Path
2
2
 
3
+ from pydantic import Field
4
+
3
5
  from verifiers.v1.clients import ModelContext
4
6
  from verifiers.v1.configs.harness import HarnessConfig
5
7
  from verifiers.v1.harness import Harness
@@ -11,7 +13,7 @@ PROGRAM_SOURCE = (Path(__file__).resolve().parent / "program.py").read_text()
11
13
 
12
14
 
13
15
  class MiniSWEAgentHarnessConfig(HarnessConfig):
14
- version: str = "2.4.5"
16
+ version: str = Field(default="2.4.6", pattern=r"^[A-Za-z0-9._+-]+$")
15
17
  """mini-swe-agent release to install, pinned for reproducibility."""
16
18
 
17
19
 
@@ -4,6 +4,8 @@ import json
4
4
  import logging
5
5
  import shlex
6
6
 
7
+ from pydantic import Field
8
+
7
9
  from verifiers.v1.acp import ACP
8
10
  from verifiers.v1.clients import ModelContext
9
11
  from verifiers.v1.configs.harness import HarnessConfig
@@ -23,8 +25,8 @@ PI_DIR = "/var/tmp/vf-pi"
23
25
  PACKAGES_DIR = f"{PI_DIR}/mcp"
24
26
  PI_BIN = f"{PACKAGES_DIR}/node_modules/.bin/pi"
25
27
  SKILLS_DIR = ".agents/skills"
26
- MCP_VERSION = "2.11.0"
27
- ACP_VERSION = "0.0.31"
28
+ MCP_VERSION = "2.20.1"
29
+ ACP_VERSION = "0.0.33"
28
30
  MCP_ADAPTER = f"{PACKAGES_DIR}/node_modules/pi-mcp-adapter/index.ts"
29
31
  ACP_BIN = f"{PACKAGES_DIR}/node_modules/.bin/pi-acp"
30
32
  ACP_COMMAND = [
@@ -86,7 +88,7 @@ PI_ACP = ACP()
86
88
 
87
89
 
88
90
  class PiHarnessConfig(HarnessConfig):
89
- version: str = "0.80.10"
91
+ version: str = Field(default="0.84.0", pattern=r"^[A-Za-z0-9._+-]+$")
90
92
  """Pi release to install, pinned for reproducibility."""
91
93
 
92
94
 
@@ -223,4 +225,6 @@ class PiHarness(Harness[PiHarnessConfig]):
223
225
  ACP_COMMAND,
224
226
  prompt,
225
227
  session_path=f"{agent_dir}/acp-session",
228
+ # Pi can end after its final tool completes without a text message.
229
+ allow_empty_tool_reply=True,
226
230
  )
@@ -31,7 +31,7 @@ POOL_ACP = ACP()
31
31
 
32
32
 
33
33
  class PoolHarnessConfig(HarnessConfig):
34
- version: str = Field(default="1.0.11", pattern=r"^[A-Za-z0-9._+-]+$")
34
+ version: str = Field(default="1.0.15", pattern=r"^[A-Za-z0-9._+-]+$")
35
35
  """Pool release to install, pinned for reproducibility."""
36
36
 
37
37
 
@@ -30,7 +30,7 @@ RLM_ACP = ACP()
30
30
 
31
31
 
32
32
  class RLMHarnessConfig(HarnessConfig):
33
- version: str = "main"
33
+ version: str = Field(default="main", min_length=1)
34
34
  """Git ref (branch, tag, or commit) of rlm-harness to install."""
35
35
  max_depth: int = 0
36
36
  """Recursion depth rlm may spawn sub-harnesses to (RLM_MAX_DEPTH)."""
@@ -1,6 +1,8 @@
1
1
  import logging
2
2
  from pathlib import Path
3
3
 
4
+ from pydantic import Field
5
+
4
6
  from verifiers.v1.clients import ModelContext
5
7
  from verifiers.v1.configs.harness import HarnessConfig
6
8
  from verifiers.v1.harness import Harness
@@ -13,7 +15,7 @@ logger = logging.getLogger(__name__)
13
15
 
14
16
 
15
17
  class Terminus2HarnessConfig(HarnessConfig):
16
- version: str = "0.20.0"
18
+ version: str = Field(default="0.20.0", pattern=r"^[A-Za-z0-9._+-]+$")
17
19
  """Harbor release to install, pinned for reproducibility."""
18
20
 
19
21
 
@@ -9,7 +9,9 @@ SSE requests are supported.
9
9
  One server multiplexes many rollouts: each rollout registers separate model and state
10
10
  capabilities, and the server routes each to the right session. So N rollouts need one
11
11
  server (and, behind a remote runtime, one tunnel) per pool member rather than one each —
12
- see `interception.pool`.
12
+ see `interception.pool`. The server also owns the model clients (one per distinct endpoint
13
+ config, assigned to each session at register and closed with the server), so its rollouts
14
+ share one bounded keepalive connection pool upstream instead of churning per-rollout TCP.
13
15
 
14
16
  The server is a pure model boundary: one request, one turn — refusal checks (limits,
15
17
  `@stop`s), the model call, the graph commit, retry atomicity. A run's user exchange
@@ -34,6 +36,8 @@ from pydantic import ValidationError
34
36
  from pydantic_core import PydanticSerializationError, from_json, to_json
35
37
 
36
38
  from verifiers.v1 import graph
39
+ from verifiers.v1.clients import Client, resolve_client
40
+ from verifiers.v1.configs.client import BaseClientConfig
37
41
  from verifiers.v1.dialects import DIALECTS, Dialect
38
42
  from verifiers.v1.dialects.base import is_sse_done_event
39
43
  from verifiers.v1.errors import (
@@ -130,6 +134,7 @@ class InterceptionServer(Interception):
130
134
  ) -> None:
131
135
  super().__init__()
132
136
  self.sessions: dict[str, RolloutSession] = {}
137
+ self.clients: dict[str, Client] = {}
133
138
  self.state_sessions: dict[str, RolloutSession] = {}
134
139
  self.state_routes: dict[str, RolloutSession] = {}
135
140
  self.state_service_secrets = frozenset(state_service_secrets)
@@ -147,8 +152,22 @@ class InterceptionServer(Interception):
147
152
  """Rollouts currently registered — what the pools balance on."""
148
153
  return len(self.sessions)
149
154
 
155
+ def _client(self, config: BaseClientConfig) -> Client:
156
+ """The server-owned client for `config` — one per distinct endpoint config, shared
157
+ by every session registered under it, so the rollouts this server multiplexes reuse
158
+ one bounded keepalive pool instead of each opening (and tearing down) their own
159
+ connections. Closed with the server."""
160
+ key = config.model_dump_json()
161
+ client = self.clients.get(key)
162
+ if client is None:
163
+ client = self.clients[key] = resolve_client(config)
164
+ self.stack.push_async_callback(client.close)
165
+ return client
166
+
150
167
  def register(self, session: RolloutSession) -> tuple[str, str]:
151
- """Register separate capabilities for model inference and private task state."""
168
+ """Register separate capabilities for model inference and private task state, and
169
+ assign the session its server-owned model client."""
170
+ session.client = self._client(session.ctx.client)
152
171
  model_secret = secrets.token_urlsafe(16)
153
172
  state_secret = secrets.token_urlsafe(16)
154
173
  self.sessions[model_secret] = session