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:
@@ -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')
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -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"]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user