Message gains an optional Parts []ContentPart alongside the existing plain-text Content, so a turn can carry text plus image/video attachments. Content stays the single source of truth for every existing text-only caller (sidebar.go, memory_tools.go, etc. are untouched); Parts only matters to a provider client when non-empty. openai and llamacpp (both OpenAI-compatible) serialize Parts into the standard text/image_url content-array shape; llamacpp additionally passes video through as a best-effort video_url part, since llama.cpp itself has no video support but the whole point of this client is the user's own OpenAI-compatible server sitting in front of a video-capable model — the server decides whether it understands it, not this client. anthropic converts image parts to its base64 image content block, and rejects a video part outright with a clear error: the Messages API has no video block type at all, so sending one would just produce a confusing 400 instead. ProviderCapabilities gains SupportsVideo, true only for llamacpp. |
||
|---|---|---|
| .. | ||
| client.go | ||
| client_test.go | ||