Skip to content

Allow LemonSlice avatars to join third party meeting platforms - #2036

Merged
toubatbrian merged 9 commits into
livekit:mainfrom
lemonsliceai:ajw/external-meeting-support
Jul 18, 2026
Merged

Allow LemonSlice avatars to join third party meeting platforms#2036
toubatbrian merged 9 commits into
livekit:mainfrom
lemonsliceai:ajw/external-meeting-support

Conversation

@aweitz

@aweitz aweitz commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Description

  • Adds third-party meeting support (Zoom, Google Meet, Teams, Webex) to the LemonSlice avatar plugin. avatar.join_meeting() sends the avatar into a meeting via the LemonSlice API; the plugin then connects to a LemonSlice-managed relay WebSocket that streams mixed meeting audio into MeetingAudioInput for STT (bypassing LiveKit room audio). Avatar speech is published back into the meeting through the existing LiveKit avatar path. Optionally, meeting chat messages can be relayed into the agent session as user input (listen_to_meeting_chat).

  • Relevant LemonSlice endpoints are documented here and here

  • Adds new script in examples to demonstrate usage (lemonslice_realtime_avatar_meeting.js)

  • agents-js equivalent of Allow LemonSlice avatars to join third party meeting platforms agents#6233

https://www.loom.com/share/92b124d78cc840f08c4acea75845edf6

Changes Made

  • In addition to the core addition of joinMeeting and leaveMeeting, this PR tightens types in startAgent to clear the no-explicit-any lint warning.

Pre-Review Checklist

  • Build passes: All builds (lint, typecheck, tests) pass locally
  • AI-generated code reviewed: Removed unnecessary comments and ensured code quality
  • Changes explained: All changes are properly documented and justified above
  • Scope appropriate: All changes relate to the PR title, or explanations provided for why they're included
  • Video demo: A small video demo showing changes works as expected and did not break any existing functionality using Agent Playground (if applicable)

Testing

  • Automated tests added/updated (if applicable)
  • All tests pass
  • Make sure both restaurant_agent.ts and realtime_agent.ts work properly (for major changes)

Additional Notes


Note to reviewers: Please ensure the pre-review checklist is completed before starting your review.

@aweitz
aweitz requested a review from a team as a code owner July 15, 2026 05:11
@changeset-bot

changeset-bot Bot commented Jul 15, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 82a9195

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

This PR includes changesets to release 36 packages
Name Type
@livekit/agents Patch
@livekit/agents-plugin-lemonslice Patch
@livekit/agents-plugin-anam Patch
@livekit/agents-plugin-anthropic 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-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

@aweitz aweitz changed the title Ajw/external meeting support Allow LemonSlice avatars to join third party meeting platforms Jul 15, 2026

@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 potential bugs to report.

View in Devin Review to see 1 additional finding.

Open in Devin Review

@toubatbrian toubatbrian 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.

I reproduced and validated three lifecycle blockers that need addressing before this can be verified:

  1. meeting/audio.ts: closing a CONNECTING ws after removing all listeners emits an unhandled error and can terminate Node. Preserve/install a no-op error listener until close, following the existing Cartesia/FishAudio pattern.
  2. Make reconnect backoff abort-aware and clean up both its timer and abort listener so leave cannot wait up to 30 seconds.
  3. In leaveMeeting(), detach/stop local audio and chat relays before awaiting the retrying remote leave API; remote cleanup must not keep local meeting activity alive.

Please also add patch changesets for the public core AudioInput export and LemonSlice meeting feature, plus deterministic tests covering CONNECTING abort, reconnect timer/listener cleanup, rejected remote leave with cleared/idempotent local state, and active chat relay closure.

@aweitz

aweitz commented Jul 17, 2026

Copy link
Copy Markdown
Contributor Author

@toubatbrian thanks for the review! please see changes.

@toubatbrian
toubatbrian merged commit 3c19945 into livekit:main Jul 18, 2026
6 checks passed
@github-actions github-actions Bot mentioned this pull request Jul 18, 2026
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.

2 participants