Skip to content

feat: add bytedance/seedance-2.0[-fast] (T2V/I2V/R2V, 6 endpoints) - #1

Merged
Misaka43fd merged 1 commit into
openmule:mainfrom
nosuchperson:fh-mc/sess-10a442f9
May 22, 2026
Merged

feat: add bytedance/seedance-2.0[-fast] (T2V/I2V/R2V, 6 endpoints)#1
Misaka43fd merged 1 commit into
openmule:mainfrom
nosuchperson:fh-mc/sess-10a442f9

Conversation

@nosuchperson

Copy link
Copy Markdown
Contributor

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).

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).

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.0 and bytedance/seedance-2.0-fast (text/image/reference-to-video) with shared parameter builders.
  • Updated image path auto-conversion to include last_frame_image so 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
nosuchperson marked this pull request as ready for review May 22, 2026 09:26
@Misaka43fd
Misaka43fd merged commit 5491526 into openmule:main May 22, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants