cc29ae1ef8
- extract_text (PyMuPDF for PDFs) now runs via asyncio.to_thread in both /upload and stream-query, so a large PDF doesn't stall other streams. - /upload returns 422 when extraction yields no text: a scanned PDF without a text layer, or an empty text file. - Mock server: *scan*.pdf uploads return that 422. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>