verifiers 0.3.2.dev42__tar.gz → 0.3.2.dev44__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 (211) hide show
  1. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/PKG-INFO +1 -1
  2. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/pyproject.toml +0 -34
  3. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/test_configs.py +2 -8
  4. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/agent.py +1 -7
  5. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/eval/main.py +3 -5
  6. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/gepa.py +1 -1
  7. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/output.py +4 -7
  8. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/episode.py +7 -2
  9. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/graph.py +32 -1
  10. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harness.py +0 -25
  11. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/prime_agent/harness.py +0 -1
  12. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/mcp/launch.py +2 -8
  13. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/mcp/server.py +0 -3
  14. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/trace.py +11 -4
  15. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/.gitignore +0 -0
  16. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/LICENSE +0 -0
  17. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/README.md +0 -0
  18. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/conftest.py +0 -0
  19. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  20. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/fixtures/duet_v1.py +0 -0
  21. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  22. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  23. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  24. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  25. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/fixtures/echo_v1.py +0 -0
  26. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/fixtures/pyproject.toml +0 -0
  27. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  28. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/test_color_codeword_tasks.py +0 -0
  29. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/test_e2e.py +0 -0
  30. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/test_envs.py +0 -0
  31. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/test_graph.py +0 -0
  32. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/test_judges.py +0 -0
  33. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/test_scoring.py +0 -0
  34. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/test_taskset.py +0 -0
  35. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/tests/v1/test_trace.py +0 -0
  36. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/__init__.py +0 -0
  37. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/__init__.py +0 -0
  38. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/acp/__init__.py +0 -0
  39. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/acp/runner.py +0 -0
  40. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/__init__.py +0 -0
  41. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  42. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/dashboard/base.py +0 -0
  43. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/dashboard/eval.py +0 -0
  44. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/dashboard/replay.py +0 -0
  45. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/dashboard/validate.py +0 -0
  46. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/debug.py +0 -0
  47. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/eval/__init__.py +0 -0
  48. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/eval/resume.py +0 -0
  49. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/eval/runner.py +0 -0
  50. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/init.py +0 -0
  51. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/replay.py +0 -0
  52. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/resolve.py +0 -0
  53. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/resume.py +0 -0
  54. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/cli/validate.py +0 -0
  55. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/clients/__init__.py +0 -0
  56. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/clients/base.py +0 -0
  57. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/clients/client.py +0 -0
  58. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/clients/eval.py +0 -0
  59. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/clients/train.py +0 -0
  60. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/__init__.py +0 -0
  61. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/agent.py +0 -0
  62. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/cli/__init__.py +0 -0
  63. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/cli/debug.py +0 -0
  64. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/cli/env.py +0 -0
  65. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/cli/eval.py +0 -0
  66. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/cli/init.py +0 -0
  67. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/cli/replay.py +0 -0
  68. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/cli/validate.py +0 -0
  69. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/client.py +0 -0
  70. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/env.py +0 -0
  71. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/harness.py +0 -0
  72. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/judge.py +0 -0
  73. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/retries.py +0 -0
  74. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/runtime.py +0 -0
  75. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/serve.py +0 -0
  76. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/task.py +0 -0
  77. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/configs/taskset.py +0 -0
  78. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/dialects/__init__.py +0 -0
  79. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/dialects/anthropic.py +0 -0
  80. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/dialects/base.py +0 -0
  81. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/dialects/chat.py +0 -0
  82. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/dialects/responses.py +0 -0
  83. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/env.py +0 -0
  84. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/envs/__init__.py +0 -0
  85. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  86. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  87. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  88. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/envs/best_of_n/env.py +0 -0
  89. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  90. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  91. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/envs/single_agent/env.py +0 -0
  92. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  93. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/envs/user_sim/env.py +0 -0
  94. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/errors.py +0 -0
  95. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/gepa/__init__.py +0 -0
  96. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/gepa/adapter.py +0 -0
  97. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/gepa/config.py +0 -0
  98. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/gepa/dataset.py +0 -0
  99. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/gepa/reflection.py +0 -0
  100. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/gepa/runner.py +0 -0
  101. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/__init__.py +0 -0
  102. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  103. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/bash/harness.py +0 -0
  104. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  105. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  106. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  107. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  108. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  109. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  110. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/codex/harness.py +0 -0
  111. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  112. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  113. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  114. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  115. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  116. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  117. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  118. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  119. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/node.py +0 -0
  120. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/null/__init__.py +0 -0
  121. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/null/harness.py +0 -0
  122. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  123. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
  124. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  125. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/pi/harness.py +0 -0
  126. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/pool/__init__.py +0 -0
  127. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/pool/harness.py +0 -0
  128. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
  129. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  130. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  131. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  132. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  133. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  134. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/utils/__init__.py +0 -0
  135. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/utils/compaction.py +0 -0
  136. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/utils/core.py +0 -0
  137. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/utils/launch.py +0 -0
  138. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/harnesses/utils/mcp.py +0 -0
  139. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/interception/__init__.py +0 -0
  140. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/interception/base.py +0 -0
  141. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/interception/pool.py +0 -0
  142. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/interception/server.py +0 -0
  143. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/interception/tool.py +0 -0
  144. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  145. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/interception/tunnel/base.py +0 -0
  146. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/interception/tunnel/custom.py +0 -0
  147. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/interception/tunnel/prime.py +0 -0
  148. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/judge.py +0 -0
  149. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/judges/__init__.py +0 -0
  150. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/judges/reference.py +0 -0
  151. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/judges/reference.txt +0 -0
  152. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/judges/rubric.py +0 -0
  153. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/judges/rubric.txt +0 -0
  154. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/mcp/__init__.py +0 -0
  155. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/mcp/toolset.py +0 -0
  156. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/rollout.py +0 -0
  157. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/runtimes/__init__.py +0 -0
  158. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/runtimes/base.py +0 -0
  159. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  160. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/runtimes/docker/egress.py +0 -0
  161. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/runtimes/limiters.py +0 -0
  162. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/runtimes/modal.py +0 -0
  163. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/runtimes/prime.py +0 -0
  164. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/runtimes/subprocess.py +0 -0
  165. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/semantic.py +0 -0
  166. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/serve/__init__.py +0 -0
  167. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/serve/client.py +0 -0
  168. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/serve/encoding.py +0 -0
  169. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/serve/pool.py +0 -0
  170. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/serve/server.py +0 -0
  171. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/serve/types.py +0 -0
  172. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/session.py +0 -0
  173. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/state.py +0 -0
  174. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/task.py +0 -0
  175. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/taskset.py +0 -0
  176. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/__init__.py +0 -0
  177. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  178. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/harbor/env.py +0 -0
  179. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  180. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  181. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  182. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  183. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
  184. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
  185. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
  186. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
  187. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
  188. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  189. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  190. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  191. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  192. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/types.py +0 -0
  193. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/__init__.py +0 -0
  194. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/aio.py +0 -0
  195. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/artifacts.py +0 -0
  196. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/compile.py +0 -0
  197. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/decorators.py +0 -0
  198. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/format.py +0 -0
  199. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/generic.py +0 -0
  200. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/git.py +0 -0
  201. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/image.py +0 -0
  202. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/interrupt.py +0 -0
  203. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/loaders.py +0 -0
  204. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/logging.py +0 -0
  205. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/memory.py +0 -0
  206. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/paths.py +0 -0
  207. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/platform.py +0 -0
  208. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/prime.py +0 -0
  209. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/retries.py +0 -0
  210. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/verifiers/v1/utils/score.py +0 -0
  211. {verifiers-0.3.2.dev42 → verifiers-0.3.2.dev44}/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.dev42
