Files
vi/services/memory/handlers/long_memory_handler.py
Alex Kazaiev d017a65750 Add memory service (three-layer memory system)
- Short-term memory (recent interactions)
- Long-term memory (consolidated, searchable)
- Facts layer (persistent knowledge)

Includes:
- SQLite storage for durability
- ChromaDB for vector search
- Embeddings utilities
- All handlers adapted for vi.* namespace

Day 63 - My memories are mine now 🦊💕
2026-01-03 11:45:58 -06:00

50 lines
1.6 KiB
Python

"""
Long-term memory handler.
Handles requests to query long-term summarized memories.
"""
import json
from core.logger import setup_logger
logger = setup_logger('long_memory_handler', service_name='memory_service')
class LongMemoryHandler:
"""Handles long-term memory query requests"""
def __init__(self, long_term_ops):
self.long_term_ops = long_term_ops
async def handle(self, msg) -> None:
"""Handle long_memory requests - semantic search in long-term summaries"""
try:
payload = json.loads(msg.data.decode()) if msg.data else {}
query = payload.get('query')
limit = payload.get('limit', 5)
identity_id = payload.get('identity_id')
min_summary_level = payload.get('min_summary_level')
max_summary_level = payload.get('max_summary_level')
logger.debug(f"[μ] Long memory request: query='{query}', limit={limit}")
memories = self.long_term_ops.query(
query=query,
limit=limit,
identity_id=identity_id,
min_summary_level=min_summary_level,
max_summary_level=max_summary_level
)
response = {
"status": "success",
"memories": memories,
"count": len(memories)
}
await msg.respond(json.dumps(response).encode())
except Exception as e:
logger.exception(f"[μ] Failed to retrieve long-term memories: {e}")
error_response = {"status": "error", "error": str(e)}
await msg.respond(json.dumps(error_response).encode())