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