verifiers 0.3.2.dev155__tar.gz → 0.3.2.dev157__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 (221) hide show
  1. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/PKG-INFO +1 -1
  2. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/dialects/base.py +11 -17
  3. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/artifacts.py +61 -2
  4. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/.gitignore +0 -0
  5. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/LICENSE +0 -0
  6. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/README.md +0 -0
  7. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/pyproject.toml +0 -0
  8. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/conftest.py +0 -0
  9. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  10. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/fixtures/duet_v1.py +0 -0
  11. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  12. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  13. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  14. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  15. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/fixtures/echo_v1.py +0 -0
  16. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/fixtures/pyproject.toml +0 -0
  17. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  18. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/test_color_codeword_tasks.py +0 -0
  19. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/test_configs.py +0 -0
  20. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/test_e2e.py +0 -0
  21. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/test_envs.py +0 -0
  22. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/test_graph.py +0 -0
  23. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/test_judges.py +0 -0
  24. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/test_platform_run.py +0 -0
  25. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/test_scoring.py +0 -0
  26. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/test_serve_delta.py +0 -0
  27. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/test_taskset.py +0 -0
  28. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/tests/v1/test_trace.py +0 -0
  29. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/__init__.py +0 -0
  30. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/__init__.py +0 -0
  31. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/acp/__init__.py +0 -0
  32. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/acp/runner.py +0 -0
  33. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/agent.py +0 -0
  34. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/__init__.py +0 -0
  35. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  36. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/dashboard/base.py +0 -0
  37. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/dashboard/eval.py +0 -0
  38. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/dashboard/replay.py +0 -0
  39. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/dashboard/validate.py +0 -0
  40. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/debug.py +0 -0
  41. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/eval/__init__.py +0 -0
  42. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/eval/hint.py +0 -0
  43. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/eval/main.py +0 -0
  44. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/eval/resume.py +0 -0
  45. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/eval/runner.py +0 -0
  46. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/gepa.py +0 -0
  47. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/init.py +0 -0
  48. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/output.py +0 -0
  49. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/replay.py +0 -0
  50. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/resolve.py +0 -0
  51. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/resume.py +0 -0
  52. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/cli/validate.py +0 -0
  53. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/clients/__init__.py +0 -0
  54. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/clients/base.py +0 -0
  55. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/clients/client.py +0 -0
  56. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/clients/eval.py +0 -0
  57. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/clients/train.py +0 -0
  58. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/__init__.py +0 -0
  59. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/agent.py +0 -0
  60. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/cli/__init__.py +0 -0
  61. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/cli/debug.py +0 -0
  62. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/cli/env.py +0 -0
  63. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/cli/eval.py +0 -0
  64. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/cli/init.py +0 -0
  65. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/cli/replay.py +0 -0
  66. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/cli/validate.py +0 -0
  67. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/client.py +0 -0
  68. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/env.py +0 -0
  69. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/harness.py +0 -0
  70. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/judge.py +0 -0
  71. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/retries.py +0 -0
  72. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/runtime.py +0 -0
  73. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/select.py +0 -0
  74. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/serve.py +0 -0
  75. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/task.py +0 -0
  76. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/configs/taskset.py +0 -0
  77. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/dialects/__init__.py +0 -0
  78. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/dialects/anthropic.py +0 -0
  79. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/dialects/chat.py +0 -0
  80. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/dialects/responses.py +0 -0
  81. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/env.py +0 -0
  82. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/envs/__init__.py +0 -0
  83. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  84. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  85. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  86. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/envs/best_of_n/env.py +0 -0
  87. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
  88. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
  89. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  90. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  91. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/envs/single_agent/env.py +0 -0
  92. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  93. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/envs/user_sim/env.py +0 -0
  94. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/episode.py +0 -0
  95. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/errors.py +0 -0
  96. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/gepa/__init__.py +0 -0
  97. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/gepa/adapter.py +0 -0
  98. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/gepa/config.py +0 -0
  99. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/gepa/dataset.py +0 -0
  100. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/gepa/reflection.py +0 -0
  101. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/gepa/runner.py +0 -0
  102. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/graph.py +0 -0
  103. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harness.py +0 -0
  104. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/__init__.py +0 -0
  105. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  106. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/bash/harness.py +0 -0
  107. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  108. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  109. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  110. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  111. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  112. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  113. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/codex/gate.mjs +0 -0
  114. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/codex/harness.py +0 -0
  115. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  116. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  117. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  118. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  119. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  120. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  121. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  122. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  123. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/node.py +0 -0
  124. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/null/__init__.py +0 -0
  125. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/null/harness.py +0 -0
  126. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  127. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
  128. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  129. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/pi/gate.mjs +0 -0
  130. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/pi/harness.py +0 -0
  131. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
  132. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
  133. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  134. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  135. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  136. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  137. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  138. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/utils/__init__.py +0 -0
  139. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/utils/compaction.py +0 -0
  140. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/utils/core.py +0 -0
  141. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/utils/install.py +0 -0
  142. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/utils/launch.py +0 -0
  143. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/harnesses/utils/mcp.py +0 -0
  144. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/interception/__init__.py +0 -0
  145. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/interception/base.py +0 -0
  146. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/interception/pool.py +0 -0
  147. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/interception/server.py +0 -0
  148. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  149. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/interception/tunnel/base.py +0 -0
  150. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/interception/tunnel/custom.py +0 -0
  151. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/interception/tunnel/prime.py +0 -0
  152. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/judge.py +0 -0
  153. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/judges/__init__.py +0 -0
  154. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/judges/reference.py +0 -0
  155. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/judges/reference.txt +0 -0
  156. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/judges/rubric.py +0 -0
  157. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/judges/rubric.txt +0 -0
  158. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/mcp/__init__.py +0 -0
  159. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/mcp/launch.py +0 -0
  160. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/mcp/server.py +0 -0
  161. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/mcp/toolset.py +0 -0
  162. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/rollout.py +0 -0
  163. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/runtimes/__init__.py +0 -0
  164. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/runtimes/apptainer.py +0 -0
  165. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/runtimes/base.py +0 -0
  166. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/runtimes/container.py +0 -0
  167. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  168. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/runtimes/docker/egress.py +0 -0
  169. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/runtimes/limiters.py +0 -0
  170. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/runtimes/modal.py +0 -0
  171. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/runtimes/prime.py +0 -0
  172. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/runtimes/subprocess.py +0 -0
  173. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/semantic.py +0 -0
  174. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/serve/__init__.py +0 -0
  175. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/serve/client.py +0 -0
  176. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/serve/delta.py +0 -0
  177. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/serve/encoding.py +0 -0
  178. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/serve/pool.py +0 -0
  179. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/serve/server.py +0 -0
  180. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/serve/types.py +0 -0
  181. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/session.py +0 -0
  182. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/state.py +0 -0
  183. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/task.py +0 -0
  184. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/taskset.py +0 -0
  185. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/__init__.py +0 -0
  186. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  187. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/harbor/compose.py +0 -0
  188. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/harbor/env.py +0 -0
  189. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  190. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
  191. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
  192. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
  193. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
  194. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
  195. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
  196. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  197. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  198. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  199. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  200. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/trace.py +0 -0
  201. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/types.py +0 -0
  202. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/__init__.py +0 -0
  203. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/aio.py +0 -0
  204. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/compile.py +0 -0
  205. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/decorators.py +0 -0
  206. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/format.py +0 -0
  207. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/generic.py +0 -0
  208. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/git.py +0 -0
  209. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/image.py +0 -0
  210. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/interrupt.py +0 -0
  211. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/loaders.py +0 -0
  212. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/logging.py +0 -0
  213. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/memory.py +0 -0
  214. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/paths.py +0 -0
  215. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/platform.py +0 -0
  216. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/prime.py +0 -0
  217. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/retries.py +0 -0
  218. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/scope.py +0 -0
  219. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/score.py +0 -0
  220. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/verifiers/v1/utils/trace_store.py +0 -0
  221. {verifiers-0.3.2.dev155 → verifiers-0.3.2.dev157}/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.dev155
