// Message component base interface export interface MessageComponent { type: string; } // Source component export interface Source extends MessageComponent { type: 'Source'; id: number | string; timestamp: number; } // Plain text component export interface Plain extends MessageComponent { type: 'Plain'; text: string; } // Quote component export interface Quote extends MessageComponent { type: 'Quote'; id?: number; group_id?: number | string; sender_id?: number | string; target_id?: number | string; origin: MessageComponent[]; } // At component export interface At extends MessageComponent { type: 'At'; target: number | string; display?: string; } // AtAll component export interface AtAll extends MessageComponent { type: 'AtAll'; } // Image component export interface Image extends MessageComponent { type: 'Image'; image_id?: string; url?: string; path?: string; base64?: string; } // Voice component export interface Voice extends MessageComponent { type: 'Voice'; voice_id?: string; url?: string; path?: string; base64?: string; length?: number; } // File component export interface File extends MessageComponent { type: 'File'; id?: string; name?: string; size?: number; url?: string; path?: string; base64?: string; } // Unknown component export interface Unknown extends MessageComponent { type: 'Unknown'; text?: string; } // Forward message node export interface ForwardMessageNode { sender_id?: number | string; sender_name?: string; message_chain?: MessageComponent[]; message_id?: number; } // Forward message display export interface ForwardMessageDisplay { title?: string; brief?: string; source?: string; preview?: string[]; summary?: string; } // Forward component export interface Forward extends MessageComponent { type: 'Forward'; display?: ForwardMessageDisplay; node_list?: ForwardMessageNode[]; } // WeChat specific components export interface WeChatMiniPrograms extends MessageComponent { type: 'WeChatMiniPrograms'; mini_app_id: string; user_name: string; display_name?: string; page_path?: string; title?: string; image_url?: string; } export interface WeChatEmoji extends MessageComponent { type: 'WeChatEmoji'; emoji_md5: string; emoji_size: number; } export interface WeChatLink extends MessageComponent { type: 'WeChatLink'; link_title?: string; link_desc?: string; link_url?: string; link_thumb_url?: string; } // Union type for all message components export type MessageChainComponent = | Source | Plain | Quote | At | AtAll | Image | Voice | File | Unknown | Forward | WeChatMiniPrograms | WeChatEmoji | WeChatLink; // Message interface export interface Message { id: number; role: 'user' | 'assistant'; content: string; message_chain: MessageChainComponent[]; timestamp: string; is_final?: boolean; }