From 087ffa972ebab4bded963ca866c3a6e7ee044cbc Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Fri, 12 Dec 2025 21:43:28 +0100 Subject: [PATCH] feat: Integrate agentsMap into EndpointIcon for agent avatar rendering --- client/src/components/Conversations/Convo.tsx | 3 +++ client/src/components/Endpoints/EndpointIcon.tsx | 11 +++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/client/src/components/Conversations/Convo.tsx b/client/src/components/Conversations/Convo.tsx index 382eace7a8..f4944ec7bb 100644 --- a/client/src/components/Conversations/Convo.tsx +++ b/client/src/components/Conversations/Convo.tsx @@ -7,6 +7,7 @@ import type { TConversation } from 'librechat-data-provider'; import { useUpdateConversationMutation } from '~/data-provider'; import EndpointIcon from '~/components/Endpoints/EndpointIcon'; import { useNavigateToConvo, useLocalize, useShiftKey } from '~/hooks'; +import { useAgentsMapContext } from '~/Providers/AgentsMapContext'; import { useGetEndpointsQuery } from '~/data-provider'; import { NotificationSeverity } from '~/common'; import { ConvoOptions } from './ConvoOptions'; @@ -25,6 +26,7 @@ export default function Conversation({ conversation, retainView, toggleNav }: Co const params = useParams(); const localize = useLocalize(); const { showToast } = useToastContext(); + const agentsMap = useAgentsMapContext(); const { navigateToConvo } = useNavigateToConvo(); const { data: endpointsConfig } = useGetEndpointsQuery(); const currentConvoId = useMemo(() => params.conversationId, [params.conversationId]); @@ -183,6 +185,7 @@ export default function Conversation({ conversation, retainView, toggleNav }: Co diff --git a/client/src/components/Endpoints/EndpointIcon.tsx b/client/src/components/Endpoints/EndpointIcon.tsx index c32ea12369..1320f1cc4e 100644 --- a/client/src/components/Endpoints/EndpointIcon.tsx +++ b/client/src/components/Endpoints/EndpointIcon.tsx @@ -1,6 +1,7 @@ -import { getEndpointField, isAssistantsEndpoint } from 'librechat-data-provider'; +import { getEndpointField, isAssistantsEndpoint, EModelEndpoint } from 'librechat-data-provider'; import type { TPreset, + TAgentsMap, TConversation, TAssistantsMap, TEndpointsConfig, @@ -14,6 +15,7 @@ export default function EndpointIcon({ endpointsConfig, className = 'mr-0', assistantMap, + agentsMap, context, }: { conversation: TConversation | TPreset | null; @@ -21,6 +23,7 @@ export default function EndpointIcon({ containerClassName?: string; context?: 'message' | 'nav' | 'landing' | 'menu-item'; assistantMap?: TAssistantsMap; + agentsMap?: TAgentsMap; className?: string; size?: number; }) { @@ -37,7 +40,11 @@ export default function EndpointIcon({ const assistantAvatar = (assistant && (assistant.metadata?.avatar as string)) || ''; const assistantName = assistant && (assistant.name ?? ''); - const iconURL = assistantAvatar || convoIconURL; + const agent = + endpoint === EModelEndpoint.agents ? agentsMap?.[conversation?.agent_id ?? ''] : null; + const agentAvatar = agent?.avatar?.filepath ?? ''; + + const iconURL = assistantAvatar || agentAvatar || convoIconURL; if (iconURL && (iconURL.includes('http') || iconURL.startsWith('/images/'))) { return (