schemas.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from __future__ import annotations
  2. from datetime import datetime
  3. from typing import Any, Literal
  4. from pydantic import BaseModel, Field
  5. SystemName = Literal["text2mem", "mem0", "letta", "reme", "memu"]
  6. class MemoryItem(BaseModel):
  7. id: str
  8. system: str
  9. workspace_id: str
  10. content: str
  11. memory_type: str = "semantic"
  12. scope: str = "workspace"
  13. source: str = "user_direct"
  14. confidence: float = 1.0
  15. valid_from: datetime | None = None
  16. valid_to: datetime | None = None
  17. created_at: datetime
  18. updated_at: datetime
  19. metadata: dict[str, Any] = Field(default_factory=dict)
  20. class AuditEvent(BaseModel):
  21. id: str
  22. system: str
  23. workspace_id: str
  24. operation: str
  25. target: str | None = None
  26. status: str = "ok"
  27. details: dict[str, Any] = Field(default_factory=dict)
  28. created_at: datetime
  29. class SystemDescriptor(BaseModel):
  30. id: SystemName
  31. name: str
  32. paradigm: str
  33. description: str
  34. available: bool
  35. mode: str
  36. status: str
  37. package: str | None = None
  38. setup_hint: str | None = None
  39. class ChatRequest(BaseModel):
  40. system: SystemName
  41. message: str = Field(min_length=1, max_length=10000)
  42. class ChatResponse(BaseModel):
  43. system: SystemName
  44. answer: str
  45. mode: str
  46. memory_context: list[MemoryItem] = Field(default_factory=list)
  47. memory_events: list[dict[str, Any]] = Field(default_factory=list)
  48. audit_events: list[AuditEvent] = Field(default_factory=list)
  49. class ResetRequest(BaseModel):
  50. system: SystemName | None = None