verifiers 0.1.15.dev402__tar.gz → 0.1.15.dev404__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 (406) hide show
  1. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/PKG-INFO +1 -1
  2. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_renderer_client.py +35 -64
  3. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/renderer_client.py +25 -74
  4. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/clients/train.py +23 -4
  5. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/base.py +2 -2
  6. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/.gitignore +0 -0
  7. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/LICENSE +0 -0
  8. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/README.md +0 -0
  9. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/pyproject.toml +0 -0
  10. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/AGENTS.md +0 -0
  11. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/README.md +0 -0
  12. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/__init__.py +0 -0
  13. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/conftest.py +0 -0
  14. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_browser_env.py +0 -0
  15. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_build_script.py +0 -0
  16. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_cli_agent_env.py +0 -0
  17. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_client_auth_errors.py +0 -0
  18. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_client_config.py +0 -0
  19. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_client_multimodal_types.py +0 -0
  20. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_composable_env.py +0 -0
  21. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_context_token_metrics.py +0 -0
  22. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_decorator_ranks.py +0 -0
  23. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_endpoint_registry.py +0 -0
  24. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_env_group.py +0 -0
  25. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_env_server.py +0 -0
  26. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_environment.py +0 -0
  27. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_environment_extra.py +0 -0
  28. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_envs.py +0 -0
  29. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_error_chain.py +0 -0
  30. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_eval_display.py +0 -0
  31. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_eval_utils.py +0 -0
  32. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_gepa_cli.py +0 -0
  33. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_gepa_utils.py +0 -0
  34. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_gym_env.py +0 -0
  35. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_harbor_env_mcp.py +0 -0
  36. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_imports.py +0 -0
  37. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_init_script.py +0 -0
  38. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_install_utils.py +0 -0
  39. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_interception_utils.py +0 -0
  40. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_logging.py +0 -0
  41. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_math_rubric.py +0 -0
  42. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_maybe_think_parser.py +0 -0
  43. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_message_utils.py +0 -0
  44. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_message_utils_multimodal.py +0 -0
  45. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_multiturn_env.py +0 -0
  46. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_nemorl_client.py +0 -0
  47. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_openai_chat_completions_token_client.py +0 -0
  48. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_openai_responses_client.py +0 -0
  49. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_opencode_rlm_env.py +0 -0
  50. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_openenv_client.py +0 -0
  51. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_parser.py +0 -0
  52. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_path_utils.py +0 -0
  53. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_per_turn_timing.py +0 -0
  54. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_pricing_utils.py +0 -0
  55. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_prime_plugin.py +0 -0
  56. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_renderer_e2e.py +0 -0
  57. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_rlm_composable_env.py +0 -0
  58. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_rubric.py +0 -0
  59. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_rubric_group.py +0 -0
  60. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_sandbox_debug_env.py +0 -0
  61. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_sandbox_env.py +0 -0
  62. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_sandbox_mixin.py +0 -0
  63. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_save_utils.py +0 -0
  64. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_setup_script.py +0 -0
  65. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_singleturn_env.py +0 -0
  66. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_stateful_tool_env.py +0 -0
  67. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_think_parser.py +0 -0
  68. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_tool_env.py +0 -0
  69. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_tool_utils.py +0 -0
  70. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_trajectory_processing.py +0 -0
  71. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_tui_info_formatting.py +0 -0
  72. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_types.py +0 -0
  73. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_wordle_env.py +0 -0
  74. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/test_xml_parser.py +0 -0
  75. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/conftest.py +0 -0
  76. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  77. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  78. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/echo_multi_v0.py +0 -0
  79. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  80. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  81. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/echo_v0.py +0 -0
  82. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/echo_v1.py +0 -0
  83. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/pyproject.toml +0 -0
  84. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  85. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_color_codeword_tasks.py +0 -0
  86. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_configs.py +0 -0
  87. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_e2e.py +0 -0
  88. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_envs.py +0 -0
  89. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_graph.py +0 -0
  90. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_legacy.py +0 -0
  91. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/tests/v1/test_trace.py +0 -0
  92. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/AGENTS.md +0 -0
  93. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/__init__.py +0 -0
  94. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/__init__.py +0 -0
  95. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/__init__.py +0 -0
  96. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/build.py +0 -0
  97. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/eval.py +0 -0
  98. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/gepa.py +0 -0
  99. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/init.py +0 -0
  100. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/install.py +0 -0
  101. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/commands/setup.py +0 -0
  102. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/plugins/__init__.py +0 -0
  103. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/plugins/prime.py +0 -0
  104. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/cli/tui.py +0 -0
  105. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/__init__.py +0 -0
  106. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/anthropic_messages_client.py +0 -0
  107. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/client.py +0 -0
  108. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
  109. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/openai_chat_completions_client.py +0 -0
  110. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
  111. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/openai_completions_client.py +0 -0
  112. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/clients/openai_responses_client.py +0 -0
  113. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/decorators.py +0 -0
  114. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/AGENTS.md +0 -0
  115. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/__init__.py +0 -0
  116. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/env_group.py +0 -0
  117. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/environment.py +0 -0
  118. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/README.md +0 -0
  119. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/__init__.py +0 -0
  120. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/cli_agent_env.py +0 -0
  121. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/README.md +0 -0
  122. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/__init__.py +0 -0
  123. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/_filter.py +0 -0
  124. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/composable_env.py +0 -0
  125. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/harness.py +0 -0
  126. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
  127. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  128. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
  129. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
  130. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
  131. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
  132. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
  133. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/task.py +0 -0
  134. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
  135. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  136. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  137. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  138. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
  139. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
  140. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  141. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
  142. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  143. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  144. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/README.md +0 -0
  145. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/__init__.py +0 -0
  146. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/openseeker/README.md +0 -0
  147. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/openseeker/__init__.py +0 -0
  148. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/openseeker/taskset.py +0 -0
  149. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/README.md +0 -0
  150. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/__init__.py +0 -0
  151. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/__init__.py +0 -0
  152. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/__init__.py +0 -0
  153. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/api_tools/tool_pdf.py +0 -0
  154. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/eval_toolkit.py +0 -0
  155. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/evaluator.py +0 -0
  156. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/__init__.py +0 -0
  157. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/llm_client/base_client.py +0 -0
  158. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/__init__.py +0 -0
  159. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/prompts/cache_prompts.py +0 -0
  160. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/__init__.py +0 -0
  161. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/cache_filesys.py +0 -0
  162. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/load_eval_script.py +0 -0
  163. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/misc.py +0 -0
  164. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/tool_visit.py +0 -0
  165. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/utils/url_tools.py +0 -0
  166. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/obj_task_eval/verification_tree.py +0 -0
  167. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/open_ended.py +0 -0
  168. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/quest/taskset.py +0 -0
  169. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/README.md +0 -0
  170. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/__init__.py +0 -0
  171. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/redsearcher/taskset.py +0 -0
  172. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/search/search_tasksets.py +0 -0
  173. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
  174. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  175. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  176. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  177. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  178. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  179. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  180. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  181. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  182. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  183. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  184. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  185. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  186. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  187. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  188. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  189. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  190. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  191. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  192. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  193. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  194. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  195. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  196. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  197. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/gym_env.py +0 -0
  198. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
  199. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/harbor_env/env.py +0 -0
  200. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
  201. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/mcp_env.py +0 -0
  202. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/opencode_env.py +0 -0
  203. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
  204. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
  205. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
  206. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/utils/__init__.py +0 -0
  207. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/utils/file_locks.py +0 -0
  208. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
  209. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/README.md +0 -0
  210. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/__init__.py +0 -0
  211. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/README.md +0 -0
  212. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
  213. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
  214. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
  215. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
  216. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  217. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  218. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/openenv_env.py +0 -0
  219. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
  220. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/integrations/textarena_env.py +0 -0
  221. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/multiturn_env.py +0 -0
  222. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/python_env.py +0 -0
  223. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/sandbox_env.py +0 -0
  224. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/singleturn_env.py +0 -0
  225. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/stateful_tool_env.py +0 -0
  226. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/envs/tool_env.py +0 -0
  227. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/errors.py +0 -0
  228. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/gepa/__init__.py +0 -0
  229. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/gepa/adapter.py +0 -0
  230. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/gepa/config.py +0 -0
  231. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/gepa/display.py +0 -0
  232. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/gepa/gepa_utils.py +0 -0
  233. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/parsers/__init__.py +0 -0
  234. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/parsers/maybe_think_parser.py +0 -0
  235. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/parsers/parser.py +0 -0
  236. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/parsers/think_parser.py +0 -0
  237. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/parsers/xml_parser.py +0 -0
  238. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/README.md +0 -0
  239. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/__init__.py +0 -0
  240. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/inference/__init__.py +0 -0
  241. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/inference/client.py +0 -0
  242. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/inference/server.py +0 -0
  243. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/trainer/__init__.py +0 -0
  244. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/trainer/config.py +0 -0
  245. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/trainer/orchestrator.py +0 -0
  246. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/trainer/trainer.py +0 -0
  247. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rl/trainer/utils.py +0 -0
  248. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rubrics/__init__.py +0 -0
  249. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
  250. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rubrics/judge_rubric.py +0 -0
  251. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rubrics/math_rubric.py +0 -0
  252. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rubrics/rubric.py +0 -0
  253. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/rubrics/rubric_group.py +0 -0
  254. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/__init__.py +0 -0
  255. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/build.py +0 -0
  256. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/eval.py +0 -0
  257. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/gepa.py +0 -0
  258. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/init.py +0 -0
  259. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/install.py +0 -0
  260. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/rl.py +0 -0
  261. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/setup.py +0 -0
  262. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/train.py +0 -0
  263. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/tui.py +0 -0
  264. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/scripts/vllm.py +0 -0
  265. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/__init__.py +0 -0
  266. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/client/env_client.py +0 -0
  267. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/client/zmq_env_client.py +0 -0
  268. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/server/__init__.py +0 -0
  269. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/server/env_router.py +0 -0
  270. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/server/env_server.py +0 -0
  271. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/server/env_worker.py +0 -0
  272. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/server/zmq_env_server.py +0 -0
  273. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/serve/types.py +0 -0
  274. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/types.py +0 -0
  275. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/__init__.py +0 -0
  276. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/async_utils.py +0 -0
  277. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/client_utils.py +0 -0
  278. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/config_utils.py +0 -0
  279. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/data_utils.py +0 -0
  280. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/display_utils.py +0 -0
  281. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/env_config_utils.py +0 -0
  282. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/env_utils.py +0 -0
  283. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/error_utils.py +0 -0
  284. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/eval_display.py +0 -0
  285. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/eval_utils.py +0 -0
  286. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/heartbeat.py +0 -0
  287. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/import_utils.py +0 -0
  288. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/install_utils.py +0 -0
  289. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/interception_utils.py +0 -0
  290. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/logging_utils.py +0 -0
  291. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/message_utils.py +0 -0
  292. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/metric_utils.py +0 -0
  293. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/path_utils.py +0 -0
  294. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/pricing_utils.py +0 -0
  295. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/process_utils.py +0 -0
  296. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/response_utils.py +0 -0
  297. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/save_utils.py +0 -0
  298. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/serve_utils.py +0 -0
  299. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/thread_utils.py +0 -0
  300. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/threaded_sandbox_client.py +0 -0
  301. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/tool_utils.py +0 -0
  302. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/usage_utils.py +0 -0
  303. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/utils/version_utils.py +0 -0
  304. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/ARCHITECTURE.md +0 -0
  305. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/GUIDE.md +0 -0
  306. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/README.md +0 -0
  307. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/__init__.py +0 -0
  308. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/__init__.py +0 -0
  309. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  310. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/dashboard/base.py +0 -0
  311. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/dashboard/eval.py +0 -0
  312. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/dashboard/validate.py +0 -0
  313. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/eval/__init__.py +0 -0
  314. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/eval/main.py +0 -0
  315. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/eval/resume.py +0 -0
  316. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/eval/runner.py +0 -0
  317. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/init.py +0 -0
  318. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/output.py +0 -0
  319. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/resolve.py +0 -0
  320. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/serve.py +0 -0
  321. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/cli/validate.py +0 -0
  322. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/clients/__init__.py +0 -0
  323. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/clients/client.py +0 -0
  324. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/clients/config.py +0 -0
  325. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/clients/eval.py +0 -0
  326. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/configs/__init__.py +0 -0
  327. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/configs/eval.py +0 -0
  328. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/configs/init.py +0 -0
  329. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/configs/serve.py +0 -0
  330. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/configs/validate.py +0 -0
  331. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/decorators.py +0 -0
  332. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/dialects/__init__.py +0 -0
  333. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/dialects/anthropic.py +0 -0
  334. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/dialects/base.py +0 -0
  335. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/dialects/chat.py +0 -0
  336. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/dialects/responses.py +0 -0
  337. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/env.py +0 -0
  338. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/episode.py +0 -0
  339. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/errors.py +0 -0
  340. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/graph.py +0 -0
  341. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harness.py +0 -0
  342. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/__init__.py +0 -0
  343. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  344. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/bash/harness.py +0 -0
  345. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/bash/program.py +0 -0
  346. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/bash_edit/__init__.py +0 -0
  347. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/bash_edit/harness.py +0 -0
  348. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/bash_edit/program.py +0 -0
  349. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  350. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/codex/harness.py +0 -0
  351. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/default/__init__.py +0 -0
  352. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/default/harness.py +0 -0
  353. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/default/program.py +0 -0
  354. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  355. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  356. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  357. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  358. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  359. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  360. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  361. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  362. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  363. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  364. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/interception/__init__.py +0 -0
  365. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/interception/pool.py +0 -0
  366. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/interception/server.py +0 -0
  367. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/judge.py +0 -0
  368. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/legacy.py +0 -0
  369. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/loaders.py +0 -0
  370. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/mcp/__init__.py +0 -0
  371. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/mcp/launch.py +0 -0
  372. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/mcp/multiplex.py +0 -0
  373. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/mcp/server.py +0 -0
  374. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/mcp/toolset.py +0 -0
  375. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/mcp/user.py +0 -0
  376. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/retries.py +0 -0
  377. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/rollout.py +0 -0
  378. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/__init__.py +0 -0
  379. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/docker.py +0 -0
  380. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/limiters.py +0 -0
  381. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/modal.py +0 -0
  382. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/prime.py +0 -0
  383. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/runtimes/subprocess.py +0 -0
  384. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/serve/__init__.py +0 -0
  385. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/serve/client.py +0 -0
  386. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/serve/pool.py +0 -0
  387. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/serve/server.py +0 -0
  388. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/serve/types.py +0 -0
  389. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/state.py +0 -0
  390. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/task.py +0 -0
  391. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/taskset.py +0 -0
  392. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/__init__.py +0 -0
  393. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  394. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  395. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  396. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  397. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  398. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  399. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  400. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/trace.py +0 -0
  401. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/types.py +0 -0
  402. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/utils/__init__.py +0 -0
  403. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/utils/format.py +0 -0
  404. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/utils/install.py +0 -0
  405. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/utils/logging.py +0 -0
  406. {verifiers-0.1.15.dev402 → verifiers-0.1.15.dev404}/verifiers/v1/utils/memory.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: verifiers
