1
8import { z } from "zod";
9
10
11export const AiExtractActionsDto = z.object({
12 text: z.string().trim().min(1).max(100_000),
13});
14export type AiExtractActionsInput = z.infer<typeof AiExtractActionsDto>;
15
16
17export const AiGenerateFaqsDto = z.object({
18 pageIds: z.array(z.string().min(1)).min(1).max(50),
19});
20export type AiGenerateFaqsInput = z.infer<typeof AiGenerateFaqsDto>;
21
22
27export const AiFindDuplicatesDto = z.object({
28 query: z.string().trim().min(1).max(200).optional(),
29 limit: z.number().int().min(10).max(200).optional(),
30});
31export type AiFindDuplicatesInput = z.infer<typeof AiFindDuplicatesDto>;
32
33
34export const AiFindStaleDto = z.object({
35 days: z.number().int().min(1).max(365).default(90),
36 limit: z.number().int().min(10).max(200).optional(),
37});
38export type AiFindStaleInput = z.infer<typeof AiFindStaleDto>;
39
40
41export const AiSuggestMetadataDto = z.object({
42 pageId: z.string().min(1),
43});
44export type AiSuggestMetadataInput = z.infer<typeof AiSuggestMetadataDto>;
45
46
47export const AiApplyMetadataDto = z.object({
48 suggestionId: z.string().min(1),
49 fields: z
50 .object({
51 title: z.string().trim().min(1).max(200).optional(),
52 description: z.string().trim().min(1).max(2000).optional(),
53 })
54 .refine((f) => f.title !== undefined || f.description !== undefined, { message: "fields: provide title and/or description" }),
55});
56export type AiApplyMetadataInput = z.infer<typeof AiApplyMetadataDto>;
57