| | import { z } from 'zod'; |
| | import type { TPreset } from './schemas'; |
| | import { |
| | EModelEndpoint, |
| | tPresetSchema, |
| | eModelEndpointSchema, |
| | AuthType, |
| | authTypeSchema, |
| | } from './schemas'; |
| |
|
| | export type TModelSpec = { |
| | name: string; |
| | label: string; |
| | preset: TPreset; |
| | order?: number; |
| | default?: boolean; |
| | description?: string; |
| | |
| | |
| | |
| | |
| | |
| | |
| | group?: string; |
| | showIconInMenu?: boolean; |
| | showIconInHeader?: boolean; |
| | iconURL?: string | EModelEndpoint; |
| | authType?: AuthType; |
| | webSearch?: boolean; |
| | fileSearch?: boolean; |
| | executeCode?: boolean; |
| | mcpServers?: string[]; |
| | }; |
| |
|
| | export const tModelSpecSchema = z.object({ |
| | name: z.string(), |
| | label: z.string(), |
| | preset: tPresetSchema, |
| | order: z.number().optional(), |
| | default: z.boolean().optional(), |
| | description: z.string().optional(), |
| | group: z.string().optional(), |
| | showIconInMenu: z.boolean().optional(), |
| | showIconInHeader: z.boolean().optional(), |
| | iconURL: z.union([z.string(), eModelEndpointSchema]).optional(), |
| | authType: authTypeSchema.optional(), |
| | webSearch: z.boolean().optional(), |
| | fileSearch: z.boolean().optional(), |
| | executeCode: z.boolean().optional(), |
| | mcpServers: z.array(z.string()).optional(), |
| | }); |
| |
|
| | export const specsConfigSchema = z.object({ |
| | enforce: z.boolean().default(false), |
| | prioritize: z.boolean().default(true), |
| | list: z.array(tModelSpecSchema).min(1), |
| | addedEndpoints: z.array(z.union([z.string(), eModelEndpointSchema])).optional(), |
| | }); |
| |
|
| | export type TSpecsConfig = z.infer<typeof specsConfigSchema>; |
| |
|