verifiers 0.3.2.dev204__tar.gz → 0.3.2.dev205__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 (229) hide show
  1. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/PKG-INFO +2 -2
  2. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/pyproject.toml +1 -1
  3. verifiers-0.3.2.dev205/tests/v1/test_tunnel_watchdog.py +109 -0
  4. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/interception/tunnel/prime.py +15 -9
  5. verifiers-0.3.2.dev204/tests/v1/test_tunnel_watchdog.py +0 -71
  6. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/.gitignore +0 -0
  7. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/LICENSE +0 -0
  8. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/README.md +0 -0
  9. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/conftest.py +0 -0
  10. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/fixtures/agent_user_v1.py +0 -0
  11. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  12. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/fixtures/delivery_behaviors.py +0 -0
  13. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/fixtures/duet_v1.py +0 -0
  14. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  15. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  16. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  17. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  18. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/fixtures/echo_v1.py +0 -0
  19. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/fixtures/pyproject.toml +0 -0
  20. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  21. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/test_color_codeword_tasks.py +0 -0
  22. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/test_configs.py +0 -0
  23. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/test_delivery_behaviors.py +0 -0
  24. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/test_e2e.py +0 -0
  25. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/test_envs.py +0 -0
  26. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/test_graph.py +0 -0
  27. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/test_judges.py +0 -0
  28. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/test_platform_run.py +0 -0
  29. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/test_scoring.py +0 -0
  30. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/test_serve_delta.py +0 -0
  31. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/test_taskset.py +0 -0
  32. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/tests/v1/test_trace.py +0 -0
  33. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/__init__.py +0 -0
  34. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/__init__.py +0 -0
  35. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/acp/__init__.py +0 -0
  36. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/acp/runner.py +0 -0
  37. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/agent.py +0 -0
  38. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/__init__.py +0 -0
  39. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  40. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/dashboard/base.py +0 -0
  41. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/dashboard/eval.py +0 -0
  42. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/dashboard/replay.py +0 -0
  43. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/dashboard/validate.py +0 -0
  44. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/debug.py +0 -0
  45. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/eval/__init__.py +0 -0
  46. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/eval/hint.py +0 -0
  47. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/eval/main.py +0 -0
  48. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/eval/resume.py +0 -0
  49. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/eval/runner.py +0 -0
  50. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/gepa.py +0 -0
  51. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/init.py +0 -0
  52. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/output.py +0 -0
  53. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/replay.py +0 -0
  54. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/resolve.py +0 -0
  55. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/resume.py +0 -0
  56. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/cli/validate.py +0 -0
  57. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/clients/__init__.py +0 -0
  58. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/clients/base.py +0 -0
  59. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/clients/client.py +0 -0
  60. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/clients/eval.py +0 -0
  61. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/clients/train.py +0 -0
  62. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/__init__.py +0 -0
  63. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/agent.py +0 -0
  64. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/cli/__init__.py +0 -0
  65. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/cli/debug.py +0 -0
  66. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/cli/env.py +0 -0
  67. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/cli/eval.py +0 -0
  68. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/cli/init.py +0 -0
  69. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/cli/replay.py +0 -0
  70. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/cli/validate.py +0 -0
  71. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/client.py +0 -0
  72. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/env.py +0 -0
  73. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/harness.py +0 -0
  74. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/judge.py +0 -0
  75. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/retries.py +0 -0
  76. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/runtime.py +0 -0
  77. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/select.py +0 -0
  78. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/serve.py +0 -0
  79. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/task.py +0 -0
  80. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/configs/taskset.py +0 -0
  81. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/dialects/__init__.py +0 -0
  82. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/dialects/anthropic.py +0 -0
  83. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/dialects/base.py +0 -0
  84. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/dialects/chat.py +0 -0
  85. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/dialects/responses.py +0 -0
  86. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/env.py +0 -0
  87. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/envs/__init__.py +0 -0
  88. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  89. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  90. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  91. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/envs/best_of_n/env.py +0 -0
  92. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
  93. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
  94. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  95. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  96. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/envs/single_agent/env.py +0 -0
  97. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  98. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/envs/user_sim/env.py +0 -0
  99. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/episode.py +0 -0
  100. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/errors.py +0 -0
  101. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/gepa/__init__.py +0 -0
  102. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/gepa/adapter.py +0 -0
  103. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/gepa/config.py +0 -0
  104. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/gepa/dataset.py +0 -0
  105. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/gepa/reflection.py +0 -0
  106. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/gepa/runner.py +0 -0
  107. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/graph.py +0 -0
  108. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harness.py +0 -0
  109. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/__init__.py +0 -0
  110. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  111. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/bash/harness.py +0 -0
  112. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  113. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  114. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  115. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  116. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  117. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  118. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/codex/gate.mjs +0 -0
  119. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/codex/harness.py +0 -0
  120. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  121. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  122. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  123. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  124. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  125. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  126. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  127. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  128. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/node.py +0 -0
  129. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/null/__init__.py +0 -0
  130. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/null/harness.py +0 -0
  131. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  132. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
  133. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  134. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/pi/gate.mjs +0 -0
  135. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/pi/harness.py +0 -0
  136. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
  137. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
  138. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  139. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  140. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  141. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  142. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  143. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/utils/__init__.py +0 -0
  144. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/utils/compaction.py +0 -0
  145. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/utils/core.py +0 -0
  146. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/utils/install.py +0 -0
  147. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/utils/launch.py +0 -0
  148. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/harnesses/utils/mcp.py +0 -0
  149. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/interception/__init__.py +0 -0
  150. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/interception/base.py +0 -0
  151. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/interception/pool.py +0 -0
  152. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/interception/server.py +0 -0
  153. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  154. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/interception/tunnel/base.py +0 -0
  155. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/interception/tunnel/custom.py +0 -0
  156. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/judge.py +0 -0
  157. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/judges/__init__.py +0 -0
  158. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/judges/decision.py +0 -0
  159. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/judges/reference.py +0 -0
  160. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/judges/reference.txt +0 -0
  161. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/judges/rubric.py +0 -0
  162. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/judges/rubric.txt +0 -0
  163. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/mcp/__init__.py +0 -0
  164. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/mcp/launch.py +0 -0
  165. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/mcp/server.py +0 -0
  166. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/mcp/toolset.py +0 -0
  167. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/rollout.py +0 -0
  168. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/runtimes/__init__.py +0 -0
  169. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/runtimes/apptainer.py +0 -0
  170. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/runtimes/base.py +0 -0
  171. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/runtimes/container.py +0 -0
  172. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  173. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/runtimes/docker/egress.py +0 -0
  174. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/runtimes/e2b.py +0 -0
  175. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/runtimes/limiters.py +0 -0
  176. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/runtimes/modal.py +0 -0
  177. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/runtimes/prime.py +0 -0
  178. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/runtimes/subprocess.py +0 -0
  179. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/semantic.py +0 -0
  180. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/serve/__init__.py +0 -0
  181. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/serve/client.py +0 -0
  182. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/serve/delta.py +0 -0
  183. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/serve/encoding.py +0 -0
  184. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/serve/pool.py +0 -0
  185. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/serve/server.py +0 -0
  186. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/serve/types.py +0 -0
  187. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/session.py +0 -0
  188. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/state.py +0 -0
  189. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/task.py +0 -0
  190. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/taskset.py +0 -0
  191. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/__init__.py +0 -0
  192. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  193. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/harbor/compose.py +0 -0
  194. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/harbor/env.py +0 -0
  195. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  196. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
  197. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
  198. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
  199. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
  200. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
  201. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
  202. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  203. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  204. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  205. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  206. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/trace.py +0 -0
  207. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/types.py +0 -0
  208. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/__init__.py +0 -0
  209. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/aio.py +0 -0
  210. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/artifacts.py +0 -0
  211. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/compile.py +0 -0
  212. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/decorators.py +0 -0
  213. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/eval.py +0 -0
  214. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/format.py +0 -0
  215. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/generic.py +0 -0
  216. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/git.py +0 -0
  217. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/image.py +0 -0
  218. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/interrupt.py +0 -0
  219. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/loaders.py +0 -0
  220. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/logging.py +0 -0
  221. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/memory.py +0 -0
  222. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/paths.py +0 -0
  223. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/platform.py +0 -0
  224. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/prime.py +0 -0
  225. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/retries.py +0 -0
  226. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/scope.py +0 -0
  227. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/score.py +0 -0
  228. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/verifiers/v1/utils/trace_store.py +0 -0
  229. {verifiers-0.3.2.dev204 → verifiers-0.3.2.dev205}/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.dev204
