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.
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/PKG-INFO +1 -1
- verifiers-0.4.1.dev13/tests/integration/fixtures/network_policy_v1.py +80 -0
- verifiers-0.4.1.dev13/tests/integration/test_network_policy.py +68 -0
- verifiers-0.4.1.dev12/tests/integration/fixtures/network_policy_v1.py +0 -88
- verifiers-0.4.1.dev12/tests/integration/test_network_policy.py +0 -28
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/.gitignore +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/LICENSE +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/README.md +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/pyproject.toml +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/conftest.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/agent_user_harness_v1.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/agent_user_v1.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/duet_v1.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_v1.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/pyproject.toml +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/skill_codeword_v1.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/skills/project-codeword/SKILL.md +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/grid.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_agent_user.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_agentic_judge.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_examples.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_limits.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_multi_agent.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_multi_turn.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_multi_turn_tool.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_multimodal_tool.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_resume_tool.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_rubric_judge.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_shared_tool.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_single_turn.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_skills.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_stateful_tool.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_user_echo.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/test_user_sim.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/cli/test_replay.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/conftest.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/harnesses/test_core.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/harnesses/test_rlm.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/interception/test_tunnel.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/judges/conftest.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/judges/test_judge.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/judges/test_reference.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/judges/test_rubric.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/runtimes/test_e2b.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/serve/test_client.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/serve/test_delta.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/serve/test_pool.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/test_agent.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/test_graph.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/test_semantic.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/test_task.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/test_taskset.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/test_trace.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/utils/test_compile.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/utils/test_loaders.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/utils/test_platform.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/unit/utils/test_score.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/acp/runner.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/agent.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/eval/hint.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/resume.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/client.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/runtime.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/select.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/env.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/episode.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/errors.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/graph.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/codex/gate.mjs +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/node.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/pi/gate.mjs +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/utils/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/utils/compaction.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/utils/core.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/utils/install.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/utils/launch.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/harnesses/utils/mcp.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judge.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judges/decision.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/apptainer.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/container.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/e2b.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/semantic.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/delta.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/encoding.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/session.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/state.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/task.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/harbor/compose.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/harbor/env.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/trace.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/types.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/eval.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/loaders.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/paths.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/prime.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/scope.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/utils/trace_store.py +0 -0
- {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.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/agent_user_harness_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/counter_tool_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_acp_resume_v1.py
RENAMED
|
File without changes
|
{verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_agentic_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/echo_user_sim_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/skill_codeword_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/tests/integration/fixtures/tool_response_image_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/isolated_verifier/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev12 → verifiers-0.4.1.dev13}/verifiers/v1/envs/shared_agentic_judge/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|