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