3
- Version: 0.1.15.dev402
3
+ Version: 0.1.15.dev404
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
@@ -83,15 +83,13 @@ def test_renderer_client_uses_renderer_model_name_override():
83
83
 
84
84
 
85
85
  def test_renderer_client_threads_chat_template_kwargs_into_pool():
86
- """``sampling_args.extra_body.chat_template_kwargs`` land on the
87
- concrete RendererConfig (resolving Auto/None against
88
- ``MODEL_RENDERER_MAP`` when needed) and are stripped from the params
89
- forwarded to /generate. Covers explicit / Auto / None bases."""
90
- from renderers import AutoRendererConfig, Qwen3RendererConfig
86
+ """``sampling_args.extra_body.chat_template_kwargs`` are routed to
87
+ renderer pool construction and stripped from /generate sampling params.
88
+ Renderers owns concrete config resolution/validation."""
89
+ from renderers import Qwen3RendererConfig
91
90
 
92
91
  bases = [
93
92
  Qwen3RendererConfig(enable_thinking=True),
94
- AutoRendererConfig(preserve_all_thinking=True),
95
93
  None,
96
94
  ]
97
95
  for base in bases:
@@ -134,29 +132,16 @@ def test_renderer_client_threads_chat_template_kwargs_into_pool():
134
132
  )
