- OllamaRequestBody.encodeNativeMultimodal + encodeOpenAICompatMultimodal
produce the OpenAI-vision data-URL block:
{type:image_url, image_url:{url:'data:<mediaType>;base64,<b64>'}}
- Both T1 (Ollama gemma4:31b) and T2 (vllm-mlx Qwen3.5 via useOpenAICompat=true)
consume the same encoder
- OllamaProvider.stream(messages:images:...) routes through the new encoders;
empty images still produce byte-identical bodies
- All 5 OllamaImageBlockEncodingTests + 147 existing tests pass