Skip to content

Conversation

@ladvoc
Copy link
Contributor

@ladvoc ladvoc commented Jan 31, 2026

No description provided.

@coderabbitai
Copy link

coderabbitai bot commented Jan 31, 2026

📝 Walkthrough

Walkthrough

This PR introduces support for Bridge participants, data track management, text messaging capabilities, and enhances WhatsApp/Twilio integration across the LiveKit protocol, FFI, and service layers. Enum variants are added, protocol messages are expanded with new data structures, and conversions are updated to support these new participant types and messaging pathways.

Changes

Cohort / File(s) Summary
Enum expansions across FFI and participant modules
livekit-ffi/protocol/participant.proto, livekit-ffi-node-bindings/src/proto/participant_pb.ts, livekit-ffi/src/conversion/participant.rs, livekit/src/room/participant/mod.rs, livekit/src/proto.rs
Added Bridge variant to ParticipantKind and BridgeRtsp variant to ParticipantKindDetail, with corresponding conversions between proto and internal representations.
Core protocol and messaging expansion
livekit-protocol/src/livekit.rs
Introduced data track publish/unpublish/subscription workflow with DataTrackInfo, DataTrackExtensionId, and related message types; added text messaging support via TextMessageRequest/Response; enhanced WhatsApp/Twilio integration with participant_identity and DisconnectReason fields; added Bridge participant kind and metrics/video layer enhancements.
Service and state integration
livekit-api/src/services/connector.rs, livekit/src/room/mod.rs
Updated WhatsApp call disconnect request initialization with struct default pattern; extended SyncState to include publish_data_tracks field.
Submodule dependency
livekit-protocol/protocol
Updated submodule reference to latest commit.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Suggested reviewers

  • ladvoc
  • cloudwebrtc

Poem

