* feat: squash rebase of OSS PR * fix: revert changes that weren't on manual rebase * fix: caught another one * fix: disable force * chore: drop print * fix: just stage-api && just publish-api * fix: make agent_type consistently an arg in the client * fix: patch multi-modal support * chore: put in todo stub * fix: disable hardcoding for tests * fix: patch validate agent sync (#4882) patch validate agent sync * fix: strip bad merge diff * fix: revert unrelated diff * fix: react_v2 naming -> letta_v1 naming * fix: strip bad merge --------- Co-authored-by: Kevin Lin <klin5061@gmail.com>
31 lines
1.1 KiB
Python
31 lines
1.1 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.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,
|
|
)
|