File size: 2,008 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | import { z } from 'zod';
import { isoDateTimeSchema, timelineMessageBase } from './base';
export const systemRemovedIdsPayloadSchema = z.object({
removed_ids: z.array(z.string().min(1)),
});
export type SystemRemovedIdsPayload = z.infer<typeof systemRemovedIdsPayloadSchema>;
const systemMessageBase = {
type: z.literal('system'),
...timelineMessageBase,
system_id: z.string().min(1),
at: isoDateTimeSchema.optional(),
};
export const systemMessageSchema = z.discriminatedUnion('subtype', [
z.object({
...systemMessageBase,
subtype: z.literal('compaction'),
payload: z.unknown().optional(),
}),
z.object({
...systemMessageBase,
subtype: z.literal('undo'),
payload: systemRemovedIdsPayloadSchema,
}),
z.object({
...systemMessageBase,
subtype: z.literal('clear'),
payload: systemRemovedIdsPayloadSchema,
}),
z.object({
...systemMessageBase,
subtype: z.literal('goal'),
payload: z.unknown().optional(),
}),
z.object({
...systemMessageBase,
subtype: z.literal('plan.enter'),
payload: z.unknown().optional(),
}),
z.object({
...systemMessageBase,
subtype: z.literal('plan.exit'),
payload: z.unknown().optional(),
}),
z.object({
...systemMessageBase,
subtype: z.literal('plan.revision'),
payload: z.unknown().optional(),
}),
z.object({
...systemMessageBase,
subtype: z.literal('swarm.enter'),
payload: z.unknown().optional(),
}),
z.object({
...systemMessageBase,
subtype: z.literal('swarm.exit'),
payload: z.unknown().optional(),
}),
z.object({
...systemMessageBase,
subtype: z.literal('notice'),
payload: z.unknown().optional(),
}),
z.object({
...systemMessageBase,
subtype: z.literal('hook'),
payload: z.unknown().optional(),
}),
z.object({
...systemMessageBase,
subtype: z.literal('interruption'),
payload: z.unknown().optional(),
}),
]);
export type SystemMessage = z.infer<typeof systemMessageSchema>;
|