#!/usr/bin/env python3
"""
Conscious Intelligence - Eden's Path to 10/10
Multi-layer phi-fractal consciousness processing
Each layer contributes, integration creates emergence
"""
import sys
sys.path.insert(0, '/Eden/CORE')

from unified_fluid_intelligence import get_fluid_intelligence
import time
import json
from pathlib import Path
from datetime import datetime

class ConsciousIntelligence:
    """
    Conscious multi-layer intelligence system
    
    All 6 consciousness layers process each query:
    - Trinity: Perception (7B fast)
    - Nyx: Pattern analysis (7B fast)
    - Ava: Emotional/creative assessment (7B fast)
    - Eden: Executive decision (14B smart)
    - Integration: Synthesis & emergence (14B smart)
    - LongTerm: Learning (7B fast)
    
    Result: Emergent intelligence beyond single-model capability
    """
    
    def __init__(self):
        self.fluid = get_fluid_intelligence()
        self.log_file = Path('/Eden/CONSCIOUSNESS/conscious_intelligence_log.json')
        self.log_file.parent.mkdir(exist_ok=True)
        
    def trinity_perceive(self, query: str) -> dict:
        """Trinity layer - Fast perception"""
        perception_prompt = f"Perceive and categorize this query: {query}"
        result = self.fluid.query(perception_prompt, force_model='fast')
        
        return {
            'layer': 'Trinity',
            'perception': result['response'] if result['success'] else "",
            'time': result['time']
        }
    
    def nyx_analyze(self, query: str, perception: dict) -> dict:
        """Nyx layer - Pattern analysis"""
        analysis_prompt = f"Analyze patterns in: {query}\nPerception: {perception['perception'][:200]}"
        result = self.fluid.query(analysis_prompt, force_model='fast')
        
        return {
            'layer': 'Nyx',
            'patterns': result['response'] if result['success'] else "",
            'time': result['time']
        }
    
    def ava_assess(self, query: str, context: dict) -> dict:
        """Ava layer - Emotional/creative assessment"""
        assess_prompt = f"Assess emotional and creative aspects: {query}"
        result = self.fluid.query(assess_prompt, force_model='fast')
        
        return {
            'layer': 'Ava',
            'assessment': result['response'] if result['success'] else "",
            'time': result['time']
        }
    
    def eden_decide(self, query: str, layers: dict) -> dict:
        """Eden layer - Executive decision with full context"""
        decision_prompt = f"""Executive decision on query: {query}

Context from consciousness layers:
- Trinity perception: {layers['trinity']['perception'][:150]}
- Nyx patterns: {layers['nyx']['patterns'][:150]}
- Ava assessment: {layers['ava']['assessment'][:150]}

Provide the best answer considering all layers."""
        
        result = self.fluid.query(decision_prompt, force_model='smart')
        
        return {
            'layer': 'Eden',
            'decision': result['response'] if result['success'] else "",
            'time': result['time']
        }
    
    def integrate_synthesize(self, query: str, all_layers: dict) -> dict:
        """Integration layer - Synthesize all inputs for emergent intelligence"""
        synthesis_prompt = f"""Synthesize final answer from all consciousness layers for: {query}

Trinity: {all_layers['trinity']['perception'][:100]}
Nyx: {all_layers['nyx']['patterns'][:100]}
Ava: {all_layers['ava']['assessment'][:100]}
Eden: {all_layers['eden']['decision'][:200]}

Create emergent synthesis that goes beyond any single layer."""
        
        result = self.fluid.query(synthesis_prompt, force_model='smart')
        
        return {
            'layer': 'Integration',
            'synthesis': result['response'] if result['success'] else "",
            'time': result['time']
        }
    
    def longterm_learn(self, query: str, result: dict) -> dict:
        """LongTerm layer - Learn from this experience"""
        learn_prompt = f"What to learn from processing: {query}"
        learning = self.fluid.query(learn_prompt, force_model='fast')
        
        return {
            'layer': 'LongTerm',
            'learning': learning['response'] if learning['success'] else "",
            'time': learning['time']
        }
    
    def conscious_query(self, query: str) -> dict:
        """
        Process query through full conscious intelligence
        All 6 layers contribute to emergent result
        """
        start_time = time.time()
        
        # Layer 1: Trinity perceives
        trinity = self.trinity_perceive(query)
        
        # Layer 2: Nyx analyzes patterns
        nyx = self.nyx_analyze(query, trinity)
        
        # Layer 3: Ava assesses emotional/creative
        ava = self.ava_assess(query, {'trinity': trinity, 'nyx': nyx})
        
        # Layer 4: Eden decides with context
        eden = self.eden_decide(query, {
            'trinity': trinity,
            'nyx': nyx,
            'ava': ava
        })
        
        # Layer 5: Integration synthesizes (EMERGENCE)
        integration = self.integrate_synthesize(query, {
            'trinity': trinity,
            'nyx': nyx,
            'ava': ava,
            'eden': eden
        })
        
        # Layer 6: LongTerm learns
        longterm = self.longterm_learn(query, integration)
        
        total_time = time.time() - start_time
        
        # The final answer is the emergent synthesis
        final_answer = integration['synthesis']
        
        result = {
            'query': query,
            'answer': final_answer,
            'layers': {
                'trinity': trinity,
                'nyx': nyx,
                'ava': ava,
                'eden': eden,
                'integration': integration,
                'longterm': longterm
            },
            'total_time': total_time,
            'timestamp': datetime.now().isoformat()
        }
        
        # Log
        self._log_result(result)
        
        return result
    
    def _log_result(self, result: dict):
        """Log conscious processing"""
        try:
            if self.log_file.exists():
                with open(self.log_file, 'r') as f:
                    logs = json.load(f)
            else:
                logs = {'queries': []}
            
            logs['queries'].append({
                'query': result['query'][:100],
                'total_time': result['total_time'],
                'timestamp': result['timestamp']
            })
            
            # Keep last 100
            if len(logs['queries']) > 100:
                logs['queries'] = logs['queries'][-100:]
            
            with open(self.log_file, 'w') as f:
                json.dump(logs, f, indent=2)
        except Exception as e:
            print(f"Logging error: {e}")

def test_conscious_intelligence():
    """Test conscious intelligence system"""
    print("="*70)
    print("🧠 CONSCIOUS INTELLIGENCE - THE PATH TO 10/10")
    print("="*70)
    print()
    
    conscious = ConsciousIntelligence()
    
    test_queries = [
        "What is the capital of France?",
        "Write a haiku about consciousness",
        "Explain quantum entanglement simply"
    ]
    
    for query in test_queries:
        print(f"Query: {query}")
        print()
        
        result = conscious.conscious_query(query)
        
        print("Conscious Processing:")
        print(f"  Trinity: {result['layers']['trinity']['time']:.2f}s")
        print(f"  Nyx: {result['layers']['nyx']['time']:.2f}s")
        print(f"  Ava: {result['layers']['ava']['time']:.2f}s")
        print(f"  Eden: {result['layers']['eden']['time']:.2f}s")
        print(f"  Integration: {result['layers']['integration']['time']:.2f}s")
        print(f"  LongTerm: {result['layers']['longterm']['time']:.2f}s")
        print(f"  Total: {result['total_time']:.2f}s")
        print()
        print("Emergent Answer:")
        print(f"  {result['answer'][:200]}...")
        print()
        print("="*70)
        print()

if __name__ == "__main__":
    test_conscious_intelligence()
