feat: adopt typed yt-dlp broker and handle adaptive audio

Merged
MP
4mo ago
+3345-554

Summary

  • migrate download operations to the typed yt-dlp host contract
  • route adaptive audio-only streams through host-managed extraction instead of returning raw HLS
  • add complete WASM ABI smoke coverage and pinned reproducible CI
  • use upstream Extism 1.30.0

Validation

  • 103 unit tests and 4 WASM smokes pass
  • native and WASM Clippy pass with warnings denied
  • release WASM build and cargo audit pass

Linear: MAT-129, MAT-131


Summary by cubic

Moves Vimeo downloads to the typed run_ytdlp broker and ensures resolve_stream_url never returns HLS, routing adaptive audio/video through the host for safer, more reliable downloads. Adds release-WASM ABI smokes with extism 1.30.0, pins/repins reusable CI/release workflows, and restricts releases to the repository owner.

  • New Features

    • Migrated download_to_file from run_subprocess to the typed run_ytdlp contract; no argv building in WASM. (Linear: MAT-129)
    • Audio-only: return a dedicated audio URL when available; otherwise signal AdaptiveStreamOnly so the host calls download_to_file. Added resolve_audio_only_url and tests. (Linear: MAT-131)
    • Added release-WASM ABI smoke tests; split Plugin CI into verification and release jobs; repinned canonical workflows and rust-toolchain.
  • Migration

    • Requires Vortex host ≥ 0.2.0 with http_request, get_config, and the typed run_ytdlp broker enabled; plugin.toml continues to declare subprocess = ["yt-dlp"].
    • Hosts must call download_to_file when resolve_stream_url returns AdaptiveStreamOnly; HLS manifests are no longer returned.

Summary by CodeRabbit

  • New Features

    • Added support for Vortex 0.2’s typed media-download integration.
    • Improved audio-only stream resolution and adaptive-stream handling.
    • Updated plugin compatibility to Vortex 0.2.0 and released version 1.4.0.
  • Bug Fixes

    • Improved validation of audio-only media variants and download requests.
  • Tests

    • Added end-to-end WebAssembly smoke tests covering routing, metadata, media, downloads, and playlist behavior.
  • Documentation

    • Updated requirements, testing instructions, and changelog details.