Files
letta-server/letta/services/lettuce/lettuce_client_base.py
Matthew Zhou 8df78e9429 feat: Move file upload to temporal [LET-6089] (#6024)
* Finish writing temporal upload file activity

* Remove prints

* Rewrite content re-use
2025-11-13 15:36:55 -08:00

102 lines
3.1 KiB
Python

from letta.constants import DEFAULT_MAX_STEPS
from letta.schemas.agent import AgentState
from letta.schemas.enums import DuplicateFileHandling
from letta.schemas.letta_message import MessageType
from letta.schemas.message import MessageCreate
from letta.schemas.user import User
class LettuceClient:
"""Base class for LettuceClient."""
def __init__(self):
"""Initialize the LettuceClient."""
self.client: None = None
@classmethod
async def create(cls) -> "LettuceClient":
"""
Asynchronously creates the client.
Returns:
LettuceClient: The created LettuceClient instance.
"""
instance = cls()
return instance
def get_client(self) -> None:
"""
Get the inner client.
Returns:
None: The inner client.
"""
return self.client
async def get_status(self, run_id: str) -> str | None:
"""
Get the status of a run.
Args:
run_id (str): The ID of the run.
Returns:
str | None: The status of the run or None if not available.
"""
return None
async def cancel(self, run_id: str) -> str | None:
"""
Cancel a run.
Args:
run_id (str): The ID of the run to cancel.
Returns:
str | None: The ID of the canceled run or None if not available.
"""
return None
async def step(
self,
agent_state: AgentState,
actor: User,
input_messages: list[MessageCreate],
max_steps: int = DEFAULT_MAX_STEPS,
run_id: str | None = None,
use_assistant_message: bool = True,
include_return_message_types: list[MessageType] | None = None,
request_start_timestamp_ns: int | None = None,
) -> str | None:
"""
Execute the agent loop on Lettuce service.
Args:
agent_state (AgentState): The state of the agent.
actor (User): The actor.
input_messages (list[MessageCreate]): The input messages.
max_steps (int, optional): The maximum number of steps. Defaults to DEFAULT_MAX_STEPS.
run_id (str | None, optional): The ID of the run. Defaults to None.
use_assistant_message (bool, optional): Whether to use the assistant message. Defaults to True.
include_return_message_types (list[MessageType] | None, optional): The message types to include in the return. Defaults to None.
request_start_timestamp_ns (int | None, optional): The start timestamp of the request. Defaults to None.
Returns:
str | None: The ID of the run or None if client is not available.
"""
return None
async def upload_file_to_folder(
self,
*,
folder_id: str,
actor_id: str,
file_name: str,
content: bytes,
content_type: str | None = None,
duplicate_handling: DuplicateFileHandling | None = None,
override_name: str | None = None,
):
"""Kick off upload workflow. Base client does nothing and returns None."""
return None