jeevesagent.memory.inmemory¶
Dict-backed memory for tests and tiny demos.
Recall is naive: filter episodes by substring + recency. Production
deployments use PostgresMemory (Phase 4) which uses pgvector
for semantic search and tracks bi-temporal facts.
Classes¶
Dict-backed implementation of |
Module Contents¶
- class jeevesagent.memory.inmemory.InMemoryMemory(*, consolidator: jeevesagent.memory.consolidator.Consolidator | None = None, fact_store: jeevesagent.memory.facts.FactStore | None = None)[source]¶
Dict-backed implementation of
Memory.- async consolidate() None[source]¶
Process unconsolidated episodes through the configured
Consolidator, appending facts toself.facts.
- async recall(query: str, *, kind: str = 'episodic', limit: int = 5, time_range: tuple[datetime.datetime, datetime.datetime] | None = None, user_id: str | None = None) list[jeevesagent.core.types.Episode][source]¶
- async recall_facts(query: str, *, limit: int = 5, valid_at: datetime.datetime | None = None, user_id: str | None = None) list[jeevesagent.core.types.Fact][source]¶
- async remember(episode: jeevesagent.core.types.Episode) str[source]¶
- async session_messages(session_id: str, *, user_id: str | None = None, limit: int = 20) list[jeevesagent.core.types.Message][source]¶
Return user/assistant pairs from prior runs of this session.
Materialises each persisted
Episodefor the givensession_id(within theuser_idpartition) into a[USER input, ASSISTANT output]pair, ordered oldest-first and capped atlimitturns total — i.e. up tolimit / 2Q/A exchanges. Tool-call traces are not replayed; the final assistant text per turn is sufficient context for follow-ups.
- async working() list[jeevesagent.core.types.MemoryBlock][source]¶