Internal only. External contributors: please do not open PRs for this issue — it is being handled internally.
Summary
The Go ingestion pipeline does not yet support video understanding (multimodal). maybeDispatchVideo in internal/ingestion/component/media_dispatch.go currently returns an explicit error: "video parsing is not yet supported; underlying video analysis capability is pending" (intentional stub since 2026-07-27). This is not a parity gap and not a "Keep Go" difference.
Why it was stubbed
The previous implementation sent the video as a video_url base64 data URI to the vision model. This does not work for any supported driver:
- OpenAI-compatible drivers only accept
image_url and silently ignore video_url.
- Gemini's
googleMessageParts only handles text/image_url and drops video_url.
The model therefore received only the text prompt and produced no real video understanding. Rather than ship broken behavior, we now fail loudly and defer the real implementation.
How Python does it (provider-specific, for reference)
- OpenAI-compatible (dominant): samples 3 frames at 10% / 50% / 90% of duration via OpenCV, encodes them as JPEG
data:image/jpeg;base64 URLs, and sends them as image_url blocks (rag/llm/cv_model.py::_describe_video_frame).
- Gemini: <=20 MB -> raw bytes as
inline_data Blob; >20 MB -> upload via Files API (client.files.upload, resumable 8 MB chunks) and use the returned uri.
- Qwen: writes a temp file and sends a
file:// URI.
Plan
Real video parsing is deferred until the underlying video-analysis capability is built. When implemented it must be provider-specific (OpenAI frame extraction -> image_url; Gemini inline_data/Files API; Qwen file://). Tracked as migration diff Parser 2.7 in docs/migration_python_go_diff.md.
Note
Internal only — handled by the team; external PRs are not expected.
Internal only. External contributors: please do not open PRs for this issue — it is being handled internally.
Summary
The Go ingestion pipeline does not yet support video understanding (multimodal).
maybeDispatchVideoininternal/ingestion/component/media_dispatch.gocurrently returns an explicit error: "video parsing is not yet supported; underlying video analysis capability is pending" (intentional stub since 2026-07-27). This is not a parity gap and not a "Keep Go" difference.Why it was stubbed
The previous implementation sent the video as a
video_urlbase64 data URI to the vision model. This does not work for any supported driver:image_urland silently ignorevideo_url.googleMessagePartsonly handlestext/image_urland dropsvideo_url.The model therefore received only the text prompt and produced no real video understanding. Rather than ship broken behavior, we now fail loudly and defer the real implementation.
How Python does it (provider-specific, for reference)
data:image/jpeg;base64URLs, and sends them asimage_urlblocks (rag/llm/cv_model.py::_describe_video_frame).inline_dataBlob; >20 MB -> upload via Files API (client.files.upload, resumable 8 MB chunks) and use the returneduri.file://URI.Plan
Real video parsing is deferred until the underlying video-analysis capability is built. When implemented it must be provider-specific (OpenAI frame extraction ->
image_url; Geminiinline_data/Files API; Qwenfile://). Tracked as migration diff Parser 2.7 indocs/migration_python_go_diff.md.Note
Internal only — handled by the team; external PRs are not expected.