b4973954e3
- BackgroundManager.shutdown() now aborts all running child sessions via client.session.abort() before clearing state, preventing orphaned opencode processes when parent exits - Add onShutdown callback to BackgroundManager constructor, used to trigger TmuxSessionManager.cleanup() on process exit signals - Interactive bash session hook now aborts tracked subagent opencode sessions when killing tmux sessions (defense-in-depth) - Add 4 tests verifying shutdown abort behavior and callback invocation Closes #1240