Files
letta-server/letta/server/rest_api/dependencies.py
jnjpng 0459088ff3 feat: add ld flag for temporal v1 agent (#6251)
* base

* generate

* remove

---------

Co-authored-by: Letta Bot <noreply@letta.com>
2025-11-24 19:09:33 -08:00

58 lines
2.1 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
letta_v1_agent_message_async: 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
sdk_version: 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"),
sdk_version: Optional[str] = Header(None, alias="X-Stainless-Package-Version"),
message_async: Optional[str] = Header(None, alias="X-Experimental-Message-Async"),
letta_v1_agent: Optional[str] = Header(None, alias="X-Experimental-Letta-V1-Agent"),
letta_v1_agent_message_async: Optional[str] = Header(None, alias="X-Experimental-Letta-V1-Agent-Message-Async"),
) -> HeaderParams:
"""Dependency injection function to extract common headers from requests."""
return HeaderParams(
actor_id=actor_id,
user_agent=user_agent,
project_id=project_id,
sdk_version=sdk_version,
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,
letta_v1_agent_message_async=(letta_v1_agent_message_async == "true") if letta_v1_agent_message_async 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