@@ -244,6 +245,7 @@ const PersistentFooterActions: React.FC = () => {
onAgree={handleAgreeDisclaimer}
/>
+ >
);
};
diff --git a/src/web-ui/src/infrastructure/config/components/AIModelConfig.scss b/src/web-ui/src/infrastructure/config/components/AIModelConfig.scss
index 4dc97656..e64023c9 100644
--- a/src/web-ui/src/infrastructure/config/components/AIModelConfig.scss
+++ b/src/web-ui/src/infrastructure/config/components/AIModelConfig.scss
@@ -629,16 +629,6 @@
color: var(--color-accent-400);
}
- &--image_understanding {
- background: rgba(168, 85, 247, 0.12);
- color: rgba(192, 132, 252, 1);
- }
-
- &--image_generation {
- background: rgba(236, 72, 153, 0.12);
- color: rgba(244, 114, 182, 1);
- }
-
&--embedding {
background: rgba(34, 197, 94, 0.12);
color: var(--color-success);
@@ -659,11 +649,6 @@
color: rgba(129, 140, 248, 1);
}
- &--speech_recognition {
- background: rgba(168, 85, 247, 0.12);
- color: rgba(192, 132, 252, 0.8);
- }
-
&--more {
background: var(--element-bg-subtle);
color: var(--color-text-muted);
diff --git a/src/web-ui/src/infrastructure/config/components/AIModelConfig.tsx b/src/web-ui/src/infrastructure/config/components/AIModelConfig.tsx
index 8d41878d..d69ff438 100644
--- a/src/web-ui/src/infrastructure/config/components/AIModelConfig.tsx
+++ b/src/web-ui/src/infrastructure/config/components/AIModelConfig.tsx
@@ -70,15 +70,8 @@ function uniqModelNames(modelNames: string[]): string[] {
function getCapabilitiesByCategory(category: ModelCategory): ModelCapability[] {
switch (category) {
case 'general_chat':
- return ['text_chat', 'function_calling'];
- case 'multimodal':
- return ['text_chat', 'image_understanding', 'function_calling'];
- case 'image_generation':
- return ['image_generation'];
- case 'speech_recognition':
- return ['speech_recognition'];
default:
- return ['text_chat'];
+ return ['text_chat', 'function_calling'];
}
}
@@ -200,9 +193,6 @@ const AIModelConfig: React.FC = () => {
const categoryOptions = useMemo
(
() => [
{ label: t('category.general_chat'), value: 'general_chat' },
- { label: t('category.multimodal'), value: 'multimodal' },
- { label: t('category.image_generation'), value: 'image_generation' },
- { label: t('category.speech_recognition'), value: 'speech_recognition' },
],
[t]
);
@@ -210,9 +200,6 @@ const AIModelConfig: React.FC = () => {
const categoryCompactLabels = useMemo>(
() => ({
general_chat: t('categoryIcons.general_chat'),
- multimodal: t('categoryIcons.multimodal'),
- image_generation: t('categoryIcons.image_generation'),
- speech_recognition: t('categoryIcons.speech_recognition'),
}),
[t]
);
@@ -622,11 +609,6 @@ const AIModelConfig: React.FC = () => {
setIsEditing(true);
};
- const handleAddModelToExistingProvider = (config: AIModelConfigType) => {
- handleEditProvider(config);
- };
-
-
const handleEdit = (config: AIModelConfigType) => {
resetRemoteModelDiscovery();
setManualModelInput('');
@@ -1391,7 +1373,7 @@ const AIModelConfig: React.FC = () => {
{!isFromTemplate && (
<>
-
+
diff --git a/src/web-ui/src/infrastructure/config/components/DefaultModelConfig.tsx b/src/web-ui/src/infrastructure/config/components/DefaultModelConfig.tsx
index a02e38e0..e9c3028a 100644
--- a/src/web-ui/src/infrastructure/config/components/DefaultModelConfig.tsx
+++ b/src/web-ui/src/infrastructure/config/components/DefaultModelConfig.tsx
@@ -13,8 +13,6 @@ import { getProviderDisplayName } from '../services/modelConfigs';
import type {
AIModelConfig,
DefaultModels,
- OptionalCapabilityModels,
- OptionalCapabilityType,
} from '../types';
import { ConfigPageRow } from './common';
import { createLogger } from '@/shared/utils/logger';
@@ -22,13 +20,6 @@ import './DefaultModelConfig.scss';
const log = createLogger('DefaultModelConfig');
-
-const OPTIONAL_CAPABILITY_TYPES: OptionalCapabilityType[] = [
- 'image_understanding',
- 'image_generation',
- 'speech_recognition'
-];
-
const normalizeSelectValue = (value: string | number | (string | number)[]): string | number =>
Array.isArray(value) ? (value[0] ?? '') : value;
@@ -50,7 +41,6 @@ export const DefaultModelConfig: React.FC = () => {
const [loading, setLoading] = useState(true);
const [models, setModels] = useState
([]);
const [defaultModels, setDefaultModels] = useState({ primary: null, fast: null });
- const [optionalCapabilities, setOptionalCapabilities] = useState({});
const loadData = useCallback(async () => {
try {
@@ -67,12 +57,6 @@ export const DefaultModelConfig: React.FC = () => {
primary: defaultModelsConfig?.primary || null,
fast: defaultModelsConfig?.fast || null,
});
-
- setOptionalCapabilities({
- image_understanding: defaultModelsConfig?.image_understanding,
- image_generation: defaultModelsConfig?.image_generation,
- speech_recognition: defaultModelsConfig?.speech_recognition,
- });
} catch (error) {
log.error('Failed to load data', error);
notificationService.error(t('messages.loadFailed'));
@@ -203,47 +187,7 @@ export const DefaultModelConfig: React.FC = () => {
};
- const handleCapabilityChange = async (capability: OptionalCapabilityType, modelId: string | number) => {
- const modelIdStr = modelId ? String(modelId) : null;
- try {
- const currentConfig = await configManager.getConfig('ai.default_models') || {};
-
-
- await configManager.setConfig('ai.default_models', {
- ...currentConfig,
- [capability]: modelIdStr || undefined,
- });
-
- setOptionalCapabilities(prev => ({
- ...prev,
- [capability]: modelIdStr || undefined,
- }));
-
- notificationService.success(t('messages.capabilityUpdated'), { duration: 2000 });
- } catch (error) {
- log.error('Failed to update capability model', { capability, modelId: modelIdStr, error });
- notificationService.error(t('messages.updateFailed'));
- }
- };
-
-
const enabledModels = models.filter(m => m.enabled);
-
-
- const getModelsForCapability = (capability: OptionalCapabilityType): AIModelConfig[] => {
- return enabledModels.filter(m => {
- switch (capability) {
- case 'image_understanding':
- return m.capabilities?.includes('image_understanding');
- case 'image_generation':
- return m.capabilities?.includes('image_generation');
- case 'speech_recognition':
- return m.capabilities?.includes('speech_recognition');
- default:
- return true;
- }
- });
- };
if (loading) {
return (
@@ -302,36 +246,6 @@ export const DefaultModelConfig: React.FC = () => {
size="small"
/>
-
- {OPTIONAL_CAPABILITY_TYPES.map(capability => {
- const availableModels = getModelsForCapability(capability);
- const configuredModelId = optionalCapabilities[capability];
-
- return (
-
-
- );
- })}
);
};
diff --git a/src/web-ui/src/infrastructure/config/types/index.ts b/src/web-ui/src/infrastructure/config/types/index.ts
index 658688e7..9eaa67d8 100644
--- a/src/web-ui/src/infrastructure/config/types/index.ts
+++ b/src/web-ui/src/infrastructure/config/types/index.ts
@@ -68,16 +68,10 @@ export interface AIExperienceConfig {
export type ModelCapability =
| 'text_chat'
- | 'image_understanding'
- | 'image_generation'
- | 'function_calling'
- | 'speech_recognition';
+ | 'function_calling';
export type ModelCategory =
- | 'general_chat'
- | 'multimodal'
- | 'image_generation'
- | 'speech_recognition';
+ | 'general_chat';
export interface ModelMetadata {
category: ModelCategory;
@@ -87,28 +81,13 @@ export interface ModelMetadata {
}
-export const CAPABILITY_LABELS: Record = {
- text_chat: t('settings/ai-model:capabilities.text_chat'),
- image_understanding: t('settings/ai-model:capabilities.image_understanding'),
- image_generation: t('settings/ai-model:capabilities.image_generation'),
- function_calling: t('settings/ai-model:capabilities.function_calling'),
- speech_recognition: t('settings/ai-model:capabilities.speech_recognition')
-};
-
-
export const CATEGORY_LABELS: Record = {
- general_chat: t('settings/ai-model:category.general_chat'),
- multimodal: t('settings/ai-model:category.multimodal'),
- image_generation: t('settings/ai-model:category.image_generation'),
- speech_recognition: t('settings/ai-model:category.speech_recognition')
+ general_chat: t('settings/ai-model:category.general_chat')
};
export const CATEGORY_ICONS: Record = {
- general_chat: t('settings/ai-model:categoryIcons.general_chat'),
- multimodal: t('settings/ai-model:categoryIcons.multimodal'),
- image_generation: t('settings/ai-model:categoryIcons.image_generation'),
- speech_recognition: t('settings/ai-model:categoryIcons.speech_recognition')
+ general_chat: t('settings/ai-model:categoryIcons.general_chat')
};
@@ -168,10 +147,6 @@ export interface DefaultModelsConfig {
primary?: string | null;
fast?: string | null;
-
- image_understanding?: string | null;
-
- speech_recognition?: string | null;
}
export interface AIConfig {
@@ -582,16 +557,4 @@ export interface DefaultModels {
export interface OptionalCapabilityModels {
-
- image_understanding?: string;
-
- image_generation?: string;
-
- speech_recognition?: string;
}
-
-
-export type OptionalCapabilityType =
- | 'image_understanding'
- | 'image_generation'
- | 'speech_recognition';