c8b56d43da
Salvage of #77660 covers quotes of INBOUND media via the bridge's download cache. The reported case is the other half: a user quotes an image the bot sent (a cron-delivered chart) and asks "what is this?" — the bridge cache knows only inbound messages, and Meta's Cloud webhook ``context`` carries only the quoted wamid, so the agent received a text-only turn and could not see the image it had itself delivered. Widen ``gateway/rich_sent_store`` (already the (chat_id, message_id) → text index Telegram and the Cloud adapter use for quoted text) with ``record_media`` / ``lookup_media``: both WhatsApp adapters index the local path + MIME of every media send at send time and every inbound media receive, and on a quoted reply fold the resolved ``(path, mime)`` into the event's own ``media_urls``/``media_types`` so the existing vision/audio pipeline handles it like a direct attachment. ``lookup_media`` drops entries whose file no longer exists. Baileys: the outbound index is the fallback when the bridge cache misses; the cache-dir guard stays on bridge-supplied paths only (our own sends are paths we chose). Cloud: link sends (public URL, no local bytes) are not indexed. One invariant test per adapter, red on origin/main.