theo-agent-dashboard

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

models.py (1682B)


      1 """Pydantic models for request/response types."""
      2 
      3 from pydantic import BaseModel
      4 
      5 
      6 class SetupRequest(BaseModel):
      7     """First-run setup payload."""
      8     password: str
      9     api_key: str = ""
     10 
     11 
     12 class LoginRequest(BaseModel):
     13     """Login payload."""
     14     password: str
     15 
     16 
     17 class AuthResponse(BaseModel):
     18     """Response after successful auth."""
     19     token: str
     20 
     21 
     22 class AuthStatus(BaseModel):
     23     """Current auth state."""
     24     configured: bool
     25     authenticated: bool = False
     26 
     27 
     28 class TopicCreate(BaseModel):
     29     """Create a topic."""
     30     name: str
     31     color: str | None = "#6366f1"
     32 
     33 
     34 class TopicUpdate(BaseModel):
     35     """Update a topic."""
     36     name: str | None = None
     37     color: str | None = None
     38     sort_order: int | None = None
     39 
     40 
     41 class TopicResponse(BaseModel):
     42     """Topic details."""
     43     id: str
     44     name: str
     45     color: str
     46     sort_order: int
     47     created_at: int
     48     session_count: int | None = None
     49 
     50 
     51 class SessionCreate(BaseModel):
     52     """Create a session (proxy to Hermes)."""
     53     name: str | None = None
     54     topic_id: str | None = None
     55 
     56 
     57 class SessionUpdate(BaseModel):
     58     """Update a session."""
     59     name: str | None = None
     60     status: str | None = None
     61 
     62 
     63 class SessionResponse(BaseModel):
     64     """Session detail (proxied from Hermes)."""
     65     id: str
     66     name: str | None = None
     67     status: str | None = None
     68     created_at: int | None = None
     69 
     70 
     71 class AttachmentResponse(BaseModel):
     72     """Attachment metadata."""
     73     id: str
     74     filename: str
     75     content_type: str
     76     size_bytes: int
     77     created_at: int
     78 
     79 
     80 class ChatMessage(BaseModel):
     81     """Send a chat message."""
     82     session_id: str
     83     content: str
     84     attachments: list[str] | None = None
     85     model: str | None = None