chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
"""Agents"""
|
||||
|
||||
import re
|
||||
from typing import Optional, List, TypedDict
|
||||
from abc import ABC, abstractmethod
|
||||
from .types import Message
|
||||
from .action import ActionDict
|
||||
from .types import MetaEvent
|
||||
|
||||
|
||||
class AgentDict(TypedDict):
|
||||
"""Agent dictionary"""
|
||||
|
||||
name: str
|
||||
description: Optional[str]
|
||||
|
||||
|
||||
class Agent(ABC):
|
||||
"""Agent class for CopilotKit"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
name: str,
|
||||
description: Optional[str] = None,
|
||||
):
|
||||
self.name = name
|
||||
self.description = description
|
||||
|
||||
if not re.match(r"^[a-zA-Z0-9_-]+$", name):
|
||||
raise ValueError(
|
||||
f"Invalid agent name '{name}': "
|
||||
+ "must consist of alphanumeric characters, underscores, and hyphens only"
|
||||
)
|
||||
|
||||
@abstractmethod
|
||||
def execute( # pylint: disable=too-many-arguments
|
||||
self,
|
||||
*,
|
||||
state: dict,
|
||||
config: Optional[dict] = None,
|
||||
messages: List[Message],
|
||||
thread_id: str,
|
||||
actions: Optional[List[ActionDict]] = None,
|
||||
meta_events: Optional[List[MetaEvent]] = None,
|
||||
**kwargs,
|
||||
):
|
||||
"""Execute the agent"""
|
||||
|
||||
@abstractmethod
|
||||
async def get_state(
|
||||
self,
|
||||
*,
|
||||
thread_id: str,
|
||||
):
|
||||
"""Default get_state implementation"""
|
||||
return {
|
||||
"threadId": thread_id or "",
|
||||
"threadExists": False,
|
||||
"state": {},
|
||||
"messages": [],
|
||||
}
|
||||
|
||||
def dict_repr(self) -> AgentDict:
|
||||
"""Dict representation of the action"""
|
||||
return {"name": self.name, "description": self.description or ""}
|
||||
Reference in New Issue
Block a user