Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/weak-hounds-help.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@livekit/rtc-node": patch
---

update rust ffi to 0.12.43
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
rtc_build: ${{ steps.changes.outputs.rtc_build }}
server_sdk_build: ${{ steps.changes.outputs.server_sdk_build }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: dorny/paths-filter@v3
id: paths
with:
Expand Down
54 changes: 54 additions & 0 deletions .github/workflows/proto.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Generate protobuf stubs

permissions:
contents: write

on:
pull_request:
branches:
- main
# If rust-sdks is a git submodule, GitHub sees updates as a change to the
# gitlink at the submodule path (not files under it), so include the bare
# path. If it's checked into the repo normally, the ** pattern will match.
paths:
- 'packages/livekit-rtc/rust-sdks'
- 'packages/livekit-rtc/rust-sdks/**'

jobs:
generate-proto:
name: Regenerate protobuf stubs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
ref: ${{ github.event.pull_request.head.ref }}

- uses: pnpm/action-setup@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: pnpm

- name: Install Protoc
uses: arduino/setup-protoc@v3
with:
version: '25.1'
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Install dependencies
run: pnpm install

- name: Generate stubs
run: ./generate_proto.sh
working-directory: packages/livekit-rtc

- name: Add changes
uses: EndBug/add-and-commit@v9
with:
add: '["packages/livekit-rtc"]'
default_author: github_actions
message: generated protobuf
2 changes: 1 addition & 1 deletion packages/livekit-rtc/rust-sdks
Submodule rust-sdks updated 406 files
2 changes: 1 addition & 1 deletion packages/livekit-rtc/src/proto/audio_frame_pb.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2023 LiveKit, Inc.
// Copyright 2025 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion packages/livekit-rtc/src/proto/e2ee_pb.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2023 LiveKit, Inc.
// Copyright 2025 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
18 changes: 16 additions & 2 deletions packages/livekit-rtc/src/proto/ffi_pb.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2023 LiveKit, Inc.
// Copyright 2025 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand All @@ -25,7 +25,7 @@ import { CaptureVideoFrameRequest, CaptureVideoFrameResponse, NewVideoSourceRequ
import { ApmProcessReverseStreamRequest, ApmProcessReverseStreamResponse, ApmProcessStreamRequest, ApmProcessStreamResponse, ApmSetStreamDelayRequest, ApmSetStreamDelayResponse, AudioStreamEvent, AudioStreamFromParticipantRequest, AudioStreamFromParticipantResponse, CaptureAudioFrameCallback, CaptureAudioFrameRequest, CaptureAudioFrameResponse, ClearAudioBufferRequest, ClearAudioBufferResponse, FlushSoxResamplerRequest, FlushSoxResamplerResponse, LoadAudioFilterPluginRequest, LoadAudioFilterPluginResponse, NewApmRequest, NewApmResponse, NewAudioResamplerRequest, NewAudioResamplerResponse, NewAudioSourceRequest, NewAudioSourceResponse, NewAudioStreamRequest, NewAudioStreamResponse, NewSoxResamplerRequest, NewSoxResamplerResponse, PushSoxResamplerRequest, PushSoxResamplerResponse, RemixAndResampleRequest, RemixAndResampleResponse } from "./audio_frame_pb.js";
import { E2eeRequest, E2eeResponse } from "./e2ee_pb.js";
import { PerformRpcCallback, PerformRpcRequest, PerformRpcResponse, RegisterRpcMethodRequest, RegisterRpcMethodResponse, RpcMethodInvocationEvent, RpcMethodInvocationResponseRequest, RpcMethodInvocationResponseResponse, UnregisterRpcMethodRequest, UnregisterRpcMethodResponse } from "./rpc_pb.js";
import { EnableRemoteTrackPublicationRequest, EnableRemoteTrackPublicationResponse, UpdateRemoteTrackPublicationDimensionRequest, UpdateRemoteTrackPublicationDimensionResponse } from "./track_publication_pb.js";
import { EnableRemoteTrackPublicationRequest, EnableRemoteTrackPublicationResponse, SetRemoteTrackPublicationQualityRequest, SetRemoteTrackPublicationQualityResponse, UpdateRemoteTrackPublicationDimensionRequest, UpdateRemoteTrackPublicationDimensionResponse } from "./track_publication_pb.js";
import { ByteStreamOpenCallback, ByteStreamOpenRequest, ByteStreamOpenResponse, ByteStreamReaderEvent, ByteStreamReaderReadAllCallback, ByteStreamReaderReadAllRequest, ByteStreamReaderReadAllResponse, ByteStreamReaderReadIncrementalRequest, ByteStreamReaderReadIncrementalResponse, ByteStreamReaderWriteToFileCallback, ByteStreamReaderWriteToFileRequest, ByteStreamReaderWriteToFileResponse, ByteStreamWriterCloseCallback, ByteStreamWriterCloseRequest, ByteStreamWriterCloseResponse, ByteStreamWriterWriteCallback, ByteStreamWriterWriteRequest, ByteStreamWriterWriteResponse, StreamSendBytesCallback, StreamSendBytesRequest, StreamSendBytesResponse, StreamSendFileCallback, StreamSendFileRequest, StreamSendFileResponse, StreamSendTextCallback, StreamSendTextRequest, StreamSendTextResponse, TextStreamOpenCallback, TextStreamOpenRequest, TextStreamOpenResponse, TextStreamReaderEvent, TextStreamReaderReadAllCallback, TextStreamReaderReadAllRequest, TextStreamReaderReadAllResponse, TextStreamReaderReadIncrementalRequest, TextStreamReaderReadIncrementalResponse, TextStreamWriterCloseCallback, TextStreamWriterCloseRequest, TextStreamWriterCloseResponse, TextStreamWriterWriteCallback, TextStreamWriterWriteRequest, TextStreamWriterWriteResponse } from "./data_stream_pb.js";

/**
Expand Down Expand Up @@ -492,6 +492,12 @@ export class FfiRequest extends Message<FfiRequest> {
*/
value: StreamSendBytesRequest;
case: "sendBytes";
} | {
/**
* @generated from field: livekit.proto.SetRemoteTrackPublicationQualityRequest set_remote_track_publication_quality = 68;
*/
value: SetRemoteTrackPublicationQualityRequest;
case: "setRemoteTrackPublicationQuality";
} | { case: undefined; value?: undefined } = { case: undefined };

