From 41a7e14af514a6b1a3bf8e9ee21a205e2fec6aaa Mon Sep 17 00:00:00 2001 From: Ryan Gaus Date: Wed, 4 Feb 2026 18:18:47 -0500 Subject: [PATCH 1/2] feat: add attachedStreamIds as text stream metadata This allows downstream libraries to determine which "attachments" were sent in a data stream so the previous legacy chat message files interface can be satisfied. --- src/room/data-stream/incoming/IncomingDataStreamManager.ts | 1 + src/room/data-stream/outgoing/OutgoingDataStreamManager.ts | 3 ++- src/room/types.ts | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/room/data-stream/incoming/IncomingDataStreamManager.ts b/src/room/data-stream/incoming/IncomingDataStreamManager.ts index 4cf7f34202..e739844e7b 100644 --- a/src/room/data-stream/incoming/IncomingDataStreamManager.ts +++ b/src/room/data-stream/incoming/IncomingDataStreamManager.ts @@ -191,6 +191,7 @@ export default class IncomingDataStreamManager { timestamp: Number(streamHeader.timestamp), attributes: streamHeader.attributes, encryptionType, + attachedStreamIds: streamHeader.contentHeader.value.attachedStreamIds, }; const stream = new ReadableStream({ diff --git a/src/room/data-stream/outgoing/OutgoingDataStreamManager.ts b/src/room/data-stream/outgoing/OutgoingDataStreamManager.ts index 02df785aee..b5eec14e5b 100644 --- a/src/room/data-stream/outgoing/OutgoingDataStreamManager.ts +++ b/src/room/data-stream/outgoing/OutgoingDataStreamManager.ts @@ -107,6 +107,7 @@ export default class OutgoingDataStreamManager { encryptionType: this.engine.e2eeManager?.isDataChannelEncryptionEnabled ? Encryption_Type.GCM : Encryption_Type.NONE, + attachedStreamIds: options?.attachedStreamIds, }; const header = new DataStream_Header({ streamId, @@ -119,7 +120,7 @@ export default class OutgoingDataStreamManager { case: 'textHeader', value: new DataStream_TextHeader({ version: options?.version, - attachedStreamIds: options?.attachedStreamIds, + attachedStreamIds: info.attachedStreamIds, replyToStreamId: options?.replyToStreamId, operationType: options?.type === 'update' diff --git a/src/room/types.ts b/src/room/types.ts index 9536eeaeda..fdfb36d4ec 100644 --- a/src/room/types.ts +++ b/src/room/types.ts @@ -142,4 +142,6 @@ export interface ByteStreamInfo extends BaseStreamInfo { name: string; } -export interface TextStreamInfo extends BaseStreamInfo {} +export interface TextStreamInfo extends BaseStreamInfo { + attachedStreamIds?: Array; +} From ca1f59c7e9838c16ce2a4c1ce2b20e1359054de3 Mon Sep 17 00:00:00 2001 From: Ryan Gaus Date: Wed, 4 Feb 2026 18:34:25 -0500 Subject: [PATCH 2/2] fix: add missing changeset --- .changeset/spotty-tigers-sort.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/spotty-tigers-sort.md diff --git a/.changeset/spotty-tigers-sort.md b/.changeset/spotty-tigers-sort.md new file mode 100644 index 0000000000..1efe600819 --- /dev/null +++ b/.changeset/spotty-tigers-sort.md @@ -0,0 +1,5 @@ +--- +'livekit-client': patch +--- + +Add attachedStreamIds as text stream metadata