export type CourseResponse = { id: number | string; title: string; description?: string; }; export type DocumentSource = { document_id: string; filename: string; excerpt: string; }; export type ChatMessageResponse = { uuid_id: string; role: string; content: string; sources?: DocumentSource[]; created_at: string; }; export type ChatSessionResponse = { uuid_id: string; user_id: string; user_name?: string; course_id: string; course_name?: string; title: string; message_count: number; last_message_at?: string; created_at: string; updated_at: string; }; function createLocalMessageId(prefix: string): string { if (typeof crypto !== 'undefined' && 'randomUUID' in crypto) { return `${prefix}-${crypto.randomUUID()}`; } return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2)}`; } export function createLocalUserMessage(content: string): ChatMessageResponse { return { content, created_at: new Date().toISOString(), role: 'user', sources: [], uuid_id: createLocalMessageId('local'), }; } export function createLocalAssistantMessage( content = '', ): ChatMessageResponse { return { content, created_at: new Date().toISOString(), role: 'assistant', sources: [], uuid_id: createLocalMessageId('local-assistant'), }; }