Rename message router to agent runtime (#1)

This commit is contained in:
Jack Gerrits
2024-05-16 08:51:41 -04:00
committed by GitHub
parent f32f9eea02
commit 02675126be
6 changed files with 33 additions and 12 deletions

View File

@@ -2,9 +2,9 @@ import asyncio
from dataclasses import dataclass
from agnext.core.agent import Agent
from agnext.core.agent_runtime import AgentRuntime
from agnext.core.message import Message
from agnext.core.message_router import MessageRouter
from agnext.queue_message_router import QueueMessageRouter
from agnext.single_threaded_agent_runtime import SingleThreadedAgentRuntime
from agnext.type_routed_agent import TypeRoutedAgent, event_handler
@@ -15,7 +15,7 @@ class MessageType(Message):
class Inner(TypeRoutedAgent[MessageType]):
def __init__(self, name: str, router: MessageRouter[MessageType]) -> None:
def __init__(self, name: str, router: AgentRuntime[MessageType]) -> None:
super().__init__(name, router)
@event_handler(MessageType)
@@ -24,7 +24,7 @@ class Inner(TypeRoutedAgent[MessageType]):
class Outer(TypeRoutedAgent[MessageType]):
def __init__(self, name: str, router: MessageRouter[MessageType], inner: Agent[MessageType]) -> None:
def __init__(self, name: str, router: AgentRuntime[MessageType], inner: Agent[MessageType]) -> None:
super().__init__(name, router)
self._inner = inner
@@ -36,7 +36,7 @@ class Outer(TypeRoutedAgent[MessageType]):
async def main() -> None:
router = QueueMessageRouter[MessageType]()
router = SingleThreadedAgentRuntime[MessageType]()
inner = Inner("inner", router)
outer = Outer("outer", router, inner)

View File

@@ -10,7 +10,7 @@ T = TypeVar("T", bound=Message)
# Undeliverable - error
class MessageRouter(Protocol[T]):
class AgentRuntime(Protocol[T]):
def add_agent(self, agent: Agent[T]) -> None: ...
# Returns the response of the message

View File

@@ -2,7 +2,7 @@ from abc import ABC, abstractmethod
from asyncio import Future
from typing import List, Sequence, Type, TypeVar
from agnext.core.message_router import MessageRouter
from agnext.core.agent_runtime import AgentRuntime
from .agent import Agent
from .message import Message
@@ -11,7 +11,7 @@ T = TypeVar("T", bound=Message)
class BaseAgent(ABC, Agent[T]):
def __init__(self, name: str, router: MessageRouter[T]) -> None:
def __init__(self, name: str, router: AgentRuntime[T]) -> None:
self._name = name
self._router = router

View File

@@ -5,8 +5,8 @@ from typing import Dict, Generic, List, Set, Type, TypeVar
from agnext.core.agent import Agent
from .core.agent_runtime import AgentRuntime
from .core.message import Message
from .core.message_router import MessageRouter
T = TypeVar("T", bound=Message)
@@ -28,7 +28,7 @@ class SendMessage(Generic[T]):
class ResponseMessage(Generic[T]): ...
class QueueMessageRouter(MessageRouter[T]):
class SingleThreadedAgentRuntime(AgentRuntime[T]):
def __init__(self) -> None:
self._event_queue: List[BroadcastMessage[T] | SendMessage[T]] = []
self._per_type_subscribers: Dict[Type[T], List[Agent[T]]] = {}

View File

@@ -1,8 +1,8 @@
from typing import Any, Awaitable, Callable, Dict, Sequence, Type, TypeVar
from agnext.core.agent_runtime import AgentRuntime
from agnext.core.base_agent import BaseAgent
from agnext.core.exceptions import CantHandleException
from agnext.core.message_router import MessageRouter
from .core.message import Message
@@ -19,7 +19,7 @@ def event_handler(target_type: Type[T]) -> Callable[[Callable[..., Awaitable[T]]
class TypeRoutedAgent(BaseAgent[T]):
def __init__(self, name: str, router: MessageRouter[T]) -> None:
def __init__(self, name: str, router: AgentRuntime[T]) -> None:
super().__init__(name, router)
self._handlers: Dict[Type[Any], Callable[[T], Awaitable[T]]] = {}

21
test.sh Executable file
View File

@@ -0,0 +1,21 @@
set -e
# Current script directory
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [[ "$VIRTUAL_ENV" == "" ]]
then
echo "Virtual environment is not activated"
exit 1
fi
cd $DIR
echo "--- Running ruff format ---"
ruff format
echo "--- Running ruff check ---"
ruff check
echo "--- Running ruff lint ---"
pyright
echo "--- Running ruff test ---"
mypy