135
133
  )
136
134
 
137
- expected_preserve_all = (
138
- base.preserve_all_thinking
139
- if isinstance(base, AutoRendererConfig)
140
- else False
141
- )
142
135
  create_pool_mock.assert_called_once_with(
143
136
  "Qwen/Qwen3-8B",
144
- Qwen3RendererConfig(
145
- enable_thinking=False,
146
- preserve_all_thinking=expected_preserve_all,
147
- ),
137
+ base,
148
138
  size=1,
139
+ chat_template_kwargs={"enable_thinking": False},
149
140
  )
150
141
  assert captured["sampling_params"] == {"top_k": 20}
151
142
 
152
143
 
153
- def test_renderer_client_auto_resolves_against_renderer_model_name_override():
154
- """When ``ClientConfig.renderer_model_name`` overrides the API request
155
- model, auto-resolution looks up the OVERRIDE in ``MODEL_RENDERER_MAP``
156
- (it's what loads the tokenizer the renderer holds) — not the request
157
- model, which may not be in the map at all."""
158
- from renderers import Qwen3RendererConfig
159
-
144
+ def test_renderer_client_forwards_renderer_model_name_with_chat_template_kwargs():
160
145
  RendererClient._shared_pools.clear()
161
146
 
162
147
  client = object.__new__(RendererClient)
