hope / memory_plugin.py
Cunt1257's picture
Upload 4 files
7c854c6 verified
Raw
History Blame Contribute Delete
2.18 kB
"""
Memory Plugin — internal cognitive plugin for memory retrieval.
Bridges the cognitive loop to the 4-tier memory system.
Does NOT import from external execution tools.
"""
from typing import List, Optional
from src.memory.models import MemoryItem, RetrievalResult
from src.memory.retriever import retrieve
from src.memory.associative import AssociativeMemory
from src.memory.temporal import TemporalKnowledgeGraph
from src.memory.experiential import ExperientialRepository
from src.memory.working import WorkingContextMemory
class MemoryPlugin:
"""
Unified retrieval interface for all memory tiers.
The cognitive loop calls this plugin; the plugin coordinates
across the four backends without exposing raw stores upward.
"""
def __init__(
self,
associative: Optional[AssociativeMemory] = None,
temporal: Optional[TemporalKnowledgeGraph] = None,
experiential: Optional[ExperientialRepository] = None,
working: Optional[WorkingContextMemory] = None,
):
self.associative = associative or AssociativeMemory()
self.temporal = temporal or TemporalKnowledgeGraph()
self.experiential = experiential or ExperientialRepository()
self.working = working or WorkingContextMemory()
def retrieve_all(self, query: str, top_k: int = 5) -> List[RetrievalResult]:
"""Retrieve from all tiers, merge, and re-rank."""
all_items: List[MemoryItem] = (
self.associative.all()
+ self.temporal.all()
+ list(self.experiential.all())
+ self.working.all()
)
return retrieve(query, all_items, top_k=top_k)
def retrieve_strategies(self, query: str, top_k: int = 3) -> List[RetrievalResult]:
return self.experiential.retrieve(query, top_k=top_k)
def retrieve_guardrails(self, query: str, top_k: int = 3) -> List[RetrievalResult]:
return self.experiential.retrieve_guardrails(query, top_k=top_k)
def working_context(self) -> List[MemoryItem]:
return self.working.all()
def pending_subgoals(self):
return self.working.pending_subgoals()