Build a small project in your preferred IDE and walk me through your approach.
For evaluation, implement a small Python task project with run_project(commands), where commands add or update tasks, complete tasks, or retrieve the highest-priority pending task. Return one result for each NEXT command, using None when no task is available; higher priorities win and ties use lexicographically smaller task IDs.
Input commands are strings: ADD <id> <priority>, COMPLETE <id>, and NEXT. ADD updates an existing pending task's priority.
def run_project(commands):