Implement Phase 1 - Core Multi-Agent System (MAS) Infrastructure
Feature: Implement Phase 1 - Core Multi-Agent System (MAS) Infrastructure
This pull request introduces the foundational components of the Multi-Agent System (MAS) framework, establishing a robust and modular core for future development.
Key Components Implemented/Updated:
-
BaseAgent
(src/core/base_agent.py
):- Defines the abstract base for all agents, including unique identification, registration with central services, standardized message handling, and core lifecycle management (initialization, running, idle, busy, shutdown).
- Integrates helpers for
TaskTracker
interaction.
-
MessageRouter
(src/core/message_router.py
):- Serves as the central communication hub, now fully refactored to delegate message publishing and retrieval to a concrete
ICommunicationBackend
implementation. This ensures clear separation of concerns and extensibility for various communication transports.
- Serves as the central communication hub, now fully refactored to delegate message publishing and retrieval to a concrete
-
AgentRegistry
(src/core/agent_registry.py
):- Provides centralized agent registration, unregistration, and discovery services, along with basic role tracking.
-
Protocols
(src/core/protocols.py
):- Introduces core enums (
MessageType
,AgentState
,AgentCapability
,AgentRole
,TaskStatus
) for standardization across the framework. - Defines the
ICommunicationBackend
interface, enforcing a contract for communication backend implementations.
- Introduces core enums (
-
Exceptions
(src/core/exceptions.py
):- Introduces a hierarchy of custom exceptions (
MASFrameworkException
,AgentRegistrationError
,MessageHandlingError
,TaskManagementError
) to provide more granular and specific error handling within the framework.
- Introduces a hierarchy of custom exceptions (
-
TaskTracker
(src/core/task_tracker.py
):- A new centralized service for managing the lifecycle of tasks within the MAS, supporting creation, status updates (
PENDING
,IN_PROGRESS
,COMPLETED
,FAILED
), assignment, and retrieval. - Designed with thread-safety using
threading.Lock
to handle concurrent agent access.
- A new centralized service for managing the lifecycle of tasks within the MAS, supporting creation, status updates (
-
InMemoryBackend
(src/communication/inmemory_backend.py
):- A concrete implementation of
ICommunicationBackend
utilizing Python's in-memory queues, serving as the default communication transport for development and single-process deployments.
- A concrete implementation of
How Components Integrate:
-
Agents & Core Services:
BaseAgent
instances are initialized with references to theMessageRouter
,AgentRegistry
, andTaskTracker
, allowing them to interact with these central services. -
Communication Abstraction:
MessageRouter
's dependency onICommunicationBackend
ensures it can seamlessly switch betweenInMemoryBackend
(current) and future external backends (e.g., Redis, RabbitMQ) without changes to the core routing logic. -
Task Lifecycle:
SenderAgent
creates tasks viaTaskTracker
and includes task IDs in messages.ReceiverAgent
extracts these IDs and updates task statuses (e.g.,IN_PROGRESS
toCOMPLETED
) in theTaskTracker
, demonstrating a basic cooperative workflow. -
Standardization & Error Handling:
Protocols
are utilized across components for consistent type definitions, andExceptions
are integrated for robust error propagation and handling.
Documentation & Examples:
-
docs/architecture.md
: This file has been updated to include a comprehensive overview of the MAS framework's layered architecture, detailing each core component and their interactions. It also includes a visual system architecture diagram. -
examples/simple_mas.py
: The example script has been updated to demonstrate the full integration of these Phase 1 components. It showcases agents registering, sending/receiving messages, creating/updating tasks, and gracefully shutting down.
This phase lays a solid, extensible, and well-structured foundation for the development of more complex multi-agent behaviors and capabilities.