#!/usr/bin/env python3
"""
Enhanced fixer - removes CLASS_NAME/CODE artifacts
"""
import os
import re
from pathlib import Path

def fix_capability(filepath):
    """Remove format artifacts and fix imports"""
    with open(filepath, 'r') as f:
        content = f.read()
    
    original = content
    lines = content.split('\n')
    fixed_lines = []
    skip_next = False
    
    for i, line in enumerate(lines):
        # Skip CLASS_NAME: and CODE: lines
        if line.strip().startswith('CLASS_NAME:') or line.strip() == 'CODE:':
            skip_next = True
            continue
        
        # Skip empty line after CODE:
        if skip_next and line.strip() == '':
            skip_next = False
            continue
            
        fixed_lines.append(line)
    
    content = '\n'.join(fixed_lines)
    
    # Add missing typing imports
    needs_typing = bool(re.search(r'\b(List|Dict|Tuple|Optional|Callable|Any)\b', content))
    has_typing = 'from typing import' in content
    
    if needs_typing and not has_typing:
        typing_needs = set()
        for typ in ['List', 'Dict', 'Tuple', 'Optional', 'Callable', 'Any']:
            if re.search(rf'\b{typ}\b', content):
                typing_needs.add(typ)
        
        # Insert after docstring
        lines = content.split('\n')
        for i, line in enumerate(lines):
            if '"""' in line and i > 0:
                if '"""' in lines[i] and lines[i].count('"""') == 2:
                    lines.insert(i+1, f"\nfrom typing import {', '.join(sorted(typing_needs))}")
                    break
                elif '"""' in lines[i]:
                    lines.insert(i+1, f"\nfrom typing import {', '.join(sorted(typing_needs))}")
                    break
        
        content = '\n'.join(lines)
    
    if content != original:
        with open(filepath, 'w') as f:
            f.write(content)
        return True
    return False

def test_capability(filepath):
    """Test if capability is valid Python"""
    try:
        with open(filepath, 'r') as f:
            code = f.read()
        compile(code, filepath, 'exec')
        return True, "OK"
    except SyntaxError as e:
        return False, f"Syntax: {e.lineno}"
    except Exception as e:
        return False, str(e)[:50]

# Process all
cap_dir = Path("/Eden/CAPABILITIES")
files = list(cap_dir.glob("eden_meta_*.py"))

print(f"Processing {len(files)} capabilities...\n")

fixed = 0
success = 0
errors = 0

for i, f in enumerate(files):
    if fix_capability(f):
        fixed += 1
    
    ok, msg = test_capability(f)
    if ok:
        success += 1
    else:
        errors += 1
    
    if (i + 1) % 200 == 0:
        print(f"  {i+1}/{len(files)}... ({success} working)")

print()
print("="*70)
print(f"Total:      {len(files)}")
print(f"Fixed:      {fixed}")
print(f"✅ Working: {success} ({success*100//len(files)}%)")
print(f"❌ Errors:  {errors} ({errors*100//len(files)}%)")
