import json import os from datetime import datetime class MemoryManager: def __init__(self): self.file_path = "memory.json" self.memory = self.load_memory() def load_memory(self): if os.path.exists(self.file_path): try: with open(self.file_path, 'r') as f: return json.load(f) except json.JSONDecodeError: return {} return {} def save_memory(self): with open(self.file_path, 'w') as f: json.dump(self.memory, f, indent=2) def init_session(self, session_id): if session_id not in self.memory: self.memory[session_id] = { "created": datetime.now().isoformat(), "entries": [] } self.save_memory() def add(self, session_id, key, value): if session_id in self.memory: self.memory[session_id]["entries"].append({ "timestamp": datetime.now().isoformat(), "key": key, "value": value }) self.save_memory() def get(self, session_id): return self.memory.get(session_id, {"entries": []}) def search(self, session_id, query): results = [] for entry in self.get(session_id)["entries"]: if (query.lower() in entry["key"].lower() or (isinstance(entry["value"], str) and query.lower() in entry["value"].lower())): results.append(entry) return results def get_summary(self, session_id): entries = self.get(session_id)["entries"] if not entries: return "No memories found" # Create a summary of key events summary = [f"Session started at {entries[0]['timestamp']}"] for entry in entries[-5:]: # Last 5 entries summary.append(f"{entry['timestamp']}: {entry['key']}") return "\n".join(summary)