diff --git a/client/src/components/Chat/Menus/Models/ModelSpec.tsx b/client/src/components/Chat/Menus/Models/ModelSpec.tsx index 44cf51a976..32415bc557 100644 --- a/client/src/components/Chat/Menus/Models/ModelSpec.tsx +++ b/client/src/components/Chat/Menus/Models/ModelSpec.tsx @@ -76,6 +76,19 @@ const MenuItem: FC = ({
{title}
{description}
+ {spec.badges && spec.badges.length > 0 && ( +
+ {spec.badges.map((badge, index) => ( + + {badge.text} + + ))} +
+ )}
diff --git a/packages/data-provider/src/models.ts b/packages/data-provider/src/models.ts index eed58396e5..b72a06e3e0 100644 --- a/packages/data-provider/src/models.ts +++ b/packages/data-provider/src/models.ts @@ -8,6 +8,11 @@ import { authTypeSchema, } from './schemas'; +export type TBadge = { + text: string; + color: string; +}; + export type TModelSpec = { name: string; label: string; @@ -19,11 +24,15 @@ export type TModelSpec = { showIconInHeader?: boolean; iconURL?: string | EModelEndpoint; // Allow using project-included icons authType?: AuthType; - groups?: Array; // List of group ObjectIds allowed to access this model - // badgeIcon?: string; // URL to badge icon for visual categorization - // badgeTooltip?: string; // Tooltip text for the badge + groups?: string[]; + badges?: TBadge[]; }; +export const tBadgeSchema = z.object({ + text: z.string(), + color: z.string(), +}); + export const tModelSpecSchema = z.object({ name: z.string(), label: z.string(), @@ -36,8 +45,7 @@ export const tModelSpecSchema = z.object({ iconURL: z.union([z.string(), eModelEndpointSchema]).optional(), authType: authTypeSchema.optional(), groups: z.array(z.string()).optional(), - // badgeIcon: z.string().url('Must be a valid URL').optional(), - // badgeTooltip: z.string().optional(), + badges: z.array(tBadgeSchema).optional(), }); export const specsConfigSchema = z.object({