"""
TaskPriorityManager
Generated by Eden via recursive self-improvement
2025-10-28 12:40:02.550026
"""

class TaskPriorityManager:
    """
    A class to help manage tasks with prioritization capabilities.
    
    Attributes:
        tasks (list): List of tasks, each task is a dictionary with 'description' and 'priority'.
        
    Methods:
        add_task(description: str, priority: int) -> None:
            Adds a new task with the given description and priority level.
            
        view_tasks() -> list:
            Returns a list of tasks sorted by priority (highest first).
            
        mark_completed(index: int) -> None:
            Marks the task at specified index as completed and removes it from the list.
            
        summary() -> str:
            Provides a summary of remaining tasks.
    """
    
    def __init__(self):
        self.tasks = []
        
    def add_task(self, description: str, priority: int) -> None:
        """Add a new task with the given description and priority level."""
        self.tasks.append({'description': description, 'priority': priority})
        
    def view_tasks(self) -> list:
        """Return tasks sorted by priority (highest first)."""
        return sorted(self.tasks, key=lambda x: -x['priority'])
    
    def mark_completed(self, index: int) -> None:
        """Mark the task at specified index as completed and remove it."""
        if 0 <= index < len(self.tasks):
            del self.tasks[index]
        else:
            raise ValueError("Invalid task index")
    
    def summary(self) -> str:
        """Return a summary of remaining tasks."""
        return f"Remaining tasks: {len(self.tasks)}"

# Example usage:
if __name__ == "__main__":
    manager = TaskPriorityManager()
    manager.add_task("Buy groceries", 2)
    manager.add_task("Complete project", 3)
    manager.add_task("Call doctor", 1)
    
    print("All tasks:")
    for task in manager.view_tasks():
        print(f"- {task['description']} (Priority: {task['priority']})")
    
    # Mark the first task as completed
    manager.mark_completed(0)
    print("\nAfter marking completed task:")
    for task in manager.view_tasks():
        print(f"- {task['description']} (Priority: {task['priority']})")
    
    print("\nSummary:", manager.summary())