diff --git a/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatForm.svelte b/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatForm.svelte index 44a37ced0e..c6f99fd427 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatForm.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatForm.svelte @@ -9,16 +9,9 @@ } from '$lib/components/app'; import { INPUT_CLASSES } from '$lib/constants/input-classes'; import { config } from '$lib/stores/settings.svelte'; - import { - modelOptions, - selectedModelId, - isRouterMode, - fetchModelProps, - getModelProps, - modelSupportsVision, - modelSupportsAudio - } from '$lib/stores/models.svelte'; - import { getConversationModel } from '$lib/stores/chat.svelte'; + import { modelsStore, modelOptions, selectedModelId } from '$lib/stores/models.svelte'; + import { isRouterMode } from '$lib/stores/server.svelte'; + import { chatStore } from '$lib/stores/chat.svelte'; import { activeMessages } from '$lib/stores/conversations.svelte'; import { FileTypeCategory, @@ -77,7 +70,9 @@ let textareaRef: ChatFormTextarea | undefined = $state(undefined); // Check if model is selected (in ROUTER mode) - let conversationModel = $derived(getConversationModel(activeMessages() as DatabaseMessage[])); + let conversationModel = $derived( + chatStore.getConversationModel(activeMessages() as DatabaseMessage[]) + ); let isRouter = $derived(isRouterMode()); let hasModelSelected = $derived(!isRouter || !!conversationModel || !!selectedModelId()); @@ -109,9 +104,9 @@ // Fetch model props when active model changes $effect(() => { if (isRouter && activeModelId) { - const cached = getModelProps(activeModelId); + const cached = modelsStore.getModelProps(activeModelId); if (!cached) { - fetchModelProps(activeModelId).then(() => { + modelsStore.fetchModelProps(activeModelId).then(() => { modelPropsVersion++; }); } @@ -122,7 +117,7 @@ let hasAudioModality = $derived.by(() => { if (activeModelId) { void modelPropsVersion; // Trigger reactivity on props fetch - return modelSupportsAudio(activeModelId); + return modelsStore.modelSupportsAudio(activeModelId); } return false; }); @@ -130,7 +125,7 @@ let hasVisionModality = $derived.by(() => { if (activeModelId) { void modelPropsVersion; // Trigger reactivity on props fetch - return modelSupportsVision(activeModelId); + return modelsStore.modelSupportsVision(activeModelId); } return false; }); diff --git a/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActions.svelte b/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActions.svelte index 4dae0166b5..679d1eef39 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActions.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActions.svelte @@ -10,17 +10,9 @@ import { FileTypeCategory } from '$lib/enums'; import { getFileTypeCategory } from '$lib/utils/file-type'; import { config } from '$lib/stores/settings.svelte'; - import { - modelOptions, - selectedModelId, - selectModelByName, - isRouterMode, - fetchModelProps, - getModelProps, - modelSupportsVision, - modelSupportsAudio - } from '$lib/stores/models.svelte'; - import { getConversationModel } from '$lib/stores/chat.svelte'; + import { modelsStore, modelOptions, selectedModelId } from '$lib/stores/models.svelte'; + import { isRouterMode } from '$lib/stores/server.svelte'; + import { chatStore } from '$lib/stores/chat.svelte'; import { activeMessages } from '$lib/stores/conversations.svelte'; import type { ChatUploadedFile } from '$lib/types/chat'; @@ -53,14 +45,16 @@ let currentConfig = $derived(config()); let isRouter = $derived(isRouterMode()); - let conversationModel = $derived(getConversationModel(activeMessages() as DatabaseMessage[])); + let conversationModel = $derived( + chatStore.getConversationModel(activeMessages() as DatabaseMessage[]) + ); let previousConversationModel: string | null = null; $effect(() => { if (conversationModel && conversationModel !== previousConversationModel) { previousConversationModel = conversationModel; - selectModelByName(conversationModel); + modelsStore.selectModelByName(conversationModel); } }); @@ -92,10 +86,10 @@ $effect(() => { if (isRouter && activeModelId) { // Check if we already have cached props - const cached = getModelProps(activeModelId); + const cached = modelsStore.getModelProps(activeModelId); if (!cached) { // Fetch props for this model - fetchModelProps(activeModelId).then(() => { + modelsStore.fetchModelProps(activeModelId).then(() => { // Trigger reactivity update modelPropsVersion++; }); @@ -107,7 +101,7 @@ let hasAudioModality = $derived.by(() => { if (activeModelId) { void modelPropsVersion; // Trigger reactivity on props fetch - return modelSupportsAudio(activeModelId); + return modelsStore.modelSupportsAudio(activeModelId); } return false; }); @@ -115,7 +109,7 @@ let hasVisionModality = $derived.by(() => { if (activeModelId) { void modelPropsVersion; // Trigger reactivity on props fetch - return modelSupportsVision(activeModelId); + return modelsStore.modelSupportsVision(activeModelId); } return false; }); diff --git a/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessage.svelte b/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessage.svelte index 5656e08334..8968174d0f 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessage.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessage.svelte @@ -1,5 +1,5 @@ @@ -82,7 +82,7 @@