import React, { useState, useEffect } from 'react'; import { Feather } from 'lucide-react'; import { Skeleton } from '@librechat/client'; import type t from 'librechat-data-provider'; /** * Extracts the avatar URL from an agent's avatar property * Handles both string and object formats */ export const getAgentAvatarUrl = (agent: t.Agent | null | undefined): string | null => { if (!agent?.avatar) { return null; } if (typeof agent.avatar === 'string') { return agent.avatar; } if (agent.avatar && typeof agent.avatar === 'object' && 'filepath' in agent.avatar) { return agent.avatar.filepath; } return null; }; const LazyAgentAvatar = ({ url, alt, imgClass, }: { url: string; alt: string; imgClass: string; }) => { const [isLoaded, setIsLoaded] = useState(false); useEffect(() => { setIsLoaded(false); }, [url]); return ( <> {alt} setIsLoaded(true)} onError={() => setIsLoaded(false)} style={{ opacity: isLoaded ? 1 : 0, transition: 'opacity 0.2s ease-in-out', }} /> {!isLoaded &&