|
4 | 4 | import { formatTokenCount } from '$lib/utils/tokenCount'; |
5 | 5 | import { formatResponseTime } from '$lib/utils/timeFormat'; |
6 | 6 | import hljs from 'highlight.js/lib/core'; |
| 7 | + import { ProgressBar } from '@skeletonlabs/skeleton'; |
| 8 | + import { modelLoadingProgress, modelLoadingStatus, currentModel, isModelLoaded } from '$lib/stores/models'; |
7 | 9 |
|
8 | 10 | // Import common languages |
9 | 11 | import javascript from 'highlight.js/lib/languages/javascript'; |
|
50 | 52 | export let onClose: ((messageId: string) => void) | undefined = undefined; |
51 | 53 | |
52 | 54 | let isCollapsed = false; |
| 55 | + |
| 56 | + // Check if this is a model loading message |
| 57 | + $: isModelLoadingMessage = message.id.startsWith('loading-model-') && |
| 58 | + (message.content.includes('🔄 Switching to') || |
| 59 | + message.content.includes('🤖') || |
| 60 | + message.content.includes('Loading model')); |
| 61 | + |
| 62 | + // Extract model name from loading message |
| 63 | + $: loadingModelName = isModelLoadingMessage && message.content.includes('Switching to') |
| 64 | + ? message.content.match(/Switching to (.+?)\.\.\./)?.[ 1] || $currentModel |
| 65 | + : $currentModel; |
53 | 66 |
|
54 | 67 | // For code blocks, we'll estimate token count (rough approximation) |
55 | 68 | function estimateTokens(text: string): number { |
|
458 | 471 | <div class="prose prose-sm max-w-none text-surface-700-200-token"> |
459 | 472 | {@html formatContent(message.content)} |
460 | 473 | </div> |
| 474 | + |
| 475 | + <!-- Show loading progress bar for model loading messages --> |
| 476 | + {#if isModelLoadingMessage && !$isModelLoaded && $modelLoadingProgress < 100} |
| 477 | + <div class="mt-4 p-3 bg-surface-200-700-token rounded-lg"> |
| 478 | + <div class="flex items-center justify-between mb-2"> |
| 479 | + <span class="text-sm font-medium text-surface-700-200-token"> |
| 480 | + Loading Model: {loadingModelName} |
| 481 | + </span> |
| 482 | + <span class="text-sm text-surface-700-200-token opacity-70"> |
| 483 | + {$modelLoadingProgress}% |
| 484 | + </span> |
| 485 | + </div> |
| 486 | + <ProgressBar value={$modelLoadingProgress} max={100} class="mb-2" /> |
| 487 | + <p class="text-xs text-surface-700-200-token opacity-70">{$modelLoadingStatus}</p> |
| 488 | + </div> |
| 489 | + {/if} |
461 | 490 | {/if} |
462 | 491 | {/if} |
463 | 492 |
|
|
0 commit comments