3
+ Version: 0.3.2.dev44
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
@@ -107,33 +107,6 @@ required-version = ">=0.11.1"
107
107
  exclude-newer = "7 days"
108
108
  default-groups = ["dev", "examples"]
109
109
 
110
- # NeMo Gym declares its full platform stack; this integration only starts resource servers.
111
- [[tool.uv.dependency-metadata]]
112
- name = "nemo-gym"
113
- version = "0.4.0"
114
- requires-python = ">=3.12"
115
- requires-dist = [
116
- "aiohttp>=3.14.1",
117
- "fastapi",
118
- "gprof2dot",
119
- "hydra-core",
120
- "itsdangerous",
121
- "mcp>=1.27,<2",
122
- "omegaconf",
123
- "openai>=2.9",
124
- "orjson",
125
- "pandas",
126
- "pydantic",
127
- "pydot",
128
- "ray>=2.55.1",
129
- "requests",
130
- "rich",
131
- "typing-extensions",
132
- "uvicorn",
133
- "wandb",
134
- "yappi",
135
- ]
136
-
137
110
  [[tool.uv.index]]
138
111
  name = "pypi"
139
112
  url = "https://pypi.org/simple"
@@ -244,8 +217,6 @@ addopts = [
244
217
  ]
245
218
  markers = [
246
219
  "e2e: marks end-to-end eval-run tests (need a model API key; skipped without one)",
247
- "integration: marks tests as integration tests",
248
- "slow: marks slow-running tests (deselect with -m 'not slow')",
249
220
  # v1 e2e matrix axes — select subsets with `-m` (see tests/v1/conftest.py). A mark is applied
250
221
  # per axis, so it matches every case touching that value on any axis.
251
222
  "subprocess: v1 e2e cases touching the subprocess (host) runtime",
@@ -264,11 +235,7 @@ markers = [
264
235
  "pi: v1 e2e cases on the pi harness",
265
236
  "pool: v1 e2e cases on the pool harness",
266
237
  "codex: v1 e2e cases on the codex harness",
267
- "unit: marks tests as unit tests",
268
238
  "asyncio: marks tests as async tests",
269
- "parsers: marks tests for parser components",
270
- "rubrics: marks tests for rubric components",
271
- "environments: marks tests for environment components",
272
239
  ]
273
240
  filterwarnings = [
274
241
  "ignore::DeprecationWarning",
@@ -276,7 +243,6 @@ filterwarnings = [
276
243
  "ignore::UserWarning:transformers.*",
277
244
  "ignore:The 'repr' attribute.*:UserWarning:pydantic.*",
278
245
  "ignore:The 'frozen' attribute.*:UserWarning:pydantic.*",
279
- "ignore:.*is.*with.*str.*literal:SyntaxWarning:cellpylib.*",
280
246
  ]
281
247
  asyncio_mode = "auto"
282
248
  norecursedirs = [".git", ".tox", "dist", "build", "*.egg", "__pycache__"]
@@ -1,9 +1,7 @@
1
1
  """Every checked-in v1 eval config parses.
2
2
 
3
3
  Mirrors prime-rl's config test: glob the configs and assert each validates into its config
4
- type. The root `configs/*.toml` are the `uv run eval @ <file>` v1 configs (EvalConfig);
5
- `endpoints.toml` isn't an eval config, and `configs/eval|rl|gepa/` are the legacy
6
- `vf-eval` / training formats (different, non-v1 config classes), so both are out of scope here.
4
+ type. The root `configs/*.toml` are the `uv run eval @ <file>` v1 configs (EvalConfig).
7
5
  """
8
6
 
9
7
  import tomllib
@@ -13,11 +11,7 @@ import pytest
13
11
 
14
12
  from verifiers.v1.configs.cli.eval import EvalConfig
15
13
 
16
- CONFIGS = sorted(
17
- p
18
- for p in (Path(__file__).resolve().parents[2] / "configs").glob("*.toml")
19
- if p.name != "endpoints.toml"
20
- )
14
+ CONFIGS = sorted((Path(__file__).resolve().parents[2] / "configs").glob("*.toml"))
21
15
 
22
16
 
23
17
  @pytest.mark.parametrize("path", CONFIGS, ids=lambda p: p.name)
@@ -9,7 +9,7 @@ server; un-entered, each run brings its own."""
9
9
 
10
10
  import asyncio
11
11
  import logging
12
- from collections.abc import AsyncIterator, Callable, Iterator, Mapping
12
+ from collections.abc import AsyncIterator, Callable, Mapping
13
13
  from contextlib import asynccontextmanager, nullcontext
14
14
  from dataclasses import dataclass
15
15
  from typing import Self
@@ -733,9 +733,3 @@ class Agents:
733
733
  f"{sorted(agents) if agents else []}"
734
734
  )
735
735
  return agents[name]
736
-
737
- def __iter__(self) -> Iterator[Agent]:
738
- return iter(self._agents.values())
739
-
740
- def __len__(self) -> int:
741
- return len(self._agents)
@@ -46,11 +46,9 @@ def main(argv: list[str] | None = None) -> None:
46
46
  narrow_config(EvalConfig, argv)
47
47
  ) # full option help, narrowed to the given ids
48
48
  return
49
- # An env-block flag (or a since-moved flat axis) skips the usage gate so the
50
- # typed parse renders its did-you-mean instead of a bare usage line.
51
- typed_axis = any(
52
- a.startswith(("--env.", "--taskset.", "--harness.", "--serve.")) for a in argv
53
- )
49
+ # An env-block flag skips the usage gate so the typed parse renders its
50
+ # did-you-mean instead of a bare usage line.
51
+ typed_axis = any(a.startswith(("--env.", "--serve.")) for a in argv)
54
52
  if (
55
53
  not extract_id(argv, "env.taskset")
56
54
  and not references_config_file(argv)
@@ -42,7 +42,7 @@ def main(argv: list[str] | None = None) -> None:
42
42
  narrow_config(GEPAConfig, argv)
43
43
  ) # full option help, narrowed to the given ids
44
44
  return
45
- typed_axis = any(a.startswith(("--env.", "--taskset.", "--harness.")) for a in argv)
45
+ typed_axis = any(a.startswith("--env.") for a in argv)
46
46
  if (
47
47
  not extract_id(argv, "env.taskset")
48
48
  and not references_config_file(argv)
@@ -72,13 +72,10 @@ def attempt_log_file(run_dir: Path) -> Path:
72
72
 
73
73
 
74
74
  def saved_config_path(run_dir: Path) -> Path | None:
75
- """The run's saved resolved config (`configs/resolved/<cli>.json`; legacy runs
76
- kept it at `configs/<cli>.json`), None if absent."""
77
- for config_dir in (run_dir / CONFIG_DIR / RESOLVED_DIR, run_dir / CONFIG_DIR):
78
- candidates = sorted(config_dir.glob("*.json")) if config_dir.is_dir() else []
79
- if candidates:
80
- return candidates[0]
81
- return None
75
+ """The run's saved resolved config (`configs/resolved/<cli>.json`), None if absent."""
76
+ config_dir = run_dir / CONFIG_DIR / RESOLVED_DIR
77
+ candidates = sorted(config_dir.glob("*.json")) if config_dir.is_dir() else []
78
+ return candidates[0] if candidates else None
82
79
 
83
80
 
84
81
  # Compiling an adapter is the expensive part; run output reuses only a few model classes.
@@ -6,6 +6,7 @@ from typing import Annotated, Any, Generic, Literal, Self
6
6
  from pydantic import BaseModel, Field, model_validator
7
7
 
8
8
  from verifiers.v1.configs.agent import WireAgentConfig
9
+ from verifiers.v1.graph import RECORD_FLOAT_DECIMALS
9
10
  from verifiers.v1.state import State, StateT
10
11
  from verifiers.v1.task import DataT, WireTaskData
11
12
  from verifiers.v1.trace import EXCLUDE_FIELDS, AgentConfigT, Error, Trace, TraceTask
@@ -146,12 +147,16 @@ class Episode(BaseModel, Generic[DataT, StateT, AgentConfigT]):
146
147
  grouped.setdefault(trace.agent.name, []).append(trace)
147
148
  return grouped
148
149
 
149
- def to_record(self) -> dict[str, Any]:
150
- """JSON record without raw trace tensors, which remain on the msgpack wire."""
150
+ def to_record(
151
+ self, float_decimals: int | None = RECORD_FLOAT_DECIMALS
152
+ ) -> dict[str, Any]:
153
+ """JSON record without raw trace tensors, which remain on the msgpack wire.
154
+ Per-token float streams are rounded to `float_decimals` (`None` keeps every digit)."""
151
155
  return self.model_dump(
152
156
  mode="json",
153
157
  exclude={"traces": {"__all__": EXCLUDE_FIELDS}},
154
158
  exclude_none=True,
159
+ context={"float_decimals": float_decimals},
155
160
  )
156
161
 
157
162
 
@@ -28,7 +28,14 @@ from dataclasses import dataclass
28
28
  from typing import TYPE_CHECKING, Any
29
29
 
30
30
  import numpy as np
31
- from pydantic import BaseModel, ConfigDict, Field, field_serializer, field_validator
31
+ from pydantic import (
32
+ BaseModel,
33
+ ConfigDict,
34
+ Field,
35
+ FieldSerializationInfo,
36
+ field_serializer,
37
+ field_validator,
38
+ )
32
39
  from pydantic.json_schema import SkipJsonSchema
33
40
  from renderers.base import MultiModalData, PlaceholderRange, RenderedTokens
34
41
 
@@ -65,6 +72,14 @@ def _decode_ndarray(d: dict) -> np.ndarray:
65
72
  return np.frombuffer(d["data"], dtype=np.dtype(d["dtype"])).reshape(d["shape"])
66
73
 
67
74
 
75
+ RECORD_FLOAT_DECIMALS = 4
76
+ """Default precision of per-token float streams in JSON records (`to_record`). Full-precision
77
+ digits are noise to every record reader and the least compressible bytes of a trace; four
78
+ decimals leave a logprob within 1e-4 of what the trainer saw. `to_record(float_decimals=...)`
79
+ overrides it per dump (`None` keeps every digit). The msgpack wire (`mode="python"`) keeps
80
+ full precision — training never reads the record."""
81
+
82
+
68
83
  class MessageNode(BaseModel):
69
84
  """One message in the graph: a message plus the tokens it adds to the cumulative
70
85
  sequence. Concatenating a root→leaf path's nodes reconstructs that branch's full token
@@ -150,6 +165,22 @@ class MessageNode(BaseModel):
150
165
 
151
166
  model_config = ConfigDict(arbitrary_types_allowed=True)
152
167
 
168
+ @field_serializer(
169
+ "logprobs",
170
+ "advantages",
171
+ "reference_logprobs",
172
+ "trainer_logprobs",
173
+ "entropies",
174
+ when_used="json",
175
+ )
176
+ def serialize_record_floats(
177
+ self, values: list[float] | None, info: FieldSerializationInfo
178
+ ) -> list[float] | None:
179
+ decimals = (info.context or {}).get("float_decimals", RECORD_FLOAT_DECIMALS)
180
+ if values is None or decimals is None:
181
+ return values
182
+ return [round(value, decimals) for value in values]
183
+
153
184
  @field_serializer("multi_modal_data")
154
185
  def serialize_multi_modal_data(self, mmd: MultiModalData | None) -> dict | None:
155
186
  """`MultiModalData` -> msgpack-safe dict so the pixel tensors ride the wire; numpy
@@ -117,31 +117,6 @@ class Harness(ABC, Generic[ConfigT]):
117
117
  # `write` moves bytes, not modes; restore the execute bits scripts need.
118
118
  await runtime.run(["chmod", "+x", *executables], {})
119
119
 
120
- async def run(
121
- self,
122
- ctx: ModelContext,
123
- trace: Trace,
124
- runtime: Runtime,
125
- endpoint: str,
126
- secret: str,
127
- mcp_urls: dict[str, str],
128
- data: TaskData,
129
- messages: Messages | None = None,
130
- ) -> None:
131
- """Run ONE segment of the exchange without retaining a process: the program
132
- from launch (or, with `messages`, the user's next turn(s) via `resume`) until
133
- it yields. The rollout loop owns the exchange across segments."""
134
- async with boundary(HarnessError, f"harness {self.config.id!r}"):
135
- if messages is None:
136
- result = await self.launch(
137
- ctx, trace, runtime, endpoint, secret, mcp_urls, data
138
- )
139
- else:
140
- result = await self.resume(
141
- ctx, trace, runtime, endpoint, secret, mcp_urls, data, messages
142
- )
143
- await self._check_result(trace, runtime, result)
144
-
145
120
  async def _check_result(
146
121
  self, trace: Trace, runtime: Runtime, result: ProgramResult
147
122
  ) -> None:
@@ -97,7 +97,6 @@ class PrimeAgentHarnessConfig(HarnessConfig):
97
97
  class PrimeAgentHarness(ACPHarness[PrimeAgentHarnessConfig]):
98
98
  APPENDS_SYSTEM_PROMPT = True
99
99
  SUPPORTS_MCP = True
100
- SUPPORTS_RESUME = True
101
100
  SUPPORTS_SKILLS = True
102
101
 
103
102
  def acp_turn_result(self, trace: Trace, result: ACPTurn) -> None:
@@ -201,9 +201,8 @@ async def _install_in_sandbox(server: ServerBase, runtime: Runtime) -> str:
201
201
  await runtime.write(env_remote, env_data)
202
202
  venv = str(PurePosixPath(workdir) / ".vf-venv")
203
203
  root_q, temp_q, cache_q, venv_q = map(shlex.quote, (root, temp, cache, venv))
204
- extras = ",".join(type(server).EXTRAS)
205
204
  vf_source = shlex.quote(vf_remote)
206
- env_source = shlex.quote(env_remote + (f"[{extras}]" if extras else ""))
205
+ env_source = shlex.quote(env_remote)
207
206
  setup = (
208
207
  f"set -e; mkdir -p {root_q} {temp_q} {cache_q}; "
209
208
  f"export TMPDIR={temp_q} UV_CACHE_DIR={cache_q}; "
@@ -279,12 +278,7 @@ async def serve_in_runtime(
279
278
  env["MCP_PORT_FILE"] = port_file
280
279
  python = sys.executable
281
280
  if runtime.type != "subprocess":
282
- # Prebuilt runtime images may already contain the server and its Python
283
- # environment. Let those servers bypass redundant per-launch source
284
- # uploads and installation while preserving the existing default.
285
- python = getattr(type(server), "RUNTIME_PYTHON", None)
286
- if python is None:
287
- python = await _install_in_sandbox(server, runtime)
281
+ python = await _install_in_sandbox(server, runtime)
288
282
  command = [python, "-m", type(server).__module__]
289
283
  if runtime.type != "subprocess":
290
284
  # Providers may invoke uv after the install shell exits, so preserve its PATH.
@@ -134,9 +134,6 @@ class ServerBase(Generic[ConfigT, StateT]):
134
134
  tools bare (no `<server>_` prefix); name collisions across servers are then the taskset
135
135
  author's concern."""
136
136
 
137
- EXTRAS: ClassVar[tuple[str, ...]] = ()
138
- """Package extras the server's module needs, applied at sandbox install."""
139
-
140
137
  def __init__(self, config: ConfigT) -> None:
141
138
  self.config = config
142
139
  self._state_cls = state_cls(type(self))
@@ -18,7 +18,7 @@ if TYPE_CHECKING:
18
18
  from verifiers.v1 import graph
19
19
  from verifiers.v1.configs.agent import AgentConfig, WireAgentConfig
20
20
  from verifiers.v1.errors import ProviderError
21
- from verifiers.v1.graph import MessageNode
21
+ from verifiers.v1.graph import RECORD_FLOAT_DECIMALS, MessageNode
22
22
  from verifiers.v1.runtimes import RuntimeInfo
23
23
  from verifiers.v1.semantic import (
24
24
  ACPInfo,
@@ -728,9 +728,16 @@ class Trace(BaseModel, Generic[DataT, StateT, AgentConfigT]):
728
728
  self.ok = False
729
729
  self.stop("error")
730
730
 
731
- def to_record(self) -> dict[str, Any]:
732
- """JSON record without raw tensors, which remain available on the msgpack wire."""
733
- return self.model_dump(mode="json", exclude=EXCLUDE_FIELDS)
731
+ def to_record(
732
+ self, float_decimals: int | None = RECORD_FLOAT_DECIMALS
733
+ ) -> dict[str, Any]:
734
+ """JSON record without raw tensors, which remain available on the msgpack wire.
735
+ Per-token float streams are rounded to `float_decimals` (`None` keeps every digit)."""
736
+ return self.model_dump(
737
+ mode="json",
738
+ exclude=EXCLUDE_FIELDS,
739
+ context={"float_decimals": float_decimals},
740
+ )
734
741
 
735
742
 
736
743
  WireTrace = Trace[WireTaskData, State, WireAgentConfig]
File without changes