verifiers 0.3.2.dev167__tar.gz → 0.3.2.dev168__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.dev167 → verifiers-0.3.2.dev168}/PKG-INFO +3 -1
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/pyproject.toml +6 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/conftest.py +5 -4
- verifiers-0.3.2.dev168/tests/v1/test_configs.py +95 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/test_e2e.py +19 -3
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/runtimes/__init__.py +9 -2
- verifiers-0.3.2.dev168/verifiers/v1/runtimes/e2b.py +711 -0
- verifiers-0.3.2.dev167/tests/v1/test_configs.py +0 -20
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/.gitignore +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/LICENSE +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/README.md +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/fixtures/duet_v1.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/test_envs.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/test_graph.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/test_judges.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/test_platform_run.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/test_serve_delta.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/tests/v1/test_trace.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/acp/runner.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/agent.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/eval/hint.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/resume.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/cli/init.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/client.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/runtime.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/select.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/env.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/episode.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/errors.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/graph.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/codex/gate.mjs +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/node.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/pi/gate.mjs +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/utils/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/utils/compaction.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/utils/core.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/utils/install.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/utils/launch.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/harnesses/utils/mcp.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/judge.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/runtimes/apptainer.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/runtimes/container.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/semantic.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/serve/delta.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/serve/encoding.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/session.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/state.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/task.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/harbor/compose.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/harbor/env.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/trace.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/types.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/loaders.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/paths.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/prime.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/scope.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/verifiers/v1/utils/trace_store.py +0 -0
- {verifiers-0.3.2.dev167 → verifiers-0.3.2.dev168}/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.dev168
|
|
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
|
|
@@ -46,6 +46,8 @@ Requires-Dist: tenacity>=8.5.0
|
|
|
46
46
|
Requires-Dist: tomli-w>=1.0.0
|
|
47
47
|
Requires-Dist: typing-extensions>=4.12.2
|
|
48
48
|
Requires-Dist: uvicorn>=0.52.0
|
|
49
|
+
Provides-Extra: e2b
|
|
50
|
+
Requires-Dist: e2b<3,>=2.35.0; extra == 'e2b'
|
|
49
51
|
Provides-Extra: harbor
|
|
50
52
|
Requires-Dist: harbor==0.21.0; (python_full_version >= '3.12') and extra == 'harbor'
|
|
51
53
|
Provides-Extra: modal
|
|
@@ -100,6 +100,11 @@ harbor = [
|
|
|
100
100
|
modal = [
|
|
101
101
|
"modal>=1.5.4",
|
|
102
102
|
]
|
|
103
|
+
e2b = [
|
|
104
|
+
# <3: the runtime swaps the SDK command handle's private stream decoders for
|
|
105
|
+
# byte-accurate live output (see runtimes/e2b.py _byte_handle).
|
|
106
|
+
"e2b>=2.35.0,<3",
|
|
107
|
+
]
|
|
103
108
|
openenv = [
|
|
104
109
|
"openenv>=0.4.1",
|
|
105
110
|
]
|
|
@@ -228,6 +233,7 @@ markers = [
|
|
|
228
233
|
"apptainer: v1 e2e cases touching the apptainer runtime",
|
|
229
234
|
"prime: v1 e2e cases touching the prime runtime (real sandbox + tunnel; local-only, excluded in CI)",
|
|
230
235
|
"modal: v1 e2e cases touching the modal runtime (local-only setup; excluded in CI)",
|
|
236
|
+
"e2b: v1 e2e cases touching the e2b runtime (real sandbox; local-only, excluded in CI)",
|
|
231
237
|
"colocated: v1 e2e cases with a user/tool server colocated in the harness runtime",
|
|
232
238
|
"null: v1 e2e cases on the null harness",
|
|
233
239
|
"bash: v1 e2e cases on the bash harness",
|
|
@@ -16,20 +16,21 @@ one without `indirect=True` fails loudly.
|
|
|
16
16
|
|
|
17
17
|
Every combination carries its axes' pytest marks, so subsets select with `-m`:
|
|
18
18
|
|
|
19
|
-
uv run pytest tests/v1 -n auto # everything (needs
|
|
19
|
+
uv run pytest tests/v1 -n auto # everything (needs remote setup)
|
|
20
20
|
uv run pytest tests/v1 -n auto -m "not e2e" # deterministic CI matrix
|
|
21
|
-
uv run pytest tests/v1 -n auto -m "e2e and not prime and not modal" # live CI job
|
|
21
|
+
uv run pytest tests/v1 -n auto -m "e2e and not prime and not modal and not e2b" # live CI job
|
|
22
22
|
uv run pytest tests/v1 -n auto -m docker # any case touching the docker runtime
|
|
23
23
|
uv run pytest tests/v1 -n auto -m bash # only the bash harness
|
|
24
24
|
uv run pytest tests/v1 -n auto -m prime # only prime (real sandboxes; local)
|
|
25
25
|
uv run pytest tests/v1 -n auto -m modal # only modal (needs local setup)
|
|
26
|
+
uv run pytest tests/v1 -n auto -m e2b # only e2b (real sandboxes; local)
|
|
26
27
|
|
|
27
|
-
Marks: runtimes `subprocess` / `docker` / `podman` / `apptainer` / `prime` / `modal`, placement `colocated`,
|
|
28
|
+
Marks: runtimes `subprocess` / `docker` / `podman` / `apptainer` / `prime` / `modal` / `e2b`, placement `colocated`,
|
|
28
29
|
harnesses `null` / `bash` / `rlm` / `kimi_code` / `pi` / `openclaw` / `codex` /
|
|
29
30
|
`claude_code` / `hermes_agent`.
|
|
30
31
|
A mark is applied per axis, so it selects every case touching that value on ANY axis; for one exact
|
|
31
32
|
combination use `-k` on the test id (e.g. `-k "harness-in-docker-with-tool-in-subprocess"`).
|
|
32
|
-
prime/modal provision real remote sandboxes (slow, infra-flaky, need setup), so they're local-only.
|
|
33
|
+
prime/modal/e2b provision real remote sandboxes (slow, infra-flaky, need setup), so they're local-only.
|
|
33
34
|
CI runs deterministic tests across the Python matrix and the remaining live E2Es once.
|
|
34
35
|
"""
|
|
35
36
|
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"""Every checked-in v1 eval config parses.
|
|
2
|
+
|
|
3
|
+
Mirrors prime-rl's config test: glob the configs and assert each validates into its config
|
|
4
|
+
type. The root `configs/*.toml` are the `uv run vf-eval @ <file>` v1 configs (EvalConfig).
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import tomllib
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
import pytest
|
|
11
|
+
|
|
12
|
+
from verifiers.v1.configs.cli.eval import EvalConfig
|
|
13
|
+
from verifiers.v1.runtimes import E2BConfig
|
|
14
|
+
from verifiers.v1.runtimes.e2b import _egress_update
|
|
15
|
+
|
|
16
|
+
CONFIGS = sorted((Path(__file__).resolve().parents[2] / "configs").glob("*.toml"))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@pytest.mark.parametrize("path", CONFIGS, ids=lambda p: p.name)
|
|
20
|
+
def test_eval_config_parses(path: Path) -> None:
|
|
21
|
+
config = EvalConfig.model_validate(tomllib.load(path.open("rb")))
|
|
22
|
+
assert config.env.taskset.id
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@pytest.mark.parametrize(
|
|
26
|
+
"rule",
|
|
27
|
+
[
|
|
28
|
+
"",
|
|
29
|
+
"https://api.example.com",
|
|
30
|
+
"example.com:8443",
|
|
31
|
+
"example.com/path",
|
|
32
|
+
"user@example.com",
|
|
33
|
+
"10.0.0.0/99",
|
|
34
|
+
"example..com",
|
|
35
|
+
],
|
|
36
|
+
)
|
|
37
|
+
def test_e2b_config_rejects_unenforceable_egress_rules(rule: str) -> None:
|
|
38
|
+
with pytest.raises(ValueError, match="allow rules"):
|
|
39
|
+
E2BConfig(allow=[rule])
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@pytest.mark.parametrize("rule", ["api.example.com", "*.example.com"])
|
|
43
|
+
def test_e2b_config_rejects_hostname_block_rules(rule: str) -> None:
|
|
44
|
+
with pytest.raises(ValueError, match="block rules must be IP addresses or CIDR"):
|
|
45
|
+
E2BConfig(block=[rule])
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@pytest.mark.parametrize(
|
|
49
|
+
"rule",
|
|
50
|
+
[
|
|
51
|
+
"api.example.com",
|
|
52
|
+
"*.example.com",
|
|
53
|
+
"10.0.0.1",
|
|
54
|
+
"10.0.0.0/24",
|
|
55
|
+
"2001:db8::1",
|
|
56
|
+
"2001:db8::/32",
|
|
57
|
+
],
|
|
58
|
+
)
|
|
59
|
+
def test_e2b_config_accepts_supported_egress_rules(rule: str) -> None:
|
|
60
|
+
assert E2BConfig(allow=[rule]).allow == [rule]
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
@pytest.mark.parametrize(
|
|
64
|
+
"rule", ["10.0.0.1", "10.0.0.0/24", "2001:db8::1", "2001:db8::/32"]
|
|
65
|
+
)
|
|
66
|
+
def test_e2b_config_accepts_supported_block_rules(rule: str) -> None:
|
|
67
|
+
assert E2BConfig(block=[rule]).block == [rule]
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def test_e2b_egress_update_states_the_complete_policy() -> None:
|
|
71
|
+
# The security-critical policy table: whether a "restricted" sandbox actually
|
|
72
|
+
# gets a deny-everything floor, with framework routes kept reachable. No e2e
|
|
73
|
+
# placement runs network-restricted, so this table is pinned here.
|
|
74
|
+
routes = ["https://tunnel.example.com/intercept"]
|
|
75
|
+
|
|
76
|
+
unrestricted = _egress_update(E2BConfig(), None)
|
|
77
|
+
assert unrestricted == {"allow_internet_access": True}
|
|
78
|
+
|
|
79
|
+
blocklist = _egress_update(E2BConfig(block=["203.0.113.0/24"]), routes)
|
|
80
|
+
assert blocklist == {"deny_out": ["203.0.113.0/24"]}
|
|
81
|
+
|
|
82
|
+
allowlist = _egress_update(E2BConfig(allow=["api.example.com"]), routes)
|
|
83
|
+
assert allowlist == {
|
|
84
|
+
"allow_out": ["tunnel.example.com", "api.example.com"],
|
|
85
|
+
"deny_out": ["0.0.0.0/0"],
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
framework_only = _egress_update(E2BConfig(allow=[]), routes)
|
|
89
|
+
assert framework_only == {
|
|
90
|
+
"allow_out": ["tunnel.example.com"],
|
|
91
|
+
"deny_out": ["0.0.0.0/0"],
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
no_routes = _egress_update(E2BConfig(allow=[]), [])
|
|
95
|
+
assert no_routes == {"allow_internet_access": False}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Placement coverage is pairwise (see tests/v1/conftest.py): each list below names the
|
|
4
4
|
combinations a test runs — every axis value at least once plus the cross-boundary pairs
|
|
5
|
-
with distinct networking — instead of fanning the full cross product. prime/modal
|
|
6
|
-
are local-only (their marks are excluded in CI)."""
|
|
5
|
+
with distinct networking — instead of fanning the full cross product. prime/modal/e2b
|
|
6
|
+
rows are local-only (their marks are excluded in CI)."""
|
|
7
7
|
|
|
8
8
|
import shutil
|
|
9
9
|
import subprocess
|
|
@@ -142,6 +142,7 @@ CHAT_PLACEMENTS = [
|
|
|
142
142
|
),
|
|
143
143
|
pair("bash", "prime", "bash-harness-in-prime"),
|
|
144
144
|
pair("bash", "modal", "bash-harness-in-modal"),
|
|
145
|
+
pair("bash", "e2b", "bash-harness-in-e2b"),
|
|
145
146
|
]
|
|
146
147
|
|
|
147
148
|
# harness x harness runtime for the shell task: every coding agent once (null is a chat
|
|
@@ -176,6 +177,7 @@ AGENTIC_PLACEMENTS = [
|
|
|
176
177
|
marks=[mark.bash, mark.modal],
|
|
177
178
|
id="bash-harness-in-modal-framework-only",
|
|
178
179
|
),
|
|
180
|
+
pair("bash", "e2b", "bash-harness-in-e2b"),
|
|
179
181
|
]
|
|
180
182
|
|
|
181
183
|
# The scripted user runs in the eval process itself (no placement axis); the harness
|
|
@@ -185,6 +187,7 @@ USER_RUNTIMES = [
|
|
|
185
187
|
pytest.param("docker", marks=[mark.docker], id="harness-in-docker"),
|
|
186
188
|
pytest.param("prime", marks=[mark.prime], id="harness-in-prime"),
|
|
187
189
|
pytest.param("modal", marks=[mark.modal], id="harness-in-modal"),
|
|
190
|
+
pytest.param("e2b", marks=[mark.e2b], id="harness-in-e2b"),
|
|
188
191
|
]
|
|
189
192
|
|
|
190
193
|
# ACP-backed harnesses: each must preserve an exchange across interaction segments and
|
|
@@ -218,6 +221,13 @@ ACP_RESUME_PLACEMENTS = [
|
|
|
218
221
|
),
|
|
219
222
|
pair("openclaw", "docker", "openclaw-acp-in-docker"),
|
|
220
223
|
pair("rlm", "prime", "rlm-acp-in-prime-vm"),
|
|
224
|
+
# Give RLM 2 GB for ACP session startup.
|
|
225
|
+
pytest.param(
|
|
226
|
+
"rlm",
|
|
227
|
+
{"type": "e2b", "memory": 2.0},
|
|
228
|
+
marks=[mark.rlm, mark.e2b],
|
|
229
|
+
id="rlm-acp-in-e2b",
|
|
230
|
+
),
|
|
221
231
|
pytest.param(
|
|
222
232
|
"prime-agent",
|
|
223
233
|
"prime",
|
|
@@ -247,6 +257,8 @@ TOOL_PLACEMENTS = [
|
|
|
247
257
|
pair("prime", "colocated", "harness-in-prime-with-tool-colocated"),
|
|
248
258
|
pair("modal", "colocated", "harness-in-modal-with-tool-colocated"),
|
|
249
259
|
pair("subprocess", "modal", "harness-in-subprocess-with-tool-in-modal"),
|
|
260
|
+
pair("e2b", "colocated", "harness-in-e2b-with-tool-colocated"),
|
|
261
|
+
pair("subprocess", "e2b", "harness-in-subprocess-with-tool-in-e2b"),
|
|
250
262
|
]
|
|
251
263
|
|
|
252
264
|
# The state channel rides the same reachability as TOOL_PLACEMENTS; cover each axis
|
|
@@ -256,6 +268,7 @@ TOOL_STATE_PLACEMENTS = [
|
|
|
256
268
|
pair("docker", "subprocess", "harness-in-docker-with-tool-in-subprocess"),
|
|
257
269
|
pair("subprocess", "docker", "harness-in-subprocess-with-tool-in-docker"),
|
|
258
270
|
pair("modal", "colocated", "harness-in-modal-with-tool-colocated"),
|
|
271
|
+
pair("e2b", "colocated", "harness-in-e2b-with-tool-colocated"),
|
|
259
272
|
]
|
|
260
273
|
|
|
261
274
|
# Shared servers always run in their own runtime (colocation is per-rollout, shared is
|
|
@@ -265,6 +278,7 @@ SHARED_TOOL_PLACEMENTS = [
|
|
|
265
278
|
pair("docker", "docker", "harness-in-docker-with-tool-in-docker"),
|
|
266
279
|
pair("subprocess", "docker", "harness-in-subprocess-with-tool-in-docker"),
|
|
267
280
|
pair("modal", "modal", "harness-in-modal-with-tool-in-modal"),
|
|
281
|
+
pair("e2b", "e2b", "harness-in-e2b-with-tool-in-e2b"),
|
|
268
282
|
]
|
|
269
283
|
|
|
270
284
|
|
|
@@ -389,7 +403,9 @@ async def test_acp_resume_with_tool(run_v1, harness, harness_runtime, tmp_path):
|
|
|
389
403
|
(trace,) = await run_v1(
|
|
390
404
|
"echo-acp-resume-v1",
|
|
391
405
|
harness=harness,
|
|
392
|
-
runtime=
|
|
406
|
+
runtime=harness_runtime
|
|
407
|
+
if isinstance(harness_runtime, dict)
|
|
408
|
+
else {"type": harness_runtime},
|
|
393
409
|
output_dir=tmp_path,
|
|
394
410
|
max_turns=8,
|
|
395
411
|
max_tokens=8192,
|
|
@@ -25,6 +25,7 @@ from verifiers.v1.runtimes.docker import (
|
|
|
25
25
|
PodmanRuntime,
|
|
26
26
|
PodmanRuntimeInfo,
|
|
27
27
|
)
|
|
28
|
+
from verifiers.v1.runtimes.e2b import E2BConfig, E2BRuntime, E2BRuntimeInfo
|
|
28
29
|
from verifiers.v1.runtimes.modal import ModalConfig, ModalRuntime, ModalRuntimeInfo
|
|
29
30
|
from verifiers.v1.runtimes.prime import (
|
|
30
31
|
PrimeConfig,
|
|
@@ -44,7 +45,8 @@ RuntimeConfig = Annotated[
|
|
|
44
45
|
| PodmanConfig
|
|
45
46
|
| ApptainerConfig
|
|
46
47
|
| PrimeConfig
|
|
47
|
-
| ModalConfig
|
|
48
|
+
| ModalConfig
|
|
49
|
+
| E2BConfig,
|
|
48
50
|
Field(discriminator="type"),
|
|
49
51
|
]
|
|
50
52
|
|
|
@@ -54,7 +56,8 @@ RuntimeInfo = Annotated[
|
|
|
54
56
|
| PodmanRuntimeInfo
|
|
55
57
|
| ApptainerRuntimeInfo
|
|
56
58
|
| PrimeRuntimeInfo
|
|
57
|
-
| ModalRuntimeInfo
|
|
59
|
+
| ModalRuntimeInfo
|
|
60
|
+
| E2BRuntimeInfo,
|
|
58
61
|
Field(discriminator="type"),
|
|
59
62
|
]
|
|
60
63
|
|
|
@@ -67,6 +70,7 @@ def _runtime_cls(config: RuntimeConfig) -> type[Runtime]:
|
|
|
67
70
|
"apptainer": ApptainerRuntime,
|
|
68
71
|
"prime": PrimeRuntime,
|
|
69
72
|
"modal": ModalRuntime,
|
|
73
|
+
"e2b": E2BRuntime,
|
|
70
74
|
}[config.type]
|
|
71
75
|
|
|
72
76
|
|
|
@@ -109,6 +113,9 @@ __all__ = [
|
|
|
109
113
|
"DockerConfig",
|
|
110
114
|
"DockerRuntime",
|
|
111
115
|
"DockerRuntimeInfo",
|
|
116
|
+
"E2BConfig",
|
|
117
|
+
"E2BRuntime",
|
|
118
|
+
"E2BRuntimeInfo",
|
|
112
119
|
"ModalConfig",
|
|
113
120
|
"ModalRuntime",
|
|
114
121
|
"ModalRuntimeInfo",
|