import uuid from datetime import datetime from typing import Literal from pydantic import BaseModel, Field CategoryType = Literal["health", "finance", "personal", "work", "document_summary", "other"] ImportanceType = Literal["critical", "high", "medium", "low"] class CreateMemoryRequest(BaseModel): category: CategoryType title: str = Field(min_length=1, max_length=255) content: str = Field(min_length=1) source_document_id: uuid.UUID | None = None importance: ImportanceType = "medium" is_active: bool = True class UpdateMemoryRequest(BaseModel): category: CategoryType | None = None title: str | None = None content: str | None = None importance: ImportanceType | None = None is_active: bool | None = None class MemoryEntryResponse(BaseModel): id: uuid.UUID user_id: uuid.UUID category: str title: str content: str source_document_id: uuid.UUID | None importance: str is_active: bool created_at: datetime model_config = {"from_attributes": True} class MemoryEntryListResponse(BaseModel): entries: list[MemoryEntryResponse]