verifiers 0.4.1.dev31__tar.gz → 0.4.1.dev33__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.dev31 → verifiers-0.4.1.dev33}/PKG-INFO +1 -1
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/pyproject.toml +1 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/grid.py +1 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/__init__.py +3 -0
- verifiers-0.4.1.dev33/verifiers/v1/harnesses/deepseek/__init__.py +6 -0
- verifiers-0.4.1.dev33/verifiers/v1/harnesses/deepseek/gate.mjs +11 -0
- verifiers-0.4.1.dev33/verifiers/v1/harnesses/deepseek/harness.py +148 -0
- verifiers-0.4.1.dev33/verifiers/v1/harnesses/deepseek/usage.mjs +75 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/judges/decision.py +1 -1
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/.gitignore +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/LICENSE +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/README.md +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/conftest.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/agent_user_harness_v1.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/agent_user_v1.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/duet_v1.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/echo_tool_compose/docker-compose.yaml +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/echo_v1.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/network_policy_v1.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/pyproject.toml +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/skill_codeword_v1.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/skills/project-codeword/SKILL.md +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_agent_user.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_agentic_judge.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_compose_scoring.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_examples.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_limits.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_multi_agent.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_multi_turn.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_multi_turn_tool.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_multimodal_tool.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_network_policy.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_resume_tool.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_rubric_judge.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_sampling.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_shared_tool.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_single_turn.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_skills.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_stateful_tool.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_user_echo.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/test_user_sim.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/cli/test_replay.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/conftest.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/harnesses/test_core.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/harnesses/test_rlm.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/interception/test_tunnel.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/judges/conftest.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/judges/test_judge.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/judges/test_reference.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/judges/test_rubric.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/runtimes/test_e2b.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/serve/test_client.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/serve/test_delta.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/serve/test_pool.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/test_agent.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/test_dialects.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/test_graph.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/test_semantic.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/test_task.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/test_taskset.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/test_trace.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/utils/test_compile.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/utils/test_loaders.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/utils/test_platform.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/unit/utils/test_score.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/acp/runner.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/agent.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/eval/hint.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/resume.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/client.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/runtime.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/scoring.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/select.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/env.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/episode.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/errors.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/grading.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/graph.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/codex/gate.mjs +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/node.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/opencode/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/opencode/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/opencode/mcp-ready.js +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/pi/gate.mjs +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/utils/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/utils/compaction.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/utils/core.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/utils/install.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/utils/launch.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/utils/mcp.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/harnesses/utils/replay.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/judge.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/apptainer.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/compose.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/container.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/deployment.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/e2b.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/runtime.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/strategies.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/semantic.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/serve/delta.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/serve/encoding.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/session.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/state.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/task.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/trace.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/types.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/env.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/eval.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/loaders.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/paths.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/prime.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/scope.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/verifiers/v1/utils/trace_store.py +0 -0
- {verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/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.dev33
|
|
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
|
|
@@ -237,6 +237,7 @@ markers = [
|
|
|
237
237
|
"claude_code: integration cells on the claude-code harness",
|
|
238
238
|
"openclaw: integration cells on the OpenClaw harness",
|
|
239
239
|
"hermes_agent: integration cells on the hermes-agent harness",
|
|
240
|
+
"deepseek: integration cells on the DeepSeek minimal harness",
|
|
240
241
|
"rlm: integration cells on the rlm harness",
|
|
241
242
|
"kimi_code: integration cells on the kimi-code harness",
|
|
242
243
|
"pi: integration cells on the pi harness",
|
|
@@ -8,6 +8,7 @@ from verifiers.v1.harnesses.claude_code import (
|
|
|
8
8
|
ClaudeCodeHarnessConfig,
|
|
9
9
|
)
|
|
10
10
|
from verifiers.v1.harnesses.codex import CodexHarness, CodexHarnessConfig
|
|
11
|
+
from verifiers.v1.harnesses.deepseek import DeepSeekHarness, DeepSeekHarnessConfig
|
|
11
12
|
from verifiers.v1.harnesses.hermes_agent import (
|
|
12
13
|
HermesAgentHarness,
|
|
13
14
|
HermesAgentHarnessConfig,
|
|
@@ -37,6 +38,8 @@ __all__ = [
|
|
|
37
38
|
"ClaudeCodeHarnessConfig",
|
|
38
39
|
"CodexHarness",
|
|
39
40
|
"CodexHarnessConfig",
|
|
41
|
+
"DeepSeekHarness",
|
|
42
|
+
"DeepSeekHarnessConfig",
|
|
40
43
|
"HermesAgentHarness",
|
|
41
44
|
"HermesAgentHarnessConfig",
|
|
42
45
|
"KimiCodeHarness",
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Preserve native policy denials; route every otherwise allowed tool through ACP.
|
|
2
|
+
// The shared ACP runner resolves the call ID against the rollout's tool policy.
|
|
3
|
+
export const name = "vf-tool-gate";
|
|
4
|
+
export const inject = ["tools", "approval"];
|
|
5
|
+
|
|
6
|
+
export function apply(ctx) {
|
|
7
|
+
ctx.on("tools/pre-execute", async (_exec, next) => {
|
|
8
|
+
const decision = await next();
|
|
9
|
+
return decision.kind === "allow" ? { kind: "ask" } : decision;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"""DeepSeek's minimal coding agent, driven through its native ACP bridge."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
from verifiers.v1.acp import ACPConfig, ACPHarness
|
|
7
|
+
from verifiers.v1.clients import ModelContext
|
|
8
|
+
from verifiers.v1.configs.harness import HarnessConfig, PinnedVersion
|
|
9
|
+
from verifiers.v1.harnesses.node import NODE_BIN_DIR, ensure_node
|
|
10
|
+
from verifiers.v1.harnesses.utils.install import ensure_installed, remove_dir
|
|
11
|
+
from verifiers.v1.runtimes import Runtime
|
|
12
|
+
from verifiers.v1.task import TaskData
|
|
13
|
+
from verifiers.v1.trace import Trace
|
|
14
|
+
|
|
15
|
+
DEEPSEEK_DIR = "/var/tmp/vf-deepseek-{version}"
|
|
16
|
+
USAGE_COMPAT = (Path(__file__).parent / "usage.mjs").read_bytes()
|
|
17
|
+
GATE = (Path(__file__).parent / "gate.mjs").read_bytes()
|
|
18
|
+
INSTALL = r"""
|
|
19
|
+
set -e
|
|
20
|
+
export PATH="/var/tmp/vf-node/bin:$PATH"
|
|
21
|
+
npm install --prefix "$VF_DEEPSEEK_DIR" --no-audit --no-fund \
|
|
22
|
+
"@deepseek-ai/dsh@$VF_DEEPSEEK_VERSION" >/dev/null
|
|
23
|
+
touch "$VF_DEEPSEEK_DIR/.ready"
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class DeepSeekHarnessConfig(HarnessConfig):
|
|
28
|
+
version: PinnedVersion = "0.2.1-alpha.3"
|
|
29
|
+
"""DeepSeek CLI release, pinned to its shipped sdk-minimal composition."""
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class DeepSeekHarness(ACPHarness[DeepSeekHarnessConfig]):
|
|
33
|
+
APPENDS_SYSTEM_PROMPT = True
|
|
34
|
+
SUPPORTS_MCP = True
|
|
35
|
+
SUPPORTS_TOOL_INTERCEPTION = True
|
|
36
|
+
|
|
37
|
+
async def setup(self, runtime: Runtime) -> None:
|
|
38
|
+
await ensure_node(runtime)
|
|
39
|
+
directory = DEEPSEEK_DIR.format(version=self.config.version)
|
|
40
|
+
await ensure_installed(
|
|
41
|
+
runtime,
|
|
42
|
+
directory=directory,
|
|
43
|
+
ready=f"test -f {directory}/.ready",
|
|
44
|
+
install=INSTALL,
|
|
45
|
+
env={
|
|
46
|
+
"VF_DEEPSEEK_DIR": directory,
|
|
47
|
+
"VF_DEEPSEEK_VERSION": self.config.version,
|
|
48
|
+
},
|
|
49
|
+
label="DeepSeek Harness",
|
|
50
|
+
)
|
|
51
|
+
await super().setup(runtime)
|
|
52
|
+
|
|
53
|
+
async def prepare_acp(
|
|
54
|
+
self,
|
|
55
|
+
ctx: ModelContext,
|
|
56
|
+
trace: Trace,
|
|
57
|
+
runtime: Runtime,
|
|
58
|
+
endpoint: str,
|
|
59
|
+
secret: str,
|
|
60
|
+
mcp_urls: dict[str, str],
|
|
61
|
+
data: TaskData,
|
|
62
|
+
) -> ACPConfig:
|
|
63
|
+
if self.config.disabled_tools:
|
|
64
|
+
raise ValueError("DeepSeek minimal ACP does not support disabling tools")
|
|
65
|
+
|
|
66
|
+
home = f"/tmp/vf-deepseek/{trace.id}"
|
|
67
|
+
system_prompt, prompt = self.resolve_prompt(data)
|
|
68
|
+
# Keep the upstream minimal tree; replace only its SDK stdio front door.
|
|
69
|
+
# https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/bundle/sdk-minimal
|
|
70
|
+
patches = [
|
|
71
|
+
{"id": "sdk-app-startup", "disabled": True},
|
|
72
|
+
{"id": "sdk-jsonrpc-server", "disabled": True},
|
|
73
|
+
# Provider metadata is captured by verifiers, not uploaded by DSH.
|
|
74
|
+
{"id": "session-log-deepseek", "disabled": True},
|
|
75
|
+
{"id": "plugin-package-inventory-deepseek", "disabled": True},
|
|
76
|
+
{
|
|
77
|
+
"insert": [
|
|
78
|
+
{
|
|
79
|
+
"id": "acp-app-startup",
|
|
80
|
+
"name": "@deepseek-ai/dsh-acp-app",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "acp",
|
|
84
|
+
"name": "@deepseek-ai/dsh-acp",
|
|
85
|
+
"inject": ["acpAppStartup"],
|
|
86
|
+
"config": {"provider": "deepseek-official", "model": ctx.model},
|
|
87
|
+
},
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
]
|
|
91
|
+
if system_prompt:
|
|
92
|
+
patches.append(
|
|
93
|
+
{
|
|
94
|
+
"id": "system-prompt",
|
|
95
|
+
"config": {
|
|
96
|
+
"includeHarnessIdentity": False,
|
|
97
|
+
"includeRuntimeContext": False,
|
|
98
|
+
"personaPrefix": "You are a helpful software engineer assistant."
|
|
99
|
+
+ "\n\n"
|
|
100
|
+
+ system_prompt,
|
|
101
|
+
},
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
patch_path = f"{home}/acp.patch.json"
|
|
105
|
+
# JSON is valid YAML and preserves arbitrary task prompt text verbatim.
|
|
106
|
+
await runtime.write(patch_path, json.dumps(patches).encode())
|
|
107
|
+
usage_path = f"{home}/usage.mjs"
|
|
108
|
+
await runtime.write(usage_path, USAGE_COMPAT)
|
|
109
|
+
return ACPConfig(
|
|
110
|
+
command=[
|
|
111
|
+
f"{NODE_BIN_DIR}/node",
|
|
112
|
+
"--import",
|
|
113
|
+
usage_path,
|
|
114
|
+
f"{DEEPSEEK_DIR.format(version=self.config.version)}/node_modules/@deepseek-ai/dsh/lib/bin.js",
|
|
115
|
+
"--profile",
|
|
116
|
+
"sdk-minimal",
|
|
117
|
+
"--patch",
|
|
118
|
+
patch_path,
|
|
119
|
+
],
|
|
120
|
+
env={
|
|
121
|
+
**self.config.resolved_env,
|
|
122
|
+
"DSH_HOME": home,
|
|
123
|
+
"DEEPSEEK_BASE_URL": endpoint,
|
|
124
|
+
"DEEPSEEK_API_KEY": secret,
|
|
125
|
+
},
|
|
126
|
+
prompt=prompt,
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
async def gate_tools(
|
|
130
|
+
self, config: ACPConfig, runtime: Runtime, url: str, secret: str
|
|
131
|
+
) -> None:
|
|
132
|
+
home = config.env["DSH_HOME"]
|
|
133
|
+
gate_path = f"{home}/gate.mjs"
|
|
134
|
+
await runtime.write(gate_path, GATE)
|
|
135
|
+
patch_path = f"{home}/acp.patch.json"
|
|
136
|
+
patches = json.loads(await runtime.read(patch_path))
|
|
137
|
+
patches.append(
|
|
138
|
+
{
|
|
139
|
+
"insert": [
|
|
140
|
+
{"id": "vf-approval", "name": "@deepseek-ai/dsh-user-approval"},
|
|
141
|
+
{"id": "vf-tool-gate", "name": gate_path},
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
)
|
|
145
|
+
await runtime.write(patch_path, json.dumps(patches).encode())
|
|
146
|
+
|
|
147
|
+
async def cleanup(self, trace: Trace, runtime: Runtime) -> None:
|
|
148
|
+
await remove_dir(runtime, f"/tmp/vf-deepseek/{trace.id}", "DeepSeek state")
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// Some Messages-compatible gateways emit null for unknown cache counts. DSH's
|
|
2
|
+
// parser accepts omitted counts, but rejects null. Keep the last known counts.
|
|
3
|
+
const fetch = globalThis.fetch;
|
|
4
|
+
const base = new URL(process.env.DEEPSEEK_BASE_URL);
|
|
5
|
+
base.pathname = base.pathname.replace(/\/$/, "");
|
|
6
|
+
if (!base.pathname.endsWith("/v1")) base.pathname += "/v1";
|
|
7
|
+
base.pathname += "/messages";
|
|
8
|
+
|
|
9
|
+
function normalize(line) {
|
|
10
|
+
if (!line.startsWith("data:")) return line;
|
|
11
|
+
let data;
|
|
12
|
+
try {
|
|
13
|
+
data = JSON.parse(line.slice(5));
|
|
14
|
+
} catch {
|
|
15
|
+
// Preserve SSE sentinels and non-JSON data for the upstream parser.
|
|
16
|
+
return line;
|
|
17
|
+
}
|
|
18
|
+
let changed = false;
|
|
19
|
+
for (const usage of [data?.usage, data?.message?.usage]) {
|
|
20
|
+
if (!usage) continue;
|
|
21
|
+
for (const key of ["cache_read_input_tokens", "cache_creation_input_tokens"]) {
|
|
22
|
+
if (usage[key] === null) {
|
|
23
|
+
delete usage[key];
|
|
24
|
+
changed = true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return changed ? `data: ${JSON.stringify(data)}` : line;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
globalThis.fetch = async (input, init) => {
|
|
32
|
+
const url = new URL(input instanceof Request ? input.url : input);
|
|
33
|
+
if (url.href === base.href && typeof init?.body === "string") {
|
|
34
|
+
const body = JSON.parse(init.body);
|
|
35
|
+
// DSH enables thinking without a budget; Messages gateways require either
|
|
36
|
+
// a budget or adaptive thinking. Eval sampling overrides apply downstream.
|
|
37
|
+
if (body.thinking?.type === "enabled" && body.thinking.budget_tokens === undefined) {
|
|
38
|
+
body.thinking = {type: "adaptive"};
|
|
39
|
+
init = {...init, body: JSON.stringify(body)};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const response = await fetch(input, init);
|
|
43
|
+
if (url.href === base.href && !response.ok) {
|
|
44
|
+
const detail = (await response.clone().text()).slice(0, 1000);
|
|
45
|
+
console.error(`DeepSeek Messages HTTP ${response.status}: ${detail}`);
|
|
46
|
+
}
|
|
47
|
+
if (
|
|
48
|
+
url.href !== base.href ||
|
|
49
|
+
!response.body ||
|
|
50
|
+
!response.headers.get("content-type")?.includes("text/event-stream")
|
|
51
|
+
) return response;
|
|
52
|
+
|
|
53
|
+
let pending = "";
|
|
54
|
+
const body = response.body
|
|
55
|
+
.pipeThrough(new TextDecoderStream())
|
|
56
|
+
.pipeThrough(new TransformStream({
|
|
57
|
+
transform(chunk, controller) {
|
|
58
|
+
pending += chunk;
|
|
59
|
+
const lines = pending.split("\n");
|
|
60
|
+
pending = lines.pop();
|
|
61
|
+
for (const line of lines) controller.enqueue(`${normalize(line)}\n`);
|
|
62
|
+
},
|
|
63
|
+
flush(controller) {
|
|
64
|
+
if (pending) controller.enqueue(normalize(pending));
|
|
65
|
+
},
|
|
66
|
+
}))
|
|
67
|
+
.pipeThrough(new TextEncoderStream());
|
|
68
|
+
const headers = new Headers(response.headers);
|
|
69
|
+
headers.delete("content-length");
|
|
70
|
+
return new Response(body, {
|
|
71
|
+
status: response.status,
|
|
72
|
+
statusText: response.statusText,
|
|
73
|
+
headers,
|
|
74
|
+
});
|
|
75
|
+
};
|
|
@@ -21,7 +21,7 @@ from verifiers.v1.types import ID, Usage
|
|
|
21
21
|
|
|
22
22
|
class DecisionJudgeConfig(JudgeConfig):
|
|
23
23
|
id: ID = "decision"
|
|
24
|
-
model: str = "
|
|
24
|
+
model: str = "cloudflare/clef"
|
|
25
25
|
base_url: str = "https://api.pinference.ai/api/v1/evaluations"
|
|
26
26
|
"""Full URL to POST evaluation requests to."""
|
|
27
27
|
levels: list[str] = Field(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/agent_user_harness_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/counter_tool_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/echo_acp_resume_v1.py
RENAMED
|
File without changes
|
{verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/echo_agentic_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/echo_user_sim_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/network_policy_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/tests/integration/fixtures/skill_codeword_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev31 → verifiers-0.4.1.dev33}/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
|