import * as z from "zod/mini"; import { inlineFlowSchema } from "./internal/inline-flow.js"; import { PREVIEW_PAIRING_TRANSPORT_SOURCE } from "./preview-pairing-transport.js"; import { responseMetadataInputSchema } from "./response-metadata.js"; export const PREVIEW_FLOW_TRANSPORT_SOURCE = PREVIEW_PAIRING_TRANSPORT_SOURCE; const requestIdSchema = z.string().check(z.trim(), z.minLength(1)); const flowHandleIdSchema = z.string().check(z.trim(), z.minLength(1)); export const previewFlowOpenCommandSchema = z.strictObject({ kind: z.literal("open"), flow: inlineFlowSchema, flowHandleId: z.optional(flowHandleIdSchema), metadata: z.optional(responseMetadataInputSchema), hideCloseButton: z.optional(z.boolean()), }); export const previewFlowOpenRequestSchema = z.strictObject({ source: z.literal(PREVIEW_FLOW_TRANSPORT_SOURCE), type: z.literal("preview.flow.open.request"), requestId: requestIdSchema, command: previewFlowOpenCommandSchema, }); export const previewFlowOpenResultSchema = z.discriminatedUnion("ok", [ z.strictObject({ source: z.literal(PREVIEW_FLOW_TRANSPORT_SOURCE), type: z.literal("preview.flow.open.result"), requestId: requestIdSchema, ok: z.literal(true), result: z.strictObject({ flowHandleId: flowHandleIdSchema, }), }), z.strictObject({ source: z.literal(PREVIEW_FLOW_TRANSPORT_SOURCE), type: z.literal("preview.flow.open.result"), requestId: requestIdSchema, ok: z.literal(false), error: z.strictObject({ code: z.optional(z.string().check(z.trim(), z.minLength(1))), message: z.string().check(z.trim(), z.minLength(1)), }), }), ]); export type PreviewFlowOpenCommand = z.output< typeof previewFlowOpenCommandSchema >; export type PreviewFlowOpenRequest = z.output< typeof previewFlowOpenRequestSchema >; export type PreviewFlowOpenResult = z.output< typeof previewFlowOpenResultSchema >;