import { z } from "zod"; /** * Zod schema for chat summary objects returned by the get-chats IPC */ export const ChatSummarySchema = z.object({ id: z.number(), appId: z.number(), title: z.string().nullable(), createdAt: z.date(), }); /** * Type derived from the ChatSummarySchema */ export type ChatSummary = z.infer; /** * Zod schema for an array of chat summaries */ export const ChatSummariesSchema = z.array(ChatSummarySchema); /** * Zod schema for model provider */ export const ModelProviderSchema = z.enum([ "openai", "anthropic", "google", "auto", "openrouter", ]); /** * Type derived from the ModelProviderSchema */ export type ModelProvider = z.infer; /** * Zod schema for large language model configuration */ export const LargeLanguageModelSchema = z.object({ name: z.string(), provider: ModelProviderSchema, }); /** * Type derived from the LargeLanguageModelSchema */ export type LargeLanguageModel = z.infer; /** * Zod schema for provider settings */ export const ProviderSettingSchema = z.object({ apiKey: z.string().nullable(), }); /** * Type derived from the ProviderSettingSchema */ export type ProviderSetting = z.infer; export const RuntimeModeSchema = z.enum(["web-sandbox", "local-node", "unset"]); export type RuntimeMode = z.infer; /** * Zod schema for user settings */ export const UserSettingsSchema = z.object({ selectedModel: LargeLanguageModelSchema, providerSettings: z.record(z.string(), ProviderSettingSchema), runtimeMode: RuntimeModeSchema, }); /** * Type derived from the UserSettingsSchema */ export type UserSettings = z.infer;