3
+ Version: 0.3.2.dev205
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
@@ -37,7 +37,7 @@ Requires-Dist: openai<3.0.0,>=2.54.0
37
37
  Requires-Dist: prime-pydantic-config[toml]>=0.4.3
38
38
  Requires-Dist: prime-runs>=0.1.4
39
39
  Requires-Dist: prime-sandboxes>=0.4.2
40
- Requires-Dist: prime-tunnel>=0.1.13
40
+ Requires-Dist: prime-tunnel>=0.1.14
41
41
  Requires-Dist: pydantic>=2.12.3
42
42
  Requires-Dist: pyzmq>=27.1.0
43
43
  Requires-Dist: renderers[multimodal]>=0.1.12.dev2
@@ -32,7 +32,7 @@ dependencies = [
32
32
  "numpy>=2.1.0",
33
33
  "math-verify>=0.8.0",
34
34
  "openai>=2.54.0,<3.0.0",
35
- "prime-tunnel>=0.1.13",
35
+ "prime-tunnel>=0.1.14",
36
36
  "prime-sandboxes>=0.4.2",
37
37
  "prime-runs>=0.1.4",
38
38
  "pydantic>=2.12.3",
@@ -0,0 +1,109 @@
1
+ """The prime tunnel watchdog restarts frpc when the tunnel service has the tunnel
2
+ disconnected or frpc has exited, leaves it alone otherwise, and stops watching a tunnel
3
+ whose registration is gone."""
4
+
5
+ import asyncio
6
+
7
+ import pytest
8
+ from prime_tunnel import TunnelGoneError, TunnelStatus
9
+
10
+ from verifiers.v1.interception.tunnel import prime
11
+
12
+ pytestmark = pytest.mark.asyncio
13
+
14
+ GONE = (None, "terminated", "expired")
15
+
16
+
17
+ class FakeClient:
18
+ def __init__(self, statuses, running=True, restart_error=None):
19
+ self.statuses = list(statuses)
20
+ self.is_running = running
21
+ self.is_gone = False
22
+ self.tunnel_id = "t-0-test"
23
+ self.restart_error = restart_error
24
+ self.restarts = 0
25
+ self.checks = 0
26
+
27
+ async def restart(self):
28
+ self.restarts += 1
29
+ if self.restart_error is not None:
30
+ raise self.restart_error
31
+ self.is_running = True
32
+
33
+ async def status(self):
34
+ self.checks += 1
35
+ registration = self.statuses.pop(0) if self.statuses else "connected"
36
+ if isinstance(registration, Exception):
37
+ raise registration
38
+ self.is_gone = self.is_gone or registration in GONE
39
+ return TunnelStatus(
40
+ tunnel_id=self.tunnel_id,
41
+ running=self.is_running,
42
+ registration=registration,
43
+ gone=self.is_gone,
44
+ )
45
+
46
+
47
+ async def watch(client, checks, monkeypatch):
48
+ """Run the watchdog for about `checks` checks; how many restarts it made."""
49
+ monkeypatch.setattr(prime, "CHECK_SECONDS", 0.01)
50
+ task = asyncio.create_task(prime._watch(client, "https://t"))
51
+ await asyncio.sleep(0.0125 * checks)
52
+ task.cancel()
53
+ await asyncio.wait({task})
54
+ return client.restarts
55
+
56
+
57
+ async def stops(client, monkeypatch):
58
+ """Run the watchdog until it gives the tunnel up."""
59
+ monkeypatch.setattr(prime, "CHECK_SECONDS", 0.01)
60
+ await asyncio.wait_for(prime._watch(client, "https://t"), 1)
61
+
62
+
63
+ async def test_connected_is_left_alone(monkeypatch):
64
+ assert await watch(FakeClient(["connected"] * 10), 8, monkeypatch) == 0
65
+
66
+
67
+ async def test_one_disconnected_check_is_not_enough(monkeypatch):
68
+ client = FakeClient(["disconnected", "connected"] * 5)
69
+ assert await watch(client, 8, monkeypatch) == 0
70
+
71
+
72
+ async def test_disconnected_twice_restarts_once(monkeypatch):
73
+ client = FakeClient(["disconnected", "disconnected"])
74
+ assert await watch(client, 8, monkeypatch) == 1
75
+
76
+
77
+ async def test_exited_frpc_restarts_without_asking(monkeypatch):
78
+ client = FakeClient([RuntimeError("api down")] * 10, running=False)
79
+ assert await watch(client, 4, monkeypatch) == 1
80
+
81
+
82
+ async def test_unreachable_service_is_no_verdict(monkeypatch):
83
+ client = FakeClient([RuntimeError("api down")] * 10)
84
+ assert await watch(client, 8, monkeypatch) == 0
85
+
86
+
87
+ @pytest.mark.parametrize("registration", GONE)
88
+ async def test_gone_registration_stops_watching(registration, monkeypatch):
89
+ client = FakeClient([registration])
90
+ await stops(client, monkeypatch)
91
+ assert client.restarts == 0
92
+
93
+
94
+ async def test_gone_reported_by_frpc_stops_watching(monkeypatch):
95
+ client = FakeClient([])
96
+ client.is_gone = True
97
+ await stops(client, monkeypatch)
98
+ assert (client.checks, client.restarts) == (0, 0)
99
+
100
+
101
+ async def test_restart_refused_as_gone_stops_watching(monkeypatch):
102
+ client = FakeClient([], running=False, restart_error=TunnelGoneError("inactive"))
103
+ await stops(client, monkeypatch)
104
+ assert client.restarts == 1
105
+
106
+
107
+ async def test_failed_restart_is_tried_again(monkeypatch):
108
+ client = FakeClient([], running=False, restart_error=RuntimeError("frpc"))
109
+ assert await watch(client, 6, monkeypatch) >= 2
@@ -53,22 +53,25 @@ CHECK_SECONDS = 20
53
53
  async def _watch(client: "TunnelClient", url: str) -> None:
54
54
  """Keep a held tunnel up. A tunnel service hiccup can leave frpc running while the
55
55
  service has it disconnected for good, and every request to the URL then hangs or
56
- 404s; frpc can also exit. Either way, restart it."""
56
+ 404s; frpc can also exit. Either way, restart it. A tunnel the service has deleted
57
+ or expired can't be restarted, so stop watching it."""
58
+ from prime_tunnel import TunnelGoneError
59
+
57
60
  strikes = 0
58
61
  while True:
59
62
  await asyncio.sleep(CHECK_SECONDS * random.uniform(0.75, 1.25))
60
- if client.is_running:
63
+ if client.is_running and not client.is_gone:
61
64
  try:
62
- info = await client._client.get_tunnel(client.tunnel_id)
65
+ status = await client.status()
63
66
  except Exception as e: # noqa: BLE001 - the service is unreachable: no verdict
64
67
  logger.debug("tunnel %s: state check failed: %s", url, e)
65
68
  continue
66
- if info is None:
67
- logger.error("tunnel %s: registration gone; cannot repair", url)
68
- return
69
- strikes = strikes + 1 if info.status == "disconnected" else 0
70
- if strikes < 2:
71
- continue
69
+ strikes = strikes + 1 if status.registration == "disconnected" else 0
70
+ if client.is_gone:
71
+ logger.error("tunnel %s: registration gone; cannot repair", url)
72
+ return
73
+ if client.is_running and strikes < 2:
74
+ continue
72
75
  logger.warning(
73
76
  "tunnel %s: %s; restarting frpc",
74
77
  url,
@@ -76,6 +79,9 @@ async def _watch(client: "TunnelClient", url: str) -> None:
76
79
  )
77
80
  try:
78
81
  await client.restart()
82
+ except TunnelGoneError:
83
+ logger.error("tunnel %s: registration gone; cannot repair", url)
84
+ return
79
85
  except Exception as e: # noqa: BLE001 - tried again on the next check
80
86
  logger.warning("tunnel %s: frpc restart failed: %s", url, e)
81
87
  else:
@@ -1,71 +0,0 @@
1
- """The prime tunnel watchdog restarts frpc when the tunnel service has the tunnel
2
- disconnected or frpc has exited, and leaves it alone otherwise."""
3
-
4
- import asyncio
5
- from types import SimpleNamespace
6
-
7
- import pytest
8
-
9
- from verifiers.v1.interception.tunnel import prime
10
-
11
- pytestmark = pytest.mark.asyncio
12
-
13
-
14
- class FakeClient:
15
- def __init__(self, statuses, running=True):
16
- self.statuses = list(statuses)
17
- self.is_running = running
18
- self.tunnel_id = "t-0-test"
19
- self._client = self
20
- self.restarts = 0
21
-
22
- async def restart(self):
23
- self.restarts += 1
24
- self.is_running = True
25
-
26
- async def get_tunnel(self, tunnel_id):
27
- status = self.statuses.pop(0) if self.statuses else "connected"
28
- if isinstance(status, Exception):
29
- raise status
30
- return None if status is None else SimpleNamespace(status=status)
31
-
32
-
33
- async def watch(client, checks, monkeypatch):
34
- """Run the watchdog for about `checks` checks; how many restarts it made."""
35
- monkeypatch.setattr(prime, "CHECK_SECONDS", 0.01)
36
- task = asyncio.create_task(prime._watch(client, "https://t"))
37
- await asyncio.sleep(0.0125 * checks)
38
- task.cancel()
39
- await asyncio.wait({task})
40
- return client.restarts
41
-
42
-
43
- async def test_connected_is_left_alone(monkeypatch):
44
- assert await watch(FakeClient(["connected"] * 10), 8, monkeypatch) == 0
45
-
46
-
47
- async def test_one_disconnected_check_is_not_enough(monkeypatch):
48
- client = FakeClient(["disconnected", "connected"] * 5)
49
- assert await watch(client, 8, monkeypatch) == 0
50
-
51
-
52
- async def test_disconnected_twice_restarts_once(monkeypatch):
53
- client = FakeClient(["disconnected", "disconnected"])
54
- assert await watch(client, 8, monkeypatch) == 1
55
-
56
-
57
- async def test_exited_frpc_restarts_without_asking(monkeypatch):
58
- client = FakeClient([RuntimeError("api down")] * 10, running=False)
59
- assert await watch(client, 4, monkeypatch) == 1
60
-
61
-
62
- async def test_unreachable_service_is_no_verdict(monkeypatch):
63
- client = FakeClient([RuntimeError("api down")] * 10)
64
- assert await watch(client, 8, monkeypatch) == 0
65
-
66
-
67
- async def test_gone_registration_stops_watching(monkeypatch):
68
- client = FakeClient([None])
69
- monkeypatch.setattr(prime, "CHECK_SECONDS", 0.01)
70
- await asyncio.wait_for(prime._watch(client, "https://t"), 1)
71
- assert client.restarts == 0