28 lines
619 B
TypeScript
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();
|