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 2dcea21652..d3011912ab 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 @@ -15,8 +15,7 @@ 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, usedModalities } from '$lib/stores/conversations.svelte'; - import { useModelChangeValidation } from '$lib/hooks/use-model-change-validation.svelte'; + import { activeMessages } from '$lib/stores/conversations.svelte'; interface Props { canSend?: boolean; @@ -157,15 +156,6 @@ selectorModelRef?.open(); } - const { handleModelChange } = useModelChangeValidation({ - getRequiredModalities: () => usedModalities(), - onValidationFailure: async (previousModelId) => { - if (previousModelId) { - await modelsStore.selectModelById(previousModelId); - } - } - }); - let showMcpDialog = $state(false); @@ -189,7 +179,6 @@ currentModel={conversationModel} forceForegroundText={true} useGlobalSelection={true} - onModelChange={handleModelChange} /> diff --git a/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageAssistant.svelte b/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageAssistant.svelte index 6695b99333..79c43e5cbc 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageAssistant.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageAssistant.svelte @@ -8,7 +8,6 @@ ModelsSelector } from '$lib/components/app'; import { useProcessingState } from '$lib/hooks/use-processing-state.svelte'; - import { useModelChangeValidation } from '$lib/hooks/use-model-change-validation.svelte'; import { isLoading, isChatStreaming } from '$lib/stores/chat.svelte'; import { agenticStreamingToolCall } from '$lib/stores/agentic.svelte'; import { autoResizeTextarea, copyToClipboard } from '$lib/utils'; @@ -20,7 +19,6 @@ import { MessageRole } from '$lib/enums'; import Label from '$lib/components/ui/label/label.svelte'; import { config } from '$lib/stores/settings.svelte'; - import { conversationsStore } from '$lib/stores/conversations.svelte'; import { isRouterMode } from '$lib/stores/server.svelte'; import { AGENTIC_TAGS, REASONING_TAGS } from '$lib/constants/agentic'; @@ -97,11 +95,6 @@ let displayedModel = $derived(message.model ?? null); - const { handleModelChange } = useModelChangeValidation({ - getRequiredModalities: () => conversationsStore.getModalitiesUpToMessage(message.id), - onSuccess: (modelName) => onRegenerate(modelName) - }); - function handleCopyModel() { void copyToClipboard(displayedModel ?? ''); } @@ -190,12 +183,7 @@ {#if displayedModel}
{#if isRouter} - + {:else} {/if} diff --git a/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageEditForm.svelte b/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageEditForm.svelte index 9ab81307e1..4c228058db 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageEditForm.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatMessages/ChatMessageEditForm.svelte @@ -5,22 +5,13 @@ import { ChatAttachmentsList, DialogConfirmation, ModelsSelector } from '$lib/components/app'; import { INPUT_CLASSES } from '$lib/constants/css-classes'; import { SETTING_CONFIG_DEFAULT } from '$lib/constants/settings-config'; - import { AttachmentType, FileTypeCategory, MimeTypeText } from '$lib/enums'; + import { MimeTypeText } from '$lib/enums'; import { config } from '$lib/stores/settings.svelte'; - import { useModelChangeValidation } from '$lib/hooks/use-model-change-validation.svelte'; import { chatStore } from '$lib/stores/chat.svelte'; - import { conversationsStore } from '$lib/stores/conversations.svelte'; - import { modelsStore } from '$lib/stores/models.svelte'; import { isRouterMode } from '$lib/stores/server.svelte'; - import { - autoResizeTextarea, - getFileTypeCategory, - getFileTypeCategoryByExtension, - parseClipboardContent - } from '$lib/utils'; + import { autoResizeTextarea, parseClipboardContent } from '$lib/utils'; interface Props { - messageId: string; editedContent: string; editedExtras?: DatabaseMessageExtra[]; editedUploadedFiles?: ChatUploadedFile[]; @@ -38,7 +29,6 @@ } let { - messageId, editedContent, editedExtras = [], editedUploadedFiles = [], @@ -87,59 +77,6 @@ let canSubmit = $derived(editedContent.trim().length > 0 || hasAttachments); - function getEditedAttachmentsModalities(): ModelModalities { - const modalities: ModelModalities = { vision: false, audio: false }; - - for (const extra of editedExtras) { - if (extra.type === AttachmentType.IMAGE) { - modalities.vision = true; - } - - if ( - extra.type === AttachmentType.PDF && - 'processedAsImages' in extra && - extra.processedAsImages - ) { - modalities.vision = true; - } - - if (extra.type === AttachmentType.AUDIO) { - modalities.audio = true; - } - } - - for (const file of editedUploadedFiles) { - const category = getFileTypeCategory(file.type) || getFileTypeCategoryByExtension(file.name); - if (category === FileTypeCategory.IMAGE) { - modalities.vision = true; - } - if (category === FileTypeCategory.AUDIO) { - modalities.audio = true; - } - } - - return modalities; - } - - function getRequiredModalities(): ModelModalities { - const beforeModalities = conversationsStore.getModalitiesUpToMessage(messageId); - const editedModalities = getEditedAttachmentsModalities(); - - return { - vision: beforeModalities.vision || editedModalities.vision, - audio: beforeModalities.audio || editedModalities.audio - }; - } - - const { handleModelChange } = useModelChangeValidation({ - getRequiredModalities, - onValidationFailure: async (previousModelId) => { - if (previousModelId) { - await modelsStore.selectModelById(previousModelId); - } - } - }); - function handleFileInputChange(event: Event) { const input = event.target as HTMLInputElement; if (!input.files || input.files.length === 0) return; @@ -336,11 +273,7 @@
{#if isRouter} - + {/if}