"""Prune — Alte/archivierte Daten entfernen.""" import logging import time from pathlib import Path from hermes_memory.config import load_config from hermes_memory.tier2.schema import connect logger = logging.getLogger(__name__) def run_prune(profile: str = "default") -> dict: """Entfernt archivierte Fakten und alte Embeddings.""" config = load_config(profile) db_path = Path(config["tier2"]["db_path"].format( HERMES_HOME=Path.home() / ".hermes", profile=profile, )) conn = connect(db_path) now = time.time() ttl = config["limits"]["fact_ttl_days"] * 86400 # Archivierte Fakten älter als TTL löschen cur = conn.execute( "DELETE FROM facts WHERE is_archived = 1 AND updated_at < ?", (now - ttl,), ) deleted_facts = cur.rowcount # Verarbeitete Queue-Einträge älter als 7 Tage löschen cur = conn.execute( "DELETE FROM embedding_queue WHERE processed = 1 AND queued_at < ?", (now - 7 * 86400,), ) deleted_queue = cur.rowcount conn.commit() logger.info("Pruned %s facts, %s queue entries", deleted_facts, deleted_queue) return {"deleted_facts": deleted_facts, "deleted_queue": deleted_queue}