verifiers 0.3.2.dev85__tar.gz → 0.3.2.dev87__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 (217) hide show
  1. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/PKG-INFO +1 -1
  2. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/dialects/chat.py +7 -2
  3. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/utils/core.py +25 -2
  4. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/interception/server.py +29 -11
  5. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/session.py +2 -1
  6. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/.gitignore +0 -0
  7. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/LICENSE +0 -0
  8. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/README.md +0 -0
  9. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/pyproject.toml +0 -0
  10. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/conftest.py +0 -0
  11. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  12. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/fixtures/duet_v1.py +0 -0
  13. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  14. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  15. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  16. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  17. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/fixtures/echo_v1.py +0 -0
  18. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/fixtures/pyproject.toml +0 -0
  19. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  20. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/test_color_codeword_tasks.py +0 -0
  21. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/test_configs.py +0 -0
  22. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/test_e2e.py +0 -0
  23. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/test_envs.py +0 -0
  24. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/test_graph.py +0 -0
  25. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/test_judges.py +0 -0
  26. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/test_platform_run.py +0 -0
  27. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/test_scoring.py +0 -0
  28. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/test_taskset.py +0 -0
  29. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/tests/v1/test_trace.py +0 -0
  30. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/__init__.py +0 -0
  31. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/cli/commands/init.py +0 -0
  32. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/__init__.py +0 -0
  33. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/acp/__init__.py +0 -0
  34. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/acp/runner.py +0 -0
  35. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/agent.py +0 -0
  36. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/__init__.py +0 -0
  37. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  38. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/dashboard/base.py +0 -0
  39. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/dashboard/eval.py +0 -0
  40. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/dashboard/replay.py +0 -0
  41. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/dashboard/validate.py +0 -0
  42. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/debug.py +0 -0
  43. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/eval/__init__.py +0 -0
  44. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/eval/main.py +0 -0
  45. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/eval/resume.py +0 -0
  46. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/eval/runner.py +0 -0
  47. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/gepa.py +0 -0
  48. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/init.py +0 -0
  49. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/output.py +0 -0
  50. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/replay.py +0 -0
  51. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/resolve.py +0 -0
  52. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/resume.py +0 -0
  53. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/cli/validate.py +0 -0
  54. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/clients/__init__.py +0 -0
  55. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/clients/base.py +0 -0
  56. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/clients/client.py +0 -0
  57. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/clients/eval.py +0 -0
  58. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/clients/train.py +0 -0
  59. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/__init__.py +0 -0
  60. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/agent.py +0 -0
  61. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/cli/__init__.py +0 -0
  62. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/cli/debug.py +0 -0
  63. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/cli/env.py +0 -0
  64. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/cli/eval.py +0 -0
  65. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/cli/init.py +0 -0
  66. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/cli/replay.py +0 -0
  67. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/cli/validate.py +0 -0
  68. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/client.py +0 -0
  69. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/env.py +0 -0
  70. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/harness.py +0 -0
  71. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/judge.py +0 -0
  72. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/retries.py +0 -0
  73. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/runtime.py +0 -0
  74. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/serve.py +0 -0
  75. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/task.py +0 -0
  76. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/configs/taskset.py +0 -0
  77. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/dialects/__init__.py +0 -0
  78. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/dialects/anthropic.py +0 -0
  79. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/dialects/base.py +0 -0
  80. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/dialects/responses.py +0 -0
  81. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/env.py +0 -0
  82. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/envs/__init__.py +0 -0
  83. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  84. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  85. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  86. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/envs/best_of_n/env.py +0 -0
  87. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
  88. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
  89. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  90. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  91. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/envs/single_agent/env.py +0 -0
  92. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  93. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/envs/user_sim/env.py +0 -0
  94. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/episode.py +0 -0
  95. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/errors.py +0 -0
  96. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/gepa/__init__.py +0 -0
  97. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/gepa/adapter.py +0 -0
  98. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/gepa/config.py +0 -0
  99. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/gepa/dataset.py +0 -0
  100. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/gepa/reflection.py +0 -0
  101. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/gepa/runner.py +0 -0
  102. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/graph.py +0 -0
  103. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harness.py +0 -0
  104. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/__init__.py +0 -0
  105. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  106. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/bash/harness.py +0 -0
  107. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  108. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  109. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  110. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  111. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  112. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  113. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/codex/harness.py +0 -0
  114. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  115. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  116. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  117. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  118. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  119. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  120. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  121. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  122. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/node.py +0 -0
  123. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/null/__init__.py +0 -0
  124. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/null/harness.py +0 -0
  125. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  126. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
  127. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  128. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/pi/harness.py +0 -0
  129. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/pool/__init__.py +0 -0
  130. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/pool/harness.py +0 -0
  131. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
  132. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
  133. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  134. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  135. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  136. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  137. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  138. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/utils/__init__.py +0 -0
  139. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/utils/compaction.py +0 -0
  140. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/utils/install.py +0 -0
  141. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/utils/launch.py +0 -0
  142. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/harnesses/utils/mcp.py +0 -0
  143. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/interception/__init__.py +0 -0
  144. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/interception/base.py +0 -0
  145. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/interception/pool.py +0 -0
  146. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/interception/tool.py +0 -0
  147. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  148. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/interception/tunnel/base.py +0 -0
  149. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/interception/tunnel/custom.py +0 -0
  150. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/interception/tunnel/prime.py +0 -0
  151. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/judge.py +0 -0
  152. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/judges/__init__.py +0 -0
  153. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/judges/reference.py +0 -0
  154. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/judges/reference.txt +0 -0
  155. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/judges/rubric.py +0 -0
  156. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/judges/rubric.txt +0 -0
  157. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/mcp/__init__.py +0 -0
  158. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/mcp/launch.py +0 -0
  159. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/mcp/server.py +0 -0
  160. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/mcp/toolset.py +0 -0
  161. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/rollout.py +0 -0
  162. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/runtimes/__init__.py +0 -0
  163. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/runtimes/base.py +0 -0
  164. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  165. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/runtimes/docker/egress.py +0 -0
  166. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/runtimes/limiters.py +0 -0
  167. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/runtimes/modal.py +0 -0
  168. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/runtimes/prime.py +0 -0
  169. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/runtimes/subprocess.py +0 -0
  170. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/semantic.py +0 -0
  171. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/serve/__init__.py +0 -0
  172. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/serve/client.py +0 -0
  173. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/serve/encoding.py +0 -0
  174. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/serve/pool.py +0 -0
  175. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/serve/server.py +0 -0
  176. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/serve/types.py +0 -0
  177. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/state.py +0 -0
  178. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/task.py +0 -0
  179. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/taskset.py +0 -0
  180. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/__init__.py +0 -0
  181. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  182. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/harbor/env.py +0 -0
  183. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  184. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
  185. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  186. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  187. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  188. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
  189. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
  190. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
  191. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
  192. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
  193. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  194. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  195. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  196. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  197. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/trace.py +0 -0
  198. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/types.py +0 -0
  199. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/__init__.py +0 -0
  200. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/aio.py +0 -0
  201. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/artifacts.py +0 -0
  202. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/compile.py +0 -0
  203. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/decorators.py +0 -0
  204. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/format.py +0 -0
  205. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/generic.py +0 -0
  206. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/git.py +0 -0
  207. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/image.py +0 -0
  208. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/interrupt.py +0 -0
  209. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/loaders.py +0 -0
  210. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/logging.py +0 -0
  211. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/memory.py +0 -0
  212. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/paths.py +0 -0
  213. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/platform.py +0 -0
  214. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/prime.py +0 -0
  215. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/retries.py +0 -0
  216. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/score.py +0 -0
  217. {verifiers-0.3.2.dev85 → verifiers-0.3.2.dev87}/verifiers/v1/utils/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: verifiers
