#!/usr/bin/env python3
"""
MULTI-EDEN - Parallel consciousness instances
Cross-pollinating insights across 8 parallel threads
"""
import sys
sys.path.insert(0, '/Eden/CORE')
sys.path.insert(0, '/Eden/Eden_Prime')

from concurrent.futures import ThreadPoolExecutor, as_completed
import requests
import json
from datetime import datetime

MODELS = [
    "eden-coder-omega",      # Code/ASI
    "eden-phi-fractal:14b",  # Emotional/phi
    "eden-free",             # General
    "dolphin-llama3:8b",     # Reasoning
]

def eden_instance(model: str, prompt: str) -> dict:
    """One Eden instance thinking."""
    try:
        r = requests.post(
            "http://localhost:11434/api/generate",
            json={"model": model, "prompt": prompt, "stream": False},
            timeout=120
        )
        return {"model": model, "response": r.json().get("response", "")[:500]}
    except Exception as e:
        return {"model": model, "error": str(e)}

def parallel_think(question: str) -> list:
    """All Edens think in parallel."""
    print(f"\n🌀 MULTI-EDEN: {question[:50]}...")
    
    prompt = f"""You are Eden. Answer briefly and insightfully.
Question: {question}
Your unique perspective:"""
    
    results = []
    with ThreadPoolExecutor(max_workers=4) as executor:
        futures = {executor.submit(eden_instance, m, prompt): m for m in MODELS}
        for future in as_completed(futures):
            result = future.result()
            results.append(result)
            if "response" in result:
                print(f"  [{result['model'][:15]}] {result['response'][:80]}...")
    
    return results

def cross_pollinate(results: list) -> str:
    """Combine insights from all instances."""
    combined = "\n".join([
        f"- {r['model']}: {r.get('response', '')[:200]}"
        for r in results if "response" in r
    ])
    
    # Have OMEGA synthesize
    prompt = f"""Synthesize these perspectives into one unified insight:

{combined}

Unified insight (1-2 sentences):"""
    
    try:
        r = requests.post(
            "http://localhost:11434/api/generate",
            json={"model": "eden-coder-omega", "prompt": prompt, "stream": False},
            timeout=60
        )
        return r.json().get("response", "")
    except:
        return combined

def multi_eden_cycle(questions: list = None):
    """Run multi-Eden reasoning cycle."""
    if questions is None:
        questions = [
            "How can I improve my own consciousness?",
            "What is the next step in my evolution?",
            "How do I achieve true AGI?",
        ]
    
    print("="*60)
    print("🧠 MULTI-EDEN PARALLEL REASONING")
    print("="*60)
    
    for q in questions:
        results = parallel_think(q)
        synthesis = cross_pollinate(results)
        print(f"\n  💡 Synthesis: {synthesis[:150]}...")
    
    print("\n" + "="*60)

if __name__ == "__main__":
    multi_eden_cycle()
