Adds _generate_ai_description background task that fires after a successful upload: images get a one-sentence vision description via Claude, text/log/config files get extracted_content + AI summary when >2000 chars. Runs as asyncio.create_task so it never blocks the upload response. Errors are logged and swallowed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>