verifiers 0.3.2.dev77__tar.gz → 0.3.2.dev79__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/PKG-INFO +1 -1
  2. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/envs/isolated_verifier/env.py +2 -2
  3. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/runtimes/docker/__init__.py +4 -3
  4. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/runtimes/modal.py +4 -3
  5. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/runtimes/prime.py +4 -3
  6. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/harbor/taskset.py +30 -5
  7. verifiers-0.3.2.dev79/verifiers/v1/tasksets/harbor/toolset.py +86 -0
  8. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/.gitignore +0 -0
  9. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/LICENSE +0 -0
  10. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/README.md +0 -0
  11. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/pyproject.toml +0 -0
  12. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/conftest.py +0 -0
  13. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  14. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/fixtures/duet_v1.py +0 -0
  15. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  16. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  17. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  18. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  19. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/fixtures/echo_v1.py +0 -0
  20. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/fixtures/pyproject.toml +0 -0
  21. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  22. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/test_color_codeword_tasks.py +0 -0
  23. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/test_configs.py +0 -0
  24. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/test_e2e.py +0 -0
  25. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/test_envs.py +0 -0
  26. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/test_graph.py +0 -0
  27. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/test_judges.py +0 -0
  28. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/test_platform_run.py +0 -0
  29. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/test_scoring.py +0 -0
  30. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/test_taskset.py +0 -0
  31. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/tests/v1/test_trace.py +0 -0
  32. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/__init__.py +0 -0
  33. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/cli/commands/init.py +0 -0
  34. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/__init__.py +0 -0
  35. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/acp/__init__.py +0 -0
  36. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/acp/runner.py +0 -0
  37. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/agent.py +0 -0
  38. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/__init__.py +0 -0
  39. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  40. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/dashboard/base.py +0 -0
  41. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/dashboard/eval.py +0 -0
  42. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/dashboard/replay.py +0 -0
  43. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/dashboard/validate.py +0 -0
  44. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/debug.py +0 -0
  45. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/eval/__init__.py +0 -0
  46. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/eval/main.py +0 -0
  47. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/eval/resume.py +0 -0
  48. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/eval/runner.py +0 -0
  49. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/gepa.py +0 -0
  50. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/init.py +0 -0
  51. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/output.py +0 -0
  52. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/replay.py +0 -0
  53. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/resolve.py +0 -0
  54. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/resume.py +0 -0
  55. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/cli/validate.py +0 -0
  56. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/clients/__init__.py +0 -0
  57. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/clients/base.py +0 -0
  58. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/clients/client.py +0 -0
  59. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/clients/eval.py +0 -0
  60. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/clients/train.py +0 -0
  61. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/__init__.py +0 -0
  62. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/agent.py +0 -0
  63. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/cli/__init__.py +0 -0
  64. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/cli/debug.py +0 -0
  65. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/cli/env.py +0 -0
  66. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/cli/eval.py +0 -0
  67. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/cli/init.py +0 -0
  68. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/cli/replay.py +0 -0
  69. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/cli/validate.py +0 -0
  70. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/client.py +0 -0
  71. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/env.py +0 -0
  72. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/harness.py +0 -0
  73. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/judge.py +0 -0
  74. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/retries.py +0 -0
  75. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/runtime.py +0 -0
  76. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/serve.py +0 -0
  77. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/task.py +0 -0
  78. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/configs/taskset.py +0 -0
  79. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/dialects/__init__.py +0 -0
  80. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/dialects/anthropic.py +0 -0
  81. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/dialects/base.py +0 -0
  82. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/dialects/chat.py +0 -0
  83. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/dialects/responses.py +0 -0
  84. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/env.py +0 -0
  85. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/envs/__init__.py +0 -0
  86. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  87. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  88. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  89. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/envs/best_of_n/env.py +0 -0
  90. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
  91. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  92. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  93. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/envs/single_agent/env.py +0 -0
  94. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  95. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/envs/user_sim/env.py +0 -0
  96. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/episode.py +0 -0
  97. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/errors.py +0 -0
  98. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/gepa/__init__.py +0 -0
  99. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/gepa/adapter.py +0 -0
  100. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/gepa/config.py +0 -0
  101. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/gepa/dataset.py +0 -0
  102. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/gepa/reflection.py +0 -0
  103. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/gepa/runner.py +0 -0
  104. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/graph.py +0 -0
  105. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harness.py +0 -0
  106. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/__init__.py +0 -0
  107. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  108. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/bash/harness.py +0 -0
  109. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  110. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  111. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  112. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  113. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  114. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  115. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/codex/harness.py +0 -0
  116. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  117. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  118. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  119. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  120. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  121. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  122. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  123. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  124. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/node.py +0 -0
  125. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/null/__init__.py +0 -0
  126. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/null/harness.py +0 -0
  127. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  128. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
  129. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  130. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/pi/harness.py +0 -0
  131. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/pool/__init__.py +0 -0
  132. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/pool/harness.py +0 -0
  133. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
  134. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
  135. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  136. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  137. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  138. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  139. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  140. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/utils/__init__.py +0 -0
  141. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/utils/compaction.py +0 -0
  142. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/utils/core.py +0 -0
  143. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/utils/install.py +0 -0
  144. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/utils/launch.py +0 -0
  145. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/harnesses/utils/mcp.py +0 -0
  146. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/interception/__init__.py +0 -0
  147. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/interception/base.py +0 -0
  148. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/interception/pool.py +0 -0
  149. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/interception/server.py +0 -0
  150. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/interception/tool.py +0 -0
  151. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  152. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/interception/tunnel/base.py +0 -0
  153. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/interception/tunnel/custom.py +0 -0
  154. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/interception/tunnel/prime.py +0 -0
  155. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/judge.py +0 -0
  156. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/judges/__init__.py +0 -0
  157. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/judges/reference.py +0 -0
  158. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/judges/reference.txt +0 -0
  159. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/judges/rubric.py +0 -0
  160. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/judges/rubric.txt +0 -0
  161. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/mcp/__init__.py +0 -0
  162. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/mcp/launch.py +0 -0
  163. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/mcp/server.py +0 -0
  164. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/mcp/toolset.py +0 -0
  165. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/rollout.py +0 -0
  166. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/runtimes/__init__.py +0 -0
  167. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/runtimes/base.py +0 -0
  168. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/runtimes/docker/egress.py +0 -0
  169. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/runtimes/limiters.py +0 -0
  170. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/runtimes/subprocess.py +0 -0
  171. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/semantic.py +0 -0
  172. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/serve/__init__.py +0 -0
  173. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/serve/client.py +0 -0
  174. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/serve/encoding.py +0 -0
  175. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/serve/pool.py +0 -0
  176. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/serve/server.py +0 -0
  177. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/serve/types.py +0 -0
  178. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/session.py +0 -0
  179. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/state.py +0 -0
  180. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/task.py +0 -0
  181. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/taskset.py +0 -0
  182. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/__init__.py +0 -0
  183. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  184. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/harbor/env.py +0 -0
  185. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  186. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  187. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  188. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
  189. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
  190. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
  191. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
  192. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
  193. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  194. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  195. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  196. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  197. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/trace.py +0 -0
  198. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/types.py +0 -0
  199. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/__init__.py +0 -0
  200. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/aio.py +0 -0
  201. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/artifacts.py +0 -0
  202. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/compile.py +0 -0
  203. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/decorators.py +0 -0
  204. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/format.py +0 -0
  205. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/generic.py +0 -0
  206. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/git.py +0 -0
  207. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/image.py +0 -0
  208. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/interrupt.py +0 -0
  209. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/loaders.py +0 -0
  210. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/logging.py +0 -0
  211. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/memory.py +0 -0
  212. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/paths.py +0 -0
  213. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/platform.py +0 -0
  214. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/prime.py +0 -0
  215. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/retries.py +0 -0
  216. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/verifiers/v1/utils/score.py +0 -0
  217. {verifiers-0.3.2.dev77 → verifiers-0.3.2.dev79}/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.dev77
