import { z } from 'zod'; import { RedditAccountOwnerSchema } from './session.js'; export const SentMessageSchema = z.strictObject({ id: z.number(), postId: z.string().nullable(), recipient: z.string(), subject: z.string(), message: z.string(), sentAt: z.number(), gotResponse: z.boolean(), gotImage: z.boolean(), responseCheckedAt: z.number().nullable(), strategyId: z.string().nullable(), chatRoomId: z.string().nullable(), experimentId: z.string().nullable().optional(), promptVersion: z.string().nullable().optional(), modelId: z.string().nullable().optional(), selectionReason: z.enum(['explore', 'exploit']).nullable().optional(), sourceType: z.enum(['image', 'chat']).nullable().optional(), subreddit: z.string().optional(), postTitle: z.string().optional(), postUrl: z.string().optional(), postImageUrl: z.string().optional(), postImageAnalysis: z.string().optional(), owner: RedditAccountOwnerSchema.optional(), }); export const MessagesResponseSchema = z.array(SentMessageSchema); export const ProcessedPostSchema = z.strictObject({ id: z.string(), subreddit: z.string(), author: z.string(), title: z.string(), postUrl: z.string().nullable().optional(), imageUrl: z.string().nullable(), imageAnalysis: z.string().nullable(), generatedMessage: z.string().nullable(), processedAt: z.number(), messageSent: z.boolean(), error: z.string().nullable(), owner: RedditAccountOwnerSchema.optional(), }); export const ProcessedPostsResponseSchema = z.array(ProcessedPostSchema); export const SuccessfulExampleSchema = z.strictObject({ id: z.number(), sentMessageId: z.number().nullable(), originalMessage: z.string(), imageAnalysis: z.string().nullable(), postTitle: z.string().nullable(), responseSnippet: z.string().nullable(), subreddit: z.string().nullable(), createdAt: z.number(), gotImage: z.boolean().optional(), }); export const SuccessfulExamplesResponseSchema = z.array(SuccessfulExampleSchema); export type SentMessage = z.infer; export type ProcessedPost = z.infer; export type SuccessfulExample = z.infer;