test_event_agent.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import json
  2. import pytest
  3. from agent_lab.application.event_agent import EventAgent
  4. from agent_lab.application.tools import ToolDefinition, ToolRegistry
  5. from agent_lab.domain.events import ToolCallEvent
  6. @pytest.mark.asyncio
  7. async def test_event_agent_executes_enabled_tool_as_tool_reply_message():
  8. agent = EventAgent(enabled_tools=["handoff_note"])
  9. event = ToolCallEvent(
  10. id="call_1",
  11. name="handoff_note",
  12. arguments={"message": "inspect this event"},
  13. raw_arguments='{"message":"inspect this event"}',
  14. )
  15. reply = await agent.handle(event)
  16. assert reply.role == "tool"
  17. assert reply.tool_call_id == "call_1"
  18. assert reply.name == "handoff_note"
  19. assert json.loads(reply.content) == {
  20. "tool": "handoff_note",
  21. "message": "inspect this event",
  22. }
  23. @pytest.mark.asyncio
  24. async def test_event_agent_returns_registry_errors_for_disabled_and_unknown_tools():
  25. registry = ToolRegistry(
  26. [
  27. ToolDefinition(
  28. name="handoff_note",
  29. description="Send a note to the event agent.",
  30. parameters={"type": "object"},
  31. handler=lambda event: {"tool": event.name, "message": "handled"},
  32. )
  33. ]
  34. )
  35. disabled_reply = await EventAgent(
  36. enabled_tools=[],
  37. registry=registry,
  38. ).handle(
  39. ToolCallEvent(
  40. id="call_1",
  41. name="handoff_note",
  42. arguments={"message": "inspect this event"},
  43. raw_arguments='{"message":"inspect this event"}',
  44. )
  45. )
  46. unknown_reply = await EventAgent(
  47. enabled_tools=["missing_tool"],
  48. registry=registry,
  49. ).handle(
  50. ToolCallEvent(
  51. id="call_2",
  52. name="missing_tool",
  53. arguments={},
  54. raw_arguments="{}",
  55. )
  56. )
  57. assert json.loads(disabled_reply.content) == {
  58. "tool": "handoff_note",
  59. "error": "tool disabled",
  60. }
  61. assert json.loads(unknown_reply.content) == {
  62. "tool": "missing_tool",
  63. "error": "unknown tool",
  64. }