Files
letta-server/letta/server/rest_api/dependencies.py
cthomas 976c3bdc31 feat: add feature flag for new agent type (#5062)
feat: add new feature flag for new agent type
2025-10-07 17:50:48 -07:00

52 lines
1.7 KiB
Python

from typing import TYPE_CHECKING, Optional
from fastapi import Header
from pydantic import BaseModel
if TYPE_CHECKING:
from letta.server.server import SyncServer
class ExperimentalParams(BaseModel):
"""Experimental parameters used across REST API endpoints."""
message_async: Optional[bool] = None
letta_v1_agent: Optional[bool] = None
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
experimental_params: Optional[ExperimentalParams] = 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"),
message_async: Optional[str] = Header(None, alias="X-Experimental-Message-Async"),
letta_v1_agent: Optional[str] = Header(None, alias="X-Experimental-Letta-V1-Agent"),
) -> HeaderParams:
"""Dependency injection function to extract common headers from requests."""
return HeaderParams(
actor_id=actor_id,
user_agent=user_agent,
project_id=project_id,
experimental_params=ExperimentalParams(
message_async=(message_async == "true") if message_async else None,
letta_v1_agent=(letta_v1_agent == "true") if letta_v1_agent else None,
),
)
# 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