PMS Sync
Deploy 000b308 (flattened for HF Spaces)
4577459
Raw
History Blame Contribute Delete
1.21 kB
"""Memory system evaluation helpers."""
from __future__ import annotations
from typing import Any
from plane_mode_scholar.storage.sqlite_store import SQLiteStore
def evaluate_memory_health(store: SQLiteStore | None = None) -> dict[str, Any]:
store = store or SQLiteStore()
active = store.list_memories(status="active")
archived = store.list_memories(status="archived")
expired = store.list_memories(status="expired")
canonical_forms = [m.canonical_form for m in active if m.canonical_form]
duplicate_rate = 1 - (len(set(canonical_forms)) / len(canonical_forms)) if canonical_forms else 0.0
stale = [m for m in active if m.confidence < 0.4]
stale_rate = len(stale) / len(active) if active else 0.0
return {
"active_count": len(active),
"archived_count": len(archived),
"expired_count": len(expired),
"duplicate_rate": round(duplicate_rate, 3),
"stale_rate": round(stale_rate, 3),
"type_distribution": _type_distribution(active),
}
def _type_distribution(memories: list) -> dict[str, int]:
dist: dict[str, int] = {}
for m in memories:
dist[m.type.value] = dist.get(m.type.value, 0) + 1
return dist