verifiers 0.3.2.dev149__tar.gz → 0.3.2.dev150__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.3.2.dev149 → verifiers-0.3.2.dev150}/PKG-INFO +1 -1
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/test_graph.py +86 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/clients/train.py +35 -21
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/graph.py +198 -160
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/trace.py +4 -23
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/types.py +9 -4
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/.gitignore +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/LICENSE +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/README.md +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/pyproject.toml +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/conftest.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/fixtures/duet_v1.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/test_configs.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/test_e2e.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/test_envs.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/test_judges.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/test_platform_run.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/test_serve_delta.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/tests/v1/test_trace.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/acp/runner.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/agent.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/eval/hint.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/resume.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/cli/init.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/client.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/runtime.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/env.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/episode.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/errors.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/codex/gate.mjs +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/node.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/pi/gate.mjs +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/utils/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/utils/compaction.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/utils/core.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/utils/install.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/utils/launch.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/harnesses/utils/mcp.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/judge.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/runtimes/apptainer.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/runtimes/container.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/semantic.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/serve/delta.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/serve/encoding.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/session.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/state.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/task.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/harbor/compose.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/harbor/env.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/loaders.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/paths.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/prime.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/scope.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/trace_store.py +0 -0
- {verifiers-0.3.2.dev149 → verifiers-0.3.2.dev150}/verifiers/v1/utils/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.3.2.
|
|
3
|
+
Version: 0.3.2.dev150
|
|
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
|
|
@@ -539,6 +539,92 @@ def test_renderer_level_break_forks_by_token_id():
|
|
|
539
539
|
]
|
|
540
540
|
|
|
541
541
|
|
|
542
|
+
def test_expanded_prompt_is_attributed_while_bridge_uses_logical_tokens():
|
|
543
|
+
trace = vf.Trace(
|
|
544
|
+
agent=vf.AgentInfo(config=vf.AgentConfig()),
|
|
545
|
+
task=vf.TraceTask(type="Task", data=vf.TaskData(idx=0, prompt="x")),
|
|
546
|
+
)
|
|
547
|
+
user = vf.UserMessage(content="image")
|
|
548
|
+
assistant = vf.AssistantMessage(content="looked")
|
|
549
|
+
assert graph.MessageNode(message=user, token_ids=[9]).logical_ids == [9]
|
|
550
|
+
assert (
|
|
551
|
+
graph.MessageNode(
|
|
552
|
+
message=user, token_ids=[9], renderer_token_ids=[]
|
|
553
|
+
).logical_ids
|
|
554
|
+
== []
|
|
555
|
+
)
|
|
556
|
+
graph.prepare_turn(trace, [user]).commit(
|
|
557
|
+
vf.Response(
|
|
558
|
+
id="a",
|
|
559
|
+
created=0,
|
|
560
|
+
model="t",
|
|
561
|
+
message=assistant,
|
|
562
|
+
finish_reason="stop",
|
|
563
|
+
tokens=TurnTokens(
|
|
564
|
+
prompt_ids=[1, 9, 9, 3],
|
|
565
|
+
renderer_prompt_ids=[1, 9, 3],
|
|
566
|
+
completion_ids=[4],
|
|
567
|
+
message_spans=[(0, 2)],
|
|
568
|
+
is_content=[False, True, False],
|
|
569
|
+
mm_placeholders=[(1, 2)],
|
|
570
|
+
mm_token_type_id_map={9: 1},
|
|
571
|
+
),
|
|
572
|
+
)
|
|
573
|
+
)
|
|
574
|
+
|
|
575
|
+
assert trace.branches[0].token_ids == [1, 9, 9, 3, 4]
|
|
576
|
+
assert trace.branches[0].mm_token_type_ids == [0, 1, 1, 0, 0]
|
|
577
|
+
assert trace.nodes[0].token_ids == [1, 9, 9]
|
|
578
|
+
assert trace.nodes[0].is_content == [False, True, True]
|
|
579
|
+
turn = graph.prepare_turn(trace, [user, assistant, vf.UserMessage(content="next")])
|
|
580
|
+
assert turn.previous_renderer_token_ids() == ([1, 9, 3], [4])
|
|
581
|
+
|
|
582
|
+
with pytest.raises(ValueError, match="exactly extend"):
|
|
583
|
+
turn.commit(
|
|
584
|
+
vf.Response(
|
|
585
|
+
id="b",
|
|
586
|
+
created=0,
|
|
587
|
+
model="t",
|
|
588
|
+
message=vf.AssistantMessage(content="bad"),
|
|
589
|
+
finish_reason="stop",
|
|
590
|
+
tokens=TurnTokens(
|
|
591
|
+
prompt_ids=[1, 9, 8, 3, 4, 5],
|
|
592
|
+
renderer_prompt_ids=[1, 9, 3, 4, 5],
|
|
593
|
+
bridged=True,
|
|
594
|
+
completion_ids=[6],
|
|
595
|
+
message_spans=[None, None, (4, 5)],
|
|
596
|
+
),
|
|
597
|
+
)
|
|
598
|
+
)
|
|
599
|
+
|
|
600
|
+
tool = vf.ToolMessage(content="result", tool_call_id="call_0")
|
|
601
|
+
graph.prepare_turn(trace, [user, assistant, tool]).commit(
|
|
602
|
+
vf.Response(
|
|
603
|
+
id="b",
|
|
604
|
+
created=0,
|
|
605
|
+
model="t",
|
|
606
|
+
message=vf.AssistantMessage(content="done"),
|
|
607
|
+
finish_reason="stop",
|
|
608
|
+
tokens=TurnTokens(
|
|
609
|
+
prompt_ids=[1, 9, 9, 3, 4, 5, 6, 7],
|
|
610
|
+
renderer_prompt_ids=[1, 9, 3, 4, 5, 6, 7],
|
|
611
|
+
bridged=True,
|
|
612
|
+
completion_ids=[8],
|
|
613
|
+
message_spans=[None, None, (4, 6)],
|
|
614
|
+
is_content=[False, True, False, True, False, True, False],
|
|
615
|
+
mm_placeholders=[(1, 2)],
|
|
616
|
+
mm_token_type_id_map={9: 1},
|
|
617
|
+
),
|
|
618
|
+
)
|
|
619
|
+
)
|
|
620
|
+
|
|
621
|
+
tool_node = trace.nodes[-2]
|
|
622
|
+
assert tool_node.message == tool
|
|
623
|
+
assert tool_node.token_ids == [5, 6]
|
|
624
|
+
assert tool_node.renderer_token_ids == [5, 6]
|
|
625
|
+
assert tool_node.is_content == [False, True]
|
|
626
|
+
|
|
627
|
+
|
|
542
628
|
def test_prompt_supplied_assistant_messages_are_not_sampled_turns():
|
|
543
629
|
task = vf.TaskData(idx=0, prompt="few-shot")
|
|
544
630
|
trace = vf.Trace(
|
|
@@ -140,6 +140,16 @@ def response_from_generate(
|
|
|
140
140
|
message_spans = bridged_turn.prompt_message_spans(attribution)
|
|
141
141
|
else:
|
|
142
142
|
message_spans = attribution.message_token_spans()
|
|
143
|
+
raw_mm_placeholders = result.get("mm_placeholders")
|
|
144
|
+
mm_placeholders = (
|
|
145
|
+
sorted(
|
|
146
|
+
(placeholder["offset"], placeholder["length"])
|
|
147
|
+
for ranges in raw_mm_placeholders.values()
|
|
148
|
+
for placeholder in ranges
|
|
149
|
+
)
|
|
150
|
+
if raw_mm_placeholders is not None
|
|
151
|
+
else None
|
|
152
|
+
)
|
|
143
153
|
return Response(
|
|
144
154
|
id=result.get("request_id", ""),
|
|
145
155
|
created=0,
|
|
@@ -159,11 +169,13 @@ def response_from_generate(
|
|
|
159
169
|
# million-token contexts synchronously on the event loop.
|
|
160
170
|
tokens=TurnTokens.model_construct(
|
|
161
171
|
prompt_ids=prompt_ids,
|
|
172
|
+
renderer_prompt_ids=result.get("renderer_prompt_ids"),
|
|
173
|
+
bridged=bridged_turn is not None,
|
|
162
174
|
completion_ids=completion_ids,
|
|
163
175
|
completion_logprobs=result.get("completion_logprobs") or [],
|
|
164
176
|
message_spans=message_spans,
|
|
165
177
|
is_content=attribution.is_content if attribution is not None else None,
|
|
166
|
-
|
|
178
|
+
mm_placeholders=mm_placeholders,
|
|
167
179
|
mm_token_type_id_map=mm_token_type_id_map,
|
|
168
180
|
routed_experts=result.get("routed_experts"),
|
|
169
181
|
sampling_mask=SamplingMask.from_sampling_mask(mask)
|
|
@@ -358,11 +370,9 @@ class TrainClient(Client):
|
|
|
358
370
|
from renderers.client import generate
|
|
359
371
|
|
|
360
372
|
wire_tools = [tool_to_wire(t) for t in tools] if tools else None
|
|
361
|
-
wire_messages = (
|
|
362
|
-
|
|
363
|
-
)
|
|
373
|
+
wire_messages = [message_to_wire(m) for m in prompt]
|
|
374
|
+
wire_tail = [message_to_wire(m) for m in turn.tail] if turn is not None else []
|
|
364
375
|
prompt_ids: list[int] | None = None
|
|
365
|
-
multi_modal_data = None
|
|
366
376
|
prompt_attribution: RenderedTokens | None = None
|
|
367
377
|
model = body["model"]
|
|
368
378
|
sampling_params = sampling.wire_args()
|
|
@@ -381,14 +391,18 @@ class TrainClient(Client):
|
|
|
381
391
|
mm_token_type_id_map = (
|
|
382
392
|
renderer.mm_token_type_id_map if is_multimodal(renderer) else None
|
|
383
393
|
)
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
394
|
+
has_images = _has_multimodal_content(prompt)
|
|
395
|
+
process_multimodal = not has_images
|
|
396
|
+
if has_images and not getattr(
|
|
397
|
+
renderer, "supports_process_multimodal", False
|
|
398
|
+
):
|
|
399
|
+
raise NotImplementedError(
|
|
400
|
+
f"{type(renderer).__name__} does not support process_multimodal=False"
|
|
401
|
+
)
|
|
402
|
+
render_kwargs = {} if process_multimodal else {"process_multimodal": False}
|
|
403
|
+
# Only build the O(context) previous token stream for a bridgeable tail.
|
|
404
|
+
can_bridge = turn is not None and _is_valid_incremental_tail(wire_tail)
|
|
405
|
+
previous_ids = turn.previous_renderer_token_ids() if can_bridge else None
|
|
392
406
|
if previous_ids is not None:
|
|
393
407
|
previous_prompt_ids, previous_completion_ids = previous_ids
|
|
394
408
|
|
|
@@ -396,33 +410,33 @@ class TrainClient(Client):
|
|
|
396
410
|
return renderer.bridge_to_next_turn(
|
|
397
411
|
previous_prompt_ids,
|
|
398
412
|
previous_completion_ids,
|
|
399
|
-
|
|
413
|
+
wire_tail,
|
|
400
414
|
tools=wire_tools,
|
|
415
|
+
**render_kwargs,
|
|
401
416
|
)
|
|
402
417
|
|
|
403
418
|
bridged = await slot.run(bridge)
|
|
404
419
|
if bridged is not None:
|
|
405
420
|
prompt_ids = bridged.token_ids
|
|
406
|
-
multi_modal_data = bridged.multi_modal_data
|
|
407
421
|
prompt_attribution = bridged
|
|
408
422
|
bridged_turn = turn
|
|
409
423
|
sampling_params["routed_experts_prompt_start"] = max(
|
|
410
|
-
|
|
411
|
-
0,
|
|
424
|
+
turn.path_len - 1, 0
|
|
412
425
|
)
|
|
413
426
|
|
|
414
427
|
# Render here (encode-side, so through the slot) rather than inside `generate`:
|
|
415
428
|
# handed prebuilt prompt_ids, generate's own renderer touches are decode-side
|
|
416
429
|
# and stop-id reads, safe on a bare renderer without lock or thread hop.
|
|
417
430
|
if prompt_ids is None:
|
|
418
|
-
wire_messages = [message_to_wire(m) for m in prompt]
|
|
419
431
|
rendered = await slot.run(
|
|
420
432
|
lambda: renderer.render(
|
|
421
|
-
wire_messages,
|
|
433
|
+
wire_messages,
|
|
434
|
+
tools=wire_tools,
|
|
435
|
+
add_generation_prompt=True,
|
|
436
|
+
**render_kwargs,
|
|
422
437
|
)
|
|
423
438
|
)
|
|
424
439
|
prompt_ids = rendered.token_ids
|
|
425
|
-
multi_modal_data = rendered.multi_modal_data
|
|
426
440
|
prompt_attribution = rendered
|
|
427
441
|
|
|
428
442
|
try:
|
|
@@ -432,10 +446,10 @@ class TrainClient(Client):
|
|
|
432
446
|
messages=wire_messages,
|
|
433
447
|
model=model,
|
|
434
448
|
prompt_ids=prompt_ids,
|
|
435
|
-
multi_modal_data=multi_modal_data,
|
|
436
449
|
prompt_attribution=prompt_attribution,
|
|
437
450
|
tools=wire_tools,
|
|
438
451
|
sampling_params=sampling_params,
|
|
452
|
+
process_multimodal=process_multimodal,
|
|
439
453
|
cache_salt=cache_salt,
|
|
440
454
|
extra_headers={SESSION_ID_HEADER: session_id}
|
|
441
455
|
if session_id
|