import { memo } from 'react' import { useAppState } from '@/hooks/useAppState' import { toNumber } from '@/utils/number' import { Gauge } from 'lucide-react' interface TokenSpeedIndicatorProps { metadata?: Record streaming?: boolean } export const TokenSpeedIndicator = memo(({ metadata, streaming, }: TokenSpeedIndicatorProps) => { // Only re-render when the rounded token speed changes to prevent constant updates const roundedTokenSpeed = useAppState((state) => state.tokenSpeed ? Math.round(state.tokenSpeed.tokenSpeed) : 0 ) const persistedTokenSpeed = (metadata?.tokenSpeed as { tokenSpeed: number })?.tokenSpeed || 0 const nonStreamingAssistantParam = typeof metadata?.assistant === 'object' && metadata?.assistant !== null && 'parameters' in metadata.assistant ? (metadata.assistant as { parameters?: { stream?: boolean } }).parameters ?.stream === false : undefined if (nonStreamingAssistantParam) return return (
{streaming ? roundedTokenSpeed : Math.round(toNumber(persistedTokenSpeed))}  tokens/sec
) }) export default memo(TokenSpeedIndicator)