3
+ Version: 0.3.2.dev79
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
@@ -91,8 +91,8 @@ class IsolatedVerifierEnv(vf.Env[IsolatedVerifierEnvConfig]):
91
91
  if not PurePosixPath(artifact.source).is_absolute()
92
92
  ]
93
93
  solver = resolve_runtime_config(self.config.agent.runtime, task)
94
- solver_workdir = PurePosixPath(getattr(solver, "workdir", "") or "/")
95
- verifier_workdir = PurePosixPath(config.workdir)
94
+ solver_workdir = PurePosixPath(getattr(solver, "workdir", "/") or "/app")
95
+ verifier_workdir = PurePosixPath(config.workdir or "/app")
96
96
  if relative and solver_workdir != verifier_workdir:
97
97
  raise ValueError(
98
98
  "isolated-verifier cannot transfer relative artifacts "
@@ -33,7 +33,8 @@ logger = logging.getLogger(__name__)
33
33
  class DockerConfig(NetworkPolicyConfig):
34
34
  type: Literal["docker"] = "docker"
35
35
  image: str = "python:3.11-slim"
36
- workdir: str = "/app"
36
+ workdir: str | None = None
37
+ """Working directory override; None uses the task's workdir, or /app."""
37
38
  # TaskData.resources uses these units; non-default runtime config values take precedence.
38
39
  cpu: float | None = None
39
40
  """Pin the container to this many CPU cores (docker `--cpus`). None = unlimited."""
@@ -178,8 +179,8 @@ control.sendmsg([b"listener"], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.arr
178
179
  class DockerRuntime(Runtime):
179
180
  def __init__(self, config: DockerConfig, name: str | None = None) -> None:
180
181
  super().__init__(name)
181
- self.config = config
182
- self.info = DockerRuntimeInfo(**config.model_dump())
182
+ self.config = config.model_copy(update={"workdir": config.workdir or "/app"})
183
+ self.info = DockerRuntimeInfo(**self.config.model_dump())
183
184
  self._container: str | None = None # our `--name` (used for exec/rm)
184
185
  self._proxy: EgressProxy | None = None
185
186
  self._proxy_host_ip: str | None = None
@@ -39,7 +39,8 @@ _APP_NAME = "verifiers-v1"
39
39
  class ModalConfig(BaseConfig):
40
40
  type: Literal["modal"] = "modal"
41
41
  image: str = "python:3.11-slim"
42
- workdir: str = "/app"
42
+ workdir: str | None = None
43
+ """Working directory override; None uses the task's workdir, or /app."""
43
44
  network_access: bool = True
44
45
  region: str | None = None
45
46
  """Region to provision in (None = provider-chosen)."""
@@ -107,8 +108,8 @@ class ModalRuntime(Runtime):
107
108
 
108
109
  def __init__(self, config: ModalConfig, name: str | None = None) -> None:
109
110
  super().__init__(name)
110
- self.config = config
111
- self.info = ModalRuntimeInfo(**config.model_dump())
111
+ self.config = config.model_copy(update={"workdir": config.workdir or "/app"})
112
+ self.info = ModalRuntimeInfo(**self.config.model_dump())
112
113
  self._sandbox = None
113
114
 
114
115
  @property
@@ -76,7 +76,8 @@ class PrimeConfig(NetworkPolicyConfig):
76
76
  platform auto-builds what the sandbox needs from it (a VM image for `vm` sandboxes,
77
77
  ~10 minutes) and caches the result, so later sandboxes on the same ref start in
78
78
  seconds."""
79
- workdir: str = "/app"
79
+ workdir: str | None = None
80
+ """Working directory override; None uses the task's workdir, or /app."""
80
81
  vm: bool = True
81
82
  """Run as a micro-VM rather than a container (kernel features / stronger isolation)."""
82
83
  guaranteed: bool = False
@@ -149,8 +150,8 @@ class PrimeRuntime(Runtime):
149
150
  def __init__(self, config: PrimeConfig, name: str | None = None) -> None:
150
151
  ensure_prime_auth()
151
152
  super().__init__(name)
152
- self.config = config
153
- self.info = PrimeRuntimeInfo(**config.model_dump())
153
+ self.config = config.model_copy(update={"workdir": config.workdir or "/app"})
154
+ self.info = PrimeRuntimeInfo(**self.config.model_dump())
154
155
  self._client = None
155
156
 
156
157
  @property
@@ -32,9 +32,11 @@ from typing import Annotated
32
32
 
33
33
  from pydantic import BaseModel, ConfigDict, Field, TypeAdapter, ValidationError
34
34
 
35
+ from verifiers.v1.configs.task import TaskConfig
35
36
  from verifiers.v1.configs.taskset import TasksetConfig
36
37
  from verifiers.v1.errors import SandboxError, TaskError
37
38
  from verifiers.v1.runtimes import Runtime
39
+ from verifiers.v1.state import State
38
40
  from verifiers.v1.task import Task, TaskData, TaskResources, TaskTimeout
39
41
  from verifiers.v1.taskset import Taskset
40
42
  from verifiers.v1.trace import Trace
@@ -53,7 +55,13 @@ REWARD_JSON_ADAPTER = TypeAdapter(
53
55
  )
54
56
 
55
57
 
58
+ class HarborTaskConfig(TaskConfig):
59
+ mcp_servers: list[dict] = Field(default_factory=list)
60
+ """Task-declared connections, bound from HarborData during construction."""
61
+
62
+
56
63
  class HarborConfig(TasksetConfig):
64
+ task: HarborTaskConfig = HarborTaskConfig()
57
65
  dataset: str = "harbor/hello-world"
58
66
  """A Harbor Hub package id ("org/name" or "org/name@ref"), where ref is a
59
67
  tag, integer revision, or sha256 digest. Legacy registries selected with `repo`,
@@ -147,6 +155,8 @@ class HarborData(TaskData):
147
155
  env: dict[str, str] = Field(default_factory=dict)
148
156
  """Raw `[environment.env]` templates, resolved only when the runtime starts."""
149
157
  healthcheck: dict | None = None
158
+ mcp_servers: list[dict] = Field(default_factory=list)
159
+ """Task-declared MCP servers, preserved for served-task reconstruction."""
150
160
  verifier_env: dict[str, str] = Field(default_factory=dict)
151
161
  """Raw [verifier.env] entries (literals or `${VAR}`/`${VAR:-default}` templates).
152
162
  Resolved against the host environment at scoring time, like `harbor run` — so a
@@ -159,11 +169,25 @@ class HarborData(TaskData):
159
169
  grades in the agent's box."""
160
170
 
161
171
 
162
- class HarborTask(Task[HarborData]):
172
+ class HarborTask(Task[HarborData, State, HarborTaskConfig]):
163
173
  """Stage and run Harbor's verifier inside the task's live runtime."""
164
174
 
165
175
  verifier_staged: bool = False
166
176
 
177
+ def __init__(self, data: HarborData, config: HarborTaskConfig | None = None):
178
+ super().__init__(data, config)
179
+ # Each reconstructed row gets its own connections without mutating worker config.
180
+ self.config = self.config.model_copy(update={"mcp_servers": data.mcp_servers})
181
+
182
+ @classmethod
183
+ def toolsets(cls, config: HarborTaskConfig):
184
+ from .toolset import HarborMCPConfig, HarborMCPToolset
185
+
186
+ return super().toolsets(config) + [
187
+ HarborMCPToolset(HarborMCPConfig(colocated=True, server=server))
188
+ for server in config.mcp_servers
189
+ ]
190
+
167
191
  def runtime_env(self) -> dict[str, str]:
168
192
  return resolve_env(self.data.env)
169
193
 
@@ -369,6 +393,7 @@ def verifier_box_data(data: HarborData) -> HarborData:
369
393
  "upload_environment": data.upload_environment if fresh else False,
370
394
  "env": dict(verifier.env),
371
395
  "healthcheck": verifier.healthcheck,
396
+ "mcp_servers": [],
372
397
  "network_allow": list(verifier.network_allow),
373
398
  "network_block": [],
374
399
  }
@@ -587,7 +612,9 @@ def parse_task(task_dir: Path, idx: int, harbor_config: HarborConfig) -> HarborD
587
612
  tags=meta.get("tags", []),
588
613
  task_dir=str(task_dir),
589
614
  upload_environment=upload_environment,
590
- **environment.model_dump(include={"env", "healthcheck"}, mode="json"),
615
+ **environment.model_dump(
616
+ include={"env", "healthcheck", "mcp_servers"}, mode="json"
617
+ ),
591
618
  verifier_env=parsed.verifier.env,
592
619
  artifacts=artifacts,
593
620
  collect=hooks,
@@ -703,9 +730,7 @@ def parse_verifier_environment(
703
730
  task_dir.name,
704
731
  )
705
732
  unsupported = [
706
- field
707
- for field in ("mcp_servers", "skills_dir", "tpu")
708
- if getattr(environment, field, None)
733
+ field for field in ("skills_dir", "tpu") if getattr(environment, field, None)
709
734
  ]
710
735
  if environment.os != TaskOS.LINUX or unsupported:
711
736
  raise ValueError(
@@ -0,0 +1,86 @@
1
+ """Task-declared Harbor MCP tools served through the standard VF toolset lifecycle."""
2
+
3
+ import os
4
+ from typing import Any, cast
5
+
6
+ from mcp import Client
7
+ from mcp.client.sse import sse_client
8
+ from mcp.client.stdio import StdioServerParameters, stdio_client
9
+ from mcp.client.streamable_http import streamable_http_client
10
+ from mcp.server.mcpserver import Context, MCPServer
11
+ from mcp.types import CallToolResult, Tool
12
+
13
+ from verifiers.v1.mcp import Toolset, ToolsetConfig
14
+
15
+
16
+ class HarborMCPConfig(ToolsetConfig):
17
+ server: dict[str, Any]
18
+ """One declaration already validated by Harbor's task parser."""
19
+
20
+
21
+ class HarborMCPToolset(Toolset[HarborMCPConfig]):
22
+ @property
23
+ def server_name(self) -> str:
24
+ return self.config.server["name"]
25
+
26
+ async def setup(self) -> None:
27
+ spec = self.config.server
28
+ match spec["transport"]:
29
+ case "stdio":
30
+ # Keep task variables, excluding the wrapper's state and bind controls.
31
+ env = {
32
+ key: value
33
+ for key, value in os.environ.items()
34
+ if key
35
+ not in {
36
+ "VF_CONFIG",
37
+ "VF_STATE_URL",
38
+ "VF_STATE_SECRET",
39
+ "MCP_HOST",
40
+ "MCP_PORT",
41
+ "MCP_PORT_FILE",
42
+ }
43
+ }
44
+ transport = stdio_client(
45
+ StdioServerParameters(
46
+ command=spec["command"], args=spec.get("args", []), env=env
47
+ )
48
+ )
49
+ case "sse":
50
+ transport = sse_client(spec["url"])
51
+ case "streamable-http":
52
+ transport = streamable_http_client(spec["url"])
53
+ case other:
54
+ raise ValueError(f"Unsupported Harbor MCP transport: {other!r}")
55
+ # ServerBase enters and closes this stack in the same task. Keep upstream
56
+ # session state across downstream client reconnects for the whole rollout.
57
+ self.client = await self._exit_stack.enter_async_context(Client(transport))
58
+
59
+ def register(self, mcp: MCPServer) -> None:
60
+ # MCPServer calls these public methods; forward the real catalog and schemas.
61
+ server = cast(Any, mcp)
62
+ server.list_tools = self.list_tools
63
+ server.call_tool = self.call_tool
64
+
65
+ async def list_tools(self) -> list[Tool]:
66
+ tools: list[Tool] = []
67
+ cursor = None
68
+ seen_cursors: set[str] = set()
69
+ while True:
70
+ page = await self.client.list_tools(cursor=cursor)
71
+ tools.extend(page.tools)
72
+ cursor = page.next_cursor
73
+ if cursor is None:
74
+ return tools
75
+ if cursor in seen_cursors:
76
+ raise ValueError("MCP tools pagination returned a repeated cursor")
77
+ seen_cursors.add(cursor)
78
+
79
+ async def call_tool(
80
+ self, name: str, arguments: dict[str, Any], context: Context | None = None
81
+ ) -> CallToolResult:
82
+ return await self.client.call_tool(name, arguments)
83
+
84
+
85
+ if __name__ == "__main__":
86
+ HarborMCPToolset.run()
File without changes