Submatter/apps/web/app/api/chat/schema.ts

28 lines
619 B
TypeScript

import { z } from "zod";
const clientMessageSchema = z
.object({
role: z.enum(["user", "assistant"]),
content: z.string(),
id: z.string().optional(),
createdAt: z.coerce.date().optional(),
parts: z
.array(
z
.object({
type: z.literal("text"),
text: z.string(),
})
.strict(),
)
.optional(),
})
.strict()
.transform(({ role, content }) => ({ role, content }));
export const chatRequestSchema = z
.object({
workspace: z.string().min(1),
messages: z.array(clientMessageSchema).min(1),
})
.strict();