Kyle Shanahan offers update on Brock Purdy's recovery