feat: add bytedance/seedance-2.0[-fast] (T2V/I2V/R2V, 6 endpoints) - #1
Merged
Merged
Conversation
Register ByteDance Seedance 2.0 video generation models under a new
`bytedance/` vendor namespace:
bytedance/seedance-2.0/text-to-video
bytedance/seedance-2.0/image-to-video
bytedance/seedance-2.0/reference-to-video
bytedance/seedance-2.0-fast/text-to-video
bytedance/seedance-2.0-fast/image-to-video
bytedance/seedance-2.0-fast/reference-to-video
URL convention: `/vendors/bytedance/v1/<model>/<operation>/generation`
(mule-router canonical after the muledance→seedance migration).
Polling reuses the existing `${apiPath}/${taskId}` pattern.
Parameter schemas extracted directly from
mule-router/tasks/handlers/mule/models/payloads/seedance.py:
- T2V: prompt (req), resolution, aspect_ratio, duration, generate_audio,
seed, web_search, camera_fixed (std only), watermark (std only)
- I2V: image (req), last_frame_image, prompt, resolution, ...
- R2V: prompt, images[], videos[] (https-only), audios[], resolution, ...
Std vs fast differs in: resolution (std accepts 1080p, fast does not);
T2V fast omits camera_fixed / watermark (server rejects non-false).
The `model` request-body field is auto-injected by mule-router's
payload_transformer and is intentionally NOT exposed as a CLI flag.
Also:
- Add `last_frame_image` to IMAGE_PARAM_NAMES so seedance I2V local
file paths get auto-converted to base64.
- Bump @mulerouter/core and mulerouter to 0.4.0 (publish workflow
verifies the two versions match).
There was a problem hiding this comment.
Pull request overview
Registers ByteDance Seedance 2.0 video-generation models in @mulerouter/core under a new bytedance/ vendor namespace, enabling the CLI to resolve and run 6 new T2V/I2V/R2V endpoints (std + fast) using the canonical /vendors/bytedance/v1/<model>/<operation>/generation URL convention.
Changes:
- Added 6 new model endpoints for
bytedance/seedance-2.0andbytedance/seedance-2.0-fast(text/image/reference-to-video) with shared parameter builders. - Updated image path auto-conversion to include
last_frame_imageso local file paths are base64-encoded automatically. - Expanded test coverage for bytedance registration + CLI endpoint resolution, and bumped package versions to
0.4.0.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| packages/core/tests/models.test.ts | Adds provider + endpoint registration assertions for ByteDance, updates expected totals. |
| packages/core/src/models/index.ts | Imports the new bytedance vendor module so endpoints register at load time. |
| packages/core/src/models/bytedance/_builders.ts | Centralizes Seedance parameter schemas and std/fast differences. |
| packages/core/src/models/bytedance/index.ts | Side-effect imports to register all 6 Seedance endpoints. |
| packages/core/src/models/bytedance/seedance-2.0-*.ts | Registers the 3 std Seedance endpoints with correct apiPath/resultKey/params. |
| packages/core/src/models/bytedance/seedance-2.0-fast-*.ts | Registers the 3 fast endpoints, omitting std-only params and restricting resolution enum. |
| packages/core/src/image.ts | Adds last_frame_image to auto base64 conversion parameter names. |
| packages/core/package.json | Bumps @mulerouter/core version to 0.4.0. |
| packages/cli/tests/run.test.ts | Adds tests ensuring 3-part identifier resolution and std vs fast distinction for Seedance. |
| packages/cli/package.json | Bumps CLI version to 0.4.0. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
nosuchperson
marked this pull request as ready for review
May 22, 2026 09:26
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Register ByteDance Seedance 2.0 video generation models under a new
bytedance/vendor namespace:bytedance/seedance-2.0/text-to-video
bytedance/seedance-2.0/image-to-video
bytedance/seedance-2.0/reference-to-video
bytedance/seedance-2.0-fast/text-to-video
bytedance/seedance-2.0-fast/image-to-video
bytedance/seedance-2.0-fast/reference-to-video
URL convention:
/vendors/bytedance/v1/<model>/<operation>/generation(mule-router canonical after the muledance→seedance migration). Polling reuses the existing${apiPath}/${taskId}pattern.Parameter schemas extracted directly from
mule-router/tasks/handlers/mule/models/payloads/seedance.py:
Std vs fast differs in: resolution (std accepts 1080p, fast does not); T2V fast omits camera_fixed / watermark (server rejects non-false).
The
modelrequest-body field is auto-injected by mule-router's payload_transformer and is intentionally NOT exposed as a CLI flag.Also:
last_frame_imageto IMAGE_PARAM_NAMES so seedance I2V local file paths get auto-converted to base64.