3
+ Version: 0.3.2.dev157
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
@@ -16,6 +16,7 @@ import logging
16
16
  from abc import ABC, abstractmethod
17
17
  from collections.abc import Callable, Mapping
18
18
  from glob import has_magic
19
+ from ipaddress import ip_address
19
20
  from typing import Any, ClassVar, Generic, TypeVar
20
21
 
21
22
  from pydantic import AnyHttpUrl, BaseModel, ValidationError
@@ -129,10 +130,10 @@ class RequestFilter:
129
130
  def provider_domains(
130
131
  policy: NetworkPolicyConfig, requested: object = None
131
132
  ) -> list[str]:
132
- """Translate allow/block rules to provider filters without changing their scope.
133
+ """Translate host rules to the provider's native domain filters.
133
134
 
134
- Provider filters include subdomains, so exact hosts need a covering wildcard rule.
135
- Empty results mean the policy cannot be represented; never send an empty filter.
135
+ Strip leading wildcards and let the provider define domain/subdomain scope.
136
+ Empty results mean unsupported rules; never send an empty filter.
136
137
  """
137
138
  rules = policy.block or policy.allow
138
139
  if requested is not None and not isinstance(requested, list):
@@ -149,9 +150,7 @@ def provider_domains(
149
150
  url, host, port = parse_network_rule(rule)
150
151
  except ValueError:
151
152
  return []
152
- if is_filter and (
153
- url.username is not None or url.path or url.query or url.fragment
154
- ):
153
+ if url.username is not None or url.path or url.query or url.fragment:
155
154
  return []
156
155
  domain = host if is_filter else host.removeprefix("*.")
157
156
  if (
@@ -162,17 +161,12 @@ def provider_domains(
162
161
  or not domain.isascii()
163
162
  ):
164
163
  return []
165
- output.append(host)
166
- for host in hosts:
167
- if not host.startswith("*.") and not (
168
- policy.block
169
- and any(
170
- wildcard.startswith("*.")
171
- and intersect_network_hosts(wildcard, host) == host
172
- for wildcard in hosts
173
- )
174
- ):
175
- return []
164
+ try:
165
+ ip_address(domain)
166
+ except ValueError:
167
+ output.append(host)
168
+ else:
169
+ return []
176
170
  domains = list(dict.fromkeys(host.removeprefix("*.") for host in hosts))
177
171
  if requested is None:
178
172
  return domains
@@ -141,7 +141,8 @@ async def restore(runtime: Runtime, collected: dict[str, bytes | None]) -> None:
141
141
 
142
142
  Archive bytes are untrusted: the agent controls both their source files and the
143
143
  runtime tooling that creates them. Every archive is therefore validated on the host
144
- before the grading runtime is changed. Only regular files and directories travel.
144
+ before the grading runtime is changed. Regular files, directories, and confined links
145
+ can travel; link chains and extraction through symlinks cannot.
145
146
  """
