feat(ai-byteplus): add first-class Seedance 2.5 support - #1060
feat(ai-byteplus): add first-class Seedance 2.5 support#1060tombeckenham wants to merge 1 commit into
Conversation
Promote dreamina-seedance-2-5-260628 from the open string escape hatch into BYTEPLUS_VIDEO_MODELS with documented capabilities: 4–30s duration, 480p/720p, multimodal references including audio-only input, priority/generate_audio, and output_format. Update adapter guards, unit tests, docs, and the Seedance Studio example catalog.
|
View your CI Pipeline Execution ↗ for commit c5083b7
☁️ Nx Cloud last updated this comment at |
📝 WalkthroughWalkthroughChangesThe BytePlus adapter now provides typed Seedance 2.5 support for multimodal references, 4–30 second durations, 480p/720p output, audio-only references, priority, audio generation, and MP4/MOV output. Tests, documentation, and Seedance Studio examples were updated.
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant Client
participant BytePlusVideoAdapter
participant supportsAudioOnlyReference
participant Ark
Client->>BytePlusVideoAdapter: Submit Seedance 2.5 video request
BytePlusVideoAdapter->>supportsAudioOnlyReference: Check audio-only reference support
supportsAudioOnlyReference-->>BytePlusVideoAdapter: Return capability result
BytePlusVideoAdapter->>Ark: Forward validated request and output_format
Ark-->>BytePlusVideoAdapter: Return video task response
BytePlusVideoAdapter-->>Client: Return adapter result
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint install failed. For unrecoverable errors, disable the tool in CodeRabbit configuration. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
@tanstack/ai
@tanstack/ai-acp
@tanstack/ai-angular
@tanstack/ai-anthropic
@tanstack/ai-bedrock
@tanstack/ai-byteplus
@tanstack/ai-claude-code
@tanstack/ai-client
@tanstack/ai-code-mode
@tanstack/ai-code-mode-skills
@tanstack/ai-codex
@tanstack/ai-devtools-core
@tanstack/ai-durable-stream
@tanstack/ai-elevenlabs
@tanstack/ai-event-client
@tanstack/ai-fal
@tanstack/ai-gemini
@tanstack/ai-grok
@tanstack/ai-grok-build
@tanstack/ai-groq
@tanstack/ai-isolate-cloudflare
@tanstack/ai-isolate-node
@tanstack/ai-isolate-quickjs
@tanstack/ai-isolate-quickjs-bun
@tanstack/ai-mcp
@tanstack/ai-memory
@tanstack/ai-mistral
@tanstack/ai-ollama
@tanstack/ai-openai
@tanstack/ai-opencode
@tanstack/ai-openrouter
@tanstack/ai-persistence
@tanstack/ai-preact
@tanstack/ai-react
@tanstack/ai-react-ui
@tanstack/ai-sandbox
@tanstack/ai-sandbox-cloudflare
@tanstack/ai-sandbox-daytona
@tanstack/ai-sandbox-docker
@tanstack/ai-sandbox-local-process
@tanstack/ai-sandbox-sprites
@tanstack/ai-sandbox-vercel
@tanstack/ai-solid
@tanstack/ai-solid-ui
@tanstack/ai-svelte
@tanstack/ai-utils
@tanstack/ai-vue
@tanstack/ai-vue-ui
@tanstack/openai-base
@tanstack/preact-ai-devtools
@tanstack/react-ai-devtools
@tanstack/solid-ai-devtools
commit: |
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (1)
packages/ai-byteplus/tests/model-meta.test.ts (1)
37-44: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoffMove the modified tests beside their source modules.
The modified tests remain outside the required colocated layout.
packages/ai-byteplus/tests/model-meta.test.ts#L37-L44,L112-L114: move this test besidepackages/ai-byteplus/src/model-meta.ts.packages/ai-byteplus/tests/video.test.ts#L593-L646,L1180-L1205: move this test besidepackages/ai-byteplus/src/adapters/video.ts.As per coding guidelines, “Test files should be placed alongside source code as *.test.ts files using Vitest with happy-dom for DOM testing.”
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ai-byteplus/tests/model-meta.test.ts` around lines 37 - 44, Move the tests from packages/ai-byteplus/tests/model-meta.test.ts beside src/model-meta.ts and move the tests from packages/ai-byteplus/tests/video.test.ts beside src/adapters/video.ts, preserving their existing Vitest coverage and behavior in colocated *.test.ts files.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.changeset/seedance-2-5.md:
- Around line 1-2: Update the changeset frontmatter for `@tanstack/ai-byteplus`
from patch to minor to reflect the public exported model-union and
capability-type shape change.
- Around line 7-12: Align the Seedance 2.5 availability wording with
ModelNotOpen activation requirements rather than calling it fully open: update
.changeset/seedance-2-5.md lines 7-12 and packages/ai-byteplus/README.md lines
169-170 to state that Ark Console model activation or a resource pack may be
required. Do not present documentation-based capability claims as live/API
verification unless the source is updated to record that verification.
In `@examples/ts-react-media/src/lib/seedance.ts`:
- Around line 61-64: Align the Seedance 2.5 catalog entry with the actual Studio
behavior: either add audio-only reference support and an audio upload path in
SeedanceStudio, or remove the “audio-only references” claim from the Seedance
2.5 blurb. Ensure the catalog and Studio enforce the same capability.
- Around line 70-72: Update the duration hint in SeedanceStudio to include
Seedance 2.5 alongside the currently listed supported models, keeping it
consistent with the autoDuration setting in the Seedance configuration.
---
Nitpick comments:
In `@packages/ai-byteplus/tests/model-meta.test.ts`:
- Around line 37-44: Move the tests from
packages/ai-byteplus/tests/model-meta.test.ts beside src/model-meta.ts and move
the tests from packages/ai-byteplus/tests/video.test.ts beside
src/adapters/video.ts, preserving their existing Vitest coverage and behavior in
colocated *.test.ts files.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 6211a196-8902-4b41-808c-a9d6c37f986f
📒 Files selected for processing (15)
.changeset/seedance-2-5.mddocs/adapters/byteplus.mddocs/config.jsondocs/media/video-generation.mdexamples/ts-react-media/src/components/SeedanceStudio.tsxexamples/ts-react-media/src/lib/seedance.tsexamples/ts-react-media/src/lib/server-functions.tspackages/ai-byteplus/README.mdpackages/ai-byteplus/src/adapters/video.tspackages/ai-byteplus/src/index.tspackages/ai-byteplus/src/model-meta.tspackages/ai-byteplus/src/video/video-provider-options.tspackages/ai-byteplus/src/video/wire-types.tspackages/ai-byteplus/tests/model-meta.test.tspackages/ai-byteplus/tests/video.test.ts
| --- | ||
| '@tanstack/ai-byteplus': patch |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Use a minor changeset for this public type-shape change.
Adding dreamina-seedance-2-5-260628 to exported model unions and mapped capability types can make exhaustive consumer code fail to type-check. This is a public type-shape change, not only a bug fix. Change patch to minor.
Proposed changeset version
- '`@tanstack/ai-byteplus`': patch
+ '`@tanstack/ai-byteplus`': minorBased on learnings, this pre-1.0 repository uses a minor bump for breaking or public type-shape changes.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| --- | |
| '@tanstack/ai-byteplus': patch | |
| --- | |
| '`@tanstack/ai-byteplus`': minor |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.changeset/seedance-2-5.md around lines 1 - 2, Update the changeset
frontmatter for `@tanstack/ai-byteplus` from patch to minor to reflect the public
exported model-union and capability-type shape change.
Source: Learnings
| The model is fully open on ModelArk with documented capabilities: 4–30s | ||
| duration (or `-1`), 480p/720p only, multimodal reference media including | ||
| audio-only input, first-and-last-frame mode, `priority`, `generate_audio`, and | ||
| `output_format` (`mp4` | `mov`). The video adapter, typed model tables, unit | ||
| tests, docs, and Seedance Studio example catalog all treat it as a known | ||
| model rather than an escape-hatch string. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
rg -n -C 3 \
'dreamina-seedance-2-5-260628|verified live|from ModelArk docs' \
.changeset/seedance-2-5.md \
packages/ai-byteplus/README.md \
examples/ts-react-media/src/lib/seedance.tsRepository: TanStack/ai
Length of output: 2416
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
printf '--- files ---\n'
git ls-files | rg -n '(^|/)(\.changeset/seedance-2-5\.md|README\.md|byteplus\.md|seedance\.ts)$' || true
printf '\n--- .changeset/seedance-2-5.md ---\n'
cat -n .changeset/seedance-2-5.md
printf '\n--- packages/ai-byteplus/README.md 150-188 ---\n'
sed -n '150,188p' packages/ai-byteplus/README.md | nl -ba -v150
printf '\n--- docs/adapters/byteplus.md around seedance support/activation ---\n'
rg -n -C 4 'Seedance 2\.5|seedance-2-5-260628|activation|account|live verification|from ModelArk|ModelArk' docs/adapters/byteplus.md packages/ai-byteplus/README.md examples/ts-react-media/src/lib/seedance.ts .changeset/seedance-2-5.md
printf '\n--- examples/ts-react-media/src/lib/seedance.ts 45-75 ---\n'
sed -n '45,75p' examples/ts-react-media/src/lib/seedance.ts | nl -ba -v45Repository: TanStack/ai
Length of output: 240
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
printf '%s\n' '--- relevant file matches ---'
git ls-files | rg '(^|/)(\.changeset/seedance-2-5\.md|README\.md|byteplus\.md|seedance\.ts)$' || true
printf '%s\n' '--- .changeset/seedance-2-5.md ---'
cat -n .changeset/seedance-2-5.md
printf '%s\n' '--- packages/ai-byteplus/README.md 150-188 ---'
sed -n '150,188p' packages/ai-byteplus/README.md | nl -ba -v150
printf '%s\n' '--- docs/adapters/byteplus.md model/support mentions ---'
rg -n -C 4 'Seedance 2\.5|seedance-2-5-260628|activation|account|live verification|from ModelArk|ModelArk' docs/adapters/byteplus.md packages/ai-byteplus/README.md examples/ts-react-media/src/lib/seedance.ts .changeset/seedance-2-5.md || true
printf '%s\n' '--- examples/ts-react-media/src/lib/seedance.ts 45-75 ---'
sed -n '45,75p' examples/ts-react-media/src/lib/seedance.ts | nl -ba -v45Repository: TanStack/ai
Length of output: 3168
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo '--- packages/ai-byteplus/README.md 150-188 ---'
sed -n '150,188p' packages/ai-byteplus/README.md
echo '--- docs/adapters/byteplus.md 320-350 ---'
sed -n '320,350p' docs/adapters/byteplus.md
echo '--- Seedance 2.5 mentions ---'
rg -n -C 4 'Seedance 2\.5|seedance-2-5-260628|activation|account|live verification|from ModelArk|ModelArk' docs/adapters/byteplus.md packages/ai-byteplus/README.md examples/ts-react-media/src/lib/seedance.ts .changeset/seedance-2-5.md || true
echo '--- examples/ts-react-media/src/lib/seedance.ts 1-90 ---'
sed -n '1,90p' examples/ts-react-media/src/lib/seedance.tsRepository: TanStack/ai
Length of output: 24250
Align the Seedance 2.5 availability wording with the account-activation requirements.
docs/adapters/byteplus.md says Seedance 2.5 may still require Ark Console model activation / a resource pack, but .changeset/seedance-2-5.md calls the model “fully open”. If this is intended as package/model support text, qualify it to match ModelNotOpen activation; if the goal was live/API verification, record that source instead of “from ModelArk docs” usage in examples/ts-react-media/src/lib/seedance.ts.
📍 Affects 2 files
.changeset/seedance-2-5.md#L7-L12(this comment)packages/ai-byteplus/README.md#L169-L170
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.changeset/seedance-2-5.md around lines 7 - 12, Align the Seedance 2.5
availability wording with ModelNotOpen activation requirements rather than
calling it fully open: update .changeset/seedance-2-5.md lines 7-12 and
packages/ai-byteplus/README.md lines 169-170 to state that Ark Console model
activation or a resource pack may be required. Do not present
documentation-based capability claims as live/API verification unless the source
is updated to record that verification.
| id: 'dreamina-seedance-2-5-260628', | ||
| name: 'Seedance 2.5', | ||
| blurb: 'Current multimodal flagship — up to 30s, audio-only references', | ||
| extras: { |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Keep the catalog claim aligned with the Studio.
The new blurb says that Seedance 2.5 supports audio-only references. examples/ts-react-media/src/components/SeedanceStudio.tsx Lines [484-492] still reject audio-only references, and the component provides no audio upload control. Add a Studio path for this capability, or remove the claim from the Studio catalog.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@examples/ts-react-media/src/lib/seedance.ts` around lines 61 - 64, Align the
Seedance 2.5 catalog entry with the actual Studio behavior: either add
audio-only reference support and an audio upload path in SeedanceStudio, or
remove the “audio-only references” claim from the Seedance 2.5 blurb. Ensure the
catalog and Studio enforce the same capability.
| priority: true, | ||
| autoDuration: true, | ||
| }, |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Update the auto-duration hint for Seedance 2.5.
autoDuration: true makes the control visible for Seedance 2.5. examples/ts-react-media/src/components/SeedanceStudio.tsx Line [1012] still says that duration: -1 is supported only by Seedance 2.0 and 1.5-pro.
Proposed hint update
- hint="Sends duration: -1 (Seedance 2.0 and 1.5-pro only)"
+ hint="Sends duration: -1 (Seedance 2.5, 2.0 and 1.5-pro)"🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@examples/ts-react-media/src/lib/seedance.ts` around lines 70 - 72, Update the
duration hint in SeedanceStudio to include Seedance 2.5 alongside the currently
listed supported models, keeping it consistent with the autoDuration setting in
the Seedance configuration.
Summary
dreamina-seedance-2-5-260628) from the untyped escape hatch intoBYTEPLUS_VIDEO_MODELSwith full capability tables.-1auto)priority,generate_audiooutput_formatprovider option (mp4|mov)Context
Seedance 2.5 is fully public on ModelArk (docs updated 2026-08-07). It previously only worked via
byteplusVideo(string)because capability cells could not be verified while the model returnedModelNotOpen.Test plan
pnpm test:libin@tanstack/ai-byteplus(281 tests)pnpm test:types/pnpm test:oxlintin@tanstack/ai-bytepluspnpm buildfor@tanstack/ai-bytepluspnpm test:pr/ PR checksSummary by CodeRabbit
New Features
Documentation
Tests