Files
letta-server/letta/schemas/enums.py
2025-10-07 17:50:49 -07:00

225 lines
5.6 KiB
Python

from enum import Enum, StrEnum
class ProviderType(str, Enum):
anthropic = "anthropic"
azure = "azure"
bedrock = "bedrock"
cerebras = "cerebras"
deepseek = "deepseek"
google_ai = "google_ai"
google_vertex = "google_vertex"
groq = "groq"
hugging_face = "hugging-face"
letta = "letta"
lmstudio_openai = "lmstudio_openai"
mistral = "mistral"
ollama = "ollama"
openai = "openai"
together = "together"
vllm = "vllm"
xai = "xai"
class AgentType(str, Enum):
"""
Enum to represent the type of agent.
"""
memgpt_agent = "memgpt_agent" # the OG set of memgpt tools
memgpt_v2_agent = "memgpt_v2_agent" # memgpt style tools, but refreshed
letta_v1_agent = "letta_v1_agent" # simplification of the memgpt loop, no heartbeats or forced tool calls
react_agent = "react_agent" # basic react agent, no memory tools
workflow_agent = "workflow_agent" # workflow with auto-clearing message buffer
split_thread_agent = "split_thread_agent"
sleeptime_agent = "sleeptime_agent"
voice_convo_agent = "voice_convo_agent"
voice_sleeptime_agent = "voice_sleeptime_agent"
class ProviderCategory(str, Enum):
base = "base"
byok = "byok"
class MessageRole(str, Enum):
assistant = "assistant"
user = "user"
tool = "tool"
function = "function"
system = "system"
approval = "approval"
class MessageSourceType(str, Enum):
input = "input" # external input
output = "output" # internal output
class OptionState(str, Enum):
"""Useful for kwargs that are bool + default option"""
YES = "yes"
NO = "no"
DEFAULT = "default"
class JobStatus(StrEnum):
"""
Status of the job.
"""
# TODO (cliandy): removed `not_started`, but what does `pending` or `expired` here mean and where do we use them?
created = "created"
running = "running"
completed = "completed"
failed = "failed"
pending = "pending"
cancelled = "cancelled"
expired = "expired"
@property
def is_terminal(self):
return self in (JobStatus.completed, JobStatus.failed, JobStatus.cancelled, JobStatus.expired)
class RunStatus(StrEnum):
"""
Status of the run.
"""
created = "created"
running = "running"
completed = "completed"
failed = "failed"
cancelled = "cancelled"
class AgentStepStatus(str, Enum):
"""
Status of agent step.
TODO (cliandy): consolidate this with job status
"""
paused = "paused"
resumed = "resumed"
completed = "completed"
class MessageStreamStatus(str, Enum):
done = "[DONE]"
def model_dump_json(self):
return "[DONE]"
class ToolRuleType(str, Enum):
"""
Type of tool rule.
"""
# note: some of these should be renamed when we do the data migration
run_first = "run_first"
exit_loop = "exit_loop" # reasoning loop should exit
continue_loop = "continue_loop"
conditional = "conditional"
constrain_child_tools = "constrain_child_tools"
max_count_per_step = "max_count_per_step"
parent_last_tool = "parent_last_tool"
required_before_exit = "required_before_exit" # tool must be called before loop can exit
requires_approval = "requires_approval"
class FileProcessingStatus(str, Enum):
PENDING = "pending"
PARSING = "parsing"
EMBEDDING = "embedding"
COMPLETED = "completed"
ERROR = "error"
def is_terminal_state(self) -> bool:
"""Check if the processing status is in a terminal state (completed or error)."""
return self in (FileProcessingStatus.COMPLETED, FileProcessingStatus.ERROR)
class ToolType(str, Enum):
CUSTOM = "custom"
LETTA_CORE = "letta_core"
LETTA_MEMORY_CORE = "letta_memory_core"
LETTA_MULTI_AGENT_CORE = "letta_multi_agent_core"
LETTA_SLEEPTIME_CORE = "letta_sleeptime_core"
LETTA_VOICE_SLEEPTIME_CORE = "letta_voice_sleeptime_core"
LETTA_BUILTIN = "letta_builtin"
LETTA_FILES_CORE = "letta_files_core"
EXTERNAL_LANGCHAIN = "external_langchain" # DEPRECATED
EXTERNAL_COMPOSIO = "external_composio" # DEPRECATED
# TODO is "external" the right name here? Since as of now, MCP is local / doesn't support remote?
EXTERNAL_MCP = "external_mcp"
class JobType(str, Enum):
JOB = "job"
RUN = "run"
BATCH = "batch"
class ToolSourceType(str, Enum):
"""Defines what a tool was derived from"""
python = "python"
typescript = "typescript"
json = "json" # TODO (cliandy): is this still valid?
class ActorType(str, Enum):
LETTA_USER = "letta_user"
LETTA_AGENT = "letta_agent"
LETTA_SYSTEM = "letta_system"
class MCPServerType(str, Enum):
SSE = "sse"
STDIO = "stdio"
STREAMABLE_HTTP = "streamable_http"
class DuplicateFileHandling(str, Enum):
"""How to handle duplicate filenames when uploading files"""
SKIP = "skip" # skip files with duplicate names
ERROR = "error" # error when duplicate names are encountered
SUFFIX = "suffix" # add numeric suffix to make names unique (default behavior)
REPLACE = "replace" # replace the file with the duplicate name
class SandboxType(str, Enum):
E2B = "e2b"
MODAL = "modal"
LOCAL = "local"
class StepStatus(str, Enum):
"""Status of a step execution"""
PENDING = "pending"
SUCCESS = "success"
FAILED = "failed"
CANCELLED = "cancelled"
class VectorDBProvider(str, Enum):
"""Supported vector database providers for archival memory"""
NATIVE = "native"
TPUF = "tpuf"
PINECONE = "pinecone"
class TagMatchMode(str, Enum):
"""Tag matching behavior for filtering"""
ANY = "any"
ALL = "all"