gemini-agent / src /domain /models.py
likhon saheikh
Deploy full Gemini Agentic Platform
ad8ba8a
Raw History Blame Contribute Delete
1.82 kB
from typing import List, Optional, Dict, Any
from pydantic import BaseModel, Field
from enum import Enum
import time
# --- Enums ---
class SessionStatus(str, Enum):
ACTIVE = "active"
STOPPED = "stopped"
ARCHIVED = "archived"
class MessageRole(str, Enum):
USER = "user"
ASSISTANT = "assistant"
SYSTEM = "system"
TOOL = "tool"
# --- Entities ---
class Message(BaseModel):
role: MessageRole
content: str
timestamp: int = Field(default_factory=lambda: int(time.time()))
tool_calls: Optional[List[Dict[str, Any]]] = None
tool_call_id: Optional[str] = None
class Session(BaseModel):
session_id: str
title: str
created_at: int = Field(default_factory=lambda: int(time.time()))
updated_at: int = Field(default_factory=lambda: int(time.time()))
status: SessionStatus = SessionStatus.ACTIVE
messages: List[Message] = []
metadata: Dict[str, Any] = {}
# --- API Request/Response Models ---
class StandardResponse(BaseModel):
code: int
msg: str
data: Optional[Any] = None
class SessionResponse(BaseModel):
session_id: str
title: str
latest_message: Optional[str] = None
latest_message_at: Optional[int] = None
status: SessionStatus
unread_message_count: int = 0
class SessionDetailResponse(BaseModel):
session_id: str
title: str
events: List[Dict[str, Any]] = [] # Simplified for now, can be specific Event models
class ChatRequest(BaseModel):
message: str
timestamp: Optional[int] = None
event_id: Optional[str] = None
class ShellRequest(BaseModel):
session_id: str
class FileRequest(BaseModel):
file: str
class ShellResponse(BaseModel):
output: str
session_id: str
console: List[Dict[str, str]]
class FileResponse(BaseModel):
content: str
file: str