845a1d2a03
Previously, background_cancel(all=true) only cancelled direct child tasks, leaving grandchildren and deeper nested tasks uncancelled. This caused background agents to continue running even when their parent session was cancelled. Changes: - Added getAllDescendantTasks() method to BackgroundTaskManager for recursive task collection - Updated background_cancel to use getAllDescendantTasks instead of getTasksByParentSession - Added comprehensive test coverage for nested task cancellation scenarios 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)