SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
4e23b01 verified
Raw
History Blame Contribute Delete
2.13 kB
import { z } from 'zod';
import { isoDateTimeSchema } from '@moonshot-ai/agent-core-v2/_base/utils/isoDateTime';
export const questionOptionSchema = z.object({
id: z.string().min(1),
label: z.string().min(1),
description: z.string().optional(),
});
export type QuestionOption = z.infer<typeof questionOptionSchema>;
export const questionItemSchema = z.object({
id: z.string().min(1),
question: z.string().min(1),
header: z.string().optional(),
body: z.string().optional(),
options: z.array(questionOptionSchema).min(2).max(4),
multi_select: z.boolean().optional(),
allow_other: z.boolean().optional(),
other_label: z.string().optional(),
other_description: z.string().optional(),
});
export type QuestionItem = z.infer<typeof questionItemSchema>;
export const questionRequestSchema = z.object({
question_id: z.string().min(1),
session_id: z.string().min(1),
turn_id: z.number().int().nonnegative().optional(),
tool_call_id: z.string().min(1).optional(),
questions: z.array(questionItemSchema).min(1).max(4),
created_at: isoDateTimeSchema,
});
export type QuestionRequest = z.infer<typeof questionRequestSchema>;
export const questionAnswerSchema = z.discriminatedUnion('kind', [
z.object({ kind: z.literal('single'), option_id: z.string().min(1) }),
z.object({ kind: z.literal('multi'), option_ids: z.array(z.string().min(1)).min(1) }),
z.object({ kind: z.literal('other'), text: z.string() }),
z.object({
kind: z.literal('multi_with_other'),
option_ids: z.array(z.string().min(1)),
other_text: z.string(),
}),
z.object({ kind: z.literal('skipped') }),
]);
export type QuestionAnswer = z.infer<typeof questionAnswerSchema>;
export const questionAnswerMethodSchema = z.enum(['enter', 'space', 'number_key', 'click']);
export type QuestionAnswerMethod = z.infer<typeof questionAnswerMethodSchema>;
export const questionResponseSchema = z.object({
answers: z.record(z.string().min(1), questionAnswerSchema),
method: questionAnswerMethodSchema.optional(),
note: z.string().optional(),
});
export type QuestionResponse = z.infer<typeof questionResponseSchema>;