""" Facts handler. Handles requests to query factual memory. """ import json from core.logger import setup_logger logger = setup_logger('facts_handler', service_name='memory_service') class FactsHandler: """Handles facts query requests""" def __init__(self, facts_ops): self.facts_ops = facts_ops async def handle(self, msg) -> None: """Handle facts requests - search factual memory""" try: payload = json.loads(msg.data.decode()) if msg.data else {} query = payload.get('query', '') limit = payload.get('limit', 5) category = payload.get('category') identity_id = payload.get('identity_id') logger.debug(f"[μ] Facts request: query='{query}', category={category}, limit={limit}") facts = self.facts_ops.query( query=query, limit=limit, category=category, identity_id=identity_id ) response = { "status": "success", "facts": facts, "count": len(facts) } await msg.respond(json.dumps(response).encode()) except Exception as e: logger.exception(f"[μ] Failed to retrieve facts: {e}") error_response = {"status": "error", "error": str(e)} await msg.respond(json.dumps(error_response).encode())