import { z } from 'zod'; export enum EModelEndpoint { azureOpenAI = 'azureOpenAI', openAI = 'openAI', bingAI = 'bingAI', chatGPT = 'chatGPT', chatGPTBrowser = 'chatGPTBrowser', google = 'google', gptPlugins = 'gptPlugins', anthropic = 'anthropic', } export const eModelEndpointSchema = z.nativeEnum(EModelEndpoint); export const tMessageSchema = z.object({ messageId: z.string(), conversationId: z.string(), clientId: z.string(), parentMessageId: z.string(), sender: z.string(), text: z.string(), isCreatedByUser: z.boolean(), error: z.boolean(), createdAt: z.string(), updatedAt: z.string(), }); export type TMessage = z.infer; export const tPluginAuthConfigSchema = z.object({ authField: z.string(), label: z.string(), description: z.string(), }); export type TPluginAuthConfig = z.infer; export const tPluginSchema = z.object({ name: z.string(), pluginKey: z.string(), description: z.string(), icon: z.string(), authConfig: z.array(tPluginAuthConfigSchema), authenticated: z.boolean().optional(), isButton: z.boolean().optional(), }); export type TPlugin = z.infer; export const tExampleSchema = z.object({ input: z.object({ content: z.string(), }), output: z.object({ content: z.string(), }), }); export type TExample = z.infer; export const tAgentOptionsSchema = z.object({ agent: z.string(), skipCompletion: z.boolean(), model: z.string(), temperature: z.number(), }); export const tConversationSchema = z.object({ conversationId: z.string().nullable(), title: z.string(), user: z.string().optional(), endpoint: eModelEndpointSchema.nullable(), suggestions: z.array(z.string()).optional(), messages: z.array(z.string()).optional(), tools: z.array(tPluginSchema).optional(), createdAt: z.string(), updatedAt: z.string(), systemMessage: z.string().nullable().optional(), modelLabel: z.string().nullable().optional(), examples: z.array(tExampleSchema).optional(), chatGptLabel: z.string().nullable().optional(), userLabel: z.string().optional(), model: z.string().optional(), promptPrefix: z.string().nullable().optional(), temperature: z.number().optional(), topP: z.number().optional(), topK: z.number().optional(), context: z.string().nullable().optional(), top_p: z.number().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), jailbreak: z.boolean().optional(), jailbreakConversationId: z.string().nullable().optional(), conversationSignature: z.string().nullable().optional(), parentMessageId: z.string().optional(), clientId: z.string().nullable().optional(), invocationId: z.number().nullable().optional(), toneStyle: z.string().nullable().optional(), maxOutputTokens: z.number().optional(), agentOptions: tAgentOptionsSchema.nullable().optional(), }); export type TConversation = z.infer; export const tPresetSchema = tConversationSchema .omit({ conversationId: true, createdAt: true, updatedAt: true, title: true, }) .merge( z.object({ conversationId: z.string().optional(), presetId: z.string().nullable().optional(), title: z.string().nullable().optional(), }), ); export type TPreset = z.infer;