Source code for autogen_agentchat.state._states
from typing import Annotated, Any, List, Mapping, Optional
from pydantic import BaseModel, Field
from ..messages import (
    AgentEvent,
    ChatMessage,
)
# Ensures pydantic can distinguish between types of events & messages.
_AgentMessage = Annotated[AgentEvent | ChatMessage, Field(discriminator="type")]
[docs]
class BaseState(BaseModel):
    """Base class for all saveable state"""
    type: str = Field(default="BaseState")
    version: str = Field(default="1.0.0") 
[docs]
class AssistantAgentState(BaseState):
    """State for an assistant agent."""
    llm_context: Mapping[str, Any] = Field(default_factory=lambda: dict([("messages", [])]))
    type: str = Field(default="AssistantAgentState") 
[docs]
class TeamState(BaseState):
    """State for a team of agents."""
    agent_states: Mapping[str, Any] = Field(default_factory=dict)
    team_id: str = Field(default="")
    type: str = Field(default="TeamState") 
[docs]
class BaseGroupChatManagerState(BaseState):
    """Base state for all group chat managers."""
    message_thread: List[_AgentMessage] = Field(default_factory=list)
    current_turn: int = Field(default=0)
    type: str = Field(default="BaseGroupChatManagerState") 
[docs]
class ChatAgentContainerState(BaseState):
    """State for a container of chat agents."""
    agent_state: Mapping[str, Any] = Field(default_factory=dict)
    message_buffer: List[ChatMessage] = Field(default_factory=list)
    type: str = Field(default="ChatAgentContainerState") 
[docs]
class RoundRobinManagerState(BaseGroupChatManagerState):
    """State for :class:`~autogen_agentchat.teams.RoundRobinGroupChat` manager."""
    next_speaker_index: int = Field(default=0)
    type: str = Field(default="RoundRobinManagerState") 
[docs]
class SelectorManagerState(BaseGroupChatManagerState):
    """State for :class:`~autogen_agentchat.teams.SelectorGroupChat` manager."""
    previous_speaker: Optional[str] = Field(default=None)
    type: str = Field(default="SelectorManagerState") 
[docs]
class SwarmManagerState(BaseGroupChatManagerState):
    """State for :class:`~autogen_agentchat.teams.Swarm` manager."""
    current_speaker: str = Field(default="")
    type: str = Field(default="SwarmManagerState") 
[docs]
class MagenticOneOrchestratorState(BaseGroupChatManagerState):
    """State for :class:`~autogen_agentchat.teams.MagneticOneGroupChat` orchestrator."""
    task: str = Field(default="")
    facts: str = Field(default="")
    plan: str = Field(default="")
    n_rounds: int = Field(default=0)
    n_stalls: int = Field(default=0)
    type: str = Field(default="MagenticOneOrchestratorState") 
[docs]
class SocietyOfMindAgentState(BaseState):
    """State for a Society of Mind agent."""
    inner_team_state: Mapping[str, Any] = Field(default_factory=dict)
    type: str = Field(default="SocietyOfMindAgentState")