@@ -183,7 +168,7 @@ def test_renderer_client_auto_resolves_against_renderer_model_name_override():
183
168
  asyncio.run(
184
169
  client.get_native_response(
185
170
  prompt=[{"role": "user", "content": "hi"}],
186
- model="r8-smoke", # not in MODEL_RENDERER_MAP
171
+ model="r8-smoke",
187
172
  sampling_args={
188
173
  "extra_body": {"chat_template_kwargs": {"enable_thinking": False}}
189
174
  },
@@ -191,46 +176,14 @@ def test_renderer_client_auto_resolves_against_renderer_model_name_override():
191
176
  )
192
177
  )
193
178
 
194
- # Resolves against renderer_model_name (Qwen/Qwen3-8B → "qwen3") rather
195
- # than the request "r8-smoke" (which would fall through to default).
196
179
  create_pool_mock.assert_called_once_with(
197
180
  "Qwen/Qwen3-8B",
198
- Qwen3RendererConfig(enable_thinking=False),
181
+ None,
199
182
  size=1,
183
+ chat_template_kwargs={"enable_thinking": False},
200
184
  )
201
185
 
202
186
 
203
- def test_renderer_client_rejects_invalid_chat_template_kwargs():
204
- """Unknown / mistyped chat_template_kwargs surface as a pydantic
205
- ``ValidationError`` (``extra="forbid"`` on the typed RendererConfig)."""
206
- from pydantic import ValidationError
207
- from renderers import Qwen3RendererConfig
208
-
209
- RendererClient._shared_pools.clear()
210
-
211
- client = object.__new__(RendererClient)
212
- client._renderer = None
213
- client._pool_size = 1
214
- client._config = vf.ClientConfig(
215
- client_type="renderer", renderer_config=Qwen3RendererConfig()
216
- )
217
- client._client = object() # type: ignore[attr-defined]
218
-
219
- with pytest.raises(ValidationError, match="enable_thinkng"):
220
- asyncio.run(
221
- client.get_native_response(
222
- prompt=[{"role": "user", "content": "hi"}],
223
- model="Qwen/Qwen3-8B",
224
- sampling_args={
225
- "extra_body": {
226
- "chat_template_kwargs": {"enable_thinkng": False}, # typo
227
- }
228
- },
229
- tools=None,
230
- )
231
- )
232
-
233
-
234
187
  # Provenance: Eli's review on PR #1068, comment 3150580768.
