Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | import { SuperAgentsTarget } from '@shared/types/api/request/headers'; import { z } from 'zod'; export const RealtimeSession = z.object({ id: z.string(), createdAt: z.string(), updatedAt: z.string(), provider: z.string(), model: z.string(), }); export type RealtimeSession = z.infer<typeof RealtimeSession>; interface RealtimeConversationItemType { id: string; createdAt: string; updatedAt: string; content: string; role: string; previous_item_id: string | null; item?: RealtimeConversationItemType; } export const RealtimeConversationItem: z.ZodType<RealtimeConversationItemType> = z.lazy(() => z.object({ id: z.string(), createdAt: z.string(), updatedAt: z.string(), content: z.string(), role: z.string(), previous_item_id: z.string().nullable(), item: z.lazy(() => RealtimeConversationItem).optional(), }), ); export type RealtimeConversationItem = z.infer<typeof RealtimeConversationItem>; export const RealtimeConversation = z.object({ items: z.map(z.string(), RealtimeConversationItem), }); export type RealtimeConversation = z.infer<typeof RealtimeConversation>; export const RealtimeResponse = z.object({ id: z.string(), createdAt: z.string(), updatedAt: z.string(), output: z.array(RealtimeConversationItem), }); export type RealtimeResponse = z.infer<typeof RealtimeResponse>; export const RealtimeResponses = z.map(z.string(), RealtimeResponse); export type RealtimeResponses = z.infer<typeof RealtimeResponses>; export const RealtimeSessionState = z.object({ sessionDetails: RealtimeSession.nullable(), conversation: RealtimeConversation, responses: RealtimeResponses, }); export type RealtimeSessionState = z.infer<typeof RealtimeSessionState>; export const RealtimeAIProviderOptions = z.intersection( SuperAgentsTarget, z.object({ requestURL: z.string(), rubeusURL: z.string(), }), ); export type RealtimeAIProviderOptions = z.infer< typeof RealtimeAIProviderOptions >; export const RealtimeSessionOptions = z.object({ id: z.uuid(), providerOptions: RealtimeAIProviderOptions, requestHeaders: z.record(z.string(), z.string()), requestParams: z.record(z.string(), z.string()), }); export type RealtimeSessionOptions = z.infer<typeof RealtimeSessionOptions>; export enum RealtimeEventTypes { SESSION_CREATED = 'session.created', SESSION_UPDATED = 'session.updated', CONVERSATION_ITEM_CREATED = 'conversation.item.created', CONVERSATION_ITEM_DELETED = 'conversation.item.deleted', RESPONSE_DONE = 'response.done', ERROR = 'error', } export const RealtimeEvent = z .object({ type: z.enum(RealtimeEventTypes), session: RealtimeSession, item: RealtimeConversationItem, response: RealtimeResponse, error: z.unknown().nullable(), }) .catchall(z.unknown()); export type RealtimeEvent = z.infer<typeof RealtimeEvent>; |