From 30e99fb44b00a5255d344227da0919fba19bfa49 Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Wed, 26 Aug 2026 17:27:28 +0200 Subject: [PATCH] ui: add ModelCapability enum and shared modality/capability icon constants Assisted by: pi:GLM-5.3-Flash --- tools/ui/src/lib/constants/icons.constants.ts | 28 ++++++++++++++++++- tools/ui/src/lib/enums/index.ts | 2 +- tools/ui/src/lib/enums/model.enums.ts | 4 +++ tools/ui/src/lib/types/index.ts | 1 + tools/ui/src/lib/types/models.d.ts | 4 +++ 5 files changed, 37 insertions(+), 2 deletions(-) diff --git a/tools/ui/src/lib/constants/icons.constants.ts b/tools/ui/src/lib/constants/icons.constants.ts index 5563740509..a0ce22f95e 100644 --- a/tools/ui/src/lib/constants/icons.constants.ts +++ b/tools/ui/src/lib/constants/icons.constants.ts @@ -8,10 +8,13 @@ import { File as FileIcon, FileText as FileTextIcon, Image as ImageIcon, + Lightbulb as ReasoningIcon, Mic as AudioIcon, Video as VideoIcon } from '@lucide/svelte'; -import { FileTypeCategory, ModelModality } from '$lib/enums'; +import { FileTypeCategory, ModelCapability, ModelModality } from '$lib/enums'; +import type { ModelCapabilities, ModelModalities } from '$lib/types/models'; +import type { Component } from 'svelte'; export const FILE_TYPE_ICONS = { [FileTypeCategory.AUDIO]: AudioIcon, @@ -35,6 +38,29 @@ export const MODALITY_LABELS = { [ModelModality.VISION]: 'Vision' } as const; +/** Maps an input ModelModality to the boolean flag it drives on the ModelModalities type */ +export const MODALITY_FLAG_KEYS: Record< + Exclude, + keyof ModelModalities +> = { + [ModelModality.AUDIO]: 'audio', + [ModelModality.VIDEO]: 'video', + [ModelModality.VISION]: 'vision' +}; + +export const CAPABILITY_ICONS: Record = { + [ModelCapability.REASONING]: ReasoningIcon +} as const; + +export const CAPABILITY_LABELS: Record = { + [ModelCapability.REASONING]: 'Reasoning' +} as const; + +/** Maps a ModelCapability to the boolean flag it drives on the ModelCapabilities type */ +export const CAPABILITY_FLAG_KEYS: Record = { + [ModelCapability.REASONING]: 'reasoning' +}; + // Shared SVG icon strings for copy and preview buttons export const COPY_ICON_SVG = ``; diff --git a/tools/ui/src/lib/enums/index.ts b/tools/ui/src/lib/enums/index.ts index efe5789e20..e0b15bc729 100644 --- a/tools/ui/src/lib/enums/index.ts +++ b/tools/ui/src/lib/enums/index.ts @@ -67,7 +67,7 @@ export { JsonSchemaType } from './mcp.enums'; -export { ModelModality } from './model.enums'; +export { ModelCapability, ModelModality } from './model.enums'; export { ServerRole, ServerModelStatus, ServerModelsSseEventType } from './server.enums'; diff --git a/tools/ui/src/lib/enums/model.enums.ts b/tools/ui/src/lib/enums/model.enums.ts index df85c9d896..db085a27a7 100644 --- a/tools/ui/src/lib/enums/model.enums.ts +++ b/tools/ui/src/lib/enums/model.enums.ts @@ -4,3 +4,7 @@ export enum ModelModality { VIDEO = 'VIDEO', VISION = 'VISION' } + +export enum ModelCapability { + REASONING = 'REASONING' +} diff --git a/tools/ui/src/lib/types/index.ts b/tools/ui/src/lib/types/index.ts index 62947cd493..d91c2811a4 100644 --- a/tools/ui/src/lib/types/index.ts +++ b/tools/ui/src/lib/types/index.ts @@ -89,6 +89,7 @@ export type { // Model types export type { + ModelCapabilities, ModelModalities, ModelOption, ModelLoadProgress, diff --git a/tools/ui/src/lib/types/models.d.ts b/tools/ui/src/lib/types/models.d.ts index b32c16f6f2..0b7523113d 100644 --- a/tools/ui/src/lib/types/models.d.ts +++ b/tools/ui/src/lib/types/models.d.ts @@ -6,6 +6,10 @@ export interface ModelModalities { video: boolean; } +export interface ModelCapabilities { + reasoning: boolean; +} + export interface ModelOption { id: string; name: string;