simbiot-harness/venv/lib/python3.12/site-packages/strands/session/session_repository.py
Simbiot Harness b60439152b Simbiot Harness v0.1: тактовая лестница на Strands + CQRS/ES-спина
- harness/es.py: append-only event store + проекции (образец — кооп-портал)
- harness/levels.py: уровни 1с/1м/1ч/1д, контекст ∝ масштабу
- harness/scheduler.py: уровневые потоки, идемпотентные тики, absorbed-стабы
- harness/isolated_runner.py + _llm_worker.py: LLM-тик в сабпроцессе
  (глобальный asyncio-рантайм Strands не переживает 2+ create_harness)
- cli.py: init/task/tasks/status/events + requeue (написан самим минутным агентом)
- 9router: отдельный ключ sk-simbiot, модель auto (glm-5.3 первым)
2026-09-29 15:28:50 +00:00

66 lines
2.7 KiB
Python

"""Session repository interface for agent session management."""
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING, Any
from ..types.session import Session, SessionAgent, SessionMessage
if TYPE_CHECKING:
from ..multiagent import MultiAgentBase
class SessionRepository(ABC):
"""Abstract repository for creating, reading, and updating Sessions, AgentSessions, and AgentMessages."""
@abstractmethod
def create_session(self, session: Session, **kwargs: Any) -> Session:
"""Create a new Session."""
@abstractmethod
def read_session(self, session_id: str, **kwargs: Any) -> Session | None:
"""Read a Session."""
@abstractmethod
def create_agent(self, session_id: str, session_agent: SessionAgent, **kwargs: Any) -> None:
"""Create a new Agent in a Session."""
@abstractmethod
def read_agent(self, session_id: str, agent_id: str, **kwargs: Any) -> SessionAgent | None:
"""Read an Agent."""
@abstractmethod
def update_agent(self, session_id: str, session_agent: SessionAgent, **kwargs: Any) -> None:
"""Update an Agent."""
@abstractmethod
def create_message(self, session_id: str, agent_id: str, session_message: SessionMessage, **kwargs: Any) -> None:
"""Create a new Message for the Agent."""
@abstractmethod
def read_message(self, session_id: str, agent_id: str, message_id: int, **kwargs: Any) -> SessionMessage | None:
"""Read a Message."""
@abstractmethod
def update_message(self, session_id: str, agent_id: str, session_message: SessionMessage, **kwargs: Any) -> None:
"""Update a Message.
A message is usually only updated when some content is redacted due to a guardrail.
"""
@abstractmethod
def list_messages(
self, session_id: str, agent_id: str, limit: int | None = None, offset: int = 0, **kwargs: Any
) -> list[SessionMessage]:
"""List Messages from an Agent with pagination."""
def create_multi_agent(self, session_id: str, multi_agent: "MultiAgentBase", **kwargs: Any) -> None:
"""Create a new MultiAgent state for the Session."""
raise NotImplementedError("MultiAgent is not implemented for this repository")
def read_multi_agent(self, session_id: str, multi_agent_id: str, **kwargs: Any) -> dict[str, Any] | None:
"""Read the MultiAgent state for the Session."""
raise NotImplementedError("MultiAgent is not implemented for this repository")
def update_multi_agent(self, session_id: str, multi_agent: "MultiAgentBase", **kwargs: Any) -> None:
"""Update the MultiAgent state for the Session."""
raise NotImplementedError("MultiAgent is not implemented for this repository")