Files
letta-server/letta/agents/agent_loop.py
cthomas 933dbb0830 fix: add fallback for sleeptime agent without group [LET-6255] (#6303)
fix: add fallback for sleeptime agent without group
2025-11-24 19:10:26 -08:00

64 lines
2.6 KiB
Python

from typing import TYPE_CHECKING
from letta.agents.base_agent_v2 import BaseAgentV2
from letta.agents.letta_agent_v2 import LettaAgentV2
from letta.agents.letta_agent_v3 import LettaAgentV3
from letta.groups.sleeptime_multi_agent_v3 import SleeptimeMultiAgentV3
from letta.groups.sleeptime_multi_agent_v4 import SleeptimeMultiAgentV4
from letta.schemas.agent import AgentState
from letta.schemas.enums import AgentType
if TYPE_CHECKING:
from letta.orm import User
class AgentLoop:
"""Factory class for instantiating the agent execution loop based on agent type"""
@staticmethod
def load(agent_state: AgentState, actor: "User") -> BaseAgentV2:
if agent_state.agent_type in [AgentType.letta_v1_agent, AgentType.sleeptime_agent]:
if agent_state.enable_sleeptime:
if agent_state.multi_agent_group is None:
# Agent has sleeptime enabled but no group - fall back to non-sleeptime agent
from letta.log import get_logger
logger = get_logger(__name__)
logger.warning(
f"Agent {agent_state.id} has enable_sleeptime=True but multi_agent_group is None. "
f"Falling back to standard LettaAgentV3."
)
return LettaAgentV3(
agent_state=agent_state,
actor=actor,
)
return SleeptimeMultiAgentV4(
agent_state=agent_state,
actor=actor,
group=agent_state.multi_agent_group,
)
return LettaAgentV3(
agent_state=agent_state,
actor=actor,
)
elif agent_state.enable_sleeptime and agent_state.agent_type != AgentType.voice_convo_agent:
if agent_state.multi_agent_group is None:
# Agent has sleeptime enabled but no group - fall back to non-sleeptime agent
from letta.log import get_logger
logger = get_logger(__name__)
logger.warning(
f"Agent {agent_state.id} has enable_sleeptime=True but multi_agent_group is None. "
f"Falling back to standard LettaAgentV2."
)
return LettaAgentV2(
agent_state=agent_state,
actor=actor,
)
return SleeptimeMultiAgentV3(agent_state=agent_state, actor=actor, group=agent_state.multi_agent_group)
else:
return LettaAgentV2(
agent_state=agent_state,
actor=actor,
)