146
147
  if not collected:
147
148
  return
@@ -214,6 +215,9 @@ def _validate_restore(root: str, archive: bytes | None) -> None:
214
215
 
215
216
  try:
216
217
  with tarfile.open(fileobj=io.BytesIO(archive), mode="r:") as tar:
218
+ regular_files: set[PurePosixPath] = set()
219
+ members: set[PurePosixPath] = set()
220
+ symlinks: dict[PurePosixPath, str] = {}
217
221
  for member in tar:
218
222
  member_path = PurePosixPath(member.name)
219
223
  destination = PurePosixPath("/") / member_path
@@ -227,10 +231,65 @@ def _validate_restore(root: str, archive: bytes | None) -> None:
227
231
  f"artifact member {member.name!r} is outside declared root "
228
232
  f"{root!r}"
229
233
  )
230
- if not (member.isfile() or member.isdir()):
234
+ if member_path in members:
235
+ raise RuntimeError(f"duplicate artifact member {member.name!r}")
236
+ members.add(member_path)
237
+ if member.issym():
238
+ symlinks[member_path] = member.linkname
239
+ elif member.islnk():
240
+ # Tar deduplicates hard-linked build outputs (e.g. Cargo's build
241
+ # scripts). A target must already be a regular member of this
242
+ # archive, never a path supplied by the verifier image.
243
+ target = PurePosixPath(member.linkname)
244
+ if (
245
+ not member.linkname
246
+ or target.is_absolute()
247
+ or ".." in target.parts
248
+ or target not in regular_files
249
+ or target == member_path
250
+ ):
251
+ raise RuntimeError(
252
+ f"artifact hard link {member.name!r} has unsafe target "
253
+ f"{member.linkname!r}"
254
+ )
255
+ elif not (member.isfile() or member.isdir()):
231
256
  raise RuntimeError(
232
257
  f"artifact member {member.name!r} is a link or special file"
233
258
  )
259
+ if member.isfile():
260
+ regular_files.add(member_path)
261
+ # Check after reading the whole archive, so a later symlink cannot
262
+ # turn an earlier member's parent or a link target into a redirection.
263
+ for member_path in members:
264
+ if any(parent in symlinks for parent in member_path.parents):
265
+ raise RuntimeError(
266
+ f"artifact member {str(member_path)!r} traverses a symlink"
267
+ )
268
+ relative_root = root_path.relative_to("/")
269
+ for member_path, linkname in symlinks.items():
270
+ target = PurePosixPath(linkname)
271
+ if not linkname or target.is_absolute():
272
+ raise RuntimeError(
273
+ f"artifact symlink {str(member_path)!r} has unsafe target "
274
+ f"{linkname!r}"
275
+ )
276
+ resolved = member_path.parent
277
+ if not resolved.is_relative_to(relative_root):
278
+ raise RuntimeError(
279
+ f"artifact symlink {str(member_path)!r} has unsafe target "
280
+ f"{linkname!r}"
281
+ )
282
+ # Walk before normalizing '..': a/../b is unsafe if a is itself
283
+ # a symlink. Missing internal targets are safe (e.g. build outputs).
284
+ for part in target.parts:
285
+ resolved = resolved.parent if part == ".." else resolved / part
286
+ if not resolved.is_relative_to(relative_root) or any(
287
+ path in symlinks for path in (resolved, *resolved.parents)
288
+ ):
289
+ raise RuntimeError(
290
+ f"artifact symlink {str(member_path)!r} has unsafe target "
291
+ f"{linkname!r}"
292
+ )
234
293
  except tarfile.TarError as exc:
235
294
  raise RuntimeError(f"unreadable artifact archive for {root!r}: {exc}") from exc
236
295