2025-11-04 08:09:12 +01:00
|
|
|
from pr.agents.agent_communication import (
|
|
|
|
|
AgentCommunicationBus,
|
|
|
|
|
AgentMessage,
|
|
|
|
|
MessageType,
|
|
|
|
|
)
|
|
|
|
|
from pr.agents.agent_manager import AgentInstance, AgentManager
|
2025-11-04 05:17:27 +01:00
|
|
|
from pr.agents.agent_roles import AgentRole, get_agent_role, list_agent_roles
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
|
|
|
|
|
def test_get_agent_role():
|
2025-11-04 08:09:12 +01:00
|
|
|
role = get_agent_role("coding")
|
2025-11-04 05:17:27 +01:00
|
|
|
assert isinstance(role, AgentRole)
|
2025-11-04 08:09:12 +01:00
|
|
|
assert role.name == "coding"
|
|
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
|
|
|
|
|
def test_list_agent_roles():
|
|
|
|
|
roles = list_agent_roles()
|
|
|
|
|
assert isinstance(roles, dict)
|
|
|
|
|
assert len(roles) > 0
|
2025-11-04 08:09:12 +01:00
|
|
|
assert "coding" in roles
|
|
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
|
|
|
|
|
def test_agent_role():
|
2025-11-04 08:09:12 +01:00
|
|
|
role = AgentRole(
|
|
|
|
|
name="test",
|
|
|
|
|
description="test",
|
|
|
|
|
system_prompt="test",
|
|
|
|
|
allowed_tools=set(),
|
|
|
|
|
specialization_areas=[],
|
|
|
|
|
)
|
|
|
|
|
assert role.name == "test"
|
|
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
|
|
|
|
|
def test_agent_instance():
|
2025-11-04 08:09:12 +01:00
|
|
|
role = get_agent_role("coding")
|
|
|
|
|
instance = AgentInstance(agent_id="test", role=role)
|
|
|
|
|
assert instance.agent_id == "test"
|
2025-11-04 05:17:27 +01:00
|
|
|
assert instance.role == role
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_manager_init():
|
2025-11-04 08:09:12 +01:00
|
|
|
mgr = AgentManager(":memory:", None)
|
2025-11-04 05:17:27 +01:00
|
|
|
assert mgr is not None
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_manager_create_agent():
|
2025-11-04 08:09:12 +01:00
|
|
|
mgr = AgentManager(":memory:", None)
|
|
|
|
|
agent = mgr.create_agent("coding", "test_agent")
|
2025-11-04 05:17:27 +01:00
|
|
|
assert agent is not None
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_manager_get_agent():
|
2025-11-04 08:09:12 +01:00
|
|
|
mgr = AgentManager(":memory:", None)
|
|
|
|
|
mgr.create_agent("coding", "test_agent")
|
|
|
|
|
agent = mgr.get_agent("test_agent")
|
2025-11-04 05:17:27 +01:00
|
|
|
assert isinstance(agent, AgentInstance)
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_manager_remove_agent():
|
2025-11-04 08:09:12 +01:00
|
|
|
mgr = AgentManager(":memory:", None)
|
|
|
|
|
mgr.create_agent("coding", "test_agent")
|
|
|
|
|
mgr.remove_agent("test_agent")
|
|
|
|
|
agent = mgr.get_agent("test_agent")
|
2025-11-04 05:17:27 +01:00
|
|
|
assert agent is None
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_manager_send_agent_message():
|
2025-11-04 08:09:12 +01:00
|
|
|
mgr = AgentManager(":memory:", None)
|
|
|
|
|
mgr.create_agent("coding", "a")
|
|
|
|
|
mgr.create_agent("coding", "b")
|
|
|
|
|
mgr.send_agent_message("a", "b", "test")
|
2025-11-04 05:17:27 +01:00
|
|
|
assert True
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_manager_get_agent_messages():
|
2025-11-04 08:09:12 +01:00
|
|
|
mgr = AgentManager(":memory:", None)
|
|
|
|
|
mgr.create_agent("coding", "test")
|
|
|
|
|
messages = mgr.get_agent_messages("test")
|
2025-11-04 05:17:27 +01:00
|
|
|
assert isinstance(messages, list)
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_manager_get_session_summary():
|
2025-11-04 08:09:12 +01:00
|
|
|
mgr = AgentManager(":memory:", None)
|
2025-11-04 05:17:27 +01:00
|
|
|
summary = mgr.get_session_summary()
|
|
|
|
|
assert isinstance(summary, str)
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_manager_collaborate_agents():
|
2025-11-04 08:09:12 +01:00
|
|
|
mgr = AgentManager(":memory:", None)
|
|
|
|
|
result = mgr.collaborate_agents("orchestrator", "task", ["coding", "research"])
|
2025-11-04 05:17:27 +01:00
|
|
|
assert result is not None
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_manager_execute_agent_task():
|
2025-11-04 08:09:12 +01:00
|
|
|
mgr = AgentManager(":memory:", None)
|
|
|
|
|
mgr.create_agent("coding", "test")
|
|
|
|
|
result = mgr.execute_agent_task("test", "task")
|
2025-11-04 05:17:27 +01:00
|
|
|
assert result is not None
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_manager_clear_session():
|
2025-11-04 08:09:12 +01:00
|
|
|
mgr = AgentManager(":memory:", None)
|
2025-11-04 05:17:27 +01:00
|
|
|
mgr.clear_session()
|
|
|
|
|
assert True
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_message():
|
2025-11-04 08:09:12 +01:00
|
|
|
msg = AgentMessage(
|
|
|
|
|
from_agent="a",
|
|
|
|
|
to_agent="b",
|
|
|
|
|
message_type=MessageType.REQUEST,
|
|
|
|
|
content="test",
|
|
|
|
|
metadata={},
|
|
|
|
|
timestamp=1.0,
|
|
|
|
|
message_id="id",
|
|
|
|
|
)
|
|
|
|
|
assert msg.from_agent == "a"
|
|
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
|
|
|
|
|
def test_agent_message_to_dict():
|
2025-11-04 08:09:12 +01:00
|
|
|
msg = AgentMessage(
|
|
|
|
|
from_agent="a",
|
|
|
|
|
to_agent="b",
|
|
|
|
|
message_type=MessageType.REQUEST,
|
|
|
|
|
content="test",
|
|
|
|
|
metadata={},
|
|
|
|
|
timestamp=1.0,
|
|
|
|
|
message_id="id",
|
|
|
|
|
)
|
2025-11-04 05:17:27 +01:00
|
|
|
d = msg.to_dict()
|
|
|
|
|
assert isinstance(d, dict)
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_message_from_dict():
|
2025-11-04 08:09:12 +01:00
|
|
|
d = {
|
|
|
|
|
"from_agent": "a",
|
|
|
|
|
"to_agent": "b",
|
|
|
|
|
"message_type": "request",
|
|
|
|
|
"content": "test",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"timestamp": 1.0,
|
|
|
|
|
"message_id": "id",
|
|
|
|
|
}
|
2025-11-04 05:17:27 +01:00
|
|
|
msg = AgentMessage.from_dict(d)
|
|
|
|
|
assert isinstance(msg, AgentMessage)
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_communication_bus_init():
|
2025-11-04 08:09:12 +01:00
|
|
|
bus = AgentCommunicationBus(":memory:")
|
2025-11-04 05:17:27 +01:00
|
|
|
assert bus is not None
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_communication_bus_send_message():
|
2025-11-04 08:09:12 +01:00
|
|
|
bus = AgentCommunicationBus(":memory:")
|
|
|
|
|
msg = AgentMessage(
|
|
|
|
|
from_agent="a",
|
|
|
|
|
to_agent="b",
|
|
|
|
|
message_type=MessageType.REQUEST,
|
|
|
|
|
content="test",
|
|
|
|
|
metadata={},
|
|
|
|
|
timestamp=1.0,
|
|
|
|
|
message_id="id",
|
|
|
|
|
)
|
2025-11-04 05:17:27 +01:00
|
|
|
bus.send_message(msg)
|
|
|
|
|
assert True
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_communication_bus_receive_messages():
|
2025-11-04 08:09:12 +01:00
|
|
|
bus = AgentCommunicationBus(":memory:")
|
|
|
|
|
msg = AgentMessage(
|
|
|
|
|
from_agent="a",
|
|
|
|
|
to_agent="b",
|
|
|
|
|
message_type=MessageType.REQUEST,
|
|
|
|
|
content="test",
|
|
|
|
|
metadata={},
|
|
|
|
|
timestamp=1.0,
|
|
|
|
|
message_id="id",
|
|
|
|
|
)
|
2025-11-04 05:17:27 +01:00
|
|
|
bus.send_message(msg)
|
2025-11-04 08:09:12 +01:00
|
|
|
messages = bus.receive_messages("b")
|
2025-11-04 05:17:27 +01:00
|
|
|
assert len(messages) == 1
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_communication_bus_get_conversation_history():
|
2025-11-04 08:09:12 +01:00
|
|
|
bus = AgentCommunicationBus(":memory:")
|
|
|
|
|
msg = AgentMessage(
|
|
|
|
|
from_agent="a",
|
|
|
|
|
to_agent="b",
|
|
|
|
|
message_type=MessageType.REQUEST,
|
|
|
|
|
content="test",
|
|
|
|
|
metadata={},
|
|
|
|
|
timestamp=1.0,
|
|
|
|
|
message_id="id",
|
|
|
|
|
)
|
2025-11-04 05:17:27 +01:00
|
|
|
bus.send_message(msg)
|
2025-11-04 08:09:12 +01:00
|
|
|
history = bus.get_conversation_history("a", "b")
|
2025-11-04 05:17:27 +01:00
|
|
|
assert len(history) == 1
|
|
|
|
|
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 05:17:27 +01:00
|
|
|
def test_agent_communication_bus_mark_as_read():
|
2025-11-04 08:09:12 +01:00
|
|
|
bus = AgentCommunicationBus(":memory:")
|
|
|
|
|
msg = AgentMessage(
|
|
|
|
|
from_agent="a",
|
|
|
|
|
to_agent="b",
|
|
|
|
|
message_type=MessageType.REQUEST,
|
|
|
|
|
content="test",
|
|
|
|
|
metadata={},
|
|
|
|
|
timestamp=1.0,
|
|
|
|
|
message_id="id",
|
|
|
|
|
)
|
2025-11-04 05:17:27 +01:00
|
|
|
bus.send_message(msg)
|
|
|
|
|
bus.mark_as_read(msg.message_id)
|
2025-11-04 08:09:12 +01:00
|
|
|
assert True
|