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.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.enable_sleeptime and agent_state.agent_type != AgentType.voice_convo_agent: return SleeptimeMultiAgentV3(agent_state=agent_state, actor=actor, group=agent_state.multi_agent_group) elif agent_state.agent_type == AgentType.letta_v1_agent: return LettaAgentV3( agent_state=agent_state, actor=actor, ) else: return LettaAgentV2( agent_state=agent_state, actor=actor, )