repository
module wittgenstein_episodic_memory.repository
Pluggable persistence for EpisodicMemoryService (ADR-092).
Consumers that just need the lightweight timeline behavior use the default in-memory repository (unchanged from before this existed). Consumers with their own persistence (e.g. wittgenstein-core's DB-backed Episode table) implement this Protocol and inject it into EpisodicMemoryService.
Classes
-
EpisodeRepository — Storage backend for episodes — implement this to plug in real persistence.
-
InMemoryEpisodeRepository — Default repository — a plain in-process list, no persistence across restarts.
wittgenstein_episodic_memory.repository.EpisodeRepository
class EpisodeRepository()
Bases : Protocol
Storage backend for episodes — implement this to plug in real persistence.
Methods
wittgenstein_episodic_memory.repository.EpisodeRepository.add
method EpisodeRepository.add(episode: Episode) → Episode
Persist an episode, returning the stored representation (id populated).
wittgenstein_episodic_memory.repository.EpisodeRepository.query
method EpisodeRepository.query(query: MemoryQuery) → List[Episode]
Return episodes matching the query, newest first, capped at query.limit.
wittgenstein_episodic_memory.repository.InMemoryEpisodeRepository
class InMemoryEpisodeRepository()
Default repository — a plain in-process list, no persistence across restarts.
This is the pre-ADR-092 behavior of EpisodicMemoryService, extracted so it can be the default, with real persistence as an opt-in injection instead of the only option.
Methods
wittgenstein_episodic_memory.repository.InMemoryEpisodeRepository.add
method InMemoryEpisodeRepository.add(episode: Episode) → Episode
wittgenstein_episodic_memory.repository.InMemoryEpisodeRepository.query
method InMemoryEpisodeRepository.query(query: MemoryQuery) → List[Episode]