constructor(data?: PartialMessage<FfiRequest>) {
Expand Down Expand Up @@ -568,6 +574,7 @@ export class FfiRequest extends Message<FfiRequest> {
{ no: 65, name: "text_stream_write", kind: "message", T: TextStreamWriterWriteRequest, oneof: "message" },
{ no: 66, name: "text_stream_close", kind: "message", T: TextStreamWriterCloseRequest, oneof: "message" },
{ no: 67, name: "send_bytes", kind: "message", T: StreamSendBytesRequest, oneof: "message" },
{ no: 68, name: "set_remote_track_publication_quality", kind: "message", T: SetRemoteTrackPublicationQualityRequest, oneof: "message" },
]);

static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FfiRequest {
Expand Down Expand Up @@ -1006,6 +1013,12 @@ export class FfiResponse extends Message<FfiResponse> {
*/
value: StreamSendBytesResponse;
case: "sendBytes";
} | {
/**
* @generated from field: livekit.proto.SetRemoteTrackPublicationQualityResponse set_remote_track_publication_quality = 67;
*/
value: SetRemoteTrackPublicationQualityResponse;
case: "setRemoteTrackPublicationQuality";
} | { case: undefined; value?: undefined } = { case: undefined };

constructor(data?: PartialMessage<FfiResponse>) {
Expand Down Expand Up @@ -1081,6 +1094,7 @@ export class FfiResponse extends Message<FfiResponse> {
{ no: 64, name: "text_stream_write", kind: "message", T: TextStreamWriterWriteResponse, oneof: "message" },
{ no: 65, name: "text_stream_close", kind: "message", T: TextStreamWriterCloseResponse, oneof: "message" },
{ no: 66, name: "send_bytes", kind: "message", T: StreamSendBytesResponse, oneof: "message" },
{ no: 67, name: "set_remote_track_publication_quality", kind: "message", T: SetRemoteTrackPublicationQualityResponse, oneof: "message" },
]);

static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FfiResponse {
Expand Down
2 changes: 1 addition & 1 deletion packages/livekit-rtc/src/proto/handle_pb.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2023 LiveKit, Inc.
// Copyright 2025 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
46 changes: 45 additions & 1 deletion packages/livekit-rtc/src/proto/participant_pb.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2023 LiveKit, Inc.
// Copyright 2025 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -49,6 +49,11 @@ export enum ParticipantKind {
* @generated from enum value: PARTICIPANT_KIND_AGENT = 4;
*/
AGENT = 4,

/**
* @generated from enum value: PARTICIPANT_KIND_CONNECTOR = 5;
*/
CONNECTOR = 5,
}
// Retrieve enum metadata with: proto2.getEnumType(ParticipantKind)
proto2.util.setEnumType(ParticipantKind, "livekit.proto.ParticipantKind", [
Expand All @@ -57,6 +62,39 @@ proto2.util.setEnumType(ParticipantKind, "livekit.proto.ParticipantKind", [
{ no: 2, name: "PARTICIPANT_KIND_EGRESS" },
{ no: 3, name: "PARTICIPANT_KIND_SIP" },
{ no: 4, name: "PARTICIPANT_KIND_AGENT" },
{ no: 5, name: "PARTICIPANT_KIND_CONNECTOR" },
]);

/**
* @generated from enum livekit.proto.ParticipantKindDetail
*/
export enum ParticipantKindDetail {
/**
* @generated from enum value: PARTICIPANT_KIND_DETAIL_CLOUD_AGENT = 0;
*/
CLOUD_AGENT = 0,

/**
* @generated from enum value: PARTICIPANT_KIND_DETAIL_FORWARDED = 1;
*/
FORWARDED = 1,

/**
* @generated from enum value: PARTICIPANT_KIND_DETAIL_CONNECTOR_WHATSAPP = 2;
*/
CONNECTOR_WHATSAPP = 2,

/**
* @generated from enum value: PARTICIPANT_KIND_DETAIL_CONNECTOR_TWILIO = 3;
*/
CONNECTOR_TWILIO = 3,
}
// Retrieve enum metadata with: proto2.getEnumType(ParticipantKindDetail)
proto2.util.setEnumType(ParticipantKindDetail, "livekit.proto.ParticipantKindDetail", [
{ no: 0, name: "PARTICIPANT_KIND_DETAIL_CLOUD_AGENT" },
{ no: 1, name: "PARTICIPANT_KIND_DETAIL_FORWARDED" },
{ no: 2, name: "PARTICIPANT_KIND_DETAIL_CONNECTOR_WHATSAPP" },
{ no: 3, name: "PARTICIPANT_KIND_DETAIL_CONNECTOR_TWILIO" },
]);

/**
Expand Down Expand Up @@ -228,6 +266,11 @@ export class ParticipantInfo extends Message<ParticipantInfo> {
*/
disconnectReason?: DisconnectReason;

/**
* @generated from field: repeated livekit.proto.ParticipantKindDetail kind_details = 8;
*/
kindDetails: ParticipantKindDetail[] = [];

constructor(data?: PartialMessage<ParticipantInfo>) {
super();
proto2.util.initPartial(data, this);
Expand All @@ -243,6 +286,7 @@ export class ParticipantInfo extends Message<ParticipantInfo> {
{ no: 5, name: "attributes", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} },
{ no: 6, name: "kind", kind: "enum", T: proto2.getEnumType(ParticipantKind), req: true },
{ no: 7, name: "disconnect_reason", kind: "enum", T: proto2.getEnumType(DisconnectReason), req: true },
{ no: 8, name: "kind_details", kind: "enum", T: proto2.getEnumType(ParticipantKindDetail), repeated: true },
]);

static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ParticipantInfo {
Expand Down
60 changes: 52 additions & 8 deletions packages/livekit-rtc/src/proto/room_pb.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2023 LiveKit, Inc.
// Copyright 2025 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -2700,12 +2700,6 @@ export class RoomEvent extends Message<RoomEvent> {
*/
value: ParticipantAttributesChanged;
case: "participantAttributesChanged";
} | {
/**
* @generated from field: livekit.proto.ParticipantEncryptionStatusChanged participant_encryption_status_changed = 39;
*/
value: ParticipantEncryptionStatusChanged;
case: "participantEncryptionStatusChanged";
} | {
/**
* @generated from field: livekit.proto.ConnectionQualityChanged connection_quality_changed = 20;
Expand Down Expand Up @@ -2834,6 +2828,18 @@ export class RoomEvent extends Message<RoomEvent> {
*/
value: ParticipantsUpdated;
case: "participantsUpdated";
} | {
/**
* @generated from field: livekit.proto.ParticipantEncryptionStatusChanged participant_encryption_status_changed = 39;
*/
value: ParticipantEncryptionStatusChanged;
case: "participantEncryptionStatusChanged";
} | {
/**
* @generated from field: livekit.proto.TokenRefreshed token_refreshed = 40;
*/
value: TokenRefreshed;
case: "tokenRefreshed";
} | { case: undefined; value?: undefined } = { case: undefined };

constructor(data?: PartialMessage<RoomEvent>) {
Expand Down Expand Up @@ -2863,7 +2869,6 @@ export class RoomEvent extends Message<RoomEvent> {
{ no: 17, name: "participant_metadata_changed", kind: "message", T: ParticipantMetadataChanged, oneof: "message" },
{ no: 18, name: "participant_name_changed", kind: "message", T: ParticipantNameChanged, oneof: "message" },
{ no: 19, name: "participant_attributes_changed", kind: "message", T: ParticipantAttributesChanged, oneof: "message" },
{ no: 39, name: "participant_encryption_status_changed", kind: "message", T: ParticipantEncryptionStatusChanged, oneof: "message" },
{ no: 20, name: "connection_quality_changed", kind: "message", T: ConnectionQualityChanged, oneof: "message" },
{ no: 21, name: "connection_state_changed", kind: "message", T: ConnectionStateChanged, oneof: "message" },
{ no: 22, name: "disconnected", kind: "message", T: Disconnected, oneof: "message" },
Expand All @@ -2883,6 +2888,8 @@ export class RoomEvent extends Message<RoomEvent> {
{ no: 36, name: "room_updated", kind: "message", T: RoomInfo, oneof: "message" },
{ no: 37, name: "moved", kind: "message", T: RoomInfo, oneof: "message" },
{ no: 38, name: "participants_updated", kind: "message", T: ParticipantsUpdated, oneof: "message" },
{ no: 39, name: "participant_encryption_status_changed", kind: "message", T: ParticipantEncryptionStatusChanged, oneof: "message" },
{ no: 40, name: "token_refreshed", kind: "message", T: TokenRefreshed, oneof: "message" },
]);

static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): RoomEvent {
Expand Down Expand Up @@ -4444,6 +4451,43 @@ export class Reconnected extends Message<Reconnected> {
}
}

/**
* @generated from message livekit.proto.TokenRefreshed
*/
export class TokenRefreshed extends Message<TokenRefreshed> {
/**
* @generated from field: required string token = 1;
*/
token?: string;

constructor(data?: PartialMessage<TokenRefreshed>) {
super();
proto2.util.initPartial(data, this);
}

static readonly runtime: typeof proto2 = proto2;
static readonly typeName = "livekit.proto.TokenRefreshed";
static readonly fields: FieldList = proto2.util.newFieldList(() => [
{ no: 1, name: "token", kind: "scalar", T: 9 /* ScalarType.STRING */, req: true },
]);

static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TokenRefreshed {
return new TokenRefreshed().fromBinary(bytes, options);
}

static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TokenRefreshed {
return new TokenRefreshed().fromJson(jsonValue, options);
}

static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TokenRefreshed {
return new TokenRefreshed().fromJsonString(jsonString, options);
}

static equals(a: TokenRefreshed | PlainMessage<TokenRefreshed> | undefined, b: TokenRefreshed | PlainMessage<TokenRefreshed> | undefined): boolean {
return proto2.util.equals(TokenRefreshed, a, b);
}
}

/**
* @generated from message livekit.proto.RoomEOS
*/
Expand Down
2 changes: 1 addition & 1 deletion packages/livekit-rtc/src/proto/rpc_pb.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2023 LiveKit, Inc.
// Copyright 2025 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion packages/livekit-rtc/src/proto/stats_pb.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2023 LiveKit, Inc.
// Copyright 2025 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
2 changes: 1 addition & 1 deletion packages/livekit-rtc/src/proto/track_pb.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2023 LiveKit, Inc.
// Copyright 2025 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand Down
Loading
Loading