enum MessageRole { user, assistant } class Message { final int? id; final int conversationId; final MessageRole role; final String content; final String status; // "complete" | "generating" final DateTime? createdAt; final Map? metadata; const Message({ this.id, required this.conversationId, required this.role, required this.content, this.status = 'complete', this.createdAt, this.metadata, }); factory Message.fromJson(Map json) => Message( id: json['id'] as int?, conversationId: json['conversation_id'] as int, role: json['role'] == 'user' ? MessageRole.user : MessageRole.assistant, content: json['content'] as String, status: json['status'] as String? ?? 'complete', createdAt: json['created_at'] != null ? DateTime.parse(json['created_at'] as String) : null, metadata: json['metadata'] as Map?, ); Message copyWith({String? content, String? status}) => Message( id: id, conversationId: conversationId, role: role, content: content ?? this.content, status: status ?? this.status, createdAt: createdAt, metadata: metadata, ); }