235
188
  # "RendererClient parses the GPT-OSS assistant tool call into ToolCall(name=...),
236
189
  # but ToolEnv returns ToolMessage with only content/tool_call_id, and
@@ -675,11 +628,26 @@ _TRUNCATED_ANCHOR_MODELS = [
675
628
 
676
629
 
677
630
  @lru_cache(maxsize=None)
678
- def _load_tokenizer_and_renderer(model_name: str, renderer_name: str):
631
+ def _load_tokenizer_and_renderer(
632
+ model_name: str, renderer_name: str, thinking_retention: str | None = None
633
+ ):
634
+ from renderers import AutoRendererConfig
679
635
  from transformers import AutoTokenizer
680
636
 
681
637
  tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
682
- renderer = create_renderer(tokenizer, config_from_name(renderer_name))
638
+ config = config_from_name(renderer_name)
639
+ if thinking_retention is not None:
640
+ if config is None and "thinking_retention" in AutoRendererConfig.model_fields:
641
+ config = AutoRendererConfig(thinking_retention=thinking_retention)
642
+ elif config is not None and "thinking_retention" in type(config).model_fields:
643
+ updates = {"thinking_retention": thinking_retention}
644
+ if (
645
+ thinking_retention == "all"
646
+ and "auto_drop_analysis" in type(config).model_fields
647
+ ):
648
+ updates["auto_drop_analysis"] = False
649
+ config = type(config).model_validate({**config.model_dump(), **updates})
650
+ renderer = create_renderer(tokenizer, config)
683
651
  return tokenizer, renderer
684
652
 
685
653
 
@@ -729,11 +697,14 @@ def _build_truncated_state(tokenizer, renderer):
729
697
  async def test_get_incremental_prompt_ids_bridges_over_truncated_step(
730
698
  model_id, renderer_id
731
699
  ):
732
- """The bridge anchors on the truncated step and returns new prompt_ids
733
- that start with prev_prompt + prev_completion byte-identically (the
734
- extension invariant). This is what keeps interleave_rollout from
735
- fragmenting the rollout into two samples."""
736
- tokenizer, renderer = _load_tokenizer_and_renderer(model_id, renderer_id)
700
+ """With full thinking retention, the bridge anchors on the truncated
701
+ step and returns new prompt_ids that start with prev_prompt +
702
+ prev_completion byte-identically (the extension invariant)."""
703
+ tokenizer, renderer = _load_tokenizer_and_renderer(
704
+ model_id,
705
+ renderer_id,
706
+ "all",
707
+ )
737
708
  prev_prompt_ids, prev_completion_ids, state, next_turn_prompt = (
738
709
  _build_truncated_state(tokenizer, renderer)
739
710
  )
@@ -18,7 +18,6 @@ from openai import AsyncOpenAI
18
18
  from renderers import Message as RendererMessage
19
19
  from renderers import OverlongPromptError as RendererOverlongPromptError
20
20
  from renderers import (
21
- AutoRendererConfig,
22
21
  MultimodalRenderer,
23
22
  ParsedToolCall,
24
23
  RenderedTokens,
@@ -26,13 +25,11 @@ from renderers import (
26
25
  RendererConfig,
27
26
  RendererPool,
28
27
  ToolSpec,
29
- config_from_name,
30
28
  create_renderer_pool,
31
29
  is_multimodal,
32
30
  )
33
31
  from renderers import ToolCall as RendererToolCall
34
32
  from renderers import ToolCallFunction
35
- from renderers.base import MODEL_RENDERER_MAP
36
33
  from renderers.client import _maybe_offload, generate
37
34
 
38
35
  from verifiers.clients.client import Client
@@ -100,6 +97,14 @@ def _get_value(obj: Any, key: str, default: Any = None) -> Any:
100
97
  return getattr(obj, key, default)
101
98
 
102
99
 
100
+ def _chat_template_kwargs_key(
101
+ chat_template_kwargs: Mapping[str, Any] | None,
102
+ ) -> str | None:
103
+ if not chat_template_kwargs:
104
+ return None
105
+ return json.dumps(chat_template_kwargs, sort_keys=True, separators=(",", ":"))
106
+
107
+
103
108
  def _normalize_for_comparison(value: Any, _key: str | None = None) -> Any:
104
109
  # tool_call.arguments is serialized as a string on one side (our trajectory
105
110
  # uses json.dumps with default separators) and often comes back from
@@ -380,53 +385,6 @@ async def _get_incremental_prompt_ids(
380
385
  return None
381
386
 
382
387
 
383
- def _resolve_renderer_config(
384
- base: RendererConfig | None,
385
- chat_template_kwargs: Mapping[str, Any] | None,
386
- *,
387
- renderer_model: str,
388
- ) -> RendererConfig | None:
389
- """Merge ``chat_template_kwargs`` into a typed ``RendererConfig``.
390
-
391
- When ``base`` is ``None`` or ``AutoRendererConfig`` (would auto-resolve
392
- inside ``renderers.create_renderer``), we pull resolution forward via
393
- ``MODEL_RENDERER_MAP`` so kwargs land on the concrete config variant
394
- and pydantic validates them against the actual renderer's schema —
395
- ``AutoRendererConfig`` intentionally carries only ``preserve_*`` and
396
- would reject template kwargs like ``enable_thinking``. ``renderer_model``
397
- must match what the pool will tokenize with (i.e.
398
- ``ClientConfig.renderer_model_name`` when set, else the request model),
399
- so resolution agrees with the tokenizer the renderer will hold.
400
-
401
- Kwargs override fields with the same name on the (resolved) base.
402
- Typed configs (``extra="forbid"``) reject unknown keys with a
403
- field-path error; ``DefaultRendererConfig`` (``extra="allow"``) keeps
404
- the escape hatch for arbitrary jinja kwargs.
405
- """
406
- if not chat_template_kwargs:
407
- return base
408
-
409
- # Resolve auto → concrete (mirrors ``renderers._resolve_auto``) so
410
- # ``enable_thinking`` etc. validate against the right schema instead of
411
- # ``AutoRendererConfig``'s minimal one. Carries ``preserve_*`` across.
412
- if base is None or isinstance(base, AutoRendererConfig):
413
- renderer_name = MODEL_RENDERER_MAP.get(renderer_model, "default")
414
- # ``config_from_name`` returns ``None`` only for ``"auto"``, which
415
- # ``MODEL_RENDERER_MAP.get(..., "default")`` excludes — assert for ty.
416
- concrete = config_from_name(renderer_name)
417
- assert concrete is not None
418
- if isinstance(base, AutoRendererConfig):
419
- concrete = concrete.model_copy(
420
- update={
421
- "preserve_all_thinking": base.preserve_all_thinking,
422
- "preserve_thinking_between_tool_calls": base.preserve_thinking_between_tool_calls,
423
- }
424
- )
425
- base = cast(RendererConfig, concrete)
426
-
427
- return type(base).model_validate({**base.model_dump(), **chat_template_kwargs})
428
-
429
-
430
388
  class RendererClient(
431
389
  Client[AsyncOpenAI, list[RendererMessage], dict[str, Any], ToolSpec]
432
390
  ):
@@ -439,13 +397,12 @@ class RendererClient(
439
397
  so that concurrent rollouts tokenize in parallel threads.
440
398
  """
441
399
 
442
- # Cache key is ``(renderer_model_name, pool_size, renderer_config_json)``.
443
- # ``renderer_config`` is a frozen pydantic model so it's hashable directly,
444
- # but we serialize it via ``model_dump_json()`` for a stable, deterministic
445
- # key shape that's safe across pydantic version bumps.
400
+ # Cache key is ``(renderer_model_name, pool_size, renderer_config_json,
401
+ # chat_template_kwargs_json)``. Renderers owns the concrete config
402
+ # resolution; verifiers only separates pools whose construction inputs differ.
446
403
  _shared_pools: ClassVar[
447
404
  dict[
448
- tuple[str, int, str | None],
405
+ tuple[str, int, str | None, str | None],
449
406
  RendererPool,
450
407
  ]
451
408
  ] = {}
@@ -477,6 +434,7 @@ class RendererClient(
477
434
  model: str,
478
435
  *,
479
436
  renderer_config: RendererConfig | None = None,
437
+ chat_template_kwargs: Mapping[str, Any] | None = None,
480
438
  ) -> Renderer | RendererPool:
481
439
  if self._renderer is not None:
482
440
  return self._renderer
@@ -493,14 +451,18 @@ class RendererClient(
493
451
  cfg_key = (
494
452
  renderer_config.model_dump_json() if renderer_config is not None else None
495
453
  )
496
- cache_key = (renderer_model, self._pool_size, cfg_key)
454
+ kwargs_key = _chat_template_kwargs_key(chat_template_kwargs)
455
+ cache_key = (renderer_model, self._pool_size, cfg_key, kwargs_key)
497
456
 
498
457
  with self._shared_pools_lock:
499
458
  if cache_key not in self._shared_pools:
459
+ pool_kwargs: dict[str, Any] = {"size": self._pool_size}
460
+ if chat_template_kwargs:
461
+ pool_kwargs["chat_template_kwargs"] = chat_template_kwargs
500
462
  self._shared_pools[cache_key] = create_renderer_pool(
501
463
  renderer_model,
502
464
  renderer_config,
503
- size=self._pool_size,
465
+ **pool_kwargs,
504
466
  )
505
467
 
506
468
  return self._shared_pools[cache_key]
@@ -543,25 +505,14 @@ class RendererClient(
543
505
  }
544
506
  sampling_params: dict[str, Any] = dict(args.pop("extra_body", None) or {})
545
507
 
546
- # ``chat_template_kwargs`` belong to the renderer, not the engine
547
- # peel them off the per-request sampling and fold them into the
548
- # typed RendererConfig. Pool cache key already includes the
549
- # effective config so identical kwargs reuse the same renderer.
508
+ # ``chat_template_kwargs`` belong to the renderer, not the engine.
509
+ # Renderers owns resolving them against the concrete chat template;
510
+ # verifiers only routes them into pool construction.
550
511
  chat_template_kwargs = sampling_params.pop("chat_template_kwargs", None)
551
- # Auto-resolution must agree with the model the pool will tokenize
552
- # against — ``renderer_model_name`` overrides the request ``model``
553
- # when set (same precedence ``_get_renderer_or_pool`` uses below).
554
- renderer_model = (
555
- self._config.renderer_model_name
556
- if self._config is not None and self._config.renderer_model_name is not None
557
- else model
558
- )
559
- effective_cfg = _resolve_renderer_config(
560
- self._config.renderer_config if self._config is not None else None,
561
- chat_template_kwargs,
562
- renderer_model=renderer_model,
512
+ renderer = self._get_renderer_or_pool(
513
+ model,
514
+ chat_template_kwargs=chat_template_kwargs,
563
515
  )
564
- renderer = self._get_renderer_or_pool(model, renderer_config=effective_cfg)
565
516
 
566
517
  for key in (
567
518
  "temperature",
@@ -193,12 +193,23 @@ class TrainClient(Client):
193
193
  self.renderer_model_name = renderer_model_name
194
194
  self._pool = None
195
195
 
196
- def _renderer_pool(self, model: str):
196
+ def _renderer_pool(
197
+ self,
198
+ model: str,
199
+ *,
200
+ chat_template_kwargs: Mapping[str, Any] | None = None,
201
+ ):
202
+ renderer_model = self.renderer_model_name or model
197
203
  if self._pool is None:
198
204
  from renderers import create_renderer_pool
199
205
 
206
+ pool_kwargs: dict[str, Any] = {"size": self.pool_size}
207
+ if chat_template_kwargs:
208
+ pool_kwargs["chat_template_kwargs"] = chat_template_kwargs
200
209
  self._pool = create_renderer_pool(
201
- self.renderer_model_name or model, self.config, size=self.pool_size
210
+ renderer_model,
211
+ self.config,
212
+ **pool_kwargs,
202
213
  )
203
214
  return self._pool
204
215
 
@@ -231,7 +242,6 @@ class TrainClient(Client):
231
242
  tools = parse_tools(body.get("tools"))
232
243
  else:
233
244
  prompt, tools = dialect.parse_request(body)
234
- renderer = self._renderer_pool(model)
235
245
  from renderers.client import _maybe_offload, generate
236
246
 
237
247
  wire_tools = [tool_to_wire(t) for t in tools] if tools else None
@@ -241,7 +251,16 @@ class TrainClient(Client):
241
251
  prompt_ids: list[int] | None = None
242
252
  multi_modal_data = None
243
253
  prompt_attribution: RenderedTokens | None = None
244
- sampling_params = sampling_args.model_dump(exclude_none=True)
254
+ raw_sampling = sampling_args.model_dump(exclude_none=True)
255
+ sampling_params: dict[str, Any] = dict(
256
+ raw_sampling.pop("extra_body", None) or {}
257
+ )
258
+ chat_template_kwargs = sampling_params.pop("chat_template_kwargs", None)
259
+ sampling_params.update(raw_sampling)
260
+ renderer = self._renderer_pool(
261
+ model,
262
+ chat_template_kwargs=chat_template_kwargs,
263
+ )
245
264
  bridged_turn: PendingTurn | None = None
246
265
 
247
266
  # Only build the (O(context)) previous-turn token ids once the cheap guards pass — a
@@ -192,8 +192,8 @@ class Runtime(ABC):
192
192
  {},
193
193
  )
194
194
  command = (
195
- f"{_ENSURE_UV}; uv sync --script {shlex.quote(path)} -q "
196
- f"&& uv python find --script {shlex.quote(path)}"
195
+ f"{_ENSURE_UV}; uv sync --script {shlex.quote(path)} -q --no-config "
196
+ f"&& uv python find --script {shlex.quote(path)} --no-config"
197
197
  )
198
198
  result = await self.run(["sh", "-c", command], env or {})
199
199
  if result.exit_code != 0: