Re-implements PR #2908's generalized multimodal support on the
post-FSM main branch:
- Audio input: detects WAV/MP3/OGG/FLAC via magic bytes, sends
input_audio blocks to compatible providers, falls back to
[audio: path] placeholder when unsupported.
- Video input: sends video_url data-URI blocks to compatible
providers, falls back to [video: path] placeholder.
- InputLimitsConfig: count limits (images/audios/videos) and byte
limits per media type.
- AgentDefaults: pattern-matched vision_models, audio_models,
video_models with supports_*() helpers.
- Provider retry: strips all media types (image_url, input_audio,
video_url) on non-transient errors and retries once.
- Feishu: extracts media tags from post messages.
- Anthropic & OpenAI Responses converters handle audio/video.
Tests: 17 new multimodal tests + existing suite passes.