2 import { ChatMessageStatistics } from '$lib/components/app';
3 import { ChatMessageStatisticsMode } from '$lib/enums';
4 import type { UseProcessingStateReturn } from '$lib/hooks/use-processing-state.svelte';
7 message: DatabaseMessage;
9 processingState: UseProcessingStateReturn;
10 showMessageStats: boolean;
13 let { message, isLoading, processingState, showMessageStats }: Props = $props();
16 {#if showMessageStats && message.timings && message.timings.predicted_n && message.timings.predicted_ms}
17 {@const agentic = message.timings.agentic}
18 <ChatMessageStatistics
19 mode={ChatMessageStatisticsMode.GENERATION}
20 promptTokens={agentic ? agentic.llm.prompt_n : message.timings.prompt_n}
21 promptMs={agentic ? agentic.llm.prompt_ms : message.timings.prompt_ms}
22 predictedTokens={agentic ? agentic.llm.predicted_n : message.timings.predicted_n}
23 predictedMs={agentic ? agentic.llm.predicted_ms : message.timings.predicted_ms}
24 agenticTimings={agentic}
26 {:else if isLoading && showMessageStats}
27 {@const liveStats = processingState.getLiveProcessingStats()}
28 {@const genStats = processingState.getLiveGenerationStats()}
31 <ChatMessageStatistics
32 mode={ChatMessageStatisticsMode.GENERATION}
34 promptTokens={liveStats?.tokensProcessed}
35 promptMs={liveStats?.timeMs}
36 predictedTokens={genStats.tokensGenerated}
37 predictedMs={genStats.timeMs}