| 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>; |
|
|