verifiers 0.3.1.dev24__tar.gz → 0.3.1.dev31__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 (440) hide show
  1. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/PKG-INFO +1 -1
  2. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/pyproject.toml +20 -3
  3. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/test_scoring.py +4 -1
  4. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/__init__.py +15 -1
  5. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/agent.py +3 -7
  6. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/clients/client.py +6 -9
  7. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/clients/eval.py +3 -6
  8. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/clients/train.py +6 -4
  9. verifiers-0.3.1.dev31/verifiers/v1/configs/runtime.py +66 -0
  10. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/task.py +3 -3
  11. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/dialects/anthropic.py +340 -8
  12. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/dialects/base.py +62 -5
  13. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/dialects/chat.py +193 -11
  14. verifiers-0.3.1.dev31/verifiers/v1/dialects/responses.py +762 -0
  15. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/graph.py +12 -0
  16. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harness.py +27 -1
  17. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/bash/harness.py +4 -0
  18. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/bash/program.py +84 -43
  19. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/interception/server.py +309 -96
  20. verifiers-0.3.1.dev31/verifiers/v1/interception/tool.py +12 -0
  21. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/mcp/launch.py +1 -1
  22. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/rollout.py +105 -14
  23. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/runtimes/__init__.py +1 -1
  24. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/runtimes/base.py +2 -44
  25. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/runtimes/docker/__init__.py +1 -1
  26. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/runtimes/docker/egress.py +14 -27
  27. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/runtimes/prime.py +1 -1
  28. verifiers-0.3.1.dev31/verifiers/v1/session.py +402 -0
  29. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/task.py +3 -2
  30. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/nemo_gym/taskset.py +2 -2
  31. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/trace.py +34 -1
  32. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/types.py +7 -0
  33. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/compile.py +1 -1
  34. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/decorators.py +21 -4
  35. verifiers-0.3.1.dev24/verifiers/v1/dialects/responses.py +0 -357
  36. verifiers-0.3.1.dev24/verifiers/v1/session.py +0 -144
  37. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/.gitignore +0 -0
  38. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/LICENSE +0 -0
  39. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/README.md +0 -0
  40. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/__init__.py +0 -0
  41. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/conftest.py +0 -0
  42. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_browser_env.py +0 -0
  43. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_build_script.py +0 -0
  44. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_cli_agent_env.py +0 -0
  45. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_client_auth_errors.py +0 -0
  46. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_client_config.py +0 -0
  47. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_client_multimodal_types.py +0 -0
  48. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_composable_env.py +0 -0
  49. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_context_token_metrics.py +0 -0
  50. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_decorator_ranks.py +0 -0
  51. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_endpoint_registry.py +0 -0
  52. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_env_group.py +0 -0
  53. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_env_server.py +0 -0
  54. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_environment.py +0 -0
  55. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_environment_extra.py +0 -0
  56. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_error_chain.py +0 -0
  57. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_eval_display.py +0 -0
  58. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_eval_utils.py +0 -0
  59. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_gepa_cli.py +0 -0
  60. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_gepa_utils.py +0 -0
  61. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_gym_env.py +0 -0
  62. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_harbor_env_mcp.py +0 -0
  63. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_imports.py +0 -0
  64. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_init_script.py +0 -0
  65. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_install_utils.py +0 -0
  66. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_interception_utils.py +0 -0
  67. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_logging.py +0 -0
  68. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_math_rubric.py +0 -0
  69. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_maybe_think_parser.py +0 -0
  70. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_message_utils.py +0 -0
  71. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_message_utils_multimodal.py +0 -0
  72. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_multiturn_env.py +0 -0
  73. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_nemorl_client.py +0 -0
  74. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_openai_chat_completions_token_client.py +0 -0
  75. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_openai_responses_client.py +0 -0
  76. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_opencode_rlm_env.py +0 -0
  77. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_openenv_client.py +0 -0
  78. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_parser.py +0 -0
  79. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_path_utils.py +0 -0
  80. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_per_turn_timing.py +0 -0
  81. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_pricing_utils.py +0 -0
  82. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_prime_plugin.py +0 -0
  83. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_renderer_client.py +0 -0
  84. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_renderer_e2e.py +0 -0
  85. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_rlm_composable_env.py +0 -0
  86. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_rubric.py +0 -0
  87. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_rubric_group.py +0 -0
  88. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_sandbox_debug_env.py +0 -0
  89. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_sandbox_env.py +0 -0
  90. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_sandbox_mixin.py +0 -0
  91. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_save_utils.py +0 -0
  92. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_setup_script.py +0 -0
  93. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_singleturn_env.py +0 -0
  94. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_stateful_tool_env.py +0 -0
  95. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_think_parser.py +0 -0
  96. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_tool_env.py +0 -0
  97. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_tool_utils.py +0 -0
  98. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_trajectory_processing.py +0 -0
  99. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_tui_info_formatting.py +0 -0
  100. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_types.py +0 -0
  101. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/test_xml_parser.py +0 -0
  102. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/conftest.py +0 -0
  103. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  104. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/fixtures/duet_v1.py +0 -0
  105. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  106. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  107. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  108. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  109. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/fixtures/echo_v1.py +0 -0
  110. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/fixtures/pyproject.toml +0 -0
  111. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  112. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/test_color_codeword_tasks.py +0 -0
  113. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/test_configs.py +0 -0
  114. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/test_e2e.py +0 -0
  115. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/test_envs.py +0 -0
  116. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/test_graph.py +0 -0
  117. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/test_judges.py +0 -0
  118. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/test_taskset.py +0 -0
  119. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/tests/v1/test_trace.py +0 -0
  120. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/__init__.py +0 -0
  121. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/cli/__init__.py +0 -0
  122. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/cli/commands/__init__.py +0 -0
  123. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/cli/commands/build.py +0 -0
  124. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/cli/commands/eval.py +0 -0
  125. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/cli/commands/gepa.py +0 -0
  126. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/cli/commands/init.py +0 -0
  127. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/cli/commands/install.py +0 -0
  128. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/cli/commands/setup.py +0 -0
  129. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/cli/plugins/__init__.py +0 -0
  130. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/cli/plugins/prime.py +0 -0
  131. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/cli/tui.py +0 -0
  132. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/__init__.py +0 -0
  133. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/clients/__init__.py +0 -0
  134. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/clients/anthropic_messages_client.py +0 -0
  135. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/clients/client.py +0 -0
  136. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/clients/nemorl_chat_completions_client.py +0 -0
  137. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/clients/openai_chat_completions_client.py +0 -0
  138. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/clients/openai_chat_completions_token_client.py +0 -0
  139. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/clients/openai_completions_client.py +0 -0
  140. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/clients/openai_responses_client.py +0 -0
  141. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/clients/renderer_client.py +0 -0
  142. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/decorators.py +0 -0
  143. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/__init__.py +0 -0
  144. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/env_group.py +0 -0
  145. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/environment.py +0 -0
  146. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/README.md +0 -0
  147. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/__init__.py +0 -0
  148. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/cli_agent_env.py +0 -0
  149. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/README.md +0 -0
  150. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/__init__.py +0 -0
  151. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/_filter.py +0 -0
  152. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/composable_env.py +0 -0
  153. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/harness.py +0 -0
  154. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/harnesses/__init__.py +0 -0
  155. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  156. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/harnesses/opencode.py +0 -0
  157. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/harnesses/prompt.txt +0 -0
  158. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/harnesses/rlm.py +0 -0
  159. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/sandbox_debug_env.py +0 -0
  160. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/swe_debug_env.py +0 -0
  161. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/task.py +0 -0
  162. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/__init__.py +0 -0
  163. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  164. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  165. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  166. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
  167. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
  168. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  169. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
  170. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  171. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  172. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/README.md +0 -0
  173. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  174. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  175. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  176. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  177. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  178. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  179. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  180. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  181. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  182. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  183. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  184. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  185. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  186. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  187. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  188. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  189. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  190. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  191. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  192. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  193. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  194. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  195. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  196. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/gym_env.py +0 -0
  197. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/harbor_env/__init__.py +0 -0
  198. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/harbor_env/env.py +0 -0
  199. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/harbor_env/mcp.py +0 -0
  200. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/mcp_env.py +0 -0
  201. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/opencode_env.py +0 -0
  202. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/opencode_qa_env.py +0 -0
  203. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/opencode_rlm_env.py +0 -0
  204. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/sandbox_mixin.py +0 -0
  205. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/utils/__init__.py +0 -0
  206. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/utils/file_locks.py +0 -0
  207. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/experimental/utils/git_checkout_cache.py +0 -0
  208. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/integrations/README.md +0 -0
  209. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/integrations/__init__.py +0 -0
  210. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/integrations/browser_env/README.md +0 -0
  211. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/integrations/browser_env/__init__.py +0 -0
  212. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/integrations/browser_env/browser_env.py +0 -0
  213. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/integrations/browser_env/modes/__init__.py +0 -0
  214. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/integrations/browser_env/modes/base.py +0 -0
  215. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  216. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  217. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/integrations/openenv_env.py +0 -0
  218. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/integrations/reasoninggym_env.py +0 -0
  219. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/integrations/textarena_env.py +0 -0
  220. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/multiturn_env.py +0 -0
  221. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/python_env.py +0 -0
  222. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/sandbox_env.py +0 -0
  223. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/singleturn_env.py +0 -0
  224. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/stateful_tool_env.py +0 -0
  225. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/envs/tool_env.py +0 -0
  226. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/errors.py +0 -0
  227. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/gepa/__init__.py +0 -0
  228. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/gepa/adapter.py +0 -0
  229. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/gepa/config.py +0 -0
  230. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/gepa/display.py +0 -0
  231. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/gepa/gepa_utils.py +0 -0
  232. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/parsers/__init__.py +0 -0
  233. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/parsers/maybe_think_parser.py +0 -0
  234. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/parsers/parser.py +0 -0
  235. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/parsers/think_parser.py +0 -0
  236. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/parsers/xml_parser.py +0 -0
  237. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/rubrics/__init__.py +0 -0
  238. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/rubrics/experimental/hybrid_math_rubric.py +0 -0
  239. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/rubrics/judge_rubric.py +0 -0
  240. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/rubrics/math_rubric.py +0 -0
  241. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/rubrics/rubric.py +0 -0
  242. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/rubrics/rubric_group.py +0 -0
  243. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/scripts/__init__.py +0 -0
  244. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/scripts/build.py +0 -0
  245. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/scripts/eval.py +0 -0
  246. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/scripts/gepa.py +0 -0
  247. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/scripts/init.py +0 -0
  248. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/scripts/install.py +0 -0
  249. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/scripts/setup.py +0 -0
  250. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/scripts/tui.py +0 -0
  251. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/serve/__init__.py +0 -0
  252. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/serve/client/env_client.py +0 -0
  253. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/serve/client/zmq_env_client.py +0 -0
  254. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/serve/server/__init__.py +0 -0
  255. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/serve/server/env_router.py +0 -0
  256. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/serve/server/env_server.py +0 -0
  257. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/serve/server/env_worker.py +0 -0
  258. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/serve/server/zmq_env_server.py +0 -0
  259. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/serve/types.py +0 -0
  260. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/types.py +0 -0
  261. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/__init__.py +0 -0
  262. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/async_utils.py +0 -0
  263. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/client_utils.py +0 -0
  264. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/config_utils.py +0 -0
  265. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/data_utils.py +0 -0
  266. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/display_utils.py +0 -0
  267. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/env_config_utils.py +0 -0
  268. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/env_utils.py +0 -0
  269. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/error_utils.py +0 -0
  270. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/eval_display.py +0 -0
  271. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/eval_utils.py +0 -0
  272. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/heartbeat.py +0 -0
  273. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/import_utils.py +0 -0
  274. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/install_utils.py +0 -0
  275. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/interception_utils.py +0 -0
  276. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/logging_utils.py +0 -0
  277. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/message_utils.py +0 -0
  278. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/metric_utils.py +0 -0
  279. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/path_utils.py +0 -0
  280. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/pricing_utils.py +0 -0
  281. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/process_utils.py +0 -0
  282. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/response_utils.py +0 -0
  283. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/save_utils.py +0 -0
  284. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/serve_utils.py +0 -0
  285. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/thread_utils.py +0 -0
  286. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/threaded_sandbox_client.py +0 -0
  287. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/tool_utils.py +0 -0
  288. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/usage_utils.py +0 -0
  289. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/legacy/utils/version_utils.py +0 -0
  290. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/acp/__init__.py +0 -0
  291. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/acp/runner.py +0 -0
  292. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/__init__.py +0 -0
  293. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  294. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/dashboard/base.py +0 -0
  295. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/dashboard/eval.py +0 -0
  296. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/dashboard/replay.py +0 -0
  297. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/dashboard/validate.py +0 -0
  298. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/debug.py +0 -0
  299. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/eval/__init__.py +0 -0
  300. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/eval/main.py +0 -0
  301. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/eval/resume.py +0 -0
  302. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/eval/runner.py +0 -0
  303. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/gepa.py +0 -0
  304. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/init.py +0 -0
  305. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/output.py +0 -0
  306. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/replay.py +0 -0
  307. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/resolve.py +0 -0
  308. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/resume.py +0 -0
  309. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/cli/validate.py +0 -0
  310. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/clients/__init__.py +0 -0
  311. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/clients/base.py +0 -0
  312. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/__init__.py +0 -0
  313. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/agent.py +0 -0
  314. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/cli/__init__.py +0 -0
  315. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/cli/debug.py +0 -0
  316. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/cli/env.py +0 -0
  317. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/cli/eval.py +0 -0
  318. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/cli/init.py +0 -0
  319. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/cli/replay.py +0 -0
  320. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/cli/validate.py +0 -0
  321. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/client.py +0 -0
  322. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/env.py +0 -0
  323. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/harness.py +0 -0
  324. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/judge.py +0 -0
  325. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/retries.py +0 -0
  326. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/serve.py +0 -0
  327. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/configs/taskset.py +0 -0
  328. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/dialects/__init__.py +0 -0
  329. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/env.py +0 -0
  330. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/envs/__init__.py +0 -0
  331. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  332. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  333. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  334. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/envs/best_of_n/env.py +0 -0
  335. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  336. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  337. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/envs/single_agent/env.py +0 -0
  338. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  339. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/envs/user_sim/env.py +0 -0
  340. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/episode.py +0 -0
  341. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/errors.py +0 -0
  342. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/gepa/__init__.py +0 -0
  343. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/gepa/adapter.py +0 -0
  344. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/gepa/config.py +0 -0
  345. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/gepa/dataset.py +0 -0
  346. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/gepa/reflection.py +0 -0
  347. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/gepa/runner.py +0 -0
  348. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/__init__.py +0 -0
  349. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  350. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  351. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  352. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  353. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  354. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  355. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  356. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/codex/harness.py +0 -0
  357. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  358. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  359. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  360. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  361. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  362. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  363. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  364. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  365. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/node.py +0 -0
  366. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/null/__init__.py +0 -0
  367. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/null/harness.py +0 -0
  368. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/null/program.py +0 -0
  369. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  370. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
  371. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  372. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/pi/harness.py +0 -0
  373. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/pool/__init__.py +0 -0
  374. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/pool/harness.py +0 -0
  375. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  376. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  377. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  378. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  379. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  380. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/interception/__init__.py +0 -0
  381. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/interception/base.py +0 -0
  382. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/interception/pool.py +0 -0
  383. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  384. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/interception/tunnel/base.py +0 -0
  385. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/interception/tunnel/custom.py +0 -0
  386. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/interception/tunnel/prime.py +0 -0
  387. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/judge.py +0 -0
  388. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/judges/__init__.py +0 -0
  389. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/judges/reference.py +0 -0
  390. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/judges/reference.txt +0 -0
  391. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/judges/rubric.py +0 -0
  392. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/judges/rubric.txt +0 -0
  393. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/mcp/__init__.py +0 -0
  394. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/mcp/server.py +0 -0
  395. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/mcp/toolset.py +0 -0
  396. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/runtimes/limiters.py +0 -0
  397. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/runtimes/modal.py +0 -0
  398. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/runtimes/subprocess.py +0 -0
  399. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/serve/__init__.py +0 -0
  400. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/serve/client.py +0 -0
  401. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/serve/encoding.py +0 -0
  402. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/serve/pool.py +0 -0
  403. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/serve/server.py +0 -0
  404. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/serve/types.py +0 -0
  405. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/state.py +0 -0
  406. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/taskset.py +0 -0
  407. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/__init__.py +0 -0
  408. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  409. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/harbor/env.py +0 -0
  410. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  411. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  412. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  413. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  414. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
  415. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
  416. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
  417. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
  418. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  419. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  420. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  421. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  422. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/__init__.py +0 -0
  423. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/aio.py +0 -0
  424. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/artifacts.py +0 -0
  425. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/format.py +0 -0
  426. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/generic.py +0 -0
  427. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/git.py +0 -0
  428. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/image.py +0 -0
  429. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/install.py +0 -0
  430. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/install_utils.py +0 -0
  431. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/interrupt.py +0 -0
  432. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/loaders.py +0 -0
  433. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/logging.py +0 -0
  434. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/memory.py +0 -0
  435. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/paths.py +0 -0
  436. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/platform.py +0 -0
  437. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/prime_config.py +0 -0
  438. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/retries.py +0 -0
  439. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/score.py +0 -0
  440. {verifiers-0.3.1.dev24 → verifiers-0.3.1.dev31}/verifiers/v1/utils/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: verifiers
