verifiers 0.3.2.dev95__tar.gz → 0.3.2.dev96__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.dev95 → verifiers-0.3.2.dev96}/PKG-INFO +1 -1
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/test_e2e.py +74 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/utils/core.py +64 -3
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/.gitignore +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/LICENSE +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/README.md +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/pyproject.toml +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/conftest.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/fixtures/duet_v1.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/test_configs.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/test_envs.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/test_graph.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/test_judges.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/test_platform_run.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/tests/v1/test_trace.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/acp/runner.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/agent.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/resume.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/cli/init.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/client.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/runtime.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/env.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/episode.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/errors.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/graph.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/node.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/utils/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/utils/compaction.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/utils/install.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/utils/launch.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/utils/mcp.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/interception/tool.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/judge.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/semantic.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/serve/encoding.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/session.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/state.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/task.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/harbor/env.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/trace.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/types.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/loaders.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/paths.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/prime.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/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.dev96
|
|
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
|
|
@@ -18,6 +18,80 @@ def pair(a: str, b: str, id: str, *extra_marks):
|
|
|
18
18
|
return pytest.param(a, b, marks=[*marks, *extra_marks], id=id)
|
|
19
19
|
|
|
20
20
|
|
|
21
|
+
@pytest.mark.asyncio
|
|
22
|
+
async def test_chat_harness_preserves_streamed_reasoning():
|
|
23
|
+
import json
|
|
24
|
+
|
|
25
|
+
import httpx
|
|
26
|
+
from openai import AsyncOpenAI
|
|
27
|
+
|
|
28
|
+
from verifiers.v1.harnesses.utils.core import chat
|
|
29
|
+
|
|
30
|
+
def chunk(text: str, finish_reason: str | None = None) -> dict:
|
|
31
|
+
return {
|
|
32
|
+
"id": "chatcmpl-test",
|
|
33
|
+
"object": "chat.completion.chunk",
|
|
34
|
+
"created": 0,
|
|
35
|
+
"model": "test-model",
|
|
36
|
+
"choices": [
|
|
37
|
+
{
|
|
38
|
+
"index": 0,
|
|
39
|
+
"delta": {
|
|
40
|
+
"role": "assistant",
|
|
41
|
+
"reasoning": text,
|
|
42
|
+
"reasoning_content": text,
|
|
43
|
+
"reasoning_details": [
|
|
44
|
+
{
|
|
45
|
+
"type": "reasoning.text",
|
|
46
|
+
"index": 0,
|
|
47
|
+
"id": "r1",
|
|
48
|
+
"format": "unknown",
|
|
49
|
+
"signature": "sig",
|
|
50
|
+
"text": text,
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
"finish_reason": finish_reason,
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
events = [chunk("Plan: "), chunk("call ls", "stop")]
|
|
60
|
+
content = "".join(f"data: {json.dumps(event)}\n\n" for event in events)
|
|
61
|
+
content += "data: [DONE]\n\n"
|
|
62
|
+
|
|
63
|
+
async def respond(request: httpx.Request) -> httpx.Response:
|
|
64
|
+
return httpx.Response(
|
|
65
|
+
200,
|
|
66
|
+
content=content,
|
|
67
|
+
headers={"content-type": "text/event-stream"},
|
|
68
|
+
request=request,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
async with httpx.AsyncClient(transport=httpx.MockTransport(respond)) as http_client:
|
|
72
|
+
client = AsyncOpenAI(
|
|
73
|
+
api_key="test",
|
|
74
|
+
base_url="https://example.test/v1",
|
|
75
|
+
http_client=http_client,
|
|
76
|
+
)
|
|
77
|
+
completion = await chat(client, "test-model", [], [])
|
|
78
|
+
|
|
79
|
+
message = completion.choices[0].message.model_dump(exclude_none=True)
|
|
80
|
+
assert message["role"] == "assistant"
|
|
81
|
+
assert message["reasoning"] == "Plan: call ls"
|
|
82
|
+
assert message["reasoning_content"] == "Plan: call ls"
|
|
83
|
+
assert message["reasoning_details"] == [
|
|
84
|
+
{
|
|
85
|
+
"type": "reasoning.text",
|
|
86
|
+
"index": 0,
|
|
87
|
+
"id": "r1",
|
|
88
|
+
"format": "unknown",
|
|
89
|
+
"signature": "sig",
|
|
90
|
+
"text": "Plan: call ls",
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
|
|
94
|
+
|
|
21
95
|
# harness x harness runtime: every harness once, both local runtimes hit (subprocess
|
|
22
96
|
# only carries the in-house loops — the rest NEEDS_CONTAINER), one remote row per
|
|
23
97
|
# provider. codex/claude-code are excluded here (unreliable on a no-op echo chat
|
|
@@ -181,6 +181,57 @@ def run_edit(path: str, old_str: str, new_str: str) -> str:
|
|
|
181
181
|
return f"Edited {path}"
|
|
182
182
|
|
|
183
183
|
|
|
184
|
+
_STREAMED_MESSAGE_FIELDS = (
|
|
185
|
+
"role",
|
|
186
|
+
"reasoning",
|
|
187
|
+
"reasoning_content",
|
|
188
|
+
"reasoning_details",
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def _accumulate_streamed_message(accumulated: dict, delta: dict) -> None:
|
|
193
|
+
"""Accumulate message fields whose stream semantics differ from the SDK defaults."""
|
|
194
|
+
if role := delta.get("role"):
|
|
195
|
+
accumulated["role"] = role
|
|
196
|
+
|
|
197
|
+
for field_name in ("reasoning", "reasoning_content"):
|
|
198
|
+
if value := delta.get(field_name):
|
|
199
|
+
accumulated[field_name] = accumulated.get(field_name, "") + value
|
|
200
|
+
|
|
201
|
+
delta_details = delta.get("reasoning_details") or []
|
|
202
|
+
if not delta_details:
|
|
203
|
+
return
|
|
204
|
+
reasoning_details = accumulated.setdefault("reasoning_details", [])
|
|
205
|
+
for detail in delta_details:
|
|
206
|
+
previous = reasoning_details[-1] if reasoning_details else {}
|
|
207
|
+
detail_type = detail.get("type")
|
|
208
|
+
content_field = {
|
|
209
|
+
"reasoning.summary": "summary",
|
|
210
|
+
"reasoning.text": "text",
|
|
211
|
+
}.get(detail_type)
|
|
212
|
+
if (
|
|
213
|
+
content_field
|
|
214
|
+
and detail_type == previous.get("type")
|
|
215
|
+
and all(
|
|
216
|
+
previous.get(field_name) is None
|
|
217
|
+
or detail.get(field_name) is None
|
|
218
|
+
or previous[field_name] == detail[field_name]
|
|
219
|
+
for field_name in ("id", "index", "format")
|
|
220
|
+
)
|
|
221
|
+
):
|
|
222
|
+
previous[content_field] = (previous.get(content_field) or "") + (
|
|
223
|
+
detail.get(content_field) or ""
|
|
224
|
+
)
|
|
225
|
+
for field_name in ("id", "index", "signature", "format"):
|
|
226
|
+
if (
|
|
227
|
+
previous.get(field_name) is None
|
|
228
|
+
and detail.get(field_name) is not None
|
|
229
|
+
):
|
|
230
|
+
previous[field_name] = detail[field_name]
|
|
231
|
+
else:
|
|
232
|
+
reasoning_details.append(dict(detail))
|
|
233
|
+
|
|
234
|
+
|
|
184
235
|
async def chat(
|
|
185
236
|
client: AsyncOpenAI,
|
|
186
237
|
model: str,
|
|
@@ -201,9 +252,18 @@ async def chat(
|
|
|
201
252
|
raw_stream=raw_stream, response_format=omit, input_tools=[]
|
|
202
253
|
) as response:
|
|
203
254
|
completion = None
|
|
255
|
+
message_overrides: dict[int, dict] = {}
|
|
204
256
|
async for event in response:
|
|
205
257
|
if event.type == "chunk":
|
|
206
258
|
completion = event.snapshot
|
|
259
|
+
for choice in event.chunk.choices:
|
|
260
|
+
delta = choice.delta.model_dump(exclude_none=True)
|
|
261
|
+
if any(
|
|
262
|
+
delta.get(field_name) for field_name in _STREAMED_MESSAGE_FIELDS
|
|
263
|
+
):
|
|
264
|
+
_accumulate_streamed_message(
|
|
265
|
+
message_overrides.setdefault(choice.index, {}), delta
|
|
266
|
+
)
|
|
207
267
|
if (
|
|
208
268
|
completion is None
|
|
209
269
|
or not completion.choices
|
|
@@ -211,9 +271,10 @@ async def chat(
|
|
|
211
271
|
):
|
|
212
272
|
raise RuntimeError("model stream ended before a completion finished")
|
|
213
273
|
for choice in completion.choices:
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
274
|
+
overrides = message_overrides.setdefault(choice.index, {})
|
|
275
|
+
overrides.setdefault("role", "assistant")
|
|
276
|
+
for field_name, value in overrides.items():
|
|
277
|
+
setattr(choice.message, field_name, value)
|
|
217
278
|
return completion
|
|
218
279
|
|
|
219
280
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/isolated_verifier/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/envs/shared_agentic_judge/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/browser_use/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/browser_use/harness.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/browser_use/program.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/claude_code/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/claude_code/harness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/hermes_agent/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/hermes_agent/harness.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/hermes_agent/program.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/kimi_code/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/mini_swe_agent/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/mini_swe_agent/harness.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/mini_swe_agent/program.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
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/prime_agent/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/prime_agent/harness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/terminus_2/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/terminus_2/harness.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/harnesses/terminus_2/program.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
|
{verifiers-0.3.2.dev95 → verifiers-0.3.2.dev96}/verifiers/v1/interception/tunnel/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|