from __future__ import annotations from datetime import datetime from enum import Enum from typing import ClassVar, Literal from uuid import UUID from pydantic import BaseModel, ConfigDict from schemas.memories.memory_content import ( TeamMember, UserMemoryContent, UserPreferences, WorkHabit, WorkProfileContent, WorkProject, ) class MemoryType(str, Enum): USER = "user" WORK = "work" class MemoryStatus(str, Enum): ACTIVE = "active" DISABLED = "disabled" class MemoryModel(BaseModel): model_config: ClassVar[ConfigDict] = ConfigDict( extra="forbid", from_attributes=True ) id: UUID owner_id: UUID agent_id: UUID | None = None memory_type: Literal["user", "work"] content: UserMemoryContent | WorkProfileContent status: MemoryStatus created_at: datetime updated_at: datetime __all__ = [ "MemoryModel", "MemoryStatus", "MemoryType", "TeamMember", "UserMemoryContent", "UserPreferences", "WorkHabit", "WorkProfileContent", "WorkProject", ]