Coverage for .venv/lib/python3.13/site-packages/litellm/proxy/management_helpers/resource_display_names.py: 100%
32 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 12:01 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 12:01 +0000
1"""Display names for ids stored on management objects. DB rows win; config-declared servers and agents fill the gaps."""
3from collections.abc import Mapping, Sequence
4from types import MappingProxyType
5from typing import Final
7from litellm.proxy.agent_endpoints.agent_registry import AgentRegistry
8from litellm.proxy.utils import PrismaClient
9from litellm.repositories.table_repositories import AgentsRepository, MCPServerRepository
10from litellm.repositories.verification_token_repository import VerificationTokenRepository
11from litellm.types.mcp_server.mcp_server_manager import MCPServer
14async def mcp_server_display_names(
15 prisma_client: PrismaClient,
16 server_ids: Sequence[str],
17 config_servers: Mapping[str, MCPServer],
18) -> Mapping[str, str]:
19 """server_id -> alias, falling back to server_name; config-only servers also fall back to their registry name."""
20 if not server_ids:
21 return MappingProxyType({})
22 wanted: Final = frozenset(server_ids)
23 where: Final = {"server_id": {"in": tuple(wanted)}} # mutable-ok: prisma where is a dict
24 rows: Final = await MCPServerRepository(prisma_client).table.find_many(where=where)
25 from_config: Final = {
26 server_id: server.alias or server.server_name or server.name
27 for server_id, server in config_servers.items()
28 if server_id in wanted
29 }
30 from_db: Final = {row.server_id: name for row in rows if (name := row.alias or row.server_name)}
31 return MappingProxyType({**from_config, **from_db})
34async def agent_display_names(
35 prisma_client: PrismaClient,
36 agent_ids: Sequence[str],
37 registry: AgentRegistry,
38) -> Mapping[str, str]:
39 """agent_id -> agent_name. The registry covers config-declared agents and their legacy ids."""
40 if not agent_ids:
41 return MappingProxyType({})
42 wanted: Final = frozenset(agent_ids)
43 where: Final = {"agent_id": {"in": tuple(wanted)}} # mutable-ok: prisma where is a dict
44 rows: Final = await AgentsRepository(prisma_client).table.find_many(where=where)
45 from_registry: Final = {
46 alias_id: agent.agent_name
47 for agent in registry.get_agent_list()
48 for alias_id in registry.ids_for_agent(agent.agent_id)
49 if alias_id in wanted
50 }
51 from_db: Final = {row.agent_id: row.agent_name for row in rows}
52 return MappingProxyType({**from_registry, **from_db})
55async def key_display_names(prisma_client: PrismaClient, tokens: Sequence[str]) -> Mapping[str, str]:
56 """token hash -> key_alias for the keys that have one."""
57 if not tokens:
58 return MappingProxyType({})
59 where: Final = {"token": {"in": tuple(frozenset(tokens))}} # mutable-ok: prisma where is a dict
60 rows: Final = await VerificationTokenRepository(prisma_client).table.find_many(where=where)
61 return MappingProxyType({row.token: row.key_alias for row in rows if row.key_alias})