Allow LemonSlice avatars to join third party meeting platforms - #2036
Merged
toubatbrian merged 9 commits intoJul 18, 2026
Conversation
🦋 Changeset detectedLatest commit: 82a9195 The changes in this PR will be included in the next version bump. This PR includes changesets to release 36 packages
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 |
toubatbrian
requested changes
Jul 16, 2026
Contributor
There was a problem hiding this comment.
I reproduced and validated three lifecycle blockers that need addressing before this can be verified:
meeting/audio.ts: closing a CONNECTINGwsafter removing all listeners emits an unhandlederrorand can terminate Node. Preserve/install a no-op error listener until close, following the existing Cartesia/FishAudio pattern.- Make reconnect backoff abort-aware and clean up both its timer and abort listener so leave cannot wait up to 30 seconds.
- 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.
Contributor
Author
|
@toubatbrian thanks for the review! please see changes. |
toubatbrian
approved these changes
Jul 17, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-jsequivalent of Allow LemonSlice avatars to join third party meeting platforms agents#6233https://www.loom.com/share/92b124d78cc840f08c4acea75845edf6
Changes Made
joinMeetingandleaveMeeting, this PR tightens types in startAgent to clear the no-explicit-any lint warning.Pre-Review Checklist
Testing
restaurant_agent.tsandrealtime_agent.tswork properly (for major changes)Additional Notes
Note to reviewers: Please ensure the pre-review checklist is completed before starting your review.