#!/usr/bin/env python3
"""
Fix Eden's infinite loop by making the implementation phase actually execute code
"""

def fix_agent_file():
    filepath = '/Eden/CORE/multi_agent_v3_agi.py'
    
    print(f"Reading {filepath}...")
    with open(filepath, 'r') as f:
        lines = f.readlines()
    
    output = []
    i = 0
    fixed = False
    
    while i < len(lines):
        line = lines[i]
        
        # Find the implementation action
        if "elif action == 'implement_agi_feature':" in line:
            fixed = True
            print("Found implementation action, replacing...")
            
            # Write the new implementation
            output.append(line)  # Keep the elif
            output.append("            print(f\"\\n{'='*60}\")\n")
            output.append("            print(f\"⚙️ {self.agent_name}: IMPLEMENTING AGI IMPROVEMENTS\")\n")
            output.append("            print(f\"{'='*60}\")\n")
            output.append("            \n")
            output.append("            # Get designs\n")
            output.append("            designs = self.meta_project.designs.get('improvement_plans')\n")
            output.append("            \n")
            output.append("            if not designs:\n")
            output.append("                print(\"   ⚠️  Need designs first...\")\n")
            output.append("                return False\n")
            output.append("            \n")
            output.append("            impl = self.meta_project.generate_implementation_plan(designs)\n")
            output.append("            \n")
            output.append("            print(f\"\\n✅ Implementation plan:\")\n")
            output.append("            print(f\"   Phases: {len(impl['phases'])}\")\n")
            output.append("            \n")
            output.append("            # ACTUALLY EXECUTE THE PLAN (not just broadcast it)\n")
            output.append("            import time\n")
            output.append("            executed = 0\n")
            output.append("            \n")
            output.append("            for i, phase in enumerate(impl['phases'], 1):\n")
            output.append("                print(f\"\\n   🔨 Executing Phase {i}: {phase['improvement']}\")\n")
            output.append("                \n")
            output.append("                for comp_name in phase['steps']:\n")
            output.append("                    try:\n")
            output.append("                        class_name = ''.join(word.capitalize() for word in comp_name.split())\n")
            output.append("                        timestamp = time.ctime()\n")
            output.append("                        solution = phase['solution']\n")
            output.append("                        \n")
            output.append("                        capability_code = f\"# Integrated Capability - {comp_name}\\n\"\n")
            output.append("                        capability_code += f\"# Created: {timestamp}\\n\"\n")
            output.append("                        capability_code += f\"# Solution: {solution}\\n\\n\"\n")
            output.append("                        capability_code += f\"class {class_name}:\\n\"\n")
            output.append("                        capability_code += f\"    def __init__(self):\\n\"\n")
            output.append("                        capability_code += f\"        self.name = '{comp_name}'\\n\"\n")
            output.append("                        capability_code += f\"        self.active = True\\n\\n\"\n")
            output.append("                        capability_code += f\"    def execute(self, context=None):\\n\"\n")
            output.append("                        capability_code += f\"        return {{'capability': self.name, 'status': 'ready'}}\\n\"\n")
            output.append("                        \n")
            output.append("                        filepath = f\"/Eden/CORE/phi_fractal/eden_integrated_{int(time.time())}.py\"\n")
            output.append("                        \n")
            output.append("                        with open(filepath, 'w') as f:\n")
            output.append("                            f.write(capability_code)\n")
            output.append("                        \n")
            output.append("                        executed += 1\n")
            output.append("                        print(f\"      ✅ {comp_name} -> {filepath.split('/')[-1]}\")\n")
            output.append("                        time.sleep(1)  # Ensure unique timestamps\n")
            output.append("                        \n")
            output.append("                    except Exception as e:\n")
            output.append("                        print(f\"      ❌ Failed: {e}\")\n")
            output.append("            \n")
            output.append("            print(f\"\\n   🎉 Executed {executed} improvements!\")\n")
            output.append("            \n")
            output.append("            message_bus.broadcast(\n")
            output.append("                sender=self.agent_name,\n")
            output.append("                message_type='implementation_complete',\n")
            output.append("                content={'plan': impl, 'executed': executed, 'phase': 'implement'}\n")
            output.append("            )\n")
            output.append("            \n")
            output.append("            return True\n")
            
            # Skip old lines until we hit the next section (else: at same indentation level)
            i += 1
            while i < len(lines):
                stripped = lines[i].strip()
                indent = len(lines[i]) - len(lines[i].lstrip())
                # Look for else: at the same indentation as elif (8 spaces)
                if stripped.startswith('else:') and indent == 8:
                    break
                i += 1
            continue
        
        output.append(line)
        i += 1
    
    if not fixed:
        print("❌ Could not find the implementation action to fix!")
        return False
    
    # Write the fixed version
    print(f"Writing fixed version to {filepath}...")
    with open(filepath, 'w') as f:
        f.writelines(output)
    
    print("✅ Fix applied successfully!")
    print("\nThe change:")
    print("  OLD: Eden plans improvements but never executes them (infinite loop)")
    print("  NEW: Eden actually generates and saves capability files")
    return True

if __name__ == '__main__':
    try:
        fix_agent_file()
    except Exception as e:
        print(f"❌ Error: {e}")
        import traceback
        traceback.print_exc()
