from typing import Protocol from agentmsgs.core.store import ( AgentStore, CursorStore, MessageStore, Store, ThreadStore, ) def test_store_composes_domain_protocols(): assert issubclass(Store, Protocol) assert AgentStore in Store.__mro__ assert ThreadStore in Store.__mro__ assert MessageStore in Store.__mro__ assert CursorStore in Store.__mro__ for protocol, methods in { AgentStore: [ "get_or_create_agent", "get_agent_by_name", "get_agent_by_id", "create_agent", "delete_agent", "list_agents", ], ThreadStore: [ "create_thread", "get_thread", "find_threads", "add_participant", "remove_participant", "delete_thread", ], MessageStore: ["append_message", "list_messages"], CursorStore: ["get_cursor", "set_cursor"], }.items(): for method in methods: assert hasattr(protocol, method), f"missing {method} from {protocol.__name__}"