add SiftQ MiniMax-H3 video provider - #6827
Conversation
Register SiftQ as an independent media provider with its own credentials, base URL, model catalog entry, settings card, icon, and CLI guidance. Implement the MiniMax-H3 V2 create/query workflow for text-to-video and single first-frame image-to-video, including provider-specific duration, resolution, and ratio validation; bounded polling; normalized provider errors; and secure result retrieval without bearer propagation. Expose valid 4-15 second choices in New Project, keep the fixed wire model out of custom model settings, and document the supported scope and configuration. Add contract and UI coverage for payloads, task states, HTTP errors, timeouts, unsafe or invalid downloads, registry visibility, duration selection, and settings behavior.
Preserve the existing Open Design Cloud image resolution guidance, including its model and aspect-profile constraints, while adding the SiftQ MiniMax-H3 768P and 2K values separately. Keep the CLI help, shared agent media contract, and dispatcher context documentation aligned so adding SiftQ does not weaken or misstate existing provider behavior.
|
Thanks @futurestudyspace — the split from the existing MiniMax path looks nicely scoped across the daemon, Media UI, and CLI. We'll get the right reviewers on this next.
|
|
🧪 This PR has changes that need a manual QA pass before merge — please hold off self-merging for now; we'll loop QA in once it's merge-ready (and design/product have signed off, where applicable). |
mrcfps
left a comment
There was a problem hiding this comment.
Thanks @futurestudyspace — this is a carefully scoped SiftQ adapter. The split from MiniMax, V2 payload/status parsing, first-frame handling, and renderer tests all look solid.
A few non-blocking follow-ups below: the media-contract wording change needs its system-prompt snapshot refreshed (Daemon tests 4/4 is red on this head), the result download should keep the media requestInit/proxy dispatcher, and 21:9 should stay a SiftQ-specific note rather than changing the shared --aspect vocabulary.
🔁 Powered by Looper · runner=reviewer · agent=grok-build · An autonomous AI dev team for your GitHub repos.
|
Thanks for the thorough adapter work here, @futurestudyspace — the V2 payload handling, task-state parsing, SSRF-checked result download, and the 22-test renderer suite are all carefully done. My comment is about product direction rather than the implementation, so please don't read it as a knock on the code. SiftQ is a discount reseller of MiniMax, not a model provider. Its homepage positions it as exactly that: "MiniMax H3. The lowest price online. Generate cinematic AI videos & access APIs at 81% off official rates." Meanwhile we already integrate MiniMax directly ( So the underlying user need — H3 video generation inside Open Design — is better served by adding Three concerns behind that:
Practical note: the V2 submit/poll/download logic you have written is not wasted — if H3's official MiniMax endpoint differs from Two CI jobs are also currently red on this head ( Would you be open to reworking this as an H3 model on the existing MiniMax provider? Happy to help scope that if useful. |
Preserve the injected media proxy dispatcher and long-request timeout when downloading the completed SiftQ video, with a renderer regression test that verifies the dispatcher reaches the asset fetch without bearer credentials. Keep the shared aspect vocabulary unchanged while documenting 21:9 as SiftQ-specific, describe the provider 4-15 second duration contract, and refresh the affected system-prompt snapshot.
mrcfps
left a comment
There was a problem hiding this comment.
@futurestudyspace thank you for the careful follow-up on this SiftQ MiniMax-H3 integration — the adapter work is genuinely well structured.
I re-reviewed the current head against the earlier notes. The V2 create/query/download path still looks solid: independent credentials, first-frame adaptive image-to-video, SSRF-checked result fetch without the bearer key, and a tight renderer suite. This pass also confirmed the last-round fixes landed cleanly — the completed-video download now keeps the media requestInit/proxy dispatcher, shared --aspect help stays on the five-value vocabulary with a SiftQ-only 21:9 note, the 4–15s duration rule is documented in the media contract and CLI help, and the system-prompt snapshot totals were refreshed.
New Project’s model-specific length picker, the Settings card without a misleading custom-model field, and od media generate --model siftq-minimax-h3 all line up with the dispatcher.
Nice work getting a full provider in with such clear boundaries. 🙌
🔁 Powered by Looper · runner=reviewer · agent=grok-build · An autonomous AI dev team for your GitHub repos.
Describe the CLI flag directly in the provider guide, include its default, and keep the shared agent contract focused on the accepted 4-15 second range without test-oriented negative examples.
|
@lefarcen Got it — I’ll hold off on merging and leave the PR ready for the manual QA pass. Thanks! |
mrcfps
left a comment
There was a problem hiding this comment.
@futurestudyspace thank you for the tidy follow-up on the SiftQ length wording — this MiniMax-H3 provider is still a really well-bounded piece of work.
I re-reviewed this head, including the latest docs-only commit. The independent SiftQ credentials, V2 create/query/download path, first-frame adaptive image-to-video, SSRF-checked result fetch without the bearer key, and the renderer suite all still look solid. The earlier fixes remain in place: the completed-video download keeps the media requestInit/proxy dispatcher, shared --aspect help stays on the five-value vocabulary with a SiftQ-only 21:9 note, New Project uses the 4–15s length picker, and the media-contract / CLI / provider-guide text now describe that range without overstating the shared vocabulary.
Nice work landing a full provider with such clear seams. 🙌
🔁 Powered by Looper · runner=reviewer · agent=grok-build · An autonomous AI dev team for your GitHub repos.




























































Fixes #6822
Why
Open Design has no production video renderer for SiftQ. The existing MiniMax
video catalog entry cannot be reused because SiftQ uses a separate API base
URL, credentials, V2 request payload, task states, and result envelope.
This change lets users with SiftQ credentials generate video through the
existing Media UI and
od media generateworkflow.What users will see
key and base URL configuration.
SiftQ · MiniMax-H3video model in New Project.768Pand2Koutputsupport.
existing asynchronous media task flow.
od media generate --surface video --model siftq-minimax-h3and theOD_SIFTQ_API_KEY/SIFTQ_API_KEYenvironmentvariables.
Surface area
Screenshots
The English Settings screenshot shows the SiftQ Video provider, API key field,
default base URL, documentation link, and no custom-model field because the
wire model is fixed to
MiniMax-H3.Bug fix verification
Validation
pnpm --filter @open-design/contracts build— passed.pnpm --filter @open-design/daemon exec vitest run -c vitest.config.ts tests/media/siftq.test.ts— 22/22 passed.
pnpm --filter @open-design/web exec vitest run -c vitest.config.ts --maxWorkers=2 tests/components/NewProjectPanel.media.test.tsx tests/components/SettingsDialog.execution.test.tsx tests/components/modelProviderIcon.test.ts— 157/157 passed.
pnpm --filter @open-design/daemon exec vitest run -c vitest.config.ts tests/prompts/system-prompt-matrix.test.ts— 3/3 passed; refreshed the system-prompt snapshot after updating the SiftQ length guidance.pnpm --filter @open-design/daemon typecheck— passed.pnpm --filter @open-design/web typecheck— passed.pnpm guard— passed.node scripts/verify-media-models.mjs— passed; daemon and Web registriesmatch.
git diff --check— passed.credential/base URL fields, documentation link, and fixed-model behavior.
key was supplied.
pnpm typecheckreaches the changed daemon/Web scopes, thenfails in untouched
apps/desktop/src/main/deck-capture.tsat lines 1152,1398, and 1524 due to existing
NodeListiterator /moveBeforeDOM typingerrors.
Out of scope
Last-frame input, reference video/audio, Context-IR, provider-side task
listing/deletion/cancellation, callbacks, and usage reporting are not exposed
because the shared Open Design media contract does not currently model them.