feat: add Store Protocol (dumb I/O)

This commit is contained in:
lda
2026-09-01 01:35:03 +07:00 Verified
parent f68290fc10
commit 44b71e7849
2 changed files with 33 additions and 0 deletions
+23
View File
@@ -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: ...
+10
View File
@@ -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}"