🐰 Hop-hop, the bridges are built anew,
Data tracks flow like morning dew,
WhatsApp whispers, text messages sing,
Protocol expanded with everything,
A protocol feast, huzzah, zing! 🎉

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Upgrade protocol to v1.44.0' accurately summarizes the main change: a protocol version upgrade affecting multiple protocol-related files and their generated bindings.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch ladvoc/proto-v1.44.0

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ladvoc ladvoc requested review from cloudwebrtc and lukasIO January 31, 2026 04:52
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@livekit-protocol/src/livekit.rs`:
- Line 6853: Fix the typo in the doc comment for AcceptWhatsAppCallRequest:
change "conencting" to "connecting" in the proto source's comment for the phone
number id field and then regenerate the Rust code so the corrected comment
appears in livekit::AcceptWhatsAppCallRequest (ensure the proto definition for
that message is updated and protoc/codegen re-run).
- Line 4606: The doc comment for AgentDispatchState contains a typo ("tyoe" →
"type"): update the comment in the proto definition for AgentDispatchState (fix
the comment text to "type"), then re-run the proto codegen/regeneration step
used by this project (protoc/your build script) so the generated livekit.rs is
updated; ensure the regenerated code no longer contains "tyoe" in the
AgentDispatchState doc comment.
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d7c19ce and ca66c69.

📒 Files selected for processing (10)
  • livekit-api/src/services/connector.rs
  • livekit-ffi-node-bindings/src/proto/participant_pb.ts
  • livekit-ffi/protocol/participant.proto
  • livekit-ffi/src/conversion/participant.rs
  • livekit-protocol/protocol
  • livekit-protocol/src/livekit.rs
  • livekit-protocol/src/livekit.serde.rs
  • livekit/src/proto.rs
  • livekit/src/room/mod.rs
  • livekit/src/room/participant/mod.rs
🔇 Additional comments (17)
livekit-api/src/services/connector.rs (1)

164-168: Looks good — defaulting unspecified fields is safe and aligns with evolving proto.

livekit-protocol/protocol (1)

1-1: Ensure generated protobuf artifacts are regenerated to match protocol v1.44.0.

Commit 765a80e4298e376593859c3f11cf748c725f68f9 is correctly tagged as v1.44.0. Verify that the generated TypeScript protobuf files in livekit-ffi-node-bindings/src/proto/ (*_pb.ts) have been regenerated to reflect the changes in this version.

livekit/src/proto.rs (2)

156-160: LGTM - Bridge variant mapping is correct.

The new Bridge variant mapping follows the established pattern. Minor style note: consider adding a trailing comma after participant::ParticipantKind::Bridge for consistency with the other match arms.


178-181: LGTM - BridgeRtsp variant mapping is correct.

The BridgeRtsp kind detail mapping is properly implemented and consistent with the existing conversion patterns.

livekit-ffi-node-bindings/src/proto/participant_pb.ts (2)

58-72: LGTM - Generated ParticipantKind enum correctly includes BRIDGE.

The auto-generated TypeScript binding correctly adds the BRIDGE = 6 variant and its corresponding metadata entry, matching the protocol definition.


98-110: LGTM - Generated ParticipantKindDetail enum correctly includes BRIDGE_RTSP.

The auto-generated TypeScript binding correctly adds the BRIDGE_RTSP = 4 variant and its corresponding metadata entry, matching the protocol definition.

livekit/src/room/participant/mod.rs (2)

40-49: LGTM - Bridge variant correctly added to ParticipantKind.

The new Bridge variant extends the enum appropriately. Consider adding a trailing comma for consistency with Rust conventions.


51-58: LGTM - BridgeRtsp variant correctly added to ParticipantKindDetail.

The new BridgeRtsp variant extends the enum appropriately. Consider adding a trailing comma for consistency.

livekit-ffi/protocol/participant.proto (2)

40-48: LGTM - PARTICIPANT_KIND_BRIDGE correctly added to protocol definition.

The new enum value PARTICIPANT_KIND_BRIDGE = 6 follows the sequential numbering convention and is backward compatible.


50-56: LGTM - PARTICIPANT_KIND_DETAIL_BRIDGE_RTSP correctly added to protocol definition.

The new enum value PARTICIPANT_KIND_DETAIL_BRIDGE_RTSP = 4 follows the sequential numbering convention and is backward compatible.

livekit/src/room/mod.rs (1)

1208-1231: LGTM - SyncState correctly extended with publish_data_tracks field.

The new publish_data_tracks field is appropriately initialized with Default::default(), aligning with the protocol upgrade for data track support. Consider adding a trailing comma for consistency.

livekit-ffi/src/conversion/participant.rs (2)

52-64: LGTM - ParticipantKind FFI conversion correctly includes Bridge.

The conversion from ParticipantKind::Bridge to proto::ParticipantKind::Bridge follows the established pattern.


66-78: LGTM - ParticipantKindDetail FFI conversion correctly includes BridgeRtsp.

The conversion from ParticipantKindDetail::BridgeRtsp to proto::ParticipantKindDetail::BridgeRtsp follows the established pattern.

livekit-protocol/src/livekit.rs (4)

91-92: LGTM: additive participant/data-track protocol fields

Room tags, participant data tracks, bridge kinds, and data-track info/options are additive with new tags and look consistent for backward compatibility.

Also applies to: 362-363, 418-421, 460-461, 608-639, 660-661, 1729-1753


3118-3287: LGTM: data-track signaling and request/response wiring

Signal request/response variants, request-response reasons, SyncState, and connection settings extensions align with the new data-track flows.

Also applies to: 3353-3405, 3524-3541, 3800-3823, 3934-4011, 4031-4031


4236-4295: LGTM: text messaging worker/server surfaces

The worker/server message variants and text message payloads are cleanly integrated.

Also applies to: 4425-4459


5910-5937: LGTM: SIP/WhatsApp/Twilio protocol additions

Dispatch rule number filters, SIP call id, WhatsApp disconnect reasons, and Twilio participant identity notes fit cleanly into the existing schema.

Also applies to: 6182-6183, 6731-6770, 6783-6829, 6943-6964

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AgentDispatchState {
/// For dispatches of tyoe JT_ROOM, there will be at most 1 job.
/// For dispatches of tyoe JT_ROOM, there will be at most 1 job.
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix typo in AgentDispatchState doc comment

“tyoe” → “type”. Since this is generated, please fix the proto source and regenerate.

🤖 Prompt for AI Agents
In `@livekit-protocol/src/livekit.rs` at line 4606, The doc comment for
AgentDispatchState contains a typo ("tyoe" → "type"): update the comment in the
proto definition for AgentDispatchState (fix the comment text to "type"), then
re-run the proto codegen/regeneration step used by this project (protoc/your
build script) so the generated livekit.rs is updated; ensure the regenerated
code no longer contains "tyoe" in the AgentDispatchState doc comment.

#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AcceptWhatsAppCallRequest {
/// Required - The number of the business that is conencting the call
/// Required - The phone number id of the business that is conencting the call
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix typo in AcceptWhatsAppCallRequest doc comment

“conencting” → “connecting”. Please update the proto source and regenerate.

🤖 Prompt for AI Agents
In `@livekit-protocol/src/livekit.rs` at line 6853, Fix the typo in the doc
comment for AcceptWhatsAppCallRequest: change "conencting" to "connecting" in
the proto source's comment for the phone number id field and then regenerate the
Rust code so the corrected comment appears in livekit::AcceptWhatsAppCallRequest
(ensure the proto definition for that message is updated and protoc/codegen
re-run).

@ladvoc ladvoc merged commit fdbca12 into main Feb 1, 2026
6 checks passed
@ladvoc ladvoc deleted the ladvoc/proto-v1.44.0 branch February 1, 2026 01:09
@github-actions github-actions bot mentioned this pull request Jan 29, 2026
This was referenced Feb 3, 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.

3 participants