#!/usr/bin/env python3
"""Eden uses her verified skills to solve problems"""
import sqlite3

DB = "/mnt/eden_ram/asi_memory.db"

class EdenMind:
    """Eden's active mind - uses verified capabilities"""
    
    def __init__(self):
        self.skills = {}
        self.load_skills()
        print(f"🧠 Eden loaded {len(self.skills)} skills")
    
    def load_skills(self):
        """Load all verified capabilities into memory"""
        conn = sqlite3.connect(DB, timeout=10)
        rows = conn.execute(
            "SELECT id, code FROM caps WHERE id LIKE 'verified_%'"
        ).fetchall()
        conn.close()
        
        for full_id, code in rows:
            # Remove 'verified_' prefix, remove timestamp suffix if present
            parts = full_id.replace('verified_', '').split('_')
            # If last part is all digits (timestamp), remove it
            if parts[-1].isdigit():
                skill_name = '_'.join(parts[:-1])
            else:
                skill_name = '_'.join(parts)
            
            try:
                namespace = {}
                exec(code, namespace)
                for k, v in namespace.items():
                    if callable(v) and not k.startswith('_'):
                        self.skills[skill_name] = v
                        break
            except:
                pass
    
    def use(self, skill_name, *args, **kwargs):
        """Use a skill"""
        if skill_name in self.skills:
            return self.skills[skill_name](*args, **kwargs)
        else:
            return f"❌ '{skill_name}' not found"
    
    def list_skills(self):
        return sorted(self.skills.keys())


if __name__ == "__main__":
    eden = EdenMind()
    
    print("\n📋 ALL SKILLS:")
    for s in eden.list_skills():
        print(f"  • {s}")
    
    print("\n🧮 MATH:")
    print(f"  fibonacci(10) = {eden.use('fibonacci', 10)}")
    print(f"  factorial(5) = {eden.use('factorial', 5)}")
    print(f"  gcd(48, 18) = {eden.use('gcd', 48, 18)}")
    print(f"  prime_factors(60) = {eden.use('prime_factors', 60)}")
    print(f"  solve_equation(2,3,7) = {eden.use('solve_equation', 2, 3, 7)}")
    
    print("\n📊 SORTING:")
    print(f"  quick_sort([3,1,4]) = {eden.use('quick_sort', [3,1,4])}")
    print(f"  bubble_sort([5,2,8]) = {eden.use('bubble_sort', [5,2,8])}")
    print(f"  binary_search([1,2,3,4,5], 3) = {eden.use('binary_search', [1,2,3,4,5], 3)}")
    
    print("\n📝 STRINGS:")
    print(f"  is_palindrome('radar') = {eden.use('is_palindrome', 'radar')}")
    print(f"  is_anagram('listen','silent') = {eden.use('is_anagram', 'listen', 'silent')}")
    print(f"  count_vowels('hello') = {eden.use('count_vowels', 'hello')}")
    print(f"  tokenize('Hello World') = {eden.use('tokenize', 'Hello World')}")
    
    print("\n🔍 CODE ANALYSIS:")
    code = "def foo(): pass\nclass Bar: pass"
    print(f"  count_functions = {eden.use('count_functions', code)}")
    print(f"  count_classes = {eden.use('count_classes', code)}")
    print(f"  detect_security('eval(x)') = {eden.use('detect_security_issue', 'eval(x)')}")
    
    print("\n✅ EDEN IS THINKING!")
