@d-id/client-sdk 1.1.24-staging.114 → 1.1.24-staging.115
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +49 -47
- package/dist/index.umd.cjs +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -52,7 +52,7 @@ var C = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(C || {}
|
|
|
52
52
|
const at = 45 * 1e3, ot = "X-Playground-Chat", fe = "https://api.d-id.com", st = "wss://notifications.d-id.com", ct = "79f81a83a67430be2bc0fd61042b8faa", Fe = (e) => new Promise((t) => setTimeout(t, e)), ce = (e = 16) => {
|
|
53
53
|
const t = new Uint8Array(e);
|
|
54
54
|
return window.crypto.getRandomValues(t), Array.from(t, (i) => i.toString(16).padStart(2, "0")).join("").slice(0, 13);
|
|
55
|
-
}, ze = (e) => e.type === "clip" && e.presenter_id.startsWith("v2_") ? "clip_v2" : e.type,
|
|
55
|
+
}, ze = (e) => e.type === "clip" && e.presenter_id.startsWith("v2_") ? "clip_v2" : e.type, Ee = (e) => e === Be.Expressive, dt = (e) => [U.TextOnly, U.Playground, U.Maintenance].includes(e), Ne = (e) => e && [U.DirectPlayback, U.Off].includes(e);
|
|
56
56
|
function ut(e, t) {
|
|
57
57
|
let i;
|
|
58
58
|
return {
|
|
@@ -112,7 +112,7 @@ const ft = (e) => ve(e, {
|
|
|
112
112
|
timeout: 0,
|
|
113
113
|
shouldRetryFn: (t) => t.status === 429
|
|
114
114
|
});
|
|
115
|
-
function
|
|
115
|
+
function Me(e, t = fe, i, n) {
|
|
116
116
|
const c = async (o, s) => {
|
|
117
117
|
const { skipErrorHandler: a, ...r } = s || {}, d = await ft(
|
|
118
118
|
() => fetch(t + (o != null && o.startsWith("/") ? o : `/${o}`), {
|
|
@@ -147,7 +147,7 @@ function Ee(e, t = fe, i, n) {
|
|
|
147
147
|
};
|
|
148
148
|
}
|
|
149
149
|
function mt(e, t = fe, i, n) {
|
|
150
|
-
const c =
|
|
150
|
+
const c = Me(e, `${t}/agents`, i, n);
|
|
151
151
|
return {
|
|
152
152
|
create(o, s) {
|
|
153
153
|
return c.post("/", o, s);
|
|
@@ -342,7 +342,7 @@ function Ct(e) {
|
|
|
342
342
|
return e && e.length > 0 ? e : [];
|
|
343
343
|
}
|
|
344
344
|
function kt(e, t, i, n) {
|
|
345
|
-
const c =
|
|
345
|
+
const c = Me(e, `${t}/v2/agents/${i}`, n);
|
|
346
346
|
return {
|
|
347
347
|
async createStream(o) {
|
|
348
348
|
return c.post("/sessions", o);
|
|
@@ -377,7 +377,7 @@ function ke(e, t, i, n) {
|
|
|
377
377
|
async function Dt(e, t, i) {
|
|
378
378
|
var _e, Ae;
|
|
379
379
|
const n = We(i.debug || !1, "LiveKitStreamingManager"), { Room: c, RoomEvent: o, ConnectionState: s } = await ye(), { callbacks: a, auth: r, baseURL: d, analytics: m, microphoneStream: p } = i;
|
|
380
|
-
let u = null,
|
|
380
|
+
let u = null, M = !1;
|
|
381
381
|
const x = ne.Fluent;
|
|
382
382
|
let O = !0, I = null, A = null;
|
|
383
383
|
u = new c({
|
|
@@ -425,13 +425,13 @@ async function Dt(e, t, i) {
|
|
|
425
425
|
(g = a.onConnectionStateChange) == null || g.call(a, S.Connecting);
|
|
426
426
|
break;
|
|
427
427
|
case s.Connected:
|
|
428
|
-
n("LiveKit room connected successfully"),
|
|
428
|
+
n("LiveKit room connected successfully"), M = !0, O ? queueMicrotask(() => {
|
|
429
429
|
var z;
|
|
430
430
|
(z = a.onConnectionStateChange) == null || z.call(a, S.Connected);
|
|
431
431
|
}) : (v = a.onConnectionStateChange) == null || v.call(a, S.Connected);
|
|
432
432
|
break;
|
|
433
433
|
case s.Disconnected:
|
|
434
|
-
n("LiveKit room disconnected"),
|
|
434
|
+
n("LiveKit room disconnected"), M = !1, (k = a.onConnectionStateChange) == null || k.call(a, S.Disconnected);
|
|
435
435
|
break;
|
|
436
436
|
case s.Reconnecting:
|
|
437
437
|
n("LiveKit room reconnecting..."), (b = a.onConnectionStateChange) == null || b.call(a, S.Connecting);
|
|
@@ -521,7 +521,7 @@ async function Dt(e, t, i) {
|
|
|
521
521
|
}
|
|
522
522
|
return null;
|
|
523
523
|
}
|
|
524
|
-
function
|
|
524
|
+
function E(l) {
|
|
525
525
|
if (!A || !A.track)
|
|
526
526
|
return !1;
|
|
527
527
|
const g = A.track.mediaStreamTrack;
|
|
@@ -529,7 +529,7 @@ async function Dt(e, t, i) {
|
|
|
529
529
|
}
|
|
530
530
|
async function P(l) {
|
|
531
531
|
var V, z;
|
|
532
|
-
if (!
|
|
532
|
+
if (!M || !u)
|
|
533
533
|
throw n("Room is not connected, cannot publish microphone stream"), new Error("Room is not connected");
|
|
534
534
|
const g = l.getAudioTracks();
|
|
535
535
|
if (g.length === 0) {
|
|
@@ -544,7 +544,7 @@ async function Dt(e, t, i) {
|
|
|
544
544
|
}), A = b;
|
|
545
545
|
return;
|
|
546
546
|
}
|
|
547
|
-
|
|
547
|
+
E(v) && (n("Unpublishing existing microphone track before publishing new one"), await Z()), n("Publishing microphone track from provided MediaStream", { trackId: v.id });
|
|
548
548
|
try {
|
|
549
549
|
A = await u.localParticipant.publishTrack(v, {
|
|
550
550
|
source: k.Source.Microphone
|
|
@@ -568,7 +568,7 @@ async function Dt(e, t, i) {
|
|
|
568
568
|
}
|
|
569
569
|
async function w(l, g) {
|
|
570
570
|
var v, k;
|
|
571
|
-
if (!
|
|
571
|
+
if (!M || !u) {
|
|
572
572
|
n("Room is not connected for sending messages"), (v = a.onError) == null || v.call(a, new Error(le), {
|
|
573
573
|
sessionId: B
|
|
574
574
|
});
|
|
@@ -598,7 +598,7 @@ async function Dt(e, t, i) {
|
|
|
598
598
|
}
|
|
599
599
|
async function pe() {
|
|
600
600
|
var l, g;
|
|
601
|
-
L && (clearTimeout(L), L = null), u && (await Z(), await u.disconnect()), h(),
|
|
601
|
+
L && (clearTimeout(L), L = null), u && (await Z(), await u.disconnect()), h(), M = !1, (l = a.onConnectionStateChange) == null || l.call(a, S.Disconnected), (g = a.onAgentActivityStateChange) == null || g.call(a, ae.Idle);
|
|
602
602
|
}
|
|
603
603
|
return {
|
|
604
604
|
speak(l) {
|
|
@@ -620,7 +620,7 @@ async function Dt(e, t, i) {
|
|
|
620
620
|
throw n("Cannot reconnect: missing room, URL or token"), new Error("Cannot reconnect: session not available");
|
|
621
621
|
n("Reconnecting to LiveKit room, state:", u.state), (l = a.onConnectionStateChange) == null || l.call(a, S.Connecting);
|
|
622
622
|
try {
|
|
623
|
-
if (await u.connect(X, K), n("Room reconnected"),
|
|
623
|
+
if (await u.connect(X, K), n("Room reconnected"), M = !0, u.remoteParticipants.size === 0) {
|
|
624
624
|
if (n("Waiting for agent to join..."), !await new Promise((b) => {
|
|
625
625
|
const V = setTimeout(() => {
|
|
626
626
|
u == null || u.off(o.ParticipantConnected, z), b(!1);
|
|
@@ -648,13 +648,13 @@ async function Dt(e, t, i) {
|
|
|
648
648
|
triggersAvailable: !1
|
|
649
649
|
};
|
|
650
650
|
}
|
|
651
|
-
const
|
|
651
|
+
const Et = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
652
652
|
__proto__: null,
|
|
653
653
|
DataChannelTopic: Te,
|
|
654
654
|
createLiveKitStreamingManager: Dt,
|
|
655
655
|
handleInitError: ke
|
|
656
656
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
657
|
-
function
|
|
657
|
+
function Mt(e, t, i) {
|
|
658
658
|
if (!e)
|
|
659
659
|
throw new Error("Please connect to the agent first");
|
|
660
660
|
if (!e.interruptAvailable)
|
|
@@ -734,14 +734,16 @@ function bt(e) {
|
|
|
734
734
|
function jt(e, t, i) {
|
|
735
735
|
if (!e.content)
|
|
736
736
|
return;
|
|
737
|
-
const n =
|
|
737
|
+
const n = t.messages[t.messages.length - 1];
|
|
738
|
+
(n == null ? void 0 : n.role) === "assistant" && !n.interrupted && (n.interrupted = !0);
|
|
739
|
+
const c = {
|
|
738
740
|
id: e.id || `user-${Date.now()}`,
|
|
739
741
|
role: e.role,
|
|
740
742
|
content: e.content,
|
|
741
743
|
created_at: e.created_at || (/* @__PURE__ */ new Date()).toISOString(),
|
|
742
744
|
transcribed: !0
|
|
743
745
|
};
|
|
744
|
-
t.messages.push(
|
|
746
|
+
t.messages.push(c), i == null || i([...t.messages], "user");
|
|
745
747
|
}
|
|
746
748
|
function Lt(e, t, i, n, c) {
|
|
747
749
|
if (e === Y.Transcribe && t.content) {
|
|
@@ -781,12 +783,12 @@ function $t(e, t, i, n, c) {
|
|
|
781
783
|
mode: t.chatMode
|
|
782
784
|
});
|
|
783
785
|
} else {
|
|
784
|
-
const m = N, p = [m.StreamVideoDone, m.StreamVideoError, m.StreamVideoRejected], u = [m.StreamFailed, m.StreamVideoError, m.StreamVideoRejected],
|
|
786
|
+
const m = N, p = [m.StreamVideoDone, m.StreamVideoError, m.StreamVideoRejected], u = [m.StreamFailed, m.StreamVideoError, m.StreamVideoRejected], M = wt(a, n, { mode: t.chatMode });
|
|
785
787
|
if (s = s, s === m.StreamVideoCreated)
|
|
786
|
-
e.linkTrack("agent-video",
|
|
788
|
+
e.linkTrack("agent-video", M, m.StreamVideoCreated, ["start"]);
|
|
787
789
|
else if (p.includes(s)) {
|
|
788
790
|
const x = s.split("/")[1];
|
|
789
|
-
u.includes(s) ? e.track("agent-video", { ...
|
|
791
|
+
u.includes(s) ? e.track("agent-video", { ...M, event: x }) : e.linkTrack("agent-video", { ...M, event: x }, s, ["done"]);
|
|
790
792
|
}
|
|
791
793
|
u.includes(s) && ((d = (r = i.callbacks).onError) == null || d.call(r, new Error(`Stream failed with event ${s}`), { data: a })), a.event === m.StreamDone && c();
|
|
792
794
|
}
|
|
@@ -794,7 +796,7 @@ function $t(e, t, i, n, c) {
|
|
|
794
796
|
};
|
|
795
797
|
}
|
|
796
798
|
function xt(e, t, i, n) {
|
|
797
|
-
const c =
|
|
799
|
+
const c = Me(e, `${t}/agents/${i}`, n);
|
|
798
800
|
return {
|
|
799
801
|
createStream(o, s) {
|
|
800
802
|
return c.post("/streams", o, { signal: s });
|
|
@@ -979,9 +981,9 @@ function Wt() {
|
|
|
979
981
|
}
|
|
980
982
|
function Ot(e, t, i, n, c) {
|
|
981
983
|
let o = [], s, a = 0, r = !1, d = ee.Unknown, m = ee.Unknown, p = 0, u = 0;
|
|
982
|
-
const
|
|
984
|
+
const M = Wt();
|
|
983
985
|
return setInterval(async () => {
|
|
984
|
-
const x = await e.getStats(), { isReceiving: O, avgJitterDelayInInterval: I, freezeCount: A } =
|
|
986
|
+
const x = await e.getStats(), { isReceiving: O, avgJitterDelayInInterval: I, freezeCount: A } = M(x), L = zt(x);
|
|
985
987
|
if (O)
|
|
986
988
|
a = 0, p = A - u, m = I < Jt ? ee.Strong : I > Ut && p > 1 ? ee.Weak : d, m !== d && (c == null || c(m), d = m, u += p, p = 0), r || (n == null || n(C.Start), s = o[o.length - 1], o = [], r = !0), o.push(L);
|
|
987
989
|
else if (r && (a++, a >= Kt)) {
|
|
@@ -1056,7 +1058,7 @@ function $e({
|
|
|
1056
1058
|
async function Xt(e, t, { debug: i = !1, callbacks: n, auth: c, baseURL: o = fe, analytics: s }, a) {
|
|
1057
1059
|
var Z;
|
|
1058
1060
|
const r = We(i, "WebRTCStreamingManager"), d = Ht(r);
|
|
1059
|
-
let m = !1, p = !1, u = C.Stop,
|
|
1061
|
+
let m = !1, p = !1, u = C.Stop, M = C.Stop;
|
|
1060
1062
|
const { startConnection: x, sendStreamRequest: O, close: I, createStream: A, addIceCandidate: L } = xt(
|
|
1061
1063
|
c,
|
|
1062
1064
|
o,
|
|
@@ -1087,7 +1089,7 @@ async function Xt(e, t, { debug: i = !1, callbacks: n, auth: c, baseURL: o = fe,
|
|
|
1087
1089
|
W,
|
|
1088
1090
|
H,
|
|
1089
1091
|
(h, w) => $e({
|
|
1090
|
-
statsSignal:
|
|
1092
|
+
statsSignal: M = h,
|
|
1091
1093
|
dataChannelSignal: D === ne.Legacy ? u : void 0,
|
|
1092
1094
|
onVideoStateChange: n.onVideoStateChange,
|
|
1093
1095
|
onAgentActivityStateChange: n.onAgentActivityStateChange,
|
|
@@ -1129,7 +1131,7 @@ async function Xt(e, t, { debug: i = !1, callbacks: n, auth: c, baseURL: o = fe,
|
|
|
1129
1131
|
j(F.videoId);
|
|
1130
1132
|
}
|
|
1131
1133
|
h === N.StreamDone && j(null), u = h === N.StreamStarted ? C.Start : C.Stop, $e({
|
|
1132
|
-
statsSignal: D === ne.Legacy ?
|
|
1134
|
+
statsSignal: D === ne.Legacy ? M : void 0,
|
|
1133
1135
|
dataChannelSignal: u,
|
|
1134
1136
|
onVideoStateChange: n.onVideoStateChange,
|
|
1135
1137
|
onAgentActivityStateChange: n.onAgentActivityStateChange,
|
|
@@ -1141,7 +1143,7 @@ async function Xt(e, t, { debug: i = !1, callbacks: n, auth: c, baseURL: o = fe,
|
|
|
1141
1143
|
const F = typeof w == "string" ? w : w == null ? void 0 : w.metadata;
|
|
1142
1144
|
F && s.enrich({ streamMetadata: F }), (Q = n.onStreamReady) == null || Q.call(n);
|
|
1143
1145
|
}
|
|
1144
|
-
const
|
|
1146
|
+
const E = {
|
|
1145
1147
|
[N.StreamStarted]: J,
|
|
1146
1148
|
[N.StreamDone]: J,
|
|
1147
1149
|
[N.StreamReady]: G
|
|
@@ -1149,7 +1151,7 @@ async function Xt(e, t, { debug: i = !1, callbacks: n, auth: c, baseURL: o = fe,
|
|
|
1149
1151
|
$.onmessage = (h) => {
|
|
1150
1152
|
var Q;
|
|
1151
1153
|
const { subject: w, data: F } = d(h.data);
|
|
1152
|
-
(Q =
|
|
1154
|
+
(Q = E[w]) == null || Q.call(E, w, F);
|
|
1153
1155
|
}, y.oniceconnectionstatechange = () => {
|
|
1154
1156
|
var w;
|
|
1155
1157
|
r("peerConnection.oniceconnectionstatechange => " + y.iceConnectionState);
|
|
@@ -1233,7 +1235,7 @@ async function Yt(e, t, i, n) {
|
|
|
1233
1235
|
const { version: o, ...s } = t;
|
|
1234
1236
|
switch (s.transport_provider) {
|
|
1235
1237
|
case he.Livekit:
|
|
1236
|
-
const { createLiveKitStreamingManager: a } = await Promise.resolve().then(() =>
|
|
1238
|
+
const { createLiveKitStreamingManager: a } = await Promise.resolve().then(() => Et);
|
|
1237
1239
|
return a(c, s, i);
|
|
1238
1240
|
default:
|
|
1239
1241
|
throw new Error(`Unsupported transport provider: ${s.transport_provider}`);
|
|
@@ -1263,7 +1265,7 @@ function en(e) {
|
|
|
1263
1265
|
}, ...i && { end_user_data: i } };
|
|
1264
1266
|
}
|
|
1265
1267
|
function tn(e, t) {
|
|
1266
|
-
return
|
|
1268
|
+
return Ee(e.presenter.type) ? { version: De.V2, ...Gt() } : { version: De.V1, ...en(t) };
|
|
1267
1269
|
}
|
|
1268
1270
|
function nn(e, t, i, n, c) {
|
|
1269
1271
|
c === ne.Fluent ? rn(e, t, i, n, c) : on(e, t, i, n, c);
|
|
@@ -1366,9 +1368,9 @@ function xe(e, t, i, n) {
|
|
|
1366
1368
|
});
|
|
1367
1369
|
}
|
|
1368
1370
|
async function sn(e, t, i, n, c) {
|
|
1369
|
-
var m, p, u,
|
|
1371
|
+
var m, p, u, M;
|
|
1370
1372
|
const o = async () => {
|
|
1371
|
-
if (
|
|
1373
|
+
if (Ee(e.presenter.type)) {
|
|
1372
1374
|
const x = await xe(e, t, n), O = `${Zt}_${x.sessionId}`, I = (/* @__PURE__ */ new Date()).toISOString();
|
|
1373
1375
|
return { chatResult: {
|
|
1374
1376
|
chatMode: U.Functional,
|
|
@@ -1403,7 +1405,7 @@ async function sn(e, t, i, n, c) {
|
|
|
1403
1405
|
}
|
|
1404
1406
|
}
|
|
1405
1407
|
}, { chatResult: s, streamingManager: a } = await o(), { chat: r, chatMode: d } = s;
|
|
1406
|
-
return d && t.mode !== void 0 && d !== t.mode && (t.mode = d, (p = (m = t.callbacks).onModeChange) == null || p.call(m, d), d !== U.Functional) ? ((
|
|
1408
|
+
return d && t.mode !== void 0 && d !== t.mode && (t.mode = d, (p = (m = t.callbacks).onModeChange) == null || p.call(m, d), d !== U.Functional) ? ((M = (u = t.callbacks).onError) == null || M.call(u, new qe(d)), a == null || a.disconnect(), { chat: r }) : { chat: r, streamingManager: a };
|
|
1407
1409
|
}
|
|
1408
1410
|
async function un(e, t) {
|
|
1409
1411
|
var B, K, X;
|
|
@@ -1421,7 +1423,7 @@ async function un(e, t) {
|
|
|
1421
1423
|
be(() => {
|
|
1422
1424
|
d.track("agent-sdk", { event: "init" }, m);
|
|
1423
1425
|
});
|
|
1424
|
-
const p = mt(t.auth, s, t.callbacks.onError, t.externalId), u = await p.getById(e),
|
|
1426
|
+
const p = mt(t.auth, s, t.callbacks.onError, t.externalId), u = await p.getById(e), M = Ee(u.presenter.type);
|
|
1425
1427
|
d.enrich(ht(u));
|
|
1426
1428
|
const { onMessage: x, clearQueue: O } = $t(
|
|
1427
1429
|
d,
|
|
@@ -1441,9 +1443,9 @@ async function un(e, t) {
|
|
|
1441
1443
|
d.track("agent-sdk", { event: "loaded", ...gt(u) }, A);
|
|
1442
1444
|
});
|
|
1443
1445
|
async function L(f) {
|
|
1444
|
-
var W, H, q, j, J, G,
|
|
1446
|
+
var W, H, q, j, J, G, E;
|
|
1445
1447
|
(H = (W = t.callbacks).onConnectionStateChange) == null || H.call(W, S.Connecting), te.reset(), f && !i && (delete r.chat, (j = (q = t.callbacks).onNewMessage) == null || j.call(q, [...r.messages], "answer"));
|
|
1446
|
-
const R = a === U.DirectPlayback ||
|
|
1448
|
+
const R = a === U.DirectPlayback || M ? Promise.resolve(void 0) : Pt(
|
|
1447
1449
|
t.auth,
|
|
1448
1450
|
o,
|
|
1449
1451
|
{ onMessage: x, onError: t.callbacks.onError },
|
|
@@ -1471,7 +1473,7 @@ async function un(e, t) {
|
|
|
1471
1473
|
var Z, h;
|
|
1472
1474
|
throw re(U.Maintenance), (h = (Z = t.callbacks).onConnectionStateChange) == null || h.call(Z, S.Fail), P;
|
|
1473
1475
|
}), [$, { streamingManager: D, chat: _ }] = await Promise.all([R, y]);
|
|
1474
|
-
_ && _.id !== ((J = r.chat) == null ? void 0 : J.id) && ((
|
|
1476
|
+
_ && _.id !== ((J = r.chat) == null ? void 0 : J.id) && ((E = (G = t.callbacks).onNewChat) == null || E.call(G, _.id)), r.streamingManager = D, r.socketManager = $, r.chat = _, i = !1, d.enrich({
|
|
1475
1477
|
chatId: _ == null ? void 0 : _.id,
|
|
1476
1478
|
streamId: D == null ? void 0 : D.streamId,
|
|
1477
1479
|
mode: r.chatMode
|
|
@@ -1511,7 +1513,7 @@ async function un(e, t) {
|
|
|
1511
1513
|
},
|
|
1512
1514
|
async reconnect() {
|
|
1513
1515
|
const f = r.streamingManager;
|
|
1514
|
-
if (
|
|
1516
|
+
if (M && (f != null && f.reconnect)) {
|
|
1515
1517
|
try {
|
|
1516
1518
|
await f.reconnect(), d.track("agent-chat", {
|
|
1517
1519
|
event: "reconnect",
|
|
@@ -1577,17 +1579,17 @@ async function un(e, t) {
|
|
|
1577
1579
|
r.chat = G.chat, (J = (j = t.callbacks).onNewChat) == null || J.call(j, r.chat.id);
|
|
1578
1580
|
}
|
|
1579
1581
|
return r.chat.id;
|
|
1580
|
-
}, $ = async (j, J) => ve(
|
|
1581
|
-
var
|
|
1582
|
-
return await ((P = (
|
|
1582
|
+
}, $ = async (j, J) => ve(M ? async () => {
|
|
1583
|
+
var E, P;
|
|
1584
|
+
return await ((P = (E = r.streamingManager) == null ? void 0 : E.sendTextMessage) == null ? void 0 : P.call(E, f)), Promise.resolve({});
|
|
1583
1585
|
} : async () => {
|
|
1584
|
-
var
|
|
1586
|
+
var E, P;
|
|
1585
1587
|
return p.chat(
|
|
1586
1588
|
u.id,
|
|
1587
1589
|
J,
|
|
1588
1590
|
{
|
|
1589
1591
|
chatMode: r.chatMode,
|
|
1590
|
-
streamId: (
|
|
1592
|
+
streamId: (E = r.streamingManager) == null ? void 0 : E.streamId,
|
|
1591
1593
|
sessionId: (P = r.streamingManager) == null ? void 0 : P.sessionId,
|
|
1592
1594
|
messages: j.map(({ matches: Z, ...h }) => h)
|
|
1593
1595
|
},
|
|
@@ -1598,10 +1600,10 @@ async function un(e, t) {
|
|
|
1598
1600
|
);
|
|
1599
1601
|
}, {
|
|
1600
1602
|
limit: 2,
|
|
1601
|
-
shouldRetryFn: (
|
|
1603
|
+
shouldRetryFn: (E) => {
|
|
1602
1604
|
var h, w, F, Q;
|
|
1603
|
-
const P = (h =
|
|
1604
|
-
return !((w =
|
|
1605
|
+
const P = (h = E == null ? void 0 : E.message) == null ? void 0 : h.includes("missing or invalid session_id");
|
|
1606
|
+
return !((w = E == null ? void 0 : E.message) == null ? void 0 : w.includes("Stream Error")) && !P ? ((Q = (F = t.callbacks).onError) == null || Q.call(F, E), !1) : !0;
|
|
1605
1607
|
},
|
|
1606
1608
|
onRetry: async () => {
|
|
1607
1609
|
await T(), await L(!1);
|
|
@@ -1718,7 +1720,7 @@ async function un(e, t) {
|
|
|
1718
1720
|
type: f || "click",
|
|
1719
1721
|
video_duration_to_interrupt: Ce.get(!0),
|
|
1720
1722
|
message_duration_to_interrupt: te.get(!0)
|
|
1721
|
-
}), R.interrupted = !0, ($ = (y = t.callbacks).onNewMessage) == null || $.call(y, [...r.messages], "answer"),
|
|
1723
|
+
}), R.interrupted = !0, ($ = (y = t.callbacks).onNewMessage) == null || $.call(y, [...r.messages], "answer"), M ? Tt(r.streamingManager) : (Mt(r.streamingManager, (D = r.streamingManager) == null ? void 0 : D.streamType, n), It(r.streamingManager, n));
|
|
1722
1724
|
}
|
|
1723
1725
|
};
|
|
1724
1726
|
}
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(W,Ce){typeof exports=="object"&&typeof module<"u"?Ce(exports):typeof define=="function"&&define.amd?define(["exports"],Ce):(W=typeof globalThis<"u"?globalThis:W||self,Ce(W.index={}))})(this,function(W){"use strict";var vf=Object.defineProperty;var yf=(W,Ce,Et)=>Ce in W?vf(W,Ce,{enumerable:!0,configurable:!0,writable:!0,value:Et}):W[Ce]=Et;var Cn=(W,Ce,Et)=>yf(W,typeof Ce!="symbol"?Ce+"":Ce,Et);class Ce extends Error{constructor({kind:t,description:i,error:r}){super(JSON.stringify({kind:t,description:i}));Cn(this,"kind");Cn(this,"description");Cn(this,"error");this.kind=t,this.description=i,this.error=r}}class Et extends Ce{constructor(e,t){super({kind:"ChatCreationFailed",description:`Failed to create ${t?"persistent":""} chat, mode: ${e}`})}}class Lr extends Ce{constructor(e){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${e}`})}}class Pt extends Ce{constructor(t,i){super({kind:"ValidationError",description:t});Cn(this,"key");this.key=i}}class Nr extends Ce{constructor(e){super({kind:"WSError",description:e})}}var Ur=(n=>(n.TRIAL="trial",n.BASIC="basic",n.ENTERPRISE="enterprise",n.LITE="lite",n.ADVANCED="advanced",n))(Ur||{}),Fr=(n=>(n.TRIAL="deid-trial",n.PRO="deid-pro",n.ENTERPRISE="deid-enterprise",n.LITE="deid-lite",n.ADVANCED="deid-advanced",n.BUILD="deid-api-build",n.LAUNCH="deid-api-launch",n.SCALE="deid-api-scale",n))(Fr||{}),jr=(n=>(n.Created="created",n.Started="started",n.Done="done",n.Error="error",n.Rejected="rejected",n.Ready="ready",n))(jr||{}),Br=(n=>(n.Unrated="Unrated",n.Positive="Positive",n.Negative="Negative",n))(Br||{}),ye=(n=>(n.Functional="Functional",n.TextOnly="TextOnly",n.Maintenance="Maintenance",n.Playground="Playground",n.DirectPlayback="DirectPlayback",n.Off="Off",n))(ye||{}),Le=(n=>(n.Embed="embed",n.Query="query",n.Partial="partial",n.Answer="answer",n.Transcribe="transcribe",n.Complete="done",n))(Le||{}),Vr=(n=>(n.KnowledgeProcessing="knowledge/processing",n.KnowledgeIndexing="knowledge/indexing",n.KnowledgeFailed="knowledge/error",n.KnowledgeDone="knowledge/done",n))(Vr||{}),qr=(n=>(n.Knowledge="knowledge",n.Document="document",n.Record="record",n))(qr||{}),Kr=(n=>(n.Pdf="pdf",n.Text="text",n.Html="html",n.Word="word",n.Json="json",n.Markdown="markdown",n.Csv="csv",n.Excel="excel",n.Powerpoint="powerpoint",n.Archive="archive",n.Image="image",n.Audio="audio",n.Video="video",n))(Kr||{}),ri=(n=>(n.Clip="clip",n.Talk="talk",n.Expressive="expressive",n))(ri||{});const yc=n=>{switch(n){case"clip":return"clip";case"talk":return"talk";case"expressive":return"expressive";default:throw new Error(`Unknown video type: ${n}`)}};var $=(n=>(n.Start="START",n.Stop="STOP",n))($||{}),Ke=(n=>(n.Strong="STRONG",n.Weak="WEAK",n.Unknown="UNKNOWN",n))(Ke||{}),Ye=(n=>(n.Idle="IDLE",n.Talking="TALKING",n))(Ye||{}),fe=(n=>(n.ChatAnswer="chat/answer",n.ChatPartial="chat/partial",n.ChatAudioTranscribed="chat/audio-transcribed",n.StreamDone="stream/done",n.StreamStarted="stream/started",n.StreamFailed="stream/error",n.StreamReady="stream/ready",n.StreamCreated="stream/created",n.StreamInterrupt="stream/interrupt",n.StreamVideoCreated="stream-video/started",n.StreamVideoDone="stream-video/done",n.StreamVideoError="stream-video/error",n.StreamVideoRejected="stream-video/rejected",n))(fe||{}),Q=(n=>(n.New="new",n.Fail="fail",n.Connected="connected",n.Connecting="connecting",n.Closed="closed",n.Completed="completed",n.Disconnected="disconnected",n))(Q||{}),ze=(n=>(n.Legacy="legacy",n.Fluent="fluent",n))(ze||{}),Xt=(n=>(n.Livekit="livekit",n))(Xt||{}),zr=(n=>(n.Amazon="amazon",n.AzureOpenAi="azure-openai",n.Microsoft="microsoft",n.Afflorithmics="afflorithmics",n.Elevenlabs="elevenlabs",n))(zr||{}),Wr=(n=>(n.Public="public",n.Premium="premium",n.Private="private",n))(Wr||{});const bc=45*1e3,kc="X-Playground-Chat",Zt="https://api.d-id.com",Tc="wss://notifications.d-id.com",Sc="79f81a83a67430be2bc0fd61042b8faa",Gr=n=>new Promise(e=>setTimeout(e,n)),Nt=(n=16)=>{const e=new Uint8Array(n);return window.crypto.getRandomValues(e),Array.from(e,t=>t.toString(16).padStart(2,"0")).join("").slice(0,13)},Hr=n=>n.type==="clip"&&n.presenter_id.startsWith("v2_")?"clip_v2":n.type,si=n=>n===ri.Expressive,Cc=n=>[ye.TextOnly,ye.Playground,ye.Maintenance].includes(n),Jr=n=>n&&[ye.DirectPlayback,ye.Off].includes(n);function Ec(n,e){let t;return{promise:new Promise((r,s)=>{t=setTimeout(()=>s(new Error(e)),n)}),clear:()=>clearTimeout(t)}}async function ai(n,e){const t={limit:(e==null?void 0:e.limit)??3,delayMs:(e==null?void 0:e.delayMs)??0,timeout:(e==null?void 0:e.timeout)??3e4,timeoutErrorMessage:(e==null?void 0:e.timeoutErrorMessage)||"Timeout error",shouldRetryFn:(e==null?void 0:e.shouldRetryFn)??(()=>!0),onRetry:(e==null?void 0:e.onRetry)??(()=>{})};let i;for(let r=1;r<=t.limit;r++)try{if(!t.timeout)return await n();const{promise:s,clear:o}=Ec(t.timeout,t.timeoutErrorMessage),a=n().finally(o);return await Promise.race([a,s])}catch(s){if(i=s,!t.shouldRetryFn(s)||r>=t.limit)throw s;await Gr(t.delayMs),t.onRetry(s)}throw i}function oi(n){if(n!==void 0)return window.localStorage.setItem("did_external_key_id",n),n;let e=window.localStorage.getItem("did_external_key_id");if(!e){let t=Nt();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let Pc=Nt();function $r(n,e){if(n.type==="bearer")return`Bearer ${n.token}`;if(n.type==="basic")return`Basic ${btoa(`${n.username}:${n.password}`)}`;if(n.type==="key")return`Client-Key ${n.clientKey}.${oi(e)}_${Pc}`;throw new Error(`Unknown auth type: ${n}`)}const wc=n=>ai(n,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:e=>e.status===429});function ci(n,e=Zt,t,i){const r=async(s,o)=>{const{skipErrorHandler:a,...c}=o||{},d=await wc(()=>fetch(e+(s!=null&&s.startsWith("/")?s:`/${s}`),{...c,headers:{...c.headers,Authorization:$r(n,i),"Content-Type":"application/json"}}));if(!d.ok){let u=await d.text().catch(()=>`Failed to fetch with status ${d.status}`);const l=new Error(u);throw t&&!a&&t(l,{url:s,options:c,headers:d.headers}),l}return d.json()};return{get(s,o){return r(s,{...o,method:"GET"})},post(s,o,a){return r(s,{...a,body:JSON.stringify(o),method:"POST"})},delete(s,o,a){return r(s,{...a,body:JSON.stringify(o),method:"DELETE"})},patch(s,o,a){return r(s,{...a,body:JSON.stringify(o),method:"PATCH"})}}}function Rc(n,e=Zt,t,i){const r=ci(n,`${e}/agents`,t,i);return{create(s,o){return r.post("/",s,o)},getAgents(s,o){return r.get(`/${s?`?tag=${s}`:""}`,o).then(a=>a??[])},getById(s,o){return r.get(`/${s}`,o)},delete(s,o){return r.delete(`/${s}`,void 0,o)},update(s,o,a){return r.patch(`/${s}`,o,a)},newChat(s,o,a){return r.post(`/${s}/chat`,o,a)},chat(s,o,a,c){return r.post(`/${s}/chat/${o}`,a,c)},createRating(s,o,a,c){return r.post(`/${s}/chat/${o}/ratings`,a,c)},updateRating(s,o,a,c,d){return r.patch(`/${s}/chat/${o}/ratings/${a}`,c,d)},deleteRating(s,o,a,c){return r.delete(`/${s}/chat/${o}/ratings/${a}`,c)},getSTTToken(s,o){return r.get(`/${s}/stt-token`,o)}}}function _c(n){var r,s,o,a;const e=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",t=()=>{const c=navigator.platform;return c.toLowerCase().includes("win")?"Windows":c.toLowerCase().includes("mac")?"Mac OS X":c.toLowerCase().includes("linux")?"Linux":"Unknown"},i=n.presenter;return{$os:`${t()}`,isMobile:`${e()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:Hr(i),agentVoice:{voiceId:(s=(r=n.presenter)==null?void 0:r.voice)==null?void 0:s.voice_id,provider:(a=(o=n.presenter)==null?void 0:o.voice)==null?void 0:a.type}}}function Ic(n){var t,i,r,s,o,a;const e=(t=n.llm)==null?void 0:t.prompt_customization;return{agentType:Hr(n.presenter),owner_id:n.owner_id??"",promptVersion:(i=n.llm)==null?void 0:i.prompt_version,behavior:{role:e==null?void 0:e.role,personality:e==null?void 0:e.personality,instructions:(r=n.llm)==null?void 0:r.instructions},temperature:(s=n.llm)==null?void 0:s.temperature,knowledgeSource:e==null?void 0:e.knowledge_source,starterQuestionsCount:(a=(o=n.knowledge)==null?void 0:o.starter_message)==null?void 0:a.length,topicsToAvoid:e==null?void 0:e.topics_to_avoid,maxResponseLength:e==null?void 0:e.max_response_length,agentId:n.id,access:n.access,name:n.preview_name,...n.access==="public"?{from:"agent-template"}:{}}}const Dc=n=>n.reduce((e,t)=>e+t,0),Qr=n=>Dc(n)/n.length;function Mc(n,e,t){var c,d,u;const{event:i,...r}=n,{template:s}=(e==null?void 0:e.llm)||{},{language:o}=((c=e==null?void 0:e.presenter)==null?void 0:c.voice)||{};return{...r,llm:{...r.llm,template:s},script:{...r.script,provider:{...(d=r==null?void 0:r.script)==null?void 0:d.provider,language:o}},stitch:(e==null?void 0:e.presenter.type)==="talk"?(u=e==null?void 0:e.presenter)==null?void 0:u.stitch:void 0,...t}}function Yr(n){"requestIdleCallback"in window?requestIdleCallback(n,{timeout:2e3}):setTimeout(n,0)}let di={};const Oc="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function Ac(n){const e=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk";return{token:n.token||"testKey",distinct_id:oi(n.externalId),agentId:n.agentId,additionalProperties:{id:oi(n.externalId),...n.mixpanelAdditionalProperties||{}},isEnabled:n.isEnabled??!0,getRandom:Nt,enrich(t){this.additionalProperties={...this.additionalProperties,...t}},async track(t,i,r){if(!this.isEnabled)return Promise.resolve();const{audioPath:s,...o}=i||{},a=r||Date.now(),c={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...this.additionalProperties,...o,agentId:this.agentId,source:e,token:this.token,time:a,$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerWidth,"Screen Width":window.screen.width||window.innerHeight,"User Agent":navigator.userAgent}}])})};return fetch(Oc,{...c,keepalive:!0}).catch(d=>console.error("Analytics tracking error:",d)),Promise.resolve()},linkTrack(t,i,r,s){di[t]||(di[t]={events:{},resolvedDependencies:[]}),s.includes(r)||s.push(r);const o=di[t];if(o.events[r]={props:i},o.resolvedDependencies.push(r),s.every(c=>o.resolvedDependencies.includes(c))){const c=s.reduce((d,u)=>o.events[u]?{...d,...o.events[u].props}:d,{});this.track(t,c),o.resolvedDependencies=o.resolvedDependencies.filter(d=>!s.includes(d)),s.forEach(d=>{delete o.events[d]})}}}}function ui(){let n=0;return{reset:()=>n=0,update:()=>n=Date.now(),get:(e=!1)=>e?Date.now()-n:n}}const Xe=ui(),li=ui(),Xr=ui();function Zr(n){return n===ye.Playground?{headers:{[kc]:"true"}}:{}}async function es(n,e,t,i,r=!1,s){try{return!s&&!Jr(i)&&(s=await e.newChat(n.id,{persist:r},Zr(i)),t.track("agent-chat",{event:"created",chatId:s.id,mode:i})),{chat:s,chatMode:(s==null?void 0:s.chat_mode)??i}}catch(o){throw xc(o)==="InsufficientCreditsError"?new Error("InsufficientCreditsError"):new Error("Cannot create new chat")}}const xc=n=>{try{const e=JSON.parse(n.message);return e==null?void 0:e.kind}catch{return"UnknownError"}};function Lc(n){return n&&n.length>0?n:[]}function Nc(n,e,t,i){const r=ci(n,`${e}/v2/agents/${t}`,i);return{async createStream(s){return r.post("/sessions",s)}}}const ts=(n,e)=>(t,i)=>n&&console.log(`[${e}] ${t}`,i??"");async function hi(){try{return await Promise.resolve().then(()=>gf)}catch{throw new Error("LiveKit client is required for this streaming manager. Please install it using: npm install livekit-client")}}const Uc={excellent:Ke.Strong,good:Ke.Strong,poor:Ke.Weak,lost:Ke.Unknown,unknown:Ke.Unknown},en=JSON.stringify({kind:"InternalServerError",description:"Stream Error"});var fi=(n=>(n.Chat="lk.chat",n.Speak="did.speak",n.Interrupt="did.interrupt",n))(fi||{});function mi(n,e,t,i){var r,s;throw e("Failed to connect to LiveKit room:",n),i(),(r=t.onConnectionStateChange)==null||r.call(t,Q.Fail),(s=t.onError)==null||s.call(t,n,{sessionId:""}),n}async function Fc(n,e,t){var gc,vc;const i=ts(t.debug||!1,"LiveKitStreamingManager"),{Room:r,RoomEvent:s,ConnectionState:o}=await hi(),{callbacks:a,auth:c,baseURL:d,analytics:u,microphoneStream:l}=t;let h=null,m=!1;const g=ze.Fluent;let p=!0,T=null,k=null;h=new r({adaptiveStream:!1,dynacast:!0});let _=null;const w=2e4,v=Nc(c,d||Zt,n,a.onError);let b,E,L;try{const N=await v.createStream({transport_provider:Xt.Livekit,chat_persist:e.chat_persist??!0}),{id:j,session_token:H,session_url:ee}=N;(gc=a.onStreamCreated)==null||gc.call(a,{session_id:j,stream_id:j,agent_id:n}),b=j,E=H,L=ee,await h.prepareConnection(L,E)}catch(N){mi(N,i,a,()=>{p=!1})}if(!L||!E||!b)return Promise.reject(new Error("Failed to initialize LiveKit stream"));h.on(s.ConnectionStateChanged,S).on(s.ConnectionQualityChanged,M).on(s.ActiveSpeakersChanged,R).on(s.ParticipantConnected,x).on(s.ParticipantDisconnected,U).on(s.TrackSubscribed,q).on(s.TrackUnsubscribed,re).on(s.DataReceived,ge).on(s.MediaDevicesError,Ee).on(s.EncryptionError,se).on(s.TrackSubscriptionFailed,de),(vc=a.onConnectionStateChange)==null||vc.call(a,Q.New);try{await h.connect(L,E),i("LiveKit room joined successfully"),_=setTimeout(()=>{var N;i("Track subscription timeout - no track subscribed within 30 seconds after connect"),_=null,u.track("connectivity-error",{error:"Track subscription timeout",sessionId:b}),(N=a.onError)==null||N.call(a,new Error("Track subscription timeout"),{sessionId:b}),xr()},w),p=!1}catch(N){mi(N,i,a,()=>{p=!1})}u.enrich({"stream-type":g});function S(N){var j,H,ee,le,xe;switch(i("Connection state changed:",N),N){case o.Connecting:(j=a.onConnectionStateChange)==null||j.call(a,Q.Connecting);break;case o.Connected:i("LiveKit room connected successfully"),m=!0,p?queueMicrotask(()=>{var ve;(ve=a.onConnectionStateChange)==null||ve.call(a,Q.Connected)}):(H=a.onConnectionStateChange)==null||H.call(a,Q.Connected);break;case o.Disconnected:i("LiveKit room disconnected"),m=!1,(ee=a.onConnectionStateChange)==null||ee.call(a,Q.Disconnected);break;case o.Reconnecting:i("LiveKit room reconnecting..."),(le=a.onConnectionStateChange)==null||le.call(a,Q.Connecting);break;case o.SignalReconnecting:i("LiveKit room signal reconnecting..."),(xe=a.onConnectionStateChange)==null||xe.call(a,Q.Connecting);break}}function M(N,j){var H;i("Connection quality:",N),j!=null&&j.isLocal&&((H=a.onConnectivityStateChange)==null||H.call(a,Uc[N]))}function R(N){var H,ee;i("Active speakers changed:",N),N[0]?(H=a.onAgentActivityStateChange)==null||H.call(a,Ye.Talking):(ee=a.onAgentActivityStateChange)==null||ee.call(a,Ye.Idle)}function x(N){i("Participant connected:",N.identity)}function U(N){i("Participant disconnected:",N.identity),xr()}function q(N,j,H){var le,xe,ve;i(`Track subscribed: ${N.kind} from ${H.identity}`),_&&(clearTimeout(_),_=null,i("Track subscription timeout cleared"));const ee=N.mediaStreamTrack;if(!ee){i(`No mediaStreamTrack available for ${N.kind}`);return}T?(T.addTrack(ee),i(`Added ${N.kind} track to shared MediaStream`)):(T=new MediaStream([ee]),i(`Created shared MediaStream with ${N.kind} track`)),N.kind==="video"&&((le=a.onStreamReady)==null||le.call(a),(xe=a.onSrcObjectReady)==null||xe.call(a,T),(ve=a.onVideoStateChange)==null||ve.call(a,$.Start))}function re(N,j,H){var ee;i(`Track unsubscribed: ${N.kind} from ${H.identity}`),N.kind==="video"&&((ee=a.onVideoStateChange)==null||ee.call(a,$.Stop))}function ge(N,j,H,ee){var xe,ve,Sn;const le=new TextDecoder().decode(N);i("Data received:",le);try{const vt=JSON.parse(le),ii=ee||vt.subject;if(ii===fe.ChatAnswer){const Lt=Le.Answer;(xe=a.onMessage)==null||xe.call(a,Lt,{event:Lt,...vt})}else if([fe.StreamVideoCreated,fe.StreamVideoDone].includes(ii)){const Lt=(vt==null?void 0:vt.role)||(j==null?void 0:j.identity)||"datachannel";(ve=a.onMessage)==null||ve.call(a,ii,{[Lt]:vt})}else if(ii===fe.ChatAudioTranscribed){const Lt=Le.Transcribe;(Sn=a.onMessage)==null||Sn.call(a,Lt,{event:Lt,...vt})}}catch(vt){i("Failed to parse data channel message:",vt)}}function Ee(N){var j;i("Media devices error:",N),(j=a.onError)==null||j.call(a,new Error(en),{sessionId:b})}function se(N){var j;i("Encryption error:",N),(j=a.onError)==null||j.call(a,new Error(en),{sessionId:b})}function de(N,j,H){i("Track subscription failed:",{trackSid:N,participant:j,reason:H})}async function Ae(N){if(!h)return null;const{Track:j}=await hi(),H=h.localParticipant.audioTrackPublications;if(H){for(const[ee,le]of H)if(le.source===j.Source.Microphone&&le.track){const ve=le.track.mediaStreamTrack;if(ve===N||ve&&ve.id===N.id)return le}}return null}function Z(N){if(!k||!k.track)return!1;const j=k.track.mediaStreamTrack;return j!==N&&(j==null?void 0:j.id)!==N.id}async function te(N){var xe,ve;if(!m||!h)throw i("Room is not connected, cannot publish microphone stream"),new Error("Room is not connected");const j=N.getAudioTracks();if(j.length===0){i("No audio track found in the provided MediaStream");return}const H=j[0],{Track:ee}=await hi(),le=await Ae(H);if(le){i("Microphone track is already published, skipping",{trackId:H.id,publishedTrackId:(ve=(xe=le.track)==null?void 0:xe.mediaStreamTrack)==null?void 0:ve.id}),k=le;return}Z(H)&&(i("Unpublishing existing microphone track before publishing new one"),await we()),i("Publishing microphone track from provided MediaStream",{trackId:H.id});try{k=await h.localParticipant.publishTrack(H,{source:ee.Source.Microphone}),i("Microphone track published successfully",{trackSid:k.trackSid})}catch(Sn){throw i("Failed to publish microphone track:",Sn),Sn}}async function we(){if(!(!k||!k.track))try{h&&(await h.localParticipant.unpublishTrack(k.track),i("Microphone track unpublished"))}catch(N){i("Error unpublishing microphone track:",N)}finally{k=null}}function F(){T&&(T.getTracks().forEach(N=>N.stop()),T=null)}async function B(N,j){var H,ee;if(!m||!h){i("Room is not connected for sending messages"),(H=a.onError)==null||H.call(a,new Error(en),{sessionId:b});return}try{await h.localParticipant.sendText(N,{topic:j}),i("Message sent successfully:",N)}catch(le){i("Failed to send message:",le),(ee=a.onError)==null||ee.call(a,new Error(en),{sessionId:b})}}async function ue(N){var j;try{const ee=JSON.parse(N).topic;return B("",ee)}catch(H){i("Failed to send data channel message:",H),(j=a.onError)==null||j.call(a,new Error(en),{sessionId:b})}}function Se(N){return B(N,"lk.chat")}async function xr(){var N,j;_&&(clearTimeout(_),_=null),h&&(await we(),await h.disconnect()),F(),m=!1,(N=a.onConnectionStateChange)==null||N.call(a,Q.Disconnected),(j=a.onAgentActivityStateChange)==null||j.call(a,Ye.Idle)}return{speak(N){const j=typeof N=="string"?N:JSON.stringify(N);return B(j,"did.speak")},disconnect:xr,async reconnect(){var N,j,H;if((h==null?void 0:h.state)===o.Connected){i("Room is already connected");return}if(!h||!L||!E)throw i("Cannot reconnect: missing room, URL or token"),new Error("Cannot reconnect: session not available");i("Reconnecting to LiveKit room, state:",h.state),(N=a.onConnectionStateChange)==null||N.call(a,Q.Connecting);try{if(await h.connect(L,E),i("Room reconnected"),m=!0,h.remoteParticipants.size===0){if(i("Waiting for agent to join..."),!await new Promise(le=>{const xe=setTimeout(()=>{h==null||h.off(s.ParticipantConnected,ve),le(!1)},5e3),ve=()=>{clearTimeout(xe),h==null||h.off(s.ParticipantConnected,ve),le(!0)};h==null||h.on(s.ParticipantConnected,ve)}))throw i("Agent did not join within timeout"),await h.disconnect(),new Error("Agent did not rejoin the room");i("Agent joined")}(j=a.onConnectionStateChange)==null||j.call(a,Q.Connected)}catch(ee){throw i("Failed to reconnect:",ee),(H=a.onConnectionStateChange)==null||H.call(a,Q.Fail),ee}},sendDataChannelMessage:ue,sendTextMessage:Se,publishMicrophoneStream:te,unpublishMicrophoneStream:we,sessionId:b,streamId:b,streamType:g,interruptAvailable:!0,triggersAvailable:!1}}const jc=Object.freeze(Object.defineProperty({__proto__:null,DataChannelTopic:fi,createLiveKitStreamingManager:Fc,handleInitError:mi},Symbol.toStringTag,{value:"Module"}));function Bc(n,e,t){if(!n)throw new Error("Please connect to the agent first");if(!n.interruptAvailable)throw new Error("Interrupt is not enabled for this stream");if(e!==ze.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!t)throw new Error("No active video to interrupt")}async function Vc(n,e){const t={type:fe.StreamInterrupt,videoId:e,timestamp:Date.now()};n.sendDataChannelMessage(JSON.stringify(t))}async function qc(n){const e={topic:fi.Interrupt};n.sendDataChannelMessage(JSON.stringify(e))}function Kc(n){return new Promise((e,t)=>{const{callbacks:i,host:r,auth:s,externalId:o}=n,{onMessage:a=null,onOpen:c=null,onClose:d=null,onError:u=null}=i||{},l=new WebSocket(`${r}?authorization=${encodeURIComponent($r(s,o))}`);l.onmessage=a,l.onclose=d,l.onerror=h=>{console.error(h),u==null||u("Websocket failed to connect",h),t(h)},l.onopen=h=>{c==null||c(h),e(l)}})}async function zc(n){const{retries:e=1}=n;let t=null;for(let i=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;i++)try{t=await Kc(n)}catch(r){if(i===e)throw r;await Gr(i*500)}return t}async function Wc(n,e,t,i){const r=t!=null&&t.onMessage?[t.onMessage]:[],s=await zc({auth:n,host:e,externalId:i,callbacks:{onError:o=>{var a;return(a=t.onError)==null?void 0:a.call(t,new Nr(o))},onMessage(o){const a=JSON.parse(o.data);r.forEach(c=>c(a.event,a))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:o=>r.push(o)}}function Gc(n){if(n.answer!==void 0)return n.answer;let e=0,t="";for(;e in n;)t+=n[e++];return t}function Hc(n,e,t){if(!n.content)return;const i={id:n.id||`user-${Date.now()}`,role:n.role,content:n.content,created_at:n.created_at||new Date().toISOString(),transcribed:!0};e.messages.push(i),t==null||t([...e.messages],"user")}function Jc(n,e,t,i,r){if(n===Le.Transcribe&&e.content){Hc(e,i,r);return}if(!(n===Le.Partial||n===Le.Answer))return;const s=i.messages[i.messages.length-1];let o;if(s!=null&&s.transcribed&&s.role==="user")n===Le.Answer&&e.content,o={id:e.id||`assistant-${Date.now()}`,role:e.role||"assistant",content:e.content||"",created_at:e.created_at||new Date().toISOString()},i.messages.push(o);else if((s==null?void 0:s.role)==="assistant")o=s;else return;const{content:a,sequence:c}=e;n===Le.Partial?t[c]=a:t.answer=a;const d=Gc(t);(o.content!==d||n===Le.Answer)&&(o.content=d,r==null||r([...i.messages],n))}function $c(n,e,t,i,r){let s={};return{clearQueue:()=>s={},onMessage:(o,a)=>{var c,d;if("content"in a){const u=o===fe.ChatAnswer?Le.Answer:o===fe.ChatAudioTranscribed?Le.Transcribe:o;Jc(u,a,s,e,t.callbacks.onNewMessage),u===Le.Answer&&n.track("agent-message-received",{messages:e.messages.length,mode:e.chatMode})}else{const u=fe,l=[u.StreamVideoDone,u.StreamVideoError,u.StreamVideoRejected],h=[u.StreamFailed,u.StreamVideoError,u.StreamVideoRejected],m=Mc(a,i,{mode:e.chatMode});if(o=o,o===u.StreamVideoCreated)n.linkTrack("agent-video",m,u.StreamVideoCreated,["start"]);else if(l.includes(o)){const g=o.split("/")[1];h.includes(o)?n.track("agent-video",{...m,event:g}):n.linkTrack("agent-video",{...m,event:g},o,["done"])}h.includes(o)&&((d=(c=t.callbacks).onError)==null||d.call(c,new Error(`Stream failed with event ${o}`),{data:a})),a.event===u.StreamDone&&r()}}}}function Qc(n,e,t,i){const r=ci(n,`${e}/agents/${t}`,i);return{createStream(s,o){return r.post("/streams",s,{signal:o})},startConnection(s,o,a,c){return r.post(`/streams/${s}/sdp`,{session_id:a,answer:o},{signal:c})},addIceCandidate(s,o,a,c){return r.post(`/streams/${s}/ice`,{session_id:a,...o},{signal:c})},sendStreamRequest(s,o,a){return r.post(`/streams/${s}`,{session_id:o,...a})},close(s,o){return r.delete(`/streams/${s}`,{session_id:o})}}}function Yc(n,e,t){const i=(e.timestamp-n.timestamp)/1e3;return{duration:i,bytesReceived:e.bytesReceived-n.bytesReceived,bitrate:Math.round((e.bytesReceived-n.bytesReceived)*8/i),packetsReceived:e.packetsReceived-n.packetsReceived,packetsLost:e.packetsLost-n.packetsLost,framesDropped:e.framesDropped-n.framesDropped,framesDecoded:e.framesDecoded-n.framesDecoded,jitter:e.jitter,avgJitterDelayInInterval:(e.jitterBufferDelay-n.jitterBufferDelay)/(e.jitterBufferEmittedCount-n.jitterBufferEmittedCount),jitterBufferEmittedCount:e.jitterBufferEmittedCount-n.jitterBufferEmittedCount,jitterBufferDelay:(e.jitterBufferDelay-n.jitterBufferDelay)/i,framesPerSecond:e.framesPerSecond,freezeCount:e.freezeCount-n.freezeCount,freezeDuration:e.freezeDuration-n.freezeDuration,lowFpsCount:t}}function Xc(n){return n.filter(e=>e.freezeCount>0||e.framesPerSecond<21||e.framesDropped>0||e.packetsLost>0).map(e=>{const{timestamp:t,...i}=e,r=[];return e.freezeCount>0&&r.push("freeze"),e.framesPerSecond<21&&r.push("low fps"),e.framesDropped>0&&r.push("frames dropped"),e.packetsLost>0&&r.push("packet loss"),{...i,causes:r}})}function Zc(n){let e="",t=0;for(const i of n.values()){if(i&&i.type==="codec"&&i.mimeType.startsWith("video")&&(e=i.mimeType.split("/")[1]),i&&i.type==="candidate-pair"){const r=i.currentRoundTripTime,o=i.nominated===!0;r>0&&(o||t===0)&&(t=r)}if(i&&i.type==="inbound-rtp"&&i.kind==="video")return{codec:e,rtt:t,timestamp:i.timestamp,bytesReceived:i.bytesReceived,packetsReceived:i.packetsReceived,packetsLost:i.packetsLost,framesDropped:i.framesDropped,framesDecoded:i.framesDecoded,jitter:i.jitter,jitterBufferDelay:i.jitterBufferDelay,jitterBufferEmittedCount:i.jitterBufferEmittedCount,avgJitterDelayInInterval:i.jitterBufferDelay/i.jitterBufferEmittedCount,frameWidth:i.frameWidth,frameHeight:i.frameHeight,framesPerSecond:i.framesPerSecond,freezeCount:i.freezeCount,freezeDuration:i.totalFreezesDuration}}return{}}function ed(n,e,t){const i=n.map((c,d)=>d===0?t?{timestamp:c.timestamp,duration:0,rtt:c.rtt,bytesReceived:c.bytesReceived-t.bytesReceived,bitrate:(c.bytesReceived-t.bytesReceived)*8/(e/1e3),packetsReceived:c.packetsReceived-t.packetsReceived,packetsLost:c.packetsLost-t.packetsLost,framesDropped:c.framesDropped-t.framesDropped,framesDecoded:c.framesDecoded-t.framesDecoded,jitter:c.jitter,jitterBufferDelay:c.jitterBufferDelay-t.jitterBufferDelay,jitterBufferEmittedCount:c.jitterBufferEmittedCount-t.jitterBufferEmittedCount,avgJitterDelayInInterval:(c.jitterBufferDelay-t.jitterBufferDelay)/(c.jitterBufferEmittedCount-t.jitterBufferEmittedCount),framesPerSecond:c.framesPerSecond,freezeCount:c.freezeCount-t.freezeCount,freezeDuration:c.freezeDuration-t.freezeDuration}:{timestamp:c.timestamp,rtt:c.rtt,duration:0,bytesReceived:c.bytesReceived,bitrate:c.bytesReceived*8/(e/1e3),packetsReceived:c.packetsReceived,packetsLost:c.packetsLost,framesDropped:c.framesDropped,framesDecoded:c.framesDecoded,jitter:c.jitter,jitterBufferDelay:c.jitterBufferDelay,jitterBufferEmittedCount:c.jitterBufferEmittedCount,avgJitterDelayInInterval:c.jitterBufferDelay/c.jitterBufferEmittedCount,framesPerSecond:c.framesPerSecond,freezeCount:c.freezeCount,freezeDuration:c.freezeDuration}:{timestamp:c.timestamp,duration:e*d/1e3,rtt:c.rtt,bytesReceived:c.bytesReceived-n[d-1].bytesReceived,bitrate:(c.bytesReceived-n[d-1].bytesReceived)*8/(e/1e3),packetsReceived:c.packetsReceived-n[d-1].packetsReceived,packetsLost:c.packetsLost-n[d-1].packetsLost,framesDropped:c.framesDropped-n[d-1].framesDropped,framesDecoded:c.framesDecoded-n[d-1].framesDecoded,jitter:c.jitter,jitterBufferDelay:c.jitterBufferDelay-n[d-1].jitterBufferDelay,jitterBufferEmittedCount:c.jitterBufferEmittedCount-n[d-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(c.jitterBufferDelay-n[d-1].jitterBufferDelay)/(c.jitterBufferEmittedCount-n[d-1].jitterBufferEmittedCount),framesPerSecond:c.framesPerSecond,freezeCount:c.freezeCount-n[d-1].freezeCount,freezeDuration:c.freezeDuration-n[d-1].freezeDuration}),r=Xc(i),s=r.reduce((c,d)=>c+(d.causes.includes("low fps")?1:0),0),o=i.filter(c=>!!c.avgJitterDelayInInterval).map(c=>c.avgJitterDelayInInterval),a=i.filter(c=>!!c.rtt).map(c=>c.rtt);return{webRTCStats:{anomalies:r,minRtt:Math.min(...a),avgRtt:Qr(a),maxRtt:Math.max(...a),aggregateReport:Yc(n[0],n[n.length-1],s),minJitterDelayInInterval:Math.min(...o),maxJitterDelayInInterval:Math.max(...o),avgJitterDelayInInterval:Qr(o)},codec:n[0].codec,resolution:`${n[0].frameWidth}x${n[0].frameHeight}`}}const pi=100,td=Math.max(Math.ceil(400/pi),1),nd=.25,id=.28;function rd(){let n=0,e,t,i=0;return r=>{for(const s of r.values())if(s&&s.type==="inbound-rtp"&&s.kind==="video"){const o=s.jitterBufferDelay,a=s.jitterBufferEmittedCount;if(t&&a>t){const u=o-e,l=a-t;i=u/l}e=o,t=a;const c=s.framesDecoded,d=c-n>0;return n=c,{isReceiving:d,avgJitterDelayInInterval:i,freezeCount:s.freezeCount}}return{isReceiving:!1,avgJitterDelayInInterval:i}}}function sd(n,e,t,i,r){let s=[],o,a=0,c=!1,d=Ke.Unknown,u=Ke.Unknown,l=0,h=0;const m=rd();return setInterval(async()=>{const g=await n.getStats(),{isReceiving:p,avgJitterDelayInInterval:T,freezeCount:k}=m(g),_=Zc(g);if(p)a=0,l=k-h,u=T<nd?Ke.Strong:T>id&&l>1?Ke.Weak:d,u!==d&&(r==null||r(u),d=u,h+=l,l=0),c||(i==null||i($.Start),o=s[s.length-1],s=[],c=!0),s.push(_);else if(c&&(a++,a>=td)){const w=ed(s,pi,o);i==null||i($.Stop,w),e()||t(),h=k,c=!1}},pi)}const ad=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ns(n){switch(n){case"connected":return Q.Connected;case"checking":return Q.Connecting;case"failed":return Q.Fail;case"new":return Q.New;case"closed":return Q.Closed;case"disconnected":return Q.Disconnected;case"completed":return Q.Completed;default:return Q.New}}const od=n=>e=>{const[t,i=""]=e.split(/:(.+)/);try{const r=JSON.parse(i);return n("parsed data channel message",{subject:t,data:r}),{subject:t,data:r}}catch(r){return n("Failed to parse data channel message, returning data as string",{subject:t,rawData:i,error:r}),{subject:t,data:i}}};function cd({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:i}){n===$.Start&&e===$.Start?t==null||t($.Start):n===$.Stop&&e===$.Stop&&(t==null||t($.Stop,i))}function dd({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:r}){n===$.Start?t==null||t($.Start):n===$.Stop&&(t==null||t($.Stop,r)),e===$.Start?i==null||i(Ye.Talking):e===$.Stop&&(i==null||i(Ye.Idle))}function is({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,streamType:r,report:s}){r===ze.Legacy?cd({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:s}):r===ze.Fluent&&dd({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:s})}async function ud(n,e,{debug:t=!1,callbacks:i,auth:r,baseURL:s=Zt,analytics:o},a){var we;const c=ts(t,"WebRTCStreamingManager"),d=od(c);let u=!1,l=!1,h=$.Stop,m=$.Stop;const{startConnection:g,sendStreamRequest:p,close:T,createStream:k,addIceCandidate:_}=Qc(r,s,n,i.onError),{id:w,offer:v,ice_servers:b,session_id:E,fluent:L,interrupt_enabled:S,triggers_enabled:M}=await k(e,a);(we=i.onStreamCreated)==null||we.call(i,{stream_id:w,session_id:E,agent_id:n});const R=new ad({iceServers:b}),x=R.createDataChannel("JanusDataChannel");if(!E)throw new Error("Could not create session_id");const U=L?ze.Fluent:ze.Legacy;o.enrich({"stream-type":U});const q=e.stream_warmup&&!L,re=()=>u,ge=()=>{var F;u=!0,l&&((F=i.onConnectionStateChange)==null||F.call(i,Q.Connected))},Ee=sd(R,re,ge,(F,B)=>is({statsSignal:m=F,dataChannelSignal:U===ze.Legacy?h:void 0,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,report:B,streamType:U}),F=>{var B;return(B=i.onConnectivityStateChange)==null?void 0:B.call(i,F)});R.onicecandidate=F=>{var B;c("peerConnection.onicecandidate",F);try{F.candidate&&F.candidate.sdpMid&&F.candidate.sdpMLineIndex!==null?_(w,{candidate:F.candidate.candidate,sdpMid:F.candidate.sdpMid,sdpMLineIndex:F.candidate.sdpMLineIndex},E,a):_(w,{candidate:null},E,a)}catch(ue){(B=i.onError)==null||B.call(i,ue,{streamId:w})}},x.onopen=()=>{l=!0,(!q||u)&&ge()};const se=F=>{var B;(B=i.onVideoIdChange)==null||B.call(i,F)};function de(F,B){if(F===fe.StreamStarted&&typeof B=="object"&&"metadata"in B){const ue=B.metadata;se(ue.videoId)}F===fe.StreamDone&&se(null),h=F===fe.StreamStarted?$.Start:$.Stop,is({statsSignal:U===ze.Legacy?m:void 0,dataChannelSignal:h,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,streamType:U})}function Ae(F,B){var Se;const ue=typeof B=="string"?B:B==null?void 0:B.metadata;ue&&o.enrich({streamMetadata:ue}),(Se=i.onStreamReady)==null||Se.call(i)}const Z={[fe.StreamStarted]:de,[fe.StreamDone]:de,[fe.StreamReady]:Ae};x.onmessage=F=>{var Se;const{subject:B,data:ue}=d(F.data);(Se=Z[B])==null||Se.call(Z,B,ue)},R.oniceconnectionstatechange=()=>{var B;c("peerConnection.oniceconnectionstatechange => "+R.iceConnectionState);const F=ns(R.iceConnectionState);F!==Q.Connected&&((B=i.onConnectionStateChange)==null||B.call(i,F))},R.ontrack=F=>{var B;c("peerConnection.ontrack",F),(B=i.onSrcObjectReady)==null||B.call(i,F.streams[0])},await R.setRemoteDescription(v),c("set remote description OK");const te=await R.createAnswer();return c("create answer OK"),await R.setLocalDescription(te),c("set local description OK"),await g(w,te,E,a),c("start connection OK"),{speak(F){return p(w,E,F)},async disconnect(){var F;if(w){const B=ns(R.iceConnectionState);if(R){if(B===Q.New){clearInterval(Ee);return}R.close(),R.oniceconnectionstatechange=null,R.onnegotiationneeded=null,R.onicecandidate=null,R.ontrack=null}try{B===Q.Connected&&await T(w,E).catch(ue=>{})}catch(ue){c("Error on close stream connection",ue)}(F=i.onAgentActivityStateChange)==null||F.call(i,Ye.Idle),clearInterval(Ee)}},sendDataChannelMessage(F){var B,ue;if(!u||x.readyState!=="open"){c("Data channel is not ready for sending messages"),(B=i.onError)==null||B.call(i,new Error("Data channel is not ready for sending messages"),{streamId:w});return}try{x.send(F)}catch(Se){c("Error sending data channel message",Se),(ue=i.onError)==null||ue.call(i,Se,{streamId:w})}},sessionId:E,streamId:w,streamType:U,interruptAvailable:S??!1,triggersAvailable:M??!1}}var gi=(n=>(n.V1="v1",n.V2="v2",n))(gi||{});async function ld(n,e,t,i){const r=n.id;switch(e.version){case"v1":{const{version:s,...o}=e;return ud(r,o,t,i)}case"v2":{const{version:s,...o}=e;switch(o.transport_provider){case Xt.Livekit:const{createLiveKitStreamingManager:a}=await Promise.resolve().then(()=>jc);return a(r,o,t);default:throw new Error(`Unsupported transport provider: ${o.transport_provider}`)}}default:throw new Error(`Invalid stream version: ${e.version}`)}}const hd="cht";function fd(){return{transport_provider:Xt.Livekit}}function md(n){var r,s;const{streamOptions:e}=n??{},t=((r=n==null?void 0:n.mixpanelAdditionalProperties)==null?void 0:r.plan)!==void 0?{plan:(s=n.mixpanelAdditionalProperties)==null?void 0:s.plan}:void 0;return{...{output_resolution:e==null?void 0:e.outputResolution,session_timeout:e==null?void 0:e.sessionTimeout,stream_warmup:e==null?void 0:e.streamWarmup,compatibility_mode:e==null?void 0:e.compatibilityMode,fluent:e==null?void 0:e.fluent},...t&&{end_user_data:t}}}function pd(n,e){return si(n.presenter.type)?{version:gi.V2,...fd()}:{version:gi.V1,...md(e)}}function gd(n,e,t,i,r){r===ze.Fluent?vd(n,e,t,i,r):bd(n,e,t,i,r)}function vd(n,e,t,i,r){n===$.Start?i.track("stream-session",{event:"start","stream-type":r}):n===$.Stop&&i.track("stream-session",{event:"stop",is_greenscreen:e.presenter.type==="clip"&&e.presenter.is_greenscreen,background:e.presenter.type==="clip"&&e.presenter.background,"stream-type":r,...t})}function yd(n,e,t,i){Xe.get()<=0||(n===$.Start?t.linkTrack("agent-video",{event:"start",latency:Xe.get(!0),"stream-type":i},"start",[fe.StreamVideoCreated]):n===$.Stop&&t.linkTrack("agent-video",{event:"stop",is_greenscreen:e.presenter.type==="clip"&&e.presenter.is_greenscreen,background:e.presenter.type==="clip"&&e.presenter.background,"stream-type":i},"done",[fe.StreamVideoDone]))}function bd(n,e,t,i,r){Xe.get()<=0||(n===$.Start?i.linkTrack("agent-video",{event:"start",latency:Xe.get(!0),"stream-type":r},"start",[fe.StreamVideoCreated]):n===$.Stop&&i.linkTrack("agent-video",{event:"stop",is_greenscreen:e.presenter.type==="clip"&&e.presenter.is_greenscreen,background:e.presenter.type==="clip"&&e.presenter.background,"stream-type":r,...t},"done",[fe.StreamVideoDone]))}function rs(n,e,t,i){return Xe.reset(),Xr.update(),new Promise(async(r,s)=>{try{let o,a=!1;const c=pd(n,e);t.enrich({"stream-version":c.version.toString()}),o=await ld(n,c,{...e,analytics:t,callbacks:{...e.callbacks,onConnectionStateChange:d=>{var u,l;(l=(u=e.callbacks).onConnectionStateChange)==null||l.call(u,d),d===Q.Connected&&(o?r(o):a=!0)},onVideoStateChange:(d,u)=>{var l,h;(h=(l=e.callbacks).onVideoStateChange)==null||h.call(l,d),gd(d,n,u,t,o.streamType)},onAgentActivityStateChange:d=>{var u,l;(l=(u=e.callbacks).onAgentActivityStateChange)==null||l.call(u,d),d===Ye.Talking?li.update():li.reset(),yd(d===Ye.Talking?$.Start:$.Stop,n,t,o.streamType)},onStreamReady:()=>{const d=Xr.get(!0);t.track("agent-chat",{event:"ready",latency:d})}}},i),a&&r(o)}catch(o){s(o)}})}async function kd(n,e,t,i,r){var u,l,h,m;const s=async()=>{if(si(n.presenter.type)){const g=await rs(n,e,i),p=`${hd}_${g.sessionId}`,T=new Date().toISOString();return{chatResult:{chatMode:ye.Functional,chat:{id:p,agent_id:n.id,owner_id:n.owner_id??"",created:T,modified:T,agent_id__created_at:T,agent_id__modified_at:T,chat_mode:ye.Functional,messages:[]}},streamingManager:g}}else{const g=new AbortController,p=g.signal;let T;try{const k=es(n,t,i,e.mode,e.persistentChat,r),_=rs(n,e,i,p).then(b=>(T=b,b)),[w,v]=await Promise.all([k,_]);return{chatResult:w,streamingManager:v}}catch(k){throw g.abort(),T&&await T.disconnect().catch(()=>{}),k}}},{chatResult:o,streamingManager:a}=await s(),{chat:c,chatMode:d}=o;return d&&e.mode!==void 0&&d!==e.mode&&(e.mode=d,(l=(u=e.callbacks).onModeChange)==null||l.call(u,d),d!==ye.Functional)?((m=(h=e.callbacks).onError)==null||m.call(h,new Lr(d)),a==null||a.disconnect(),{chat:c}):{chat:c,streamingManager:a}}async function Td(n,e){var b,E,L;let t=!0,i=null;const r=e.mixpanelKey||Sc,s=e.wsURL||Tc,o=e.baseURL||Zt,a=e.mode||ye.Functional,c={messages:[],chatMode:a},d=Ac({token:r,agentId:n,isEnabled:e.enableAnalitics,externalId:e.externalId,mixpanelAdditionalProperties:e.mixpanelAdditionalProperties}),u=Date.now();Yr(()=>{d.track("agent-sdk",{event:"init"},u)});const l=Rc(e.auth,o,e.callbacks.onError,e.externalId),h=await l.getById(n),m=si(h.presenter.type);d.enrich(Ic(h));const{onMessage:g,clearQueue:p}=$c(d,c,e,h,()=>{var S;return(S=c.socketManager)==null?void 0:S.disconnect()});c.messages=Lc(e.initialMessages),(E=(b=e.callbacks).onNewMessage)==null||E.call(b,[...c.messages],"answer");const T=S=>{i=S},k=Date.now();Yr(()=>{d.track("agent-sdk",{event:"loaded",..._c(h)},k)});async function _(S){var re,ge,Ee,se,de,Ae,Z;(ge=(re=e.callbacks).onConnectionStateChange)==null||ge.call(re,Q.Connecting),Xe.reset(),S&&!t&&(delete c.chat,(se=(Ee=e.callbacks).onNewMessage)==null||se.call(Ee,[...c.messages],"answer"));const M=a===ye.DirectPlayback||m?Promise.resolve(void 0):Wc(e.auth,s,{onMessage:g,onError:e.callbacks.onError},e.externalId),R=ai(()=>kd(h,{...e,mode:a,callbacks:{...e.callbacks,onVideoIdChange:T,onMessage:g}},l,d,c.chat),{limit:3,timeout:bc,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:te=>(te==null?void 0:te.message)!=="Could not connect"&&te.status!==429&&(te==null?void 0:te.message)!=="InsufficientCreditsError",delayMs:1e3}).catch(te=>{var we,F;throw v(ye.Maintenance),(F=(we=e.callbacks).onConnectionStateChange)==null||F.call(we,Q.Fail),te}),[x,{streamingManager:U,chat:q}]=await Promise.all([M,R]);q&&q.id!==((de=c.chat)==null?void 0:de.id)&&((Z=(Ae=e.callbacks).onNewChat)==null||Z.call(Ae,q.id)),c.streamingManager=U,c.socketManager=x,c.chat=q,t=!1,d.enrich({chatId:q==null?void 0:q.id,streamId:U==null?void 0:U.streamId,mode:c.chatMode}),v((q==null?void 0:q.chat_mode)??a)}async function w(){var S,M,R,x;(S=c.socketManager)==null||S.disconnect(),await((M=c.streamingManager)==null?void 0:M.disconnect()),delete c.streamingManager,delete c.socketManager,(x=(R=e.callbacks).onConnectionStateChange)==null||x.call(R,Q.Disconnected)}async function v(S){var M,R;S!==c.chatMode&&(d.track("agent-mode-change",{mode:S}),c.chatMode=S,c.chatMode!==ye.Functional&&await w(),(R=(M=e.callbacks).onModeChange)==null||R.call(M,S))}return{agent:h,getStreamType:()=>{var S;return(S=c.streamingManager)==null?void 0:S.streamType},getIsInterruptAvailable:()=>{var S;return((S=c.streamingManager)==null?void 0:S.interruptAvailable)??!1},getIsTriggersAvailable:()=>{var S;return((S=c.streamingManager)==null?void 0:S.triggersAvailable)??!1},starterMessages:((L=h.knowledge)==null?void 0:L.starter_message)||[],getSTTToken:()=>l.getSTTToken(h.id),changeMode:v,enrichAnalytics:d.enrich,async connect(){await _(!0),d.track("agent-chat",{event:"connect",mode:c.chatMode})},async reconnect(){const S=c.streamingManager;if(m&&(S!=null&&S.reconnect)){try{await S.reconnect(),d.track("agent-chat",{event:"reconnect",mode:c.chatMode})}catch{await w(),await _(!1)}return}await w(),await _(!1),d.track("agent-chat",{event:"reconnect",mode:c.chatMode})},async disconnect(){await w(),d.track("agent-chat",{event:"disconnect",mode:c.chatMode})},async publishMicrophoneStream(S){var M;if(!((M=c.streamingManager)!=null&&M.publishMicrophoneStream))throw new Error("publishMicrophoneStream is not available for this streaming manager");return c.streamingManager.publishMicrophoneStream(S)},async unpublishMicrophoneStream(){var S;if(!((S=c.streamingManager)!=null&&S.unpublishMicrophoneStream))throw new Error("unpublishMicrophoneStream is not available for this streaming manager");return c.streamingManager.unpublishMicrophoneStream()},async chat(S){var U,q,re,ge,Ee;const M=()=>{if(Jr(a))throw new Pt(`${a} is enabled, chat is disabled`);if(S.length>=800)throw new Pt("Message cannot be more than 800 characters");if(S.length===0)throw new Pt("Message cannot be empty");if(c.chatMode===ye.Maintenance)throw new Pt("Chat is in maintenance mode");if(![ye.TextOnly,ye.Playground].includes(c.chatMode)){if(!c.streamingManager)throw new Pt("Streaming manager is not initialized");if(!c.chat)throw new Pt("Chat is not initialized")}},R=async()=>{var se,de;if(!c.chat){const Ae=await es(h,l,d,c.chatMode,e.persistentChat);if(!Ae.chat)throw new Et(c.chatMode,!!e.persistentChat);c.chat=Ae.chat,(de=(se=e.callbacks).onNewChat)==null||de.call(se,c.chat.id)}return c.chat.id},x=async(se,de)=>ai(m?async()=>{var Z,te;return await((te=(Z=c.streamingManager)==null?void 0:Z.sendTextMessage)==null?void 0:te.call(Z,S)),Promise.resolve({})}:async()=>{var Z,te;return l.chat(h.id,de,{chatMode:c.chatMode,streamId:(Z=c.streamingManager)==null?void 0:Z.streamId,sessionId:(te=c.streamingManager)==null?void 0:te.sessionId,messages:se.map(({matches:we,...F})=>F)},{...Zr(c.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:Z=>{var F,B,ue,Se;const te=(F=Z==null?void 0:Z.message)==null?void 0:F.includes("missing or invalid session_id");return!((B=Z==null?void 0:Z.message)==null?void 0:B.includes("Stream Error"))&&!te?((Se=(ue=e.callbacks).onError)==null||Se.call(ue,Z),!1):!0},onRetry:async()=>{await w(),await _(!1)}});try{p(),M(),c.messages.push({id:Nt(),role:"user",content:S,created_at:new Date(Xe.update()).toISOString()}),(q=(U=e.callbacks).onNewMessage)==null||q.call(U,[...c.messages],"user");const se=await R(),de=await x([...c.messages],se);return c.messages.push({id:Nt(),role:"assistant",content:de.result||"",created_at:new Date().toISOString(),context:de.context,matches:de.matches}),d.track("agent-message-send",{event:"success",messages:c.messages.length+1}),de.result&&((ge=(re=e.callbacks).onNewMessage)==null||ge.call(re,[...c.messages],"answer"),d.track("agent-message-received",{latency:Xe.get(!0),messages:c.messages.length})),de}catch(se){throw((Ee=c.messages[c.messages.length-1])==null?void 0:Ee.role)==="assistant"&&c.messages.pop(),d.track("agent-message-send",{event:"error",messages:c.messages.length}),se}},rate(S,M,R){var q,re,ge,Ee;const x=c.messages.find(se=>se.id===S);if(c.chat){if(!x)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const U=((q=x.matches)==null?void 0:q.map(se=>[se.document_id,se.id]))??[];return d.track("agent-rate",{event:R?"update":"create",thumb:M===1?"up":"down",knowledge_id:((re=h.knowledge)==null?void 0:re.id)??"",matches:U,score:M}),R?l.updateRating(h.id,c.chat.id,R,{knowledge_id:((ge=h.knowledge)==null?void 0:ge.id)??"",message_id:S,matches:U,score:M}):l.createRating(h.id,c.chat.id,{knowledge_id:((Ee=h.knowledge)==null?void 0:Ee.id)??"",message_id:S,matches:U,score:M})},deleteRate(S){if(!c.chat)throw new Error("Chat is not initialized");return d.track("agent-rate-delete",{type:"text"}),l.deleteRating(h.id,c.chat.id,S)},async speak(S){var U,q,re;function M(){if(typeof S=="string"){if(!h.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:h.presenter.voice,input:S,ssml:!1}}if(S.type==="text"&&!S.provider){if(!h.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:h.presenter.voice,input:S.input,ssml:S.ssml}}return S}const R=M();if(d.track("agent-speak",R),Xe.update(),c.messages&&R.type==="text"&&(c.messages.push({id:Nt(),role:"assistant",content:R.input,created_at:new Date().toISOString()}),(q=(U=e.callbacks).onNewMessage)==null||q.call(U,[...c.messages],"answer")),Cc(c.chatMode))return{duration:0,video_id:"",status:"success"};if(!c.streamingManager)throw new Error("Please connect to the agent first");return c.streamingManager.speak({script:R,metadata:{chat_id:(re=c.chat)==null?void 0:re.id,agent_id:h.id}})},async interrupt({type:S}){var R,x,U;const M=c.messages[c.messages.length-1];d.track("agent-video-interrupt",{type:S||"click",video_duration_to_interrupt:li.get(!0),message_duration_to_interrupt:Xe.get(!0)}),M.interrupted=!0,(x=(R=e.callbacks).onNewMessage)==null||x.call(R,[...c.messages],"answer"),m?qc(c.streamingManager):(Bc(c.streamingManager,(U=c.streamingManager)==null?void 0:U.streamType,i),Vc(c.streamingManager,i))}}}function Sd(n,e){return e.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(i){if(i!=="default"&&!(i in n)){var r=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(n,i,r.get?r:{enumerable:!0,get:function(){return t[i]}})}})}),Object.freeze(n)}var Cd=Object.defineProperty,Ed=(n,e,t)=>e in n?Cd(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,ss=(n,e,t)=>Ed(n,typeof e!="symbol"?e+"":e,t);class Pe{constructor(){ss(this,"_locking"),ss(this,"_locks"),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){this._locks+=1;let e;const t=new Promise(r=>e=()=>{this._locks-=1,r()}),i=this._locking.then(()=>e);return this._locking=this._locking.then(()=>t),i}}function oe(n,e){if(!n)throw new Error(e)}const Pd=34028234663852886e22,wd=-34028234663852886e22,Rd=4294967295,_d=2147483647,Id=-2147483648;function En(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>_d||n<Id)throw new Error("invalid int 32: "+n)}function vi(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>Rd||n<0)throw new Error("invalid uint 32: "+n)}function as(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>Pd||n<wd))throw new Error("invalid float 32: "+n)}const os=Symbol("@bufbuild/protobuf/enum-type");function Dd(n){const e=n[os];return oe(e,"missing enum type on enum object"),e}function cs(n,e,t,i){n[os]=ds(e,t.map(r=>({no:r.no,name:r.name,localName:n[r.no]})))}function ds(n,e,t){const i=Object.create(null),r=Object.create(null),s=[];for(const o of e){const a=us(o);s.push(a),i[o.name]=a,r[o.no]=a}return{typeName:n,values:s,findName(o){return i[o]},findNumber(o){return r[o]}}}function Md(n,e,t){const i={};for(const r of e){const s=us(r);i[s.localName]=s.no,i[s.no]=s.localName}return cs(i,n,e),i}function us(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class yi{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){const i=this.getType(),r=i.runtime.bin,s=r.makeReadOptions(t);return r.readMessage(this,s.readerFactory(e),e.byteLength,s),this}fromJson(e,t){const i=this.getType(),r=i.runtime.json,s=r.makeReadOptions(t);return r.readMessage(i,e,s,this),this}fromJsonString(e,t){let i;try{i=JSON.parse(e)}catch(r){throw new Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(r instanceof Error?r.message:String(r)))}return this.fromJson(i,t)}toBinary(e){const t=this.getType(),i=t.runtime.bin,r=i.makeWriteOptions(e),s=r.writerFactory();return i.writeMessage(this,s,r),s.finish()}toJson(e){const t=this.getType(),i=t.runtime.json,r=i.makeWriteOptions(e);return i.writeMessage(this,r)}toJsonString(e){var t;const i=this.toJson(e);return JSON.stringify(i,null,(t=e==null?void 0:e.prettySpaces)!==null&&t!==void 0?t:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}}function Od(n,e,t,i){var r;const s=(r=i==null?void 0:i.localName)!==null&&r!==void 0?r:e.substring(e.lastIndexOf(".")+1),o={[s]:function(a){n.util.initFields(this),n.util.initPartial(a,this)}}[s];return Object.setPrototypeOf(o.prototype,new yi),Object.assign(o,{runtime:n,typeName:e,fields:n.util.newFieldList(t),fromBinary(a,c){return new o().fromBinary(a,c)},fromJson(a,c){return new o().fromJson(a,c)},fromJsonString(a,c){return new o().fromJsonString(a,c)},equals(a,c){return n.util.equals(o,a,c)}}),o}function Ad(){let n=0,e=0;for(let i=0;i<28;i+=7){let r=this.buf[this.pos++];if(n|=(r&127)<<i,!(r&128))return this.assertBounds(),[n,e]}let t=this.buf[this.pos++];if(n|=(t&15)<<28,e=(t&112)>>4,!(t&128))return this.assertBounds(),[n,e];for(let i=3;i<=31;i+=7){let r=this.buf[this.pos++];if(e|=(r&127)<<i,!(r&128))return this.assertBounds(),[n,e]}throw new Error("invalid varint")}function bi(n,e,t){for(let s=0;s<28;s=s+7){const o=n>>>s,a=!(!(o>>>7)&&e==0),c=(a?o|128:o)&255;if(t.push(c),!a)return}const i=n>>>28&15|(e&7)<<4,r=!!(e>>3);if(t.push((r?i|128:i)&255),!!r){for(let s=3;s<31;s=s+7){const o=e>>>s,a=!!(o>>>7),c=(a?o|128:o)&255;if(t.push(c),!a)return}t.push(e>>>31&1)}}const Pn=4294967296;function ls(n){const e=n[0]==="-";e&&(n=n.slice(1));const t=1e6;let i=0,r=0;function s(o,a){const c=Number(n.slice(o,a));r*=t,i=i*t+c,i>=Pn&&(r=r+(i/Pn|0),i=i%Pn)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),e?fs(i,r):ki(i,r)}function xd(n,e){let t=ki(n,e);const i=t.hi&2147483648;i&&(t=fs(t.lo,t.hi));const r=hs(t.lo,t.hi);return i?"-"+r:r}function hs(n,e){if({lo:n,hi:e}=Ld(n,e),e<=2097151)return String(Pn*e+n);const t=n&16777215,i=(n>>>24|e<<8)&16777215,r=e>>16&65535;let s=t+i*6777216+r*6710656,o=i+r*8147497,a=r*2;const c=1e7;return s>=c&&(o+=Math.floor(s/c),s%=c),o>=c&&(a+=Math.floor(o/c),o%=c),a.toString()+ms(o)+ms(s)}function Ld(n,e){return{lo:n>>>0,hi:e>>>0}}function ki(n,e){return{lo:n|0,hi:e|0}}function fs(n,e){return e=~e,n?n=~n+1:e+=1,ki(n,e)}const ms=n=>{const e=String(n);return"0000000".slice(e.length)+e};function ps(n,e){if(n>=0){for(;n>127;)e.push(n&127|128),n=n>>>7;e.push(n)}else{for(let t=0;t<9;t++)e.push(n&127|128),n=n>>7;e.push(1)}}function Nd(){let n=this.buf[this.pos++],e=n&127;if(!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<7,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<14,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<21,!(n&128))return this.assertBounds(),e;n=this.buf[this.pos++],e|=(n&15)<<28;for(let t=5;n&128&&t<10;t++)n=this.buf[this.pos++];if(n&128)throw new Error("invalid varint");return this.assertBounds(),e>>>0}function Ud(){const n=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof n.getBigInt64=="function"&&typeof n.getBigUint64=="function"&&typeof n.setBigInt64=="function"&&typeof n.setBigUint64=="function"&&(typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){const r=BigInt("-9223372036854775808"),s=BigInt("9223372036854775807"),o=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(c){const d=typeof c=="bigint"?c:BigInt(c);if(d>s||d<r)throw new Error("int64 invalid: ".concat(c));return d},uParse(c){const d=typeof c=="bigint"?c:BigInt(c);if(d>a||d<o)throw new Error("uint64 invalid: ".concat(c));return d},enc(c){return n.setBigInt64(0,this.parse(c),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},uEnc(c){return n.setBigInt64(0,this.uParse(c),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},dec(c,d){return n.setInt32(0,c,!0),n.setInt32(4,d,!0),n.getBigInt64(0,!0)},uDec(c,d){return n.setInt32(0,c,!0),n.setInt32(4,d,!0),n.getBigUint64(0,!0)}}}const t=r=>oe(/^-?[0-9]+$/.test(r),"int64 invalid: ".concat(r)),i=r=>oe(/^[0-9]+$/.test(r),"uint64 invalid: ".concat(r));return{zero:"0",supported:!1,parse(r){return typeof r!="string"&&(r=r.toString()),t(r),r},uParse(r){return typeof r!="string"&&(r=r.toString()),i(r),r},enc(r){return typeof r!="string"&&(r=r.toString()),t(r),ls(r)},uEnc(r){return typeof r!="string"&&(r=r.toString()),i(r),ls(r)},dec(r,s){return xd(r,s)},uDec(r,s){return hs(r,s)}}}const ie=Ud();var P;(function(n){n[n.DOUBLE=1]="DOUBLE",n[n.FLOAT=2]="FLOAT",n[n.INT64=3]="INT64",n[n.UINT64=4]="UINT64",n[n.INT32=5]="INT32",n[n.FIXED64=6]="FIXED64",n[n.FIXED32=7]="FIXED32",n[n.BOOL=8]="BOOL",n[n.STRING=9]="STRING",n[n.BYTES=12]="BYTES",n[n.UINT32=13]="UINT32",n[n.SFIXED32=15]="SFIXED32",n[n.SFIXED64=16]="SFIXED64",n[n.SINT32=17]="SINT32",n[n.SINT64=18]="SINT64"})(P||(P={}));var yt;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(yt||(yt={}));function bt(n,e,t){if(e===t)return!0;if(n==P.BYTES){if(!(e instanceof Uint8Array)||!(t instanceof Uint8Array)||e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}switch(n){case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return e==t}return!1}function Ut(n,e){switch(n){case P.BOOL:return!1;case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return e==0?ie.zero:"0";case P.DOUBLE:case P.FLOAT:return 0;case P.BYTES:return new Uint8Array(0);case P.STRING:return"";default:return 0}}function gs(n,e){switch(n){case P.BOOL:return e===!1;case P.STRING:return e==="";case P.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}var he;(function(n){n[n.Varint=0]="Varint",n[n.Bit64=1]="Bit64",n[n.LengthDelimited=2]="LengthDelimited",n[n.StartGroup=3]="StartGroup",n[n.EndGroup=4]="EndGroup",n[n.Bit32=5]="Bit32"})(he||(he={}));class Fd{constructor(e){this.stack=[],this.textEncoder=e??new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let r=0;r<this.chunks.length;r++)e+=this.chunks[r].length;let t=new Uint8Array(e),i=0;for(let r=0;r<this.chunks.length;r++)t.set(this.chunks[r],i),i+=this.chunks[r].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(vi(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return En(e),ps(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){as(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){vi(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){En(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return En(e),e=(e<<1^e>>31)>>>0,ps(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),r=ie.enc(e);return i.setInt32(0,r.lo,!0),i.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),r=ie.uEnc(e);return i.setInt32(0,r.lo,!0),i.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=ie.enc(e);return bi(t.lo,t.hi,this.buf),this}sint64(e){let t=ie.enc(e),i=t.hi>>31,r=t.lo<<1^i,s=(t.hi<<1|t.lo>>>31)^i;return bi(r,s,this.buf),this}uint64(e){let t=ie.uEnc(e);return bi(t.lo,t.hi,this.buf),this}}class jd{constructor(e,t){this.varint64=Ad,this.uint32=Nd,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=t??new TextDecoder}tag(){let e=this.uint32(),t=e>>>3,i=e&7;if(t<=0||i<0||i>5)throw new Error("illegal tag: field no "+t+" wire type "+i);return[t,i]}skip(e,t){let i=this.pos;switch(e){case he.Varint:for(;this.buf[this.pos++]&128;);break;case he.Bit64:this.pos+=4;case he.Bit32:this.pos+=4;break;case he.LengthDelimited:let r=this.uint32();this.pos+=r;break;case he.StartGroup:for(;;){const[s,o]=this.tag();if(o===he.EndGroup){if(t!==void 0&&s!==t)throw new Error("invalid end group tag");break}this.skip(o,s)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(i,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return ie.dec(...this.varint64())}uint64(){return ie.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(e&1);return e=(e>>>1|(t&1)<<31)^i,t=t>>>1^i,ie.dec(e,t)}bool(){let[e,t]=this.varint64();return e!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return ie.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return ie.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}function Bd(n,e,t,i){let r;return{typeName:e,extendee:t,get field(){if(!r){const s=typeof i=="function"?i():i;s.name=e.split(".").pop(),s.jsonName="[".concat(e,"]"),r=n.util.newFieldList([s]).list()[0]}return r},runtime:n}}function vs(n){const e=n.field.localName,t=Object.create(null);return t[e]=Vd(n),[t,()=>t[e]]}function Vd(n){const e=n.field;if(e.repeated)return[];if(e.default!==void 0)return e.default;switch(e.kind){case"enum":return e.T.values[0].no;case"scalar":return Ut(e.T,e.L);case"message":const t=e.T,i=new t;return t.fieldWrapper?t.fieldWrapper.unwrapField(i):i;case"map":throw"map fields are not allowed to be extensions"}}function qd(n,e){if(!e.repeated&&(e.kind=="enum"||e.kind=="scalar")){for(let t=n.length-1;t>=0;--t)if(n[t].no==e.no)return[n[t]];return[]}return n.filter(t=>t.no===e.no)}let ot="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),wn=[];for(let n=0;n<ot.length;n++)wn[ot[n].charCodeAt(0)]=n;wn[45]=ot.indexOf("+"),wn[95]=ot.indexOf("/");const ys={dec(n){let e=n.length*3/4;n[n.length-2]=="="?e-=2:n[n.length-1]=="="&&(e-=1);let t=new Uint8Array(e),i=0,r=0,s,o=0;for(let a=0;a<n.length;a++){if(s=wn[n.charCodeAt(a)],s===void 0)switch(n[a]){case"=":r=0;case`
|
|
1
|
+
(function(W,Ce){typeof exports=="object"&&typeof module<"u"?Ce(exports):typeof define=="function"&&define.amd?define(["exports"],Ce):(W=typeof globalThis<"u"?globalThis:W||self,Ce(W.index={}))})(this,function(W){"use strict";var vf=Object.defineProperty;var yf=(W,Ce,Et)=>Ce in W?vf(W,Ce,{enumerable:!0,configurable:!0,writable:!0,value:Et}):W[Ce]=Et;var Cn=(W,Ce,Et)=>yf(W,typeof Ce!="symbol"?Ce+"":Ce,Et);class Ce extends Error{constructor({kind:t,description:i,error:r}){super(JSON.stringify({kind:t,description:i}));Cn(this,"kind");Cn(this,"description");Cn(this,"error");this.kind=t,this.description=i,this.error=r}}class Et extends Ce{constructor(e,t){super({kind:"ChatCreationFailed",description:`Failed to create ${t?"persistent":""} chat, mode: ${e}`})}}class Lr extends Ce{constructor(e){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${e}`})}}class Pt extends Ce{constructor(t,i){super({kind:"ValidationError",description:t});Cn(this,"key");this.key=i}}class Nr extends Ce{constructor(e){super({kind:"WSError",description:e})}}var Ur=(n=>(n.TRIAL="trial",n.BASIC="basic",n.ENTERPRISE="enterprise",n.LITE="lite",n.ADVANCED="advanced",n))(Ur||{}),Fr=(n=>(n.TRIAL="deid-trial",n.PRO="deid-pro",n.ENTERPRISE="deid-enterprise",n.LITE="deid-lite",n.ADVANCED="deid-advanced",n.BUILD="deid-api-build",n.LAUNCH="deid-api-launch",n.SCALE="deid-api-scale",n))(Fr||{}),jr=(n=>(n.Created="created",n.Started="started",n.Done="done",n.Error="error",n.Rejected="rejected",n.Ready="ready",n))(jr||{}),Br=(n=>(n.Unrated="Unrated",n.Positive="Positive",n.Negative="Negative",n))(Br||{}),ye=(n=>(n.Functional="Functional",n.TextOnly="TextOnly",n.Maintenance="Maintenance",n.Playground="Playground",n.DirectPlayback="DirectPlayback",n.Off="Off",n))(ye||{}),Le=(n=>(n.Embed="embed",n.Query="query",n.Partial="partial",n.Answer="answer",n.Transcribe="transcribe",n.Complete="done",n))(Le||{}),Vr=(n=>(n.KnowledgeProcessing="knowledge/processing",n.KnowledgeIndexing="knowledge/indexing",n.KnowledgeFailed="knowledge/error",n.KnowledgeDone="knowledge/done",n))(Vr||{}),qr=(n=>(n.Knowledge="knowledge",n.Document="document",n.Record="record",n))(qr||{}),Kr=(n=>(n.Pdf="pdf",n.Text="text",n.Html="html",n.Word="word",n.Json="json",n.Markdown="markdown",n.Csv="csv",n.Excel="excel",n.Powerpoint="powerpoint",n.Archive="archive",n.Image="image",n.Audio="audio",n.Video="video",n))(Kr||{}),ri=(n=>(n.Clip="clip",n.Talk="talk",n.Expressive="expressive",n))(ri||{});const yc=n=>{switch(n){case"clip":return"clip";case"talk":return"talk";case"expressive":return"expressive";default:throw new Error(`Unknown video type: ${n}`)}};var $=(n=>(n.Start="START",n.Stop="STOP",n))($||{}),Ke=(n=>(n.Strong="STRONG",n.Weak="WEAK",n.Unknown="UNKNOWN",n))(Ke||{}),Ye=(n=>(n.Idle="IDLE",n.Talking="TALKING",n))(Ye||{}),fe=(n=>(n.ChatAnswer="chat/answer",n.ChatPartial="chat/partial",n.ChatAudioTranscribed="chat/audio-transcribed",n.StreamDone="stream/done",n.StreamStarted="stream/started",n.StreamFailed="stream/error",n.StreamReady="stream/ready",n.StreamCreated="stream/created",n.StreamInterrupt="stream/interrupt",n.StreamVideoCreated="stream-video/started",n.StreamVideoDone="stream-video/done",n.StreamVideoError="stream-video/error",n.StreamVideoRejected="stream-video/rejected",n))(fe||{}),Q=(n=>(n.New="new",n.Fail="fail",n.Connected="connected",n.Connecting="connecting",n.Closed="closed",n.Completed="completed",n.Disconnected="disconnected",n))(Q||{}),ze=(n=>(n.Legacy="legacy",n.Fluent="fluent",n))(ze||{}),Xt=(n=>(n.Livekit="livekit",n))(Xt||{}),zr=(n=>(n.Amazon="amazon",n.AzureOpenAi="azure-openai",n.Microsoft="microsoft",n.Afflorithmics="afflorithmics",n.Elevenlabs="elevenlabs",n))(zr||{}),Wr=(n=>(n.Public="public",n.Premium="premium",n.Private="private",n))(Wr||{});const bc=45*1e3,kc="X-Playground-Chat",Zt="https://api.d-id.com",Tc="wss://notifications.d-id.com",Sc="79f81a83a67430be2bc0fd61042b8faa",Gr=n=>new Promise(e=>setTimeout(e,n)),Nt=(n=16)=>{const e=new Uint8Array(n);return window.crypto.getRandomValues(e),Array.from(e,t=>t.toString(16).padStart(2,"0")).join("").slice(0,13)},Hr=n=>n.type==="clip"&&n.presenter_id.startsWith("v2_")?"clip_v2":n.type,si=n=>n===ri.Expressive,Cc=n=>[ye.TextOnly,ye.Playground,ye.Maintenance].includes(n),Jr=n=>n&&[ye.DirectPlayback,ye.Off].includes(n);function Ec(n,e){let t;return{promise:new Promise((r,s)=>{t=setTimeout(()=>s(new Error(e)),n)}),clear:()=>clearTimeout(t)}}async function ai(n,e){const t={limit:(e==null?void 0:e.limit)??3,delayMs:(e==null?void 0:e.delayMs)??0,timeout:(e==null?void 0:e.timeout)??3e4,timeoutErrorMessage:(e==null?void 0:e.timeoutErrorMessage)||"Timeout error",shouldRetryFn:(e==null?void 0:e.shouldRetryFn)??(()=>!0),onRetry:(e==null?void 0:e.onRetry)??(()=>{})};let i;for(let r=1;r<=t.limit;r++)try{if(!t.timeout)return await n();const{promise:s,clear:o}=Ec(t.timeout,t.timeoutErrorMessage),a=n().finally(o);return await Promise.race([a,s])}catch(s){if(i=s,!t.shouldRetryFn(s)||r>=t.limit)throw s;await Gr(t.delayMs),t.onRetry(s)}throw i}function oi(n){if(n!==void 0)return window.localStorage.setItem("did_external_key_id",n),n;let e=window.localStorage.getItem("did_external_key_id");if(!e){let t=Nt();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let Pc=Nt();function $r(n,e){if(n.type==="bearer")return`Bearer ${n.token}`;if(n.type==="basic")return`Basic ${btoa(`${n.username}:${n.password}`)}`;if(n.type==="key")return`Client-Key ${n.clientKey}.${oi(e)}_${Pc}`;throw new Error(`Unknown auth type: ${n}`)}const wc=n=>ai(n,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:e=>e.status===429});function ci(n,e=Zt,t,i){const r=async(s,o)=>{const{skipErrorHandler:a,...c}=o||{},d=await wc(()=>fetch(e+(s!=null&&s.startsWith("/")?s:`/${s}`),{...c,headers:{...c.headers,Authorization:$r(n,i),"Content-Type":"application/json"}}));if(!d.ok){let u=await d.text().catch(()=>`Failed to fetch with status ${d.status}`);const l=new Error(u);throw t&&!a&&t(l,{url:s,options:c,headers:d.headers}),l}return d.json()};return{get(s,o){return r(s,{...o,method:"GET"})},post(s,o,a){return r(s,{...a,body:JSON.stringify(o),method:"POST"})},delete(s,o,a){return r(s,{...a,body:JSON.stringify(o),method:"DELETE"})},patch(s,o,a){return r(s,{...a,body:JSON.stringify(o),method:"PATCH"})}}}function Rc(n,e=Zt,t,i){const r=ci(n,`${e}/agents`,t,i);return{create(s,o){return r.post("/",s,o)},getAgents(s,o){return r.get(`/${s?`?tag=${s}`:""}`,o).then(a=>a??[])},getById(s,o){return r.get(`/${s}`,o)},delete(s,o){return r.delete(`/${s}`,void 0,o)},update(s,o,a){return r.patch(`/${s}`,o,a)},newChat(s,o,a){return r.post(`/${s}/chat`,o,a)},chat(s,o,a,c){return r.post(`/${s}/chat/${o}`,a,c)},createRating(s,o,a,c){return r.post(`/${s}/chat/${o}/ratings`,a,c)},updateRating(s,o,a,c,d){return r.patch(`/${s}/chat/${o}/ratings/${a}`,c,d)},deleteRating(s,o,a,c){return r.delete(`/${s}/chat/${o}/ratings/${a}`,c)},getSTTToken(s,o){return r.get(`/${s}/stt-token`,o)}}}function _c(n){var r,s,o,a;const e=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",t=()=>{const c=navigator.platform;return c.toLowerCase().includes("win")?"Windows":c.toLowerCase().includes("mac")?"Mac OS X":c.toLowerCase().includes("linux")?"Linux":"Unknown"},i=n.presenter;return{$os:`${t()}`,isMobile:`${e()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:Hr(i),agentVoice:{voiceId:(s=(r=n.presenter)==null?void 0:r.voice)==null?void 0:s.voice_id,provider:(a=(o=n.presenter)==null?void 0:o.voice)==null?void 0:a.type}}}function Ic(n){var t,i,r,s,o,a;const e=(t=n.llm)==null?void 0:t.prompt_customization;return{agentType:Hr(n.presenter),owner_id:n.owner_id??"",promptVersion:(i=n.llm)==null?void 0:i.prompt_version,behavior:{role:e==null?void 0:e.role,personality:e==null?void 0:e.personality,instructions:(r=n.llm)==null?void 0:r.instructions},temperature:(s=n.llm)==null?void 0:s.temperature,knowledgeSource:e==null?void 0:e.knowledge_source,starterQuestionsCount:(a=(o=n.knowledge)==null?void 0:o.starter_message)==null?void 0:a.length,topicsToAvoid:e==null?void 0:e.topics_to_avoid,maxResponseLength:e==null?void 0:e.max_response_length,agentId:n.id,access:n.access,name:n.preview_name,...n.access==="public"?{from:"agent-template"}:{}}}const Dc=n=>n.reduce((e,t)=>e+t,0),Qr=n=>Dc(n)/n.length;function Mc(n,e,t){var c,d,u;const{event:i,...r}=n,{template:s}=(e==null?void 0:e.llm)||{},{language:o}=((c=e==null?void 0:e.presenter)==null?void 0:c.voice)||{};return{...r,llm:{...r.llm,template:s},script:{...r.script,provider:{...(d=r==null?void 0:r.script)==null?void 0:d.provider,language:o}},stitch:(e==null?void 0:e.presenter.type)==="talk"?(u=e==null?void 0:e.presenter)==null?void 0:u.stitch:void 0,...t}}function Yr(n){"requestIdleCallback"in window?requestIdleCallback(n,{timeout:2e3}):setTimeout(n,0)}let di={};const Oc="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function Ac(n){const e=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk";return{token:n.token||"testKey",distinct_id:oi(n.externalId),agentId:n.agentId,additionalProperties:{id:oi(n.externalId),...n.mixpanelAdditionalProperties||{}},isEnabled:n.isEnabled??!0,getRandom:Nt,enrich(t){this.additionalProperties={...this.additionalProperties,...t}},async track(t,i,r){if(!this.isEnabled)return Promise.resolve();const{audioPath:s,...o}=i||{},a=r||Date.now(),c={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...this.additionalProperties,...o,agentId:this.agentId,source:e,token:this.token,time:a,$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerWidth,"Screen Width":window.screen.width||window.innerHeight,"User Agent":navigator.userAgent}}])})};return fetch(Oc,{...c,keepalive:!0}).catch(d=>console.error("Analytics tracking error:",d)),Promise.resolve()},linkTrack(t,i,r,s){di[t]||(di[t]={events:{},resolvedDependencies:[]}),s.includes(r)||s.push(r);const o=di[t];if(o.events[r]={props:i},o.resolvedDependencies.push(r),s.every(c=>o.resolvedDependencies.includes(c))){const c=s.reduce((d,u)=>o.events[u]?{...d,...o.events[u].props}:d,{});this.track(t,c),o.resolvedDependencies=o.resolvedDependencies.filter(d=>!s.includes(d)),s.forEach(d=>{delete o.events[d]})}}}}function ui(){let n=0;return{reset:()=>n=0,update:()=>n=Date.now(),get:(e=!1)=>e?Date.now()-n:n}}const Xe=ui(),li=ui(),Xr=ui();function Zr(n){return n===ye.Playground?{headers:{[kc]:"true"}}:{}}async function es(n,e,t,i,r=!1,s){try{return!s&&!Jr(i)&&(s=await e.newChat(n.id,{persist:r},Zr(i)),t.track("agent-chat",{event:"created",chatId:s.id,mode:i})),{chat:s,chatMode:(s==null?void 0:s.chat_mode)??i}}catch(o){throw xc(o)==="InsufficientCreditsError"?new Error("InsufficientCreditsError"):new Error("Cannot create new chat")}}const xc=n=>{try{const e=JSON.parse(n.message);return e==null?void 0:e.kind}catch{return"UnknownError"}};function Lc(n){return n&&n.length>0?n:[]}function Nc(n,e,t,i){const r=ci(n,`${e}/v2/agents/${t}`,i);return{async createStream(s){return r.post("/sessions",s)}}}const ts=(n,e)=>(t,i)=>n&&console.log(`[${e}] ${t}`,i??"");async function hi(){try{return await Promise.resolve().then(()=>gf)}catch{throw new Error("LiveKit client is required for this streaming manager. Please install it using: npm install livekit-client")}}const Uc={excellent:Ke.Strong,good:Ke.Strong,poor:Ke.Weak,lost:Ke.Unknown,unknown:Ke.Unknown},en=JSON.stringify({kind:"InternalServerError",description:"Stream Error"});var fi=(n=>(n.Chat="lk.chat",n.Speak="did.speak",n.Interrupt="did.interrupt",n))(fi||{});function mi(n,e,t,i){var r,s;throw e("Failed to connect to LiveKit room:",n),i(),(r=t.onConnectionStateChange)==null||r.call(t,Q.Fail),(s=t.onError)==null||s.call(t,n,{sessionId:""}),n}async function Fc(n,e,t){var gc,vc;const i=ts(t.debug||!1,"LiveKitStreamingManager"),{Room:r,RoomEvent:s,ConnectionState:o}=await hi(),{callbacks:a,auth:c,baseURL:d,analytics:u,microphoneStream:l}=t;let h=null,m=!1;const g=ze.Fluent;let p=!0,T=null,k=null;h=new r({adaptiveStream:!1,dynacast:!0});let _=null;const w=2e4,v=Nc(c,d||Zt,n,a.onError);let b,E,L;try{const N=await v.createStream({transport_provider:Xt.Livekit,chat_persist:e.chat_persist??!0}),{id:j,session_token:H,session_url:ee}=N;(gc=a.onStreamCreated)==null||gc.call(a,{session_id:j,stream_id:j,agent_id:n}),b=j,E=H,L=ee,await h.prepareConnection(L,E)}catch(N){mi(N,i,a,()=>{p=!1})}if(!L||!E||!b)return Promise.reject(new Error("Failed to initialize LiveKit stream"));h.on(s.ConnectionStateChanged,S).on(s.ConnectionQualityChanged,M).on(s.ActiveSpeakersChanged,R).on(s.ParticipantConnected,x).on(s.ParticipantDisconnected,U).on(s.TrackSubscribed,q).on(s.TrackUnsubscribed,re).on(s.DataReceived,ge).on(s.MediaDevicesError,Ee).on(s.EncryptionError,se).on(s.TrackSubscriptionFailed,de),(vc=a.onConnectionStateChange)==null||vc.call(a,Q.New);try{await h.connect(L,E),i("LiveKit room joined successfully"),_=setTimeout(()=>{var N;i("Track subscription timeout - no track subscribed within 30 seconds after connect"),_=null,u.track("connectivity-error",{error:"Track subscription timeout",sessionId:b}),(N=a.onError)==null||N.call(a,new Error("Track subscription timeout"),{sessionId:b}),xr()},w),p=!1}catch(N){mi(N,i,a,()=>{p=!1})}u.enrich({"stream-type":g});function S(N){var j,H,ee,le,xe;switch(i("Connection state changed:",N),N){case o.Connecting:(j=a.onConnectionStateChange)==null||j.call(a,Q.Connecting);break;case o.Connected:i("LiveKit room connected successfully"),m=!0,p?queueMicrotask(()=>{var ve;(ve=a.onConnectionStateChange)==null||ve.call(a,Q.Connected)}):(H=a.onConnectionStateChange)==null||H.call(a,Q.Connected);break;case o.Disconnected:i("LiveKit room disconnected"),m=!1,(ee=a.onConnectionStateChange)==null||ee.call(a,Q.Disconnected);break;case o.Reconnecting:i("LiveKit room reconnecting..."),(le=a.onConnectionStateChange)==null||le.call(a,Q.Connecting);break;case o.SignalReconnecting:i("LiveKit room signal reconnecting..."),(xe=a.onConnectionStateChange)==null||xe.call(a,Q.Connecting);break}}function M(N,j){var H;i("Connection quality:",N),j!=null&&j.isLocal&&((H=a.onConnectivityStateChange)==null||H.call(a,Uc[N]))}function R(N){var H,ee;i("Active speakers changed:",N),N[0]?(H=a.onAgentActivityStateChange)==null||H.call(a,Ye.Talking):(ee=a.onAgentActivityStateChange)==null||ee.call(a,Ye.Idle)}function x(N){i("Participant connected:",N.identity)}function U(N){i("Participant disconnected:",N.identity),xr()}function q(N,j,H){var le,xe,ve;i(`Track subscribed: ${N.kind} from ${H.identity}`),_&&(clearTimeout(_),_=null,i("Track subscription timeout cleared"));const ee=N.mediaStreamTrack;if(!ee){i(`No mediaStreamTrack available for ${N.kind}`);return}T?(T.addTrack(ee),i(`Added ${N.kind} track to shared MediaStream`)):(T=new MediaStream([ee]),i(`Created shared MediaStream with ${N.kind} track`)),N.kind==="video"&&((le=a.onStreamReady)==null||le.call(a),(xe=a.onSrcObjectReady)==null||xe.call(a,T),(ve=a.onVideoStateChange)==null||ve.call(a,$.Start))}function re(N,j,H){var ee;i(`Track unsubscribed: ${N.kind} from ${H.identity}`),N.kind==="video"&&((ee=a.onVideoStateChange)==null||ee.call(a,$.Stop))}function ge(N,j,H,ee){var xe,ve,Sn;const le=new TextDecoder().decode(N);i("Data received:",le);try{const vt=JSON.parse(le),ii=ee||vt.subject;if(ii===fe.ChatAnswer){const Lt=Le.Answer;(xe=a.onMessage)==null||xe.call(a,Lt,{event:Lt,...vt})}else if([fe.StreamVideoCreated,fe.StreamVideoDone].includes(ii)){const Lt=(vt==null?void 0:vt.role)||(j==null?void 0:j.identity)||"datachannel";(ve=a.onMessage)==null||ve.call(a,ii,{[Lt]:vt})}else if(ii===fe.ChatAudioTranscribed){const Lt=Le.Transcribe;(Sn=a.onMessage)==null||Sn.call(a,Lt,{event:Lt,...vt})}}catch(vt){i("Failed to parse data channel message:",vt)}}function Ee(N){var j;i("Media devices error:",N),(j=a.onError)==null||j.call(a,new Error(en),{sessionId:b})}function se(N){var j;i("Encryption error:",N),(j=a.onError)==null||j.call(a,new Error(en),{sessionId:b})}function de(N,j,H){i("Track subscription failed:",{trackSid:N,participant:j,reason:H})}async function Ae(N){if(!h)return null;const{Track:j}=await hi(),H=h.localParticipant.audioTrackPublications;if(H){for(const[ee,le]of H)if(le.source===j.Source.Microphone&&le.track){const ve=le.track.mediaStreamTrack;if(ve===N||ve&&ve.id===N.id)return le}}return null}function Z(N){if(!k||!k.track)return!1;const j=k.track.mediaStreamTrack;return j!==N&&(j==null?void 0:j.id)!==N.id}async function te(N){var xe,ve;if(!m||!h)throw i("Room is not connected, cannot publish microphone stream"),new Error("Room is not connected");const j=N.getAudioTracks();if(j.length===0){i("No audio track found in the provided MediaStream");return}const H=j[0],{Track:ee}=await hi(),le=await Ae(H);if(le){i("Microphone track is already published, skipping",{trackId:H.id,publishedTrackId:(ve=(xe=le.track)==null?void 0:xe.mediaStreamTrack)==null?void 0:ve.id}),k=le;return}Z(H)&&(i("Unpublishing existing microphone track before publishing new one"),await we()),i("Publishing microphone track from provided MediaStream",{trackId:H.id});try{k=await h.localParticipant.publishTrack(H,{source:ee.Source.Microphone}),i("Microphone track published successfully",{trackSid:k.trackSid})}catch(Sn){throw i("Failed to publish microphone track:",Sn),Sn}}async function we(){if(!(!k||!k.track))try{h&&(await h.localParticipant.unpublishTrack(k.track),i("Microphone track unpublished"))}catch(N){i("Error unpublishing microphone track:",N)}finally{k=null}}function F(){T&&(T.getTracks().forEach(N=>N.stop()),T=null)}async function B(N,j){var H,ee;if(!m||!h){i("Room is not connected for sending messages"),(H=a.onError)==null||H.call(a,new Error(en),{sessionId:b});return}try{await h.localParticipant.sendText(N,{topic:j}),i("Message sent successfully:",N)}catch(le){i("Failed to send message:",le),(ee=a.onError)==null||ee.call(a,new Error(en),{sessionId:b})}}async function ue(N){var j;try{const ee=JSON.parse(N).topic;return B("",ee)}catch(H){i("Failed to send data channel message:",H),(j=a.onError)==null||j.call(a,new Error(en),{sessionId:b})}}function Se(N){return B(N,"lk.chat")}async function xr(){var N,j;_&&(clearTimeout(_),_=null),h&&(await we(),await h.disconnect()),F(),m=!1,(N=a.onConnectionStateChange)==null||N.call(a,Q.Disconnected),(j=a.onAgentActivityStateChange)==null||j.call(a,Ye.Idle)}return{speak(N){const j=typeof N=="string"?N:JSON.stringify(N);return B(j,"did.speak")},disconnect:xr,async reconnect(){var N,j,H;if((h==null?void 0:h.state)===o.Connected){i("Room is already connected");return}if(!h||!L||!E)throw i("Cannot reconnect: missing room, URL or token"),new Error("Cannot reconnect: session not available");i("Reconnecting to LiveKit room, state:",h.state),(N=a.onConnectionStateChange)==null||N.call(a,Q.Connecting);try{if(await h.connect(L,E),i("Room reconnected"),m=!0,h.remoteParticipants.size===0){if(i("Waiting for agent to join..."),!await new Promise(le=>{const xe=setTimeout(()=>{h==null||h.off(s.ParticipantConnected,ve),le(!1)},5e3),ve=()=>{clearTimeout(xe),h==null||h.off(s.ParticipantConnected,ve),le(!0)};h==null||h.on(s.ParticipantConnected,ve)}))throw i("Agent did not join within timeout"),await h.disconnect(),new Error("Agent did not rejoin the room");i("Agent joined")}(j=a.onConnectionStateChange)==null||j.call(a,Q.Connected)}catch(ee){throw i("Failed to reconnect:",ee),(H=a.onConnectionStateChange)==null||H.call(a,Q.Fail),ee}},sendDataChannelMessage:ue,sendTextMessage:Se,publishMicrophoneStream:te,unpublishMicrophoneStream:we,sessionId:b,streamId:b,streamType:g,interruptAvailable:!0,triggersAvailable:!1}}const jc=Object.freeze(Object.defineProperty({__proto__:null,DataChannelTopic:fi,createLiveKitStreamingManager:Fc,handleInitError:mi},Symbol.toStringTag,{value:"Module"}));function Bc(n,e,t){if(!n)throw new Error("Please connect to the agent first");if(!n.interruptAvailable)throw new Error("Interrupt is not enabled for this stream");if(e!==ze.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!t)throw new Error("No active video to interrupt")}async function Vc(n,e){const t={type:fe.StreamInterrupt,videoId:e,timestamp:Date.now()};n.sendDataChannelMessage(JSON.stringify(t))}async function qc(n){const e={topic:fi.Interrupt};n.sendDataChannelMessage(JSON.stringify(e))}function Kc(n){return new Promise((e,t)=>{const{callbacks:i,host:r,auth:s,externalId:o}=n,{onMessage:a=null,onOpen:c=null,onClose:d=null,onError:u=null}=i||{},l=new WebSocket(`${r}?authorization=${encodeURIComponent($r(s,o))}`);l.onmessage=a,l.onclose=d,l.onerror=h=>{console.error(h),u==null||u("Websocket failed to connect",h),t(h)},l.onopen=h=>{c==null||c(h),e(l)}})}async function zc(n){const{retries:e=1}=n;let t=null;for(let i=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;i++)try{t=await Kc(n)}catch(r){if(i===e)throw r;await Gr(i*500)}return t}async function Wc(n,e,t,i){const r=t!=null&&t.onMessage?[t.onMessage]:[],s=await zc({auth:n,host:e,externalId:i,callbacks:{onError:o=>{var a;return(a=t.onError)==null?void 0:a.call(t,new Nr(o))},onMessage(o){const a=JSON.parse(o.data);r.forEach(c=>c(a.event,a))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:o=>r.push(o)}}function Gc(n){if(n.answer!==void 0)return n.answer;let e=0,t="";for(;e in n;)t+=n[e++];return t}function Hc(n,e,t){if(!n.content)return;const i=e.messages[e.messages.length-1];(i==null?void 0:i.role)==="assistant"&&!i.interrupted&&(i.interrupted=!0);const r={id:n.id||`user-${Date.now()}`,role:n.role,content:n.content,created_at:n.created_at||new Date().toISOString(),transcribed:!0};e.messages.push(r),t==null||t([...e.messages],"user")}function Jc(n,e,t,i,r){if(n===Le.Transcribe&&e.content){Hc(e,i,r);return}if(!(n===Le.Partial||n===Le.Answer))return;const s=i.messages[i.messages.length-1];let o;if(s!=null&&s.transcribed&&s.role==="user")n===Le.Answer&&e.content,o={id:e.id||`assistant-${Date.now()}`,role:e.role||"assistant",content:e.content||"",created_at:e.created_at||new Date().toISOString()},i.messages.push(o);else if((s==null?void 0:s.role)==="assistant")o=s;else return;const{content:a,sequence:c}=e;n===Le.Partial?t[c]=a:t.answer=a;const d=Gc(t);(o.content!==d||n===Le.Answer)&&(o.content=d,r==null||r([...i.messages],n))}function $c(n,e,t,i,r){let s={};return{clearQueue:()=>s={},onMessage:(o,a)=>{var c,d;if("content"in a){const u=o===fe.ChatAnswer?Le.Answer:o===fe.ChatAudioTranscribed?Le.Transcribe:o;Jc(u,a,s,e,t.callbacks.onNewMessage),u===Le.Answer&&n.track("agent-message-received",{messages:e.messages.length,mode:e.chatMode})}else{const u=fe,l=[u.StreamVideoDone,u.StreamVideoError,u.StreamVideoRejected],h=[u.StreamFailed,u.StreamVideoError,u.StreamVideoRejected],m=Mc(a,i,{mode:e.chatMode});if(o=o,o===u.StreamVideoCreated)n.linkTrack("agent-video",m,u.StreamVideoCreated,["start"]);else if(l.includes(o)){const g=o.split("/")[1];h.includes(o)?n.track("agent-video",{...m,event:g}):n.linkTrack("agent-video",{...m,event:g},o,["done"])}h.includes(o)&&((d=(c=t.callbacks).onError)==null||d.call(c,new Error(`Stream failed with event ${o}`),{data:a})),a.event===u.StreamDone&&r()}}}}function Qc(n,e,t,i){const r=ci(n,`${e}/agents/${t}`,i);return{createStream(s,o){return r.post("/streams",s,{signal:o})},startConnection(s,o,a,c){return r.post(`/streams/${s}/sdp`,{session_id:a,answer:o},{signal:c})},addIceCandidate(s,o,a,c){return r.post(`/streams/${s}/ice`,{session_id:a,...o},{signal:c})},sendStreamRequest(s,o,a){return r.post(`/streams/${s}`,{session_id:o,...a})},close(s,o){return r.delete(`/streams/${s}`,{session_id:o})}}}function Yc(n,e,t){const i=(e.timestamp-n.timestamp)/1e3;return{duration:i,bytesReceived:e.bytesReceived-n.bytesReceived,bitrate:Math.round((e.bytesReceived-n.bytesReceived)*8/i),packetsReceived:e.packetsReceived-n.packetsReceived,packetsLost:e.packetsLost-n.packetsLost,framesDropped:e.framesDropped-n.framesDropped,framesDecoded:e.framesDecoded-n.framesDecoded,jitter:e.jitter,avgJitterDelayInInterval:(e.jitterBufferDelay-n.jitterBufferDelay)/(e.jitterBufferEmittedCount-n.jitterBufferEmittedCount),jitterBufferEmittedCount:e.jitterBufferEmittedCount-n.jitterBufferEmittedCount,jitterBufferDelay:(e.jitterBufferDelay-n.jitterBufferDelay)/i,framesPerSecond:e.framesPerSecond,freezeCount:e.freezeCount-n.freezeCount,freezeDuration:e.freezeDuration-n.freezeDuration,lowFpsCount:t}}function Xc(n){return n.filter(e=>e.freezeCount>0||e.framesPerSecond<21||e.framesDropped>0||e.packetsLost>0).map(e=>{const{timestamp:t,...i}=e,r=[];return e.freezeCount>0&&r.push("freeze"),e.framesPerSecond<21&&r.push("low fps"),e.framesDropped>0&&r.push("frames dropped"),e.packetsLost>0&&r.push("packet loss"),{...i,causes:r}})}function Zc(n){let e="",t=0;for(const i of n.values()){if(i&&i.type==="codec"&&i.mimeType.startsWith("video")&&(e=i.mimeType.split("/")[1]),i&&i.type==="candidate-pair"){const r=i.currentRoundTripTime,o=i.nominated===!0;r>0&&(o||t===0)&&(t=r)}if(i&&i.type==="inbound-rtp"&&i.kind==="video")return{codec:e,rtt:t,timestamp:i.timestamp,bytesReceived:i.bytesReceived,packetsReceived:i.packetsReceived,packetsLost:i.packetsLost,framesDropped:i.framesDropped,framesDecoded:i.framesDecoded,jitter:i.jitter,jitterBufferDelay:i.jitterBufferDelay,jitterBufferEmittedCount:i.jitterBufferEmittedCount,avgJitterDelayInInterval:i.jitterBufferDelay/i.jitterBufferEmittedCount,frameWidth:i.frameWidth,frameHeight:i.frameHeight,framesPerSecond:i.framesPerSecond,freezeCount:i.freezeCount,freezeDuration:i.totalFreezesDuration}}return{}}function ed(n,e,t){const i=n.map((c,d)=>d===0?t?{timestamp:c.timestamp,duration:0,rtt:c.rtt,bytesReceived:c.bytesReceived-t.bytesReceived,bitrate:(c.bytesReceived-t.bytesReceived)*8/(e/1e3),packetsReceived:c.packetsReceived-t.packetsReceived,packetsLost:c.packetsLost-t.packetsLost,framesDropped:c.framesDropped-t.framesDropped,framesDecoded:c.framesDecoded-t.framesDecoded,jitter:c.jitter,jitterBufferDelay:c.jitterBufferDelay-t.jitterBufferDelay,jitterBufferEmittedCount:c.jitterBufferEmittedCount-t.jitterBufferEmittedCount,avgJitterDelayInInterval:(c.jitterBufferDelay-t.jitterBufferDelay)/(c.jitterBufferEmittedCount-t.jitterBufferEmittedCount),framesPerSecond:c.framesPerSecond,freezeCount:c.freezeCount-t.freezeCount,freezeDuration:c.freezeDuration-t.freezeDuration}:{timestamp:c.timestamp,rtt:c.rtt,duration:0,bytesReceived:c.bytesReceived,bitrate:c.bytesReceived*8/(e/1e3),packetsReceived:c.packetsReceived,packetsLost:c.packetsLost,framesDropped:c.framesDropped,framesDecoded:c.framesDecoded,jitter:c.jitter,jitterBufferDelay:c.jitterBufferDelay,jitterBufferEmittedCount:c.jitterBufferEmittedCount,avgJitterDelayInInterval:c.jitterBufferDelay/c.jitterBufferEmittedCount,framesPerSecond:c.framesPerSecond,freezeCount:c.freezeCount,freezeDuration:c.freezeDuration}:{timestamp:c.timestamp,duration:e*d/1e3,rtt:c.rtt,bytesReceived:c.bytesReceived-n[d-1].bytesReceived,bitrate:(c.bytesReceived-n[d-1].bytesReceived)*8/(e/1e3),packetsReceived:c.packetsReceived-n[d-1].packetsReceived,packetsLost:c.packetsLost-n[d-1].packetsLost,framesDropped:c.framesDropped-n[d-1].framesDropped,framesDecoded:c.framesDecoded-n[d-1].framesDecoded,jitter:c.jitter,jitterBufferDelay:c.jitterBufferDelay-n[d-1].jitterBufferDelay,jitterBufferEmittedCount:c.jitterBufferEmittedCount-n[d-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(c.jitterBufferDelay-n[d-1].jitterBufferDelay)/(c.jitterBufferEmittedCount-n[d-1].jitterBufferEmittedCount),framesPerSecond:c.framesPerSecond,freezeCount:c.freezeCount-n[d-1].freezeCount,freezeDuration:c.freezeDuration-n[d-1].freezeDuration}),r=Xc(i),s=r.reduce((c,d)=>c+(d.causes.includes("low fps")?1:0),0),o=i.filter(c=>!!c.avgJitterDelayInInterval).map(c=>c.avgJitterDelayInInterval),a=i.filter(c=>!!c.rtt).map(c=>c.rtt);return{webRTCStats:{anomalies:r,minRtt:Math.min(...a),avgRtt:Qr(a),maxRtt:Math.max(...a),aggregateReport:Yc(n[0],n[n.length-1],s),minJitterDelayInInterval:Math.min(...o),maxJitterDelayInInterval:Math.max(...o),avgJitterDelayInInterval:Qr(o)},codec:n[0].codec,resolution:`${n[0].frameWidth}x${n[0].frameHeight}`}}const pi=100,td=Math.max(Math.ceil(400/pi),1),nd=.25,id=.28;function rd(){let n=0,e,t,i=0;return r=>{for(const s of r.values())if(s&&s.type==="inbound-rtp"&&s.kind==="video"){const o=s.jitterBufferDelay,a=s.jitterBufferEmittedCount;if(t&&a>t){const u=o-e,l=a-t;i=u/l}e=o,t=a;const c=s.framesDecoded,d=c-n>0;return n=c,{isReceiving:d,avgJitterDelayInInterval:i,freezeCount:s.freezeCount}}return{isReceiving:!1,avgJitterDelayInInterval:i}}}function sd(n,e,t,i,r){let s=[],o,a=0,c=!1,d=Ke.Unknown,u=Ke.Unknown,l=0,h=0;const m=rd();return setInterval(async()=>{const g=await n.getStats(),{isReceiving:p,avgJitterDelayInInterval:T,freezeCount:k}=m(g),_=Zc(g);if(p)a=0,l=k-h,u=T<nd?Ke.Strong:T>id&&l>1?Ke.Weak:d,u!==d&&(r==null||r(u),d=u,h+=l,l=0),c||(i==null||i($.Start),o=s[s.length-1],s=[],c=!0),s.push(_);else if(c&&(a++,a>=td)){const w=ed(s,pi,o);i==null||i($.Stop,w),e()||t(),h=k,c=!1}},pi)}const ad=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ns(n){switch(n){case"connected":return Q.Connected;case"checking":return Q.Connecting;case"failed":return Q.Fail;case"new":return Q.New;case"closed":return Q.Closed;case"disconnected":return Q.Disconnected;case"completed":return Q.Completed;default:return Q.New}}const od=n=>e=>{const[t,i=""]=e.split(/:(.+)/);try{const r=JSON.parse(i);return n("parsed data channel message",{subject:t,data:r}),{subject:t,data:r}}catch(r){return n("Failed to parse data channel message, returning data as string",{subject:t,rawData:i,error:r}),{subject:t,data:i}}};function cd({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:i}){n===$.Start&&e===$.Start?t==null||t($.Start):n===$.Stop&&e===$.Stop&&(t==null||t($.Stop,i))}function dd({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:r}){n===$.Start?t==null||t($.Start):n===$.Stop&&(t==null||t($.Stop,r)),e===$.Start?i==null||i(Ye.Talking):e===$.Stop&&(i==null||i(Ye.Idle))}function is({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,streamType:r,report:s}){r===ze.Legacy?cd({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:s}):r===ze.Fluent&&dd({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:s})}async function ud(n,e,{debug:t=!1,callbacks:i,auth:r,baseURL:s=Zt,analytics:o},a){var we;const c=ts(t,"WebRTCStreamingManager"),d=od(c);let u=!1,l=!1,h=$.Stop,m=$.Stop;const{startConnection:g,sendStreamRequest:p,close:T,createStream:k,addIceCandidate:_}=Qc(r,s,n,i.onError),{id:w,offer:v,ice_servers:b,session_id:E,fluent:L,interrupt_enabled:S,triggers_enabled:M}=await k(e,a);(we=i.onStreamCreated)==null||we.call(i,{stream_id:w,session_id:E,agent_id:n});const R=new ad({iceServers:b}),x=R.createDataChannel("JanusDataChannel");if(!E)throw new Error("Could not create session_id");const U=L?ze.Fluent:ze.Legacy;o.enrich({"stream-type":U});const q=e.stream_warmup&&!L,re=()=>u,ge=()=>{var F;u=!0,l&&((F=i.onConnectionStateChange)==null||F.call(i,Q.Connected))},Ee=sd(R,re,ge,(F,B)=>is({statsSignal:m=F,dataChannelSignal:U===ze.Legacy?h:void 0,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,report:B,streamType:U}),F=>{var B;return(B=i.onConnectivityStateChange)==null?void 0:B.call(i,F)});R.onicecandidate=F=>{var B;c("peerConnection.onicecandidate",F);try{F.candidate&&F.candidate.sdpMid&&F.candidate.sdpMLineIndex!==null?_(w,{candidate:F.candidate.candidate,sdpMid:F.candidate.sdpMid,sdpMLineIndex:F.candidate.sdpMLineIndex},E,a):_(w,{candidate:null},E,a)}catch(ue){(B=i.onError)==null||B.call(i,ue,{streamId:w})}},x.onopen=()=>{l=!0,(!q||u)&&ge()};const se=F=>{var B;(B=i.onVideoIdChange)==null||B.call(i,F)};function de(F,B){if(F===fe.StreamStarted&&typeof B=="object"&&"metadata"in B){const ue=B.metadata;se(ue.videoId)}F===fe.StreamDone&&se(null),h=F===fe.StreamStarted?$.Start:$.Stop,is({statsSignal:U===ze.Legacy?m:void 0,dataChannelSignal:h,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,streamType:U})}function Ae(F,B){var Se;const ue=typeof B=="string"?B:B==null?void 0:B.metadata;ue&&o.enrich({streamMetadata:ue}),(Se=i.onStreamReady)==null||Se.call(i)}const Z={[fe.StreamStarted]:de,[fe.StreamDone]:de,[fe.StreamReady]:Ae};x.onmessage=F=>{var Se;const{subject:B,data:ue}=d(F.data);(Se=Z[B])==null||Se.call(Z,B,ue)},R.oniceconnectionstatechange=()=>{var B;c("peerConnection.oniceconnectionstatechange => "+R.iceConnectionState);const F=ns(R.iceConnectionState);F!==Q.Connected&&((B=i.onConnectionStateChange)==null||B.call(i,F))},R.ontrack=F=>{var B;c("peerConnection.ontrack",F),(B=i.onSrcObjectReady)==null||B.call(i,F.streams[0])},await R.setRemoteDescription(v),c("set remote description OK");const te=await R.createAnswer();return c("create answer OK"),await R.setLocalDescription(te),c("set local description OK"),await g(w,te,E,a),c("start connection OK"),{speak(F){return p(w,E,F)},async disconnect(){var F;if(w){const B=ns(R.iceConnectionState);if(R){if(B===Q.New){clearInterval(Ee);return}R.close(),R.oniceconnectionstatechange=null,R.onnegotiationneeded=null,R.onicecandidate=null,R.ontrack=null}try{B===Q.Connected&&await T(w,E).catch(ue=>{})}catch(ue){c("Error on close stream connection",ue)}(F=i.onAgentActivityStateChange)==null||F.call(i,Ye.Idle),clearInterval(Ee)}},sendDataChannelMessage(F){var B,ue;if(!u||x.readyState!=="open"){c("Data channel is not ready for sending messages"),(B=i.onError)==null||B.call(i,new Error("Data channel is not ready for sending messages"),{streamId:w});return}try{x.send(F)}catch(Se){c("Error sending data channel message",Se),(ue=i.onError)==null||ue.call(i,Se,{streamId:w})}},sessionId:E,streamId:w,streamType:U,interruptAvailable:S??!1,triggersAvailable:M??!1}}var gi=(n=>(n.V1="v1",n.V2="v2",n))(gi||{});async function ld(n,e,t,i){const r=n.id;switch(e.version){case"v1":{const{version:s,...o}=e;return ud(r,o,t,i)}case"v2":{const{version:s,...o}=e;switch(o.transport_provider){case Xt.Livekit:const{createLiveKitStreamingManager:a}=await Promise.resolve().then(()=>jc);return a(r,o,t);default:throw new Error(`Unsupported transport provider: ${o.transport_provider}`)}}default:throw new Error(`Invalid stream version: ${e.version}`)}}const hd="cht";function fd(){return{transport_provider:Xt.Livekit}}function md(n){var r,s;const{streamOptions:e}=n??{},t=((r=n==null?void 0:n.mixpanelAdditionalProperties)==null?void 0:r.plan)!==void 0?{plan:(s=n.mixpanelAdditionalProperties)==null?void 0:s.plan}:void 0;return{...{output_resolution:e==null?void 0:e.outputResolution,session_timeout:e==null?void 0:e.sessionTimeout,stream_warmup:e==null?void 0:e.streamWarmup,compatibility_mode:e==null?void 0:e.compatibilityMode,fluent:e==null?void 0:e.fluent},...t&&{end_user_data:t}}}function pd(n,e){return si(n.presenter.type)?{version:gi.V2,...fd()}:{version:gi.V1,...md(e)}}function gd(n,e,t,i,r){r===ze.Fluent?vd(n,e,t,i,r):bd(n,e,t,i,r)}function vd(n,e,t,i,r){n===$.Start?i.track("stream-session",{event:"start","stream-type":r}):n===$.Stop&&i.track("stream-session",{event:"stop",is_greenscreen:e.presenter.type==="clip"&&e.presenter.is_greenscreen,background:e.presenter.type==="clip"&&e.presenter.background,"stream-type":r,...t})}function yd(n,e,t,i){Xe.get()<=0||(n===$.Start?t.linkTrack("agent-video",{event:"start",latency:Xe.get(!0),"stream-type":i},"start",[fe.StreamVideoCreated]):n===$.Stop&&t.linkTrack("agent-video",{event:"stop",is_greenscreen:e.presenter.type==="clip"&&e.presenter.is_greenscreen,background:e.presenter.type==="clip"&&e.presenter.background,"stream-type":i},"done",[fe.StreamVideoDone]))}function bd(n,e,t,i,r){Xe.get()<=0||(n===$.Start?i.linkTrack("agent-video",{event:"start",latency:Xe.get(!0),"stream-type":r},"start",[fe.StreamVideoCreated]):n===$.Stop&&i.linkTrack("agent-video",{event:"stop",is_greenscreen:e.presenter.type==="clip"&&e.presenter.is_greenscreen,background:e.presenter.type==="clip"&&e.presenter.background,"stream-type":r,...t},"done",[fe.StreamVideoDone]))}function rs(n,e,t,i){return Xe.reset(),Xr.update(),new Promise(async(r,s)=>{try{let o,a=!1;const c=pd(n,e);t.enrich({"stream-version":c.version.toString()}),o=await ld(n,c,{...e,analytics:t,callbacks:{...e.callbacks,onConnectionStateChange:d=>{var u,l;(l=(u=e.callbacks).onConnectionStateChange)==null||l.call(u,d),d===Q.Connected&&(o?r(o):a=!0)},onVideoStateChange:(d,u)=>{var l,h;(h=(l=e.callbacks).onVideoStateChange)==null||h.call(l,d),gd(d,n,u,t,o.streamType)},onAgentActivityStateChange:d=>{var u,l;(l=(u=e.callbacks).onAgentActivityStateChange)==null||l.call(u,d),d===Ye.Talking?li.update():li.reset(),yd(d===Ye.Talking?$.Start:$.Stop,n,t,o.streamType)},onStreamReady:()=>{const d=Xr.get(!0);t.track("agent-chat",{event:"ready",latency:d})}}},i),a&&r(o)}catch(o){s(o)}})}async function kd(n,e,t,i,r){var u,l,h,m;const s=async()=>{if(si(n.presenter.type)){const g=await rs(n,e,i),p=`${hd}_${g.sessionId}`,T=new Date().toISOString();return{chatResult:{chatMode:ye.Functional,chat:{id:p,agent_id:n.id,owner_id:n.owner_id??"",created:T,modified:T,agent_id__created_at:T,agent_id__modified_at:T,chat_mode:ye.Functional,messages:[]}},streamingManager:g}}else{const g=new AbortController,p=g.signal;let T;try{const k=es(n,t,i,e.mode,e.persistentChat,r),_=rs(n,e,i,p).then(b=>(T=b,b)),[w,v]=await Promise.all([k,_]);return{chatResult:w,streamingManager:v}}catch(k){throw g.abort(),T&&await T.disconnect().catch(()=>{}),k}}},{chatResult:o,streamingManager:a}=await s(),{chat:c,chatMode:d}=o;return d&&e.mode!==void 0&&d!==e.mode&&(e.mode=d,(l=(u=e.callbacks).onModeChange)==null||l.call(u,d),d!==ye.Functional)?((m=(h=e.callbacks).onError)==null||m.call(h,new Lr(d)),a==null||a.disconnect(),{chat:c}):{chat:c,streamingManager:a}}async function Td(n,e){var b,E,L;let t=!0,i=null;const r=e.mixpanelKey||Sc,s=e.wsURL||Tc,o=e.baseURL||Zt,a=e.mode||ye.Functional,c={messages:[],chatMode:a},d=Ac({token:r,agentId:n,isEnabled:e.enableAnalitics,externalId:e.externalId,mixpanelAdditionalProperties:e.mixpanelAdditionalProperties}),u=Date.now();Yr(()=>{d.track("agent-sdk",{event:"init"},u)});const l=Rc(e.auth,o,e.callbacks.onError,e.externalId),h=await l.getById(n),m=si(h.presenter.type);d.enrich(Ic(h));const{onMessage:g,clearQueue:p}=$c(d,c,e,h,()=>{var S;return(S=c.socketManager)==null?void 0:S.disconnect()});c.messages=Lc(e.initialMessages),(E=(b=e.callbacks).onNewMessage)==null||E.call(b,[...c.messages],"answer");const T=S=>{i=S},k=Date.now();Yr(()=>{d.track("agent-sdk",{event:"loaded",..._c(h)},k)});async function _(S){var re,ge,Ee,se,de,Ae,Z;(ge=(re=e.callbacks).onConnectionStateChange)==null||ge.call(re,Q.Connecting),Xe.reset(),S&&!t&&(delete c.chat,(se=(Ee=e.callbacks).onNewMessage)==null||se.call(Ee,[...c.messages],"answer"));const M=a===ye.DirectPlayback||m?Promise.resolve(void 0):Wc(e.auth,s,{onMessage:g,onError:e.callbacks.onError},e.externalId),R=ai(()=>kd(h,{...e,mode:a,callbacks:{...e.callbacks,onVideoIdChange:T,onMessage:g}},l,d,c.chat),{limit:3,timeout:bc,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:te=>(te==null?void 0:te.message)!=="Could not connect"&&te.status!==429&&(te==null?void 0:te.message)!=="InsufficientCreditsError",delayMs:1e3}).catch(te=>{var we,F;throw v(ye.Maintenance),(F=(we=e.callbacks).onConnectionStateChange)==null||F.call(we,Q.Fail),te}),[x,{streamingManager:U,chat:q}]=await Promise.all([M,R]);q&&q.id!==((de=c.chat)==null?void 0:de.id)&&((Z=(Ae=e.callbacks).onNewChat)==null||Z.call(Ae,q.id)),c.streamingManager=U,c.socketManager=x,c.chat=q,t=!1,d.enrich({chatId:q==null?void 0:q.id,streamId:U==null?void 0:U.streamId,mode:c.chatMode}),v((q==null?void 0:q.chat_mode)??a)}async function w(){var S,M,R,x;(S=c.socketManager)==null||S.disconnect(),await((M=c.streamingManager)==null?void 0:M.disconnect()),delete c.streamingManager,delete c.socketManager,(x=(R=e.callbacks).onConnectionStateChange)==null||x.call(R,Q.Disconnected)}async function v(S){var M,R;S!==c.chatMode&&(d.track("agent-mode-change",{mode:S}),c.chatMode=S,c.chatMode!==ye.Functional&&await w(),(R=(M=e.callbacks).onModeChange)==null||R.call(M,S))}return{agent:h,getStreamType:()=>{var S;return(S=c.streamingManager)==null?void 0:S.streamType},getIsInterruptAvailable:()=>{var S;return((S=c.streamingManager)==null?void 0:S.interruptAvailable)??!1},getIsTriggersAvailable:()=>{var S;return((S=c.streamingManager)==null?void 0:S.triggersAvailable)??!1},starterMessages:((L=h.knowledge)==null?void 0:L.starter_message)||[],getSTTToken:()=>l.getSTTToken(h.id),changeMode:v,enrichAnalytics:d.enrich,async connect(){await _(!0),d.track("agent-chat",{event:"connect",mode:c.chatMode})},async reconnect(){const S=c.streamingManager;if(m&&(S!=null&&S.reconnect)){try{await S.reconnect(),d.track("agent-chat",{event:"reconnect",mode:c.chatMode})}catch{await w(),await _(!1)}return}await w(),await _(!1),d.track("agent-chat",{event:"reconnect",mode:c.chatMode})},async disconnect(){await w(),d.track("agent-chat",{event:"disconnect",mode:c.chatMode})},async publishMicrophoneStream(S){var M;if(!((M=c.streamingManager)!=null&&M.publishMicrophoneStream))throw new Error("publishMicrophoneStream is not available for this streaming manager");return c.streamingManager.publishMicrophoneStream(S)},async unpublishMicrophoneStream(){var S;if(!((S=c.streamingManager)!=null&&S.unpublishMicrophoneStream))throw new Error("unpublishMicrophoneStream is not available for this streaming manager");return c.streamingManager.unpublishMicrophoneStream()},async chat(S){var U,q,re,ge,Ee;const M=()=>{if(Jr(a))throw new Pt(`${a} is enabled, chat is disabled`);if(S.length>=800)throw new Pt("Message cannot be more than 800 characters");if(S.length===0)throw new Pt("Message cannot be empty");if(c.chatMode===ye.Maintenance)throw new Pt("Chat is in maintenance mode");if(![ye.TextOnly,ye.Playground].includes(c.chatMode)){if(!c.streamingManager)throw new Pt("Streaming manager is not initialized");if(!c.chat)throw new Pt("Chat is not initialized")}},R=async()=>{var se,de;if(!c.chat){const Ae=await es(h,l,d,c.chatMode,e.persistentChat);if(!Ae.chat)throw new Et(c.chatMode,!!e.persistentChat);c.chat=Ae.chat,(de=(se=e.callbacks).onNewChat)==null||de.call(se,c.chat.id)}return c.chat.id},x=async(se,de)=>ai(m?async()=>{var Z,te;return await((te=(Z=c.streamingManager)==null?void 0:Z.sendTextMessage)==null?void 0:te.call(Z,S)),Promise.resolve({})}:async()=>{var Z,te;return l.chat(h.id,de,{chatMode:c.chatMode,streamId:(Z=c.streamingManager)==null?void 0:Z.streamId,sessionId:(te=c.streamingManager)==null?void 0:te.sessionId,messages:se.map(({matches:we,...F})=>F)},{...Zr(c.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:Z=>{var F,B,ue,Se;const te=(F=Z==null?void 0:Z.message)==null?void 0:F.includes("missing or invalid session_id");return!((B=Z==null?void 0:Z.message)==null?void 0:B.includes("Stream Error"))&&!te?((Se=(ue=e.callbacks).onError)==null||Se.call(ue,Z),!1):!0},onRetry:async()=>{await w(),await _(!1)}});try{p(),M(),c.messages.push({id:Nt(),role:"user",content:S,created_at:new Date(Xe.update()).toISOString()}),(q=(U=e.callbacks).onNewMessage)==null||q.call(U,[...c.messages],"user");const se=await R(),de=await x([...c.messages],se);return c.messages.push({id:Nt(),role:"assistant",content:de.result||"",created_at:new Date().toISOString(),context:de.context,matches:de.matches}),d.track("agent-message-send",{event:"success",messages:c.messages.length+1}),de.result&&((ge=(re=e.callbacks).onNewMessage)==null||ge.call(re,[...c.messages],"answer"),d.track("agent-message-received",{latency:Xe.get(!0),messages:c.messages.length})),de}catch(se){throw((Ee=c.messages[c.messages.length-1])==null?void 0:Ee.role)==="assistant"&&c.messages.pop(),d.track("agent-message-send",{event:"error",messages:c.messages.length}),se}},rate(S,M,R){var q,re,ge,Ee;const x=c.messages.find(se=>se.id===S);if(c.chat){if(!x)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const U=((q=x.matches)==null?void 0:q.map(se=>[se.document_id,se.id]))??[];return d.track("agent-rate",{event:R?"update":"create",thumb:M===1?"up":"down",knowledge_id:((re=h.knowledge)==null?void 0:re.id)??"",matches:U,score:M}),R?l.updateRating(h.id,c.chat.id,R,{knowledge_id:((ge=h.knowledge)==null?void 0:ge.id)??"",message_id:S,matches:U,score:M}):l.createRating(h.id,c.chat.id,{knowledge_id:((Ee=h.knowledge)==null?void 0:Ee.id)??"",message_id:S,matches:U,score:M})},deleteRate(S){if(!c.chat)throw new Error("Chat is not initialized");return d.track("agent-rate-delete",{type:"text"}),l.deleteRating(h.id,c.chat.id,S)},async speak(S){var U,q,re;function M(){if(typeof S=="string"){if(!h.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:h.presenter.voice,input:S,ssml:!1}}if(S.type==="text"&&!S.provider){if(!h.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:h.presenter.voice,input:S.input,ssml:S.ssml}}return S}const R=M();if(d.track("agent-speak",R),Xe.update(),c.messages&&R.type==="text"&&(c.messages.push({id:Nt(),role:"assistant",content:R.input,created_at:new Date().toISOString()}),(q=(U=e.callbacks).onNewMessage)==null||q.call(U,[...c.messages],"answer")),Cc(c.chatMode))return{duration:0,video_id:"",status:"success"};if(!c.streamingManager)throw new Error("Please connect to the agent first");return c.streamingManager.speak({script:R,metadata:{chat_id:(re=c.chat)==null?void 0:re.id,agent_id:h.id}})},async interrupt({type:S}){var R,x,U;const M=c.messages[c.messages.length-1];d.track("agent-video-interrupt",{type:S||"click",video_duration_to_interrupt:li.get(!0),message_duration_to_interrupt:Xe.get(!0)}),M.interrupted=!0,(x=(R=e.callbacks).onNewMessage)==null||x.call(R,[...c.messages],"answer"),m?qc(c.streamingManager):(Bc(c.streamingManager,(U=c.streamingManager)==null?void 0:U.streamType,i),Vc(c.streamingManager,i))}}}function Sd(n,e){return e.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(i){if(i!=="default"&&!(i in n)){var r=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(n,i,r.get?r:{enumerable:!0,get:function(){return t[i]}})}})}),Object.freeze(n)}var Cd=Object.defineProperty,Ed=(n,e,t)=>e in n?Cd(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,ss=(n,e,t)=>Ed(n,typeof e!="symbol"?e+"":e,t);class Pe{constructor(){ss(this,"_locking"),ss(this,"_locks"),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){this._locks+=1;let e;const t=new Promise(r=>e=()=>{this._locks-=1,r()}),i=this._locking.then(()=>e);return this._locking=this._locking.then(()=>t),i}}function oe(n,e){if(!n)throw new Error(e)}const Pd=34028234663852886e22,wd=-34028234663852886e22,Rd=4294967295,_d=2147483647,Id=-2147483648;function En(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>_d||n<Id)throw new Error("invalid int 32: "+n)}function vi(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>Rd||n<0)throw new Error("invalid uint 32: "+n)}function as(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>Pd||n<wd))throw new Error("invalid float 32: "+n)}const os=Symbol("@bufbuild/protobuf/enum-type");function Dd(n){const e=n[os];return oe(e,"missing enum type on enum object"),e}function cs(n,e,t,i){n[os]=ds(e,t.map(r=>({no:r.no,name:r.name,localName:n[r.no]})))}function ds(n,e,t){const i=Object.create(null),r=Object.create(null),s=[];for(const o of e){const a=us(o);s.push(a),i[o.name]=a,r[o.no]=a}return{typeName:n,values:s,findName(o){return i[o]},findNumber(o){return r[o]}}}function Md(n,e,t){const i={};for(const r of e){const s=us(r);i[s.localName]=s.no,i[s.no]=s.localName}return cs(i,n,e),i}function us(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class yi{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){const i=this.getType(),r=i.runtime.bin,s=r.makeReadOptions(t);return r.readMessage(this,s.readerFactory(e),e.byteLength,s),this}fromJson(e,t){const i=this.getType(),r=i.runtime.json,s=r.makeReadOptions(t);return r.readMessage(i,e,s,this),this}fromJsonString(e,t){let i;try{i=JSON.parse(e)}catch(r){throw new Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(r instanceof Error?r.message:String(r)))}return this.fromJson(i,t)}toBinary(e){const t=this.getType(),i=t.runtime.bin,r=i.makeWriteOptions(e),s=r.writerFactory();return i.writeMessage(this,s,r),s.finish()}toJson(e){const t=this.getType(),i=t.runtime.json,r=i.makeWriteOptions(e);return i.writeMessage(this,r)}toJsonString(e){var t;const i=this.toJson(e);return JSON.stringify(i,null,(t=e==null?void 0:e.prettySpaces)!==null&&t!==void 0?t:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}}function Od(n,e,t,i){var r;const s=(r=i==null?void 0:i.localName)!==null&&r!==void 0?r:e.substring(e.lastIndexOf(".")+1),o={[s]:function(a){n.util.initFields(this),n.util.initPartial(a,this)}}[s];return Object.setPrototypeOf(o.prototype,new yi),Object.assign(o,{runtime:n,typeName:e,fields:n.util.newFieldList(t),fromBinary(a,c){return new o().fromBinary(a,c)},fromJson(a,c){return new o().fromJson(a,c)},fromJsonString(a,c){return new o().fromJsonString(a,c)},equals(a,c){return n.util.equals(o,a,c)}}),o}function Ad(){let n=0,e=0;for(let i=0;i<28;i+=7){let r=this.buf[this.pos++];if(n|=(r&127)<<i,!(r&128))return this.assertBounds(),[n,e]}let t=this.buf[this.pos++];if(n|=(t&15)<<28,e=(t&112)>>4,!(t&128))return this.assertBounds(),[n,e];for(let i=3;i<=31;i+=7){let r=this.buf[this.pos++];if(e|=(r&127)<<i,!(r&128))return this.assertBounds(),[n,e]}throw new Error("invalid varint")}function bi(n,e,t){for(let s=0;s<28;s=s+7){const o=n>>>s,a=!(!(o>>>7)&&e==0),c=(a?o|128:o)&255;if(t.push(c),!a)return}const i=n>>>28&15|(e&7)<<4,r=!!(e>>3);if(t.push((r?i|128:i)&255),!!r){for(let s=3;s<31;s=s+7){const o=e>>>s,a=!!(o>>>7),c=(a?o|128:o)&255;if(t.push(c),!a)return}t.push(e>>>31&1)}}const Pn=4294967296;function ls(n){const e=n[0]==="-";e&&(n=n.slice(1));const t=1e6;let i=0,r=0;function s(o,a){const c=Number(n.slice(o,a));r*=t,i=i*t+c,i>=Pn&&(r=r+(i/Pn|0),i=i%Pn)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),e?fs(i,r):ki(i,r)}function xd(n,e){let t=ki(n,e);const i=t.hi&2147483648;i&&(t=fs(t.lo,t.hi));const r=hs(t.lo,t.hi);return i?"-"+r:r}function hs(n,e){if({lo:n,hi:e}=Ld(n,e),e<=2097151)return String(Pn*e+n);const t=n&16777215,i=(n>>>24|e<<8)&16777215,r=e>>16&65535;let s=t+i*6777216+r*6710656,o=i+r*8147497,a=r*2;const c=1e7;return s>=c&&(o+=Math.floor(s/c),s%=c),o>=c&&(a+=Math.floor(o/c),o%=c),a.toString()+ms(o)+ms(s)}function Ld(n,e){return{lo:n>>>0,hi:e>>>0}}function ki(n,e){return{lo:n|0,hi:e|0}}function fs(n,e){return e=~e,n?n=~n+1:e+=1,ki(n,e)}const ms=n=>{const e=String(n);return"0000000".slice(e.length)+e};function ps(n,e){if(n>=0){for(;n>127;)e.push(n&127|128),n=n>>>7;e.push(n)}else{for(let t=0;t<9;t++)e.push(n&127|128),n=n>>7;e.push(1)}}function Nd(){let n=this.buf[this.pos++],e=n&127;if(!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<7,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<14,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<21,!(n&128))return this.assertBounds(),e;n=this.buf[this.pos++],e|=(n&15)<<28;for(let t=5;n&128&&t<10;t++)n=this.buf[this.pos++];if(n&128)throw new Error("invalid varint");return this.assertBounds(),e>>>0}function Ud(){const n=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof n.getBigInt64=="function"&&typeof n.getBigUint64=="function"&&typeof n.setBigInt64=="function"&&typeof n.setBigUint64=="function"&&(typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){const r=BigInt("-9223372036854775808"),s=BigInt("9223372036854775807"),o=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(c){const d=typeof c=="bigint"?c:BigInt(c);if(d>s||d<r)throw new Error("int64 invalid: ".concat(c));return d},uParse(c){const d=typeof c=="bigint"?c:BigInt(c);if(d>a||d<o)throw new Error("uint64 invalid: ".concat(c));return d},enc(c){return n.setBigInt64(0,this.parse(c),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},uEnc(c){return n.setBigInt64(0,this.uParse(c),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},dec(c,d){return n.setInt32(0,c,!0),n.setInt32(4,d,!0),n.getBigInt64(0,!0)},uDec(c,d){return n.setInt32(0,c,!0),n.setInt32(4,d,!0),n.getBigUint64(0,!0)}}}const t=r=>oe(/^-?[0-9]+$/.test(r),"int64 invalid: ".concat(r)),i=r=>oe(/^[0-9]+$/.test(r),"uint64 invalid: ".concat(r));return{zero:"0",supported:!1,parse(r){return typeof r!="string"&&(r=r.toString()),t(r),r},uParse(r){return typeof r!="string"&&(r=r.toString()),i(r),r},enc(r){return typeof r!="string"&&(r=r.toString()),t(r),ls(r)},uEnc(r){return typeof r!="string"&&(r=r.toString()),i(r),ls(r)},dec(r,s){return xd(r,s)},uDec(r,s){return hs(r,s)}}}const ie=Ud();var P;(function(n){n[n.DOUBLE=1]="DOUBLE",n[n.FLOAT=2]="FLOAT",n[n.INT64=3]="INT64",n[n.UINT64=4]="UINT64",n[n.INT32=5]="INT32",n[n.FIXED64=6]="FIXED64",n[n.FIXED32=7]="FIXED32",n[n.BOOL=8]="BOOL",n[n.STRING=9]="STRING",n[n.BYTES=12]="BYTES",n[n.UINT32=13]="UINT32",n[n.SFIXED32=15]="SFIXED32",n[n.SFIXED64=16]="SFIXED64",n[n.SINT32=17]="SINT32",n[n.SINT64=18]="SINT64"})(P||(P={}));var yt;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(yt||(yt={}));function bt(n,e,t){if(e===t)return!0;if(n==P.BYTES){if(!(e instanceof Uint8Array)||!(t instanceof Uint8Array)||e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}switch(n){case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return e==t}return!1}function Ut(n,e){switch(n){case P.BOOL:return!1;case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return e==0?ie.zero:"0";case P.DOUBLE:case P.FLOAT:return 0;case P.BYTES:return new Uint8Array(0);case P.STRING:return"";default:return 0}}function gs(n,e){switch(n){case P.BOOL:return e===!1;case P.STRING:return e==="";case P.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}var he;(function(n){n[n.Varint=0]="Varint",n[n.Bit64=1]="Bit64",n[n.LengthDelimited=2]="LengthDelimited",n[n.StartGroup=3]="StartGroup",n[n.EndGroup=4]="EndGroup",n[n.Bit32=5]="Bit32"})(he||(he={}));class Fd{constructor(e){this.stack=[],this.textEncoder=e??new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let r=0;r<this.chunks.length;r++)e+=this.chunks[r].length;let t=new Uint8Array(e),i=0;for(let r=0;r<this.chunks.length;r++)t.set(this.chunks[r],i),i+=this.chunks[r].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(vi(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return En(e),ps(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){as(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){vi(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){En(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return En(e),e=(e<<1^e>>31)>>>0,ps(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),r=ie.enc(e);return i.setInt32(0,r.lo,!0),i.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),r=ie.uEnc(e);return i.setInt32(0,r.lo,!0),i.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=ie.enc(e);return bi(t.lo,t.hi,this.buf),this}sint64(e){let t=ie.enc(e),i=t.hi>>31,r=t.lo<<1^i,s=(t.hi<<1|t.lo>>>31)^i;return bi(r,s,this.buf),this}uint64(e){let t=ie.uEnc(e);return bi(t.lo,t.hi,this.buf),this}}class jd{constructor(e,t){this.varint64=Ad,this.uint32=Nd,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=t??new TextDecoder}tag(){let e=this.uint32(),t=e>>>3,i=e&7;if(t<=0||i<0||i>5)throw new Error("illegal tag: field no "+t+" wire type "+i);return[t,i]}skip(e,t){let i=this.pos;switch(e){case he.Varint:for(;this.buf[this.pos++]&128;);break;case he.Bit64:this.pos+=4;case he.Bit32:this.pos+=4;break;case he.LengthDelimited:let r=this.uint32();this.pos+=r;break;case he.StartGroup:for(;;){const[s,o]=this.tag();if(o===he.EndGroup){if(t!==void 0&&s!==t)throw new Error("invalid end group tag");break}this.skip(o,s)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(i,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return ie.dec(...this.varint64())}uint64(){return ie.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(e&1);return e=(e>>>1|(t&1)<<31)^i,t=t>>>1^i,ie.dec(e,t)}bool(){let[e,t]=this.varint64();return e!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return ie.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return ie.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}function Bd(n,e,t,i){let r;return{typeName:e,extendee:t,get field(){if(!r){const s=typeof i=="function"?i():i;s.name=e.split(".").pop(),s.jsonName="[".concat(e,"]"),r=n.util.newFieldList([s]).list()[0]}return r},runtime:n}}function vs(n){const e=n.field.localName,t=Object.create(null);return t[e]=Vd(n),[t,()=>t[e]]}function Vd(n){const e=n.field;if(e.repeated)return[];if(e.default!==void 0)return e.default;switch(e.kind){case"enum":return e.T.values[0].no;case"scalar":return Ut(e.T,e.L);case"message":const t=e.T,i=new t;return t.fieldWrapper?t.fieldWrapper.unwrapField(i):i;case"map":throw"map fields are not allowed to be extensions"}}function qd(n,e){if(!e.repeated&&(e.kind=="enum"||e.kind=="scalar")){for(let t=n.length-1;t>=0;--t)if(n[t].no==e.no)return[n[t]];return[]}return n.filter(t=>t.no===e.no)}let ot="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),wn=[];for(let n=0;n<ot.length;n++)wn[ot[n].charCodeAt(0)]=n;wn[45]=ot.indexOf("+"),wn[95]=ot.indexOf("/");const ys={dec(n){let e=n.length*3/4;n[n.length-2]=="="?e-=2:n[n.length-1]=="="&&(e-=1);let t=new Uint8Array(e),i=0,r=0,s,o=0;for(let a=0;a<n.length;a++){if(s=wn[n.charCodeAt(a)],s===void 0)switch(n[a]){case"=":r=0;case`
|
|
2
2
|
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string.")}switch(r){case 0:o=s,r=1;break;case 1:t[i++]=o<<2|(s&48)>>4,o=s,r=2;break;case 2:t[i++]=(o&15)<<4|(s&60)>>2,o=s,r=3;break;case 3:t[i++]=(o&3)<<6|s,r=0;break}}if(r==1)throw Error("invalid base64 string.");return t.subarray(0,i)},enc(n){let e="",t=0,i,r=0;for(let s=0;s<n.length;s++)switch(i=n[s],t){case 0:e+=ot[i>>2],r=(i&3)<<4,t=1;break;case 1:e+=ot[r|i>>4],r=(i&15)<<2,t=2;break;case 2:e+=ot[r|i>>6],e+=ot[i&63],t=0;break}return t&&(e+=ot[r],e+="=",t==1&&(e+="=")),e}};function Kd(n,e,t){ks(e,n);const i=e.runtime.bin.makeReadOptions(t),r=qd(n.getType().runtime.bin.listUnknownFields(n),e.field),[s,o]=vs(e);for(const a of r)e.runtime.bin.readField(s,i.readerFactory(a.data),e.field,a.wireType,i);return o()}function zd(n,e,t,i){ks(e,n);const r=e.runtime.bin.makeReadOptions(i),s=e.runtime.bin.makeWriteOptions(i);if(bs(n,e)){const d=n.getType().runtime.bin.listUnknownFields(n).filter(u=>u.no!=e.field.no);n.getType().runtime.bin.discardUnknownFields(n);for(const u of d)n.getType().runtime.bin.onUnknownField(n,u.no,u.wireType,u.data)}const o=s.writerFactory();let a=e.field;!a.opt&&!a.repeated&&(a.kind=="enum"||a.kind=="scalar")&&(a=Object.assign(Object.assign({},e.field),{opt:!0})),e.runtime.bin.writeField(a,t,o,s);const c=r.readerFactory(o.finish());for(;c.pos<c.len;){const[d,u]=c.tag(),l=c.skip(u,d);n.getType().runtime.bin.onUnknownField(n,d,u,l)}}function bs(n,e){const t=n.getType();return e.extendee.typeName===t.typeName&&!!t.runtime.bin.listUnknownFields(n).find(i=>i.no==e.field.no)}function ks(n,e){oe(n.extendee.typeName==e.getType().typeName,"extension ".concat(n.typeName," can only be applied to message ").concat(n.extendee.typeName))}function Ts(n,e){const t=n.localName;if(n.repeated)return e[t].length>0;if(n.oneof)return e[n.oneof.localName].case===t;switch(n.kind){case"enum":case"scalar":return n.opt||n.req?e[t]!==void 0:n.kind=="enum"?e[t]!==n.T.values[0].no:!gs(n.T,e[t]);case"message":return e[t]!==void 0;case"map":return Object.keys(e[t]).length>0}}function Ss(n,e){const t=n.localName,i=!n.opt&&!n.req;if(n.repeated)e[t]=[];else if(n.oneof)e[n.oneof.localName]={case:void 0};else switch(n.kind){case"map":e[t]={};break;case"enum":e[t]=i?n.T.values[0].no:void 0;break;case"scalar":e[t]=i?Ut(n.T,n.L):void 0;break;case"message":e[t]=void 0;break}}function ct(n,e){if(n===null||typeof n!="object"||!Object.getOwnPropertyNames(yi.prototype).every(i=>i in n&&typeof n[i]=="function"))return!1;const t=n.getType();return t===null||typeof t!="function"||!("typeName"in t)||typeof t.typeName!="string"?!1:e===void 0?!0:t.typeName==e.typeName}function Cs(n,e){return ct(e)||!n.fieldWrapper?e:n.fieldWrapper.wrapField(e)}P.DOUBLE,P.FLOAT,P.INT64,P.UINT64,P.INT32,P.UINT32,P.BOOL,P.STRING,P.BYTES;const Es={ignoreUnknownFields:!1},Ps={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function Wd(n){return n?Object.assign(Object.assign({},Es),n):Es}function Gd(n){return n?Object.assign(Object.assign({},Ps),n):Ps}const Rn=Symbol(),_n=Symbol();function Hd(){return{makeReadOptions:Wd,makeWriteOptions:Gd,readMessage(n,e,t,i){if(e==null||Array.isArray(e)||typeof e!="object")throw new Error("cannot decode message ".concat(n.typeName," from JSON: ").concat(Ze(e)));i=i??new n;const r=new Map,s=t.typeRegistry;for(const[o,a]of Object.entries(e)){const c=n.fields.findJsonName(o);if(c){if(c.oneof){if(a===null&&c.kind=="scalar")continue;const d=r.get(c.oneof);if(d!==void 0)throw new Error("cannot decode message ".concat(n.typeName,' from JSON: multiple keys for oneof "').concat(c.oneof.name,'" present: "').concat(d,'", "').concat(o,'"'));r.set(c.oneof,o)}ws(i,a,c,t,n)}else{let d=!1;if(s!=null&&s.findExtension&&o.startsWith("[")&&o.endsWith("]")){const u=s.findExtension(o.substring(1,o.length-1));if(u&&u.extendee.typeName==n.typeName){d=!0;const[l,h]=vs(u);ws(l,a,u.field,t,u),zd(i,u,h(),t)}}if(!d&&!t.ignoreUnknownFields)throw new Error("cannot decode message ".concat(n.typeName,' from JSON: key "').concat(o,'" is unknown'))}}return i},writeMessage(n,e){const t=n.getType(),i={};let r;try{for(r of t.fields.byNumber()){if(!Ts(r,n)){if(r.req)throw"required field not set";if(!e.emitDefaultValues||!$d(r))continue}const o=r.oneof?n[r.oneof.localName].value:n[r.localName],a=Rs(r,o,e);a!==void 0&&(i[e.useProtoFieldName?r.name:r.jsonName]=a)}const s=e.typeRegistry;if(s!=null&&s.findExtensionFor)for(const o of t.runtime.bin.listUnknownFields(n)){const a=s.findExtensionFor(t.typeName,o.no);if(a&&bs(n,a)){const c=Kd(n,a,e),d=Rs(a.field,c,e);d!==void 0&&(i[a.field.jsonName]=d)}}}catch(s){const o=r?"cannot encode field ".concat(t.typeName,".").concat(r.name," to JSON"):"cannot encode message ".concat(t.typeName," to JSON"),a=s instanceof Error?s.message:String(s);throw new Error(o+(a.length>0?": ".concat(a):""))}return i},readScalar(n,e,t){return tn(n,e,t??yt.BIGINT,!0)},writeScalar(n,e,t){if(e!==void 0&&(t||gs(n,e)))return In(n,e)},debug:Ze}}function Ze(n){if(n===null)return"null";switch(typeof n){case"object":return Array.isArray(n)?"array":"object";case"string":return n.length>100?"string":'"'.concat(n.split('"').join('\\"'),'"');default:return String(n)}}function ws(n,e,t,i,r){let s=t.localName;if(t.repeated){if(oe(t.kind!="map"),e===null)return;if(!Array.isArray(e))throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Ze(e)));const o=n[s];for(const a of e){if(a===null)throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Ze(a)));switch(t.kind){case"message":o.push(t.T.fromJson(a,i));break;case"enum":const c=Ti(t.T,a,i.ignoreUnknownFields,!0);c!==_n&&o.push(c);break;case"scalar":try{o.push(tn(t.T,a,t.L,!0))}catch(d){let u="cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Ze(a));throw d instanceof Error&&d.message.length>0&&(u+=": ".concat(d.message)),new Error(u)}break}}}else if(t.kind=="map"){if(e===null)return;if(typeof e!="object"||Array.isArray(e))throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Ze(e)));const o=n[s];for(const[a,c]of Object.entries(e)){if(c===null)throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: map value null"));let d;try{d=Jd(t.K,a)}catch(u){let l="cannot decode map key for field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Ze(e));throw u instanceof Error&&u.message.length>0&&(l+=": ".concat(u.message)),new Error(l)}switch(t.V.kind){case"message":o[d]=t.V.T.fromJson(c,i);break;case"enum":const u=Ti(t.V.T,c,i.ignoreUnknownFields,!0);u!==_n&&(o[d]=u);break;case"scalar":try{o[d]=tn(t.V.T,c,yt.BIGINT,!0)}catch(l){let h="cannot decode map value for field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Ze(e));throw l instanceof Error&&l.message.length>0&&(h+=": ".concat(l.message)),new Error(h)}break}}}else switch(t.oneof&&(n=n[t.oneof.localName]={case:s},s="value"),t.kind){case"message":const o=t.T;if(e===null&&o.typeName!="google.protobuf.Value")return;let a=n[s];ct(a)?a.fromJson(e,i):(n[s]=a=o.fromJson(e,i),o.fieldWrapper&&!t.oneof&&(n[s]=o.fieldWrapper.unwrapField(a)));break;case"enum":const c=Ti(t.T,e,i.ignoreUnknownFields,!1);switch(c){case Rn:Ss(t,n);break;case _n:break;default:n[s]=c;break}break;case"scalar":try{const d=tn(t.T,e,t.L,!1);switch(d){case Rn:Ss(t,n);break;default:n[s]=d;break}}catch(d){let u="cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(Ze(e));throw d instanceof Error&&d.message.length>0&&(u+=": ".concat(d.message)),new Error(u)}break}}function Jd(n,e){if(n===P.BOOL)switch(e){case"true":e=!0;break;case"false":e=!1;break}return tn(n,e,yt.BIGINT,!0).toString()}function tn(n,e,t,i){if(e===null)return i?Ut(n,t):Rn;switch(n){case P.DOUBLE:case P.FLOAT:if(e==="NaN")return Number.NaN;if(e==="Infinity")return Number.POSITIVE_INFINITY;if(e==="-Infinity")return Number.NEGATIVE_INFINITY;if(e===""||typeof e=="string"&&e.trim().length!==e.length||typeof e!="string"&&typeof e!="number")break;const r=Number(e);if(Number.isNaN(r)||!Number.isFinite(r))break;return n==P.FLOAT&&as(r),r;case P.INT32:case P.FIXED32:case P.SFIXED32:case P.SINT32:case P.UINT32:let s;if(typeof e=="number"?s=e:typeof e=="string"&&e.length>0&&e.trim().length===e.length&&(s=Number(e)),s===void 0)break;return n==P.UINT32||n==P.FIXED32?vi(s):En(s),s;case P.INT64:case P.SFIXED64:case P.SINT64:if(typeof e!="number"&&typeof e!="string")break;const o=ie.parse(e);return t?o.toString():o;case P.FIXED64:case P.UINT64:if(typeof e!="number"&&typeof e!="string")break;const a=ie.uParse(e);return t?a.toString():a;case P.BOOL:if(typeof e!="boolean")break;return e;case P.STRING:if(typeof e!="string")break;try{encodeURIComponent(e)}catch{throw new Error("invalid UTF8")}return e;case P.BYTES:if(e==="")return new Uint8Array(0);if(typeof e!="string")break;return ys.dec(e)}throw new Error}function Ti(n,e,t,i){if(e===null)return n.typeName=="google.protobuf.NullValue"?0:i?n.values[0].no:Rn;switch(typeof e){case"number":if(Number.isInteger(e))return e;break;case"string":const r=n.findName(e);if(r!==void 0)return r.no;if(t)return _n;break}throw new Error("cannot decode enum ".concat(n.typeName," from JSON: ").concat(Ze(e)))}function $d(n){return n.repeated||n.kind=="map"?!0:!(n.oneof||n.kind=="message"||n.opt||n.req)}function Rs(n,e,t){if(n.kind=="map"){oe(typeof e=="object"&&e!=null);const i={},r=Object.entries(e);switch(n.V.kind){case"scalar":for(const[o,a]of r)i[o.toString()]=In(n.V.T,a);break;case"message":for(const[o,a]of r)i[o.toString()]=a.toJson(t);break;case"enum":const s=n.V.T;for(const[o,a]of r)i[o.toString()]=Si(s,a,t.enumAsInteger);break}return t.emitDefaultValues||r.length>0?i:void 0}if(n.repeated){oe(Array.isArray(e));const i=[];switch(n.kind){case"scalar":for(let r=0;r<e.length;r++)i.push(In(n.T,e[r]));break;case"enum":for(let r=0;r<e.length;r++)i.push(Si(n.T,e[r],t.enumAsInteger));break;case"message":for(let r=0;r<e.length;r++)i.push(e[r].toJson(t));break}return t.emitDefaultValues||i.length>0?i:void 0}switch(n.kind){case"scalar":return In(n.T,e);case"enum":return Si(n.T,e,t.enumAsInteger);case"message":return Cs(n.T,e).toJson(t)}}function Si(n,e,t){var i;if(oe(typeof e=="number"),n.typeName=="google.protobuf.NullValue")return null;if(t)return e;const r=n.findNumber(e);return(i=r==null?void 0:r.name)!==null&&i!==void 0?i:e}function In(n,e){switch(n){case P.INT32:case P.SFIXED32:case P.SINT32:case P.FIXED32:case P.UINT32:return oe(typeof e=="number"),e;case P.FLOAT:case P.DOUBLE:return oe(typeof e=="number"),Number.isNaN(e)?"NaN":e===Number.POSITIVE_INFINITY?"Infinity":e===Number.NEGATIVE_INFINITY?"-Infinity":e;case P.STRING:return oe(typeof e=="string"),e;case P.BOOL:return oe(typeof e=="boolean"),e;case P.UINT64:case P.FIXED64:case P.INT64:case P.SFIXED64:case P.SINT64:return oe(typeof e=="bigint"||typeof e=="string"||typeof e=="number"),e.toString();case P.BYTES:return oe(e instanceof Uint8Array),ys.enc(e)}}const Ft=Symbol("@bufbuild/protobuf/unknown-fields"),_s={readUnknownFields:!0,readerFactory:n=>new jd(n)},Is={writeUnknownFields:!0,writerFactory:()=>new Fd};function Qd(n){return n?Object.assign(Object.assign({},_s),n):_s}function Yd(n){return n?Object.assign(Object.assign({},Is),n):Is}function Xd(){return{makeReadOptions:Qd,makeWriteOptions:Yd,listUnknownFields(n){var e;return(e=n[Ft])!==null&&e!==void 0?e:[]},discardUnknownFields(n){delete n[Ft]},writeUnknownFields(n,e){const i=n[Ft];if(i)for(const r of i)e.tag(r.no,r.wireType).raw(r.data)},onUnknownField(n,e,t,i){const r=n;Array.isArray(r[Ft])||(r[Ft]=[]),r[Ft].push({no:e,wireType:t,data:i})},readMessage(n,e,t,i,r){const s=n.getType(),o=r?e.len:e.pos+t;let a,c;for(;e.pos<o&&([a,c]=e.tag(),!(r===!0&&c==he.EndGroup));){const d=s.fields.find(a);if(!d){const u=e.skip(c,a);i.readUnknownFields&&this.onUnknownField(n,a,c,u);continue}Ds(n,e,d,c,i)}if(r&&(c!=he.EndGroup||a!==t))throw new Error("invalid end group tag")},readField:Ds,writeMessage(n,e,t){const i=n.getType();for(const r of i.fields.byNumber()){if(!Ts(r,n)){if(r.req)throw new Error("cannot encode field ".concat(i.typeName,".").concat(r.name," to binary: required field not set"));continue}const s=r.oneof?n[r.oneof.localName].value:n[r.localName];Ms(r,s,e,t)}return t.writeUnknownFields&&this.writeUnknownFields(n,e),e},writeField(n,e,t,i){e!==void 0&&Ms(n,e,t,i)}}}function Ds(n,e,t,i,r){let{repeated:s,localName:o}=t;switch(t.oneof&&(n=n[t.oneof.localName],n.case!=o&&delete n.value,n.case=o,o="value"),t.kind){case"scalar":case"enum":const a=t.kind=="enum"?P.INT32:t.T;let c=Mn;if(t.kind=="scalar"&&t.L>0&&(c=eu),s){let h=n[o];if(i==he.LengthDelimited&&a!=P.STRING&&a!=P.BYTES){let g=e.uint32()+e.pos;for(;e.pos<g;)h.push(c(e,a))}else h.push(c(e,a))}else n[o]=c(e,a);break;case"message":const d=t.T;s?n[o].push(Dn(e,new d,r,t)):ct(n[o])?Dn(e,n[o],r,t):(n[o]=Dn(e,new d,r,t),d.fieldWrapper&&!t.oneof&&!t.repeated&&(n[o]=d.fieldWrapper.unwrapField(n[o])));break;case"map":let[u,l]=Zd(t,e,r);n[o][u]=l;break}}function Dn(n,e,t,i){const r=e.getType().runtime.bin,s=i==null?void 0:i.delimited;return r.readMessage(e,n,s?i.no:n.uint32(),t,s),e}function Zd(n,e,t){const i=e.uint32(),r=e.pos+i;let s,o;for(;e.pos<r;){const[a]=e.tag();switch(a){case 1:s=Mn(e,n.K);break;case 2:switch(n.V.kind){case"scalar":o=Mn(e,n.V.T);break;case"enum":o=e.int32();break;case"message":o=Dn(e,new n.V.T,t,void 0);break}break}}if(s===void 0&&(s=Ut(n.K,yt.BIGINT)),typeof s!="string"&&typeof s!="number"&&(s=s.toString()),o===void 0)switch(n.V.kind){case"scalar":o=Ut(n.V.T,yt.BIGINT);break;case"enum":o=n.V.T.values[0].no;break;case"message":o=new n.V.T;break}return[s,o]}function eu(n,e){const t=Mn(n,e);return typeof t=="bigint"?t.toString():t}function Mn(n,e){switch(e){case P.STRING:return n.string();case P.BOOL:return n.bool();case P.DOUBLE:return n.double();case P.FLOAT:return n.float();case P.INT32:return n.int32();case P.INT64:return n.int64();case P.UINT64:return n.uint64();case P.FIXED64:return n.fixed64();case P.BYTES:return n.bytes();case P.FIXED32:return n.fixed32();case P.SFIXED32:return n.sfixed32();case P.SFIXED64:return n.sfixed64();case P.SINT64:return n.sint64();case P.UINT32:return n.uint32();case P.SINT32:return n.sint32()}}function Ms(n,e,t,i){oe(e!==void 0);const r=n.repeated;switch(n.kind){case"scalar":case"enum":let s=n.kind=="enum"?P.INT32:n.T;if(r)if(oe(Array.isArray(e)),n.packed)nu(t,s,n.no,e);else for(const o of e)nn(t,s,n.no,o);else nn(t,s,n.no,e);break;case"message":if(r){oe(Array.isArray(e));for(const o of e)Os(t,i,n,o)}else Os(t,i,n,e);break;case"map":oe(typeof e=="object"&&e!=null);for(const[o,a]of Object.entries(e))tu(t,i,n,o,a);break}}function tu(n,e,t,i,r){n.tag(t.no,he.LengthDelimited),n.fork();let s=i;switch(t.K){case P.INT32:case P.FIXED32:case P.UINT32:case P.SFIXED32:case P.SINT32:s=Number.parseInt(i);break;case P.BOOL:oe(i=="true"||i=="false"),s=i=="true";break}switch(nn(n,t.K,1,s),t.V.kind){case"scalar":nn(n,t.V.T,2,r);break;case"enum":nn(n,P.INT32,2,r);break;case"message":oe(r!==void 0),n.tag(2,he.LengthDelimited).bytes(r.toBinary(e));break}n.join()}function Os(n,e,t,i){const r=Cs(t.T,i);t.delimited?n.tag(t.no,he.StartGroup).raw(r.toBinary(e)).tag(t.no,he.EndGroup):n.tag(t.no,he.LengthDelimited).bytes(r.toBinary(e))}function nn(n,e,t,i){oe(i!==void 0);let[r,s]=As(e);n.tag(t,r)[s](i)}function nu(n,e,t,i){if(!i.length)return;n.tag(t,he.LengthDelimited).fork();let[,r]=As(e);for(let s=0;s<i.length;s++)n[r](i[s]);n.join()}function As(n){let e=he.Varint;switch(n){case P.BYTES:case P.STRING:e=he.LengthDelimited;break;case P.DOUBLE:case P.FIXED64:case P.SFIXED64:e=he.Bit64;break;case P.FIXED32:case P.SFIXED32:case P.FLOAT:e=he.Bit32;break}const t=P[n].toLowerCase();return[e,t]}function iu(){return{setEnumType:cs,initPartial(n,e){if(n===void 0)return;const t=e.getType();for(const i of t.fields.byMember()){const r=i.localName,s=e,o=n;if(o[r]!=null)switch(i.kind){case"oneof":const a=o[r].case;if(a===void 0)continue;const c=i.findField(a);let d=o[r].value;c&&c.kind=="message"&&!ct(d,c.T)?d=new c.T(d):c&&c.kind==="scalar"&&c.T===P.BYTES&&(d=rn(d)),s[r]={case:a,value:d};break;case"scalar":case"enum":let u=o[r];i.T===P.BYTES&&(u=i.repeated?u.map(rn):rn(u)),s[r]=u;break;case"map":switch(i.V.kind){case"scalar":case"enum":if(i.V.T===P.BYTES)for(const[m,g]of Object.entries(o[r]))s[r][m]=rn(g);else Object.assign(s[r],o[r]);break;case"message":const h=i.V.T;for(const m of Object.keys(o[r])){let g=o[r][m];h.fieldWrapper||(g=new h(g)),s[r][m]=g}break}break;case"message":const l=i.T;if(i.repeated)s[r]=o[r].map(h=>ct(h,l)?h:new l(h));else{const h=o[r];l.fieldWrapper?l.typeName==="google.protobuf.BytesValue"?s[r]=rn(h):s[r]=h:s[r]=ct(h,l)?h:new l(h)}break}}},equals(n,e,t){return e===t?!0:!e||!t?!1:n.fields.byMember().every(i=>{const r=e[i.localName],s=t[i.localName];if(i.repeated){if(r.length!==s.length)return!1;switch(i.kind){case"message":return r.every((o,a)=>i.T.equals(o,s[a]));case"scalar":return r.every((o,a)=>bt(i.T,o,s[a]));case"enum":return r.every((o,a)=>bt(P.INT32,o,s[a]))}throw new Error("repeated cannot contain ".concat(i.kind))}switch(i.kind){case"message":let o=r,a=s;return i.T.fieldWrapper&&(o!==void 0&&!ct(o)&&(o=i.T.fieldWrapper.wrapField(o)),a!==void 0&&!ct(a)&&(a=i.T.fieldWrapper.wrapField(a))),i.T.equals(o,a);case"enum":return bt(P.INT32,r,s);case"scalar":return bt(i.T,r,s);case"oneof":if(r.case!==s.case)return!1;const c=i.findField(r.case);if(c===void 0)return!0;switch(c.kind){case"message":return c.T.equals(r.value,s.value);case"enum":return bt(P.INT32,r.value,s.value);case"scalar":return bt(c.T,r.value,s.value)}throw new Error("oneof cannot contain ".concat(c.kind));case"map":const d=Object.keys(r).concat(Object.keys(s));switch(i.V.kind){case"message":const u=i.V.T;return d.every(h=>u.equals(r[h],s[h]));case"enum":return d.every(h=>bt(P.INT32,r[h],s[h]));case"scalar":const l=i.V.T;return d.every(h=>bt(l,r[h],s[h]))}break}})},clone(n){const e=n.getType(),t=new e,i=t;for(const r of e.fields.byMember()){const s=n[r.localName];let o;if(r.repeated)o=s.map(On);else if(r.kind=="map"){o=i[r.localName];for(const[a,c]of Object.entries(s))o[a]=On(c)}else r.kind=="oneof"?o=r.findField(s.case)?{case:s.case,value:On(s.value)}:{case:void 0}:o=On(s);i[r.localName]=o}for(const r of e.runtime.bin.listUnknownFields(n))e.runtime.bin.onUnknownField(i,r.no,r.wireType,r.data);return t}}}function On(n){if(n===void 0)return n;if(ct(n))return n.clone();if(n instanceof Uint8Array){const e=new Uint8Array(n.byteLength);return e.set(n),e}return n}function rn(n){return n instanceof Uint8Array?n:new Uint8Array(n)}function ru(n,e,t){return{syntax:n,json:Hd(),bin:Xd(),util:Object.assign(Object.assign({},iu()),{newFieldList:e,initFields:t}),makeMessageType(i,r,s){return Od(this,i,r,s)},makeEnum:Md,makeEnumType:ds,getEnumType:Dd,makeExtension(i,r,s){return Bd(this,i,r,s)}}}class su{constructor(e,t){this._fields=e,this._normalizer=t}findJsonName(e){if(!this.jsonNames){const t={};for(const i of this.list())t[i.jsonName]=t[i.name]=i;this.jsonNames=t}return this.jsonNames[e]}find(e){if(!this.numbers){const t={};for(const i of this.list())t[i.no]=i;this.numbers=t}return this.numbers[e]}list(){return this.all||(this.all=this._normalizer(this._fields)),this.all}byNumber(){return this.numbersAsc||(this.numbersAsc=this.list().concat().sort((e,t)=>e.no-t.no)),this.numbersAsc}byMember(){if(!this.members){this.members=[];const e=this.members;let t;for(const i of this.list())i.oneof?i.oneof!==t&&(t=i.oneof,e.push(t)):e.push(i)}return this.members}}function xs(n,e){const t=Ls(n);return e?t:lu(uu(t))}function au(n){return xs(n,!1)}const ou=Ls;function Ls(n){let e=!1;const t=[];for(let i=0;i<n.length;i++){let r=n.charAt(i);switch(r){case"_":e=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":t.push(r),e=!1;break;default:e&&(e=!1,r=r.toUpperCase()),t.push(r);break}}return t.join("")}const cu=new Set(["constructor","toString","toJSON","valueOf"]),du=new Set(["getType","clone","equals","fromBinary","fromJson","fromJsonString","toBinary","toJson","toJsonString","toObject"]),Ns=n=>"".concat(n,"$"),uu=n=>du.has(n)?Ns(n):n,lu=n=>cu.has(n)?Ns(n):n;class hu{constructor(e){this.kind="oneof",this.repeated=!1,this.packed=!1,this.opt=!1,this.req=!1,this.default=void 0,this.fields=[],this.name=e,this.localName=au(e)}addField(e){oe(e.oneof===this,"field ".concat(e.name," not one of ").concat(this.name)),this.fields.push(e)}findField(e){if(!this._lookup){this._lookup=Object.create(null);for(let t=0;t<this.fields.length;t++)this._lookup[this.fields[t].localName]=this.fields[t]}return this._lookup[e]}}function fu(n,e){var t,i,r,s,o,a;const c=[];let d;for(const u of typeof n=="function"?n():n){const l=u;if(l.localName=xs(u.name,u.oneof!==void 0),l.jsonName=(t=u.jsonName)!==null&&t!==void 0?t:ou(u.name),l.repeated=(i=u.repeated)!==null&&i!==void 0?i:!1,u.kind=="scalar"&&(l.L=(r=u.L)!==null&&r!==void 0?r:yt.BIGINT),l.delimited=(s=u.delimited)!==null&&s!==void 0?s:!1,l.req=(o=u.req)!==null&&o!==void 0?o:!1,l.opt=(a=u.opt)!==null&&a!==void 0?a:!1,u.packed===void 0&&(l.packed=u.kind=="enum"||u.kind=="scalar"&&u.T!=P.BYTES&&u.T!=P.STRING),u.oneof!==void 0){const h=typeof u.oneof=="string"?u.oneof:u.oneof.name;(!d||d.name!=h)&&(d=new hu(h)),l.oneof=d,d.addField(l)}c.push(l)}return c}const y=ru("proto3",n=>new su(n,e=>fu(e)),n=>{for(const e of n.getType().fields.byMember()){if(e.opt)continue;const t=e.localName,i=n;if(e.repeated){i[t]=[];continue}switch(e.kind){case"oneof":i[t]={case:void 0};break;case"enum":i[t]=0;break;case"map":i[t]={};break;case"scalar":i[t]=Ut(e.T,e.L);break}}});class Re extends yi{constructor(e){super(),this.seconds=ie.zero,this.nanos=0,y.util.initPartial(e,this)}fromJson(e,t){if(typeof e!="string")throw new Error("cannot decode google.protobuf.Timestamp from JSON: ".concat(y.json.debug(e)));const i=e.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!i)throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");const r=Date.parse(i[1]+"-"+i[2]+"-"+i[3]+"T"+i[4]+":"+i[5]+":"+i[6]+(i[8]?i[8]:"Z"));if(Number.isNaN(r))throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");if(r<Date.parse("0001-01-01T00:00:00Z")||r>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot decode message google.protobuf.Timestamp from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");return this.seconds=ie.parse(r/1e3),this.nanos=0,i[7]&&(this.nanos=parseInt("1"+i[7]+"0".repeat(9-i[7].length))-1e9),this}toJson(e){const t=Number(this.seconds)*1e3;if(t<Date.parse("0001-01-01T00:00:00Z")||t>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot encode google.protobuf.Timestamp to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");if(this.nanos<0)throw new Error("cannot encode google.protobuf.Timestamp to JSON: nanos must not be negative");let i="Z";if(this.nanos>0){const r=(this.nanos+1e9).toString().substring(1);r.substring(3)==="000000"?i="."+r.substring(0,3)+"Z":r.substring(6)==="000"?i="."+r.substring(0,6)+"Z":i="."+r+"Z"}return new Date(t).toISOString().replace(".000Z",i)}toDate(){return new Date(Number(this.seconds)*1e3+Math.ceil(this.nanos/1e6))}static now(){return Re.fromDate(new Date)}static fromDate(e){const t=e.getTime();return new Re({seconds:ie.parse(Math.floor(t/1e3)),nanos:t%1e3*1e6})}static fromBinary(e,t){return new Re().fromBinary(e,t)}static fromJson(e,t){return new Re().fromJson(e,t)}static fromJsonString(e,t){return new Re().fromJsonString(e,t)}static equals(e,t){return y.util.equals(Re,e,t)}}Re.runtime=y,Re.typeName="google.protobuf.Timestamp",Re.fields=y.util.newFieldList(()=>[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}]);const mu=y.makeMessageType("livekit.MetricsBatch",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:Re},{no:3,name:"str_data",kind:"scalar",T:9,repeated:!0},{no:4,name:"time_series",kind:"message",T:pu,repeated:!0},{no:5,name:"events",kind:"message",T:vu,repeated:!0}]),pu=y.makeMessageType("livekit.TimeSeriesMetric",()=>[{no:1,name:"label",kind:"scalar",T:13},{no:2,name:"participant_identity",kind:"scalar",T:13},{no:3,name:"track_sid",kind:"scalar",T:13},{no:4,name:"samples",kind:"message",T:gu,repeated:!0},{no:5,name:"rid",kind:"scalar",T:13}]),gu=y.makeMessageType("livekit.MetricSample",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:Re},{no:3,name:"value",kind:"scalar",T:2}]),vu=y.makeMessageType("livekit.EventMetric",()=>[{no:1,name:"label",kind:"scalar",T:13},{no:2,name:"participant_identity",kind:"scalar",T:13},{no:3,name:"track_sid",kind:"scalar",T:13},{no:4,name:"start_timestamp_ms",kind:"scalar",T:3},{no:5,name:"end_timestamp_ms",kind:"scalar",T:3,opt:!0},{no:6,name:"normalized_start_timestamp",kind:"message",T:Re},{no:7,name:"normalized_end_timestamp",kind:"message",T:Re,opt:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"rid",kind:"scalar",T:13}]),Us=y.makeEnum("livekit.BackupCodecPolicy",[{no:0,name:"PREFER_REGRESSION"},{no:1,name:"SIMULCAST"},{no:2,name:"REGRESSION"}]),Ue=y.makeEnum("livekit.TrackType",[{no:0,name:"AUDIO"},{no:1,name:"VIDEO"},{no:2,name:"DATA"}]),me=y.makeEnum("livekit.TrackSource",[{no:0,name:"UNKNOWN"},{no:1,name:"CAMERA"},{no:2,name:"MICROPHONE"},{no:3,name:"SCREEN_SHARE"},{no:4,name:"SCREEN_SHARE_AUDIO"}]),Ci=y.makeEnum("livekit.VideoQuality",[{no:0,name:"LOW"},{no:1,name:"MEDIUM"},{no:2,name:"HIGH"},{no:3,name:"OFF"}]),sn=y.makeEnum("livekit.ConnectionQuality",[{no:0,name:"POOR"},{no:1,name:"GOOD"},{no:2,name:"EXCELLENT"},{no:3,name:"LOST"}]),an=y.makeEnum("livekit.ClientConfigSetting",[{no:0,name:"UNSET"},{no:1,name:"DISABLED"},{no:2,name:"ENABLED"}]),Fe=y.makeEnum("livekit.DisconnectReason",[{no:0,name:"UNKNOWN_REASON"},{no:1,name:"CLIENT_INITIATED"},{no:2,name:"DUPLICATE_IDENTITY"},{no:3,name:"SERVER_SHUTDOWN"},{no:4,name:"PARTICIPANT_REMOVED"},{no:5,name:"ROOM_DELETED"},{no:6,name:"STATE_MISMATCH"},{no:7,name:"JOIN_FAILURE"},{no:8,name:"MIGRATION"},{no:9,name:"SIGNAL_CLOSE"},{no:10,name:"ROOM_CLOSED"},{no:11,name:"USER_UNAVAILABLE"},{no:12,name:"USER_REJECTED"},{no:13,name:"SIP_TRUNK_FAILURE"},{no:14,name:"CONNECTION_TIMEOUT"},{no:15,name:"MEDIA_FAILURE"}]),jt=y.makeEnum("livekit.ReconnectReason",[{no:0,name:"RR_UNKNOWN"},{no:1,name:"RR_SIGNAL_DISCONNECTED"},{no:2,name:"RR_PUBLISHER_FAILED"},{no:3,name:"RR_SUBSCRIBER_FAILED"},{no:4,name:"RR_SWITCH_CANDIDATE"}]),Fs=y.makeEnum("livekit.SubscriptionError",[{no:0,name:"SE_UNKNOWN"},{no:1,name:"SE_CODEC_UNSUPPORTED"},{no:2,name:"SE_TRACK_NOTFOUND"}]),be=y.makeEnum("livekit.AudioTrackFeature",[{no:0,name:"TF_STEREO"},{no:1,name:"TF_NO_DTX"},{no:2,name:"TF_AUTO_GAIN_CONTROL"},{no:3,name:"TF_ECHO_CANCELLATION"},{no:4,name:"TF_NOISE_SUPPRESSION"},{no:5,name:"TF_ENHANCED_NOISE_CANCELLATION"},{no:6,name:"TF_PRECONNECT_BUFFER"}]),An=y.makeMessageType("livekit.Room",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"empty_timeout",kind:"scalar",T:13},{no:14,name:"departure_timeout",kind:"scalar",T:13},{no:4,name:"max_participants",kind:"scalar",T:13},{no:5,name:"creation_time",kind:"scalar",T:3},{no:15,name:"creation_time_ms",kind:"scalar",T:3},{no:6,name:"turn_password",kind:"scalar",T:9},{no:7,name:"enabled_codecs",kind:"message",T:xn,repeated:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"num_participants",kind:"scalar",T:13},{no:11,name:"num_publishers",kind:"scalar",T:13},{no:10,name:"active_recording",kind:"scalar",T:8},{no:13,name:"version",kind:"message",T:Xs}]),xn=y.makeMessageType("livekit.Codec",()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}]),yu=y.makeMessageType("livekit.ParticipantPermission",()=>[{no:1,name:"can_subscribe",kind:"scalar",T:8},{no:2,name:"can_publish",kind:"scalar",T:8},{no:3,name:"can_publish_data",kind:"scalar",T:8},{no:9,name:"can_publish_sources",kind:"enum",T:y.getEnumType(me),repeated:!0},{no:7,name:"hidden",kind:"scalar",T:8},{no:8,name:"recorder",kind:"scalar",T:8},{no:10,name:"can_update_metadata",kind:"scalar",T:8},{no:11,name:"agent",kind:"scalar",T:8},{no:12,name:"can_subscribe_metrics",kind:"scalar",T:8}]),wt=y.makeMessageType("livekit.ParticipantInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"identity",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:y.getEnumType(Bt)},{no:4,name:"tracks",kind:"message",T:qt,repeated:!0},{no:5,name:"metadata",kind:"scalar",T:9},{no:6,name:"joined_at",kind:"scalar",T:3},{no:17,name:"joined_at_ms",kind:"scalar",T:3},{no:9,name:"name",kind:"scalar",T:9},{no:10,name:"version",kind:"scalar",T:13},{no:11,name:"permission",kind:"message",T:yu},{no:12,name:"region",kind:"scalar",T:9},{no:13,name:"is_publisher",kind:"scalar",T:8},{no:14,name:"kind",kind:"enum",T:y.getEnumType(Vt)},{no:15,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:16,name:"disconnect_reason",kind:"enum",T:y.getEnumType(Fe)},{no:18,name:"kind_details",kind:"enum",T:y.getEnumType(bu),repeated:!0}]),Bt=y.makeEnum("livekit.ParticipantInfo.State",[{no:0,name:"JOINING"},{no:1,name:"JOINED"},{no:2,name:"ACTIVE"},{no:3,name:"DISCONNECTED"}]),Vt=y.makeEnum("livekit.ParticipantInfo.Kind",[{no:0,name:"STANDARD"},{no:1,name:"INGRESS"},{no:2,name:"EGRESS"},{no:3,name:"SIP"},{no:4,name:"AGENT"}]),bu=y.makeEnum("livekit.ParticipantInfo.KindDetail",[{no:0,name:"CLOUD_AGENT"},{no:1,name:"FORWARDED"}]),Ne=y.makeEnum("livekit.Encryption.Type",[{no:0,name:"NONE"},{no:1,name:"GCM"},{no:2,name:"CUSTOM"}]),ku=y.makeMessageType("livekit.SimulcastCodecInfo",()=>[{no:1,name:"mime_type",kind:"scalar",T:9},{no:2,name:"mid",kind:"scalar",T:9},{no:3,name:"cid",kind:"scalar",T:9},{no:4,name:"layers",kind:"message",T:Rt,repeated:!0}]),qt=y.makeMessageType("livekit.TrackInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:y.getEnumType(Ue)},{no:3,name:"name",kind:"scalar",T:9},{no:4,name:"muted",kind:"scalar",T:8},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"simulcast",kind:"scalar",T:8},{no:8,name:"disable_dtx",kind:"scalar",T:8},{no:9,name:"source",kind:"enum",T:y.getEnumType(me)},{no:10,name:"layers",kind:"message",T:Rt,repeated:!0},{no:11,name:"mime_type",kind:"scalar",T:9},{no:12,name:"mid",kind:"scalar",T:9},{no:13,name:"codecs",kind:"message",T:ku,repeated:!0},{no:14,name:"stereo",kind:"scalar",T:8},{no:15,name:"disable_red",kind:"scalar",T:8},{no:16,name:"encryption",kind:"enum",T:y.getEnumType(Ne)},{no:17,name:"stream",kind:"scalar",T:9},{no:18,name:"version",kind:"message",T:Xs},{no:19,name:"audio_features",kind:"enum",T:y.getEnumType(be),repeated:!0},{no:20,name:"backup_codec_policy",kind:"enum",T:y.getEnumType(Us)}]),Rt=y.makeMessageType("livekit.VideoLayer",()=>[{no:1,name:"quality",kind:"enum",T:y.getEnumType(Ci)},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13},{no:4,name:"bitrate",kind:"scalar",T:13},{no:5,name:"ssrc",kind:"scalar",T:13},{no:6,name:"spatial_layer",kind:"scalar",T:5},{no:7,name:"rid",kind:"scalar",T:9}]),_e=y.makeMessageType("livekit.DataPacket",()=>[{no:1,name:"kind",kind:"enum",T:y.getEnumType(V)},{no:4,name:"participant_identity",kind:"scalar",T:9},{no:5,name:"destination_identities",kind:"scalar",T:9,repeated:!0},{no:2,name:"user",kind:"message",T:Bs,oneof:"value"},{no:3,name:"speaker",kind:"message",T:Tu,oneof:"value"},{no:6,name:"sip_dtmf",kind:"message",T:Vs,oneof:"value"},{no:7,name:"transcription",kind:"message",T:Su,oneof:"value"},{no:8,name:"metrics",kind:"message",T:mu,oneof:"value"},{no:9,name:"chat_message",kind:"message",T:Ei,oneof:"value"},{no:10,name:"rpc_request",kind:"message",T:qs,oneof:"value"},{no:11,name:"rpc_ack",kind:"message",T:Ks,oneof:"value"},{no:12,name:"rpc_response",kind:"message",T:zs,oneof:"value"},{no:13,name:"stream_header",kind:"message",T:wi,oneof:"value"},{no:14,name:"stream_chunk",kind:"message",T:Ri,oneof:"value"},{no:15,name:"stream_trailer",kind:"message",T:_i,oneof:"value"},{no:16,name:"sequence",kind:"scalar",T:13},{no:17,name:"participant_sid",kind:"scalar",T:9}]),V=y.makeEnum("livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]),Tu=y.makeMessageType("livekit.ActiveSpeakerUpdate",()=>[{no:1,name:"speakers",kind:"message",T:js,repeated:!0}]),js=y.makeMessageType("livekit.SpeakerInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"level",kind:"scalar",T:2},{no:3,name:"active",kind:"scalar",T:8}]),Bs=y.makeMessageType("livekit.UserPacket",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:5,name:"participant_identity",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:12},{no:3,name:"destination_sids",kind:"scalar",T:9,repeated:!0},{no:6,name:"destination_identities",kind:"scalar",T:9,repeated:!0},{no:4,name:"topic",kind:"scalar",T:9,opt:!0},{no:8,name:"id",kind:"scalar",T:9,opt:!0},{no:9,name:"start_time",kind:"scalar",T:4,opt:!0},{no:10,name:"end_time",kind:"scalar",T:4,opt:!0},{no:11,name:"nonce",kind:"scalar",T:12}]),Vs=y.makeMessageType("livekit.SipDTMF",()=>[{no:3,name:"code",kind:"scalar",T:13},{no:4,name:"digit",kind:"scalar",T:9}]),Su=y.makeMessageType("livekit.Transcription",()=>[{no:2,name:"transcribed_participant_identity",kind:"scalar",T:9},{no:3,name:"track_id",kind:"scalar",T:9},{no:4,name:"segments",kind:"message",T:Cu,repeated:!0}]),Cu=y.makeMessageType("livekit.TranscriptionSegment",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"text",kind:"scalar",T:9},{no:3,name:"start_time",kind:"scalar",T:4},{no:4,name:"end_time",kind:"scalar",T:4},{no:5,name:"final",kind:"scalar",T:8},{no:6,name:"language",kind:"scalar",T:9}]),Ei=y.makeMessageType("livekit.ChatMessage",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"timestamp",kind:"scalar",T:3},{no:3,name:"edit_timestamp",kind:"scalar",T:3,opt:!0},{no:4,name:"message",kind:"scalar",T:9},{no:5,name:"deleted",kind:"scalar",T:8},{no:6,name:"generated",kind:"scalar",T:8}]),qs=y.makeMessageType("livekit.RpcRequest",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"method",kind:"scalar",T:9},{no:3,name:"payload",kind:"scalar",T:9},{no:4,name:"response_timeout_ms",kind:"scalar",T:13},{no:5,name:"version",kind:"scalar",T:13}]),Ks=y.makeMessageType("livekit.RpcAck",()=>[{no:1,name:"request_id",kind:"scalar",T:9}]),zs=y.makeMessageType("livekit.RpcResponse",()=>[{no:1,name:"request_id",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:9,oneof:"value"},{no:3,name:"error",kind:"message",T:Ws,oneof:"value"}]),Ws=y.makeMessageType("livekit.RpcError",()=>[{no:1,name:"code",kind:"scalar",T:13},{no:2,name:"message",kind:"scalar",T:9},{no:3,name:"data",kind:"scalar",T:9}]),Gs=y.makeMessageType("livekit.ParticipantTracks",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}]),Hs=y.makeMessageType("livekit.ServerInfo",()=>[{no:1,name:"edition",kind:"enum",T:y.getEnumType(Js)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"region",kind:"scalar",T:9},{no:5,name:"node_id",kind:"scalar",T:9},{no:6,name:"debug_info",kind:"scalar",T:9},{no:7,name:"agent_protocol",kind:"scalar",T:5}]),Js=y.makeEnum("livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]),Eu=y.makeMessageType("livekit.ClientInfo",()=>[{no:1,name:"sdk",kind:"enum",T:y.getEnumType($s)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"os",kind:"scalar",T:9},{no:5,name:"os_version",kind:"scalar",T:9},{no:6,name:"device_model",kind:"scalar",T:9},{no:7,name:"browser",kind:"scalar",T:9},{no:8,name:"browser_version",kind:"scalar",T:9},{no:9,name:"address",kind:"scalar",T:9},{no:10,name:"network",kind:"scalar",T:9},{no:11,name:"other_sdks",kind:"scalar",T:9}]),$s=y.makeEnum("livekit.ClientInfo.SDK",[{no:0,name:"UNKNOWN"},{no:1,name:"JS"},{no:2,name:"SWIFT"},{no:3,name:"ANDROID"},{no:4,name:"FLUTTER"},{no:5,name:"GO"},{no:6,name:"UNITY"},{no:7,name:"REACT_NATIVE"},{no:8,name:"RUST"},{no:9,name:"PYTHON"},{no:10,name:"CPP"},{no:11,name:"UNITY_WEB"},{no:12,name:"NODE"},{no:13,name:"UNREAL"},{no:14,name:"ESP32"}]),Qs=y.makeMessageType("livekit.ClientConfiguration",()=>[{no:1,name:"video",kind:"message",T:Ys},{no:2,name:"screen",kind:"message",T:Ys},{no:3,name:"resume_connection",kind:"enum",T:y.getEnumType(an)},{no:4,name:"disabled_codecs",kind:"message",T:Pu},{no:5,name:"force_relay",kind:"enum",T:y.getEnumType(an)}]),Ys=y.makeMessageType("livekit.VideoConfiguration",()=>[{no:1,name:"hardware_encoder",kind:"enum",T:y.getEnumType(an)}]),Pu=y.makeMessageType("livekit.DisabledCodecs",()=>[{no:1,name:"codecs",kind:"message",T:xn,repeated:!0},{no:2,name:"publish",kind:"message",T:xn,repeated:!0}]),Xs=y.makeMessageType("livekit.TimedVersion",()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}]),Pi=y.makeEnum("livekit.DataStream.OperationType",[{no:0,name:"CREATE"},{no:1,name:"UPDATE"},{no:2,name:"DELETE"},{no:3,name:"REACTION"}]),Zs=y.makeMessageType("livekit.DataStream.TextHeader",()=>[{no:1,name:"operation_type",kind:"enum",T:y.getEnumType(Pi)},{no:2,name:"version",kind:"scalar",T:5},{no:3,name:"reply_to_stream_id",kind:"scalar",T:9},{no:4,name:"attached_stream_ids",kind:"scalar",T:9,repeated:!0},{no:5,name:"generated",kind:"scalar",T:8}],{localName:"DataStream_TextHeader"}),ea=y.makeMessageType("livekit.DataStream.ByteHeader",()=>[{no:1,name:"name",kind:"scalar",T:9}],{localName:"DataStream_ByteHeader"}),wi=y.makeMessageType("livekit.DataStream.Header",()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"timestamp",kind:"scalar",T:3},{no:3,name:"topic",kind:"scalar",T:9},{no:4,name:"mime_type",kind:"scalar",T:9},{no:5,name:"total_length",kind:"scalar",T:4,opt:!0},{no:7,name:"encryption_type",kind:"enum",T:y.getEnumType(Ne)},{no:8,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:9,name:"text_header",kind:"message",T:Zs,oneof:"content_header"},{no:10,name:"byte_header",kind:"message",T:ea,oneof:"content_header"}],{localName:"DataStream_Header"}),Ri=y.makeMessageType("livekit.DataStream.Chunk",()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"chunk_index",kind:"scalar",T:4},{no:3,name:"content",kind:"scalar",T:12},{no:4,name:"version",kind:"scalar",T:5},{no:5,name:"iv",kind:"scalar",T:12,opt:!0}],{localName:"DataStream_Chunk"}),_i=y.makeMessageType("livekit.DataStream.Trailer",()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"reason",kind:"scalar",T:9},{no:3,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}}],{localName:"DataStream_Trailer"}),We=y.makeEnum("livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}]),Ii=y.makeEnum("livekit.StreamState",[{no:0,name:"ACTIVE"},{no:1,name:"PAUSED"}]),wu=y.makeEnum("livekit.CandidateProtocol",[{no:0,name:"UDP"},{no:1,name:"TCP"},{no:2,name:"TLS"}]),Ru=y.makeMessageType("livekit.SignalRequest",()=>[{no:1,name:"offer",kind:"message",T:_t,oneof:"message"},{no:2,name:"answer",kind:"message",T:_t,oneof:"message"},{no:3,name:"trickle",kind:"message",T:Oi,oneof:"message"},{no:4,name:"add_track",kind:"message",T:Mi,oneof:"message"},{no:5,name:"mute",kind:"message",T:Ai,oneof:"message"},{no:6,name:"subscription",kind:"message",T:Ln,oneof:"message"},{no:7,name:"track_setting",kind:"message",T:na,oneof:"message"},{no:8,name:"leave",kind:"message",T:Nn,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:ra,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:ca,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:da,oneof:"message"},{no:13,name:"simulate",kind:"message",T:et,oneof:"message"},{no:14,name:"ping",kind:"scalar",T:3,oneof:"message"},{no:15,name:"update_metadata",kind:"message",T:sa,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:ha,oneof:"message"},{no:17,name:"update_audio_track",kind:"message",T:ia,oneof:"message"},{no:18,name:"update_video_track",kind:"message",T:Ou,oneof:"message"}]),ta=y.makeMessageType("livekit.SignalResponse",()=>[{no:1,name:"join",kind:"message",T:_u,oneof:"message"},{no:2,name:"answer",kind:"message",T:_t,oneof:"message"},{no:3,name:"offer",kind:"message",T:_t,oneof:"message"},{no:4,name:"trickle",kind:"message",T:Oi,oneof:"message"},{no:5,name:"update",kind:"message",T:Mu,oneof:"message"},{no:6,name:"track_published",kind:"message",T:xi,oneof:"message"},{no:8,name:"leave",kind:"message",T:Nn,oneof:"message"},{no:9,name:"mute",kind:"message",T:Ai,oneof:"message"},{no:10,name:"speakers_changed",kind:"message",T:Au,oneof:"message"},{no:11,name:"room_update",kind:"message",T:xu,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:Nu,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:Fu,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:Bu,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:Vu,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:Du,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:Iu,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:Ku,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:Gu,oneof:"message"},{no:22,name:"request_response",kind:"message",T:Hu,oneof:"message"},{no:23,name:"track_subscribed",kind:"message",T:Ju,oneof:"message"},{no:24,name:"room_moved",kind:"message",T:qu,oneof:"message"}]),Di=y.makeMessageType("livekit.SimulcastCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"cid",kind:"scalar",T:9}]),Mi=y.makeMessageType("livekit.AddTrackRequest",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"type",kind:"enum",T:y.getEnumType(Ue)},{no:4,name:"width",kind:"scalar",T:13},{no:5,name:"height",kind:"scalar",T:13},{no:6,name:"muted",kind:"scalar",T:8},{no:7,name:"disable_dtx",kind:"scalar",T:8},{no:8,name:"source",kind:"enum",T:y.getEnumType(me)},{no:9,name:"layers",kind:"message",T:Rt,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:Di,repeated:!0},{no:11,name:"sid",kind:"scalar",T:9},{no:12,name:"stereo",kind:"scalar",T:8},{no:13,name:"disable_red",kind:"scalar",T:8},{no:14,name:"encryption",kind:"enum",T:y.getEnumType(Ne)},{no:15,name:"stream",kind:"scalar",T:9},{no:16,name:"backup_codec_policy",kind:"enum",T:y.getEnumType(Us)},{no:17,name:"audio_features",kind:"enum",T:y.getEnumType(be),repeated:!0}]),Oi=y.makeMessageType("livekit.TrickleRequest",()=>[{no:1,name:"candidateInit",kind:"scalar",T:9},{no:2,name:"target",kind:"enum",T:y.getEnumType(We)},{no:3,name:"final",kind:"scalar",T:8}]),Ai=y.makeMessageType("livekit.MuteTrackRequest",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"muted",kind:"scalar",T:8}]),_u=y.makeMessageType("livekit.JoinResponse",()=>[{no:1,name:"room",kind:"message",T:An},{no:2,name:"participant",kind:"message",T:wt},{no:3,name:"other_participants",kind:"message",T:wt,repeated:!0},{no:4,name:"server_version",kind:"scalar",T:9},{no:5,name:"ice_servers",kind:"message",T:aa,repeated:!0},{no:6,name:"subscriber_primary",kind:"scalar",T:8},{no:7,name:"alternative_url",kind:"scalar",T:9},{no:8,name:"client_configuration",kind:"message",T:Qs},{no:9,name:"server_region",kind:"scalar",T:9},{no:10,name:"ping_timeout",kind:"scalar",T:5},{no:11,name:"ping_interval",kind:"scalar",T:5},{no:12,name:"server_info",kind:"message",T:Hs},{no:13,name:"sif_trailer",kind:"scalar",T:12},{no:14,name:"enabled_publish_codecs",kind:"message",T:xn,repeated:!0},{no:15,name:"fast_publish",kind:"scalar",T:8}]),Iu=y.makeMessageType("livekit.ReconnectResponse",()=>[{no:1,name:"ice_servers",kind:"message",T:aa,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:Qs},{no:3,name:"server_info",kind:"message",T:Hs},{no:4,name:"last_message_seq",kind:"scalar",T:13}]),xi=y.makeMessageType("livekit.TrackPublishedResponse",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:qt}]),Du=y.makeMessageType("livekit.TrackUnpublishedResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),_t=y.makeMessageType("livekit.SessionDescription",()=>[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sdp",kind:"scalar",T:9},{no:3,name:"id",kind:"scalar",T:13}]),Mu=y.makeMessageType("livekit.ParticipantUpdate",()=>[{no:1,name:"participants",kind:"message",T:wt,repeated:!0}]),Ln=y.makeMessageType("livekit.UpdateSubscription",()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:2,name:"subscribe",kind:"scalar",T:8},{no:3,name:"participant_tracks",kind:"message",T:Gs,repeated:!0}]),na=y.makeMessageType("livekit.UpdateTrackSettings",()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:3,name:"disabled",kind:"scalar",T:8},{no:4,name:"quality",kind:"enum",T:y.getEnumType(Ci)},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"fps",kind:"scalar",T:13},{no:8,name:"priority",kind:"scalar",T:13}]),ia=y.makeMessageType("livekit.UpdateLocalAudioTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"features",kind:"enum",T:y.getEnumType(be),repeated:!0}]),Ou=y.makeMessageType("livekit.UpdateLocalVideoTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13}]),Nn=y.makeMessageType("livekit.LeaveRequest",()=>[{no:1,name:"can_reconnect",kind:"scalar",T:8},{no:2,name:"reason",kind:"enum",T:y.getEnumType(Fe)},{no:3,name:"action",kind:"enum",T:y.getEnumType(Kt)},{no:4,name:"regions",kind:"message",T:zu}]),Kt=y.makeEnum("livekit.LeaveRequest.Action",[{no:0,name:"DISCONNECT"},{no:1,name:"RESUME"},{no:2,name:"RECONNECT"}]),ra=y.makeMessageType("livekit.UpdateVideoLayers",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:Rt,repeated:!0}]),sa=y.makeMessageType("livekit.UpdateParticipantMetadata",()=>[{no:1,name:"metadata",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:4,name:"request_id",kind:"scalar",T:13}]),aa=y.makeMessageType("livekit.ICEServer",()=>[{no:1,name:"urls",kind:"scalar",T:9,repeated:!0},{no:2,name:"username",kind:"scalar",T:9},{no:3,name:"credential",kind:"scalar",T:9}]),Au=y.makeMessageType("livekit.SpeakersChanged",()=>[{no:1,name:"speakers",kind:"message",T:js,repeated:!0}]),xu=y.makeMessageType("livekit.RoomUpdate",()=>[{no:1,name:"room",kind:"message",T:An}]),Lu=y.makeMessageType("livekit.ConnectionQualityInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"quality",kind:"enum",T:y.getEnumType(sn)},{no:3,name:"score",kind:"scalar",T:2}]),Nu=y.makeMessageType("livekit.ConnectionQualityUpdate",()=>[{no:1,name:"updates",kind:"message",T:Lu,repeated:!0}]),Uu=y.makeMessageType("livekit.StreamStateInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:y.getEnumType(Ii)}]),Fu=y.makeMessageType("livekit.StreamStateUpdate",()=>[{no:1,name:"stream_states",kind:"message",T:Uu,repeated:!0}]),Li=y.makeMessageType("livekit.SubscribedQuality",()=>[{no:1,name:"quality",kind:"enum",T:y.getEnumType(Ci)},{no:2,name:"enabled",kind:"scalar",T:8}]),ju=y.makeMessageType("livekit.SubscribedCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:Li,repeated:!0}]),Bu=y.makeMessageType("livekit.SubscribedQualityUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:Li,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:ju,repeated:!0}]),oa=y.makeMessageType("livekit.TrackPermission",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"all_tracks",kind:"scalar",T:8},{no:3,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:4,name:"participant_identity",kind:"scalar",T:9}]),ca=y.makeMessageType("livekit.SubscriptionPermission",()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:oa,repeated:!0}]),Vu=y.makeMessageType("livekit.SubscriptionPermissionUpdate",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"allowed",kind:"scalar",T:8}]),qu=y.makeMessageType("livekit.RoomMovedResponse",()=>[{no:1,name:"room",kind:"message",T:An},{no:2,name:"token",kind:"scalar",T:9},{no:3,name:"participant",kind:"message",T:wt},{no:4,name:"other_participants",kind:"message",T:wt,repeated:!0}]),da=y.makeMessageType("livekit.SyncState",()=>[{no:1,name:"answer",kind:"message",T:_t},{no:2,name:"subscription",kind:"message",T:Ln},{no:3,name:"publish_tracks",kind:"message",T:xi,repeated:!0},{no:4,name:"data_channels",kind:"message",T:la,repeated:!0},{no:5,name:"offer",kind:"message",T:_t},{no:6,name:"track_sids_disabled",kind:"scalar",T:9,repeated:!0},{no:7,name:"datachannel_receive_states",kind:"message",T:ua,repeated:!0}]),ua=y.makeMessageType("livekit.DataChannelReceiveState",()=>[{no:1,name:"publisher_sid",kind:"scalar",T:9},{no:2,name:"last_seq",kind:"scalar",T:13}]),la=y.makeMessageType("livekit.DataChannelInfo",()=>[{no:1,name:"label",kind:"scalar",T:9},{no:2,name:"id",kind:"scalar",T:13},{no:3,name:"target",kind:"enum",T:y.getEnumType(We)}]),et=y.makeMessageType("livekit.SimulateScenario",()=>[{no:1,name:"speaker_update",kind:"scalar",T:5,oneof:"scenario"},{no:2,name:"node_failure",kind:"scalar",T:8,oneof:"scenario"},{no:3,name:"migration",kind:"scalar",T:8,oneof:"scenario"},{no:4,name:"server_leave",kind:"scalar",T:8,oneof:"scenario"},{no:5,name:"switch_candidate_protocol",kind:"enum",T:y.getEnumType(wu),oneof:"scenario"},{no:6,name:"subscriber_bandwidth",kind:"scalar",T:3,oneof:"scenario"},{no:7,name:"disconnect_signal_on_resume",kind:"scalar",T:8,oneof:"scenario"},{no:8,name:"disconnect_signal_on_resume_no_messages",kind:"scalar",T:8,oneof:"scenario"},{no:9,name:"leave_request_full_reconnect",kind:"scalar",T:8,oneof:"scenario"}]),ha=y.makeMessageType("livekit.Ping",()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}]),Ku=y.makeMessageType("livekit.Pong",()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}]),zu=y.makeMessageType("livekit.RegionSettings",()=>[{no:1,name:"regions",kind:"message",T:Wu,repeated:!0}]),Wu=y.makeMessageType("livekit.RegionInfo",()=>[{no:1,name:"region",kind:"scalar",T:9},{no:2,name:"url",kind:"scalar",T:9},{no:3,name:"distance",kind:"scalar",T:3}]),Gu=y.makeMessageType("livekit.SubscriptionResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:y.getEnumType(Fs)}]),Hu=y.makeMessageType("livekit.RequestResponse",()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"reason",kind:"enum",T:y.getEnumType(Ni)},{no:3,name:"message",kind:"scalar",T:9}]),Ni=y.makeEnum("livekit.RequestResponse.Reason",[{no:0,name:"OK"},{no:1,name:"NOT_FOUND"},{no:2,name:"NOT_ALLOWED"},{no:3,name:"LIMIT_EXCEEDED"}]),Ju=y.makeMessageType("livekit.TrackSubscribed",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]);function $u(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Un={exports:{}},Qu=Un.exports,fa;function Yu(){return fa||(fa=1,function(n){(function(e,t){n.exports?n.exports=t():e.log=t()})(Qu,function(){var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"],s={},o=null;function a(p,T){var k=p[T];if(typeof k.bind=="function")return k.bind(p);try{return Function.prototype.bind.call(k,p)}catch{return function(){return Function.prototype.apply.apply(k,[p,arguments])}}}function c(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function d(p){return p==="debug"&&(p="log"),typeof console===t?!1:p==="trace"&&i?c:console[p]!==void 0?a(console,p):console.log!==void 0?a(console,"log"):e}function u(){for(var p=this.getLevel(),T=0;T<r.length;T++){var k=r[T];this[k]=T<p?e:this.methodFactory(k,p,this.name)}if(this.log=this.debug,typeof console===t&&p<this.levels.SILENT)return"No console available for logging"}function l(p){return function(){typeof console!==t&&(u.call(this),this[p].apply(this,arguments))}}function h(p,T,k){return d(p)||l.apply(this,arguments)}function m(p,T){var k=this,_,w,v,b="loglevel";typeof p=="string"?b+=":"+p:typeof p=="symbol"&&(b=void 0);function E(x){var U=(r[x]||"silent").toUpperCase();if(!(typeof window===t||!b)){try{window.localStorage[b]=U;return}catch{}try{window.document.cookie=encodeURIComponent(b)+"="+U+";"}catch{}}}function L(){var x;if(!(typeof window===t||!b)){try{x=window.localStorage[b]}catch{}if(typeof x===t)try{var U=window.document.cookie,q=encodeURIComponent(b),re=U.indexOf(q+"=");re!==-1&&(x=/^([^;]+)/.exec(U.slice(re+q.length+1))[1])}catch{}return k.levels[x]===void 0&&(x=void 0),x}}function S(){if(!(typeof window===t||!b)){try{window.localStorage.removeItem(b)}catch{}try{window.document.cookie=encodeURIComponent(b)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function M(x){var U=x;if(typeof U=="string"&&k.levels[U.toUpperCase()]!==void 0&&(U=k.levels[U.toUpperCase()]),typeof U=="number"&&U>=0&&U<=k.levels.SILENT)return U;throw new TypeError("log.setLevel() called with invalid level: "+x)}k.name=p,k.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},k.methodFactory=T||h,k.getLevel=function(){return v??w??_},k.setLevel=function(x,U){return v=M(x),U!==!1&&E(v),u.call(k)},k.setDefaultLevel=function(x){w=M(x),L()||k.setLevel(x,!1)},k.resetLevel=function(){v=null,S(),u.call(k)},k.enableAll=function(x){k.setLevel(k.levels.TRACE,x)},k.disableAll=function(x){k.setLevel(k.levels.SILENT,x)},k.rebuild=function(){if(o!==k&&(_=M(o.getLevel())),u.call(k),o===k)for(var x in s)s[x].rebuild()},_=M(o?o.getLevel():"WARN");var R=L();R!=null&&(v=M(R)),u.call(k)}o=new m,o.getLogger=function(T){if(typeof T!="symbol"&&typeof T!="string"||T==="")throw new TypeError("You must supply a name when creating a logger.");var k=s[T];return k||(k=s[T]=new m(T,o.methodFactory)),k};var g=typeof window!==t?window.log:void 0;return o.noConflict=function(){return typeof window!==t&&window.log===o&&(window.log=g),o},o.getLoggers=function(){return s},o.default=o,o})}(Un)),Un.exports}var on=Yu(),zt;(function(n){n[n.trace=0]="trace",n[n.debug=1]="debug",n[n.info=2]="info",n[n.warn=3]="warn",n[n.error=4]="error",n[n.silent=5]="silent"})(zt||(zt={}));var je;(function(n){n.Default="livekit",n.Room="livekit-room",n.Participant="livekit-participant",n.Track="livekit-track",n.Publication="livekit-track-publication",n.Engine="livekit-engine",n.Signal="livekit-signal",n.PCManager="livekit-pc-manager",n.PCTransport="livekit-pc-transport",n.E2EE="lk-e2ee"})(je||(je={}));let K=on.getLogger("livekit");const ma=Object.values(je).map(n=>on.getLogger(n));K.setDefaultLevel(zt.info);function tt(n){const e=on.getLogger(n);return e.setDefaultLevel(K.getLevel()),e}function Xu(n,e){if(e)on.getLogger(e).setLevel(n);else for(const t of ma)t.setLevel(n)}function Zu(n,e){(e?[e]:ma).forEach(i=>{const r=i.methodFactory;i.methodFactory=(s,o,a)=>{const c=r(s,o,a),d=zt[s],u=d>=o&&d<zt.silent;return(l,h)=>{h?c(l,h):c(l),u&&n(d,l,h)}},i.setLevel(i.getLevel())})}const el=on.getLogger("lk-e2ee"),cn=7e3,tl=[0,300,2*2*300,3*3*300,4*4*300,cn,cn,cn,cn,cn];class pa{constructor(e){this._retryDelays=e!==void 0?[...e]:tl}nextRetryDelayInMs(e){if(e.retryCount>=this._retryDelays.length)return null;const t=this._retryDelays[e.retryCount];return e.retryCount<=1?t:t+Math.random()*1e3}}function nl(n,e){var t={};for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&e.indexOf(i)<0&&(t[i]=n[i]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,i=Object.getOwnPropertySymbols(n);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(n,i[r])&&(t[i[r]]=n[i[r]]);return t}function f(n,e,t,i){function r(s){return s instanceof t?s:new t(function(o){o(s)})}return new(t||(t=Promise))(function(s,o){function a(u){try{d(i.next(u))}catch(l){o(l)}}function c(u){try{d(i.throw(u))}catch(l){o(l)}}function d(u){u.done?s(u.value):r(u.value).then(a,c)}d((i=i.apply(n,e||[])).next())})}function ga(n){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&n[e],i=0;if(t)return t.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&i>=n.length&&(n=void 0),{value:n&&n[i++],done:!n}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function dt(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=n[Symbol.asyncIterator],t;return e?e.call(n):(n=typeof ga=="function"?ga(n):n[Symbol.iterator](),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(s){t[s]=n[s]&&function(o){return new Promise(function(a,c){o=n[s](o),r(a,c,o.done,o.value)})}}function r(s,o,a,c){Promise.resolve(c).then(function(d){s({value:d,done:a})},o)}}typeof SuppressedError=="function"&&SuppressedError;var Fn={exports:{}},va;function il(){if(va)return Fn.exports;va=1;var n=typeof Reflect=="object"?Reflect:null,e=n&&typeof n.apply=="function"?n.apply:function(b,E,L){return Function.prototype.apply.call(b,E,L)},t;n&&typeof n.ownKeys=="function"?t=n.ownKeys:Object.getOwnPropertySymbols?t=function(b){return Object.getOwnPropertyNames(b).concat(Object.getOwnPropertySymbols(b))}:t=function(b){return Object.getOwnPropertyNames(b)};function i(v){console&&console.warn&&console.warn(v)}var r=Number.isNaN||function(b){return b!==b};function s(){s.init.call(this)}Fn.exports=s,Fn.exports.once=k,s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var o=10;function a(v){if(typeof v!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof v)}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return o},set:function(v){if(typeof v!="number"||v<0||r(v))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+v+".");o=v}}),s.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(b){if(typeof b!="number"||b<0||r(b))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+b+".");return this._maxListeners=b,this};function c(v){return v._maxListeners===void 0?s.defaultMaxListeners:v._maxListeners}s.prototype.getMaxListeners=function(){return c(this)},s.prototype.emit=function(b){for(var E=[],L=1;L<arguments.length;L++)E.push(arguments[L]);var S=b==="error",M=this._events;if(M!==void 0)S=S&&M.error===void 0;else if(!S)return!1;if(S){var R;if(E.length>0&&(R=E[0]),R instanceof Error)throw R;var x=new Error("Unhandled error."+(R?" ("+R.message+")":""));throw x.context=R,x}var U=M[b];if(U===void 0)return!1;if(typeof U=="function")e(U,this,E);else for(var q=U.length,re=g(U,q),L=0;L<q;++L)e(re[L],this,E);return!0};function d(v,b,E,L){var S,M,R;if(a(E),M=v._events,M===void 0?(M=v._events=Object.create(null),v._eventsCount=0):(M.newListener!==void 0&&(v.emit("newListener",b,E.listener?E.listener:E),M=v._events),R=M[b]),R===void 0)R=M[b]=E,++v._eventsCount;else if(typeof R=="function"?R=M[b]=L?[E,R]:[R,E]:L?R.unshift(E):R.push(E),S=c(v),S>0&&R.length>S&&!R.warned){R.warned=!0;var x=new Error("Possible EventEmitter memory leak detected. "+R.length+" "+String(b)+" listeners added. Use emitter.setMaxListeners() to increase limit");x.name="MaxListenersExceededWarning",x.emitter=v,x.type=b,x.count=R.length,i(x)}return v}s.prototype.addListener=function(b,E){return d(this,b,E,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(b,E){return d(this,b,E,!0)};function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(v,b,E){var L={fired:!1,wrapFn:void 0,target:v,type:b,listener:E},S=u.bind(L);return S.listener=E,L.wrapFn=S,S}s.prototype.once=function(b,E){return a(E),this.on(b,l(this,b,E)),this},s.prototype.prependOnceListener=function(b,E){return a(E),this.prependListener(b,l(this,b,E)),this},s.prototype.removeListener=function(b,E){var L,S,M,R,x;if(a(E),S=this._events,S===void 0)return this;if(L=S[b],L===void 0)return this;if(L===E||L.listener===E)--this._eventsCount===0?this._events=Object.create(null):(delete S[b],S.removeListener&&this.emit("removeListener",b,L.listener||E));else if(typeof L!="function"){for(M=-1,R=L.length-1;R>=0;R--)if(L[R]===E||L[R].listener===E){x=L[R].listener,M=R;break}if(M<0)return this;M===0?L.shift():p(L,M),L.length===1&&(S[b]=L[0]),S.removeListener!==void 0&&this.emit("removeListener",b,x||E)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(b){var E,L,S;if(L=this._events,L===void 0)return this;if(L.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):L[b]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete L[b]),this;if(arguments.length===0){var M=Object.keys(L),R;for(S=0;S<M.length;++S)R=M[S],R!=="removeListener"&&this.removeAllListeners(R);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(E=L[b],typeof E=="function")this.removeListener(b,E);else if(E!==void 0)for(S=E.length-1;S>=0;S--)this.removeListener(b,E[S]);return this};function h(v,b,E){var L=v._events;if(L===void 0)return[];var S=L[b];return S===void 0?[]:typeof S=="function"?E?[S.listener||S]:[S]:E?T(S):g(S,S.length)}s.prototype.listeners=function(b){return h(this,b,!0)},s.prototype.rawListeners=function(b){return h(this,b,!1)},s.listenerCount=function(v,b){return typeof v.listenerCount=="function"?v.listenerCount(b):m.call(v,b)},s.prototype.listenerCount=m;function m(v){var b=this._events;if(b!==void 0){var E=b[v];if(typeof E=="function")return 1;if(E!==void 0)return E.length}return 0}s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]};function g(v,b){for(var E=new Array(b),L=0;L<b;++L)E[L]=v[L];return E}function p(v,b){for(;b+1<v.length;b++)v[b]=v[b+1];v.pop()}function T(v){for(var b=new Array(v.length),E=0;E<b.length;++E)b[E]=v[E].listener||v[E];return b}function k(v,b){return new Promise(function(E,L){function S(R){v.removeListener(b,M),L(R)}function M(){typeof v.removeListener=="function"&&v.removeListener("error",S),E([].slice.call(arguments))}w(v,b,M,{once:!0}),b!=="error"&&_(v,S,{once:!0})})}function _(v,b,E){typeof v.on=="function"&&w(v,"error",b,E)}function w(v,b,E,L){if(typeof v.on=="function")L.once?v.once(b,E):v.on(b,E);else if(typeof v.addEventListener=="function")v.addEventListener(b,function S(M){L.once&&v.removeEventListener(b,S),E(M)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof v)}return Fn.exports}var nt=il();let ya=!0,ba=!0;function dn(n,e,t){const i=n.match(e);return i&&i.length>=t&&parseFloat(i[t],10)}function It(n,e,t){if(!n.RTCPeerConnection)return;const i=n.RTCPeerConnection.prototype,r=i.addEventListener;i.addEventListener=function(o,a){if(o!==e)return r.apply(this,arguments);const c=d=>{const u=t(d);u&&(a.handleEvent?a.handleEvent(u):a(u))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(a,c),r.apply(this,[o,c])};const s=i.removeEventListener;i.removeEventListener=function(o,a){if(o!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(a))return s.apply(this,arguments);const c=this._eventMap[e].get(a);return this._eventMap[e].delete(a),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,s.apply(this,[o,c])},Object.defineProperty(i,"on"+e,{get(){return this["_on"+e]},set(o){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),o&&this.addEventListener(e,this["_on"+e]=o)},enumerable:!0,configurable:!0})}function rl(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(ya=n,n?"adapter.js logging disabled":"adapter.js logging enabled")}function sl(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(ba=!n,"adapter.js deprecation warnings "+(n?"disabled":"enabled"))}function ka(){if(typeof window=="object"){if(ya)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Ui(n,e){ba&&console.warn(n+" is deprecated, please use "+e+" instead.")}function al(n){const e={browser:null,version:null};if(typeof n>"u"||!n.navigator||!n.navigator.userAgent)return e.browser="Not a browser.",e;const{navigator:t}=n;if(t.userAgentData&&t.userAgentData.brands){const i=t.userAgentData.brands.find(r=>r.brand==="Chromium");if(i)return{browser:"chrome",version:parseInt(i.version,10)}}if(t.mozGetUserMedia)e.browser="firefox",e.version=parseInt(dn(t.userAgent,/Firefox\/(\d+)\./,1));else if(t.webkitGetUserMedia||n.isSecureContext===!1&&n.webkitRTCPeerConnection)e.browser="chrome",e.version=parseInt(dn(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2));else if(n.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=parseInt(dn(t.userAgent,/AppleWebKit\/(\d+)\./,1)),e.supportsUnifiedPlan=n.RTCRtpTransceiver&&"currentDirection"in n.RTCRtpTransceiver.prototype,e._safariVersion=dn(t.userAgent,/Version\/(\d+(\.?\d+))/,1);else return e.browser="Not a supported browser.",e;return e}function Ta(n){return Object.prototype.toString.call(n)==="[object Object]"}function Sa(n){return Ta(n)?Object.keys(n).reduce(function(e,t){const i=Ta(n[t]),r=i?Sa(n[t]):n[t],s=i&&!Object.keys(r).length;return r===void 0||s?e:Object.assign(e,{[t]:r})},{}):n}function Fi(n,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(i=>{i.endsWith("Id")?Fi(n,n.get(e[i]),t):i.endsWith("Ids")&&e[i].forEach(r=>{Fi(n,n.get(r),t)})}))}function Ca(n,e,t){const i=t?"outbound-rtp":"inbound-rtp",r=new Map;if(e===null)return r;const s=[];return n.forEach(o=>{o.type==="track"&&o.trackIdentifier===e.id&&s.push(o)}),s.forEach(o=>{n.forEach(a=>{a.type===i&&a.trackId===o.id&&Fi(n,a,r)})}),r}const Ea=ka;function Pa(n,e){const t=n&&n.navigator;if(!t.mediaDevices)return;const i=function(a){if(typeof a!="object"||a.mandatory||a.optional)return a;const c={};return Object.keys(a).forEach(d=>{if(d==="require"||d==="advanced"||d==="mediaSource")return;const u=typeof a[d]=="object"?a[d]:{ideal:a[d]};u.exact!==void 0&&typeof u.exact=="number"&&(u.min=u.max=u.exact);const l=function(h,m){return h?h+m.charAt(0).toUpperCase()+m.slice(1):m==="deviceId"?"sourceId":m};if(u.ideal!==void 0){c.optional=c.optional||[];let h={};typeof u.ideal=="number"?(h[l("min",d)]=u.ideal,c.optional.push(h),h={},h[l("max",d)]=u.ideal,c.optional.push(h)):(h[l("",d)]=u.ideal,c.optional.push(h))}u.exact!==void 0&&typeof u.exact!="number"?(c.mandatory=c.mandatory||{},c.mandatory[l("",d)]=u.exact):["min","max"].forEach(h=>{u[h]!==void 0&&(c.mandatory=c.mandatory||{},c.mandatory[l(h,d)]=u[h])})}),a.advanced&&(c.optional=(c.optional||[]).concat(a.advanced)),c},r=function(a,c){if(e.version>=61)return c(a);if(a=JSON.parse(JSON.stringify(a)),a&&typeof a.audio=="object"){const d=function(u,l,h){l in u&&!(h in u)&&(u[h]=u[l],delete u[l])};a=JSON.parse(JSON.stringify(a)),d(a.audio,"autoGainControl","googAutoGainControl"),d(a.audio,"noiseSuppression","googNoiseSuppression"),a.audio=i(a.audio)}if(a&&typeof a.video=="object"){let d=a.video.facingMode;d=d&&(typeof d=="object"?d:{ideal:d});const u=e.version<66;if(d&&(d.exact==="user"||d.exact==="environment"||d.ideal==="user"||d.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!u)){delete a.video.facingMode;let l;if(d.exact==="environment"||d.ideal==="environment"?l=["back","rear"]:(d.exact==="user"||d.ideal==="user")&&(l=["front"]),l)return t.mediaDevices.enumerateDevices().then(h=>{h=h.filter(g=>g.kind==="videoinput");let m=h.find(g=>l.some(p=>g.label.toLowerCase().includes(p)));return!m&&h.length&&l.includes("back")&&(m=h[h.length-1]),m&&(a.video.deviceId=d.exact?{exact:m.deviceId}:{ideal:m.deviceId}),a.video=i(a.video),Ea("chrome: "+JSON.stringify(a)),c(a)})}a.video=i(a.video)}return Ea("chrome: "+JSON.stringify(a)),c(a)},s=function(a){return e.version>=64?a:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[a.name]||a.name,message:a.message,constraint:a.constraint||a.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}},o=function(a,c,d){r(a,u=>{t.webkitGetUserMedia(u,c,l=>{d&&d(s(l))})})};if(t.getUserMedia=o.bind(t),t.mediaDevices.getUserMedia){const a=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(c){return r(c,d=>a(d).then(u=>{if(d.audio&&!u.getAudioTracks().length||d.video&&!u.getVideoTracks().length)throw u.getTracks().forEach(l=>{l.stop()}),new DOMException("","NotFoundError");return u},u=>Promise.reject(s(u))))}}}function wa(n){n.MediaStream=n.MediaStream||n.webkitMediaStream}function Ra(n){if(typeof n=="object"&&n.RTCPeerConnection&&!("ontrack"in n.RTCPeerConnection.prototype)){Object.defineProperty(n.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(t){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=t)},enumerable:!0,configurable:!0});const e=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=i=>{i.stream.addEventListener("addtrack",r=>{let s;n.RTCPeerConnection.prototype.getReceivers?s=this.getReceivers().find(a=>a.track&&a.track.id===r.track.id):s={track:r.track};const o=new Event("track");o.track=r.track,o.receiver=s,o.transceiver={receiver:s},o.streams=[i.stream],this.dispatchEvent(o)}),i.stream.getTracks().forEach(r=>{let s;n.RTCPeerConnection.prototype.getReceivers?s=this.getReceivers().find(a=>a.track&&a.track.id===r.id):s={track:r};const o=new Event("track");o.track=r,o.receiver=s,o.transceiver={receiver:s},o.streams=[i.stream],this.dispatchEvent(o)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else It(n,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function _a(n){if(typeof n=="object"&&n.RTCPeerConnection&&!("getSenders"in n.RTCPeerConnection.prototype)&&"createDTMFSender"in n.RTCPeerConnection.prototype){const e=function(r,s){return{track:s,get dtmf(){return this._dtmf===void 0&&(s.kind==="audio"?this._dtmf=r.createDTMFSender(s):this._dtmf=null),this._dtmf},_pc:r}};if(!n.RTCPeerConnection.prototype.getSenders){n.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(a,c){let d=r.apply(this,arguments);return d||(d=e(this,a),this._senders.push(d)),d};const s=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(a){s.apply(this,arguments);const c=this._senders.indexOf(a);c!==-1&&this._senders.splice(c,1)}}const t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(s){this._senders=this._senders||[],t.apply(this,[s]),s.getTracks().forEach(o=>{this._senders.push(e(this,o))})};const i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(s){this._senders=this._senders||[],i.apply(this,[s]),s.getTracks().forEach(o=>{const a=this._senders.find(c=>c.track===o);a&&this._senders.splice(this._senders.indexOf(a),1)})}}else if(typeof n=="object"&&n.RTCPeerConnection&&"getSenders"in n.RTCPeerConnection.prototype&&"createDTMFSender"in n.RTCPeerConnection.prototype&&n.RTCRtpSender&&!("dtmf"in n.RTCRtpSender.prototype)){const e=n.RTCPeerConnection.prototype.getSenders;n.RTCPeerConnection.prototype.getSenders=function(){const i=e.apply(this,[]);return i.forEach(r=>r._pc=this),i},Object.defineProperty(n.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function Ia(n){if(!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender&&n.RTCRtpReceiver))return;if(!("getStats"in n.RTCRtpSender.prototype)){const t=n.RTCPeerConnection.prototype.getSenders;t&&(n.RTCPeerConnection.prototype.getSenders=function(){const s=t.apply(this,[]);return s.forEach(o=>o._pc=this),s});const i=n.RTCPeerConnection.prototype.addTrack;i&&(n.RTCPeerConnection.prototype.addTrack=function(){const s=i.apply(this,arguments);return s._pc=this,s}),n.RTCRtpSender.prototype.getStats=function(){const s=this;return this._pc.getStats().then(o=>Ca(o,s.track,!0))}}if(!("getStats"in n.RTCRtpReceiver.prototype)){const t=n.RTCPeerConnection.prototype.getReceivers;t&&(n.RTCPeerConnection.prototype.getReceivers=function(){const r=t.apply(this,[]);return r.forEach(s=>s._pc=this),r}),It(n,"track",i=>(i.receiver._pc=i.srcElement,i)),n.RTCRtpReceiver.prototype.getStats=function(){const r=this;return this._pc.getStats().then(s=>Ca(s,r.track,!1))}}if(!("getStats"in n.RTCRtpSender.prototype&&"getStats"in n.RTCRtpReceiver.prototype))return;const e=n.RTCPeerConnection.prototype.getStats;n.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof n.MediaStreamTrack){const i=arguments[0];let r,s,o;return this.getSenders().forEach(a=>{a.track===i&&(r?o=!0:r=a)}),this.getReceivers().forEach(a=>(a.track===i&&(s?o=!0:s=a),a.track===i)),o||r&&s?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):r?r.getStats():s?s.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return e.apply(this,arguments)}}function Da(n){n.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(o=>this._shimmedLocalStreams[o][0])};const e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(o,a){if(!a)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const c=e.apply(this,arguments);return this._shimmedLocalStreams[a.id]?this._shimmedLocalStreams[a.id].indexOf(c)===-1&&this._shimmedLocalStreams[a.id].push(c):this._shimmedLocalStreams[a.id]=[a,c],c};const t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(o){this._shimmedLocalStreams=this._shimmedLocalStreams||{},o.getTracks().forEach(d=>{if(this.getSenders().find(l=>l.track===d))throw new DOMException("Track already exists.","InvalidAccessError")});const a=this.getSenders();t.apply(this,arguments);const c=this.getSenders().filter(d=>a.indexOf(d)===-1);this._shimmedLocalStreams[o.id]=[o].concat(c)};const i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(o){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[o.id],i.apply(this,arguments)};const r=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(o){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},o&&Object.keys(this._shimmedLocalStreams).forEach(a=>{const c=this._shimmedLocalStreams[a].indexOf(o);c!==-1&&this._shimmedLocalStreams[a].splice(c,1),this._shimmedLocalStreams[a].length===1&&delete this._shimmedLocalStreams[a]}),r.apply(this,arguments)}}function Ma(n,e){if(!n.RTCPeerConnection)return;if(n.RTCPeerConnection.prototype.addTrack&&e.version>=65)return Da(n);const t=n.RTCPeerConnection.prototype.getLocalStreams;n.RTCPeerConnection.prototype.getLocalStreams=function(){const u=t.apply(this);return this._reverseStreams=this._reverseStreams||{},u.map(l=>this._reverseStreams[l.id])};const i=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(u){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},u.getTracks().forEach(l=>{if(this.getSenders().find(m=>m.track===l))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[u.id]){const l=new n.MediaStream(u.getTracks());this._streams[u.id]=l,this._reverseStreams[l.id]=u,u=l}i.apply(this,[u])};const r=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(u){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},r.apply(this,[this._streams[u.id]||u]),delete this._reverseStreams[this._streams[u.id]?this._streams[u.id].id:u.id],delete this._streams[u.id]},n.RTCPeerConnection.prototype.addTrack=function(u,l){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const h=[].slice.call(arguments,1);if(h.length!==1||!h[0].getTracks().find(p=>p===u))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(p=>p.track===u))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const g=this._streams[l.id];if(g)g.addTrack(u),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const p=new n.MediaStream([u]);this._streams[l.id]=p,this._reverseStreams[p.id]=l,this.addStream(p)}return this.getSenders().find(p=>p.track===u)};function s(d,u){let l=u.sdp;return Object.keys(d._reverseStreams||[]).forEach(h=>{const m=d._reverseStreams[h],g=d._streams[m.id];l=l.replace(new RegExp(g.id,"g"),m.id)}),new RTCSessionDescription({type:u.type,sdp:l})}function o(d,u){let l=u.sdp;return Object.keys(d._reverseStreams||[]).forEach(h=>{const m=d._reverseStreams[h],g=d._streams[m.id];l=l.replace(new RegExp(m.id,"g"),g.id)}),new RTCSessionDescription({type:u.type,sdp:l})}["createOffer","createAnswer"].forEach(function(d){const u=n.RTCPeerConnection.prototype[d],l={[d](){const h=arguments;return arguments.length&&typeof arguments[0]=="function"?u.apply(this,[g=>{const p=s(this,g);h[0].apply(null,[p])},g=>{h[1]&&h[1].apply(null,g)},arguments[2]]):u.apply(this,arguments).then(g=>s(this,g))}};n.RTCPeerConnection.prototype[d]=l[d]});const a=n.RTCPeerConnection.prototype.setLocalDescription;n.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?a.apply(this,arguments):(arguments[0]=o(this,arguments[0]),a.apply(this,arguments))};const c=Object.getOwnPropertyDescriptor(n.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(n.RTCPeerConnection.prototype,"localDescription",{get(){const d=c.get.apply(this);return d.type===""?d:s(this,d)}}),n.RTCPeerConnection.prototype.removeTrack=function(u){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!u._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(u._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};let h;Object.keys(this._streams).forEach(m=>{this._streams[m].getTracks().find(p=>u.track===p)&&(h=this._streams[m])}),h&&(h.getTracks().length===1?this.removeStream(this._reverseStreams[h.id]):h.removeTrack(u.track),this.dispatchEvent(new Event("negotiationneeded")))}}function ji(n,e){!n.RTCPeerConnection&&n.webkitRTCPeerConnection&&(n.RTCPeerConnection=n.webkitRTCPeerConnection),n.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const i=n.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}};n.RTCPeerConnection.prototype[t]=r[t]})}function Oa(n,e){It(n,"negotiationneeded",t=>{const i=t.target;if(!((e.version<72||i.getConfiguration&&i.getConfiguration().sdpSemantics==="plan-b")&&i.signalingState!=="stable"))return t})}var Aa=Object.freeze({__proto__:null,fixNegotiationNeeded:Oa,shimAddTrackRemoveTrack:Ma,shimAddTrackRemoveTrackWithNative:Da,shimGetSendersWithDtmf:_a,shimGetUserMedia:Pa,shimMediaStream:wa,shimOnTrack:Ra,shimPeerConnection:ji,shimSenderReceiverGetStats:Ia});function xa(n,e){const t=n&&n.navigator,i=n&&n.MediaStreamTrack;if(t.getUserMedia=function(r,s,o){Ui("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(r).then(s,o)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){const r=function(o,a,c){a in o&&!(c in o)&&(o[c]=o[a],delete o[a])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(t.mediaDevices.getUserMedia=function(o){return typeof o=="object"&&typeof o.audio=="object"&&(o=JSON.parse(JSON.stringify(o)),r(o.audio,"autoGainControl","mozAutoGainControl"),r(o.audio,"noiseSuppression","mozNoiseSuppression")),s(o)},i&&i.prototype.getSettings){const o=i.prototype.getSettings;i.prototype.getSettings=function(){const a=o.apply(this,arguments);return r(a,"mozAutoGainControl","autoGainControl"),r(a,"mozNoiseSuppression","noiseSuppression"),a}}if(i&&i.prototype.applyConstraints){const o=i.prototype.applyConstraints;i.prototype.applyConstraints=function(a){return this.kind==="audio"&&typeof a=="object"&&(a=JSON.parse(JSON.stringify(a)),r(a,"autoGainControl","mozAutoGainControl"),r(a,"noiseSuppression","mozNoiseSuppression")),o.apply(this,[a])}}}}function ol(n,e){n.navigator.mediaDevices&&"getDisplayMedia"in n.navigator.mediaDevices||n.navigator.mediaDevices&&(n.navigator.mediaDevices.getDisplayMedia=function(i){if(!(i&&i.video)){const r=new DOMException("getDisplayMedia without video constraints is undefined");return r.name="NotFoundError",r.code=8,Promise.reject(r)}return i.video===!0?i.video={mediaSource:e}:i.video.mediaSource=e,n.navigator.mediaDevices.getUserMedia(i)})}function La(n){typeof n=="object"&&n.RTCTrackEvent&&"receiver"in n.RTCTrackEvent.prototype&&!("transceiver"in n.RTCTrackEvent.prototype)&&Object.defineProperty(n.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Bi(n,e){if(typeof n!="object"||!(n.RTCPeerConnection||n.mozRTCPeerConnection))return;!n.RTCPeerConnection&&n.mozRTCPeerConnection&&(n.RTCPeerConnection=n.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(r){const s=n.RTCPeerConnection.prototype[r],o={[r](){return arguments[0]=new(r==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),s.apply(this,arguments)}};n.RTCPeerConnection.prototype[r]=o[r]});const t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},i=n.RTCPeerConnection.prototype.getStats;n.RTCPeerConnection.prototype.getStats=function(){const[s,o,a]=arguments;return i.apply(this,[s||null]).then(c=>{if(e.version<53&&!o)try{c.forEach(d=>{d.type=t[d.type]||d.type})}catch(d){if(d.name!=="TypeError")throw d;c.forEach((u,l)=>{c.set(l,Object.assign({},u,{type:t[u.type]||u.type}))})}return c}).then(o,a)}}function Na(n){if(!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender)||n.RTCRtpSender&&"getStats"in n.RTCRtpSender.prototype)return;const e=n.RTCPeerConnection.prototype.getSenders;e&&(n.RTCPeerConnection.prototype.getSenders=function(){const r=e.apply(this,[]);return r.forEach(s=>s._pc=this),r});const t=n.RTCPeerConnection.prototype.addTrack;t&&(n.RTCPeerConnection.prototype.addTrack=function(){const r=t.apply(this,arguments);return r._pc=this,r}),n.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function Ua(n){if(!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender)||n.RTCRtpSender&&"getStats"in n.RTCRtpReceiver.prototype)return;const e=n.RTCPeerConnection.prototype.getReceivers;e&&(n.RTCPeerConnection.prototype.getReceivers=function(){const i=e.apply(this,[]);return i.forEach(r=>r._pc=this),i}),It(n,"track",t=>(t.receiver._pc=t.srcElement,t)),n.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Fa(n){!n.RTCPeerConnection||"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){Ui("removeStream","removeTrack"),this.getSenders().forEach(i=>{i.track&&t.getTracks().includes(i.track)&&this.removeTrack(i)})})}function ja(n){n.DataChannel&&!n.RTCDataChannel&&(n.RTCDataChannel=n.DataChannel)}function Ba(n){if(!(typeof n=="object"&&n.RTCPeerConnection))return;const e=n.RTCPeerConnection.prototype.addTransceiver;e&&(n.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let i=arguments[1]&&arguments[1].sendEncodings;i===void 0&&(i=[]),i=[...i];const r=i.length>0;r&&i.forEach(o=>{if("rid"in o&&!/^[a-z0-9]{0,16}$/i.test(o.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in o&&!(parseFloat(o.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in o&&!(parseFloat(o.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const s=e.apply(this,arguments);if(r){const{sender:o}=s,a=o.getParameters();(!("encodings"in a)||a.encodings.length===1&&Object.keys(a.encodings[0]).length===0)&&(a.encodings=i,o.sendEncodings=i,this.setParametersPromises.push(o.setParameters(a).then(()=>{delete o.sendEncodings}).catch(()=>{delete o.sendEncodings})))}return s})}function Va(n){if(!(typeof n=="object"&&n.RTCRtpSender))return;const e=n.RTCRtpSender.prototype.getParameters;e&&(n.RTCRtpSender.prototype.getParameters=function(){const i=e.apply(this,arguments);return"encodings"in i||(i.encodings=[].concat(this.sendEncodings||[{}])),i})}function qa(n){if(!(typeof n=="object"&&n.RTCPeerConnection))return;const e=n.RTCPeerConnection.prototype.createOffer;n.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}function Ka(n){if(!(typeof n=="object"&&n.RTCPeerConnection))return;const e=n.RTCPeerConnection.prototype.createAnswer;n.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}var za=Object.freeze({__proto__:null,shimAddTransceiver:Ba,shimCreateAnswer:Ka,shimCreateOffer:qa,shimGetDisplayMedia:ol,shimGetParameters:Va,shimGetUserMedia:xa,shimOnTrack:La,shimPeerConnection:Bi,shimRTCDataChannel:ja,shimReceiverGetStats:Ua,shimRemoveStream:Fa,shimSenderGetStats:Na});function Wa(n){if(!(typeof n!="object"||!n.RTCPeerConnection)){if("getLocalStreams"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in n.RTCPeerConnection.prototype)){const e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addStream=function(i){this._localStreams||(this._localStreams=[]),this._localStreams.includes(i)||this._localStreams.push(i),i.getAudioTracks().forEach(r=>e.call(this,r,i)),i.getVideoTracks().forEach(r=>e.call(this,r,i))},n.RTCPeerConnection.prototype.addTrack=function(i){for(var r=arguments.length,s=new Array(r>1?r-1:0),o=1;o<r;o++)s[o-1]=arguments[o];return s&&s.forEach(a=>{this._localStreams?this._localStreams.includes(a)||this._localStreams.push(a):this._localStreams=[a]}),e.apply(this,arguments)}}"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){this._localStreams||(this._localStreams=[]);const i=this._localStreams.indexOf(t);if(i===-1)return;this._localStreams.splice(i,1);const r=t.getTracks();this.getSenders().forEach(s=>{r.includes(s.track)&&this.removeTrack(s)})})}}function Ga(n){if(!(typeof n!="object"||!n.RTCPeerConnection)&&("getRemoteStreams"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in n.RTCPeerConnection.prototype))){Object.defineProperty(n.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(t){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=t),this.addEventListener("track",this._onaddstreampoly=i=>{i.streams.forEach(r=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(r))return;this._remoteStreams.push(r);const s=new Event("addstream");s.stream=r,this.dispatchEvent(s)})})}});const e=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){const i=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(r){r.streams.forEach(s=>{if(i._remoteStreams||(i._remoteStreams=[]),i._remoteStreams.indexOf(s)>=0)return;i._remoteStreams.push(s);const o=new Event("addstream");o.stream=s,i.dispatchEvent(o)})}),e.apply(i,arguments)}}}function Ha(n){if(typeof n!="object"||!n.RTCPeerConnection)return;const e=n.RTCPeerConnection.prototype,t=e.createOffer,i=e.createAnswer,r=e.setLocalDescription,s=e.setRemoteDescription,o=e.addIceCandidate;e.createOffer=function(d,u){const l=arguments.length>=2?arguments[2]:arguments[0],h=t.apply(this,[l]);return u?(h.then(d,u),Promise.resolve()):h},e.createAnswer=function(d,u){const l=arguments.length>=2?arguments[2]:arguments[0],h=i.apply(this,[l]);return u?(h.then(d,u),Promise.resolve()):h};let a=function(c,d,u){const l=r.apply(this,[c]);return u?(l.then(d,u),Promise.resolve()):l};e.setLocalDescription=a,a=function(c,d,u){const l=s.apply(this,[c]);return u?(l.then(d,u),Promise.resolve()):l},e.setRemoteDescription=a,a=function(c,d,u){const l=o.apply(this,[c]);return u?(l.then(d,u),Promise.resolve()):l},e.addIceCandidate=a}function Ja(n){const e=n&&n.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){const t=e.mediaDevices,i=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=r=>i($a(r))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=(function(i,r,s){e.mediaDevices.getUserMedia(i).then(r,s)}).bind(e))}function $a(n){return n&&n.video!==void 0?Object.assign({},n,{video:Sa(n.video)}):n}function Qa(n){if(!n.RTCPeerConnection)return;const e=n.RTCPeerConnection;n.RTCPeerConnection=function(i,r){if(i&&i.iceServers){const s=[];for(let o=0;o<i.iceServers.length;o++){let a=i.iceServers[o];a.urls===void 0&&a.url?(Ui("RTCIceServer.url","RTCIceServer.urls"),a=JSON.parse(JSON.stringify(a)),a.urls=a.url,delete a.url,s.push(a)):s.push(i.iceServers[o])}i.iceServers=s}return new e(i,r)},n.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(n.RTCPeerConnection,"generateCertificate",{get(){return e.generateCertificate}})}function Ya(n){typeof n=="object"&&n.RTCTrackEvent&&"receiver"in n.RTCTrackEvent.prototype&&!("transceiver"in n.RTCTrackEvent.prototype)&&Object.defineProperty(n.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Xa(n){const e=n.RTCPeerConnection.prototype.createOffer;n.RTCPeerConnection.prototype.createOffer=function(i){if(i){typeof i.offerToReceiveAudio<"u"&&(i.offerToReceiveAudio=!!i.offerToReceiveAudio);const r=this.getTransceivers().find(o=>o.receiver.track.kind==="audio");i.offerToReceiveAudio===!1&&r?r.direction==="sendrecv"?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":r.direction==="recvonly"&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):i.offerToReceiveAudio===!0&&!r&&this.addTransceiver("audio",{direction:"recvonly"}),typeof i.offerToReceiveVideo<"u"&&(i.offerToReceiveVideo=!!i.offerToReceiveVideo);const s=this.getTransceivers().find(o=>o.receiver.track.kind==="video");i.offerToReceiveVideo===!1&&s?s.direction==="sendrecv"?s.setDirection?s.setDirection("sendonly"):s.direction="sendonly":s.direction==="recvonly"&&(s.setDirection?s.setDirection("inactive"):s.direction="inactive"):i.offerToReceiveVideo===!0&&!s&&this.addTransceiver("video",{direction:"recvonly"})}return e.apply(this,arguments)}}function Za(n){typeof n!="object"||n.AudioContext||(n.AudioContext=n.webkitAudioContext)}var eo=Object.freeze({__proto__:null,shimAudioContext:Za,shimCallbacksAPI:Ha,shimConstraints:$a,shimCreateOfferLegacy:Xa,shimGetUserMedia:Ja,shimLocalStreamsAPI:Wa,shimRTCIceServerUrls:Qa,shimRemoteStreamsAPI:Ga,shimTrackEventTransceiver:Ya}),Vi={exports:{}},to;function cl(){return to||(to=1,function(n){const e={};e.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},e.localCName=e.generateIdentifier(),e.splitLines=function(t){return t.trim().split(`
|
|
3
3
|
`).map(i=>i.trim())},e.splitSections=function(t){return t.split(`
|
|
4
4
|
m=`).map((r,s)=>(s>0?"m="+r:r).trim()+`\r
|