feat: add feature flag for new message async logic (#4805)

* feat: add feature flag for new message async logic

* remove from api sync
This commit is contained in:
cthomas
2025-09-18 23:26:38 -07:00
committed by Caren Thomas
parent a605271846
commit 076c56a0a5
3 changed files with 18 additions and 2 deletions

View File

@@ -98,7 +98,12 @@ for (const path of Object.keys(lettaAgentsAPI.paths)) {
][method].parameters.filter(
(param: Record<string, string>) =>
param.in !== 'header' ||
(param.name !== 'user_id' && param.name !== 'User-Agent' && param.name !== 'X-Project-Id'),
(
param.name !== 'user_id' &&
param.name !== 'User-Agent' &&
param.name !== 'X-Project-Id' &&
!param.name.startsWith('X-Experimental')
),
);
}
}

View File

@@ -7,24 +7,35 @@ if TYPE_CHECKING:
from letta.server.server import SyncServer
class ExperimentalParams(BaseModel):
"""Experimental parameters used across REST API endpoints."""
message_async: Optional[str] = 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"),
) -> 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,
),
)

View File

@@ -1669,7 +1669,7 @@ async def send_message_async(
)
run = await server.job_manager.create_job_async(pydantic_job=run, actor=actor)
if settings.temporal_endpoint:
if headers.experimental_params.message_async and settings.temporal_endpoint:
agent_state = await server.agent_manager.get_agent_by_id_async(
agent_id, actor, include_relationships=["memory", "multi_agent_group", "sources", "tool_exec_environment_variables", "tools"]
)