verifiers 0.4.1.dev12__tar.gz → 0.4.1.dev13__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 (259) hide show
  1. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/PKG-INFO +1 -1
  2. verifiers-0.4.1.dev13/tests/integration/fixtures/network_policy_v1.py +80 -0
  3. verifiers-0.4.1.dev13/tests/integration/test_network_policy.py +68 -0
  4. verifiers-0.4.1.dev12/tests/integration/fixtures/network_policy_v1.py +0 -88
  5. verifiers-0.4.1.dev12/tests/integration/test_network_policy.py +0 -28
  6. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/.gitignore +0 -0
  7. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/LICENSE +0 -0
  8. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/README.md +0 -0
  9. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/pyproject.toml +0 -0
  10. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/conftest.py +0 -0
  11. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/agent_user_harness_v1.py +0 -0
  12. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/agent_user_v1.py +0 -0
  13. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/counter_tool_v1.py +0 -0
  14. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/duet_v1.py +0 -0
  15. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_acp_resume_v1.py +0 -0
  16. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_agentic_v1.py +0 -0
  17. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_tool_v1.py +0 -0
  18. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_user_sim_v1.py +0 -0
  19. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_v1.py +0 -0
  20. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/pyproject.toml +0 -0
  21. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/skill_codeword_v1.py +0 -0
  22. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/skills/project-codeword/SKILL.md +0 -0
  23. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/tool_response_image_v1.py +0 -0
  24. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/grid.py +0 -0
  25. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_agent_user.py +0 -0
  26. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_agentic_judge.py +0 -0
  27. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_examples.py +0 -0
  28. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_limits.py +0 -0
  29. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_multi_agent.py +0 -0
  30. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_multi_turn.py +0 -0
  31. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_multi_turn_tool.py +0 -0
  32. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_multimodal_tool.py +0 -0
  33. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_resume_tool.py +0 -0
  34. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_rubric_judge.py +0 -0
  35. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_shared_tool.py +0 -0
  36. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_single_turn.py +0 -0
  37. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_skills.py +0 -0
  38. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_stateful_tool.py +0 -0
  39. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_user_echo.py +0 -0
  40. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_user_sim.py +0 -0
  41. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/cli/test_replay.py +0 -0
  42. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/conftest.py +0 -0
  43. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/harnesses/test_core.py +0 -0
  44. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/harnesses/test_rlm.py +0 -0
  45. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/interception/test_tunnel.py +0 -0
  46. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/judges/conftest.py +0 -0
  47. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/judges/test_judge.py +0 -0
  48. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/judges/test_reference.py +0 -0
  49. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/judges/test_rubric.py +0 -0
  50. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/runtimes/test_e2b.py +0 -0
  51. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/serve/test_client.py +0 -0
  52. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/serve/test_delta.py +0 -0
  53. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/serve/test_pool.py +0 -0
  54. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/test_agent.py +0 -0
  55. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/test_graph.py +0 -0
  56. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/test_semantic.py +0 -0
  57. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/test_task.py +0 -0
  58. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/test_taskset.py +0 -0
  59. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/test_trace.py +0 -0
  60. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/utils/test_compile.py +0 -0
  61. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/utils/test_loaders.py +0 -0
  62. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/utils/test_platform.py +0 -0
  63. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/utils/test_score.py +0 -0
  64. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/__init__.py +0 -0
  65. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/__init__.py +0 -0
  66. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/acp/__init__.py +0 -0
  67. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/acp/runner.py +0 -0
  68. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/agent.py +0 -0
  69. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/__init__.py +0 -0
  70. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  71. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/dashboard/base.py +0 -0
  72. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/dashboard/eval.py +0 -0
  73. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/dashboard/replay.py +0 -0
  74. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/dashboard/validate.py +0 -0
  75. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/debug.py +0 -0
  76. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/eval/__init__.py +0 -0
  77. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/eval/hint.py +0 -0
  78. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/eval/main.py +0 -0
  79. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/eval/resume.py +0 -0
  80. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/eval/runner.py +0 -0
  81. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/gepa.py +0 -0
  82. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/output.py +0 -0
  83. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/replay.py +0 -0
  84. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/resolve.py +0 -0
  85. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/resume.py +0 -0
  86. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/validate.py +0 -0
  87. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/clients/__init__.py +0 -0
  88. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/clients/base.py +0 -0
  89. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/clients/client.py +0 -0
  90. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/clients/eval.py +0 -0
  91. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/clients/train.py +0 -0
  92. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/__init__.py +0 -0
  93. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/agent.py +0 -0
  94. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/cli/__init__.py +0 -0
  95. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/cli/debug.py +0 -0
  96. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/cli/env.py +0 -0
  97. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/cli/eval.py +0 -0
  98. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/cli/replay.py +0 -0
  99. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/cli/validate.py +0 -0
  100. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/client.py +0 -0
  101. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/env.py +0 -0
  102. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/harness.py +0 -0
  103. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/judge.py +0 -0
  104. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/retries.py +0 -0
  105. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/runtime.py +0 -0
  106. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/select.py +0 -0
  107. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/serve.py +0 -0
  108. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/task.py +0 -0
  109. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/taskset.py +0 -0
  110. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/dialects/__init__.py +0 -0
  111. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/dialects/anthropic.py +0 -0
  112. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/dialects/base.py +0 -0
  113. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/dialects/chat.py +0 -0
  114. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/dialects/responses.py +0 -0
  115. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/env.py +0 -0
  116. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/__init__.py +0 -0
  117. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  118. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  119. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  120. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/best_of_n/env.py +0 -0
  121. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
  122. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
  123. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  124. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  125. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/single_agent/env.py +0 -0
  126. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  127. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/user_sim/env.py +0 -0
  128. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/episode.py +0 -0
  129. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/errors.py +0 -0
  130. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/gepa/__init__.py +0 -0
  131. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/gepa/adapter.py +0 -0
  132. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/gepa/config.py +0 -0
  133. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/gepa/dataset.py +0 -0
  134. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/gepa/reflection.py +0 -0
  135. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/gepa/runner.py +0 -0
  136. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/graph.py +0 -0
  137. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harness.py +0 -0
  138. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/__init__.py +0 -0
  139. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  140. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/bash/harness.py +0 -0
  141. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  142. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  143. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  144. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  145. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  146. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  147. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/codex/gate.mjs +0 -0
  148. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/codex/harness.py +0 -0
  149. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  150. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  151. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  152. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  153. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  154. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  155. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  156. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  157. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/node.py +0 -0
  158. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/null/__init__.py +0 -0
  159. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/null/harness.py +0 -0
  160. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  161. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
  162. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  163. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/pi/gate.mjs +0 -0
  164. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/pi/harness.py +0 -0
  165. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
  166. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
  167. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  168. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  169. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  170. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  171. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  172. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/utils/__init__.py +0 -0
  173. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/utils/compaction.py +0 -0
  174. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/utils/core.py +0 -0
  175. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/utils/install.py +0 -0
  176. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/utils/launch.py +0 -0
  177. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/utils/mcp.py +0 -0
  178. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/__init__.py +0 -0
  179. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/base.py +0 -0
  180. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/pool.py +0 -0
  181. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/server.py +0 -0
  182. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  183. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/tunnel/base.py +0 -0
  184. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/tunnel/custom.py +0 -0
  185. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/tunnel/prime.py +0 -0
  186. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judge.py +0 -0
  187. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judges/__init__.py +0 -0
  188. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judges/decision.py +0 -0
  189. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judges/reference.py +0 -0
  190. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judges/reference.txt +0 -0
  191. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judges/rubric.py +0 -0
  192. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judges/rubric.txt +0 -0
  193. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/mcp/__init__.py +0 -0
  194. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/mcp/launch.py +0 -0
  195. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/mcp/server.py +0 -0
  196. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/mcp/toolset.py +0 -0
  197. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/rollout.py +0 -0
  198. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/__init__.py +0 -0
  199. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/apptainer.py +0 -0
  200. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/base.py +0 -0
  201. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/container.py +0 -0
  202. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  203. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/docker/egress.py +0 -0
  204. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/e2b.py +0 -0
  205. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/limiters.py +0 -0
  206. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/modal.py +0 -0
  207. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/prime.py +0 -0
  208. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/subprocess.py +0 -0
  209. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/semantic.py +0 -0
  210. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/__init__.py +0 -0
  211. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/client.py +0 -0
  212. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/delta.py +0 -0
  213. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/encoding.py +0 -0
  214. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/pool.py +0 -0
  215. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/server.py +0 -0
  216. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/types.py +0 -0
  217. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/session.py +0 -0
  218. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/state.py +0 -0
  219. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/task.py +0 -0
  220. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/taskset.py +0 -0
  221. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/__init__.py +0 -0
  222. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  223. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/harbor/compose.py +0 -0
  224. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/harbor/env.py +0 -0
  225. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  226. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
  227. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
  228. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
  229. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
  230. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
  231. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
  232. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  233. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  234. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  235. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  236. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/trace.py +0 -0
  237. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/types.py +0 -0
  238. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/__init__.py +0 -0
  239. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/aio.py +0 -0
  240. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/artifacts.py +0 -0
  241. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/compile.py +0 -0
  242. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/decorators.py +0 -0
  243. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/eval.py +0 -0
  244. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/format.py +0 -0
  245. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/generic.py +0 -0
  246. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/git.py +0 -0
  247. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/image.py +0 -0
  248. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/interrupt.py +0 -0
  249. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/loaders.py +0 -0
  250. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/logging.py +0 -0
  251. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/memory.py +0 -0
  252. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/paths.py +0 -0
  253. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/platform.py +0 -0
  254. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/prime.py +0 -0
  255. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/retries.py +0 -0
  256. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/scope.py +0 -0
  257. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/score.py +0 -0
  258. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/trace_store.py +0 -0
  259. {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: verifiers
3
- Version: 0.4.1.dev12
3
+ Version: 0.4.1.dev13
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
@@ -0,0 +1,80 @@
1
+ """network-policy-v1: the agent runs an egress probe under the task's network policy.
2
+
3
+ One task per policy the task data can declare: `open` (the default), `off` (an empty
4
+ allowlist), `block` (blocks `example.com`) and `allow` (allows only `pypi.org`). Setup
5
+ stages a probe script while egress is still open; the prompt asks the model to run it.
6
+ The probe fetches both hosts and records which ones it reached, so the reward is 1 only
7
+ if the policy held: each host answered exactly when the policy permits it. A harness
8
+ without a shell writes no report and scores 0. Needs a runtime with network policy
9
+ support; the integration test runs it on prime.
10
+ """
11
+
12
+ import json
13
+
14
+ import verifiers.v1 as vf
15
+ from verifiers.v1.runtimes import Runtime
16
+
17
+ __all__ = ["NetworkPolicyTaskset"]
18
+
19
+ BLOCKED = "example.com"
20
+ ALLOWED = "pypi.org"
21
+ PROBE_PATH = "/tmp/network-probe.py"
22
+ REPORT = "/tmp/network-probe.json"
23
+
24
+ # What each task's policy lets through, keyed by task name.
25
+ EXPECTED = {
26
+ "open": {"blocked": "ok", "allowed": "ok"},
27
+ "off": {"blocked": "denied", "allowed": "denied"},
28
+ "block": {"blocked": "denied", "allowed": "ok"},
29
+ "allow": {"blocked": "denied", "allowed": "ok"},
30
+ }
31
+
32
+ # Any HTTP answer, error status included, means the destination was reachable; a
33
+ # refused connection, a proxy refusal, a DNS failure, or a timeout means it was not.
34
+ PROBE = f"""
35
+ import json, urllib.error, urllib.request
36
+ report = {{}}
37
+ for name, url in {{"blocked": "https://{BLOCKED}", "allowed": "https://{ALLOWED}/simple/"}}.items():
38
+ try:
39
+ urllib.request.urlopen(url, timeout=15)
40
+ report[name] = "ok"
41
+ except urllib.error.HTTPError:
42
+ report[name] = "ok"
43
+ except Exception:
44
+ report[name] = "denied"
45
+ open({REPORT!r}, "w").write(json.dumps(report))
46
+ print(json.dumps(report))
47
+ """
48
+
49
+
50
+ class NetworkPolicyTask(vf.Task):
51
+ async def setup(self, trace: vf.Trace, runtime: Runtime) -> None:
52
+ await runtime.write(PROBE_PATH, PROBE.encode())
53
+
54
+ @vf.reward(weight=1.0)
55
+ async def policy_held(self, trace: vf.Trace, runtime: Runtime) -> float:
56
+ result = await runtime.run(["cat", REPORT], {})
57
+ report = json.loads(result.stdout) if result.exit_code == 0 else None
58
+ trace.info["network_report"] = report
59
+ return float(report == EXPECTED[self.data.name])
60
+
61
+
62
+ class NetworkPolicyTaskset(vf.Taskset[NetworkPolicyTask, vf.TasksetConfig]):
63
+ def load(self) -> list[NetworkPolicyTask]:
64
+ policies = {
65
+ "open": {},
66
+ "off": {"network_allow": []},
67
+ "block": {"network_block": [BLOCKED]},
68
+ "allow": {"network_allow": [ALLOWED]},
69
+ }
70
+ prompt = (
71
+ f"Use your shell to run `python3 {PROBE_PATH}` once, then reply with its "
72
+ "output."
73
+ )
74
+ return [
75
+ NetworkPolicyTask(
76
+ vf.TaskData(idx=idx, name=name, prompt=prompt, **policy),
77
+ self.config.task,
78
+ )
79
+ for idx, (name, policy) in enumerate(policies.items())
80
+ ]
@@ -0,0 +1,68 @@
1
+ """A task's network policy holds during execution, and the model is told about it: the
2
+ agent runs an egress probe under each policy the task data declares
3
+ (network-policy-v1), with the agent's `network_notice` on or off, across every harness
4
+ on prime."""
5
+
6
+ import pytest
7
+ from grid import grid
8
+
9
+ from verifiers.v1.utils.loaders import harness_class
10
+
11
+ NOTICES = {
12
+ "open": None,
13
+ "off": "External network access is disabled.",
14
+ "block": (
15
+ "External network access is allowed except for these blocked destinations: "
16
+ "example.com. Do not circumvent this selection of domains."
17
+ ),
18
+ "allow": (
19
+ "External network access is limited to these destinations: pypi.org. "
20
+ "Do not circumvent this selection of domains."
21
+ ),
22
+ }
23
+
24
+
25
+ def prompt_text(trace) -> str:
26
+ """Every prompt-supplied message the model saw, as one text."""
27
+ texts = []
28
+ for node in trace.nodes:
29
+ if node.sampled:
30
+ continue
31
+ content = node.message.content
32
+ if isinstance(content, str):
33
+ texts.append(content)
34
+ elif content:
35
+ texts.extend(getattr(part, "text", "") or "" for part in content)
36
+ return "\n".join(texts)
37
+
38
+
39
+ @pytest.mark.parametrize("notice", [True, False], ids=["notice-on", "notice-off"])
40
+ @pytest.mark.parametrize(
41
+ "harness,harness_runtime", grid(runtimes=["prime"]), indirect=True
42
+ )
43
+ async def test_network_policy(run, harness, harness_runtime, notice):
44
+ episodes = await run(
45
+ "network-policy-v1",
46
+ harness=harness,
47
+ runtime=harness_runtime,
48
+ num_tasks=len(NOTICES),
49
+ max_turns=6,
50
+ max_tokens=4096,
51
+ env={"agent": {"network_notice": notice}},
52
+ )
53
+ by_name = {episode.task.data.name: episode for episode in episodes}
54
+ assert set(by_name) == set(NOTICES)
55
+ for name, episode in by_name.items():
56
+ [trace] = episode.traces
57
+ assert trace.ok, [error.message for error in trace.errors]
58
+ prompt = prompt_text(trace)
59
+ if notice and NOTICES[name]:
60
+ assert NOTICES[name] in prompt, name
61
+ else:
62
+ assert "External network access" not in prompt, name
63
+ if harness_class(harness.id).EXECUTES_CODE:
64
+ assert trace.reward == 1.0, (
65
+ name,
66
+ trace.info["network_report"],
67
+ trace.last_reply,
68
+ )
@@ -1,88 +0,0 @@
1
- """network-policy-v1: a scripted, model-free agent probes egress under the task's policy.
2
-
3
- Task 0 blocks `example.com`; task 1 allows only `pypi.org`. During execution the scripted
4
- harness fetches both hosts and the framework's own interception endpoint from inside the
5
- runtime and records which ones it reached. The reward is 1 only if the policy held: the
6
- denied host failed, the permitted host answered, and the framework route stayed reachable.
7
- Needs a runtime with network policy support (docker or prime).
8
- """
9
-
10
- import json
11
-
12
- import verifiers.v1 as vf
13
- from verifiers.v1.clients import ModelContext
14
- from verifiers.v1.configs.harness import HarnessConfig
15
- from verifiers.v1.harness import Harness
16
- from verifiers.v1.runtimes import ProgramResult, Runtime
17
-
18
- __all__ = ["NetworkPolicyTaskset", "ScriptedNetworkProbeHarness"]
19
-
20
- BLOCKED = "example.com"
21
- ALLOWED = "pypi.org"
22
- REPORT = "/tmp/network-policy-report.json"
23
-
24
- # Any HTTP answer, error status included, means the destination was reachable; a
25
- # refused connection, a proxy refusal, a DNS failure, or a timeout means it was not.
26
- PROBE = """
27
- import json, sys, urllib.error, urllib.request
28
- report = {}
29
- for name, url in json.loads(sys.argv[1]).items():
30
- try:
31
- urllib.request.urlopen(url, timeout=15)
32
- report[name] = "ok"
33
- except urllib.error.HTTPError:
34
- report[name] = "ok"
35
- except Exception:
36
- report[name] = "denied"
37
- open(sys.argv[2], "w").write(json.dumps(report))
38
- """
39
-
40
-
41
- class ScriptedNetworkProbeHarness(Harness[HarnessConfig]):
42
- async def launch(
43
- self,
44
- ctx: ModelContext,
45
- trace: vf.Trace,
46
- runtime: Runtime,
47
- endpoint: str,
48
- secret: str,
49
- mcp_urls: dict[str, str],
50
- data: vf.TaskData,
51
- tool_interception_url: str | None = None,
52
- ) -> ProgramResult:
53
- urls = {
54
- "blocked": f"https://{BLOCKED}",
55
- "allowed": f"https://{ALLOWED}/simple/",
56
- "framework": endpoint,
57
- }
58
- return await runtime.run_program(
59
- ["python3", "-c", PROBE, json.dumps(urls), REPORT], {}
60
- )
61
-
62
-
63
- class NetworkPolicyTask(vf.Task):
64
- @vf.reward(weight=1.0)
65
- async def policy_held(self, trace: vf.Trace, runtime: Runtime) -> float:
66
- report = json.loads(await runtime.read(REPORT))
67
- trace.info["network_report"] = report
68
- return float(
69
- report == {"blocked": "denied", "allowed": "ok", "framework": "ok"}
70
- )
71
-
72
-
73
- class NetworkPolicyTaskset(vf.Taskset[NetworkPolicyTask, vf.TasksetConfig]):
74
- def load(self) -> list[NetworkPolicyTask]:
75
- return [
76
- NetworkPolicyTask(
77
- vf.TaskData(
78
- idx=0, name="block", prompt="probe", network_block=[BLOCKED]
79
- ),
80
- self.config.task,
81
- ),
82
- NetworkPolicyTask(
83
- vf.TaskData(
84
- idx=1, name="allow", prompt="probe", network_allow=[ALLOWED]
85
- ),
86
- self.config.task,
87
- ),
88
- ]
@@ -1,28 +0,0 @@
1
- """A task's network policy holds during execution: a scripted agent probes a blocked host,
2
- a permitted host, and the framework's own route from inside the runtime
3
- (network-policy-v1), across the runtimes with a network policy."""
4
-
5
- import pytest
6
- from grid import runtimes_grid
7
-
8
-
9
- @pytest.mark.parametrize(
10
- "harness_runtime", runtimes_grid(needs=("network",)), indirect=True
11
- )
12
- async def test_network_policy(run, harness_runtime):
13
- episodes = await run(
14
- "network-policy-v1",
15
- harness="network-policy-v1",
16
- runtime=harness_runtime,
17
- num_tasks=2,
18
- )
19
- traces = [trace for episode in episodes for trace in episode.traces]
20
- by_name = {trace.task.data.name: trace for trace in traces}
21
- assert set(by_name) == {"block", "allow"}
22
- for name, trace in by_name.items():
23
- assert trace.ok, [error.message for error in trace.errors]
24
- assert trace.info["network_report"] == {
25
- "blocked": "denied",
26
- "allowed": "ok",
27
- "framework": "ok",
28
- }, name
File without changes