Schemas
Section titled “Schemas”Pydantic models for API requests and responses.
Location
Section titled “Location”- Main schemas:
src/youlab_server/server/schemas.py - Strategy schemas:
src/youlab_server/server/strategy/schemas.py
Agent Schemas
Section titled “Agent Schemas”CreateAgentRequest
Section titled “CreateAgentRequest”class CreateAgentRequest(BaseModel): user_id: str agent_type: str = "tutor" user_name: str | None = NoneAgentResponse
Section titled “AgentResponse”class AgentResponse(BaseModel): agent_id: str user_id: str agent_type: str agent_name: str created_at: datetime | int | None = NoneAgentListResponse
Section titled “AgentListResponse”class AgentListResponse(BaseModel): agents: list[AgentResponse]Chat Schemas
Section titled “Chat Schemas”ChatRequest
Section titled “ChatRequest”class ChatRequest(BaseModel): agent_id: str message: str chat_id: str | None = None chat_title: str | None = NoneChatResponse
Section titled “ChatResponse”class ChatResponse(BaseModel): response: str agent_id: strStreamChatRequest
Section titled “StreamChatRequest”class StreamChatRequest(BaseModel): agent_id: str message: str chat_id: str | None = None chat_title: str | None = None enable_thinking: bool = TrueHealth Schemas
Section titled “Health Schemas”HealthResponse
Section titled “HealthResponse”class HealthResponse(BaseModel): status: str letta_connected: bool honcho_connected: bool = False version: str = "0.1.0"Strategy Schemas
Section titled “Strategy Schemas”UploadDocumentRequest
Section titled “UploadDocumentRequest”class UploadDocumentRequest(BaseModel): content: str tags: list[str] = Field(default_factory=list)UploadDocumentResponse
Section titled “UploadDocumentResponse”class UploadDocumentResponse(BaseModel): success: boolAskRequest
Section titled “AskRequest”class AskRequest(BaseModel): question: strAskResponse
Section titled “AskResponse”class AskResponse(BaseModel): response: strSearchDocumentsResponse
Section titled “SearchDocumentsResponse”class SearchDocumentsResponse(BaseModel): documents: list[str]HealthResponse (Strategy)
Section titled “HealthResponse (Strategy)”class HealthResponse(BaseModel): status: str agent_exists: boolMemory Schemas
Section titled “Memory Schemas”PersonaBlock
Section titled “PersonaBlock”class PersonaBlock(BaseModel): name: str = "Assistant" role: str capabilities: list[str] = Field(default_factory=list) tone: str = "professional" verbosity: str = "concise" constraints: list[str] = Field(default_factory=list) expertise: list[str] = Field(default_factory=list)HumanBlock
Section titled “HumanBlock”class HumanBlock(BaseModel): name: str | None = None role: str | None = None current_task: str | None = None session_state: SessionState = SessionState.IDLE preferences: list[str] = Field(default_factory=list) context_notes: list[str] = Field(default_factory=list) facts: list[str] = Field(default_factory=list)SessionState
Section titled “SessionState”class SessionState(str, Enum): IDLE = "idle" ACTIVE_TASK = "active_task" WAITING_INPUT = "waiting_input" THINKING = "thinking" ERROR_RECOVERY = "error_recovery"Template Schemas
Section titled “Template Schemas”AgentTemplate
Section titled “AgentTemplate”class AgentTemplate(BaseModel): type_id: str display_name: str description: str = "" persona: PersonaBlock human: HumanBlock = Field(default_factory=HumanBlock)Metrics Schemas
Section titled “Metrics Schemas”ContextMetrics
Section titled “ContextMetrics”@dataclassclass ContextMetrics: persona_chars: int human_chars: int persona_max: int human_max: int
@property def persona_usage(self) -> float @property def human_usage(self) -> float @property def total_usage(self) -> floatLLMMetrics
Section titled “LLMMetrics”@dataclassclass LLMMetrics: prompt_tokens: int = 0 completion_tokens: int = 0 total_tokens: int = 0 latency_ms: float = 0 model: str = ""Related Pages
Section titled “Related Pages”- API - Endpoint reference
- Memory System - Memory block details
- Agent System - Template details