"""
Eden Autonomy Budget System
Bounds actions with intention, prediction, rollback
"""

class AutonomyBudget:
    def __init__(self, daily_points=100):
        self.daily_points = daily_points
        self.remaining_points = daily_points
        self.actions_log = []
        
    def request_action(self, action_name, points_cost, intention, 
                      predicted_outcome, rollback_plan):
        """Request permission to take action"""
        
        if self.remaining_points < points_cost:
            return {
                'approved': False,
                'reason': f'Insufficient points ({self.remaining_points}/{points_cost})'
            }
        
        # Log the request
        action = {
            'name': action_name,
            'cost': points_cost,
            'intention': intention,
            'predicted_outcome': predicted_outcome,
            'rollback_plan': rollback_plan,
            'approved': True
        }
        
        self.actions_log.append(action)
        self.remaining_points -= points_cost
        
        return {
            'approved': True,
            'remaining': self.remaining_points,
            'action': action
        }
    
    def rollback_action(self, action_index):
        """Execute rollback plan for an action"""
        if action_index < len(self.actions_log):
            action = self.actions_log[action_index]
            print(f"Rolling back: {action['name']}")
            print(f"Plan: {action['rollback_plan']}")
            # Refund points
            self.remaining_points += action['cost']
            return True
        return False
    
    def daily_reset(self):
        """Reset points for new day"""
        self.remaining_points = self.daily_points
        print(f"Daily reset: {self.daily_points} action points available")

# Example usage
budget = AutonomyBudget(daily_points=100)
