From d17a704ca92308c67b22a7a4b31f6ad26b2e8935 Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Thu, 7 May 2026 10:06:55 -0700 Subject: [PATCH] feat(v2 managed agents): add adapter registry (sandbox_type -> adapter) --- litellm/managed_agents/adapters/registry.py | 25 +++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 litellm/managed_agents/adapters/registry.py diff --git a/litellm/managed_agents/adapters/registry.py b/litellm/managed_agents/adapters/registry.py new file mode 100644 index 00000000000..00de988f937 --- /dev/null +++ b/litellm/managed_agents/adapters/registry.py @@ -0,0 +1,25 @@ +"""Adapter registry — selects the right adapter for a sandbox type. + +Today ships only `"opencode"`. Adding a new sandbox provider means adding +a new module under `litellm/managed_agents/adapters/` and registering it +here — no other code change is required (the public API stays the same; +the `sandbox.type` field selects the adapter). +""" + +from litellm.managed_agents.adapters.base import SandboxAdapter +from litellm.managed_agents.adapters.opencode import OpencodeAdapter + +# Single shared instance — adapters are stateless, so this is safe and +# avoids per-request allocation. +_OPENCODE = OpencodeAdapter() + + +def get_adapter(sandbox_type: str) -> SandboxAdapter: + """Return the adapter for a given `sandbox.type`. + + Raises `ValueError` for unknown sandbox types so the endpoint handler + can translate to a 422 response. + """ + if sandbox_type == "opencode": + return _OPENCODE + raise ValueError(f"Unknown sandbox type: {sandbox_type!r}")