from datetime import datetime from pydantic import BaseModel, Field from typing import Any, Dict, List, Optional from langchain_core.messages import BaseMessage class ThreadFileResponse(BaseModel): """Response model for thread file operations.""" file_id: str = Field(..., description="OpenAI file ID") filename: str = Field(..., description="Original filename") bytes: int = Field(..., description="File size in bytes") purpose: str = Field(..., description="File purpose") created_at: datetime = Field(..., description="When file was added to brand") uploaded_by: str = Field(..., description="User ID who uploaded the file") openai_created_at: int = Field(..., description="OpenAI creation timestamp") class ThreadFileUploadRequest(BaseModel): """Request model for uploading thread files.""" purpose: Optional[str] = Field( default="assistants", description="File purpose for OpenAI") class ThreadFileDeleteRequest(BaseModel): """Request model for deleting thread files.""" file_id: str = Field(..., description="OpenAI file ID to delete") class FetchSuggestionsRequest(BaseModel): messages: List[BaseMessage] state: Dict[str, Any] class NextSuggestion(BaseModel): title: str prompt: str