from pydantic import BaseModel, Field from typing import Literal, Optional, Dict, Any from datetime import datetime import uuid class UserMessagePayloadSchema(BaseModel): content: str token: str class MessageSchema(BaseModel): message_id: str = Field(default_factory=lambda: str(uuid.uuid4())) chat_id: str # chat_uuid from the path, for context if needed role: Literal['user', 'assistant', 'system', 'tool', 'tool_result'] content: str status: Literal['complete', 'error', 'pending', 'suno_response'] timestamp: datetime = Field(default_factory=datetime.utcnow) metadata: Optional[Dict[str, Any]] = None