Skip to content

refactor: run vibe generate video and fill-gaps on the video executor - #353

Merged
kiyeonjeon21 merged 1 commit into
mainfrom
feat/generate-video-on-executor
Oct 4, 2026
Merged

kiyeonjeon21 merged 1 commit into
mainfrom
feat/generate-video-on-executor

Conversation

@kiyeonjeon21

Copy link
Copy Markdown
Contributor

Fifth and last PR of the provider interface work (step 3b). After this, no CLI code constructs a video provider class or branches on video provider names.

What changes

  • vibe generate video: 913 lines down to 432. It keeps validation, provider choice with key fallback, aspect-ratio detection, the model shutdown check, and the dry run, then calls executeVideoGenerate, the same executor the MCP tool and builds use.
    • Unknown model aliases are checked against the catalog for every provider, not just four.
    • The spinner shows the provider accepting the job (with its task ID), then percent progress, then the download.
    • A failed call keeps the task ID in the message and maps errorKind to the CLI error envelope.
    • --no-wait, and a wait that runs out, record the job with its handle for vibe status job.
  • Veo adapter: takes Veo's character reference images and --person, until Veo is removed.
  • fill-gaps: generates through the Kling generator on the contract.
  • Dead code: _shared/video-utils.ts is removed (unused apart from uploadToImgbb, which moves into upload-host.ts).

Bug fixed

Runway reports progress as a 0-1 fraction, so a running job showed "0%" and then "1%". It is now converted to a percentage, with a test.

Verification

  • Checks: pnpm build, lint, typecheck, tests (providers 211, CLI 1342 including the integration suite, MCP 73), pre-push gate.
  • Live, vibe generate video:
    • -i frame.png -p seedance: 4.1 s. The local image now goes through fal storage instead of ImgBB.
    • -i frame.png -p kling: 3.04 s, uploaded through the upload host.
    • Both clips' first frames match the input image.
    • -p omni --no-wait, then vibe status job --wait: 10.0 s.
    • -p runway in a terminal: spinner and output checked, which is how the progress bug was found.
    • About $1.6.

https://claude.ai/code/session_011S1BLTaFctZNQzGERpkCuA

`vibe generate video` carried its own copy of every provider's submit,
poll, upload, and download code (913 lines). It now validates, picks the
provider, runs the dry run, and calls `executeVideoGenerate`, the same
executor the MCP tool and builds use (432 lines).

- Unknown model aliases are checked against the catalog for any provider.
- Progress comes through an `onProgress` hook; the spinner shows when the
  provider accepts the job (with its task ID), the percentage, and the
  download.
- A failed call keeps the task ID and maps the error kind to the CLI's
  auth, usage, or retryable envelope.
- `--no-wait` and timed-out waits record the job with its handle.
- Veo's character reference images and person setting move into the Veo
  adapter.
- fill-gaps uses the Kling generator through the contract.
- The unused `_shared/video-utils.ts` is removed; `uploadToImgbb` moves
  into `upload-host.ts`, its only user.

Fixes Runway progress, which is a 0-1 fraction and showed as "0%"/"1%".

Claude-Session: https://claude.ai/code/session_011S1BLTaFctZNQzGERpkCuA
@vercel

vercel Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
vibeframe Ready Ready Preview Oct 4, 2026 3:21pm UTC

Request Review

This branch was successfully deployed

1 active deployment
Preview — de0b8cca Deployed Oct 4, 2026 by vercel[bot]
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