import { z } from "zod";
export const TranscriptRoleSchema = z.enum(["user", "assistant", "toolResult", "system"]);
const BaseEventSchema = z.object({
    version: z.literal(1),
    sessionId: z.string().min(1),
    seq: z.number().int().nonnegative(),
    timestamp: z.number().int().nonnegative(),
});
export const SessionCreatedEventSchema = BaseEventSchema.extend({
    type: z.literal("session_created"),
    bookId: z.string().nullable(),
    title: z.string().nullable().default(null),
    createdAt: z.number().int().nonnegative(),
    updatedAt: z.number().int().nonnegative(),
});
export const SessionMetadataUpdatedEventSchema = BaseEventSchema.extend({
    type: z.literal("session_metadata_updated"),
    bookId: z.string().nullable().optional(),
    title: z.string().nullable().optional(),
    updatedAt: z.number().int().nonnegative(),
});
export const RequestStartedEventSchema = BaseEventSchema.extend({
    type: z.literal("request_started"),
    requestId: z.string().min(1),
    input: z.string(),
});
export const RequestCommittedEventSchema = BaseEventSchema.extend({
    type: z.literal("request_committed"),
    requestId: z.string().min(1),
});
export const RequestFailedEventSchema = BaseEventSchema.extend({
    type: z.literal("request_failed"),
    requestId: z.string().min(1),
    error: z.string(),
});
export const MessageEventSchema = BaseEventSchema.extend({
    type: z.literal("message"),
    requestId: z.string().min(1),
    uuid: z.string().min(1),
    parentUuid: z.string().min(1).nullable(),
    role: TranscriptRoleSchema,
    piTurnIndex: z.number().int().nonnegative().optional(),
    toolCallId: z.string().min(1).optional(),
    sourceToolAssistantUuid: z.string().min(1).optional(),
    legacyDisplay: z.object({
        thinking: z.string().optional(),
        toolExecutions: z.array(z.unknown()).optional(),
    }).optional(),
    message: z.unknown(),
});
export const TranscriptEventSchema = z.discriminatedUnion("type", [
    SessionCreatedEventSchema,
    SessionMetadataUpdatedEventSchema,
    RequestStartedEventSchema,
    RequestCommittedEventSchema,
    RequestFailedEventSchema,
    MessageEventSchema,
]);
//# sourceMappingURL=session-transcript-schema.js.map