51c76c1cf9
When the CRM's readDocument returns success:false (scanned PDFs, image-only DOCX, corrupted files), shira-hermes now: 1. Fetches the raw file bytes via new getDocumentBytes endpoint 2. Sends them to Claude Vision through ai-gateway: - Images (PNG/JPG/TIFF/etc): direct vision call - PDFs: render each page at 180 DPI via PyMuPDF, vision call per page - DOCX: extract images from word/media/, vision call per image New tool: read_document_ocr (explicit OCR request) Existing tool read_document auto-falls-back to OCR on extraction failure. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>