Skip to content

feat: add EvoLink video provider#105

Open
EvoLinkAI wants to merge 1 commit into
calesthio:mainfrom
EvoLinkAI:feat/evolink-provider
Open

feat: add EvoLink video provider#105
EvoLinkAI wants to merge 1 commit into
calesthio:mainfrom
EvoLinkAI:feat/evolink-provider

Conversation

@EvoLinkAI

Copy link
Copy Markdown

Summary

Adds evolink_video, a video generation provider backed by EvoLink's async video task API.

The tool follows the existing OpenMontage BaseTool provider pattern and is auto-discoverable by video_selector via capability = \"video_generation\". It supports:

  • Seedance 2.0 text-to-video
  • Seedance 2.0 image-to-video using public image URLs
  • standard/fast model variants
  • duration, quality/resolution, aspect ratio, audio toggle, content filter, and web search fields
  • submit -> poll GET /v1/tasks/{task_id} -> download MP4 workflow

Also documents EVOLINK_API_KEY in .env.example, README.md, and docs/PROVIDERS.md, and adds unit coverage for metadata, status, payload mapping, selector registration, and the mocked submit/poll/download path.

Validation

env -u all_proxy -u http_proxy -u https_proxy -u ALL_PROXY -u HTTP_PROXY -u HTTPS_PROXY \
  /tmp/openmontage-evolink-venv/bin/python -m pytest tests/tools/test_evolink_video.py -q

Result:

......                                                                   [100%]
6 passed in 0.76s
env -u all_proxy -u http_proxy -u https_proxy -u ALL_PROXY -u HTTP_PROXY -u HTTPS_PROXY \
  /tmp/openmontage-evolink-venv/bin/python -m compileall tools/video/evolink_video.py tests/tools/test_evolink_video.py

Result:

Compiling 'tests/tools/test_evolink_video.py'...

Live EvoLink tool-path smoke test through EvoLinkVideo.execute():

success= True
error= None
model= seedance-2.0-text-to-video
cost_estimate= 0.37
duration_seconds= 209.32
artifacts= ['/tmp/openmontage-evolink-real.mp4']
task_id= task-unified-1781671188-fib1epbg
file_size_bytes= 504418
video_width= 864
video_height= 496
video_codec= h264

Additional output probe:

ffprobe -v error -select_streams v:0 \
  -show_entries stream=codec_name,width,height \
  -show_entries format=duration,size \
  -of default=noprint_wrappers=1 /tmp/openmontage-evolink-real.mp4

Result:

codec_name=h264
width=864
height=496
duration=4.041667
size=504418

Add an EvoLink video generation tool that wraps EvoLink's async video task API in the existing BaseTool contract. The provider supports Seedance 2.0 text-to-video and image-to-video, maps OpenMontage selector aliases into EvoLink request fields, polls task completion, downloads the resulting MP4, and exposes cost/runtime/status metadata for provider selection.

Document EVOLINK_API_KEY in the environment/provider guides and add focused unit tests for metadata, status, payload mapping, selector registration, and the mocked submit/poll/download path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@EvoLinkAI EvoLinkAI requested a review from calesthio as a code owner June 17, 2026 04:44
@EvoLinkAI

Copy link
Copy Markdown
Author

Live EvoLink validation through the new EvoLinkVideo.execute() path passed.

success= True
error= None
model= seedance-2.0-text-to-video
cost_estimate= 0.37
duration_seconds= 209.32
artifacts= ['/tmp/openmontage-evolink-real.mp4']
task_id= task-unified-1781671188-fib1epbg
file_size_bytes= 504418
video_width= 864
video_height= 496
video_codec= h264

ffprobe on the downloaded artifact:

codec_name=h264
width=864
height=496
duration=4.041667
size=504418

Unit validation:

$ env -u all_proxy -u http_proxy -u https_proxy -u ALL_PROXY -u HTTP_PROXY -u HTTPS_PROXY /tmp/openmontage-evolink-venv/bin/python -m pytest tests/tools/test_evolink_video.py -q
......                                                                   [100%]
6 passed in 0.76s

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.

1 participant