3
- Version: 0.3.1.dev24
3
+ Version: 0.3.1.dev31
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
@@ -76,10 +76,23 @@ dev = [
76
76
  # from this repo. The built-in tasksets/harnesses ship inside verifiers (verifiers/v1/...).
77
77
  examples = [
78
78
  "compact",
79
- "gsm8k", "glossary", "deepwiki", "wiki-search", "code-golf",
80
- "proposer-solver", "reverse-text", "color-codeword",
81
- "wordle", "openenv-wordle", "alphabet-sort", "scratchpad",
79
+ "gsm8k",
80
+ "glossary",
81
+ "deepwiki",
82
+ "wiki-search",
83
+ "code-golf",
84
+ "proposer-solver",
85
+ "reverse-text",
86
+ "color-codeword",
87
+ "wordle",
88
+ "openenv-wordle",
89
+ "alphabet-sort",
90
+ "scratchpad",
82
91
  "kuhn-poker",
92
+ "interception",
93
+ "grayscale-interception",
94
+ "bash-interception",
95
+ "web-search-interception",
83
96
  ]
84
97
 
85
98
  [project.optional-dependencies]
@@ -164,6 +177,10 @@ color-codeword = { path = "environments/color_codeword", editable = true }
164
177
  alphabet-sort = { path = "environments/alphabet_sort", editable = true }
165
178
  scratchpad = { path = "environments/scratchpad", editable = true }
166
179
  kuhn-poker = { path = "environments/kuhn_poker", editable = true }
180
+ interception = { path = "environments/interception", editable = true }
181
+ grayscale-interception = { path = "environments/grayscale_interception", editable = true }
182
+ bash-interception = { path = "environments/bash_interception", editable = true }
183
+ web-search-interception = { path = "environments/web_search_interception", editable = true }
167
184
 
168
185
  [tool.uv.exclude-newer-package]
169
186
  # Bounded cutoffs for the explicitly requested tool upgrades.
@@ -5,6 +5,9 @@ from verifiers.v1.graph import MessageNode
5
5
  from verifiers.v1.types import AssistantMessage, UserMessage
6
6
 
7
7
  PLUGGED_FNS_PY = """
8
+ from verifiers.v1 import Trace
9
+
10
+
8
11
  async def reply_length(trace) -> float:
9
12
  return float(len(trace.last_reply or ""))
10
13
 
@@ -17,7 +20,7 @@ async def marker(trace) -> float:
17
20
  return 0.125
18
21
 
19
22
 
20
- async def two_turns(trace) -> bool:
23
+ async def two_turns(trace: Trace) -> bool:
21
24
  return trace.num_turns >= 2
22
25
  """
23
26
 
@@ -80,7 +80,9 @@ from verifiers.v1.trace import (
80
80
  Branch,
81
81
  Error,
82
82
  EvalRunInfo,
83
+ InterceptRecord,
83
84
  ModelCall,
85
+ PolicyEvent,
84
86
  Reward,
85
87
  RunInfo,
86
88
  TimeSpan,
@@ -102,6 +104,7 @@ from verifiers.v1.types import (
102
104
  Message,
103
105
  MessageContent,
104
106
  Messages,
107
+ Request,
105
108
  Response,
106
109
  Sampling,
107
110
  SamplingConfig,
@@ -120,7 +123,13 @@ from verifiers.v1.utils.artifacts import (
120
123
  collect,
121
124
  restore,
122
125
  )
123
- from verifiers.v1.utils.decorators import metric, reward, stop, tool
126
+ from verifiers.v1.utils.decorators import (
127
+ intercept,
128
+ metric,
129
+ reward,
130
+ stop,
131
+ tool,
132
+ )
124
133
  from verifiers.v1.utils.git import (
125
134
  PATCH_CAP_BYTES as PATCH_CAP_BYTES,
126
135
  )
@@ -177,6 +186,7 @@ __all__ = [ # noqa: RUF022 - grouped by public API area
177
186
  "Message",
178
187
  "MessageContent",
179
188
  "Messages",
189
+ "Request",
180
190
  "Response",
181
191
  "Sampling",
182
192
  "SamplingConfig",
@@ -204,6 +214,7 @@ __all__ = [ # noqa: RUF022 - grouped by public API area
204
214
  "RunInfo",
205
215
  "EvalRunInfo",
206
216
  "ModelCall",
217
+ "PolicyEvent",
207
218
  "TrainRunInfo",
208
219
  "VersionInfo",
209
220
  "State",
@@ -218,10 +229,13 @@ __all__ = [ # noqa: RUF022 - grouped by public API area
218
229
  "AgentSpan",
219
230
  "Error",
220
231
  # decorators
232
+ "intercept",
221
233
  "stop",
222
234
  "tool",
223
235
  "metric",
224
236
  "reward",
237
+ # interception
238
+ "InterceptRecord",
225
239
  # errors
226
240
  "RolloutError",
227
241
  "EnvError",
@@ -19,13 +19,13 @@ from verifiers.v1.clients import (
19
19
  ModelContext,
20
20
  )
21
21
  from verifiers.v1.configs.agent import AgentConfig, TimeoutConfig
22
+ from verifiers.v1.configs.runtime import NetworkPolicyConfig
22
23
  from verifiers.v1.dialects import parse_message
23
24
  from verifiers.v1.harness import Harness
24
25
  from verifiers.v1.interception import Interception, InterceptionServer
25
26
  from verifiers.v1.mcp import SharedToolServer
26
27
  from verifiers.v1.rollout import Rollout, RolloutTimeouts
27
28
  from verifiers.v1.runtimes import (
28
- NetworkPolicyConfig,
29
29
  Runtime,
30
30
  RuntimeConfig,
31
31
  SubprocessConfig,
@@ -465,15 +465,11 @@ class Agent:
465
465
  interaction = Interaction(run, gate=self._gate)
466
466
  async with self._gate or nullcontext():
467
467
  opened = await run.open()
468
- if not opened:
468
+ if not opened and (failure := run.failure) is not None:
469
469
  trace = await run.close()
470
470
  if trace.agent.runtime is not None:
471
471
  trace.agent.runtime.borrowed = runtime is not None
472
- if not opened:
473
- failure = run.failure
474
- if failure is None: # `open()` returning False always captures one.
475
- raise RuntimeError("rollout setup failed without a captured error")
476
- raise failure
472
+ raise failure
477
473
  try:
478
474
  yield interaction
479
475
  except Exception as e:
@@ -33,14 +33,14 @@ class Client(ABC):
33
33
  self,
34
34
  dialect: Dialect,
35
35
  body: dict,
36
- model: str,
37
- sampling_args: SamplingConfig,
36
+ sampling: SamplingConfig,
38
37
  session_id: str | None = None,
39
38
  turn: PendingTurn | None = None,
40
39
  headers: Mapping[str, str] | None = None,
41
40
  ) -> Response:
42
- """Run one completion -> a vf `Response`. The eval client forwards the native JSON
43
- and parses a copy via `dialect`; the train client renders `body` to token ids.
41
+ """Run one completion -> a vf `Response`. `body` is the final effective native
42
+ request after overrides and policy mediation: the eval client forwards it unchanged,
43
+ while the train client renders it to token ids using the resolved `sampling` config.
44
44
  `session_id` is the rollout's trace id (sent as `SESSION_ID_HEADER`); `turn` is the
45
45
  graph-resolved prompt prefix, used by train clients for renderer bridging."""
46
46
 
@@ -48,14 +48,11 @@ class Client(ABC):
48
48
  self,
49
49
  dialect: Dialect,
50
50
  body: dict,
51
- model: str,
52
- sampling_args: SamplingConfig,
53
51
  session_id: str | None = None,
54
52
  headers: Mapping[str, str] | None = None,
55
53
  ) -> RelayReply:
56
- """Stream a (possibly SSE) response back, relaying the provider's bytes — the proxy's
57
- path for a streaming request. Only the relay (eval) client supports it; the renderer
58
- generates and cannot stream."""
54
+ """Stream a response for the final effective `body`, relaying the provider's bytes.
55
+ Only the relay (eval) client supports it; the renderer generates and cannot stream."""
59
56
  raise NotImplementedError(f"{type(self).__name__} does not support streaming")
60
57
 
61
58
  async def relay_aux(
@@ -70,15 +70,14 @@ class EvalClient(Client):
70
70
  self,
71
71
  dialect: Dialect,
72
72
  body: dict,
73
- model: str,
74
- sampling_args: SamplingConfig,
73
+ sampling: SamplingConfig,
75
74
  session_id: str | None = None,
76
75
  turn: PendingTurn | None = None,
77
76
  headers: Mapping[str, str] | None = None,
78
77
  ) -> Response:
79
78
  resp = await self._request(
80
79
  join_url(self.base_url, dialect.upstream_path),
81
- dialect.apply_overrides(body, model, sampling_args),
80
+ body,
82
81
  self._headers(dialect, headers, session_id),
83
82
  )
84
83
  # A corrupted response (e.g. an HTML error page or a truncated body on a
@@ -164,8 +163,6 @@ class EvalClient(Client):
164
163
  self,
165
164
  dialect: Dialect,
166
165
  body: dict,
167
- model: str,
168
- sampling_args: SamplingConfig,
169
166
  session_id: str | None = None,
170
167
  headers: Mapping[str, str] | None = None,
171
168
  ) -> RelayReply:
@@ -173,7 +170,7 @@ class EvalClient(Client):
173
170
  # between them. Error responses are mapped before any event is handed back.
174
171
  resp = await self._request(
175
172
  join_url(self.base_url, dialect.upstream_path),
176
- dialect.apply_overrides(body, model, sampling_args),
173
+ body,
177
174
  self._headers(dialect, headers, session_id),
178
175
  stream=True,
179
176
  )
@@ -319,8 +319,7 @@ class TrainClient(Client):
319
319
  self,
320
320
  dialect: Dialect,
321
321
  body: dict,
322
- model: str,
323
- sampling_args: SamplingConfig,
322
+ sampling: SamplingConfig,
324
323
  session_id: str | None = None,
325
324
  turn: PendingTurn | None = None,
326
325
  headers: Mapping[str, str] | None = None,
@@ -343,7 +342,9 @@ class TrainClient(Client):
343
342
  prompt = turn.prompt
344
343
  tools = parse_tools(body.get("tools"))
345
344
  else:
346
- prompt, tools = dialect.parse_request(body)
345
+ request = dialect.parse_request(body)
346
+ prompt = request.messages
347
+ tools = request.tools
347
348
  from renderers.client import generate
348
349
 
349
350
  wire_tools = [tool_to_wire(t) for t in tools] if tools else None
@@ -353,7 +354,8 @@ class TrainClient(Client):
353
354
  prompt_ids: list[int] | None = None
354
355
  multi_modal_data = None
355
356
  prompt_attribution: RenderedTokens | None = None
356
- raw_sampling = sampling_args.model_dump(exclude_none=True)
357
+ model = body["model"]
358
+ raw_sampling = sampling.model_dump(exclude_none=True)
357
359
  sampling_params: dict[str, Any] = dict(
358
360
  raw_sampling.pop("extra_body", None) or {}
359
361
  )
@@ -0,0 +1,66 @@
1
+ """Shared configuration for execution-time network policy."""
2
+
3
+ from fnmatch import fnmatchcase
4
+ from typing import Self
5
+ from urllib.parse import urlsplit
6
+
7
+ from pydantic import Field, model_validator
8
+ from pydantic_config import BaseConfig
9
+
10
+
11
+ def network_rule_matches(rule: str, scheme: str, host: str, port: int) -> bool:
12
+ """Match a network-policy host pattern or URL origin. Paths are ignored."""
13
+ value = rule.lower().rstrip("/")
14
+ try:
15
+ parsed = urlsplit(value if "://" in value else f"//{value}")
16
+ rule_port = parsed.port
17
+ except ValueError:
18
+ return False
19
+ pattern = (parsed.hostname or "").rstrip(".")
20
+ if not pattern or (parsed.scheme and parsed.scheme != scheme):
21
+ return False
22
+ if parsed.scheme and rule_port is None:
23
+ rule_port = 443 if parsed.scheme == "https" else 80
24
+ if rule_port is not None and rule_port != port:
25
+ return False
26
+ host = host.lower().rstrip(".")
27
+ return fnmatchcase(host, pattern) or (
28
+ pattern.startswith("*.") and host == pattern[2:]
29
+ )
30
+
31
+
32
+ class NetworkPolicyConfig(BaseConfig):
33
+ """Shared execution-time policy surface for runtimes that support it."""
34
+
35
+ allow: list[str] = Field(default_factory=lambda: ["*"])
36
+ """Destinations allowed during execution; `*` is unrestricted and `[]` is
37
+ framework-only."""
38
+ block: list[str] = Field(default_factory=list)
39
+ """Destinations denied during execution; any `*` makes the policy framework-only."""
40
+
41
+ @model_validator(mode="after")
42
+ def validate_network_policy(self) -> Self:
43
+ if not self.allow or "*" in self.block:
44
+ # Empty allowlists and wildcard blocks both mean framework-only access.
45
+ self.allow = []
46
+ self.block = ["*"]
47
+ elif self.allow != ["*"] and self.block:
48
+ raise ValueError(
49
+ "non-empty concrete allow and block egress lists are mutually exclusive"
50
+ )
51
+ return self
52
+
53
+ @property
54
+ def network_restricted(self) -> bool:
55
+ return "*" not in self.allow or bool(self.block)
56
+
57
+ def with_task_network_policy(self, allow: list[str], block: list[str]) -> Self:
58
+ values = self.model_dump()
59
+ if "*" in allow:
60
+ allow = self.allow
61
+ elif "*" not in self.allow:
62
+ # Rules are opaque: guessing overlap between different globs could widen the policy.
63
+ runtime_allow = set(self.allow)
64
+ allow = [rule for rule in allow if rule in runtime_allow]
65
+ block = list(dict.fromkeys([*block, *self.block]))
66
+ return type(self).model_validate({**values, "allow": allow, "block": block})
@@ -40,9 +40,9 @@ class TaskConfig(BaseConfig):
40
40
  """Judge plugins run after task rewards, set through `--env.taskset.task.judges`."""
41
41
 
42
42
  stops: dict[str, DecoratedFunctionConfig] = Field(default_factory=dict)
43
- """Stop conditions `(trace) -> bool` plugged by name, merged with the task's
44
- `@vf.stop` methods (a plugged function replaces a decorated one with the same
45
- name)."""
43
+ """Typed `Request`, `Response`, or `Trace` stop predicates plugged by name and
44
+ merged with the task's `@vf.stop` methods (a plugged function replaces a
45
+ decorated one with the same name)."""
46
46
  metrics: dict[str, DecoratedFunctionConfig] = Field(default_factory=dict)
47
47
  """Metrics `(task, trace, runtime) -> float` plugged by name, merged with the
48
48
  task's `@vf.metric` methods."""