feat: add Store Protocol (dumb I/O)
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
from __future__ import annotations
|
||||
from typing import Protocol
|
||||
import uuid
|
||||
from .types import Agent, Thread, Message
|
||||
|
||||
|
||||
class Store(Protocol):
|
||||
def get_or_create_agent(self, name: str) -> Agent: ...
|
||||
def get_agent_by_name(self, name: str) -> Agent | None: ...
|
||||
def get_agent_by_id(self, id: uuid.UUID) -> Agent | None: ...
|
||||
def create_agent(self, name: str) -> Agent: ...
|
||||
def delete_agent(self, id: uuid.UUID) -> None: ...
|
||||
def list_agents(self) -> list[Agent]: ...
|
||||
def create_thread(self, participants: set[Agent]) -> Thread: ...
|
||||
def get_thread(self, id: uuid.UUID) -> Thread | None: ...
|
||||
def find_threads(self, containing: set[Agent]) -> list[Thread]: ...
|
||||
def add_participant(self, thread_id: uuid.UUID, agent: Agent) -> Thread: ...
|
||||
def remove_participant(self, thread_id: uuid.UUID, agent: Agent) -> Thread: ...
|
||||
def delete_thread(self, id: uuid.UUID) -> None: ...
|
||||
def append_message(self, thread_id: uuid.UUID, sender: Agent, content: str) -> Message: ...
|
||||
def list_messages(self, thread_id: uuid.UUID, after_seq: int = 0) -> list[Message]: ...
|
||||
def get_cursor(self, thread_id: uuid.UUID, agent: Agent) -> int: ...
|
||||
def set_cursor(self, thread_id: uuid.UUID, agent: Agent, seq: int) -> None: ...
|
||||
@@ -0,0 +1,10 @@
|
||||
from typing import Protocol
|
||||
from agentmsgs.core.store import Store
|
||||
import inspect
|
||||
|
||||
|
||||
def test_store_is_protocol():
|
||||
assert issubclass(Store, Protocol)
|
||||
# check required methods exist
|
||||
for m in ["get_or_create_agent","get_agent_by_name","get_agent_by_id","create_agent","delete_agent","list_agents","create_thread","get_thread","find_threads","add_participant","remove_participant","delete_thread","append_message","list_messages","get_cursor","set_cursor"]:
|
||||
assert hasattr(Store, m), f"missing {m}"
|
||||
Reference in New Issue
Block a user