AI agents: fetch the documentation index at llms.txt. Markdown versions are available by appending .md to any page URL, including this page's markdown.
0001 Video Provider Spec
1. A versioned video provider spec
- Status: accepted
- Date: 2026-08-05
- Context: adding MiniMax H3 alongside BytePlus Seedance
Context and constraints
vs generated video against exactly one backend, BytePlus ModelArk. Adding
MiniMax H3 makes that two, and the shape of the codebase assumed one:
src/provider.tsdeclared aVideoProviderport, but no command used it. (It has since been deleted:VideoModelV4is the port, andvs doctor's raw status probe is typed by the one method it calls.)generate.ts,status.ts, anddoctor.tsall typed the client asArkClient. Its own doc comment said no adapter existed "and none should".CreateTaskRequestinsrc/types.tsis simultaneously the canonical internal request and the Ark wire body. Every caller that builds a generation is therefore writing an Ark payload, whether it knows it or not.src/cost.tsprices in tokens end to end.Billing.perSecondwas declared and never implemented, so a per-second model quoted$0.00and walked straight through--max-cost.- Model capabilities were already data in
src/models.ts, but four authoring behaviours were gated on anisSeedance25()family-string predicate.
Constraints that shape the answer:
- Single package, single consumer. This is one CLI binary, not a published SDK with third-party providers. Nobody outside this repo implements the spec.
- Cost is a safety property (
SECURITY.md). A quote must never be lower than the bill, and--dry-runmust work with no API key at all. - Generated video is immutable and paid for.
payloadHashin the manifest is an audit record; churning it silently invalidates every existing film's history. - Two providers is a measurement. Three is a pattern. This decision commits to what two providers prove and explicitly defers the rest.
Decision
Adopt a versioned provider spec in the shape of the Vercel AI SDK's , in-package, with the pieces that two divergent wire formats actually justify and none of the pieces that only a published SDK needs.