from typing import TYPE_CHECKING, Optional from fastapi import Header from pydantic import BaseModel if TYPE_CHECKING: from letta.server.server import SyncServer class HeaderParams(BaseModel): """Common header parameters used across REST API endpoints.""" actor_id: Optional[str] = None user_agent: Optional[str] = None project_id: Optional[str] = None def get_headers( actor_id: Optional[str] = Header(None, alias="user_id"), user_agent: Optional[str] = Header(None, alias="User-Agent"), project_id: Optional[str] = Header(None, alias="X-Project-Id"), ) -> HeaderParams: """Dependency injection function to extract common headers from requests.""" return HeaderParams( actor_id=actor_id, user_agent=user_agent, project_id=project_id, ) # TODO: why does this double up the interface? async def get_letta_server() -> "SyncServer": # Check if a global server is already instantiated from letta.server.rest_api.app import server # assert isinstance(server, SyncServer) return server