from typing import Any from pydantic import BaseModel, Field from app.modules.ai_memory.constants import AIMemoryScope class AIMemoryRecallRequest(BaseModel): query: str = Field(..., min_length=1) scope: str = AIMemoryScope.GLOBAL subject: str | None = None limit: int = Field(default=5, ge=1, le=50) class AIMemoryRead(BaseModel): code: str owner_id: int | None kind: str scope: str subject: str content: str summary: str | None tags: list[Any] | None source: str importance: int status: str actor: str last_used_at: str | None expires_at: str | None created_at: str updated_at: str class AIUserRuleCreate(BaseModel): content: str = Field(..., min_length=1, max_length=2000) scope: str = AIMemoryScope.GLOBAL subject: str = Field(default="company", min_length=1, max_length=128) priority: int = Field(default=50, ge=1, le=100) tags: list[str] = Field(default_factory=list, max_length=20) class AIUserRuleUpdate(BaseModel): content: str | None = Field(default=None, min_length=1, max_length=2000) priority: int | None = Field(default=None, ge=1, le=100) tags: list[str] | None = Field(default=None, max_length=20) enabled: bool | None = None