55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
|
|
from abc import ABC, abstractmethod
|
||
|
|
from typing import Any, Mapping
|
||
|
|
|
||
|
|
from agentdhal_core import ComponentBase
|
||
|
|
from pydantic import BaseModel
|
||
|
|
|
||
|
|
from ._task import TaskRunner
|
||
|
|
|
||
|
|
|
||
|
|
class Team(ABC, TaskRunner, ComponentBase[BaseModel]):
|
||
|
|
component_type = "team"
|
||
|
|
|
||
|
|
@property
|
||
|
|
@abstractmethod
|
||
|
|
def name(self) -> str:
|
||
|
|
"""The name of the team. This is used by team to uniquely identify itself
|
||
|
|
in a larger team of teams."""
|
||
|
|
...
|
||
|
|
|
||
|
|
@property
|
||
|
|
@abstractmethod
|
||
|
|
def description(self) -> str:
|
||
|
|
"""A description of the team. This is used to provide context about the
|
||
|
|
team and its purpose to its parent orchestrator."""
|
||
|
|
...
|
||
|
|
|
||
|
|
@abstractmethod
|
||
|
|
async def reset(self) -> None:
|
||
|
|
"""Reset the team and all its participants to its initial state."""
|
||
|
|
...
|
||
|
|
|
||
|
|
@abstractmethod
|
||
|
|
async def pause(self) -> None:
|
||
|
|
"""Pause the team and all its participants. This is useful for
|
||
|
|
pausing the :meth:`agentdhal_agentchat.base.TaskRunner.run` or
|
||
|
|
:meth:`agentdhal_agentchat.base.TaskRunner.run_stream` methods from
|
||
|
|
concurrently, while keeping them alive."""
|
||
|
|
...
|
||
|
|
|
||
|
|
@abstractmethod
|
||
|
|
async def resume(self) -> None:
|
||
|
|
"""Resume the team and all its participants from a pause after
|
||
|
|
:meth:`pause` was called."""
|
||
|
|
...
|
||
|
|
|
||
|
|
@abstractmethod
|
||
|
|
async def save_state(self) -> Mapping[str, Any]:
|
||
|
|
"""Save the current state of the team."""
|
||
|
|
...
|
||
|
|
|
||
|
|
@abstractmethod
|
||
|
|
async def load_state(self, state: Mapping[str, Any]) -> None:
|
||
|
|
"""Load the state of the team."""
|
||
|
|
...
|