Files
RedditBot/packages/api-contracts/src/messages.ts
T

62 lines
2.1 KiB
TypeScript

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<typeof SentMessageSchema>;
export type ProcessedPost = z.infer<typeof ProcessedPostSchema>;
export type SuccessfulExample = z.infer<typeof SuccessfulExampleSchema>;