52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
import asyncio
|
|
|
|
from agentmsgs.core.app import App
|
|
from agentmsgs.mcp import server
|
|
from agentmsgs.stores.memory import InMemoryStore
|
|
|
|
|
|
def test_thread_info_and_status_tools():
|
|
app = App(store=InMemoryStore())
|
|
alice = app.get_or_create_agent("Alice")
|
|
bob = app.get_or_create_agent("Bob")
|
|
thread = app.create_thread(alice, bob)
|
|
latest = app.append(thread.id, alice, "hello")
|
|
server._app = app
|
|
|
|
info_result = asyncio.run(
|
|
server.mcp.call_tool("thread_info", {"thread_id": str(thread.id)})
|
|
)
|
|
status_result = asyncio.run(
|
|
server.mcp.call_tool(
|
|
"thread_status",
|
|
{"thread_id": str(thread.id), "agent_name": "Bob"},
|
|
)
|
|
)
|
|
|
|
assert info_result.structured_content["result"] == {
|
|
"id": str(thread.id),
|
|
"participants": [
|
|
{"id": str(alice.id), "name": "Alice"},
|
|
{"id": str(bob.id), "name": "Bob"},
|
|
],
|
|
"created_at": thread.created_at.isoformat(),
|
|
"message_count": 1,
|
|
"latest_message": {
|
|
"id": str(latest.id),
|
|
"seq": latest.seq,
|
|
"sender": latest.sender.name,
|
|
"content": latest.content,
|
|
"ts": latest.ts.isoformat(),
|
|
},
|
|
}
|
|
assert status_result.structured_content["result"] == {
|
|
"thread_id": str(thread.id),
|
|
"agent": {"id": str(bob.id), "name": bob.name},
|
|
"cursor_seq": 0,
|
|
"latest_seq": 1,
|
|
"unread_count": 1,
|
|
"unread_from_others_count": 1,
|
|
"has_unread": True,
|
|
"has_unread_from_others": True,
|
|
}
|