3
- Version: 0.3.2.dev85
3
+ Version: 0.3.2.dev87
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
@@ -549,14 +549,19 @@ class ChatDialect(Dialect[ChatCompletion]):
549
549
 
550
550
  def stream_events(self, raw: dict) -> list[bytes]:
551
551
  choice = (raw.get("choices") or [{}])[0]
552
+ message = dict(choice.get("message") or {"role": "assistant", "content": ""})
553
+ if message.get("tool_calls"):
554
+ message["tool_calls"] = [
555
+ {**call, "index": index}
556
+ for index, call in enumerate(message["tool_calls"])
557
+ ]
552
558
  chunk = {
553
559
  **{key: value for key, value in raw.items() if key != "choices"},
554
560
  "object": "chat.completion.chunk",
555
561
  "choices": [
556
562
  {
557
563
  "index": 0,
558
- "delta": choice.get("message")
559
- or {"role": "assistant", "content": ""},
564
+ "delta": message,
560
565
  "finish_reason": choice.get("finish_reason"),
561
566
  }
562
567
  ],
@@ -9,7 +9,8 @@ from pathlib import Path
9
9
  from typing import TYPE_CHECKING
10
10
 
11
11
  import httpx
12
- from openai import APIStatusError, AsyncOpenAI
12
+ from openai import APIStatusError, AsyncOpenAI, omit
13
+ from openai.lib.streaming.chat import AsyncChatCompletionStream
13
14
 
14
15
  if TYPE_CHECKING:
15
16
  # The harness bundles this module into the generated script before execution.
@@ -191,7 +192,29 @@ async def chat(
191
192
  kwargs = {"model": model, "messages": messages, "tools": tools or None}
192
193
  if tools and tool_choice is not None:
193
194
  kwargs["tool_choice"] = tool_choice
194
- return await client.chat.completions.create(**kwargs)
195
+ raw_stream = await client.chat.completions.create(
196
+ **kwargs, stream=True, stream_options={"include_usage": True}
197
+ )
198
+ # Accumulate native deltas without auto-parsing tool arguments or treating
199
+ # finish_reason="length" as an exception: compaction owns that decision.
200
+ async with AsyncChatCompletionStream(
201
+ raw_stream=raw_stream, response_format=omit, input_tools=[]
202
+ ) as response:
203
+ completion = None
204
+ async for event in response:
205
+ if event.type == "chunk":
206
+ completion = event.snapshot
207
+ if (
208
+ completion is None
209
+ or not completion.choices
210
+ or any(choice.finish_reason is None for choice in completion.choices)
211
+ ):
212
+ raise RuntimeError("model stream ended before a completion finished")
213
+ for choice in completion.choices:
214
+ # Some providers repeat the role in each delta. The SDK concatenates
215
+ # these strings, but the role is metadata, not incremental content.
216
+ choice.message.role = "assistant"
217
+ return completion
195
218
 
196
219
 
197
220
  async def run_tool_hook(
@@ -41,7 +41,11 @@ from pydantic_core import PydanticSerializationError, from_json, to_json
41
41
  from verifiers.v1 import graph
42
42
  from verifiers.v1.clients import Client, resolve_client
43
43
  from verifiers.v1.clients.base import join_url
44
- from verifiers.v1.configs.client import BaseClientConfig, resolve_api_key
44
+ from verifiers.v1.configs.client import (
45
+ BaseClientConfig,
46
+ TrainClientConfig,
47
+ resolve_api_key,
48
+ )
45
49
  from verifiers.v1.dialects import DIALECTS, Dialect
46
50
  from verifiers.v1.dialects.base import (
47
51
  PROVIDER_CAPABILITY_POLICY_CODE,
@@ -127,15 +131,18 @@ def _capture_response(response: web.Response) -> ReplayResponse:
127
131
  data = bytes(body)
128
132
  else:
129
133
  raise TypeError("coalesced interception responses must have a byte body")
130
- return ReplayResponse(status=response.status, body=data)
134
+ return ReplayResponse(
135
+ status=response.status,
136
+ body=data,
137
+ content_type=response.headers["Content-Type"],
138
+ )
131
139
 
132
140
 
133
141
  def _replay_response(response: ReplayResponse) -> web.Response:
134
142
  return web.Response(
135
143
  body=response.body,
136
144
  status=response.status,
137
- content_type="application/json",
138
- charset="utf-8",
145
+ headers={"Content-Type": response.content_type},
139
146
  )
140
147
 
141
148
 
@@ -492,7 +499,10 @@ class InterceptionServer(Interception):
492
499
  body = json.loads(raw)
493
500
  body = dialect.apply_overrides(body, session.ctx.model, session.ctx.sampling)
494
501
  streaming = dialect.streaming(body)
495
- req_hash = await _request_digest(raw) if not streaming else b""
502
+ relay_streaming = streaming and not isinstance(
503
+ session.ctx.client, TrainClientConfig
504
+ )
505
+ req_hash = await _request_digest(raw) if not relay_streaming else b""
496
506
  # Keep `read()` for aiohttp's size guard, then release its cache and our local
497
507
  # alias after parsing so the wire body does not survive model inference.
498
508
  request._read_bytes = None
@@ -507,7 +517,7 @@ class InterceptionServer(Interception):
507
517
  session.trace.id,
508
518
  streaming,
509
519
  )
510
- # Graph atomicity under retries: one logical non-streaming call must commit at most
520
+ # Graph atomicity under retries: one logical buffered call must commit at most
511
521
  # one turn. An explicit key identifies that call directly; otherwise only the SDK's
512
522
  # retry marker activates body-digest replay, since an unmarked repeated body can be a
513
523
  # legitimate later turn.
@@ -517,14 +527,14 @@ class InterceptionServer(Interception):
517
527
  replay_key: str | None = None
518
528
  binding = (request.path, req_hash)
519
529
  if idempotency_key:
520
- if streaming and acp is None:
530
+ if relay_streaming and acp is None:
521
531
  return web.json_response(
522
532
  dialect.error_body(
523
533
  "Idempotency-Key is not supported for streaming requests"
524
534
  ),
525
535
  status=400,
526
536
  )
527
- if not streaming:
537
+ if not relay_streaming:
528
538
  replay_key = f"explicit:{idempotency_key}"
529
539
  # This key identifies the harness-to-interception hop. The server owns its
530
540
  # replay semantics, and the body has since been rewritten with rollout model
@@ -534,7 +544,7 @@ class InterceptionServer(Interception):
534
544
  for name, value in upstream_headers.items()
535
545
  if name.lower() != IDEMPOTENCY_KEY_HEADER.lower()
536
546
  }
537
- elif not streaming:
547
+ elif not relay_streaming:
538
548
  replay_key = f"retry:{request.path}:{req_hash.hex()}"
539
549
 
540
550
  if replay_key is not None:
@@ -648,7 +658,7 @@ class InterceptionServer(Interception):
648
658
  return self._fail(session, dialect, error)
649
659
 
650
660
  inspect_response = bool(session.response_interceptors or session.response_stops)
651
- if streaming:
661
+ if relay_streaming:
652
662
  return await self._stream(
653
663
  request,
654
664
  session,
@@ -663,7 +673,15 @@ class InterceptionServer(Interception):
663
673
  )
664
674
 
665
675
  def serve(response: Response) -> web.Response:
666
- served = _completion_response(response.raw)
676
+ if streaming:
677
+ # Training generates a complete response with token metadata.
678
+ # Commit it through the normal path, then frame it for SSE clients.
679
+ served = web.Response(
680
+ body=b"".join(dialect.stream_events(response.raw or {})),
681
+ content_type="text/event-stream",
682
+ )
683
+ else:
684
+ served = _completion_response(response.raw)
667
685
  if idempotent is not None:
668
686
  idempotent.response = _capture_response(served)
669
687
  idempotent.completed_at = time.monotonic()
@@ -96,7 +96,7 @@ class RolloutLimits:
96
96
 
97
97
  @dataclass
98
98
  class IdempotentRequest:
99
- """One non-streaming model request shared by its original call and retries."""
99
+ """One buffered model request shared by its original call and retries."""
100
100
 
101
101
  binding: tuple[str, bytes]
102
102
  response: "ReplayResponse | None" = None
@@ -110,6 +110,7 @@ class ReplayResponse:
110
110
 
111
111
  status: int
112
112
  body: bytes
113
+ content_type: str
113
114
 
114
115
 
115
116
  @dataclass
File without changes