from __future__ import annotations from datetime import datetime from typing import Any, Literal from pydantic import BaseModel, Field SystemName = Literal["text2mem", "mem0", "letta", "reme", "memu"] class MemoryItem(BaseModel): id: str system: str workspace_id: str content: str memory_type: str = "semantic" scope: str = "workspace" source: str = "user_direct" confidence: float = 1.0 valid_from: datetime | None = None valid_to: datetime | None = None created_at: datetime updated_at: datetime metadata: dict[str, Any] = Field(default_factory=dict) class AuditEvent(BaseModel): id: str system: str workspace_id: str operation: str target: str | None = None status: str = "ok" details: dict[str, Any] = Field(default_factory=dict) created_at: datetime class SystemDescriptor(BaseModel): id: SystemName name: str paradigm: str description: str available: bool mode: str status: str package: str | None = None setup_hint: str | None = None class ChatRequest(BaseModel): system: SystemName message: str = Field(min_length=1, max_length=10000) class ChatResponse(BaseModel): system: SystemName answer: str mode: str memory_context: list[MemoryItem] = Field(default_factory=list) memory_events: list[dict[str, Any]] = Field(default_factory=list) audit_events: list[AuditEvent] = Field(default_factory=list) class ResetRequest(BaseModel): system: SystemName | None = None