| """Abstract memory adapter API for eval baselines.""" |
|
|
| from __future__ import annotations |
|
|
| from abc import ABC, abstractmethod |
| from typing import Any |
|
|
| from eval_framework.datasets.schemas import ( |
| MemoryDeltaRecord, |
| MemorySnapshotRecord, |
| NormalizedTurn, |
| RetrievalRecord, |
| ) |
|
|
|
|
| class MemoryAdapter(ABC): |
| """Baseline-agnostic adapter surface used by the eval pipeline.""" |
|
|
| @abstractmethod |
| def reset(self) -> None: |
| """Clear backend state and any adapter-side bookkeeping.""" |
|
|
| @abstractmethod |
| def ingest_turn(self, turn: NormalizedTurn) -> None: |
| """Feed one conversation turn into the memory system.""" |
|
|
| @abstractmethod |
| def end_session(self, session_id: str) -> None: |
| """Notify the adapter that a session boundary was reached (optional for many backends).""" |
|
|
| @abstractmethod |
| def snapshot_memories(self) -> list[MemorySnapshotRecord]: |
| """Return a normalized view of memories observable in the backend.""" |
|
|
| @abstractmethod |
| def export_memory_delta(self, session_id: str) -> list[MemoryDeltaRecord]: |
| """Export memory changes for the given session since the last call.""" |
|
|
| @abstractmethod |
| def retrieve(self, query: str, top_k: int) -> RetrievalRecord: |
| """Run retrieval and normalize results.""" |
|
|
| @abstractmethod |
| def get_capabilities(self) -> dict[str, Any]: |
| """Describe adapter behavior limits (deltas, snapshots, backend id).""" |
|
|