From b9e58758e0917f75c2b9c3f42e6004f66de4c277 Mon Sep 17 00:00:00 2001 From: yucheng-berriai Date: Fri, 26 Jun 2026 17:39:10 -0700 Subject: [PATCH] refactor(types): host ObjectPermissionDict in litellm/types/ for SDK reuse Defines the TypedDict mirror of LiteLLM_ObjectPermissionBase under litellm/types/object_permission.py so SDK-side modules can adopt the type without violating the SDK-must-not-import-from-proxy layering rule. litellm/proxy/_types.py re-exports it for existing callers. Supports the validator-surface retypes in the preceding proxy refactor commit. --- litellm/proxy/_types.py | 20 +++----------------- litellm/types/object_permission.py | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 17 deletions(-) create mode 100644 litellm/types/object_permission.py diff --git a/litellm/proxy/_types.py b/litellm/proxy/_types.py index 7d470fba08b..5fe17d79ab5 100644 --- a/litellm/proxy/_types.py +++ b/litellm/proxy/_types.py @@ -1005,23 +1005,9 @@ class LiteLLM_ObjectPermissionBase(LiteLLMPydanticObjectBase): search_tools: Optional[List[str]] = None -class ObjectPermissionDict(TypedDict, total=False): - """Plain-dict mirror of LiteLLM_ObjectPermissionBase used by validators - that need to mutate the payload before persistence (e.g. MCP server - identifier normalization in object_permission_utils).""" - - mcp_servers: Optional[list[str]] - mcp_access_groups: Optional[list[str]] - mcp_tool_permissions: Optional[dict[str, list[str]]] - mcp_toolsets: Optional[list[str]] - blocked_tools: Optional[list[str]] - vector_stores: Optional[list[str]] - agents: Optional[list[str]] - agent_access_groups: Optional[list[str]] - models: Optional[list[str]] - search_tools: Optional[list[str]] - - +from litellm.types.object_permission import ( # noqa: E402 + ObjectPermissionDict as ObjectPermissionDict, +) from litellm.models.team import BudgetLimitEntry as BudgetLimitEntry # noqa: E402 diff --git a/litellm/types/object_permission.py b/litellm/types/object_permission.py new file mode 100644 index 00000000000..ff932dccd5d --- /dev/null +++ b/litellm/types/object_permission.py @@ -0,0 +1,26 @@ +""" +TypedDict mirror of ``LiteLLM_ObjectPermissionBase`` for in-memory dict +payloads passed through validators that mutate before persistence (e.g. +MCP server identifier normalization in object_permission_utils). + +Lives in ``litellm/types/`` so SDK-side modules (``litellm.types.agents``) +can adopt the type without violating the SDK-must-not-import-from-proxy +layering rule. +""" + +from typing import Optional + +from typing_extensions import TypedDict + + +class ObjectPermissionDict(TypedDict, total=False): + mcp_servers: Optional[list[str]] + mcp_access_groups: Optional[list[str]] + mcp_tool_permissions: Optional[dict[str, list[str]]] + mcp_toolsets: Optional[list[str]] + blocked_tools: Optional[list[str]] + vector_stores: Optional[list[str]] + agents: Optional[list[str]] + agent_access_groups: Optional[list[str]] + models: Optional[list[str]] + search_tools: Optional[list[str]]