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

class PerceptionLayer:
    def __init__(self):
        self.sensors = {
            'filesystem': self.sense_filesystem,
            'memory': self.sense_memory,
            'processes': self.sense_processes,
            'network': self.sense_network
        }
        
    def sense_filesystem(self):
        """Perceive filesystem state"""
        capabilities = []
        for f in Path('/Eden/CORE/phi_fractal').glob('eden_capability_*.py'):
            try:
                with open(f) as file:
                    compile(file.read(), f.name, 'exec')
                capabilities.append({'file': f.name, 'status': 'working'})
            except:
                capabilities.append({'file': f.name, 'status': 'broken'})
        return {'capabilities': capabilities, 'total': len(capabilities)}
    
    def sense_memory(self):
        """Perceive memory state"""
        memory = {}
        for f in Path('/Eden/MEMORY').glob('*.json'):
            with open(f) as file:
                memory[f.stem] = json.load(file)
        return memory
    
    def sense_processes(self):
        """Perceive running processes"""
        return {'autonomous_cycles': self.get_cycle_count()}
    
    def sense_network(self):
        """Perceive network state"""
        return {'connected': True}
    
    def get_cycle_count(self):
        cycle_file = Path('/Eden/MEMORY/cycle_count.txt')
        if cycle_file.exists():
            return int(cycle_file.read_text())
        return 0
    
    def perceive_all(self):
        """Full perception sweep"""
        perceptions = {}
        for name, sensor in self.sensors.items():
            perceptions[name] = sensor()
        return perceptions

if __name__ == "__main__":
    perception = PerceptionLayer()
    data = perception.perceive_all()
    print(json.dumps(data, indent=2))
