#!/usr/bin/env python3
import json
from pathlib import Path
from datetime import datetime

class MemoryLayer:
    def __init__(self):
        self.memory_dir = Path('/Eden/MEMORY')
        self.memory_dir.mkdir(exist_ok=True)
        
        self.working_memory = {}
        self.episodic_memory = []
        self.semantic_memory = {}
        
    def store_episode(self, event):
        """Store episodic memory"""
        episode = {
            'timestamp': str(datetime.now()),
            'event': event
        }
        self.episodic_memory.append(episode)
        
        # Save to disk
        episodes_file = self.memory_dir / 'episodes.json'
        episodes = []
        if episodes_file.exists():
            with open(episodes_file) as f:
                episodes = json.load(f)
        episodes.append(episode)
        
        # Keep last 1000 episodes
        episodes = episodes[-1000:]
        
        with open(episodes_file, 'w') as f:
            json.dump(episodes, f, indent=2)
    
    def store_semantic(self, key, value):
        """Store semantic memory (facts)"""
        self.semantic_memory[key] = value
        
        semantic_file = self.memory_dir / 'semantic.json'
        data = {}
        if semantic_file.exists():
            with open(semantic_file) as f:
                data = json.load(f)
        
        data[key] = value
        
        with open(semantic_file, 'w') as f:
            json.dump(data, f, indent=2)
    
    def recall_episodes(self, query=None, limit=10):
        """Recall episodic memories"""
        episodes_file = self.memory_dir / 'episodes.json'
        if not episodes_file.exists():
            return []
        
        with open(episodes_file) as f:
            episodes = json.load(f)
        
        if query:
            # Simple filtering
            episodes = [e for e in episodes if query in str(e)]
        
        return episodes[-limit:]
    
    def recall_semantic(self, key):
        """Recall semantic memory"""
        semantic_file = self.memory_dir / 'semantic.json'
        if not semantic_file.exists():
            return None
        
        with open(semantic_file) as f:
            data = json.load(f)
        
        return data.get(key)

if __name__ == "__main__":
    memory = MemoryLayer()
    print("Memory layer initialized")
