File size: 1,060 Bytes
4e23b01 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import { z } from 'zod';
import { isoDateTimeSchema, timelineMessageBase } from './base';
import { turnOriginSchema } from './turn-origin';
export const turnUsageSchema = z.object({
input_tokens: z.number().int().nonnegative().optional(),
output_tokens: z.number().int().nonnegative().optional(),
cached_tokens: z.number().int().nonnegative().optional(),
cost: z.number().nonnegative().optional(),
});
export type TurnUsage = z.infer<typeof turnUsageSchema>;
export const turnMessageSchema = z.object({
type: z.literal('turn'),
...timelineMessageBase,
turn_id: z.string().min(1),
ordinal: z.number().int().nonnegative(),
status: z.enum(['running', 'completed']),
origin: turnOriginSchema,
user_message_id: z.string().min(1).optional(),
attachment_ids: z.array(z.string().min(1)).optional(),
started_at: isoDateTimeSchema.optional(),
ended_at: isoDateTimeSchema.optional(),
usage: turnUsageSchema.optional(),
duration_ms: z.number().nonnegative().optional(),
});
export type TurnMessage = z.infer<typeof turnMessageSchema>;
|