verifiers 0.4.1.dev37__tar.gz → 0.4.1.dev38__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.dev37 → verifiers-0.4.1.dev38}/PKG-INFO +1 -1
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/dialects/anthropic.py +10 -6
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/dialects/base.py +1 -1
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/interception/server.py +37 -45
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/.gitignore +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/LICENSE +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/README.md +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/pyproject.toml +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/conftest.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/agent_user_harness_v1.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/agent_user_v1.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/duet_v1.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/echo_tool_compose/docker-compose.yaml +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/echo_v1.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/network_policy_v1.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/pyproject.toml +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/skill_codeword_v1.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/skills/project-codeword/SKILL.md +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/grid.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_agent_user.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_agentic_judge.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_compose_scoring.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_examples.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_limits.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_multi_agent.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_multi_turn.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_multi_turn_tool.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_multimodal_tool.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_network_policy.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_resume_tool.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_rubric_judge.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_sampling.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_shared_tool.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_single_turn.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_skills.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_stateful_tool.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_user_echo.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/test_user_sim.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/cli/test_replay.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/conftest.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/harnesses/test_core.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/harnesses/test_rlm.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/interception/test_tunnel.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/judges/conftest.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/judges/test_judge.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/judges/test_reference.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/judges/test_rubric.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/runtimes/test_e2b.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/serve/test_client.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/serve/test_delta.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/serve/test_pool.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/test_agent.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/test_dialects.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/test_graph.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/test_semantic.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/test_task.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/test_taskset.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/test_trace.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/utils/test_compile.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/utils/test_loaders.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/utils/test_platform.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/unit/utils/test_score.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/acp/runner.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/agent.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/eval/hint.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/resume.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/client.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/runtime.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/scoring.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/select.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/env.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/episode.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/errors.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/grading.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/graph.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/codex/gate.mjs +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/deepseek/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/deepseek/gate.mjs +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/deepseek/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/deepseek/usage.mjs +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/node.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/opencode/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/opencode/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/opencode/mcp-ready.js +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/pi/gate.mjs +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/utils/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/utils/compaction.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/utils/core.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/utils/install.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/utils/launch.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/utils/mcp.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/harnesses/utils/replay.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/judge.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/judges/decision.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/apptainer.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/compose.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/container.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/deployment.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/e2b.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/runtime.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/strategies.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/semantic.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/serve/delta.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/serve/encoding.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/session.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/state.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/task.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/trace.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/types.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/env.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/eval.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/loaders.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/paths.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/prime.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/scope.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/verifiers/v1/utils/trace_store.py +0 -0
- {verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/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.dev38
|
|
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
|
|
@@ -64,6 +64,7 @@ ERROR_TYPES = {
|
|
|
64
64
|
}
|
|
65
65
|
ERROR_STATUSES = {kind: status for status, kind in ERROR_TYPES.items()}
|
|
66
66
|
|
|
67
|
+
|
|
67
68
|
# Claude may reorder mixed thinking block types between a response and its replay.
|
|
68
69
|
# Native tool events share the final rank, preserving their relative order.
|
|
69
70
|
THINKING_ORDER = {"redacted_thinking": 0, "thinking": 1}
|
|
@@ -118,6 +119,12 @@ _SAFE_CONTENT_TYPES = (
|
|
|
118
119
|
)
|
|
119
120
|
|
|
120
121
|
|
|
122
|
+
def _error_type(status_code: int) -> str:
|
|
123
|
+
return ERROR_TYPES.get(
|
|
124
|
+
status_code, "api_error" if status_code >= 500 else "invalid_request_error"
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
|
|
121
128
|
def parse_content(content) -> str | list[ContentPart]:
|
|
122
129
|
"""Anthropic user-side content (text + image blocks) -> typed content parts."""
|
|
123
130
|
if isinstance(content, str):
|
|
@@ -525,10 +532,10 @@ class AnthropicDialect(Dialect[AnthropicMessage]):
|
|
|
525
532
|
# The SDK sends the key as `x-api-key`; an ANTHROPIC_AUTH_TOKEN arrives as Bearer.
|
|
526
533
|
return headers.get("x-api-key") or super().secret(headers)
|
|
527
534
|
|
|
528
|
-
def error_body(self, message: str) -> dict:
|
|
535
|
+
def error_body(self, message: str, *, status_code: int = 400) -> dict:
|
|
529
536
|
return {
|
|
530
537
|
"type": "error",
|
|
531
|
-
"error": {"type":
|
|
538
|
+
"error": {"type": _error_type(status_code), "message": message},
|
|
532
539
|
}
|
|
533
540
|
|
|
534
541
|
def stream_keepalive(self, first: bool) -> bytes:
|
|
@@ -538,10 +545,7 @@ class AnthropicDialect(Dialect[AnthropicMessage]):
|
|
|
538
545
|
def stream_error(self, error: dict, *, status_code: int | None = None) -> bytes:
|
|
539
546
|
# Once HTTP 200 is committed, clients classify retries from the SSE error type.
|
|
540
547
|
if status_code is not None:
|
|
541
|
-
kind =
|
|
542
|
-
status_code,
|
|
543
|
-
"api_error" if status_code >= 500 else "invalid_request_error",
|
|
544
|
-
)
|
|
548
|
+
kind = _error_type(status_code)
|
|
545
549
|
error = {**error, "error": {**error.get("error", {}), "type": kind}}
|
|
546
550
|
# The Anthropic SDKs raise only on a named `error` event.
|
|
547
551
|
return b"event: error\ndata: " + json.dumps(error).encode() + b"\n\n"
|
|
@@ -316,7 +316,7 @@ class Dialect(ABC, Generic[RespT]):
|
|
|
316
316
|
client ends on an earlier event (e.g. Responses' `response.completed`) overrides this."""
|
|
317
317
|
return is_sse_done_event(chunk)
|
|
318
318
|
|
|
319
|
-
def error_body(self, message: str) -> dict:
|
|
319
|
+
def error_body(self, message: str, *, status_code: int = 400) -> dict:
|
|
320
320
|
"""An error payload in this format's error shape (OpenAI by default)."""
|
|
321
321
|
return {"error": {"message": message, "type": "invalid_request_error"}}
|
|
322
322
|
|
|
@@ -114,6 +114,13 @@ async def _request_digest(raw: bytes) -> bytes:
|
|
|
114
114
|
return await asyncio.to_thread(_body_digest, raw)
|
|
115
115
|
|
|
116
116
|
|
|
117
|
+
def _error_response(dialect: Dialect, message: str, *, status: int) -> web.Response:
|
|
118
|
+
"""Keep the native error classification consistent with its HTTP status."""
|
|
119
|
+
return web.json_response(
|
|
120
|
+
dialect.error_body(message, status_code=status), status=status
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
|
|
117
124
|
def _completion_response(completion: dict | None) -> web.Response:
|
|
118
125
|
"""Serialize a model's JSON-native response without an intermediate string."""
|
|
119
126
|
try:
|
|
@@ -470,9 +477,8 @@ class InterceptionServer(Interception):
|
|
|
470
477
|
logger.warning(
|
|
471
478
|
"rollout %s failed: %s: %s", session.trace.id, type(error).__name__, error
|
|
472
479
|
)
|
|
473
|
-
return
|
|
474
|
-
dialect
|
|
475
|
-
status=getattr(error, "status_code", 502),
|
|
480
|
+
return _error_response(
|
|
481
|
+
dialect, str(error), status=getattr(error, "status_code", 502)
|
|
476
482
|
)
|
|
477
483
|
|
|
478
484
|
def mediate_capabilities(
|
|
@@ -589,7 +595,7 @@ class InterceptionServer(Interception):
|
|
|
589
595
|
session = self.sessions.get(dialect.secret(request.headers))
|
|
590
596
|
if session is None:
|
|
591
597
|
logger.warning("interception: unauthorized request")
|
|
592
|
-
return
|
|
598
|
+
return _error_response(dialect, "unauthorized", status=401)
|
|
593
599
|
session.adopt(asyncio.current_task())
|
|
594
600
|
started = time.monotonic()
|
|
595
601
|
try:
|
|
@@ -621,7 +627,7 @@ class InterceptionServer(Interception):
|
|
|
621
627
|
try:
|
|
622
628
|
acp, upstream_headers = extract_acp_info(request.headers)
|
|
623
629
|
except ValueError as error:
|
|
624
|
-
return
|
|
630
|
+
return _error_response(dialect, str(error), status=400)
|
|
625
631
|
logger.debug(
|
|
626
632
|
"intercept %s: id=%s stream=%s retry=%s",
|
|
627
633
|
request.path,
|
|
@@ -655,10 +661,9 @@ class InterceptionServer(Interception):
|
|
|
655
661
|
if idempotency_key or retried:
|
|
656
662
|
idempotent = session.idempotent_requests.get(replay_key)
|
|
657
663
|
if idempotent is not None and idempotent.binding != binding:
|
|
658
|
-
return
|
|
659
|
-
dialect
|
|
660
|
-
|
|
661
|
-
),
|
|
664
|
+
return _error_response(
|
|
665
|
+
dialect,
|
|
666
|
+
"Idempotency-Key was reused with a different request",
|
|
662
667
|
status=400,
|
|
663
668
|
)
|
|
664
669
|
if idempotent is not None and idempotent.response is not None:
|
|
@@ -671,15 +676,12 @@ class InterceptionServer(Interception):
|
|
|
671
676
|
try:
|
|
672
677
|
model_request = dialect.parse_request(body)
|
|
673
678
|
except ValueError as error:
|
|
674
|
-
return
|
|
679
|
+
return _error_response(dialect, str(error), status=400)
|
|
675
680
|
if session.released:
|
|
676
|
-
return
|
|
677
|
-
dialect.error_body("rollout concluded"), status=409
|
|
678
|
-
)
|
|
681
|
+
return _error_response(dialect, "rollout concluded", status=409)
|
|
679
682
|
if session.stopped:
|
|
680
|
-
return
|
|
681
|
-
dialect
|
|
682
|
-
status=400,
|
|
683
|
+
return _error_response(
|
|
684
|
+
dialect, f"rollout stopped: {session.trace.stop_condition}", status=400
|
|
683
685
|
)
|
|
684
686
|
if idempotent is None:
|
|
685
687
|
idempotent = IdempotentRequest(binding=binding)
|
|
@@ -693,9 +695,7 @@ class InterceptionServer(Interception):
|
|
|
693
695
|
)
|
|
694
696
|
response = await asyncio.shield(inflight)
|
|
695
697
|
if response is None:
|
|
696
|
-
return
|
|
697
|
-
dialect.error_body("upstream attempt failed"), status=503
|
|
698
|
-
)
|
|
698
|
+
return _error_response(dialect, "upstream attempt failed", status=503)
|
|
699
699
|
return _replay_response(response)
|
|
700
700
|
|
|
701
701
|
if idempotent.inflight is not None:
|
|
@@ -718,8 +718,8 @@ class InterceptionServer(Interception):
|
|
|
718
718
|
try:
|
|
719
719
|
refused = await session.refused()
|
|
720
720
|
if refused is not None:
|
|
721
|
-
return
|
|
722
|
-
dialect
|
|
721
|
+
return _error_response(
|
|
722
|
+
dialect, f"rollout stopped: {refused}", status=400
|
|
723
723
|
)
|
|
724
724
|
original_request = model_request
|
|
725
725
|
model_request, request_rewrites, stopped = await session.rewrite_request(
|
|
@@ -747,10 +747,7 @@ class InterceptionServer(Interception):
|
|
|
747
747
|
)
|
|
748
748
|
turn.commit_prompt()
|
|
749
749
|
session.trace.stop(stopped)
|
|
750
|
-
return
|
|
751
|
-
dialect.error_body(f"rollout stopped: {stopped}"),
|
|
752
|
-
status=400,
|
|
753
|
-
)
|
|
750
|
+
return _error_response(dialect, f"rollout stopped: {stopped}", status=400)
|
|
754
751
|
|
|
755
752
|
try:
|
|
756
753
|
body, policy_paths = self.mediate_capabilities(session, dialect, body)
|
|
@@ -761,7 +758,7 @@ class InterceptionServer(Interception):
|
|
|
761
758
|
session.trace, model_request.messages, model_request.tools, dialect.name
|
|
762
759
|
)
|
|
763
760
|
except ValueError as error:
|
|
764
|
-
return
|
|
761
|
+
return _error_response(dialect, str(error), status=400)
|
|
765
762
|
except RolloutError as error:
|
|
766
763
|
return self._fail(session, dialect, error)
|
|
767
764
|
# The tail is what the harness added since the last turn (tool results, user
|
|
@@ -822,9 +819,7 @@ class InterceptionServer(Interception):
|
|
|
822
819
|
len(call_response.message.tool_calls or []),
|
|
823
820
|
)
|
|
824
821
|
if session.released: # concluded while sampling — seal holds
|
|
825
|
-
return
|
|
826
|
-
dialect.error_body("rollout concluded"), status=409
|
|
827
|
-
)
|
|
822
|
+
return _error_response(dialect, "rollout concluded", status=409)
|
|
828
823
|
response_rewrites = []
|
|
829
824
|
stopped = None
|
|
830
825
|
if session.response_interceptors or session.response_stops:
|
|
@@ -845,10 +840,9 @@ class InterceptionServer(Interception):
|
|
|
845
840
|
)
|
|
846
841
|
call_response.raw = raw_response
|
|
847
842
|
if session.stopped:
|
|
848
|
-
return
|
|
849
|
-
dialect
|
|
850
|
-
|
|
851
|
-
),
|
|
843
|
+
return _error_response(
|
|
844
|
+
dialect,
|
|
845
|
+
f"rollout stopped: {session.trace.stop_condition}",
|
|
852
846
|
status=400,
|
|
853
847
|
)
|
|
854
848
|
node = turn.commit(call_response)
|
|
@@ -858,9 +852,8 @@ class InterceptionServer(Interception):
|
|
|
858
852
|
stopped = await session.gate_tool_calls(node)
|
|
859
853
|
if stopped is not None:
|
|
860
854
|
session.trace.stop(stopped)
|
|
861
|
-
return
|
|
862
|
-
dialect
|
|
863
|
-
status=400,
|
|
855
|
+
return _error_response(
|
|
856
|
+
dialect, f"rollout stopped: {stopped}", status=400
|
|
864
857
|
)
|
|
865
858
|
except RolloutError as e:
|
|
866
859
|
# Stash the real cause; the rollout re-raises it after the harness returns.
|
|
@@ -873,9 +866,8 @@ class InterceptionServer(Interception):
|
|
|
873
866
|
type(e).__name__,
|
|
874
867
|
e,
|
|
875
868
|
)
|
|
876
|
-
return
|
|
877
|
-
dialect
|
|
878
|
-
status=getattr(e, "status_code", 502),
|
|
869
|
+
return _error_response(
|
|
870
|
+
dialect, str(e), status=getattr(e, "status_code", 502)
|
|
879
871
|
)
|
|
880
872
|
except Exception as e: # noqa: BLE001 - surface as an API error
|
|
881
873
|
error = e
|
|
@@ -885,7 +877,7 @@ class InterceptionServer(Interception):
|
|
|
885
877
|
type(e).__name__,
|
|
886
878
|
e,
|
|
887
879
|
)
|
|
888
|
-
return
|
|
880
|
+
return _error_response(dialect, str(e), status=502)
|
|
889
881
|
except BaseException as e:
|
|
890
882
|
# A cancelled exchange (harness disconnect, shutdown) is still
|
|
891
883
|
# recorded, coupled to its cancellation.
|
|
@@ -923,7 +915,7 @@ class InterceptionServer(Interception):
|
|
|
923
915
|
relayed as native JSON, never recorded on the trace."""
|
|
924
916
|
session = self.sessions.get(dialect.secret(request.headers))
|
|
925
917
|
if session is None:
|
|
926
|
-
return
|
|
918
|
+
return _error_response(dialect, "unauthorized", status=401)
|
|
927
919
|
session.adopt(asyncio.current_task())
|
|
928
920
|
logger.debug("intercept aux %s: id=%s", route, session.trace.id)
|
|
929
921
|
try:
|
|
@@ -942,12 +934,12 @@ class InterceptionServer(Interception):
|
|
|
942
934
|
type(e).__name__,
|
|
943
935
|
e,
|
|
944
936
|
)
|
|
945
|
-
return
|
|
946
|
-
dialect
|
|
937
|
+
return _error_response(
|
|
938
|
+
dialect, str(e), status=getattr(e, "status_code", 502)
|
|
947
939
|
)
|
|
948
940
|
except Exception as e: # noqa: BLE001 - surface auxiliary relay failures
|
|
949
941
|
logger.warning("aux call failed: id=%s %s", session.trace.id, e)
|
|
950
|
-
return
|
|
942
|
+
return _error_response(dialect, str(e), status=502)
|
|
951
943
|
return web.json_response(result)
|
|
952
944
|
|
|
953
945
|
async def handle_models(self, request: web.Request) -> web.Response:
|
|
@@ -978,7 +970,7 @@ class InterceptionServer(Interception):
|
|
|
978
970
|
)
|
|
979
971
|
except httpx.HTTPError as e:
|
|
980
972
|
logger.warning("models call failed: id=%s %s", session.trace.id, e)
|
|
981
|
-
return
|
|
973
|
+
return _error_response(dialect, str(e), status=502)
|
|
982
974
|
return web.Response(
|
|
983
975
|
body=upstream.content,
|
|
984
976
|
status=upstream.status_code,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/agent_user_harness_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/counter_tool_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/echo_acp_resume_v1.py
RENAMED
|
File without changes
|
{verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/echo_agentic_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/echo_user_sim_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/network_policy_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/tests/integration/fixtures/skill_codeword_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev37 → verifiers-0.4.1.dev38}/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
|
|
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
|