Skip to content

fix(voice): reject unsupported video input#1962

Open
rosetta-livekit-bot[bot] wants to merge 1 commit into
mainfrom
port-video-task-leak-6318
Open

fix(voice): reject unsupported video input#1962
rosetta-livekit-bot[bot] wants to merge 1 commit into
mainfrom
port-video-task-leak-6318

Conversation

@rosetta-livekit-bot

@rosetta-livekit-bot rosetta-livekit-bot Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Port follow-up for fix(voice): resolve video task leak in AgentSession agents#6318 in agents-js.
  • JS does not currently have the Python video forwarding task pipeline (VideoInput, _forward_video_atask, or AgentActivity.push_video).
  • Reject RoomIO configurations with videoEnabled: true instead of silently accepting unsupported video input that cannot be forwarded or cleaned up.
  • Add a patch changeset for @livekit/agents.

Validation

  • pnpm format:check
  • pnpm build:agents
  • pnpm test -- agents/src/voice/room_io/room_io.test.ts
  • pnpm build
  • cue-cli text-mode runtime validation with a temporary dispatchable JS agent: asserted conversation_item_added(.item.message.role="ASSISTANT") from framework events.

Notes

  • No tests were added, matching the original Python fix.

Ported from livekit/agents#6318

Original PR description

I was just checking this project and saw this, did some test and felt it might be a real bug, so i fixed it and created this PR!

Description

This change resolves a resource leak where the video forwarding task (_forward_video_atask) was left dangling in the background on session teardown.

The Problem

During session teardown (AgentSession._aclose_impl), the cleanup sequence explicitly cancels and awaits the audio forwarding task (_forward_audio_atask), but completely omitted _forward_video_atask.

This omission leads to leaks under two scenarios:

  1. Early Abort (No Activity): If a session starts and is aborted before an activity is initialized (so self._activity is None), the block detaching the inputs is skipped. The active video task is never cancelled and continues running indefinitely.
  2. Clean Teardown: Even when an activity is present, setting self.input.video = None cancels the active task but immediately schedules a new redundant task. Explicitly awaiting the task ensures the event loop is cleanly purged of any scheduled forwarding tasks.

The Fix

Added symmetric cancellation and cleanup in AgentSession._aclose_impl matching the audio task's handling:

if self._forward_video_atask is not None:
    await utils.aio.cancel_and_wait(self._forward_video_atask)
</details>

@changeset-bot

changeset-bot Bot commented Jul 6, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 6ea73bb

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 35 packages
Name Type
@livekit/agents Patch
@livekit/agents-plugin-anam Patch
@livekit/agents-plugin-assemblyai Patch
@livekit/agents-plugin-baseten Patch
@livekit/agents-plugin-bey Patch
@livekit/agents-plugin-cartesia Patch
@livekit/agents-plugin-cerebras Patch
@livekit/agents-plugin-deepgram Patch
@livekit/agents-plugin-did Patch
@livekit/agents-plugin-elevenlabs Patch
@livekit/agents-plugin-fishaudio Patch
@livekit/agents-plugin-google Patch
@livekit/agents-plugin-hedra Patch
@livekit/agents-plugin-hume Patch
@livekit/agents-plugin-inworld Patch
@livekit/agents-plugin-lemonslice Patch
@livekit/agents-plugin-liveavatar Patch
@livekit/agents-plugin-livekit Patch
@livekit/agents-plugin-minimax Patch
@livekit/agents-plugin-mistral Patch
@livekit/agents-plugin-mistralai Patch
@livekit/agents-plugin-neuphonic Patch
@livekit/agents-plugin-openai Patch
@livekit/agents-plugin-perplexity Patch
@livekit/agents-plugin-phonic Patch
@livekit/agents-plugin-resemble Patch
@livekit/agents-plugin-rime Patch
@livekit/agents-plugin-runway Patch
@livekit/agents-plugin-sarvam Patch
@livekit/agents-plugin-silero Patch
@livekit/agents-plugin-soniox Patch
@livekit/agents-plugin-tavus Patch
@livekit/agents-plugins-test Patch
@livekit/agents-plugin-trugen Patch
@livekit/agents-plugin-xai Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@rosetta-livekit-bot rosetta-livekit-bot Bot requested a review from longcw July 6, 2026 02:06

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

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.

0 participants