@d-id/client-sdk 1.1.52-staging.236 → 1.1.52-staging.237
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 +89 -89
- package/dist/index.umd.cjs +1 -1
- package/dist/src/types/stream/stream.d.ts +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -36,7 +36,7 @@ class mt extends ye {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
var ft = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(ft || {}), gt = /* @__PURE__ */ ((e) => (e.TRIAL = "deid-trial", e.PRO = "deid-pro", e.ENTERPRISE = "deid-enterprise", e.LITE = "deid-lite", e.ADVANCED = "deid-advanced", e.BUILD = "deid-api-build", e.LAUNCH = "deid-api-launch", e.SCALE = "deid-api-scale", e))(gt || {}), ht = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(ht || {}), pt = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(pt || {}), N = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e.Off = "Off", e))(N || {}), Q = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Transcribe = "transcribe", e.Complete = "done", e))(Q || {}), wt = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(wt || {}), yt = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(yt || {}), vt = /* @__PURE__ */ ((e) => (e.Pdf = "pdf", e.Text = "text", e.Html = "html", e.Word = "word", e.Json = "json", e.Markdown = "markdown", e.Csv = "csv", e.Excel = "excel", e.Powerpoint = "powerpoint", e.Archive = "archive", e.Image = "image", e.Audio = "audio", e.Video = "video", e))(vt || {}), He = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e.Expressive = "expressive", e))(He || {});
|
|
39
|
-
const
|
|
39
|
+
const _n = (e) => {
|
|
40
40
|
switch (e) {
|
|
41
41
|
case "clip":
|
|
42
42
|
return "clip";
|
|
@@ -48,7 +48,7 @@ const An = (e) => {
|
|
|
48
48
|
throw new Error(`Unknown video type: ${e}`);
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
|
-
var R = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(R || {}), ne = /* @__PURE__ */ ((e) => (e.Strong = "STRONG", e.Weak = "WEAK", e.Unknown = "UNKNOWN", e))(ne || {}), K = /* @__PURE__ */ ((e) => (e.Idle = "IDLE", e.Loading = "LOADING", e.Talking = "TALKING", e.ToolActive = "
|
|
51
|
+
var R = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(R || {}), ne = /* @__PURE__ */ ((e) => (e.Strong = "STRONG", e.Weak = "WEAK", e.Unknown = "UNKNOWN", e))(ne || {}), K = /* @__PURE__ */ ((e) => (e.Idle = "IDLE", e.Loading = "LOADING", e.Talking = "TALKING", e.ToolActive = "TOOL_ACTIVE", e))(K || {}), k = /* @__PURE__ */ ((e) => (e.ChatAnswer = "chat/answer", e.ChatPartial = "chat/partial", e.ChatAudioTranscribed = "chat/audio-transcribed", e.StreamDone = "stream/done", e.StreamStarted = "stream/started", e.StreamFailed = "stream/error", e.StreamReady = "stream/ready", e.StreamCreated = "stream/created", e.StreamInterrupt = "stream/interrupt", e.StreamVideoCreated = "stream-video/started", e.StreamVideoDone = "stream-video/done", e.StreamVideoError = "stream-video/error", e.StreamVideoRejected = "stream-video/rejected", e.ToolCalling = "tool/calling", e.ToolResult = "tool/result", e))(k || {}), A = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Closed = "closed", e.Completed = "completed", e.Disconnecting = "disconnecting", e.Disconnected = "disconnected", e))(A || {}), re = /* @__PURE__ */ ((e) => (e.Legacy = "legacy", e.Fluent = "fluent", e))(re || {}), ve = /* @__PURE__ */ ((e) => (e.Livekit = "livekit", e))(ve || {}), Ct = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.AzureOpenAi = "azure-openai", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(Ct || {}), St = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(St || {});
|
|
52
52
|
const Rt = 45 * 1e3, kt = "X-Playground-Chat", fe = "https://api.d-id.com", Tt = "wss://notifications.d-id.com", Et = "79f81a83a67430be2bc0fd61042b8faa", Dt = (...e) => {
|
|
53
53
|
}, qe = (e) => new Promise((n) => setTimeout(n, e)), ue = (e = 16) => {
|
|
54
54
|
const n = new Uint8Array(e);
|
|
@@ -62,8 +62,8 @@ const Rt = 45 * 1e3, kt = "X-Playground-Chat", fe = "https://api.d-id.com", Tt =
|
|
|
62
62
|
case "talk":
|
|
63
63
|
return "v2";
|
|
64
64
|
}
|
|
65
|
-
}, Mt = (e) => e.type === "talk" ? e.source_url : e.presenter_id,
|
|
66
|
-
function
|
|
65
|
+
}, Mt = (e) => e.type === "talk" ? e.source_url : e.presenter_id, Ae = (e) => e === He.Expressive, At = (e) => [N.TextOnly, N.Playground, N.Maintenance].includes(e), Xe = (e) => e && [N.DirectPlayback, N.Off].includes(e);
|
|
66
|
+
function _t(e, n) {
|
|
67
67
|
let i;
|
|
68
68
|
return {
|
|
69
69
|
promise: new Promise((o, a) => {
|
|
@@ -87,7 +87,7 @@ async function Te(e, n) {
|
|
|
87
87
|
try {
|
|
88
88
|
if (!i.timeout)
|
|
89
89
|
return await e();
|
|
90
|
-
const { promise: a, clear: s } =
|
|
90
|
+
const { promise: a, clear: s } = _t(i.timeout, i.timeoutErrorMessage), d = e().finally(s);
|
|
91
91
|
return await Promise.race([d, a]);
|
|
92
92
|
} catch (a) {
|
|
93
93
|
if (r = a, !i.shouldRetryFn(a) || o >= i.limit)
|
|
@@ -122,7 +122,7 @@ const Pt = (e) => Te(e, {
|
|
|
122
122
|
timeout: 0,
|
|
123
123
|
shouldRetryFn: (n) => n.status === 429
|
|
124
124
|
});
|
|
125
|
-
function
|
|
125
|
+
function _e(e, n = fe, i, r) {
|
|
126
126
|
const o = async (a, s) => {
|
|
127
127
|
const { skipErrorHandler: d, ...t } = s || {}, c = await Pt(
|
|
128
128
|
() => fetch(n + (a != null && a.startsWith("/") ? a : `/${a}`), {
|
|
@@ -157,7 +157,7 @@ function Ae(e, n = fe, i, r) {
|
|
|
157
157
|
};
|
|
158
158
|
}
|
|
159
159
|
function Lt(e, n = fe, i, r) {
|
|
160
|
-
const o =
|
|
160
|
+
const o = _e(e, `${n}/agents`, i, r);
|
|
161
161
|
return {
|
|
162
162
|
create(a, s) {
|
|
163
163
|
return o.post("/", a, s);
|
|
@@ -350,7 +350,7 @@ function Nt(e) {
|
|
|
350
350
|
return e && e.length > 0 ? e : [];
|
|
351
351
|
}
|
|
352
352
|
function Vt(e, n, i, r) {
|
|
353
|
-
const o =
|
|
353
|
+
const o = _e(e, `${n}/v2/agents/${i}`, r);
|
|
354
354
|
return {
|
|
355
355
|
async createStream(a) {
|
|
356
356
|
return o.post("/sessions", a);
|
|
@@ -381,7 +381,7 @@ function Ut(e, n, i) {
|
|
|
381
381
|
lowFpsCount: i
|
|
382
382
|
};
|
|
383
383
|
}
|
|
384
|
-
function
|
|
384
|
+
function Ot(e) {
|
|
385
385
|
return e.filter(
|
|
386
386
|
(n) => n.freezeCount > 0 || n.framesPerSecond < 21 || n.framesDropped > 0 || n.packetsLost > 0
|
|
387
387
|
).map((n) => {
|
|
@@ -392,7 +392,7 @@ function Wt(e) {
|
|
|
392
392
|
};
|
|
393
393
|
});
|
|
394
394
|
}
|
|
395
|
-
function
|
|
395
|
+
function Wt(e) {
|
|
396
396
|
let n = "", i = 0;
|
|
397
397
|
for (const r of e.values()) {
|
|
398
398
|
if (r && r.type === "codec" && r.mimeType.startsWith("video") && (n = r.mimeType.split("/")[1]), r && r.type === "candidate-pair") {
|
|
@@ -474,7 +474,7 @@ function Ve(e, n, i) {
|
|
|
474
474
|
framesPerSecond: t.framesPerSecond,
|
|
475
475
|
freezeCount: t.freezeCount - e[c - 1].freezeCount,
|
|
476
476
|
freezeDuration: t.freezeDuration - e[c - 1].freezeDuration
|
|
477
|
-
}), o =
|
|
477
|
+
}), o = Ot(r), a = o.reduce((t, c) => t + (c.causes.includes("low fps") ? 1 : 0), 0), s = r.filter((t) => !!t.avgJitterDelayInInterval).map((t) => t.avgJitterDelayInInterval), d = r.filter((t) => !!t.rtt).map((t) => t.rtt);
|
|
478
478
|
return {
|
|
479
479
|
webRTCStats: {
|
|
480
480
|
anomalies: o,
|
|
@@ -515,7 +515,7 @@ function tt(e, n, i, r, o) {
|
|
|
515
515
|
const b = await e();
|
|
516
516
|
if (!b)
|
|
517
517
|
return;
|
|
518
|
-
const { isReceiving: L, avgJitterDelayInInterval: P, freezeCount: M } = V(b), J =
|
|
518
|
+
const { isReceiving: L, avgJitterDelayInInterval: P, freezeCount: M } = V(b), J = Wt(b);
|
|
519
519
|
if (L)
|
|
520
520
|
t = 0, l = M - S, w = P < qt ? ne.Strong : P > Qt && l > 1 ? ne.Weak : h, w !== h && (o == null || o(w), h = w, S += l, l = 0), c || (r == null || r(R.Start), d = s[s.length - 1], s = [], c = !0), s.push(J);
|
|
521
521
|
else if (c && (t++, t >= Ht)) {
|
|
@@ -556,7 +556,7 @@ const Gt = {
|
|
|
556
556
|
var Pe = /* @__PURE__ */ ((e) => (e.Chat = "lk.chat", e.Speak = "did.speak", e.Interrupt = "did.interrupt", e))(Pe || {});
|
|
557
557
|
function Ie(e, n, i) {
|
|
558
558
|
var r, o;
|
|
559
|
-
throw n("Failed to connect to LiveKit room:", e), (r = i.onConnectionStateChange) == null || r.call(i,
|
|
559
|
+
throw n("Failed to connect to LiveKit room:", e), (r = i.onConnectionStateChange) == null || r.call(i, A.Fail, "internal:init-error"), (o = i.onError) == null || o.call(i, e, { sessionId: "" }), e;
|
|
560
560
|
}
|
|
561
561
|
async function Zt(e, n, i) {
|
|
562
562
|
var $e;
|
|
@@ -585,7 +585,7 @@ async function Zt(e, n, i) {
|
|
|
585
585
|
}
|
|
586
586
|
if (!C || !m || !H)
|
|
587
587
|
return Promise.reject(new Error("Failed to initialize LiveKit stream"));
|
|
588
|
-
l.on(a.ConnectionStateChanged, U).on(a.ConnectionQualityChanged, j).on(a.ParticipantConnected, E).on(a.ParticipantDisconnected,
|
|
588
|
+
l.on(a.ConnectionStateChanged, U).on(a.ConnectionQualityChanged, j).on(a.ParticipantConnected, E).on(a.ParticipantDisconnected, O).on(a.TrackSubscribed, B).on(a.TrackUnsubscribed, F).on(a.DataReceived, ce).on(a.MediaDevicesError, ge).on(a.TranscriptionReceived, T).on(a.EncryptionError, he).on(a.TrackSubscriptionFailed, pe);
|
|
589
589
|
function T(u, f) {
|
|
590
590
|
var p;
|
|
591
591
|
f != null && f.isLocal && (ee.update(), z === K.Talking && ((p = t.onInterruptDetected) == null || p.call(t, { type: "audio" }), z = K.Idle));
|
|
@@ -610,19 +610,19 @@ async function Zt(e, n, i) {
|
|
|
610
610
|
var f, p, v, I;
|
|
611
611
|
switch (r("Connection state changed:", u), u) {
|
|
612
612
|
case s.Connecting:
|
|
613
|
-
r("CALLBACK: onConnectionStateChange(Connecting)"), (f = t.onConnectionStateChange) == null || f.call(t,
|
|
613
|
+
r("CALLBACK: onConnectionStateChange(Connecting)"), (f = t.onConnectionStateChange) == null || f.call(t, A.Connecting, "livekit:connecting");
|
|
614
614
|
break;
|
|
615
615
|
case s.Connected:
|
|
616
616
|
r("LiveKit room connected successfully"), S = !0;
|
|
617
617
|
break;
|
|
618
618
|
case s.Disconnected:
|
|
619
|
-
r("LiveKit room disconnected"), S = !1, J = !1, b.publication = null, L.publication = null, (p = t.onConnectionStateChange) == null || p.call(t,
|
|
619
|
+
r("LiveKit room disconnected"), S = !1, J = !1, b.publication = null, L.publication = null, (p = t.onConnectionStateChange) == null || p.call(t, A.Disconnected, "livekit:disconnected");
|
|
620
620
|
break;
|
|
621
621
|
case s.Reconnecting:
|
|
622
|
-
r("LiveKit room reconnecting..."), (v = t.onConnectionStateChange) == null || v.call(t,
|
|
622
|
+
r("LiveKit room reconnecting..."), (v = t.onConnectionStateChange) == null || v.call(t, A.Connecting, "livekit:reconnecting");
|
|
623
623
|
break;
|
|
624
624
|
case s.SignalReconnecting:
|
|
625
|
-
r("LiveKit room signal reconnecting..."), (I = t.onConnectionStateChange) == null || I.call(t,
|
|
625
|
+
r("LiveKit room signal reconnecting..."), (I = t.onConnectionStateChange) == null || I.call(t, A.Connecting, "livekit:signal-reconnecting");
|
|
626
626
|
break;
|
|
627
627
|
}
|
|
628
628
|
}
|
|
@@ -633,7 +633,7 @@ async function Zt(e, n, i) {
|
|
|
633
633
|
function E(u) {
|
|
634
634
|
r("Participant connected:", u.identity);
|
|
635
635
|
}
|
|
636
|
-
function
|
|
636
|
+
function O(u) {
|
|
637
637
|
r("Participant disconnected:", u.identity), ke("livekit:participant-disconnected");
|
|
638
638
|
}
|
|
639
639
|
function X() {
|
|
@@ -645,19 +645,19 @@ async function Zt(e, n, i) {
|
|
|
645
645
|
M !== R.Stop && (r("CALLBACK: onVideoStateChange(Stop)"), M = R.Stop, (f = t.onVideoStateChange) == null || f.call(t, R.Stop, u));
|
|
646
646
|
}
|
|
647
647
|
function B(u, f, p) {
|
|
648
|
-
var I,
|
|
648
|
+
var I, _, G;
|
|
649
649
|
r(`Track subscribed: ${u.kind} from ${p.identity}`);
|
|
650
650
|
const v = u.mediaStreamTrack;
|
|
651
651
|
if (!v) {
|
|
652
652
|
r(`No mediaStreamTrack available for ${u.kind}`);
|
|
653
653
|
return;
|
|
654
654
|
}
|
|
655
|
-
$ ? ($.addTrack(v), r(`Added ${u.kind} track to shared MediaStream`)) : ($ = new MediaStream([v]), r(`Created shared MediaStream with ${u.kind} track`)), u.kind === "video" && ((I = t.onStreamReady) == null || I.call(t), r("CALLBACK: onSrcObjectReady"), (
|
|
655
|
+
$ ? ($.addTrack(v), r(`Added ${u.kind} track to shared MediaStream`)) : ($ = new MediaStream([v]), r(`Created shared MediaStream with ${u.kind} track`)), u.kind === "video" && ((I = t.onStreamReady) == null || I.call(t), r("CALLBACK: onSrcObjectReady"), (_ = t.onSrcObjectReady) == null || _.call(t, $), J || (J = !0, r("CALLBACK: onConnectionStateChange(Connected)"), (G = t.onConnectionStateChange) == null || G.call(t, A.Connected, "livekit:track-subscribed")), P = tt(
|
|
656
656
|
() => u.getRTCStatsReport(),
|
|
657
657
|
() => S,
|
|
658
658
|
Dt,
|
|
659
|
-
(
|
|
660
|
-
r(`Video state change: ${
|
|
659
|
+
(W, ae) => {
|
|
660
|
+
r(`Video state change: ${W}`), W === R.Start ? (x && (clearTimeout(x), x = null, r("Track subscription timeout cleared")), X()) : W === R.Stop && q(ae);
|
|
661
661
|
}
|
|
662
662
|
), P.start());
|
|
663
663
|
}
|
|
@@ -678,17 +678,17 @@ async function Zt(e, n, i) {
|
|
|
678
678
|
u === k.ToolResult && ((I = t.onToolEvent) == null || I.call(t, k.ToolResult, f));
|
|
679
679
|
}
|
|
680
680
|
function y(u, f) {
|
|
681
|
-
var p, v, I,
|
|
681
|
+
var p, v, I, _;
|
|
682
682
|
if (te = ((p = f.metadata) == null ? void 0 : p.interruptible) !== !1, (v = t.onInterruptibleChange) == null || v.call(t, te), u === k.StreamVideoCreated) {
|
|
683
683
|
z = K.Talking, (I = t.onAgentActivityStateChange) == null || I.call(t, K.Talking);
|
|
684
684
|
return;
|
|
685
685
|
}
|
|
686
|
-
te && (z = K.Idle, (
|
|
686
|
+
te && (z = K.Idle, (_ = t.onAgentActivityStateChange) == null || _.call(t, K.Idle));
|
|
687
687
|
}
|
|
688
688
|
function g(u, f) {
|
|
689
|
-
var
|
|
690
|
-
const p = ((G = (
|
|
691
|
-
i.debug && ((
|
|
689
|
+
var _, G, W, ae;
|
|
690
|
+
const p = ((G = (_ = P == null ? void 0 : P.getReport()) == null ? void 0 : _.webRTCStats) == null ? void 0 : G.avgRtt) ?? 0, v = p > 0 ? Math.round(p / 2 * 1e3) : 0, I = { ...f, downstreamNetworkLatency: v };
|
|
691
|
+
i.debug && ((W = f == null ? void 0 : f.metadata) != null && W.sentiment) && (I.sentiment = {
|
|
692
692
|
id: f.metadata.sentiment.id,
|
|
693
693
|
name: f.metadata.sentiment.sentiment
|
|
694
694
|
}), (ae = t.onMessage) == null || ae.call(t, u, I), y(u, f);
|
|
@@ -714,12 +714,12 @@ async function Zt(e, n, i) {
|
|
|
714
714
|
function ce(u, f, p, v) {
|
|
715
715
|
const I = new TextDecoder().decode(u);
|
|
716
716
|
try {
|
|
717
|
-
const
|
|
718
|
-
if (r("Data received:", { subject: G, data:
|
|
719
|
-
const
|
|
720
|
-
|
|
721
|
-
} catch (
|
|
722
|
-
r("Failed to parse data channel message:",
|
|
717
|
+
const _ = JSON.parse(I), G = v || _.subject;
|
|
718
|
+
if (r("Data received:", { subject: G, data: _ }), !G) return;
|
|
719
|
+
const W = Z[G];
|
|
720
|
+
W == null || W(G, _);
|
|
721
|
+
} catch (_) {
|
|
722
|
+
r("Failed to parse data channel message:", _);
|
|
723
723
|
}
|
|
724
724
|
}
|
|
725
725
|
function ge(u) {
|
|
@@ -736,13 +736,13 @@ async function Zt(e, n, i) {
|
|
|
736
736
|
function nt(u, f, p) {
|
|
737
737
|
for (const [v, I] of p)
|
|
738
738
|
if (I.source === f && I.track) {
|
|
739
|
-
const
|
|
740
|
-
if (
|
|
739
|
+
const _ = I.track.mediaStreamTrack;
|
|
740
|
+
if (_ === u || (_ == null ? void 0 : _.id) === u.id)
|
|
741
741
|
return I;
|
|
742
742
|
}
|
|
743
743
|
return null;
|
|
744
744
|
}
|
|
745
|
-
async function Le(u, f, p, v, I,
|
|
745
|
+
async function Le(u, f, p, v, I, _) {
|
|
746
746
|
var Be, xe, Fe;
|
|
747
747
|
if (!S || !l)
|
|
748
748
|
throw r(`Room is not connected, cannot publish ${v} stream`), new Error("Room is not connected");
|
|
@@ -753,21 +753,21 @@ async function Zt(e, n, i) {
|
|
|
753
753
|
const G = p(f);
|
|
754
754
|
if (G.length === 0)
|
|
755
755
|
throw new Error(`No ${v} track found in the provided MediaStream`);
|
|
756
|
-
const
|
|
756
|
+
const W = G[0], ae = nt(W, v, I());
|
|
757
757
|
if (ae) {
|
|
758
758
|
r(`${v} track is already published, skipping`, {
|
|
759
|
-
trackId:
|
|
759
|
+
trackId: W.id,
|
|
760
760
|
publishedTrackId: (xe = (Be = ae.track) == null ? void 0 : Be.mediaStreamTrack) == null ? void 0 : xe.id
|
|
761
761
|
}), u.publication = ae;
|
|
762
762
|
return;
|
|
763
763
|
}
|
|
764
764
|
if ((Fe = u.publication) != null && Fe.track) {
|
|
765
765
|
const oe = u.publication.track.mediaStreamTrack;
|
|
766
|
-
oe !==
|
|
766
|
+
oe !== W && (oe == null ? void 0 : oe.id) !== W.id && (r(`Unpublishing existing ${v} track before publishing new one`), await _());
|
|
767
767
|
}
|
|
768
|
-
r(`Publishing ${v} track from provided MediaStream`, { trackId:
|
|
768
|
+
r(`Publishing ${v} track from provided MediaStream`, { trackId: W.id }), u.isPublishing = !0;
|
|
769
769
|
try {
|
|
770
|
-
u.publication = await l.localParticipant.publishTrack(
|
|
770
|
+
u.publication = await l.localParticipant.publishTrack(W, { source: v }), r(`${v} track published successfully`, { trackSid: u.publication.trackSid });
|
|
771
771
|
} catch (oe) {
|
|
772
772
|
throw r(`Failed to publish ${v} track:`, oe), oe;
|
|
773
773
|
} finally {
|
|
@@ -845,7 +845,7 @@ async function Zt(e, n, i) {
|
|
|
845
845
|
}
|
|
846
846
|
async function ke(u) {
|
|
847
847
|
var f, p;
|
|
848
|
-
x && (clearTimeout(x), x = null), l && ((f = t.onConnectionStateChange) == null || f.call(t,
|
|
848
|
+
x && (clearTimeout(x), x = null), l && ((f = t.onConnectionStateChange) == null || f.call(t, A.Disconnecting, u), await Promise.all([Ce(), Se()]), await l.disconnect()), at(), S = !1, J = !1, (p = t.onAgentActivityStateChange) == null || p.call(t, K.Idle), z = K.Idle;
|
|
849
849
|
}
|
|
850
850
|
return {
|
|
851
851
|
speak(u) {
|
|
@@ -865,22 +865,22 @@ async function Zt(e, n, i) {
|
|
|
865
865
|
}
|
|
866
866
|
if (!l || !C || !m)
|
|
867
867
|
throw r("Cannot reconnect: missing room, URL or token"), new Error("Cannot reconnect: session not available");
|
|
868
|
-
r("Reconnecting to LiveKit room, state:", l.state), J = !1, (u = t.onConnectionStateChange) == null || u.call(t,
|
|
868
|
+
r("Reconnecting to LiveKit room, state:", l.state), J = !1, (u = t.onConnectionStateChange) == null || u.call(t, A.Connecting, "user:reconnect");
|
|
869
869
|
try {
|
|
870
870
|
if (await l.connect(C, m), r("Room reconnected"), S = !0, l.remoteParticipants.size === 0) {
|
|
871
871
|
if (r("Waiting for agent to join..."), !await new Promise((v) => {
|
|
872
872
|
const I = setTimeout(() => {
|
|
873
|
-
l == null || l.off(a.ParticipantConnected,
|
|
874
|
-
}, 5e3),
|
|
875
|
-
clearTimeout(I), l == null || l.off(a.ParticipantConnected,
|
|
873
|
+
l == null || l.off(a.ParticipantConnected, _), v(!1);
|
|
874
|
+
}, 5e3), _ = () => {
|
|
875
|
+
clearTimeout(I), l == null || l.off(a.ParticipantConnected, _), v(!0);
|
|
876
876
|
};
|
|
877
|
-
l == null || l.on(a.ParticipantConnected,
|
|
877
|
+
l == null || l.on(a.ParticipantConnected, _);
|
|
878
878
|
}))
|
|
879
879
|
throw r("Agent did not join within timeout"), await l.disconnect(), new Error("Agent did not rejoin the room");
|
|
880
880
|
r("Agent joined, reconnection successful");
|
|
881
881
|
}
|
|
882
882
|
} catch (p) {
|
|
883
|
-
throw r("Failed to reconnect:", p), (f = t.onConnectionStateChange) == null || f.call(t,
|
|
883
|
+
throw r("Failed to reconnect:", p), (f = t.onConnectionStateChange) == null || f.call(t, A.Fail, "user:reconnect-failed"), p;
|
|
884
884
|
}
|
|
885
885
|
},
|
|
886
886
|
sendDataChannelMessage: ot,
|
|
@@ -1057,7 +1057,7 @@ function ln(e, n, i, r, o) {
|
|
|
1057
1057
|
};
|
|
1058
1058
|
}
|
|
1059
1059
|
function mn(e, n, i, r) {
|
|
1060
|
-
const o =
|
|
1060
|
+
const o = _e(e, `${n}/agents/${i}`, r);
|
|
1061
1061
|
return {
|
|
1062
1062
|
createStream(a, s) {
|
|
1063
1063
|
return o.post("/streams", a, { signal: s });
|
|
@@ -1097,21 +1097,21 @@ const fn = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window
|
|
|
1097
1097
|
function Ue(e) {
|
|
1098
1098
|
switch (e) {
|
|
1099
1099
|
case "connected":
|
|
1100
|
-
return
|
|
1100
|
+
return A.Connected;
|
|
1101
1101
|
case "checking":
|
|
1102
|
-
return
|
|
1102
|
+
return A.Connecting;
|
|
1103
1103
|
case "failed":
|
|
1104
|
-
return
|
|
1104
|
+
return A.Fail;
|
|
1105
1105
|
case "new":
|
|
1106
|
-
return
|
|
1106
|
+
return A.New;
|
|
1107
1107
|
case "closed":
|
|
1108
|
-
return
|
|
1108
|
+
return A.Closed;
|
|
1109
1109
|
case "disconnected":
|
|
1110
|
-
return
|
|
1110
|
+
return A.Disconnected;
|
|
1111
1111
|
case "completed":
|
|
1112
|
-
return
|
|
1112
|
+
return A.Completed;
|
|
1113
1113
|
default:
|
|
1114
|
-
return
|
|
1114
|
+
return A.New;
|
|
1115
1115
|
}
|
|
1116
1116
|
}
|
|
1117
1117
|
const gn = (e) => (n) => {
|
|
@@ -1142,7 +1142,7 @@ function pn({
|
|
|
1142
1142
|
}) {
|
|
1143
1143
|
e === R.Start ? (a("CALLBACK: onVideoStateChange(Start)"), i == null || i(R.Start)) : e === R.Stop && (a("CALLBACK: onVideoStateChange(Stop)"), i == null || i(R.Stop, o)), n === R.Start ? r == null || r(K.Talking) : n === R.Stop && (r == null || r(K.Idle));
|
|
1144
1144
|
}
|
|
1145
|
-
function
|
|
1145
|
+
function Oe({
|
|
1146
1146
|
statsSignal: e,
|
|
1147
1147
|
dataChannelSignal: n,
|
|
1148
1148
|
onVideoStateChange: i,
|
|
@@ -1188,12 +1188,12 @@ async function wn(e, n, { debug: i = !1, callbacks: r, auth: o, baseURL: a = fe,
|
|
|
1188
1188
|
});
|
|
1189
1189
|
const U = n.stream_warmup && !te, j = () => h, E = () => {
|
|
1190
1190
|
var y;
|
|
1191
|
-
h = !0, w && (t("CALLBACK: onConnectionStateChange(Connected)"), (y = r.onConnectionStateChange) == null || y.call(r,
|
|
1192
|
-
},
|
|
1191
|
+
h = !0, w && (t("CALLBACK: onConnectionStateChange(Connected)"), (y = r.onConnectionStateChange) == null || y.call(r, A.Connected));
|
|
1192
|
+
}, O = tt(
|
|
1193
1193
|
() => m.getStats(),
|
|
1194
1194
|
j,
|
|
1195
1195
|
E,
|
|
1196
|
-
(y, g) =>
|
|
1196
|
+
(y, g) => Oe({
|
|
1197
1197
|
statsSignal: S = y,
|
|
1198
1198
|
dataChannelSignal: T === re.Legacy ? l : void 0,
|
|
1199
1199
|
onVideoStateChange: r.onVideoStateChange,
|
|
@@ -1207,7 +1207,7 @@ async function wn(e, n, { debug: i = !1, callbacks: r, auth: o, baseURL: a = fe,
|
|
|
1207
1207
|
return (g = r.onConnectivityStateChange) == null ? void 0 : g.call(r, y);
|
|
1208
1208
|
}
|
|
1209
1209
|
);
|
|
1210
|
-
|
|
1210
|
+
O.start(), m.onicecandidate = (y) => {
|
|
1211
1211
|
var g;
|
|
1212
1212
|
t("peerConnection.onicecandidate", y);
|
|
1213
1213
|
try {
|
|
@@ -1236,7 +1236,7 @@ async function wn(e, n, { debug: i = !1, callbacks: r, auth: o, baseURL: a = fe,
|
|
|
1236
1236
|
const D = g.metadata;
|
|
1237
1237
|
X(D.videoId);
|
|
1238
1238
|
}
|
|
1239
|
-
y === k.StreamDone && X(null), l = y === k.StreamStarted ? R.Start : R.Stop,
|
|
1239
|
+
y === k.StreamDone && X(null), l = y === k.StreamStarted ? R.Start : R.Stop, Oe({
|
|
1240
1240
|
statsSignal: T === re.Legacy ? S : void 0,
|
|
1241
1241
|
dataChannelSignal: l,
|
|
1242
1242
|
onVideoStateChange: r.onVideoStateChange,
|
|
@@ -1263,7 +1263,7 @@ async function wn(e, n, { debug: i = !1, callbacks: r, auth: o, baseURL: a = fe,
|
|
|
1263
1263
|
var g;
|
|
1264
1264
|
t("peerConnection.oniceconnectionstatechange => " + m.iceConnectionState);
|
|
1265
1265
|
const y = Ue(m.iceConnectionState);
|
|
1266
|
-
y !==
|
|
1266
|
+
y !== A.Connected && ((g = r.onConnectionStateChange) == null || g.call(r, y));
|
|
1267
1267
|
}, m.ontrack = (y) => {
|
|
1268
1268
|
var g;
|
|
1269
1269
|
t("peerConnection.ontrack", y), t("CALLBACK: onSrcObjectReady"), (g = r.onSrcObjectReady) == null || g.call(r, y.streams[0]);
|
|
@@ -1285,19 +1285,19 @@ async function wn(e, n, { debug: i = !1, callbacks: r, auth: o, baseURL: a = fe,
|
|
|
1285
1285
|
if (M) {
|
|
1286
1286
|
const g = Ue(m.iceConnectionState);
|
|
1287
1287
|
if (m) {
|
|
1288
|
-
if (g ===
|
|
1289
|
-
|
|
1288
|
+
if (g === A.New) {
|
|
1289
|
+
O.stop();
|
|
1290
1290
|
return;
|
|
1291
1291
|
}
|
|
1292
1292
|
m.close(), m.oniceconnectionstatechange = null, m.onnegotiationneeded = null, m.onicecandidate = null, m.ontrack = null;
|
|
1293
1293
|
}
|
|
1294
1294
|
try {
|
|
1295
|
-
g ===
|
|
1295
|
+
g === A.Connected && await b(M, z).catch((D) => {
|
|
1296
1296
|
});
|
|
1297
1297
|
} catch (D) {
|
|
1298
1298
|
t("Error on close stream connection", D);
|
|
1299
1299
|
}
|
|
1300
|
-
(y = r.onAgentActivityStateChange) == null || y.call(r, K.Idle),
|
|
1300
|
+
(y = r.onAgentActivityStateChange) == null || y.call(r, K.Idle), O.stop();
|
|
1301
1301
|
}
|
|
1302
1302
|
},
|
|
1303
1303
|
/**
|
|
@@ -1373,7 +1373,7 @@ function Sn(e) {
|
|
|
1373
1373
|
}, ...i && { end_user_data: i } };
|
|
1374
1374
|
}
|
|
1375
1375
|
function Rn(e, n) {
|
|
1376
|
-
return
|
|
1376
|
+
return Ae(e.presenter.type) ? { version: Me.V2, ...Cn() } : { version: Me.V1, ...Sn(n) };
|
|
1377
1377
|
}
|
|
1378
1378
|
function kn(e, n, i) {
|
|
1379
1379
|
i.track("agent-connection-state-change", { state: e, ...n && { reason: n } });
|
|
@@ -1427,7 +1427,7 @@ function In(e, n, i, r, o) {
|
|
|
1427
1427
|
[k.StreamVideoDone]
|
|
1428
1428
|
));
|
|
1429
1429
|
}
|
|
1430
|
-
function
|
|
1430
|
+
function We(e, n, i, r) {
|
|
1431
1431
|
return ee.reset(), Ne.update(), new Promise(async (o, a) => {
|
|
1432
1432
|
try {
|
|
1433
1433
|
let s, d = !1;
|
|
@@ -1444,7 +1444,7 @@ function Oe(e, n, i, r) {
|
|
|
1444
1444
|
...n.callbacks,
|
|
1445
1445
|
onConnectionStateChange: (c, h) => {
|
|
1446
1446
|
var w, l;
|
|
1447
|
-
(l = (w = n.callbacks).onConnectionStateChange) == null || l.call(w, c), kn(c, h, i), c ===
|
|
1447
|
+
(l = (w = n.callbacks).onConnectionStateChange) == null || l.call(w, c), kn(c, h, i), c === A.Connected && (s ? o(s) : d = !0);
|
|
1448
1448
|
},
|
|
1449
1449
|
onVideoStateChange: (c, h) => {
|
|
1450
1450
|
var w, l;
|
|
@@ -1481,8 +1481,8 @@ function Oe(e, n, i, r) {
|
|
|
1481
1481
|
async function Mn(e, n, i, r, o) {
|
|
1482
1482
|
var h, w, l, S;
|
|
1483
1483
|
const a = async () => {
|
|
1484
|
-
if (
|
|
1485
|
-
const V = await
|
|
1484
|
+
if (Ae(e.presenter.type)) {
|
|
1485
|
+
const V = await We(e, n, r), $ = `${vn}_${V.sessionId}`, b = (/* @__PURE__ */ new Date()).toISOString();
|
|
1486
1486
|
return { chatResult: {
|
|
1487
1487
|
chatMode: N.Functional,
|
|
1488
1488
|
chat: {
|
|
@@ -1508,7 +1508,7 @@ async function Mn(e, n, i, r, o) {
|
|
|
1508
1508
|
n.mode,
|
|
1509
1509
|
n.persistentChat,
|
|
1510
1510
|
o
|
|
1511
|
-
), P =
|
|
1511
|
+
), P = We(e, n, r, $).then((x) => (b = x, x)), [M, J] = await Promise.all([L, P]);
|
|
1512
1512
|
return { chatResult: M, streamingManager: J };
|
|
1513
1513
|
} catch (L) {
|
|
1514
1514
|
throw V.abort(), b && await b.disconnect().catch(() => {
|
|
@@ -1536,7 +1536,7 @@ async function bn(e, n) {
|
|
|
1536
1536
|
});
|
|
1537
1537
|
const w = Lt(n.auth, s, n.callbacks.onError, n.externalId), l = await w.getById(e);
|
|
1538
1538
|
n.debug = n.debug || ((z = l == null ? void 0 : l.advanced_settings) == null ? void 0 : z.ui_debug_mode);
|
|
1539
|
-
const S =
|
|
1539
|
+
const S = Ae(l.presenter.type);
|
|
1540
1540
|
c.enrich($t(l));
|
|
1541
1541
|
const { onMessage: V, clearQueue: $ } = ln(
|
|
1542
1542
|
c,
|
|
@@ -1565,8 +1565,8 @@ async function bn(e, n) {
|
|
|
1565
1565
|
c.track("agent-sdk", { event: "loaded", ...jt(l) }, P);
|
|
1566
1566
|
});
|
|
1567
1567
|
async function M(m) {
|
|
1568
|
-
var
|
|
1569
|
-
(X = (
|
|
1568
|
+
var O, X, q, B, F, Y, ie;
|
|
1569
|
+
(X = (O = n.callbacks).onConnectionStateChange) == null || X.call(O, A.Connecting), ee.reset(), m && !i && (delete t.chat, (B = (q = n.callbacks).onNewMessage) == null || B.call(q, [...t.messages], "answer"));
|
|
1570
1570
|
const C = d === N.DirectPlayback || S ? Promise.resolve(void 0) : sn(
|
|
1571
1571
|
n.auth,
|
|
1572
1572
|
a,
|
|
@@ -1598,7 +1598,7 @@ async function bn(e, n) {
|
|
|
1598
1598
|
}
|
|
1599
1599
|
).catch((y) => {
|
|
1600
1600
|
var g, D;
|
|
1601
|
-
throw x(N.Maintenance), (D = (g = n.callbacks).onConnectionStateChange) == null || D.call(g,
|
|
1601
|
+
throw x(N.Maintenance), (D = (g = n.callbacks).onConnectionStateChange) == null || D.call(g, A.Fail), y;
|
|
1602
1602
|
}), [U, { streamingManager: j, chat: E }] = await Promise.all([C, T]);
|
|
1603
1603
|
E && E.id !== ((F = t.chat) == null ? void 0 : F.id) && ((ie = (Y = n.callbacks).onNewChat) == null || ie.call(Y, E.id)), t.streamingManager = j, t.socketManager = U, t.chat = E, i = !1, c.enrich({
|
|
1604
1604
|
chatId: E == null ? void 0 : E.id,
|
|
@@ -1608,7 +1608,7 @@ async function bn(e, n) {
|
|
|
1608
1608
|
}
|
|
1609
1609
|
async function J() {
|
|
1610
1610
|
var m, C, T, U;
|
|
1611
|
-
(m = t.socketManager) == null || m.disconnect(), await ((C = t.streamingManager) == null ? void 0 : C.disconnect()), delete t.streamingManager, delete t.socketManager, (U = (T = n.callbacks).onConnectionStateChange) == null || U.call(T,
|
|
1611
|
+
(m = t.socketManager) == null || m.disconnect(), await ((C = t.streamingManager) == null ? void 0 : C.disconnect()), delete t.streamingManager, delete t.socketManager, (U = (T = n.callbacks).onConnectionStateChange) == null || U.call(T, A.Disconnected);
|
|
1612
1612
|
}
|
|
1613
1613
|
async function x(m) {
|
|
1614
1614
|
var C, T;
|
|
@@ -1687,7 +1687,7 @@ async function bn(e, n) {
|
|
|
1687
1687
|
return t.streamingManager.unpublishCameraStream();
|
|
1688
1688
|
},
|
|
1689
1689
|
async chat(m) {
|
|
1690
|
-
var j, E,
|
|
1690
|
+
var j, E, O, X, q;
|
|
1691
1691
|
const C = () => {
|
|
1692
1692
|
if (Xe(d))
|
|
1693
1693
|
throw new de(`${d} is enabled, chat is disabled`);
|
|
@@ -1769,7 +1769,7 @@ async function bn(e, n) {
|
|
|
1769
1769
|
}), c.track("agent-message-send", {
|
|
1770
1770
|
event: "success",
|
|
1771
1771
|
messages: t.messages.length + 1
|
|
1772
|
-
}), F.result && ((X = (
|
|
1772
|
+
}), F.result && ((X = (O = n.callbacks).onNewMessage) == null || X.call(O, [...t.messages], "answer"), c.track("agent-message-received", {
|
|
1773
1773
|
latency: ee.get(!0),
|
|
1774
1774
|
messages: t.messages.length
|
|
1775
1775
|
})), F;
|
|
@@ -1781,7 +1781,7 @@ async function bn(e, n) {
|
|
|
1781
1781
|
}
|
|
1782
1782
|
},
|
|
1783
1783
|
rate(m, C, T) {
|
|
1784
|
-
var E,
|
|
1784
|
+
var E, O, X, q;
|
|
1785
1785
|
const U = t.messages.find((B) => B.id === m);
|
|
1786
1786
|
if (t.chat) {
|
|
1787
1787
|
if (!U)
|
|
@@ -1791,7 +1791,7 @@ async function bn(e, n) {
|
|
|
1791
1791
|
return c.track("agent-rate", {
|
|
1792
1792
|
event: T ? "update" : "create",
|
|
1793
1793
|
thumb: C === 1 ? "up" : "down",
|
|
1794
|
-
knowledge_id: ((
|
|
1794
|
+
knowledge_id: ((O = l.knowledge) == null ? void 0 : O.id) ?? "",
|
|
1795
1795
|
matches: j,
|
|
1796
1796
|
score: C
|
|
1797
1797
|
}), T ? w.updateRating(l.id, t.chat.id, T, {
|
|
@@ -1812,7 +1812,7 @@ async function bn(e, n) {
|
|
|
1812
1812
|
return c.track("agent-rate-delete", { type: "text" }), w.deleteRating(l.id, t.chat.id, m);
|
|
1813
1813
|
},
|
|
1814
1814
|
async speak(m) {
|
|
1815
|
-
var j, E,
|
|
1815
|
+
var j, E, O;
|
|
1816
1816
|
function C() {
|
|
1817
1817
|
if (typeof m == "string") {
|
|
1818
1818
|
if (!l.presenter.voice)
|
|
@@ -1842,7 +1842,7 @@ async function bn(e, n) {
|
|
|
1842
1842
|
role: "assistant",
|
|
1843
1843
|
content: T.input,
|
|
1844
1844
|
created_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
1845
|
-
}), (E = (j = n.callbacks).onNewMessage) == null || E.call(j, [...t.messages], "answer")),
|
|
1845
|
+
}), (E = (j = n.callbacks).onNewMessage) == null || E.call(j, [...t.messages], "answer")), At(t.chatMode))
|
|
1846
1846
|
return {
|
|
1847
1847
|
duration: 0,
|
|
1848
1848
|
video_id: "",
|
|
@@ -1852,7 +1852,7 @@ async function bn(e, n) {
|
|
|
1852
1852
|
throw new Error("Please connect to the agent first");
|
|
1853
1853
|
return t.streamingManager.speak({
|
|
1854
1854
|
script: T,
|
|
1855
|
-
metadata: { chat_id: (
|
|
1855
|
+
metadata: { chat_id: (O = t.chat) == null ? void 0 : O.id, agent_id: l.id }
|
|
1856
1856
|
});
|
|
1857
1857
|
},
|
|
1858
1858
|
interrupt: L
|
|
@@ -1865,7 +1865,7 @@ export {
|
|
|
1865
1865
|
N as ChatMode,
|
|
1866
1866
|
lt as ChatModeDowngraded,
|
|
1867
1867
|
Q as ChatProgress,
|
|
1868
|
-
|
|
1868
|
+
A as ConnectionState,
|
|
1869
1869
|
ne as ConnectivityState,
|
|
1870
1870
|
vt as DocumentType,
|
|
1871
1871
|
yt as KnowledgeType,
|
|
@@ -1883,5 +1883,5 @@ export {
|
|
|
1883
1883
|
St as VoiceAccess,
|
|
1884
1884
|
mt as WsError,
|
|
1885
1885
|
bn as createAgentManager,
|
|
1886
|
-
|
|
1886
|
+
_n as mapVideoType
|
|
1887
1887
|
};
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function($,De){typeof exports=="object"&&typeof module<"u"?De(exports):typeof define=="function"&&define.amd?define(["exports"],De):($=typeof globalThis<"u"?globalThis:$||self,De($.index={}))})(this,function($){"use strict";var Mg=Object.defineProperty;var Dg=($,De,jt)=>De in $?Mg($,De,{enumerable:!0,configurable:!0,writable:!0,value:jt}):$[De]=jt;var Yn=($,De,jt)=>Dg($,typeof De!="symbol"?De+"":De,jt);class De extends Error{constructor({kind:t,description:i,error:r}){super(JSON.stringify({kind:t,description:i}));Yn(this,"kind");Yn(this,"description");Yn(this,"error");this.kind=t,this.description=i,this.error=r}}class jt extends De{constructor(e,t){super({kind:"ChatCreationFailed",description:`Failed to create ${t?"persistent":""} chat, mode: ${e}`})}}class Ls extends De{constructor(e){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${e}`})}}class Vt extends De{constructor(t,i){super({kind:"ValidationError",description:t});Yn(this,"key");this.key=i}}class Ns extends De{constructor(e){super({kind:"WSError",description:e})}}var Us=(n=>(n.TRIAL="trial",n.BASIC="basic",n.ENTERPRISE="enterprise",n.LITE="lite",n.ADVANCED="advanced",n))(Us||{}),Fs=(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))(Fs||{}),Bs=(n=>(n.Created="created",n.Started="started",n.Done="done",n.Error="error",n.Rejected="rejected",n.Ready="ready",n))(Bs||{}),js=(n=>(n.Unrated="Unrated",n.Positive="Positive",n.Negative="Negative",n))(js||{}),Se=(n=>(n.Functional="Functional",n.TextOnly="TextOnly",n.Maintenance="Maintenance",n.Playground="Playground",n.DirectPlayback="DirectPlayback",n.Off="Off",n))(Se||{}),Ne=(n=>(n.Embed="embed",n.Query="query",n.Partial="partial",n.Answer="answer",n.Transcribe="transcribe",n.Complete="done",n))(Ne||{}),Vs=(n=>(n.KnowledgeProcessing="knowledge/processing",n.KnowledgeIndexing="knowledge/indexing",n.KnowledgeFailed="knowledge/error",n.KnowledgeDone="knowledge/done",n))(Vs||{}),qs=(n=>(n.Knowledge="knowledge",n.Document="document",n.Record="record",n))(qs||{}),Ks=(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))(Ks||{}),Ji=(n=>(n.Clip="clip",n.Talk="talk",n.Expressive="expressive",n))(Ji||{});const au=n=>{switch(n){case"clip":return"clip";case"talk":return"talk";case"expressive":return"expressive";default:throw new Error(`Unknown video type: ${n}`)}};var Q=(n=>(n.Start="START",n.Stop="STOP",n))(Q||{}),et=(n=>(n.Strong="STRONG",n.Weak="WEAK",n.Unknown="UNKNOWN",n))(et||{}),Ce=(n=>(n.Idle="IDLE",n.Loading="LOADING",n.Talking="TALKING",n.ToolActive="tool_active",n))(Ce||{}),te=(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.ToolCalling="tool/calling",n.ToolResult="tool/result",n))(te||{}),ae=(n=>(n.New="new",n.Fail="fail",n.Connected="connected",n.Connecting="connecting",n.Closed="closed",n.Completed="completed",n.Disconnecting="disconnecting",n.Disconnected="disconnected",n))(ae||{}),tt=(n=>(n.Legacy="legacy",n.Fluent="fluent",n))(tt||{}),Sn=(n=>(n.Livekit="livekit",n))(Sn||{}),Ws=(n=>(n.Amazon="amazon",n.AzureOpenAi="azure-openai",n.Microsoft="microsoft",n.Afflorithmics="afflorithmics",n.Elevenlabs="elevenlabs",n))(Ws||{}),Hs=(n=>(n.Public="public",n.Premium="premium",n.Private="private",n))(Hs||{});const ou=45*1e3,cu="X-Playground-Chat",Cn="https://api.d-id.com",du="wss://notifications.d-id.com",uu="79f81a83a67430be2bc0fd61042b8faa",lu=(...n)=>{},Js=n=>new Promise(e=>setTimeout(e,n)),nn=(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)},Gs=n=>n.type==="clip"&&n.presenter_id.startsWith("v2_")?"clip_v2":n.type,hu=n=>{switch(n.type){case"expressive":return"v4";case"clip":return"v3-pro";case"talk":return"v2"}},mu=n=>n.type==="talk"?n.source_url:n.presenter_id,Gi=n=>n===Ji.Expressive,fu=n=>[Se.TextOnly,Se.Playground,Se.Maintenance].includes(n),zs=n=>n&&[Se.DirectPlayback,Se.Off].includes(n);function pu(n,e){let t;return{promise:new Promise((r,s)=>{t=setTimeout(()=>s(new Error(e)),n)}),clear:()=>clearTimeout(t)}}async function zi(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:c}=pu(t.timeout,t.timeoutErrorMessage),a=n().finally(c);return await Promise.race([a,s])}catch(s){if(i=s,!t.shouldRetryFn(s)||r>=t.limit)throw s;await Js(t.delayMs),t.onRetry(s)}throw i}function $i(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=nn();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let gu=nn();function $s(n,e){if(n.type==="bearer")return`Bearer ${n.token}`;if(n.type==="basic")return`Basic ${"token"in n?n.token:btoa(`${n.username}:${n.password}`)}`;if(n.type==="key")return`Client-Key ${n.clientKey}.${$i(e)}_${gu}`;throw new Error(`Unknown auth type: ${n}`)}const vu=n=>zi(n,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:e=>e.status===429});function Qi(n,e=Cn,t,i){const r=async(s,c)=>{const{skipErrorHandler:a,...o}=c||{},d=await vu(()=>fetch(e+(s!=null&&s.startsWith("/")?s:`/${s}`),{...o,headers:{...o.headers,Authorization:$s(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:o,headers:d.headers}),l}return d.json()};return{get(s,c){return r(s,{...c,method:"GET"})},post(s,c,a){return r(s,{...a,body:JSON.stringify(c),method:"POST"})},delete(s,c,a){return r(s,{...a,body:JSON.stringify(c),method:"DELETE"})},patch(s,c,a){return r(s,{...a,body:JSON.stringify(c),method:"PATCH"})}}}function yu(n,e=Cn,t,i){const r=Qi(n,`${e}/agents`,t,i);return{create(s,c){return r.post("/",s,c)},getAgents(s,c){return r.get(`/${s?`?tag=${s}`:""}`,c).then(a=>a??[])},getById(s,c){return r.get(`/${s}`,c)},delete(s,c){return r.delete(`/${s}`,void 0,c)},update(s,c,a){return r.patch(`/${s}`,c,a)},newChat(s,c,a){return r.post(`/${s}/chat`,c,a)},chat(s,c,a,o){return r.post(`/${s}/chat/${c}`,a,o)},createRating(s,c,a,o){return r.post(`/${s}/chat/${c}/ratings`,a,o)},updateRating(s,c,a,o,d){return r.patch(`/${s}/chat/${c}/ratings/${a}`,o,d)},deleteRating(s,c,a,o){return r.delete(`/${s}/chat/${c}/ratings/${a}`,o)},getSTTToken(s,c){return r.get(`/${s}/stt-token`,c)}}}function bu(n){var r,s,c,a;const e=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",t=()=>{const o=navigator.platform;return o.toLowerCase().includes("win")?"Windows":o.toLowerCase().includes("mac")?"Mac OS X":o.toLowerCase().includes("linux")?"Linux":"Unknown"},i=n.presenter;return{$os:`${t()}`,isMobile:`${e()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:Gs(i),agentVoice:{voiceId:(s=(r=n.presenter)==null?void 0:r.voice)==null?void 0:s.voice_id,provider:(a=(c=n.presenter)==null?void 0:c.voice)==null?void 0:a.type}}}function ku(n){var t,i,r,s,c,a;const e=(t=n.llm)==null?void 0:t.prompt_customization;return{agentType:Gs(n.presenter),presenterType:hu(n.presenter),presenter:mu(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=(c=n.knowledge)==null?void 0:c.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 Tu=n=>n.reduce((e,t)=>e+t,0),Qs=n=>Tu(n)/n.length;function Su(n,e,t){var o,d,u;const{event:i,...r}=n,{template:s}=(e==null?void 0:e.llm)||{},{language:c}=((o=e==null?void 0:e.presenter)==null?void 0:o.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:c}},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 Ys(n){"requestIdleCallback"in window?requestIdleCallback(n,{timeout:2e3}):setTimeout(n,0)}const Cu="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function Eu(n){const e=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",t={};return{token:n.token||"testKey",distinct_id:$i(n.externalId),agentId:n.agentId,additionalProperties:{id:$i(n.externalId),...n.mixpanelAdditionalProperties||{}},isEnabled:n.isEnabled??!0,getRandom:nn,enrich(i){this.additionalProperties={...this.additionalProperties,...i}},async track(i,r,s){if(!this.isEnabled)return Promise.resolve();const{audioPath:c,...a}=r||{},o=s||Date.now(),d={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:i,properties:{...this.additionalProperties,...a,agentId:this.agentId,source:e,token:this.token,time:o,$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(Cu,d).catch(u=>console.error("Analytics tracking error:",u)),Promise.resolve()},linkTrack(i,r,s,c){t[i]||(t[i]={events:{},resolvedDependencies:[]}),c.includes(s)||c.push(s);const a=t[i];if(a.events[s]={props:r},a.resolvedDependencies.push(s),c.every(d=>a.resolvedDependencies.includes(d))){const d=c.reduce((u,l)=>a.events[l]?{...u,...a.events[l].props}:u,{});this.track(i,d),a.resolvedDependencies=a.resolvedDependencies.filter(u=>!c.includes(u)),c.forEach(u=>{delete a.events[u]})}}}}function Yi(){let n=0;return{reset:()=>n=0,update:()=>n=Date.now(),get:(e=!1)=>e?Date.now()-n:n}}const nt=Yi(),Xi=Yi(),Xs=Yi();function Zs(n){return n===Se.Playground?{headers:{[cu]:"true"}}:{}}async function ea(n,e,t,i,r=!1,s){try{return!s&&!zs(i)&&(s=await e.newChat(n.id,{persist:r},Zs(i)),t.track("agent-chat",{event:"created",chatId:s.id,mode:i})),{chat:s,chatMode:(s==null?void 0:s.chat_mode)??i}}catch(c){throw wu(c)==="InsufficientCreditsError"?new Error("InsufficientCreditsError"):new Error("Cannot create new chat")}}const wu=n=>{try{const e=JSON.parse(n.message);return e==null?void 0:e.kind}catch{return"UnknownError"}};function _u(n){return n&&n.length>0?n:[]}function Ru(n,e,t,i){const r=Qi(n,`${e}/v2/agents/${t}`,i);return{async createStream(s){return r.post("/sessions",s)}}}const ta=(n,e)=>(t,i)=>n&&console.log(`[${e}] ${t}`,i??""),Pu={[te.ChatAnswer]:Ne.Answer,[te.ChatPartial]:Ne.Partial};function Iu(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 Ou(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 Mu(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,c=i.nominated===!0;r>0&&(c||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 na(n,e,t){const i=n.map((o,d)=>d===0?t?{timestamp:o.timestamp,duration:0,rtt:o.rtt,bytesReceived:o.bytesReceived-t.bytesReceived,bitrate:(o.bytesReceived-t.bytesReceived)*8/(e/1e3),packetsReceived:o.packetsReceived-t.packetsReceived,packetsLost:o.packetsLost-t.packetsLost,framesDropped:o.framesDropped-t.framesDropped,framesDecoded:o.framesDecoded-t.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-t.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-t.jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-t.jitterBufferDelay)/(o.jitterBufferEmittedCount-t.jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-t.freezeCount,freezeDuration:o.freezeDuration-t.freezeDuration}:{timestamp:o.timestamp,rtt:o.rtt,duration:0,bytesReceived:o.bytesReceived,bitrate:o.bytesReceived*8/(e/1e3),packetsReceived:o.packetsReceived,packetsLost:o.packetsLost,framesDropped:o.framesDropped,framesDecoded:o.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount,avgJitterDelayInInterval:o.jitterBufferDelay/o.jitterBufferEmittedCount,framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount,freezeDuration:o.freezeDuration}:{timestamp:o.timestamp,duration:e*d/1e3,rtt:o.rtt,bytesReceived:o.bytesReceived-n[d-1].bytesReceived,bitrate:(o.bytesReceived-n[d-1].bytesReceived)*8/(e/1e3),packetsReceived:o.packetsReceived-n[d-1].packetsReceived,packetsLost:o.packetsLost-n[d-1].packetsLost,framesDropped:o.framesDropped-n[d-1].framesDropped,framesDecoded:o.framesDecoded-n[d-1].framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-n[d-1].jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-n[d-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-n[d-1].jitterBufferDelay)/(o.jitterBufferEmittedCount-n[d-1].jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-n[d-1].freezeCount,freezeDuration:o.freezeDuration-n[d-1].freezeDuration}),r=Ou(i),s=r.reduce((o,d)=>o+(d.causes.includes("low fps")?1:0),0),c=i.filter(o=>!!o.avgJitterDelayInInterval).map(o=>o.avgJitterDelayInInterval),a=i.filter(o=>!!o.rtt).map(o=>o.rtt);return{webRTCStats:{anomalies:r,minRtt:Math.min(...a),avgRtt:Qs(a),maxRtt:Math.max(...a),aggregateReport:Iu(n[0],n[n.length-1],s),minJitterDelayInInterval:Math.min(...c),maxJitterDelayInInterval:Math.max(...c),avgJitterDelayInInterval:Qs(c)},codec:n[0].codec,resolution:`${n[0].frameWidth}x${n[0].frameHeight}`}}const Xn=100,Du=Math.max(Math.ceil(400/Xn),1),Au=.25,xu=.28;function Lu(){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 c=s.jitterBufferDelay,a=s.jitterBufferEmittedCount;if(t&&a>t){const u=c-e,l=a-t;i=u/l}e=c,t=a;const o=s.framesDecoded,d=o-n>0;return n=o,{isReceiving:d,avgJitterDelayInInterval:i,freezeCount:s.freezeCount}}return{isReceiving:!1,avgJitterDelayInInterval:i}}}function ia(n,e,t,i,r){let s=null,c=[],a,o=0,d=!1,u=et.Unknown,l=et.Unknown,h=0,f=0;const y=Lu();async function g(){const C=await n();if(!C)return;const{isReceiving:T,avgJitterDelayInInterval:_,freezeCount:M}=y(C),v=Mu(C);if(T)o=0,h=M-f,l=_<Au?et.Strong:_>xu&&h>1?et.Weak:u,l!==u&&(r==null||r(l),u=l,f+=h,h=0),d||(i==null||i(Q.Start),a=c[c.length-1],c=[],d=!0),c.push(v);else if(d&&(o++,o>=Du)){const b=na(c,Xn,a);i==null||i(Q.Stop,b),e()||t(),f=M,d=!1}}return{start:()=>{s||(s=setInterval(g,Xn))},stop:()=>{s&&(clearInterval(s),s=null)},getReport:()=>na(c,Xn,a)}}const ra=2e4;async function Nu(){try{return await Promise.resolve().then(()=>Eg)}catch{throw new Error("LiveKit client is required for this streaming manager. Please install it using: npm install livekit-client")}}const Uu={excellent:et.Strong,good:et.Strong,poor:et.Weak,lost:et.Unknown,unknown:et.Unknown},En=JSON.stringify({kind:"InternalServerError",description:"Stream Error"});var Zi=(n=>(n.Chat="lk.chat",n.Speak="did.speak",n.Interrupt="did.interrupt",n))(Zi||{});function er(n,e,t){var i,r;throw e("Failed to connect to LiveKit room:",n),(i=t.onConnectionStateChange)==null||i.call(t,ae.Fail,"internal:init-error"),(r=t.onError)==null||r.call(t,n,{sessionId:""}),n}async function Fu(n,e,t){var nu;const i=ta(t.debug||!1,"LiveKitStreamingManager"),{Room:r,RoomEvent:s,ConnectionState:c,Track:a}=await Nu(),{callbacks:o,auth:d,baseURL:u,analytics:l}=t;let h=null,f=!1;const y=tt.Fluent;let g=null;const C={isPublishing:!1,publication:null},T={isPublishing:!1,publication:null};let _=null,M=null,v=!1;h=new r({adaptiveStream:!1,dynacast:!0});let b=null,S=Ce.Idle,L=!0;const F=Ru(d,u||Cn,n,o.onError);let x,k,R;try{const P=await F.createStream({transport_provider:Sn.Livekit,chat_persist:e.chat_persist??!0}),{id:U,session_token:q,session_url:K}=P;(nu=o.onStreamCreated)==null||nu.call(o,{session_id:U,stream_id:U,agent_id:n}),x=U,k=q,R=K,await h.prepareConnection(R,k)}catch(P){er(P,i,o)}if(!R||!k||!x)return Promise.reject(new Error("Failed to initialize LiveKit stream"));h.on(s.ConnectionStateChanged,H).on(s.ConnectionQualityChanged,Y).on(s.ParticipantConnected,X).on(s.ParticipantDisconnected,ee).on(s.TrackSubscribed,le).on(s.TrackUnsubscribed,fe).on(s.DataReceived,Tn).on(s.MediaDevicesError,Ki).on(s.TranscriptionReceived,N).on(s.EncryptionError,Wi).on(s.TrackSubscriptionFailed,Hi);function N(P,U){var q;U!=null&&U.isLocal&&(nt.update(),S===Ce.Talking&&((q=o.onInterruptDetected)==null||q.call(o,{type:"audio"}),S=Ce.Idle))}try{await h.connect(R,k),i("LiveKit room joined successfully"),b=setTimeout(()=>{var P;i(`Track subscription timeout - no track subscribed within ${ra/1e3} seconds after connect`),b=null,l.track("connectivity-error",{error:"Track subscription timeout",sessionId:x}),(P=o.onError)==null||P.call(o,new Error("Track subscription timeout"),{sessionId:x}),xs("internal:track-subscription-timeout")},ra)}catch(P){er(P,i,o)}l.enrich({"stream-type":y});function H(P){var U,q,K,ce;switch(i("Connection state changed:",P),P){case c.Connecting:i("CALLBACK: onConnectionStateChange(Connecting)"),(U=o.onConnectionStateChange)==null||U.call(o,ae.Connecting,"livekit:connecting");break;case c.Connected:i("LiveKit room connected successfully"),f=!0;break;case c.Disconnected:i("LiveKit room disconnected"),f=!1,v=!1,C.publication=null,T.publication=null,(q=o.onConnectionStateChange)==null||q.call(o,ae.Disconnected,"livekit:disconnected");break;case c.Reconnecting:i("LiveKit room reconnecting..."),(K=o.onConnectionStateChange)==null||K.call(o,ae.Connecting,"livekit:reconnecting");break;case c.SignalReconnecting:i("LiveKit room signal reconnecting..."),(ce=o.onConnectionStateChange)==null||ce.call(o,ae.Connecting,"livekit:signal-reconnecting");break}}function Y(P,U){var q;i("Connection quality:",P),U!=null&&U.isLocal&&((q=o.onConnectivityStateChange)==null||q.call(o,Uu[P]))}function X(P){i("Participant connected:",P.identity)}function ee(P){i("Participant disconnected:",P.identity),xs("livekit:participant-disconnected")}function ye(){var P;M!==Q.Start&&(i("CALLBACK: onVideoStateChange(Start)"),M=Q.Start,(P=o.onVideoStateChange)==null||P.call(o,Q.Start))}function Re(P){var U;M!==Q.Stop&&(i("CALLBACK: onVideoStateChange(Stop)"),M=Q.Stop,(U=o.onVideoStateChange)==null||U.call(o,Q.Stop,P))}function le(P,U,q){var ce,de,Ge;i(`Track subscribed: ${P.kind} from ${q.identity}`);const K=P.mediaStreamTrack;if(!K){i(`No mediaStreamTrack available for ${P.kind}`);return}g?(g.addTrack(K),i(`Added ${P.kind} track to shared MediaStream`)):(g=new MediaStream([K]),i(`Created shared MediaStream with ${P.kind} track`)),P.kind==="video"&&((ce=o.onStreamReady)==null||ce.call(o),i("CALLBACK: onSrcObjectReady"),(de=o.onSrcObjectReady)==null||de.call(o,g),v||(v=!0,i("CALLBACK: onConnectionStateChange(Connected)"),(Ge=o.onConnectionStateChange)==null||Ge.call(o,ae.Connected,"livekit:track-subscribed")),_=ia(()=>P.getRTCStatsReport(),()=>f,lu,(Me,Bt)=>{i(`Video state change: ${Me}`),Me===Q.Start?(b&&(clearTimeout(b),b=null,i("Track subscription timeout cleared")),ye()):Me===Q.Stop&&Re(Bt)}),_.start())}function fe(P,U,q){i(`Track unsubscribed: ${P.kind} from ${q.identity}`),P.kind==="video"&&(Re(_==null?void 0:_.getReport()),_==null||_.stop(),_=null)}function Oe(P,U){var K;const q=Pu[P];q&&((K=o.onMessage)==null||K.call(o,q,{event:q,...U}))}function Je(P,U){var q,K,ce;if(P===te.ToolCalling){S=Ce.ToolActive,(q=o.onAgentActivityStateChange)==null||q.call(o,Ce.ToolActive),(K=o.onToolEvent)==null||K.call(o,te.ToolCalling,U);return}P===te.ToolResult&&((ce=o.onToolEvent)==null||ce.call(o,te.ToolResult,U))}function j(P,U){var q,K,ce,de;if(L=((q=U.metadata)==null?void 0:q.interruptible)!==!1,(K=o.onInterruptibleChange)==null||K.call(o,L),P===te.StreamVideoCreated){S=Ce.Talking,(ce=o.onAgentActivityStateChange)==null||ce.call(o,Ce.Talking);return}L&&(S=Ce.Idle,(de=o.onAgentActivityStateChange)==null||de.call(o,Ce.Idle))}function B(P,U){var de,Ge,Me,Bt;const q=((Ge=(de=_==null?void 0:_.getReport())==null?void 0:de.webRTCStats)==null?void 0:Ge.avgRtt)??0,K=q>0?Math.round(q/2*1e3):0,ce={...U,downstreamNetworkLatency:K};t.debug&&((Me=U==null?void 0:U.metadata)!=null&&Me.sentiment)&&(ce.sentiment={id:U.metadata.sentiment.id,name:U.metadata.sentiment.sentiment}),(Bt=o.onMessage)==null||Bt.call(o,P,ce),j(P,U)}function ie(P,U){var q;(q=o.onMessage)==null||q.call(o,Ne.Transcribe,{event:Ne.Transcribe,...U}),queueMicrotask(()=>{var K;(K=o.onAgentActivityStateChange)==null||K.call(o,Ce.Loading)})}const Le={[te.ChatAnswer]:Oe,[te.ChatPartial]:Oe,[te.ToolCalling]:Je,[te.ToolResult]:Je,[te.StreamVideoCreated]:B,[te.StreamVideoDone]:B,[te.StreamVideoError]:B,[te.StreamVideoRejected]:B,[te.ChatAudioTranscribed]:ie};function Tn(P,U,q,K){const ce=new TextDecoder().decode(P);try{const de=JSON.parse(ce),Ge=K||de.subject;if(i("Data received:",{subject:Ge,data:de}),!Ge)return;const Me=Le[Ge];Me==null||Me(Ge,de)}catch(de){i("Failed to parse data channel message:",de)}}function Ki(P){var U;i("Media devices error:",P),(U=o.onError)==null||U.call(o,new Error(En),{sessionId:x})}function Wi(P){var U;i("Encryption error:",P),(U=o.onError)==null||U.call(o,new Error(En),{sessionId:x})}function Hi(P,U,q){i("Track subscription failed:",{trackSid:P,participant:U,reason:q})}function wg(P,U,q){for(const[K,ce]of q)if(ce.source===U&&ce.track){const de=ce.track.mediaStreamTrack;if(de===P||(de==null?void 0:de.id)===P.id)return ce}return null}async function eu(P,U,q,K,ce,de){var iu,ru,su;if(!f||!h)throw i(`Room is not connected, cannot publish ${K} stream`),new Error("Room is not connected");if(P.isPublishing){i(`${K} publish already in progress, skipping`);return}const Ge=q(U);if(Ge.length===0)throw new Error(`No ${K} track found in the provided MediaStream`);const Me=Ge[0],Bt=wg(Me,K,ce());if(Bt){i(`${K} track is already published, skipping`,{trackId:Me.id,publishedTrackId:(ru=(iu=Bt.track)==null?void 0:iu.mediaStreamTrack)==null?void 0:ru.id}),P.publication=Bt;return}if((su=P.publication)!=null&&su.track){const tn=P.publication.track.mediaStreamTrack;tn!==Me&&(tn==null?void 0:tn.id)!==Me.id&&(i(`Unpublishing existing ${K} track before publishing new one`),await de())}i(`Publishing ${K} track from provided MediaStream`,{trackId:Me.id}),P.isPublishing=!0;try{P.publication=await h.localParticipant.publishTrack(Me,{source:K}),i(`${K} track published successfully`,{trackSid:P.publication.trackSid})}catch(tn){throw i(`Failed to publish ${K} track:`,tn),tn}finally{P.isPublishing=!1}}async function tu(P,U){if(!(!P.publication||!P.publication.track))try{h&&(await h.localParticipant.unpublishTrack(P.publication.track,!1),i(`${U} track unpublished`))}catch(q){i(`Error unpublishing ${U} track:`,q)}finally{P.publication=null}}async function _g(P){return eu(C,P,U=>U.getAudioTracks(),a.Source.Microphone,()=>h.localParticipant.audioTrackPublications,Ms)}async function Ms(){return tu(C,"Microphone")}async function Rg(P){return eu(T,P,U=>U.getVideoTracks(),a.Source.Camera,()=>h.localParticipant.videoTrackPublications,Ds)}async function Ds(){return tu(T,"Camera")}function Pg(){g&&(g.getTracks().forEach(P=>P.stop()),g=null)}async function As(P,U){var q,K;if(!f||!h){i("Room is not connected for sending messages"),(q=o.onError)==null||q.call(o,new Error(En),{sessionId:x});return}try{await h.localParticipant.sendText(P,{topic:U}),i("Message sent successfully:",P)}catch(ce){i("Failed to send message:",ce),(K=o.onError)==null||K.call(o,new Error(En),{sessionId:x})}}async function Ig(P){var U;try{const K=JSON.parse(P).topic;return As("",K)}catch(q){i("Failed to send data channel message:",q),(U=o.onError)==null||U.call(o,new Error(En),{sessionId:x})}}function Og(P){return As(P,"lk.chat")}async function xs(P){var U,q;b&&(clearTimeout(b),b=null),h&&((U=o.onConnectionStateChange)==null||U.call(o,ae.Disconnecting,P),await Promise.all([Ms(),Ds()]),await h.disconnect()),Pg(),f=!1,v=!1,(q=o.onAgentActivityStateChange)==null||q.call(o,Ce.Idle),S=Ce.Idle}return{speak(P){const U=typeof P=="string"?P:JSON.stringify(P);return As(U,"did.speak")},disconnect:()=>xs("user:disconnect"),async reconnect(){var P,U;if((h==null?void 0:h.state)===c.Connected){i("Room is already connected");return}if(!h||!R||!k)throw i("Cannot reconnect: missing room, URL or token"),new Error("Cannot reconnect: session not available");i("Reconnecting to LiveKit room, state:",h.state),v=!1,(P=o.onConnectionStateChange)==null||P.call(o,ae.Connecting,"user:reconnect");try{if(await h.connect(R,k),i("Room reconnected"),f=!0,h.remoteParticipants.size===0){if(i("Waiting for agent to join..."),!await new Promise(K=>{const ce=setTimeout(()=>{h==null||h.off(s.ParticipantConnected,de),K(!1)},5e3),de=()=>{clearTimeout(ce),h==null||h.off(s.ParticipantConnected,de),K(!0)};h==null||h.on(s.ParticipantConnected,de)}))throw i("Agent did not join within timeout"),await h.disconnect(),new Error("Agent did not rejoin the room");i("Agent joined, reconnection successful")}}catch(q){throw i("Failed to reconnect:",q),(U=o.onConnectionStateChange)==null||U.call(o,ae.Fail,"user:reconnect-failed"),q}},sendDataChannelMessage:Ig,sendTextMessage:Og,publishMicrophoneStream:_g,unpublishMicrophoneStream:Ms,publishCameraStream:Rg,unpublishCameraStream:Ds,sessionId:x,streamId:x,streamType:y,interruptAvailable:!0,isInterruptible:L,triggersAvailable:!1}}const Bu=Object.freeze(Object.defineProperty({__proto__:null,DataChannelTopic:Zi,createLiveKitStreamingManager:Fu,handleInitError:er},Symbol.toStringTag,{value:"Module"}));function ju(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!==tt.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!t)throw new Error("No active video to interrupt")}async function Vu(n,e){const t={type:te.StreamInterrupt,videoId:e,timestamp:Date.now()};n.sendDataChannelMessage(JSON.stringify(t))}async function qu(n){const e={topic:Zi.Interrupt};n.sendDataChannelMessage(JSON.stringify(e))}function Ku(n){return new Promise((e,t)=>{const{callbacks:i,host:r,auth:s,externalId:c}=n,{onMessage:a=null,onOpen:o=null,onClose:d=null,onError:u=null}=i||{},l=new WebSocket(`${r}?authorization=${encodeURIComponent($s(s,c))}`);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=>{o==null||o(h),e(l)}})}async function Wu(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 Ku(n)}catch(r){if(i===e)throw r;await Js(i*500)}return t}async function Hu(n,e,t,i){const r=t!=null&&t.onMessage?[t.onMessage]:[],s=await Wu({auth:n,host:e,externalId:i,callbacks:{onError:c=>{var a;return(a=t.onError)==null?void 0:a.call(t,new Ns(c))},onMessage(c){const a=JSON.parse(c.data);r.forEach(o=>o(a.event,a))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:c=>r.push(c)}}function Ju(n){if(n.answer!==void 0)return n.answer;let e=0,t="";for(;e in n;)t+=n[e++];return t}function Gu(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 zu(n,e,t,i,r){if(n===Ne.Transcribe&&e.content){Gu(e,i,r);return}if(!(n===Ne.Partial||n===Ne.Answer))return;const s=i.messages[i.messages.length-1];let c;if(s!=null&&s.transcribed&&s.role==="user")n===Ne.Answer&&e.content,c={id:e.id||`assistant-${Date.now()}`,role:e.role||"assistant",content:e.content||"",created_at:e.created_at||new Date().toISOString()},i.messages.push(c);else if((s==null?void 0:s.role)==="assistant")c=s;else return;const{content:a,sequence:o}=e;n===Ne.Partial?t[o]=a:t.answer=a;const d=Ju(t);(c.content!==d||n===Ne.Answer)&&(c.content=d,r==null||r([...i.messages],n))}function $u(n,e,t,i,r){let s={};const c=()=>s={};let a="answer";const o=(d,u)=>{var l,h;u==="user"&&c(),a=u,(h=(l=t.callbacks).onNewMessage)==null||h.call(l,d,u)};return{clearQueue:c,onMessage:(d,u)=>{var l,h;if("content"in u){const f=d===te.ChatAnswer?Ne.Answer:d===te.ChatAudioTranscribed?Ne.Transcribe:d;zu(f,u,s,e,o),f===Ne.Answer&&n.track("agent-message-received",{content:u.content,messages:e.messages.length,mode:e.chatMode})}else{const f=te,y=[f.StreamVideoDone,f.StreamVideoError,f.StreamVideoRejected],g=[f.StreamFailed,f.StreamVideoError,f.StreamVideoRejected],C=Su(u,i,{mode:e.chatMode});if(d=d,d===f.StreamVideoCreated&&(n.linkTrack("agent-video",C,f.StreamVideoCreated,["start"]),u.sentiment)){const T=e.messages[e.messages.length-1];if((T==null?void 0:T.role)==="assistant"){const _={...T,sentiment:u.sentiment};e.messages[e.messages.length-1]=_,o==null||o([...e.messages],a)}}if(y.includes(d)){const T=d.split("/")[1];g.includes(d)?n.track("agent-video",{...C,event:T}):n.linkTrack("agent-video",{...C,event:T},d,["done"])}g.includes(d)&&((h=(l=t.callbacks).onError)==null||h.call(l,new Error(`Stream failed with event ${d}`),{data:u})),u.event===f.StreamDone&&r()}}}}function Qu(n,e,t,i){const r=Qi(n,`${e}/agents/${t}`,i);return{createStream(s,c){return r.post("/streams",s,{signal:c})},startConnection(s,c,a,o){return r.post(`/streams/${s}/sdp`,{session_id:a,answer:c},{signal:o})},addIceCandidate(s,c,a,o){return r.post(`/streams/${s}/ice`,{session_id:a,...c},{signal:o})},sendStreamRequest(s,c,a){return r.post(`/streams/${s}`,{session_id:c,...a})},close(s,c){return r.delete(`/streams/${s}`,{session_id:c})}}}const Yu=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function sa(n){switch(n){case"connected":return ae.Connected;case"checking":return ae.Connecting;case"failed":return ae.Fail;case"new":return ae.New;case"closed":return ae.Closed;case"disconnected":return ae.Disconnected;case"completed":return ae.Completed;default:return ae.New}}const Xu=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 Zu({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:i,log:r}){n===Q.Start&&e===Q.Start?(r("CALLBACK: onVideoStateChange(Start)"),t==null||t(Q.Start)):n===Q.Stop&&e===Q.Stop&&(r("CALLBACK: onVideoStateChange(Stop)"),t==null||t(Q.Stop,i))}function el({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:r,log:s}){n===Q.Start?(s("CALLBACK: onVideoStateChange(Start)"),t==null||t(Q.Start)):n===Q.Stop&&(s("CALLBACK: onVideoStateChange(Stop)"),t==null||t(Q.Stop,r)),e===Q.Start?i==null||i(Ce.Talking):e===Q.Stop&&(i==null||i(Ce.Idle))}function aa({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,streamType:r,report:s,log:c}){r===tt.Legacy?Zu({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:s,log:c}):r===tt.Fluent&&el({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:s,log:c})}async function tl(n,e,{debug:t=!1,callbacks:i,auth:r,baseURL:s=Cn,analytics:c},a){var Je;const o=ta(t,"WebRTCStreamingManager"),d=Xu(o);let u=!1,l=!1,h=Q.Stop,f=Q.Stop;const{startConnection:y,sendStreamRequest:g,close:C,createStream:T,addIceCandidate:_}=Qu(r,s,n,i.onError),{id:M,offer:v,ice_servers:b,session_id:S,fluent:L,interrupt_enabled:F,triggers_enabled:x}=await T(e,a);(Je=i.onStreamCreated)==null||Je.call(i,{stream_id:M,session_id:S,agent_id:n});const k=new Yu({iceServers:b}),R=k.createDataChannel("JanusDataChannel");if(!S)throw new Error("Could not create session_id");const N=L?tt.Fluent:tt.Legacy;c.enrich({"stream-type":N});const H=e.stream_warmup&&!L,Y=()=>u,X=()=>{var j;u=!0,l&&(o("CALLBACK: onConnectionStateChange(Connected)"),(j=i.onConnectionStateChange)==null||j.call(i,ae.Connected))},ee=ia(()=>k.getStats(),Y,X,(j,B)=>aa({statsSignal:f=j,dataChannelSignal:N===tt.Legacy?h:void 0,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,report:B,streamType:N,log:o}),j=>{var B;return(B=i.onConnectivityStateChange)==null?void 0:B.call(i,j)});ee.start(),k.onicecandidate=j=>{var B;o("peerConnection.onicecandidate",j);try{j.candidate&&j.candidate.sdpMid&&j.candidate.sdpMLineIndex!==null?_(M,{candidate:j.candidate.candidate,sdpMid:j.candidate.sdpMid,sdpMLineIndex:j.candidate.sdpMLineIndex},S,a):_(M,{candidate:null},S,a)}catch(ie){(B=i.onError)==null||B.call(i,ie,{streamId:M})}},R.onopen=()=>{l=!0,(!H||u)&&X()};const ye=j=>{var B;(B=i.onVideoIdChange)==null||B.call(i,j)};function Re(j,B){if(j===te.StreamStarted&&typeof B=="object"&&"metadata"in B){const ie=B.metadata;ye(ie.videoId)}j===te.StreamDone&&ye(null),h=j===te.StreamStarted?Q.Start:Q.Stop,aa({statsSignal:N===tt.Legacy?f:void 0,dataChannelSignal:h,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,streamType:N,log:o})}function le(j,B){var Le;const ie=typeof B=="string"?B:B==null?void 0:B.metadata;ie&&c.enrich({streamMetadata:ie}),(Le=i.onStreamReady)==null||Le.call(i)}const fe={[te.StreamStarted]:Re,[te.StreamDone]:Re,[te.StreamReady]:le};R.onmessage=j=>{var Le;const{subject:B,data:ie}=d(j.data);(Le=fe[B])==null||Le.call(fe,B,ie)},k.oniceconnectionstatechange=()=>{var B;o("peerConnection.oniceconnectionstatechange => "+k.iceConnectionState);const j=sa(k.iceConnectionState);j!==ae.Connected&&((B=i.onConnectionStateChange)==null||B.call(i,j))},k.ontrack=j=>{var B;o("peerConnection.ontrack",j),o("CALLBACK: onSrcObjectReady"),(B=i.onSrcObjectReady)==null||B.call(i,j.streams[0])},await k.setRemoteDescription(v),o("set remote description OK");const Oe=await k.createAnswer();return o("create answer OK"),await k.setLocalDescription(Oe),o("set local description OK"),await y(M,Oe,S,a),o("start connection OK"),{speak(j){return g(M,S,j)},async disconnect(){var j;if(M){const B=sa(k.iceConnectionState);if(k){if(B===ae.New){ee.stop();return}k.close(),k.oniceconnectionstatechange=null,k.onnegotiationneeded=null,k.onicecandidate=null,k.ontrack=null}try{B===ae.Connected&&await C(M,S).catch(ie=>{})}catch(ie){o("Error on close stream connection",ie)}(j=i.onAgentActivityStateChange)==null||j.call(i,Ce.Idle),ee.stop()}},sendDataChannelMessage(j){var B,ie;if(!u||R.readyState!=="open"){o("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:M});return}try{R.send(j)}catch(Le){o("Error sending data channel message",Le),(ie=i.onError)==null||ie.call(i,Le,{streamId:M})}},sessionId:S,streamId:M,streamType:N,interruptAvailable:F??!1,isInterruptible:!0,triggersAvailable:x??!1}}var tr=(n=>(n.V1="v1",n.V2="v2",n))(tr||{});async function nl(n,e,t,i){const r=n.id;switch(e.version){case"v1":{const{version:s,...c}=e;return tl(r,c,t,i)}case"v2":{const{version:s,...c}=e;switch(c.transport_provider){case Sn.Livekit:const{createLiveKitStreamingManager:a}=await Promise.resolve().then(()=>Bu);return a(r,c,t);default:throw new Error(`Unsupported transport provider: ${c.transport_provider}`)}}default:throw new Error(`Invalid stream version: ${e.version}`)}}const il="cht";function rl(){return{transport_provider:Sn.Livekit}}function sl(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 al(n,e){return Gi(n.presenter.type)?{version:tr.V2,...rl()}:{version:tr.V1,...sl(e)}}function ol(n,e,t){t.track("agent-connection-state-change",{state:n,...e&&{reason:e}})}function cl(n,e,t,i,r){r===tt.Fluent?dl(n,e,t,i,r):ll(n,e,t,i,r)}function dl(n,e,t,i,r){n===Q.Start?i.track("stream-session",{event:"start","stream-type":r}):n===Q.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 ul(n,e,t,i){nt.get()<=0||(n===Q.Start?t.linkTrack("agent-video",{event:"start",latency:nt.get(!0),"stream-type":i},"start",[te.StreamVideoCreated]):n===Q.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",[te.StreamVideoDone]))}function ll(n,e,t,i,r){nt.get()<=0||(n===Q.Start?i.linkTrack("agent-video",{event:"start",latency:nt.get(!0),"stream-type":r},"start",[te.StreamVideoCreated]):n===Q.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",[te.StreamVideoDone]))}function oa(n,e,t,i){return nt.reset(),Xs.update(),new Promise(async(r,s)=>{try{let c,a=!1;const o=al(n,e);t.enrich({"stream-version":o.version.toString()}),c=await nl(n,o,{...e,analytics:t,callbacks:{...e.callbacks,onConnectionStateChange:(d,u)=>{var l,h;(h=(l=e.callbacks).onConnectionStateChange)==null||h.call(l,d),ol(d,u,t),d===ae.Connected&&(c?r(c):a=!0)},onVideoStateChange:(d,u)=>{var l,h;(h=(l=e.callbacks).onVideoStateChange)==null||h.call(l,d),cl(d,n,u,t,c.streamType)},onAgentActivityStateChange:d=>{var u,l;(l=(u=e.callbacks).onAgentActivityStateChange)==null||l.call(u,d),d===Ce.Talking?Xi.update():Xi.reset(),ul(d===Ce.Talking?Q.Start:Q.Stop,n,t,c.streamType)},onStreamReady:()=>{const d=Xs.get(!0);t.track("agent-chat",{event:"ready",latency:d})}}},i),a&&r(c)}catch(c){s(c)}})}async function hl(n,e,t,i,r){var u,l,h,f;const s=async()=>{if(Gi(n.presenter.type)){const y=await oa(n,e,i),g=`${il}_${y.sessionId}`,C=new Date().toISOString();return{chatResult:{chatMode:Se.Functional,chat:{id:g,agent_id:n.id,owner_id:n.owner_id??"",created:C,modified:C,agent_id__created_at:C,agent_id__modified_at:C,chat_mode:Se.Functional,messages:[]}},streamingManager:y}}else{const y=new AbortController,g=y.signal;let C;try{const T=ea(n,t,i,e.mode,e.persistentChat,r),_=oa(n,e,i,g).then(b=>(C=b,b)),[M,v]=await Promise.all([T,_]);return{chatResult:M,streamingManager:v}}catch(T){throw y.abort(),C&&await C.disconnect().catch(()=>{}),T}}},{chatResult:c,streamingManager:a}=await s(),{chat:o,chatMode:d}=c;return d&&e.mode!==void 0&&d!==e.mode&&(e.mode=d,(l=(u=e.callbacks).onModeChange)==null||l.call(u,d),d!==Se.Functional)?((f=(h=e.callbacks).onError)==null||f.call(h,new Ls(d)),a==null||a.disconnect(),{chat:o}):{chat:o,streamingManager:a}}async function ml(n,e){var S,L,F,x;let t=!0,i=null;const r=e.mixpanelKey||uu,s=e.wsURL||du,c=e.baseURL||Cn,a=e.mode||Se.Functional,o={messages:[],chatMode:a},d=Eu({token:r,agentId:n,isEnabled:e.enableAnalitics,externalId:e.externalId,mixpanelAdditionalProperties:e.mixpanelAdditionalProperties}),u=Date.now();Ys(()=>{d.track("agent-sdk",{event:"init"},u)});const l=yu(e.auth,c,e.callbacks.onError,e.externalId),h=await l.getById(n);e.debug=e.debug||((S=h==null?void 0:h.advanced_settings)==null?void 0:S.ui_debug_mode);const f=Gi(h.presenter.type);d.enrich(ku(h));const{onMessage:y,clearQueue:g}=$u(d,o,e,h,()=>{var k;return(k=o.socketManager)==null?void 0:k.disconnect()});o.messages=_u(e.initialMessages),(F=(L=e.callbacks).onNewMessage)==null||F.call(L,[...o.messages],"answer");const C=k=>{i=k},T=({type:k})=>{var N,H,Y,X;if(!((N=o.streamingManager)!=null&&N.isInterruptible))return;const R=o.messages[o.messages.length-1];d.track("agent-video-interrupt",{type:k||"click",video_duration_to_interrupt:Xi.get(!0),message_duration_to_interrupt:nt.get(!0)}),R.interrupted=!0,(Y=(H=e.callbacks).onNewMessage)==null||Y.call(H,[...o.messages],"answer"),f?qu(o.streamingManager):(ju(o.streamingManager,(X=o.streamingManager)==null?void 0:X.streamType,i),Vu(o.streamingManager,i))},_=Date.now();Ys(()=>{d.track("agent-sdk",{event:"loaded",...bu(h)},_)});async function M(k){var ee,ye,Re,le,fe,Oe,Je;(ye=(ee=e.callbacks).onConnectionStateChange)==null||ye.call(ee,ae.Connecting),nt.reset(),k&&!t&&(delete o.chat,(le=(Re=e.callbacks).onNewMessage)==null||le.call(Re,[...o.messages],"answer"));const R=a===Se.DirectPlayback||f?Promise.resolve(void 0):Hu(e.auth,s,{onMessage:y,onError:e.callbacks.onError},e.externalId),N=zi(()=>hl(h,{...e,mode:a,callbacks:{...e.callbacks,onVideoIdChange:C,onMessage:y,onInterruptDetected:T}},l,d,o.chat),{limit:3,timeout:ou,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:j=>(j==null?void 0:j.message)!=="Could not connect"&&j.status!==429&&(j==null?void 0:j.message)!=="InsufficientCreditsError",delayMs:1e3}).catch(j=>{var B,ie;throw b(Se.Maintenance),(ie=(B=e.callbacks).onConnectionStateChange)==null||ie.call(B,ae.Fail),j}),[H,{streamingManager:Y,chat:X}]=await Promise.all([R,N]);X&&X.id!==((fe=o.chat)==null?void 0:fe.id)&&((Je=(Oe=e.callbacks).onNewChat)==null||Je.call(Oe,X.id)),o.streamingManager=Y,o.socketManager=H,o.chat=X,t=!1,d.enrich({chatId:X==null?void 0:X.id,streamId:Y==null?void 0:Y.streamId,mode:o.chatMode}),b((X==null?void 0:X.chat_mode)??a)}async function v(){var k,R,N,H;(k=o.socketManager)==null||k.disconnect(),await((R=o.streamingManager)==null?void 0:R.disconnect()),delete o.streamingManager,delete o.socketManager,(H=(N=e.callbacks).onConnectionStateChange)==null||H.call(N,ae.Disconnected)}async function b(k){var R,N;k!==o.chatMode&&(d.track("agent-mode-change",{mode:k}),o.chatMode=k,o.chatMode!==Se.Functional&&await v(),(N=(R=e.callbacks).onModeChange)==null||N.call(R,k))}return{agent:h,getStreamType:()=>{var k;return(k=o.streamingManager)==null?void 0:k.streamType},getIsInterruptAvailable:()=>{var k;return((k=o.streamingManager)==null?void 0:k.interruptAvailable)??!1},getIsTriggersAvailable:()=>{var k;return((k=o.streamingManager)==null?void 0:k.triggersAvailable)??!1},starterMessages:((x=h.knowledge)==null?void 0:x.starter_message)||[],getSTTToken:()=>l.getSTTToken(h.id),changeMode:b,enrichAnalytics:d.enrich,async connect(){await M(!0),d.track("agent-chat",{event:"connect",mode:o.chatMode})},async reconnect(){const k=o.streamingManager;if(f&&(k!=null&&k.reconnect)){try{await k.reconnect(),d.track("agent-chat",{event:"reconnect",mode:o.chatMode})}catch{await v(),await M(!1)}return}await v(),await M(!1),d.track("agent-chat",{event:"reconnect",mode:o.chatMode})},async disconnect(){await v(),d.track("agent-chat",{event:"disconnect",mode:o.chatMode})},async publishMicrophoneStream(k){var R;if(!((R=o.streamingManager)!=null&&R.publishMicrophoneStream))throw new Error("publishMicrophoneStream is not available for this streaming manager");return o.streamingManager.publishMicrophoneStream(k)},async unpublishMicrophoneStream(){var k;if(!((k=o.streamingManager)!=null&&k.unpublishMicrophoneStream))throw new Error("unpublishMicrophoneStream is not available for this streaming manager");return o.streamingManager.unpublishMicrophoneStream()},async publishCameraStream(k){var R;if(!((R=o.streamingManager)!=null&&R.publishCameraStream))throw new Error("publishCameraStream is not available for this streaming manager");return o.streamingManager.publishCameraStream(k)},async unpublishCameraStream(){var k;if(!((k=o.streamingManager)!=null&&k.unpublishCameraStream))throw new Error("unpublishCameraStream is not available for this streaming manager");return o.streamingManager.unpublishCameraStream()},async chat(k){var Y,X,ee,ye,Re;const R=()=>{if(zs(a))throw new Vt(`${a} is enabled, chat is disabled`);if(k.length>=800)throw new Vt("Message cannot be more than 800 characters");if(k.length===0)throw new Vt("Message cannot be empty");if(o.chatMode===Se.Maintenance)throw new Vt("Chat is in maintenance mode");if(![Se.TextOnly,Se.Playground].includes(o.chatMode)){if(!o.streamingManager)throw new Vt("Streaming manager is not initialized");if(!o.chat)throw new Vt("Chat is not initialized")}},N=async()=>{var le,fe;if(!o.chat){const Oe=await ea(h,l,d,o.chatMode,e.persistentChat);if(!Oe.chat)throw new jt(o.chatMode,!!e.persistentChat);o.chat=Oe.chat,(fe=(le=e.callbacks).onNewChat)==null||fe.call(le,o.chat.id)}return o.chat.id},H=async(le,fe)=>{const Oe=o.chatMode===Se.Playground;return zi(f&&!Oe?async()=>{var B,ie;return await((ie=(B=o.streamingManager)==null?void 0:B.sendTextMessage)==null?void 0:ie.call(B,k)),Promise.resolve({})}:async()=>{var B,ie;return l.chat(h.id,fe,{chatMode:o.chatMode,streamId:(B=o.streamingManager)==null?void 0:B.streamId,sessionId:(ie=o.streamingManager)==null?void 0:ie.sessionId,messages:le.map(({matches:Le,...Tn})=>Tn)},{...Zs(o.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:B=>{var Tn,Ki,Wi,Hi;const ie=(Tn=B==null?void 0:B.message)==null?void 0:Tn.includes("missing or invalid session_id");return!((Ki=B==null?void 0:B.message)==null?void 0:Ki.includes("Stream Error"))&&!ie?((Hi=(Wi=e.callbacks).onError)==null||Hi.call(Wi,B),!1):!0},onRetry:async()=>{await v(),await M(!1)}})};try{g(),R(),o.messages.push({id:nn(),role:"user",content:k,created_at:new Date(nt.update()).toISOString()}),(X=(Y=e.callbacks).onNewMessage)==null||X.call(Y,[...o.messages],"user");const le=await N(),fe=await H([...o.messages],le);return o.messages.push({id:nn(),role:"assistant",content:fe.result||"",created_at:new Date().toISOString(),context:fe.context,matches:fe.matches}),d.track("agent-message-send",{event:"success",messages:o.messages.length+1}),fe.result&&((ye=(ee=e.callbacks).onNewMessage)==null||ye.call(ee,[...o.messages],"answer"),d.track("agent-message-received",{latency:nt.get(!0),messages:o.messages.length})),fe}catch(le){throw((Re=o.messages[o.messages.length-1])==null?void 0:Re.role)==="assistant"&&o.messages.pop(),d.track("agent-message-send",{event:"error",messages:o.messages.length}),le}},rate(k,R,N){var X,ee,ye,Re;const H=o.messages.find(le=>le.id===k);if(o.chat){if(!H)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const Y=((X=H.matches)==null?void 0:X.map(le=>[le.document_id,le.id]))??[];return d.track("agent-rate",{event:N?"update":"create",thumb:R===1?"up":"down",knowledge_id:((ee=h.knowledge)==null?void 0:ee.id)??"",matches:Y,score:R}),N?l.updateRating(h.id,o.chat.id,N,{knowledge_id:((ye=h.knowledge)==null?void 0:ye.id)??"",message_id:k,matches:Y,score:R}):l.createRating(h.id,o.chat.id,{knowledge_id:((Re=h.knowledge)==null?void 0:Re.id)??"",message_id:k,matches:Y,score:R})},deleteRate(k){if(!o.chat)throw new Error("Chat is not initialized");return d.track("agent-rate-delete",{type:"text"}),l.deleteRating(h.id,o.chat.id,k)},async speak(k){var Y,X,ee;function R(){if(typeof k=="string"){if(!h.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:h.presenter.voice,input:k,ssml:!1}}if(k.type==="text"&&!k.provider){if(!h.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:h.presenter.voice,input:k.input,ssml:k.ssml}}return k}const N=R();if(d.track("agent-speak",N),nt.update(),o.messages&&N.type==="text"&&(o.messages.push({id:nn(),role:"assistant",content:N.input,created_at:new Date().toISOString()}),(X=(Y=e.callbacks).onNewMessage)==null||X.call(Y,[...o.messages],"answer")),fu(o.chatMode))return{duration:0,video_id:"",status:"success"};if(!o.streamingManager)throw new Error("Please connect to the agent first");return o.streamingManager.speak({script:N,metadata:{chat_id:(ee=o.chat)==null?void 0:ee.id,agent_id:h.id}})},interrupt:T}}function fl(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 pl=Object.defineProperty,gl=(n,e,t)=>e in n?pl(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,ca=(n,e,t)=>gl(n,typeof e!="symbol"?e+"":e,t);class Pe{constructor(){ca(this,"_locking"),ca(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 pe(n,e){if(!n)throw new Error(e)}const vl=34028234663852886e22,yl=-34028234663852886e22,bl=4294967295,kl=2147483647,Tl=-2147483648;function Zn(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>kl||n<Tl)throw new Error("invalid int 32: "+n)}function nr(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>bl||n<0)throw new Error("invalid uint 32: "+n)}function da(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>vl||n<yl))throw new Error("invalid float 32: "+n)}const ua=Symbol("@bufbuild/protobuf/enum-type");function Sl(n){const e=n[ua];return pe(e,"missing enum type on enum object"),e}function la(n,e,t,i){n[ua]=ha(e,t.map(r=>({no:r.no,name:r.name,localName:n[r.no]})))}function ha(n,e,t){const i=Object.create(null),r=Object.create(null),s=[];for(const c of e){const a=ma(c);s.push(a),i[c.name]=a,r[c.no]=a}return{typeName:n,values:s,findName(c){return i[c]},findNumber(c){return r[c]}}}function Cl(n,e,t){const i={};for(const r of e){const s=ma(r);i[s.localName]=s.no,i[s.no]=s.localName}return la(i,n,e),i}function ma(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class ir{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 El(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),c={[s]:function(a){n.util.initFields(this),n.util.initPartial(a,this)}}[s];return Object.setPrototypeOf(c.prototype,new ir),Object.assign(c,{runtime:n,typeName:e,fields:n.util.newFieldList(t),fromBinary(a,o){return new c().fromBinary(a,o)},fromJson(a,o){return new c().fromJson(a,o)},fromJsonString(a,o){return new c().fromJsonString(a,o)},equals(a,o){return n.util.equals(c,a,o)}}),c}function wl(){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 rr(n,e,t){for(let s=0;s<28;s=s+7){const c=n>>>s,a=!(!(c>>>7)&&e==0),o=(a?c|128:c)&255;if(t.push(o),!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 c=e>>>s,a=!!(c>>>7),o=(a?c|128:c)&255;if(t.push(o),!a)return}t.push(e>>>31&1)}}const ei=4294967296;function fa(n){const e=n[0]==="-";e&&(n=n.slice(1));const t=1e6;let i=0,r=0;function s(c,a){const o=Number(n.slice(c,a));r*=t,i=i*t+o,i>=ei&&(r=r+(i/ei|0),i=i%ei)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),e?ga(i,r):sr(i,r)}function _l(n,e){let t=sr(n,e);const i=t.hi&2147483648;i&&(t=ga(t.lo,t.hi));const r=pa(t.lo,t.hi);return i?"-"+r:r}function pa(n,e){if({lo:n,hi:e}=Rl(n,e),e<=2097151)return String(ei*e+n);const t=n&16777215,i=(n>>>24|e<<8)&16777215,r=e>>16&65535;let s=t+i*6777216+r*6710656,c=i+r*8147497,a=r*2;const o=1e7;return s>=o&&(c+=Math.floor(s/o),s%=o),c>=o&&(a+=Math.floor(c/o),c%=o),a.toString()+va(c)+va(s)}function Rl(n,e){return{lo:n>>>0,hi:e>>>0}}function sr(n,e){return{lo:n|0,hi:e|0}}function ga(n,e){return e=~e,n?n=~n+1:e+=1,sr(n,e)}const va=n=>{const e=String(n);return"0000000".slice(e.length)+e};function ya(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 Pl(){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 Il(){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"),c=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(o){const d=typeof o=="bigint"?o:BigInt(o);if(d>s||d<r)throw new Error("int64 invalid: ".concat(o));return d},uParse(o){const d=typeof o=="bigint"?o:BigInt(o);if(d>a||d<c)throw new Error("uint64 invalid: ".concat(o));return d},enc(o){return n.setBigInt64(0,this.parse(o),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},uEnc(o){return n.setBigInt64(0,this.uParse(o),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},dec(o,d){return n.setInt32(0,o,!0),n.setInt32(4,d,!0),n.getBigInt64(0,!0)},uDec(o,d){return n.setInt32(0,o,!0),n.setInt32(4,d,!0),n.getBigUint64(0,!0)}}}const t=r=>pe(/^-?[0-9]+$/.test(r),"int64 invalid: ".concat(r)),i=r=>pe(/^[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),fa(r)},uEnc(r){return typeof r!="string"&&(r=r.toString()),i(r),fa(r)},dec(r,s){return _l(r,s)},uDec(r,s){return pa(r,s)}}}const ue=Il();var w;(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"})(w||(w={}));var It;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(It||(It={}));function Ot(n,e,t){if(e===t)return!0;if(n==w.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 w.UINT64:case w.FIXED64:case w.INT64:case w.SFIXED64:case w.SINT64:return e==t}return!1}function rn(n,e){switch(n){case w.BOOL:return!1;case w.UINT64:case w.FIXED64:case w.INT64:case w.SFIXED64:case w.SINT64:return e==0?ue.zero:"0";case w.DOUBLE:case w.FLOAT:return 0;case w.BYTES:return new Uint8Array(0);case w.STRING:return"";default:return 0}}function ba(n,e){switch(n){case w.BOOL:return e===!1;case w.STRING:return e==="";case w.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}var be;(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"})(be||(be={}));class Ol{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(nr(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return Zn(e),ya(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){da(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){nr(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){Zn(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return Zn(e),e=(e<<1^e>>31)>>>0,ya(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),r=ue.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=ue.uEnc(e);return i.setInt32(0,r.lo,!0),i.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=ue.enc(e);return rr(t.lo,t.hi,this.buf),this}sint64(e){let t=ue.enc(e),i=t.hi>>31,r=t.lo<<1^i,s=(t.hi<<1|t.lo>>>31)^i;return rr(r,s,this.buf),this}uint64(e){let t=ue.uEnc(e);return rr(t.lo,t.hi,this.buf),this}}class Ml{constructor(e,t){this.varint64=wl,this.uint32=Pl,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 be.Varint:for(;this.buf[this.pos++]&128;);break;case be.Bit64:this.pos+=4;case be.Bit32:this.pos+=4;break;case be.LengthDelimited:let r=this.uint32();this.pos+=r;break;case be.StartGroup:for(;;){const[s,c]=this.tag();if(c===be.EndGroup){if(t!==void 0&&s!==t)throw new Error("invalid end group tag");break}this.skip(c,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 ue.dec(...this.varint64())}uint64(){return ue.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(e&1);return e=(e>>>1|(t&1)<<31)^i,t=t>>>1^i,ue.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 ue.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return ue.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 Dl(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 ka(n){const e=n.field.localName,t=Object.create(null);return t[e]=Al(n),[t,()=>t[e]]}function Al(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 rn(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 xl(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 bt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),ti=[];for(let n=0;n<bt.length;n++)ti[bt[n].charCodeAt(0)]=n;ti[45]=bt.indexOf("+"),ti[95]=bt.indexOf("/");const Ta={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,c=0;for(let a=0;a<n.length;a++){if(s=ti[n.charCodeAt(a)],s===void 0)switch(n[a]){case"=":r=0;case`
|
|
1
|
+
(function($,De){typeof exports=="object"&&typeof module<"u"?De(exports):typeof define=="function"&&define.amd?define(["exports"],De):($=typeof globalThis<"u"?globalThis:$||self,De($.index={}))})(this,function($){"use strict";var Mg=Object.defineProperty;var Dg=($,De,jt)=>De in $?Mg($,De,{enumerable:!0,configurable:!0,writable:!0,value:jt}):$[De]=jt;var Yn=($,De,jt)=>Dg($,typeof De!="symbol"?De+"":De,jt);class De extends Error{constructor({kind:t,description:i,error:r}){super(JSON.stringify({kind:t,description:i}));Yn(this,"kind");Yn(this,"description");Yn(this,"error");this.kind=t,this.description=i,this.error=r}}class jt extends De{constructor(e,t){super({kind:"ChatCreationFailed",description:`Failed to create ${t?"persistent":""} chat, mode: ${e}`})}}class Ls extends De{constructor(e){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${e}`})}}class Vt extends De{constructor(t,i){super({kind:"ValidationError",description:t});Yn(this,"key");this.key=i}}class Ns extends De{constructor(e){super({kind:"WSError",description:e})}}var Us=(n=>(n.TRIAL="trial",n.BASIC="basic",n.ENTERPRISE="enterprise",n.LITE="lite",n.ADVANCED="advanced",n))(Us||{}),Fs=(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))(Fs||{}),Bs=(n=>(n.Created="created",n.Started="started",n.Done="done",n.Error="error",n.Rejected="rejected",n.Ready="ready",n))(Bs||{}),js=(n=>(n.Unrated="Unrated",n.Positive="Positive",n.Negative="Negative",n))(js||{}),Se=(n=>(n.Functional="Functional",n.TextOnly="TextOnly",n.Maintenance="Maintenance",n.Playground="Playground",n.DirectPlayback="DirectPlayback",n.Off="Off",n))(Se||{}),Ne=(n=>(n.Embed="embed",n.Query="query",n.Partial="partial",n.Answer="answer",n.Transcribe="transcribe",n.Complete="done",n))(Ne||{}),Vs=(n=>(n.KnowledgeProcessing="knowledge/processing",n.KnowledgeIndexing="knowledge/indexing",n.KnowledgeFailed="knowledge/error",n.KnowledgeDone="knowledge/done",n))(Vs||{}),qs=(n=>(n.Knowledge="knowledge",n.Document="document",n.Record="record",n))(qs||{}),Ks=(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))(Ks||{}),Ji=(n=>(n.Clip="clip",n.Talk="talk",n.Expressive="expressive",n))(Ji||{});const au=n=>{switch(n){case"clip":return"clip";case"talk":return"talk";case"expressive":return"expressive";default:throw new Error(`Unknown video type: ${n}`)}};var Q=(n=>(n.Start="START",n.Stop="STOP",n))(Q||{}),et=(n=>(n.Strong="STRONG",n.Weak="WEAK",n.Unknown="UNKNOWN",n))(et||{}),Ce=(n=>(n.Idle="IDLE",n.Loading="LOADING",n.Talking="TALKING",n.ToolActive="TOOL_ACTIVE",n))(Ce||{}),te=(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.ToolCalling="tool/calling",n.ToolResult="tool/result",n))(te||{}),ae=(n=>(n.New="new",n.Fail="fail",n.Connected="connected",n.Connecting="connecting",n.Closed="closed",n.Completed="completed",n.Disconnecting="disconnecting",n.Disconnected="disconnected",n))(ae||{}),tt=(n=>(n.Legacy="legacy",n.Fluent="fluent",n))(tt||{}),Sn=(n=>(n.Livekit="livekit",n))(Sn||{}),Ws=(n=>(n.Amazon="amazon",n.AzureOpenAi="azure-openai",n.Microsoft="microsoft",n.Afflorithmics="afflorithmics",n.Elevenlabs="elevenlabs",n))(Ws||{}),Hs=(n=>(n.Public="public",n.Premium="premium",n.Private="private",n))(Hs||{});const ou=45*1e3,cu="X-Playground-Chat",Cn="https://api.d-id.com",du="wss://notifications.d-id.com",uu="79f81a83a67430be2bc0fd61042b8faa",lu=(...n)=>{},Js=n=>new Promise(e=>setTimeout(e,n)),nn=(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)},Gs=n=>n.type==="clip"&&n.presenter_id.startsWith("v2_")?"clip_v2":n.type,hu=n=>{switch(n.type){case"expressive":return"v4";case"clip":return"v3-pro";case"talk":return"v2"}},mu=n=>n.type==="talk"?n.source_url:n.presenter_id,Gi=n=>n===Ji.Expressive,fu=n=>[Se.TextOnly,Se.Playground,Se.Maintenance].includes(n),zs=n=>n&&[Se.DirectPlayback,Se.Off].includes(n);function pu(n,e){let t;return{promise:new Promise((r,s)=>{t=setTimeout(()=>s(new Error(e)),n)}),clear:()=>clearTimeout(t)}}async function zi(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:c}=pu(t.timeout,t.timeoutErrorMessage),a=n().finally(c);return await Promise.race([a,s])}catch(s){if(i=s,!t.shouldRetryFn(s)||r>=t.limit)throw s;await Js(t.delayMs),t.onRetry(s)}throw i}function $i(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=nn();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let gu=nn();function $s(n,e){if(n.type==="bearer")return`Bearer ${n.token}`;if(n.type==="basic")return`Basic ${"token"in n?n.token:btoa(`${n.username}:${n.password}`)}`;if(n.type==="key")return`Client-Key ${n.clientKey}.${$i(e)}_${gu}`;throw new Error(`Unknown auth type: ${n}`)}const vu=n=>zi(n,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:e=>e.status===429});function Qi(n,e=Cn,t,i){const r=async(s,c)=>{const{skipErrorHandler:a,...o}=c||{},d=await vu(()=>fetch(e+(s!=null&&s.startsWith("/")?s:`/${s}`),{...o,headers:{...o.headers,Authorization:$s(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:o,headers:d.headers}),l}return d.json()};return{get(s,c){return r(s,{...c,method:"GET"})},post(s,c,a){return r(s,{...a,body:JSON.stringify(c),method:"POST"})},delete(s,c,a){return r(s,{...a,body:JSON.stringify(c),method:"DELETE"})},patch(s,c,a){return r(s,{...a,body:JSON.stringify(c),method:"PATCH"})}}}function yu(n,e=Cn,t,i){const r=Qi(n,`${e}/agents`,t,i);return{create(s,c){return r.post("/",s,c)},getAgents(s,c){return r.get(`/${s?`?tag=${s}`:""}`,c).then(a=>a??[])},getById(s,c){return r.get(`/${s}`,c)},delete(s,c){return r.delete(`/${s}`,void 0,c)},update(s,c,a){return r.patch(`/${s}`,c,a)},newChat(s,c,a){return r.post(`/${s}/chat`,c,a)},chat(s,c,a,o){return r.post(`/${s}/chat/${c}`,a,o)},createRating(s,c,a,o){return r.post(`/${s}/chat/${c}/ratings`,a,o)},updateRating(s,c,a,o,d){return r.patch(`/${s}/chat/${c}/ratings/${a}`,o,d)},deleteRating(s,c,a,o){return r.delete(`/${s}/chat/${c}/ratings/${a}`,o)},getSTTToken(s,c){return r.get(`/${s}/stt-token`,c)}}}function bu(n){var r,s,c,a;const e=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",t=()=>{const o=navigator.platform;return o.toLowerCase().includes("win")?"Windows":o.toLowerCase().includes("mac")?"Mac OS X":o.toLowerCase().includes("linux")?"Linux":"Unknown"},i=n.presenter;return{$os:`${t()}`,isMobile:`${e()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:Gs(i),agentVoice:{voiceId:(s=(r=n.presenter)==null?void 0:r.voice)==null?void 0:s.voice_id,provider:(a=(c=n.presenter)==null?void 0:c.voice)==null?void 0:a.type}}}function ku(n){var t,i,r,s,c,a;const e=(t=n.llm)==null?void 0:t.prompt_customization;return{agentType:Gs(n.presenter),presenterType:hu(n.presenter),presenter:mu(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=(c=n.knowledge)==null?void 0:c.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 Tu=n=>n.reduce((e,t)=>e+t,0),Qs=n=>Tu(n)/n.length;function Su(n,e,t){var o,d,u;const{event:i,...r}=n,{template:s}=(e==null?void 0:e.llm)||{},{language:c}=((o=e==null?void 0:e.presenter)==null?void 0:o.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:c}},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 Ys(n){"requestIdleCallback"in window?requestIdleCallback(n,{timeout:2e3}):setTimeout(n,0)}const Cu="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function Eu(n){const e=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",t={};return{token:n.token||"testKey",distinct_id:$i(n.externalId),agentId:n.agentId,additionalProperties:{id:$i(n.externalId),...n.mixpanelAdditionalProperties||{}},isEnabled:n.isEnabled??!0,getRandom:nn,enrich(i){this.additionalProperties={...this.additionalProperties,...i}},async track(i,r,s){if(!this.isEnabled)return Promise.resolve();const{audioPath:c,...a}=r||{},o=s||Date.now(),d={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:i,properties:{...this.additionalProperties,...a,agentId:this.agentId,source:e,token:this.token,time:o,$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(Cu,d).catch(u=>console.error("Analytics tracking error:",u)),Promise.resolve()},linkTrack(i,r,s,c){t[i]||(t[i]={events:{},resolvedDependencies:[]}),c.includes(s)||c.push(s);const a=t[i];if(a.events[s]={props:r},a.resolvedDependencies.push(s),c.every(d=>a.resolvedDependencies.includes(d))){const d=c.reduce((u,l)=>a.events[l]?{...u,...a.events[l].props}:u,{});this.track(i,d),a.resolvedDependencies=a.resolvedDependencies.filter(u=>!c.includes(u)),c.forEach(u=>{delete a.events[u]})}}}}function Yi(){let n=0;return{reset:()=>n=0,update:()=>n=Date.now(),get:(e=!1)=>e?Date.now()-n:n}}const nt=Yi(),Xi=Yi(),Xs=Yi();function Zs(n){return n===Se.Playground?{headers:{[cu]:"true"}}:{}}async function ea(n,e,t,i,r=!1,s){try{return!s&&!zs(i)&&(s=await e.newChat(n.id,{persist:r},Zs(i)),t.track("agent-chat",{event:"created",chatId:s.id,mode:i})),{chat:s,chatMode:(s==null?void 0:s.chat_mode)??i}}catch(c){throw wu(c)==="InsufficientCreditsError"?new Error("InsufficientCreditsError"):new Error("Cannot create new chat")}}const wu=n=>{try{const e=JSON.parse(n.message);return e==null?void 0:e.kind}catch{return"UnknownError"}};function _u(n){return n&&n.length>0?n:[]}function Ru(n,e,t,i){const r=Qi(n,`${e}/v2/agents/${t}`,i);return{async createStream(s){return r.post("/sessions",s)}}}const ta=(n,e)=>(t,i)=>n&&console.log(`[${e}] ${t}`,i??""),Pu={[te.ChatAnswer]:Ne.Answer,[te.ChatPartial]:Ne.Partial};function Iu(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 Ou(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 Mu(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,c=i.nominated===!0;r>0&&(c||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 na(n,e,t){const i=n.map((o,d)=>d===0?t?{timestamp:o.timestamp,duration:0,rtt:o.rtt,bytesReceived:o.bytesReceived-t.bytesReceived,bitrate:(o.bytesReceived-t.bytesReceived)*8/(e/1e3),packetsReceived:o.packetsReceived-t.packetsReceived,packetsLost:o.packetsLost-t.packetsLost,framesDropped:o.framesDropped-t.framesDropped,framesDecoded:o.framesDecoded-t.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-t.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-t.jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-t.jitterBufferDelay)/(o.jitterBufferEmittedCount-t.jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-t.freezeCount,freezeDuration:o.freezeDuration-t.freezeDuration}:{timestamp:o.timestamp,rtt:o.rtt,duration:0,bytesReceived:o.bytesReceived,bitrate:o.bytesReceived*8/(e/1e3),packetsReceived:o.packetsReceived,packetsLost:o.packetsLost,framesDropped:o.framesDropped,framesDecoded:o.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount,avgJitterDelayInInterval:o.jitterBufferDelay/o.jitterBufferEmittedCount,framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount,freezeDuration:o.freezeDuration}:{timestamp:o.timestamp,duration:e*d/1e3,rtt:o.rtt,bytesReceived:o.bytesReceived-n[d-1].bytesReceived,bitrate:(o.bytesReceived-n[d-1].bytesReceived)*8/(e/1e3),packetsReceived:o.packetsReceived-n[d-1].packetsReceived,packetsLost:o.packetsLost-n[d-1].packetsLost,framesDropped:o.framesDropped-n[d-1].framesDropped,framesDecoded:o.framesDecoded-n[d-1].framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-n[d-1].jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-n[d-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-n[d-1].jitterBufferDelay)/(o.jitterBufferEmittedCount-n[d-1].jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-n[d-1].freezeCount,freezeDuration:o.freezeDuration-n[d-1].freezeDuration}),r=Ou(i),s=r.reduce((o,d)=>o+(d.causes.includes("low fps")?1:0),0),c=i.filter(o=>!!o.avgJitterDelayInInterval).map(o=>o.avgJitterDelayInInterval),a=i.filter(o=>!!o.rtt).map(o=>o.rtt);return{webRTCStats:{anomalies:r,minRtt:Math.min(...a),avgRtt:Qs(a),maxRtt:Math.max(...a),aggregateReport:Iu(n[0],n[n.length-1],s),minJitterDelayInInterval:Math.min(...c),maxJitterDelayInInterval:Math.max(...c),avgJitterDelayInInterval:Qs(c)},codec:n[0].codec,resolution:`${n[0].frameWidth}x${n[0].frameHeight}`}}const Xn=100,Du=Math.max(Math.ceil(400/Xn),1),Au=.25,xu=.28;function Lu(){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 c=s.jitterBufferDelay,a=s.jitterBufferEmittedCount;if(t&&a>t){const u=c-e,l=a-t;i=u/l}e=c,t=a;const o=s.framesDecoded,d=o-n>0;return n=o,{isReceiving:d,avgJitterDelayInInterval:i,freezeCount:s.freezeCount}}return{isReceiving:!1,avgJitterDelayInInterval:i}}}function ia(n,e,t,i,r){let s=null,c=[],a,o=0,d=!1,u=et.Unknown,l=et.Unknown,h=0,f=0;const y=Lu();async function g(){const C=await n();if(!C)return;const{isReceiving:T,avgJitterDelayInInterval:_,freezeCount:M}=y(C),v=Mu(C);if(T)o=0,h=M-f,l=_<Au?et.Strong:_>xu&&h>1?et.Weak:u,l!==u&&(r==null||r(l),u=l,f+=h,h=0),d||(i==null||i(Q.Start),a=c[c.length-1],c=[],d=!0),c.push(v);else if(d&&(o++,o>=Du)){const b=na(c,Xn,a);i==null||i(Q.Stop,b),e()||t(),f=M,d=!1}}return{start:()=>{s||(s=setInterval(g,Xn))},stop:()=>{s&&(clearInterval(s),s=null)},getReport:()=>na(c,Xn,a)}}const ra=2e4;async function Nu(){try{return await Promise.resolve().then(()=>Eg)}catch{throw new Error("LiveKit client is required for this streaming manager. Please install it using: npm install livekit-client")}}const Uu={excellent:et.Strong,good:et.Strong,poor:et.Weak,lost:et.Unknown,unknown:et.Unknown},En=JSON.stringify({kind:"InternalServerError",description:"Stream Error"});var Zi=(n=>(n.Chat="lk.chat",n.Speak="did.speak",n.Interrupt="did.interrupt",n))(Zi||{});function er(n,e,t){var i,r;throw e("Failed to connect to LiveKit room:",n),(i=t.onConnectionStateChange)==null||i.call(t,ae.Fail,"internal:init-error"),(r=t.onError)==null||r.call(t,n,{sessionId:""}),n}async function Fu(n,e,t){var nu;const i=ta(t.debug||!1,"LiveKitStreamingManager"),{Room:r,RoomEvent:s,ConnectionState:c,Track:a}=await Nu(),{callbacks:o,auth:d,baseURL:u,analytics:l}=t;let h=null,f=!1;const y=tt.Fluent;let g=null;const C={isPublishing:!1,publication:null},T={isPublishing:!1,publication:null};let _=null,M=null,v=!1;h=new r({adaptiveStream:!1,dynacast:!0});let b=null,S=Ce.Idle,L=!0;const F=Ru(d,u||Cn,n,o.onError);let x,k,R;try{const P=await F.createStream({transport_provider:Sn.Livekit,chat_persist:e.chat_persist??!0}),{id:U,session_token:q,session_url:K}=P;(nu=o.onStreamCreated)==null||nu.call(o,{session_id:U,stream_id:U,agent_id:n}),x=U,k=q,R=K,await h.prepareConnection(R,k)}catch(P){er(P,i,o)}if(!R||!k||!x)return Promise.reject(new Error("Failed to initialize LiveKit stream"));h.on(s.ConnectionStateChanged,H).on(s.ConnectionQualityChanged,Y).on(s.ParticipantConnected,X).on(s.ParticipantDisconnected,ee).on(s.TrackSubscribed,le).on(s.TrackUnsubscribed,fe).on(s.DataReceived,Tn).on(s.MediaDevicesError,Ki).on(s.TranscriptionReceived,N).on(s.EncryptionError,Wi).on(s.TrackSubscriptionFailed,Hi);function N(P,U){var q;U!=null&&U.isLocal&&(nt.update(),S===Ce.Talking&&((q=o.onInterruptDetected)==null||q.call(o,{type:"audio"}),S=Ce.Idle))}try{await h.connect(R,k),i("LiveKit room joined successfully"),b=setTimeout(()=>{var P;i(`Track subscription timeout - no track subscribed within ${ra/1e3} seconds after connect`),b=null,l.track("connectivity-error",{error:"Track subscription timeout",sessionId:x}),(P=o.onError)==null||P.call(o,new Error("Track subscription timeout"),{sessionId:x}),xs("internal:track-subscription-timeout")},ra)}catch(P){er(P,i,o)}l.enrich({"stream-type":y});function H(P){var U,q,K,ce;switch(i("Connection state changed:",P),P){case c.Connecting:i("CALLBACK: onConnectionStateChange(Connecting)"),(U=o.onConnectionStateChange)==null||U.call(o,ae.Connecting,"livekit:connecting");break;case c.Connected:i("LiveKit room connected successfully"),f=!0;break;case c.Disconnected:i("LiveKit room disconnected"),f=!1,v=!1,C.publication=null,T.publication=null,(q=o.onConnectionStateChange)==null||q.call(o,ae.Disconnected,"livekit:disconnected");break;case c.Reconnecting:i("LiveKit room reconnecting..."),(K=o.onConnectionStateChange)==null||K.call(o,ae.Connecting,"livekit:reconnecting");break;case c.SignalReconnecting:i("LiveKit room signal reconnecting..."),(ce=o.onConnectionStateChange)==null||ce.call(o,ae.Connecting,"livekit:signal-reconnecting");break}}function Y(P,U){var q;i("Connection quality:",P),U!=null&&U.isLocal&&((q=o.onConnectivityStateChange)==null||q.call(o,Uu[P]))}function X(P){i("Participant connected:",P.identity)}function ee(P){i("Participant disconnected:",P.identity),xs("livekit:participant-disconnected")}function ye(){var P;M!==Q.Start&&(i("CALLBACK: onVideoStateChange(Start)"),M=Q.Start,(P=o.onVideoStateChange)==null||P.call(o,Q.Start))}function Re(P){var U;M!==Q.Stop&&(i("CALLBACK: onVideoStateChange(Stop)"),M=Q.Stop,(U=o.onVideoStateChange)==null||U.call(o,Q.Stop,P))}function le(P,U,q){var ce,de,Ge;i(`Track subscribed: ${P.kind} from ${q.identity}`);const K=P.mediaStreamTrack;if(!K){i(`No mediaStreamTrack available for ${P.kind}`);return}g?(g.addTrack(K),i(`Added ${P.kind} track to shared MediaStream`)):(g=new MediaStream([K]),i(`Created shared MediaStream with ${P.kind} track`)),P.kind==="video"&&((ce=o.onStreamReady)==null||ce.call(o),i("CALLBACK: onSrcObjectReady"),(de=o.onSrcObjectReady)==null||de.call(o,g),v||(v=!0,i("CALLBACK: onConnectionStateChange(Connected)"),(Ge=o.onConnectionStateChange)==null||Ge.call(o,ae.Connected,"livekit:track-subscribed")),_=ia(()=>P.getRTCStatsReport(),()=>f,lu,(Me,Bt)=>{i(`Video state change: ${Me}`),Me===Q.Start?(b&&(clearTimeout(b),b=null,i("Track subscription timeout cleared")),ye()):Me===Q.Stop&&Re(Bt)}),_.start())}function fe(P,U,q){i(`Track unsubscribed: ${P.kind} from ${q.identity}`),P.kind==="video"&&(Re(_==null?void 0:_.getReport()),_==null||_.stop(),_=null)}function Oe(P,U){var K;const q=Pu[P];q&&((K=o.onMessage)==null||K.call(o,q,{event:q,...U}))}function Je(P,U){var q,K,ce;if(P===te.ToolCalling){S=Ce.ToolActive,(q=o.onAgentActivityStateChange)==null||q.call(o,Ce.ToolActive),(K=o.onToolEvent)==null||K.call(o,te.ToolCalling,U);return}P===te.ToolResult&&((ce=o.onToolEvent)==null||ce.call(o,te.ToolResult,U))}function j(P,U){var q,K,ce,de;if(L=((q=U.metadata)==null?void 0:q.interruptible)!==!1,(K=o.onInterruptibleChange)==null||K.call(o,L),P===te.StreamVideoCreated){S=Ce.Talking,(ce=o.onAgentActivityStateChange)==null||ce.call(o,Ce.Talking);return}L&&(S=Ce.Idle,(de=o.onAgentActivityStateChange)==null||de.call(o,Ce.Idle))}function B(P,U){var de,Ge,Me,Bt;const q=((Ge=(de=_==null?void 0:_.getReport())==null?void 0:de.webRTCStats)==null?void 0:Ge.avgRtt)??0,K=q>0?Math.round(q/2*1e3):0,ce={...U,downstreamNetworkLatency:K};t.debug&&((Me=U==null?void 0:U.metadata)!=null&&Me.sentiment)&&(ce.sentiment={id:U.metadata.sentiment.id,name:U.metadata.sentiment.sentiment}),(Bt=o.onMessage)==null||Bt.call(o,P,ce),j(P,U)}function ie(P,U){var q;(q=o.onMessage)==null||q.call(o,Ne.Transcribe,{event:Ne.Transcribe,...U}),queueMicrotask(()=>{var K;(K=o.onAgentActivityStateChange)==null||K.call(o,Ce.Loading)})}const Le={[te.ChatAnswer]:Oe,[te.ChatPartial]:Oe,[te.ToolCalling]:Je,[te.ToolResult]:Je,[te.StreamVideoCreated]:B,[te.StreamVideoDone]:B,[te.StreamVideoError]:B,[te.StreamVideoRejected]:B,[te.ChatAudioTranscribed]:ie};function Tn(P,U,q,K){const ce=new TextDecoder().decode(P);try{const de=JSON.parse(ce),Ge=K||de.subject;if(i("Data received:",{subject:Ge,data:de}),!Ge)return;const Me=Le[Ge];Me==null||Me(Ge,de)}catch(de){i("Failed to parse data channel message:",de)}}function Ki(P){var U;i("Media devices error:",P),(U=o.onError)==null||U.call(o,new Error(En),{sessionId:x})}function Wi(P){var U;i("Encryption error:",P),(U=o.onError)==null||U.call(o,new Error(En),{sessionId:x})}function Hi(P,U,q){i("Track subscription failed:",{trackSid:P,participant:U,reason:q})}function wg(P,U,q){for(const[K,ce]of q)if(ce.source===U&&ce.track){const de=ce.track.mediaStreamTrack;if(de===P||(de==null?void 0:de.id)===P.id)return ce}return null}async function eu(P,U,q,K,ce,de){var iu,ru,su;if(!f||!h)throw i(`Room is not connected, cannot publish ${K} stream`),new Error("Room is not connected");if(P.isPublishing){i(`${K} publish already in progress, skipping`);return}const Ge=q(U);if(Ge.length===0)throw new Error(`No ${K} track found in the provided MediaStream`);const Me=Ge[0],Bt=wg(Me,K,ce());if(Bt){i(`${K} track is already published, skipping`,{trackId:Me.id,publishedTrackId:(ru=(iu=Bt.track)==null?void 0:iu.mediaStreamTrack)==null?void 0:ru.id}),P.publication=Bt;return}if((su=P.publication)!=null&&su.track){const tn=P.publication.track.mediaStreamTrack;tn!==Me&&(tn==null?void 0:tn.id)!==Me.id&&(i(`Unpublishing existing ${K} track before publishing new one`),await de())}i(`Publishing ${K} track from provided MediaStream`,{trackId:Me.id}),P.isPublishing=!0;try{P.publication=await h.localParticipant.publishTrack(Me,{source:K}),i(`${K} track published successfully`,{trackSid:P.publication.trackSid})}catch(tn){throw i(`Failed to publish ${K} track:`,tn),tn}finally{P.isPublishing=!1}}async function tu(P,U){if(!(!P.publication||!P.publication.track))try{h&&(await h.localParticipant.unpublishTrack(P.publication.track,!1),i(`${U} track unpublished`))}catch(q){i(`Error unpublishing ${U} track:`,q)}finally{P.publication=null}}async function _g(P){return eu(C,P,U=>U.getAudioTracks(),a.Source.Microphone,()=>h.localParticipant.audioTrackPublications,Ms)}async function Ms(){return tu(C,"Microphone")}async function Rg(P){return eu(T,P,U=>U.getVideoTracks(),a.Source.Camera,()=>h.localParticipant.videoTrackPublications,Ds)}async function Ds(){return tu(T,"Camera")}function Pg(){g&&(g.getTracks().forEach(P=>P.stop()),g=null)}async function As(P,U){var q,K;if(!f||!h){i("Room is not connected for sending messages"),(q=o.onError)==null||q.call(o,new Error(En),{sessionId:x});return}try{await h.localParticipant.sendText(P,{topic:U}),i("Message sent successfully:",P)}catch(ce){i("Failed to send message:",ce),(K=o.onError)==null||K.call(o,new Error(En),{sessionId:x})}}async function Ig(P){var U;try{const K=JSON.parse(P).topic;return As("",K)}catch(q){i("Failed to send data channel message:",q),(U=o.onError)==null||U.call(o,new Error(En),{sessionId:x})}}function Og(P){return As(P,"lk.chat")}async function xs(P){var U,q;b&&(clearTimeout(b),b=null),h&&((U=o.onConnectionStateChange)==null||U.call(o,ae.Disconnecting,P),await Promise.all([Ms(),Ds()]),await h.disconnect()),Pg(),f=!1,v=!1,(q=o.onAgentActivityStateChange)==null||q.call(o,Ce.Idle),S=Ce.Idle}return{speak(P){const U=typeof P=="string"?P:JSON.stringify(P);return As(U,"did.speak")},disconnect:()=>xs("user:disconnect"),async reconnect(){var P,U;if((h==null?void 0:h.state)===c.Connected){i("Room is already connected");return}if(!h||!R||!k)throw i("Cannot reconnect: missing room, URL or token"),new Error("Cannot reconnect: session not available");i("Reconnecting to LiveKit room, state:",h.state),v=!1,(P=o.onConnectionStateChange)==null||P.call(o,ae.Connecting,"user:reconnect");try{if(await h.connect(R,k),i("Room reconnected"),f=!0,h.remoteParticipants.size===0){if(i("Waiting for agent to join..."),!await new Promise(K=>{const ce=setTimeout(()=>{h==null||h.off(s.ParticipantConnected,de),K(!1)},5e3),de=()=>{clearTimeout(ce),h==null||h.off(s.ParticipantConnected,de),K(!0)};h==null||h.on(s.ParticipantConnected,de)}))throw i("Agent did not join within timeout"),await h.disconnect(),new Error("Agent did not rejoin the room");i("Agent joined, reconnection successful")}}catch(q){throw i("Failed to reconnect:",q),(U=o.onConnectionStateChange)==null||U.call(o,ae.Fail,"user:reconnect-failed"),q}},sendDataChannelMessage:Ig,sendTextMessage:Og,publishMicrophoneStream:_g,unpublishMicrophoneStream:Ms,publishCameraStream:Rg,unpublishCameraStream:Ds,sessionId:x,streamId:x,streamType:y,interruptAvailable:!0,isInterruptible:L,triggersAvailable:!1}}const Bu=Object.freeze(Object.defineProperty({__proto__:null,DataChannelTopic:Zi,createLiveKitStreamingManager:Fu,handleInitError:er},Symbol.toStringTag,{value:"Module"}));function ju(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!==tt.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!t)throw new Error("No active video to interrupt")}async function Vu(n,e){const t={type:te.StreamInterrupt,videoId:e,timestamp:Date.now()};n.sendDataChannelMessage(JSON.stringify(t))}async function qu(n){const e={topic:Zi.Interrupt};n.sendDataChannelMessage(JSON.stringify(e))}function Ku(n){return new Promise((e,t)=>{const{callbacks:i,host:r,auth:s,externalId:c}=n,{onMessage:a=null,onOpen:o=null,onClose:d=null,onError:u=null}=i||{},l=new WebSocket(`${r}?authorization=${encodeURIComponent($s(s,c))}`);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=>{o==null||o(h),e(l)}})}async function Wu(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 Ku(n)}catch(r){if(i===e)throw r;await Js(i*500)}return t}async function Hu(n,e,t,i){const r=t!=null&&t.onMessage?[t.onMessage]:[],s=await Wu({auth:n,host:e,externalId:i,callbacks:{onError:c=>{var a;return(a=t.onError)==null?void 0:a.call(t,new Ns(c))},onMessage(c){const a=JSON.parse(c.data);r.forEach(o=>o(a.event,a))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:c=>r.push(c)}}function Ju(n){if(n.answer!==void 0)return n.answer;let e=0,t="";for(;e in n;)t+=n[e++];return t}function Gu(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 zu(n,e,t,i,r){if(n===Ne.Transcribe&&e.content){Gu(e,i,r);return}if(!(n===Ne.Partial||n===Ne.Answer))return;const s=i.messages[i.messages.length-1];let c;if(s!=null&&s.transcribed&&s.role==="user")n===Ne.Answer&&e.content,c={id:e.id||`assistant-${Date.now()}`,role:e.role||"assistant",content:e.content||"",created_at:e.created_at||new Date().toISOString()},i.messages.push(c);else if((s==null?void 0:s.role)==="assistant")c=s;else return;const{content:a,sequence:o}=e;n===Ne.Partial?t[o]=a:t.answer=a;const d=Ju(t);(c.content!==d||n===Ne.Answer)&&(c.content=d,r==null||r([...i.messages],n))}function $u(n,e,t,i,r){let s={};const c=()=>s={};let a="answer";const o=(d,u)=>{var l,h;u==="user"&&c(),a=u,(h=(l=t.callbacks).onNewMessage)==null||h.call(l,d,u)};return{clearQueue:c,onMessage:(d,u)=>{var l,h;if("content"in u){const f=d===te.ChatAnswer?Ne.Answer:d===te.ChatAudioTranscribed?Ne.Transcribe:d;zu(f,u,s,e,o),f===Ne.Answer&&n.track("agent-message-received",{content:u.content,messages:e.messages.length,mode:e.chatMode})}else{const f=te,y=[f.StreamVideoDone,f.StreamVideoError,f.StreamVideoRejected],g=[f.StreamFailed,f.StreamVideoError,f.StreamVideoRejected],C=Su(u,i,{mode:e.chatMode});if(d=d,d===f.StreamVideoCreated&&(n.linkTrack("agent-video",C,f.StreamVideoCreated,["start"]),u.sentiment)){const T=e.messages[e.messages.length-1];if((T==null?void 0:T.role)==="assistant"){const _={...T,sentiment:u.sentiment};e.messages[e.messages.length-1]=_,o==null||o([...e.messages],a)}}if(y.includes(d)){const T=d.split("/")[1];g.includes(d)?n.track("agent-video",{...C,event:T}):n.linkTrack("agent-video",{...C,event:T},d,["done"])}g.includes(d)&&((h=(l=t.callbacks).onError)==null||h.call(l,new Error(`Stream failed with event ${d}`),{data:u})),u.event===f.StreamDone&&r()}}}}function Qu(n,e,t,i){const r=Qi(n,`${e}/agents/${t}`,i);return{createStream(s,c){return r.post("/streams",s,{signal:c})},startConnection(s,c,a,o){return r.post(`/streams/${s}/sdp`,{session_id:a,answer:c},{signal:o})},addIceCandidate(s,c,a,o){return r.post(`/streams/${s}/ice`,{session_id:a,...c},{signal:o})},sendStreamRequest(s,c,a){return r.post(`/streams/${s}`,{session_id:c,...a})},close(s,c){return r.delete(`/streams/${s}`,{session_id:c})}}}const Yu=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function sa(n){switch(n){case"connected":return ae.Connected;case"checking":return ae.Connecting;case"failed":return ae.Fail;case"new":return ae.New;case"closed":return ae.Closed;case"disconnected":return ae.Disconnected;case"completed":return ae.Completed;default:return ae.New}}const Xu=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 Zu({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:i,log:r}){n===Q.Start&&e===Q.Start?(r("CALLBACK: onVideoStateChange(Start)"),t==null||t(Q.Start)):n===Q.Stop&&e===Q.Stop&&(r("CALLBACK: onVideoStateChange(Stop)"),t==null||t(Q.Stop,i))}function el({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:r,log:s}){n===Q.Start?(s("CALLBACK: onVideoStateChange(Start)"),t==null||t(Q.Start)):n===Q.Stop&&(s("CALLBACK: onVideoStateChange(Stop)"),t==null||t(Q.Stop,r)),e===Q.Start?i==null||i(Ce.Talking):e===Q.Stop&&(i==null||i(Ce.Idle))}function aa({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,streamType:r,report:s,log:c}){r===tt.Legacy?Zu({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,report:s,log:c}):r===tt.Fluent&&el({statsSignal:n,dataChannelSignal:e,onVideoStateChange:t,onAgentActivityStateChange:i,report:s,log:c})}async function tl(n,e,{debug:t=!1,callbacks:i,auth:r,baseURL:s=Cn,analytics:c},a){var Je;const o=ta(t,"WebRTCStreamingManager"),d=Xu(o);let u=!1,l=!1,h=Q.Stop,f=Q.Stop;const{startConnection:y,sendStreamRequest:g,close:C,createStream:T,addIceCandidate:_}=Qu(r,s,n,i.onError),{id:M,offer:v,ice_servers:b,session_id:S,fluent:L,interrupt_enabled:F,triggers_enabled:x}=await T(e,a);(Je=i.onStreamCreated)==null||Je.call(i,{stream_id:M,session_id:S,agent_id:n});const k=new Yu({iceServers:b}),R=k.createDataChannel("JanusDataChannel");if(!S)throw new Error("Could not create session_id");const N=L?tt.Fluent:tt.Legacy;c.enrich({"stream-type":N});const H=e.stream_warmup&&!L,Y=()=>u,X=()=>{var j;u=!0,l&&(o("CALLBACK: onConnectionStateChange(Connected)"),(j=i.onConnectionStateChange)==null||j.call(i,ae.Connected))},ee=ia(()=>k.getStats(),Y,X,(j,B)=>aa({statsSignal:f=j,dataChannelSignal:N===tt.Legacy?h:void 0,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,report:B,streamType:N,log:o}),j=>{var B;return(B=i.onConnectivityStateChange)==null?void 0:B.call(i,j)});ee.start(),k.onicecandidate=j=>{var B;o("peerConnection.onicecandidate",j);try{j.candidate&&j.candidate.sdpMid&&j.candidate.sdpMLineIndex!==null?_(M,{candidate:j.candidate.candidate,sdpMid:j.candidate.sdpMid,sdpMLineIndex:j.candidate.sdpMLineIndex},S,a):_(M,{candidate:null},S,a)}catch(ie){(B=i.onError)==null||B.call(i,ie,{streamId:M})}},R.onopen=()=>{l=!0,(!H||u)&&X()};const ye=j=>{var B;(B=i.onVideoIdChange)==null||B.call(i,j)};function Re(j,B){if(j===te.StreamStarted&&typeof B=="object"&&"metadata"in B){const ie=B.metadata;ye(ie.videoId)}j===te.StreamDone&&ye(null),h=j===te.StreamStarted?Q.Start:Q.Stop,aa({statsSignal:N===tt.Legacy?f:void 0,dataChannelSignal:h,onVideoStateChange:i.onVideoStateChange,onAgentActivityStateChange:i.onAgentActivityStateChange,streamType:N,log:o})}function le(j,B){var Le;const ie=typeof B=="string"?B:B==null?void 0:B.metadata;ie&&c.enrich({streamMetadata:ie}),(Le=i.onStreamReady)==null||Le.call(i)}const fe={[te.StreamStarted]:Re,[te.StreamDone]:Re,[te.StreamReady]:le};R.onmessage=j=>{var Le;const{subject:B,data:ie}=d(j.data);(Le=fe[B])==null||Le.call(fe,B,ie)},k.oniceconnectionstatechange=()=>{var B;o("peerConnection.oniceconnectionstatechange => "+k.iceConnectionState);const j=sa(k.iceConnectionState);j!==ae.Connected&&((B=i.onConnectionStateChange)==null||B.call(i,j))},k.ontrack=j=>{var B;o("peerConnection.ontrack",j),o("CALLBACK: onSrcObjectReady"),(B=i.onSrcObjectReady)==null||B.call(i,j.streams[0])},await k.setRemoteDescription(v),o("set remote description OK");const Oe=await k.createAnswer();return o("create answer OK"),await k.setLocalDescription(Oe),o("set local description OK"),await y(M,Oe,S,a),o("start connection OK"),{speak(j){return g(M,S,j)},async disconnect(){var j;if(M){const B=sa(k.iceConnectionState);if(k){if(B===ae.New){ee.stop();return}k.close(),k.oniceconnectionstatechange=null,k.onnegotiationneeded=null,k.onicecandidate=null,k.ontrack=null}try{B===ae.Connected&&await C(M,S).catch(ie=>{})}catch(ie){o("Error on close stream connection",ie)}(j=i.onAgentActivityStateChange)==null||j.call(i,Ce.Idle),ee.stop()}},sendDataChannelMessage(j){var B,ie;if(!u||R.readyState!=="open"){o("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:M});return}try{R.send(j)}catch(Le){o("Error sending data channel message",Le),(ie=i.onError)==null||ie.call(i,Le,{streamId:M})}},sessionId:S,streamId:M,streamType:N,interruptAvailable:F??!1,isInterruptible:!0,triggersAvailable:x??!1}}var tr=(n=>(n.V1="v1",n.V2="v2",n))(tr||{});async function nl(n,e,t,i){const r=n.id;switch(e.version){case"v1":{const{version:s,...c}=e;return tl(r,c,t,i)}case"v2":{const{version:s,...c}=e;switch(c.transport_provider){case Sn.Livekit:const{createLiveKitStreamingManager:a}=await Promise.resolve().then(()=>Bu);return a(r,c,t);default:throw new Error(`Unsupported transport provider: ${c.transport_provider}`)}}default:throw new Error(`Invalid stream version: ${e.version}`)}}const il="cht";function rl(){return{transport_provider:Sn.Livekit}}function sl(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 al(n,e){return Gi(n.presenter.type)?{version:tr.V2,...rl()}:{version:tr.V1,...sl(e)}}function ol(n,e,t){t.track("agent-connection-state-change",{state:n,...e&&{reason:e}})}function cl(n,e,t,i,r){r===tt.Fluent?dl(n,e,t,i,r):ll(n,e,t,i,r)}function dl(n,e,t,i,r){n===Q.Start?i.track("stream-session",{event:"start","stream-type":r}):n===Q.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 ul(n,e,t,i){nt.get()<=0||(n===Q.Start?t.linkTrack("agent-video",{event:"start",latency:nt.get(!0),"stream-type":i},"start",[te.StreamVideoCreated]):n===Q.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",[te.StreamVideoDone]))}function ll(n,e,t,i,r){nt.get()<=0||(n===Q.Start?i.linkTrack("agent-video",{event:"start",latency:nt.get(!0),"stream-type":r},"start",[te.StreamVideoCreated]):n===Q.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",[te.StreamVideoDone]))}function oa(n,e,t,i){return nt.reset(),Xs.update(),new Promise(async(r,s)=>{try{let c,a=!1;const o=al(n,e);t.enrich({"stream-version":o.version.toString()}),c=await nl(n,o,{...e,analytics:t,callbacks:{...e.callbacks,onConnectionStateChange:(d,u)=>{var l,h;(h=(l=e.callbacks).onConnectionStateChange)==null||h.call(l,d),ol(d,u,t),d===ae.Connected&&(c?r(c):a=!0)},onVideoStateChange:(d,u)=>{var l,h;(h=(l=e.callbacks).onVideoStateChange)==null||h.call(l,d),cl(d,n,u,t,c.streamType)},onAgentActivityStateChange:d=>{var u,l;(l=(u=e.callbacks).onAgentActivityStateChange)==null||l.call(u,d),d===Ce.Talking?Xi.update():Xi.reset(),ul(d===Ce.Talking?Q.Start:Q.Stop,n,t,c.streamType)},onStreamReady:()=>{const d=Xs.get(!0);t.track("agent-chat",{event:"ready",latency:d})}}},i),a&&r(c)}catch(c){s(c)}})}async function hl(n,e,t,i,r){var u,l,h,f;const s=async()=>{if(Gi(n.presenter.type)){const y=await oa(n,e,i),g=`${il}_${y.sessionId}`,C=new Date().toISOString();return{chatResult:{chatMode:Se.Functional,chat:{id:g,agent_id:n.id,owner_id:n.owner_id??"",created:C,modified:C,agent_id__created_at:C,agent_id__modified_at:C,chat_mode:Se.Functional,messages:[]}},streamingManager:y}}else{const y=new AbortController,g=y.signal;let C;try{const T=ea(n,t,i,e.mode,e.persistentChat,r),_=oa(n,e,i,g).then(b=>(C=b,b)),[M,v]=await Promise.all([T,_]);return{chatResult:M,streamingManager:v}}catch(T){throw y.abort(),C&&await C.disconnect().catch(()=>{}),T}}},{chatResult:c,streamingManager:a}=await s(),{chat:o,chatMode:d}=c;return d&&e.mode!==void 0&&d!==e.mode&&(e.mode=d,(l=(u=e.callbacks).onModeChange)==null||l.call(u,d),d!==Se.Functional)?((f=(h=e.callbacks).onError)==null||f.call(h,new Ls(d)),a==null||a.disconnect(),{chat:o}):{chat:o,streamingManager:a}}async function ml(n,e){var S,L,F,x;let t=!0,i=null;const r=e.mixpanelKey||uu,s=e.wsURL||du,c=e.baseURL||Cn,a=e.mode||Se.Functional,o={messages:[],chatMode:a},d=Eu({token:r,agentId:n,isEnabled:e.enableAnalitics,externalId:e.externalId,mixpanelAdditionalProperties:e.mixpanelAdditionalProperties}),u=Date.now();Ys(()=>{d.track("agent-sdk",{event:"init"},u)});const l=yu(e.auth,c,e.callbacks.onError,e.externalId),h=await l.getById(n);e.debug=e.debug||((S=h==null?void 0:h.advanced_settings)==null?void 0:S.ui_debug_mode);const f=Gi(h.presenter.type);d.enrich(ku(h));const{onMessage:y,clearQueue:g}=$u(d,o,e,h,()=>{var k;return(k=o.socketManager)==null?void 0:k.disconnect()});o.messages=_u(e.initialMessages),(F=(L=e.callbacks).onNewMessage)==null||F.call(L,[...o.messages],"answer");const C=k=>{i=k},T=({type:k})=>{var N,H,Y,X;if(!((N=o.streamingManager)!=null&&N.isInterruptible))return;const R=o.messages[o.messages.length-1];d.track("agent-video-interrupt",{type:k||"click",video_duration_to_interrupt:Xi.get(!0),message_duration_to_interrupt:nt.get(!0)}),R.interrupted=!0,(Y=(H=e.callbacks).onNewMessage)==null||Y.call(H,[...o.messages],"answer"),f?qu(o.streamingManager):(ju(o.streamingManager,(X=o.streamingManager)==null?void 0:X.streamType,i),Vu(o.streamingManager,i))},_=Date.now();Ys(()=>{d.track("agent-sdk",{event:"loaded",...bu(h)},_)});async function M(k){var ee,ye,Re,le,fe,Oe,Je;(ye=(ee=e.callbacks).onConnectionStateChange)==null||ye.call(ee,ae.Connecting),nt.reset(),k&&!t&&(delete o.chat,(le=(Re=e.callbacks).onNewMessage)==null||le.call(Re,[...o.messages],"answer"));const R=a===Se.DirectPlayback||f?Promise.resolve(void 0):Hu(e.auth,s,{onMessage:y,onError:e.callbacks.onError},e.externalId),N=zi(()=>hl(h,{...e,mode:a,callbacks:{...e.callbacks,onVideoIdChange:C,onMessage:y,onInterruptDetected:T}},l,d,o.chat),{limit:3,timeout:ou,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:j=>(j==null?void 0:j.message)!=="Could not connect"&&j.status!==429&&(j==null?void 0:j.message)!=="InsufficientCreditsError",delayMs:1e3}).catch(j=>{var B,ie;throw b(Se.Maintenance),(ie=(B=e.callbacks).onConnectionStateChange)==null||ie.call(B,ae.Fail),j}),[H,{streamingManager:Y,chat:X}]=await Promise.all([R,N]);X&&X.id!==((fe=o.chat)==null?void 0:fe.id)&&((Je=(Oe=e.callbacks).onNewChat)==null||Je.call(Oe,X.id)),o.streamingManager=Y,o.socketManager=H,o.chat=X,t=!1,d.enrich({chatId:X==null?void 0:X.id,streamId:Y==null?void 0:Y.streamId,mode:o.chatMode}),b((X==null?void 0:X.chat_mode)??a)}async function v(){var k,R,N,H;(k=o.socketManager)==null||k.disconnect(),await((R=o.streamingManager)==null?void 0:R.disconnect()),delete o.streamingManager,delete o.socketManager,(H=(N=e.callbacks).onConnectionStateChange)==null||H.call(N,ae.Disconnected)}async function b(k){var R,N;k!==o.chatMode&&(d.track("agent-mode-change",{mode:k}),o.chatMode=k,o.chatMode!==Se.Functional&&await v(),(N=(R=e.callbacks).onModeChange)==null||N.call(R,k))}return{agent:h,getStreamType:()=>{var k;return(k=o.streamingManager)==null?void 0:k.streamType},getIsInterruptAvailable:()=>{var k;return((k=o.streamingManager)==null?void 0:k.interruptAvailable)??!1},getIsTriggersAvailable:()=>{var k;return((k=o.streamingManager)==null?void 0:k.triggersAvailable)??!1},starterMessages:((x=h.knowledge)==null?void 0:x.starter_message)||[],getSTTToken:()=>l.getSTTToken(h.id),changeMode:b,enrichAnalytics:d.enrich,async connect(){await M(!0),d.track("agent-chat",{event:"connect",mode:o.chatMode})},async reconnect(){const k=o.streamingManager;if(f&&(k!=null&&k.reconnect)){try{await k.reconnect(),d.track("agent-chat",{event:"reconnect",mode:o.chatMode})}catch{await v(),await M(!1)}return}await v(),await M(!1),d.track("agent-chat",{event:"reconnect",mode:o.chatMode})},async disconnect(){await v(),d.track("agent-chat",{event:"disconnect",mode:o.chatMode})},async publishMicrophoneStream(k){var R;if(!((R=o.streamingManager)!=null&&R.publishMicrophoneStream))throw new Error("publishMicrophoneStream is not available for this streaming manager");return o.streamingManager.publishMicrophoneStream(k)},async unpublishMicrophoneStream(){var k;if(!((k=o.streamingManager)!=null&&k.unpublishMicrophoneStream))throw new Error("unpublishMicrophoneStream is not available for this streaming manager");return o.streamingManager.unpublishMicrophoneStream()},async publishCameraStream(k){var R;if(!((R=o.streamingManager)!=null&&R.publishCameraStream))throw new Error("publishCameraStream is not available for this streaming manager");return o.streamingManager.publishCameraStream(k)},async unpublishCameraStream(){var k;if(!((k=o.streamingManager)!=null&&k.unpublishCameraStream))throw new Error("unpublishCameraStream is not available for this streaming manager");return o.streamingManager.unpublishCameraStream()},async chat(k){var Y,X,ee,ye,Re;const R=()=>{if(zs(a))throw new Vt(`${a} is enabled, chat is disabled`);if(k.length>=800)throw new Vt("Message cannot be more than 800 characters");if(k.length===0)throw new Vt("Message cannot be empty");if(o.chatMode===Se.Maintenance)throw new Vt("Chat is in maintenance mode");if(![Se.TextOnly,Se.Playground].includes(o.chatMode)){if(!o.streamingManager)throw new Vt("Streaming manager is not initialized");if(!o.chat)throw new Vt("Chat is not initialized")}},N=async()=>{var le,fe;if(!o.chat){const Oe=await ea(h,l,d,o.chatMode,e.persistentChat);if(!Oe.chat)throw new jt(o.chatMode,!!e.persistentChat);o.chat=Oe.chat,(fe=(le=e.callbacks).onNewChat)==null||fe.call(le,o.chat.id)}return o.chat.id},H=async(le,fe)=>{const Oe=o.chatMode===Se.Playground;return zi(f&&!Oe?async()=>{var B,ie;return await((ie=(B=o.streamingManager)==null?void 0:B.sendTextMessage)==null?void 0:ie.call(B,k)),Promise.resolve({})}:async()=>{var B,ie;return l.chat(h.id,fe,{chatMode:o.chatMode,streamId:(B=o.streamingManager)==null?void 0:B.streamId,sessionId:(ie=o.streamingManager)==null?void 0:ie.sessionId,messages:le.map(({matches:Le,...Tn})=>Tn)},{...Zs(o.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:B=>{var Tn,Ki,Wi,Hi;const ie=(Tn=B==null?void 0:B.message)==null?void 0:Tn.includes("missing or invalid session_id");return!((Ki=B==null?void 0:B.message)==null?void 0:Ki.includes("Stream Error"))&&!ie?((Hi=(Wi=e.callbacks).onError)==null||Hi.call(Wi,B),!1):!0},onRetry:async()=>{await v(),await M(!1)}})};try{g(),R(),o.messages.push({id:nn(),role:"user",content:k,created_at:new Date(nt.update()).toISOString()}),(X=(Y=e.callbacks).onNewMessage)==null||X.call(Y,[...o.messages],"user");const le=await N(),fe=await H([...o.messages],le);return o.messages.push({id:nn(),role:"assistant",content:fe.result||"",created_at:new Date().toISOString(),context:fe.context,matches:fe.matches}),d.track("agent-message-send",{event:"success",messages:o.messages.length+1}),fe.result&&((ye=(ee=e.callbacks).onNewMessage)==null||ye.call(ee,[...o.messages],"answer"),d.track("agent-message-received",{latency:nt.get(!0),messages:o.messages.length})),fe}catch(le){throw((Re=o.messages[o.messages.length-1])==null?void 0:Re.role)==="assistant"&&o.messages.pop(),d.track("agent-message-send",{event:"error",messages:o.messages.length}),le}},rate(k,R,N){var X,ee,ye,Re;const H=o.messages.find(le=>le.id===k);if(o.chat){if(!H)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const Y=((X=H.matches)==null?void 0:X.map(le=>[le.document_id,le.id]))??[];return d.track("agent-rate",{event:N?"update":"create",thumb:R===1?"up":"down",knowledge_id:((ee=h.knowledge)==null?void 0:ee.id)??"",matches:Y,score:R}),N?l.updateRating(h.id,o.chat.id,N,{knowledge_id:((ye=h.knowledge)==null?void 0:ye.id)??"",message_id:k,matches:Y,score:R}):l.createRating(h.id,o.chat.id,{knowledge_id:((Re=h.knowledge)==null?void 0:Re.id)??"",message_id:k,matches:Y,score:R})},deleteRate(k){if(!o.chat)throw new Error("Chat is not initialized");return d.track("agent-rate-delete",{type:"text"}),l.deleteRating(h.id,o.chat.id,k)},async speak(k){var Y,X,ee;function R(){if(typeof k=="string"){if(!h.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:h.presenter.voice,input:k,ssml:!1}}if(k.type==="text"&&!k.provider){if(!h.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:h.presenter.voice,input:k.input,ssml:k.ssml}}return k}const N=R();if(d.track("agent-speak",N),nt.update(),o.messages&&N.type==="text"&&(o.messages.push({id:nn(),role:"assistant",content:N.input,created_at:new Date().toISOString()}),(X=(Y=e.callbacks).onNewMessage)==null||X.call(Y,[...o.messages],"answer")),fu(o.chatMode))return{duration:0,video_id:"",status:"success"};if(!o.streamingManager)throw new Error("Please connect to the agent first");return o.streamingManager.speak({script:N,metadata:{chat_id:(ee=o.chat)==null?void 0:ee.id,agent_id:h.id}})},interrupt:T}}function fl(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 pl=Object.defineProperty,gl=(n,e,t)=>e in n?pl(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,ca=(n,e,t)=>gl(n,typeof e!="symbol"?e+"":e,t);class Pe{constructor(){ca(this,"_locking"),ca(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 pe(n,e){if(!n)throw new Error(e)}const vl=34028234663852886e22,yl=-34028234663852886e22,bl=4294967295,kl=2147483647,Tl=-2147483648;function Zn(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>kl||n<Tl)throw new Error("invalid int 32: "+n)}function nr(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>bl||n<0)throw new Error("invalid uint 32: "+n)}function da(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>vl||n<yl))throw new Error("invalid float 32: "+n)}const ua=Symbol("@bufbuild/protobuf/enum-type");function Sl(n){const e=n[ua];return pe(e,"missing enum type on enum object"),e}function la(n,e,t,i){n[ua]=ha(e,t.map(r=>({no:r.no,name:r.name,localName:n[r.no]})))}function ha(n,e,t){const i=Object.create(null),r=Object.create(null),s=[];for(const c of e){const a=ma(c);s.push(a),i[c.name]=a,r[c.no]=a}return{typeName:n,values:s,findName(c){return i[c]},findNumber(c){return r[c]}}}function Cl(n,e,t){const i={};for(const r of e){const s=ma(r);i[s.localName]=s.no,i[s.no]=s.localName}return la(i,n,e),i}function ma(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class ir{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 El(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),c={[s]:function(a){n.util.initFields(this),n.util.initPartial(a,this)}}[s];return Object.setPrototypeOf(c.prototype,new ir),Object.assign(c,{runtime:n,typeName:e,fields:n.util.newFieldList(t),fromBinary(a,o){return new c().fromBinary(a,o)},fromJson(a,o){return new c().fromJson(a,o)},fromJsonString(a,o){return new c().fromJsonString(a,o)},equals(a,o){return n.util.equals(c,a,o)}}),c}function wl(){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 rr(n,e,t){for(let s=0;s<28;s=s+7){const c=n>>>s,a=!(!(c>>>7)&&e==0),o=(a?c|128:c)&255;if(t.push(o),!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 c=e>>>s,a=!!(c>>>7),o=(a?c|128:c)&255;if(t.push(o),!a)return}t.push(e>>>31&1)}}const ei=4294967296;function fa(n){const e=n[0]==="-";e&&(n=n.slice(1));const t=1e6;let i=0,r=0;function s(c,a){const o=Number(n.slice(c,a));r*=t,i=i*t+o,i>=ei&&(r=r+(i/ei|0),i=i%ei)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),e?ga(i,r):sr(i,r)}function _l(n,e){let t=sr(n,e);const i=t.hi&2147483648;i&&(t=ga(t.lo,t.hi));const r=pa(t.lo,t.hi);return i?"-"+r:r}function pa(n,e){if({lo:n,hi:e}=Rl(n,e),e<=2097151)return String(ei*e+n);const t=n&16777215,i=(n>>>24|e<<8)&16777215,r=e>>16&65535;let s=t+i*6777216+r*6710656,c=i+r*8147497,a=r*2;const o=1e7;return s>=o&&(c+=Math.floor(s/o),s%=o),c>=o&&(a+=Math.floor(c/o),c%=o),a.toString()+va(c)+va(s)}function Rl(n,e){return{lo:n>>>0,hi:e>>>0}}function sr(n,e){return{lo:n|0,hi:e|0}}function ga(n,e){return e=~e,n?n=~n+1:e+=1,sr(n,e)}const va=n=>{const e=String(n);return"0000000".slice(e.length)+e};function ya(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 Pl(){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 Il(){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"),c=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(o){const d=typeof o=="bigint"?o:BigInt(o);if(d>s||d<r)throw new Error("int64 invalid: ".concat(o));return d},uParse(o){const d=typeof o=="bigint"?o:BigInt(o);if(d>a||d<c)throw new Error("uint64 invalid: ".concat(o));return d},enc(o){return n.setBigInt64(0,this.parse(o),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},uEnc(o){return n.setBigInt64(0,this.uParse(o),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},dec(o,d){return n.setInt32(0,o,!0),n.setInt32(4,d,!0),n.getBigInt64(0,!0)},uDec(o,d){return n.setInt32(0,o,!0),n.setInt32(4,d,!0),n.getBigUint64(0,!0)}}}const t=r=>pe(/^-?[0-9]+$/.test(r),"int64 invalid: ".concat(r)),i=r=>pe(/^[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),fa(r)},uEnc(r){return typeof r!="string"&&(r=r.toString()),i(r),fa(r)},dec(r,s){return _l(r,s)},uDec(r,s){return pa(r,s)}}}const ue=Il();var w;(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"})(w||(w={}));var It;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(It||(It={}));function Ot(n,e,t){if(e===t)return!0;if(n==w.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 w.UINT64:case w.FIXED64:case w.INT64:case w.SFIXED64:case w.SINT64:return e==t}return!1}function rn(n,e){switch(n){case w.BOOL:return!1;case w.UINT64:case w.FIXED64:case w.INT64:case w.SFIXED64:case w.SINT64:return e==0?ue.zero:"0";case w.DOUBLE:case w.FLOAT:return 0;case w.BYTES:return new Uint8Array(0);case w.STRING:return"";default:return 0}}function ba(n,e){switch(n){case w.BOOL:return e===!1;case w.STRING:return e==="";case w.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}var be;(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"})(be||(be={}));class Ol{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(nr(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return Zn(e),ya(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){da(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){nr(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){Zn(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return Zn(e),e=(e<<1^e>>31)>>>0,ya(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),r=ue.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=ue.uEnc(e);return i.setInt32(0,r.lo,!0),i.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=ue.enc(e);return rr(t.lo,t.hi,this.buf),this}sint64(e){let t=ue.enc(e),i=t.hi>>31,r=t.lo<<1^i,s=(t.hi<<1|t.lo>>>31)^i;return rr(r,s,this.buf),this}uint64(e){let t=ue.uEnc(e);return rr(t.lo,t.hi,this.buf),this}}class Ml{constructor(e,t){this.varint64=wl,this.uint32=Pl,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 be.Varint:for(;this.buf[this.pos++]&128;);break;case be.Bit64:this.pos+=4;case be.Bit32:this.pos+=4;break;case be.LengthDelimited:let r=this.uint32();this.pos+=r;break;case be.StartGroup:for(;;){const[s,c]=this.tag();if(c===be.EndGroup){if(t!==void 0&&s!==t)throw new Error("invalid end group tag");break}this.skip(c,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 ue.dec(...this.varint64())}uint64(){return ue.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(e&1);return e=(e>>>1|(t&1)<<31)^i,t=t>>>1^i,ue.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 ue.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return ue.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 Dl(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 ka(n){const e=n.field.localName,t=Object.create(null);return t[e]=Al(n),[t,()=>t[e]]}function Al(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 rn(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 xl(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 bt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),ti=[];for(let n=0;n<bt.length;n++)ti[bt[n].charCodeAt(0)]=n;ti[45]=bt.indexOf("+"),ti[95]=bt.indexOf("/");const Ta={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,c=0;for(let a=0;a<n.length;a++){if(s=ti[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:c=s,r=1;break;case 1:t[i++]=c<<2|(s&48)>>4,c=s,r=2;break;case 2:t[i++]=(c&15)<<4|(s&60)>>2,c=s,r=3;break;case 3:t[i++]=(c&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+=bt[i>>2],r=(i&3)<<4,t=1;break;case 1:e+=bt[r|i>>4],r=(i&15)<<2,t=2;break;case 2:e+=bt[r|i>>6],e+=bt[i&63],t=0;break}return t&&(e+=bt[r],e+="=",t==1&&(e+="=")),e}};function Ll(n,e,t){Ca(e,n);const i=e.runtime.bin.makeReadOptions(t),r=xl(n.getType().runtime.bin.listUnknownFields(n),e.field),[s,c]=ka(e);for(const a of r)e.runtime.bin.readField(s,i.readerFactory(a.data),e.field,a.wireType,i);return c()}function Nl(n,e,t,i){Ca(e,n);const r=e.runtime.bin.makeReadOptions(i),s=e.runtime.bin.makeWriteOptions(i);if(Sa(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 c=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,c,s);const o=r.readerFactory(c.finish());for(;o.pos<o.len;){const[d,u]=o.tag(),l=o.skip(u,d);n.getType().runtime.bin.onUnknownField(n,d,u,l)}}function Sa(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 Ca(n,e){pe(n.extendee.typeName==e.getType().typeName,"extension ".concat(n.typeName," can only be applied to message ").concat(n.extendee.typeName))}function Ea(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:!ba(n.T,e[t]);case"message":return e[t]!==void 0;case"map":return Object.keys(e[t]).length>0}}function wa(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?rn(n.T,n.L):void 0;break;case"message":e[t]=void 0;break}}function kt(n,e){if(n===null||typeof n!="object"||!Object.getOwnPropertyNames(ir.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 _a(n,e){return kt(e)||!n.fieldWrapper?e:n.fieldWrapper.wrapField(e)}w.DOUBLE,w.FLOAT,w.INT64,w.UINT64,w.INT32,w.UINT32,w.BOOL,w.STRING,w.BYTES;const Ra={ignoreUnknownFields:!1},Pa={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function Ul(n){return n?Object.assign(Object.assign({},Ra),n):Ra}function Fl(n){return n?Object.assign(Object.assign({},Pa),n):Pa}const ni=Symbol(),ii=Symbol();function Bl(){return{makeReadOptions:Ul,makeWriteOptions:Fl,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(ut(e)));i=i??new n;const r=new Map,s=t.typeRegistry;for(const[c,a]of Object.entries(e)){const o=n.fields.findJsonName(c);if(o){if(o.oneof){if(a===null&&o.kind=="scalar")continue;const d=r.get(o.oneof);if(d!==void 0)throw new Error("cannot decode message ".concat(n.typeName,' from JSON: multiple keys for oneof "').concat(o.oneof.name,'" present: "').concat(d,'", "').concat(c,'"'));r.set(o.oneof,c)}Ia(i,a,o,t,n)}else{let d=!1;if(s!=null&&s.findExtension&&c.startsWith("[")&&c.endsWith("]")){const u=s.findExtension(c.substring(1,c.length-1));if(u&&u.extendee.typeName==n.typeName){d=!0;const[l,h]=ka(u);Ia(l,a,u.field,t,u),Nl(i,u,h(),t)}}if(!d&&!t.ignoreUnknownFields)throw new Error("cannot decode message ".concat(n.typeName,' from JSON: key "').concat(c,'" is unknown'))}}return i},writeMessage(n,e){const t=n.getType(),i={};let r;try{for(r of t.fields.byNumber()){if(!Ea(r,n)){if(r.req)throw"required field not set";if(!e.emitDefaultValues||!Vl(r))continue}const c=r.oneof?n[r.oneof.localName].value:n[r.localName],a=Oa(r,c,e);a!==void 0&&(i[e.useProtoFieldName?r.name:r.jsonName]=a)}const s=e.typeRegistry;if(s!=null&&s.findExtensionFor)for(const c of t.runtime.bin.listUnknownFields(n)){const a=s.findExtensionFor(t.typeName,c.no);if(a&&Sa(n,a)){const o=Ll(n,a,e),d=Oa(a.field,o,e);d!==void 0&&(i[a.field.jsonName]=d)}}}catch(s){const c=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(c+(a.length>0?": ".concat(a):""))}return i},readScalar(n,e,t){return wn(n,e,t??It.BIGINT,!0)},writeScalar(n,e,t){if(e!==void 0&&(t||ba(n,e)))return ri(n,e)},debug:ut}}function ut(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 Ia(n,e,t,i,r){let s=t.localName;if(t.repeated){if(pe(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(ut(e)));const c=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(ut(a)));switch(t.kind){case"message":c.push(t.T.fromJson(a,i));break;case"enum":const o=ar(t.T,a,i.ignoreUnknownFields,!0);o!==ii&&c.push(o);break;case"scalar":try{c.push(wn(t.T,a,t.L,!0))}catch(d){let u="cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(ut(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(ut(e)));const c=n[s];for(const[a,o]of Object.entries(e)){if(o===null)throw new Error("cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: map value null"));let d;try{d=jl(t.K,a)}catch(u){let l="cannot decode map key for field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(ut(e));throw u instanceof Error&&u.message.length>0&&(l+=": ".concat(u.message)),new Error(l)}switch(t.V.kind){case"message":c[d]=t.V.T.fromJson(o,i);break;case"enum":const u=ar(t.V.T,o,i.ignoreUnknownFields,!0);u!==ii&&(c[d]=u);break;case"scalar":try{c[d]=wn(t.V.T,o,It.BIGINT,!0)}catch(l){let h="cannot decode map value for field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(ut(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 c=t.T;if(e===null&&c.typeName!="google.protobuf.Value")return;let a=n[s];kt(a)?a.fromJson(e,i):(n[s]=a=c.fromJson(e,i),c.fieldWrapper&&!t.oneof&&(n[s]=c.fieldWrapper.unwrapField(a)));break;case"enum":const o=ar(t.T,e,i.ignoreUnknownFields,!1);switch(o){case ni:wa(t,n);break;case ii:break;default:n[s]=o;break}break;case"scalar":try{const d=wn(t.T,e,t.L,!1);switch(d){case ni:wa(t,n);break;default:n[s]=d;break}}catch(d){let u="cannot decode field ".concat(r.typeName,".").concat(t.name," from JSON: ").concat(ut(e));throw d instanceof Error&&d.message.length>0&&(u+=": ".concat(d.message)),new Error(u)}break}}function jl(n,e){if(n===w.BOOL)switch(e){case"true":e=!0;break;case"false":e=!1;break}return wn(n,e,It.BIGINT,!0).toString()}function wn(n,e,t,i){if(e===null)return i?rn(n,t):ni;switch(n){case w.DOUBLE:case w.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==w.FLOAT&&da(r),r;case w.INT32:case w.FIXED32:case w.SFIXED32:case w.SINT32:case w.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==w.UINT32||n==w.FIXED32?nr(s):Zn(s),s;case w.INT64:case w.SFIXED64:case w.SINT64:if(typeof e!="number"&&typeof e!="string")break;const c=ue.parse(e);return t?c.toString():c;case w.FIXED64:case w.UINT64:if(typeof e!="number"&&typeof e!="string")break;const a=ue.uParse(e);return t?a.toString():a;case w.BOOL:if(typeof e!="boolean")break;return e;case w.STRING:if(typeof e!="string")break;try{encodeURIComponent(e)}catch{throw new Error("invalid UTF8")}return e;case w.BYTES:if(e==="")return new Uint8Array(0);if(typeof e!="string")break;return Ta.dec(e)}throw new Error}function ar(n,e,t,i){if(e===null)return n.typeName=="google.protobuf.NullValue"?0:i?n.values[0].no:ni;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 ii;break}throw new Error("cannot decode enum ".concat(n.typeName," from JSON: ").concat(ut(e)))}function Vl(n){return n.repeated||n.kind=="map"?!0:!(n.oneof||n.kind=="message"||n.opt||n.req)}function Oa(n,e,t){if(n.kind=="map"){pe(typeof e=="object"&&e!=null);const i={},r=Object.entries(e);switch(n.V.kind){case"scalar":for(const[c,a]of r)i[c.toString()]=ri(n.V.T,a);break;case"message":for(const[c,a]of r)i[c.toString()]=a.toJson(t);break;case"enum":const s=n.V.T;for(const[c,a]of r)i[c.toString()]=or(s,a,t.enumAsInteger);break}return t.emitDefaultValues||r.length>0?i:void 0}if(n.repeated){pe(Array.isArray(e));const i=[];switch(n.kind){case"scalar":for(let r=0;r<e.length;r++)i.push(ri(n.T,e[r]));break;case"enum":for(let r=0;r<e.length;r++)i.push(or(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 ri(n.T,e);case"enum":return or(n.T,e,t.enumAsInteger);case"message":return _a(n.T,e).toJson(t)}}function or(n,e,t){var i;if(pe(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 ri(n,e){switch(n){case w.INT32:case w.SFIXED32:case w.SINT32:case w.FIXED32:case w.UINT32:return pe(typeof e=="number"),e;case w.FLOAT:case w.DOUBLE:return pe(typeof e=="number"),Number.isNaN(e)?"NaN":e===Number.POSITIVE_INFINITY?"Infinity":e===Number.NEGATIVE_INFINITY?"-Infinity":e;case w.STRING:return pe(typeof e=="string"),e;case w.BOOL:return pe(typeof e=="boolean"),e;case w.UINT64:case w.FIXED64:case w.INT64:case w.SFIXED64:case w.SINT64:return pe(typeof e=="bigint"||typeof e=="string"||typeof e=="number"),e.toString();case w.BYTES:return pe(e instanceof Uint8Array),Ta.enc(e)}}const sn=Symbol("@bufbuild/protobuf/unknown-fields"),Ma={readUnknownFields:!0,readerFactory:n=>new Ml(n)},Da={writeUnknownFields:!0,writerFactory:()=>new Ol};function ql(n){return n?Object.assign(Object.assign({},Ma),n):Ma}function Kl(n){return n?Object.assign(Object.assign({},Da),n):Da}function Wl(){return{makeReadOptions:ql,makeWriteOptions:Kl,listUnknownFields(n){var e;return(e=n[sn])!==null&&e!==void 0?e:[]},discardUnknownFields(n){delete n[sn]},writeUnknownFields(n,e){const i=n[sn];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[sn])||(r[sn]=[]),r[sn].push({no:e,wireType:t,data:i})},readMessage(n,e,t,i,r){const s=n.getType(),c=r?e.len:e.pos+t;let a,o;for(;e.pos<c&&([a,o]=e.tag(),!(r===!0&&o==be.EndGroup));){const d=s.fields.find(a);if(!d){const u=e.skip(o,a);i.readUnknownFields&&this.onUnknownField(n,a,o,u);continue}Aa(n,e,d,o,i)}if(r&&(o!=be.EndGroup||a!==t))throw new Error("invalid end group tag")},readField:Aa,writeMessage(n,e,t){const i=n.getType();for(const r of i.fields.byNumber()){if(!Ea(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];xa(r,s,e,t)}return t.writeUnknownFields&&this.writeUnknownFields(n,e),e},writeField(n,e,t,i){e!==void 0&&xa(n,e,t,i)}}}function Aa(n,e,t,i,r){let{repeated:s,localName:c}=t;switch(t.oneof&&(n=n[t.oneof.localName],n.case!=c&&delete n.value,n.case=c,c="value"),t.kind){case"scalar":case"enum":const a=t.kind=="enum"?w.INT32:t.T;let o=ai;if(t.kind=="scalar"&&t.L>0&&(o=Jl),s){let h=n[c];if(i==be.LengthDelimited&&a!=w.STRING&&a!=w.BYTES){let y=e.uint32()+e.pos;for(;e.pos<y;)h.push(o(e,a))}else h.push(o(e,a))}else n[c]=o(e,a);break;case"message":const d=t.T;s?n[c].push(si(e,new d,r,t)):kt(n[c])?si(e,n[c],r,t):(n[c]=si(e,new d,r,t),d.fieldWrapper&&!t.oneof&&!t.repeated&&(n[c]=d.fieldWrapper.unwrapField(n[c])));break;case"map":let[u,l]=Hl(t,e,r);n[c][u]=l;break}}function si(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 Hl(n,e,t){const i=e.uint32(),r=e.pos+i;let s,c;for(;e.pos<r;){const[a]=e.tag();switch(a){case 1:s=ai(e,n.K);break;case 2:switch(n.V.kind){case"scalar":c=ai(e,n.V.T);break;case"enum":c=e.int32();break;case"message":c=si(e,new n.V.T,t,void 0);break}break}}if(s===void 0&&(s=rn(n.K,It.BIGINT)),typeof s!="string"&&typeof s!="number"&&(s=s.toString()),c===void 0)switch(n.V.kind){case"scalar":c=rn(n.V.T,It.BIGINT);break;case"enum":c=n.V.T.values[0].no;break;case"message":c=new n.V.T;break}return[s,c]}function Jl(n,e){const t=ai(n,e);return typeof t=="bigint"?t.toString():t}function ai(n,e){switch(e){case w.STRING:return n.string();case w.BOOL:return n.bool();case w.DOUBLE:return n.double();case w.FLOAT:return n.float();case w.INT32:return n.int32();case w.INT64:return n.int64();case w.UINT64:return n.uint64();case w.FIXED64:return n.fixed64();case w.BYTES:return n.bytes();case w.FIXED32:return n.fixed32();case w.SFIXED32:return n.sfixed32();case w.SFIXED64:return n.sfixed64();case w.SINT64:return n.sint64();case w.UINT32:return n.uint32();case w.SINT32:return n.sint32()}}function xa(n,e,t,i){pe(e!==void 0);const r=n.repeated;switch(n.kind){case"scalar":case"enum":let s=n.kind=="enum"?w.INT32:n.T;if(r)if(pe(Array.isArray(e)),n.packed)zl(t,s,n.no,e);else for(const c of e)_n(t,s,n.no,c);else _n(t,s,n.no,e);break;case"message":if(r){pe(Array.isArray(e));for(const c of e)La(t,i,n,c)}else La(t,i,n,e);break;case"map":pe(typeof e=="object"&&e!=null);for(const[c,a]of Object.entries(e))Gl(t,i,n,c,a);break}}function Gl(n,e,t,i,r){n.tag(t.no,be.LengthDelimited),n.fork();let s=i;switch(t.K){case w.INT32:case w.FIXED32:case w.UINT32:case w.SFIXED32:case w.SINT32:s=Number.parseInt(i);break;case w.BOOL:pe(i=="true"||i=="false"),s=i=="true";break}switch(_n(n,t.K,1,s),t.V.kind){case"scalar":_n(n,t.V.T,2,r);break;case"enum":_n(n,w.INT32,2,r);break;case"message":pe(r!==void 0),n.tag(2,be.LengthDelimited).bytes(r.toBinary(e));break}n.join()}function La(n,e,t,i){const r=_a(t.T,i);t.delimited?n.tag(t.no,be.StartGroup).raw(r.toBinary(e)).tag(t.no,be.EndGroup):n.tag(t.no,be.LengthDelimited).bytes(r.toBinary(e))}function _n(n,e,t,i){pe(i!==void 0);let[r,s]=Na(e);n.tag(t,r)[s](i)}function zl(n,e,t,i){if(!i.length)return;n.tag(t,be.LengthDelimited).fork();let[,r]=Na(e);for(let s=0;s<i.length;s++)n[r](i[s]);n.join()}function Na(n){let e=be.Varint;switch(n){case w.BYTES:case w.STRING:e=be.LengthDelimited;break;case w.DOUBLE:case w.FIXED64:case w.SFIXED64:e=be.Bit64;break;case w.FIXED32:case w.SFIXED32:case w.FLOAT:e=be.Bit32;break}const t=w[n].toLowerCase();return[e,t]}function $l(){return{setEnumType:la,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,c=n;if(c[r]!=null)switch(i.kind){case"oneof":const a=c[r].case;if(a===void 0)continue;const o=i.findField(a);let d=c[r].value;o&&o.kind=="message"&&!kt(d,o.T)?d=new o.T(d):o&&o.kind==="scalar"&&o.T===w.BYTES&&(d=Rn(d)),s[r]={case:a,value:d};break;case"scalar":case"enum":let u=c[r];i.T===w.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===w.BYTES)for(const[f,y]of Object.entries(c[r]))s[r][f]=Rn(y);else Object.assign(s[r],c[r]);break;case"message":const h=i.V.T;for(const f of Object.keys(c[r])){let y=c[r][f];h.fieldWrapper||(y=new h(y)),s[r][f]=y}break}break;case"message":const l=i.T;if(i.repeated)s[r]=c[r].map(h=>kt(h,l)?h:new l(h));else{const h=c[r];l.fieldWrapper?l.typeName==="google.protobuf.BytesValue"?s[r]=Rn(h):s[r]=h:s[r]=kt(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((c,a)=>i.T.equals(c,s[a]));case"scalar":return r.every((c,a)=>Ot(i.T,c,s[a]));case"enum":return r.every((c,a)=>Ot(w.INT32,c,s[a]))}throw new Error("repeated cannot contain ".concat(i.kind))}switch(i.kind){case"message":let c=r,a=s;return i.T.fieldWrapper&&(c!==void 0&&!kt(c)&&(c=i.T.fieldWrapper.wrapField(c)),a!==void 0&&!kt(a)&&(a=i.T.fieldWrapper.wrapField(a))),i.T.equals(c,a);case"enum":return Ot(w.INT32,r,s);case"scalar":return Ot(i.T,r,s);case"oneof":if(r.case!==s.case)return!1;const o=i.findField(r.case);if(o===void 0)return!0;switch(o.kind){case"message":return o.T.equals(r.value,s.value);case"enum":return Ot(w.INT32,r.value,s.value);case"scalar":return Ot(o.T,r.value,s.value)}throw new Error("oneof cannot contain ".concat(o.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=>Ot(w.INT32,r[h],s[h]));case"scalar":const l=i.V.T;return d.every(h=>Ot(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 c;if(r.repeated)c=s.map(oi);else if(r.kind=="map"){c=i[r.localName];for(const[a,o]of Object.entries(s))c[a]=oi(o)}else r.kind=="oneof"?c=r.findField(s.case)?{case:s.case,value:oi(s.value)}:{case:void 0}:c=oi(s);i[r.localName]=c}for(const r of e.runtime.bin.listUnknownFields(n))e.runtime.bin.onUnknownField(i,r.no,r.wireType,r.data);return t}}}function oi(n){if(n===void 0)return n;if(kt(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 Ql(n,e,t){return{syntax:n,json:Bl(),bin:Wl(),util:Object.assign(Object.assign({},$l()),{newFieldList:e,initFields:t}),makeMessageType(i,r,s){return El(this,i,r,s)},makeEnum:Cl,makeEnumType:ha,getEnumType:Sl,makeExtension(i,r,s){return Dl(this,i,r,s)}}}class Yl{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 Ua(n,e){const t=Fa(n);return e?t:ih(nh(t))}function Xl(n){return Ua(n,!1)}const Zl=Fa;function Fa(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 eh=new Set(["constructor","toString","toJSON","valueOf"]),th=new Set(["getType","clone","equals","fromBinary","fromJson","fromJsonString","toBinary","toJson","toJsonString","toObject"]),Ba=n=>"".concat(n,"$"),nh=n=>th.has(n)?Ba(n):n,ih=n=>eh.has(n)?Ba(n):n;class rh{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=Xl(e)}addField(e){pe(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 sh(n,e){var t,i,r,s,c,a;const o=[];let d;for(const u of typeof n=="function"?n():n){const l=u;if(l.localName=Ua(u.name,u.oneof!==void 0),l.jsonName=(t=u.jsonName)!==null&&t!==void 0?t:Zl(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:It.BIGINT),l.delimited=(s=u.delimited)!==null&&s!==void 0?s:!1,l.req=(c=u.req)!==null&&c!==void 0?c:!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!=w.BYTES&&u.T!=w.STRING),u.oneof!==void 0){const h=typeof u.oneof=="string"?u.oneof:u.oneof.name;(!d||d.name!=h)&&(d=new rh(h)),l.oneof=d,d.addField(l)}o.push(l)}return o}const p=Ql("proto3",n=>new Yl(n,e=>sh(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]=rn(e.T,e.L);break}}});class Ve extends ir{constructor(e){super(),this.seconds=ue.zero,this.nanos=0,p.util.initPartial(e,this)}fromJson(e,t){if(typeof e!="string")throw new Error("cannot decode google.protobuf.Timestamp from JSON: ".concat(p.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=ue.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 Ve.fromDate(new Date)}static fromDate(e){const t=e.getTime();return new Ve({seconds:ue.parse(Math.floor(t/1e3)),nanos:t%1e3*1e6})}static fromBinary(e,t){return new Ve().fromBinary(e,t)}static fromJson(e,t){return new Ve().fromJson(e,t)}static fromJsonString(e,t){return new Ve().fromJsonString(e,t)}static equals(e,t){return p.util.equals(Ve,e,t)}}Ve.runtime=p,Ve.typeName="google.protobuf.Timestamp",Ve.fields=p.util.newFieldList(()=>[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}]);const ah=p.makeMessageType("livekit.MetricsBatch",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:Ve},{no:3,name:"str_data",kind:"scalar",T:9,repeated:!0},{no:4,name:"time_series",kind:"message",T:oh,repeated:!0},{no:5,name:"events",kind:"message",T:dh,repeated:!0}]),oh=p.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:ch,repeated:!0},{no:5,name:"rid",kind:"scalar",T:13}]),ch=p.makeMessageType("livekit.MetricSample",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:Ve},{no:3,name:"value",kind:"scalar",T:2}]),dh=p.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:Ve},{no:7,name:"normalized_end_timestamp",kind:"message",T:Ve,opt:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"rid",kind:"scalar",T:13}]),uh=p.makeEnum("livekit.AudioCodec",[{no:0,name:"DEFAULT_AC"},{no:1,name:"OPUS"},{no:2,name:"AAC"},{no:3,name:"AC_MP3"}]),lh=p.makeEnum("livekit.VideoCodec",[{no:0,name:"DEFAULT_VC"},{no:1,name:"H264_BASELINE"},{no:2,name:"H264_MAIN"},{no:3,name:"H264_HIGH"},{no:4,name:"VP8"}]),hh=p.makeEnum("livekit.ImageCodec",[{no:0,name:"IC_DEFAULT"},{no:1,name:"IC_JPEG"}]),ja=p.makeEnum("livekit.BackupCodecPolicy",[{no:0,name:"PREFER_REGRESSION"},{no:1,name:"SIMULCAST"},{no:2,name:"REGRESSION"}]),ze=p.makeEnum("livekit.TrackType",[{no:0,name:"AUDIO"},{no:1,name:"VIDEO"},{no:2,name:"DATA"}]),Te=p.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"}]),cr=p.makeEnum("livekit.VideoQuality",[{no:0,name:"LOW"},{no:1,name:"MEDIUM"},{no:2,name:"HIGH"},{no:3,name:"OFF"}]),Pn=p.makeEnum("livekit.ConnectionQuality",[{no:0,name:"POOR"},{no:1,name:"GOOD"},{no:2,name:"EXCELLENT"},{no:3,name:"LOST"}]),In=p.makeEnum("livekit.ClientConfigSetting",[{no:0,name:"UNSET"},{no:1,name:"DISABLED"},{no:2,name:"ENABLED"}]),$e=p.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"}]),qt=p.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"}]),Va=p.makeEnum("livekit.SubscriptionError",[{no:0,name:"SE_UNKNOWN"},{no:1,name:"SE_CODEC_UNSUPPORTED"},{no:2,name:"SE_TRACK_NOTFOUND"}]),Ee=p.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"}]),ci=p.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:di,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:to}]),di=p.makeMessageType("livekit.Codec",()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}]),mh=p.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:p.getEnumType(Te),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}]),Kt=p.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:p.getEnumType(an)},{no:4,name:"tracks",kind:"message",T:cn,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:mh},{no:12,name:"region",kind:"scalar",T:9},{no:13,name:"is_publisher",kind:"scalar",T:8},{no:14,name:"kind",kind:"enum",T:p.getEnumType(on)},{no:15,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:16,name:"disconnect_reason",kind:"enum",T:p.getEnumType($e)},{no:18,name:"kind_details",kind:"enum",T:p.getEnumType(fh),repeated:!0},{no:19,name:"data_tracks",kind:"message",T:dr,repeated:!0}]),an=p.makeEnum("livekit.ParticipantInfo.State",[{no:0,name:"JOINING"},{no:1,name:"JOINED"},{no:2,name:"ACTIVE"},{no:3,name:"DISCONNECTED"}]),on=p.makeEnum("livekit.ParticipantInfo.Kind",[{no:0,name:"STANDARD"},{no:1,name:"INGRESS"},{no:2,name:"EGRESS"},{no:3,name:"SIP"},{no:4,name:"AGENT"},{no:7,name:"CONNECTOR"},{no:8,name:"BRIDGE"}]),fh=p.makeEnum("livekit.ParticipantInfo.KindDetail",[{no:0,name:"CLOUD_AGENT"},{no:1,name:"FORWARDED"},{no:2,name:"CONNECTOR_WHATSAPP"},{no:3,name:"CONNECTOR_TWILIO"},{no:4,name:"BRIDGE_RTSP"}]),ge=p.makeEnum("livekit.Encryption.Type",[{no:0,name:"NONE"},{no:1,name:"GCM"},{no:2,name:"CUSTOM"}]),ph=p.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:Mt,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:p.getEnumType(qa)},{no:6,name:"sdp_cid",kind:"scalar",T:9}]),cn=p.makeMessageType("livekit.TrackInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:p.getEnumType(ze)},{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:p.getEnumType(Te)},{no:10,name:"layers",kind:"message",T:Mt,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:ph,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:p.getEnumType(ge)},{no:17,name:"stream",kind:"scalar",T:9},{no:18,name:"version",kind:"message",T:to},{no:19,name:"audio_features",kind:"enum",T:p.getEnumType(Ee),repeated:!0},{no:20,name:"backup_codec_policy",kind:"enum",T:p.getEnumType(ja)}]),dr=p.makeMessageType("livekit.DataTrackInfo",()=>[{no:1,name:"pub_handle",kind:"scalar",T:13},{no:2,name:"sid",kind:"scalar",T:9},{no:3,name:"name",kind:"scalar",T:9},{no:4,name:"encryption",kind:"enum",T:p.getEnumType(ge)}]),gh=p.makeMessageType("livekit.DataTrackSubscriptionOptions",()=>[{no:1,name:"target_fps",kind:"scalar",T:13,opt:!0}]),Mt=p.makeMessageType("livekit.VideoLayer",()=>[{no:1,name:"quality",kind:"enum",T:p.getEnumType(cr)},{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},{no:8,name:"repair_ssrc",kind:"scalar",T:13}]),qa=p.makeEnum("livekit.VideoLayer.Mode",[{no:0,name:"MODE_UNUSED"},{no:1,name:"ONE_SPATIAL_LAYER_PER_STREAM"},{no:2,name:"MULTIPLE_SPATIAL_LAYERS_PER_STREAM"},{no:3,name:"ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR"}]),Ue=p.makeMessageType("livekit.DataPacket",()=>[{no:1,name:"kind",kind:"enum",T:p.getEnumType(J)},{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:ur,oneof:"value"},{no:3,name:"speaker",kind:"message",T:vh,oneof:"value"},{no:6,name:"sip_dtmf",kind:"message",T:Ja,oneof:"value"},{no:7,name:"transcription",kind:"message",T:yh,oneof:"value"},{no:8,name:"metrics",kind:"message",T:ah,oneof:"value"},{no:9,name:"chat_message",kind:"message",T:ui,oneof:"value"},{no:10,name:"rpc_request",kind:"message",T:lr,oneof:"value"},{no:11,name:"rpc_ack",kind:"message",T:hr,oneof:"value"},{no:12,name:"rpc_response",kind:"message",T:mr,oneof:"value"},{no:13,name:"stream_header",kind:"message",T:li,oneof:"value"},{no:14,name:"stream_chunk",kind:"message",T:hi,oneof:"value"},{no:15,name:"stream_trailer",kind:"message",T:mi,oneof:"value"},{no:18,name:"encrypted_packet",kind:"message",T:Ka,oneof:"value"},{no:16,name:"sequence",kind:"scalar",T:13},{no:17,name:"participant_sid",kind:"scalar",T:9}]),J=p.makeEnum("livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]),Ka=p.makeMessageType("livekit.EncryptedPacket",()=>[{no:1,name:"encryption_type",kind:"enum",T:p.getEnumType(ge)},{no:2,name:"iv",kind:"scalar",T:12},{no:3,name:"key_index",kind:"scalar",T:13},{no:4,name:"encrypted_value",kind:"scalar",T:12}]),Wa=p.makeMessageType("livekit.EncryptedPacketPayload",()=>[{no:1,name:"user",kind:"message",T:ur,oneof:"value"},{no:3,name:"chat_message",kind:"message",T:ui,oneof:"value"},{no:4,name:"rpc_request",kind:"message",T:lr,oneof:"value"},{no:5,name:"rpc_ack",kind:"message",T:hr,oneof:"value"},{no:6,name:"rpc_response",kind:"message",T:mr,oneof:"value"},{no:7,name:"stream_header",kind:"message",T:li,oneof:"value"},{no:8,name:"stream_chunk",kind:"message",T:hi,oneof:"value"},{no:9,name:"stream_trailer",kind:"message",T:mi,oneof:"value"}]),vh=p.makeMessageType("livekit.ActiveSpeakerUpdate",()=>[{no:1,name:"speakers",kind:"message",T:Ha,repeated:!0}]),Ha=p.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}]),ur=p.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}]),Ja=p.makeMessageType("livekit.SipDTMF",()=>[{no:3,name:"code",kind:"scalar",T:13},{no:4,name:"digit",kind:"scalar",T:9}]),yh=p.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:bh,repeated:!0}]),bh=p.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}]),ui=p.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}]),lr=p.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}]),hr=p.makeMessageType("livekit.RpcAck",()=>[{no:1,name:"request_id",kind:"scalar",T:9}]),mr=p.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:Ga,oneof:"value"}]),Ga=p.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}]),za=p.makeMessageType("livekit.ParticipantTracks",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}]),$a=p.makeMessageType("livekit.ServerInfo",()=>[{no:1,name:"edition",kind:"enum",T:p.getEnumType(Qa)},{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}]),Qa=p.makeEnum("livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]),Ya=p.makeMessageType("livekit.ClientInfo",()=>[{no:1,name:"sdk",kind:"enum",T:p.getEnumType(Xa)},{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}]),Xa=p.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"}]),Za=p.makeMessageType("livekit.ClientConfiguration",()=>[{no:1,name:"video",kind:"message",T:eo},{no:2,name:"screen",kind:"message",T:eo},{no:3,name:"resume_connection",kind:"enum",T:p.getEnumType(In)},{no:4,name:"disabled_codecs",kind:"message",T:kh},{no:5,name:"force_relay",kind:"enum",T:p.getEnumType(In)}]),eo=p.makeMessageType("livekit.VideoConfiguration",()=>[{no:1,name:"hardware_encoder",kind:"enum",T:p.getEnumType(In)}]),kh=p.makeMessageType("livekit.DisabledCodecs",()=>[{no:1,name:"codecs",kind:"message",T:di,repeated:!0},{no:2,name:"publish",kind:"message",T:di,repeated:!0}]),to=p.makeMessageType("livekit.TimedVersion",()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}]),fr=p.makeEnum("livekit.DataStream.OperationType",[{no:0,name:"CREATE"},{no:1,name:"UPDATE"},{no:2,name:"DELETE"},{no:3,name:"REACTION"}]),no=p.makeMessageType("livekit.DataStream.TextHeader",()=>[{no:1,name:"operation_type",kind:"enum",T:p.getEnumType(fr)},{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"}),io=p.makeMessageType("livekit.DataStream.ByteHeader",()=>[{no:1,name:"name",kind:"scalar",T:9}],{localName:"DataStream_ByteHeader"}),li=p.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:p.getEnumType(ge)},{no:8,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:9,name:"text_header",kind:"message",T:no,oneof:"content_header"},{no:10,name:"byte_header",kind:"message",T:io,oneof:"content_header"}],{localName:"DataStream_Header"}),hi=p.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"}),mi=p.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"}),Th=p.makeMessageType("livekit.FilterParams",()=>[{no:1,name:"include_events",kind:"scalar",T:9,repeated:!0},{no:2,name:"exclude_events",kind:"scalar",T:9,repeated:!0}]),Sh=p.makeMessageType("livekit.WebhookConfig",()=>[{no:1,name:"url",kind:"scalar",T:9},{no:2,name:"signing_key",kind:"scalar",T:9},{no:3,name:"filter_params",kind:"message",T:Th}]),Ch=p.makeMessageType("livekit.SubscribedAudioCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"enabled",kind:"scalar",T:8}]),pr=p.makeMessageType("livekit.RoomAgentDispatch",()=>[{no:1,name:"agent_name",kind:"scalar",T:9},{no:2,name:"metadata",kind:"scalar",T:9}]),it=p.makeEnum("livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}]),gr=p.makeEnum("livekit.StreamState",[{no:0,name:"ACTIVE"},{no:1,name:"PAUSED"}]),Eh=p.makeEnum("livekit.CandidateProtocol",[{no:0,name:"UDP"},{no:1,name:"TCP"},{no:2,name:"TLS"}]),wh=p.makeMessageType("livekit.SignalRequest",()=>[{no:1,name:"offer",kind:"message",T:Dt,oneof:"message"},{no:2,name:"answer",kind:"message",T:Dt,oneof:"message"},{no:3,name:"trickle",kind:"message",T:fi,oneof:"message"},{no:4,name:"add_track",kind:"message",T:On,oneof:"message"},{no:5,name:"mute",kind:"message",T:pi,oneof:"message"},{no:6,name:"subscription",kind:"message",T:gi,oneof:"message"},{no:7,name:"track_setting",kind:"message",T:co,oneof:"message"},{no:8,name:"leave",kind:"message",T:vi,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:lo,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:fo,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:Sr,oneof:"message"},{no:13,name:"simulate",kind:"message",T:lt,oneof:"message"},{no:14,name:"ping",kind:"scalar",T:3,oneof:"message"},{no:15,name:"update_metadata",kind:"message",T:kr,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:vo,oneof:"message"},{no:17,name:"update_audio_track",kind:"message",T:br,oneof:"message"},{no:18,name:"update_video_track",kind:"message",T:uo,oneof:"message"},{no:19,name:"publish_data_track_request",kind:"message",T:so,oneof:"message"},{no:20,name:"unpublish_data_track_request",kind:"message",T:oo,oneof:"message"},{no:21,name:"update_data_subscription",kind:"message",T:Ah,oneof:"message"}]),ro=p.makeMessageType("livekit.SignalResponse",()=>[{no:1,name:"join",kind:"message",T:Ih,oneof:"message"},{no:2,name:"answer",kind:"message",T:Dt,oneof:"message"},{no:3,name:"offer",kind:"message",T:Dt,oneof:"message"},{no:4,name:"trickle",kind:"message",T:fi,oneof:"message"},{no:5,name:"update",kind:"message",T:Dh,oneof:"message"},{no:6,name:"track_published",kind:"message",T:yr,oneof:"message"},{no:8,name:"leave",kind:"message",T:vi,oneof:"message"},{no:9,name:"mute",kind:"message",T:pi,oneof:"message"},{no:10,name:"speakers_changed",kind:"message",T:Lh,oneof:"message"},{no:11,name:"room_update",kind:"message",T:Nh,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:Fh,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:jh,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:qh,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:Wh,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:Mh,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:Oh,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:Jh,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:$h,oneof:"message"},{no:22,name:"request_response",kind:"message",T:Qh,oneof:"message"},{no:23,name:"track_subscribed",kind:"message",T:Yh,oneof:"message"},{no:24,name:"room_moved",kind:"message",T:Hh,oneof:"message"},{no:25,name:"media_sections_requirement",kind:"message",T:tm,oneof:"message"},{no:26,name:"subscribed_audio_codec_update",kind:"message",T:Kh,oneof:"message"},{no:27,name:"publish_data_track_response",kind:"message",T:ao,oneof:"message"},{no:28,name:"unpublish_data_track_response",kind:"message",T:_h,oneof:"message"},{no:29,name:"data_track_subscriber_handles",kind:"message",T:Rh,oneof:"message"}]),vr=p.makeMessageType("livekit.SimulcastCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"cid",kind:"scalar",T:9},{no:4,name:"layers",kind:"message",T:Mt,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:p.getEnumType(qa)}]),On=p.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:p.getEnumType(ze)},{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:p.getEnumType(Te)},{no:9,name:"layers",kind:"message",T:Mt,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:vr,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:p.getEnumType(ge)},{no:15,name:"stream",kind:"scalar",T:9},{no:16,name:"backup_codec_policy",kind:"enum",T:p.getEnumType(ja)},{no:17,name:"audio_features",kind:"enum",T:p.getEnumType(Ee),repeated:!0}]),so=p.makeMessageType("livekit.PublishDataTrackRequest",()=>[{no:1,name:"pub_handle",kind:"scalar",T:13},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"encryption",kind:"enum",T:p.getEnumType(ge)}]),ao=p.makeMessageType("livekit.PublishDataTrackResponse",()=>[{no:1,name:"info",kind:"message",T:dr}]),oo=p.makeMessageType("livekit.UnpublishDataTrackRequest",()=>[{no:1,name:"pub_handle",kind:"scalar",T:13}]),_h=p.makeMessageType("livekit.UnpublishDataTrackResponse",()=>[{no:1,name:"info",kind:"message",T:dr}]),Rh=p.makeMessageType("livekit.DataTrackSubscriberHandles",()=>[{no:1,name:"sub_handles",kind:"map",K:13,V:{kind:"message",T:Ph}}]),Ph=p.makeMessageType("livekit.DataTrackSubscriberHandles.PublishedDataTrack",()=>[{no:1,name:"publisher_identity",kind:"scalar",T:9},{no:2,name:"publisher_sid",kind:"scalar",T:9},{no:3,name:"track_sid",kind:"scalar",T:9}],{localName:"DataTrackSubscriberHandles_PublishedDataTrack"}),fi=p.makeMessageType("livekit.TrickleRequest",()=>[{no:1,name:"candidateInit",kind:"scalar",T:9},{no:2,name:"target",kind:"enum",T:p.getEnumType(it)},{no:3,name:"final",kind:"scalar",T:8}]),pi=p.makeMessageType("livekit.MuteTrackRequest",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"muted",kind:"scalar",T:8}]),Ih=p.makeMessageType("livekit.JoinResponse",()=>[{no:1,name:"room",kind:"message",T:ci},{no:2,name:"participant",kind:"message",T:Kt},{no:3,name:"other_participants",kind:"message",T:Kt,repeated:!0},{no:4,name:"server_version",kind:"scalar",T:9},{no:5,name:"ice_servers",kind:"message",T:ho,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:Za},{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:$a},{no:13,name:"sif_trailer",kind:"scalar",T:12},{no:14,name:"enabled_publish_codecs",kind:"message",T:di,repeated:!0},{no:15,name:"fast_publish",kind:"scalar",T:8}]),Oh=p.makeMessageType("livekit.ReconnectResponse",()=>[{no:1,name:"ice_servers",kind:"message",T:ho,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:Za},{no:3,name:"server_info",kind:"message",T:$a},{no:4,name:"last_message_seq",kind:"scalar",T:13}]),yr=p.makeMessageType("livekit.TrackPublishedResponse",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:cn}]),Mh=p.makeMessageType("livekit.TrackUnpublishedResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),Dt=p.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},{no:4,name:"mid_to_track_id",kind:"map",K:9,V:{kind:"scalar",T:9}}]),Dh=p.makeMessageType("livekit.ParticipantUpdate",()=>[{no:1,name:"participants",kind:"message",T:Kt,repeated:!0}]),gi=p.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:za,repeated:!0}]),Ah=p.makeMessageType("livekit.UpdateDataSubscription",()=>[{no:1,name:"updates",kind:"message",T:xh,repeated:!0}]),xh=p.makeMessageType("livekit.UpdateDataSubscription.Update",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribe",kind:"scalar",T:8},{no:3,name:"options",kind:"message",T:gh}],{localName:"UpdateDataSubscription_Update"}),co=p.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:p.getEnumType(cr)},{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}]),br=p.makeMessageType("livekit.UpdateLocalAudioTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"features",kind:"enum",T:p.getEnumType(Ee),repeated:!0}]),uo=p.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}]),vi=p.makeMessageType("livekit.LeaveRequest",()=>[{no:1,name:"can_reconnect",kind:"scalar",T:8},{no:2,name:"reason",kind:"enum",T:p.getEnumType($e)},{no:3,name:"action",kind:"enum",T:p.getEnumType(dn)},{no:4,name:"regions",kind:"message",T:Gh}]),dn=p.makeEnum("livekit.LeaveRequest.Action",[{no:0,name:"DISCONNECT"},{no:1,name:"RESUME"},{no:2,name:"RECONNECT"}]),lo=p.makeMessageType("livekit.UpdateVideoLayers",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:Mt,repeated:!0}]),kr=p.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}]),ho=p.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}]),Lh=p.makeMessageType("livekit.SpeakersChanged",()=>[{no:1,name:"speakers",kind:"message",T:Ha,repeated:!0}]),Nh=p.makeMessageType("livekit.RoomUpdate",()=>[{no:1,name:"room",kind:"message",T:ci}]),Uh=p.makeMessageType("livekit.ConnectionQualityInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"quality",kind:"enum",T:p.getEnumType(Pn)},{no:3,name:"score",kind:"scalar",T:2}]),Fh=p.makeMessageType("livekit.ConnectionQualityUpdate",()=>[{no:1,name:"updates",kind:"message",T:Uh,repeated:!0}]),Bh=p.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:p.getEnumType(gr)}]),jh=p.makeMessageType("livekit.StreamStateUpdate",()=>[{no:1,name:"stream_states",kind:"message",T:Bh,repeated:!0}]),Tr=p.makeMessageType("livekit.SubscribedQuality",()=>[{no:1,name:"quality",kind:"enum",T:p.getEnumType(cr)},{no:2,name:"enabled",kind:"scalar",T:8}]),Vh=p.makeMessageType("livekit.SubscribedCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:Tr,repeated:!0}]),qh=p.makeMessageType("livekit.SubscribedQualityUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:Tr,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:Vh,repeated:!0}]),Kh=p.makeMessageType("livekit.SubscribedAudioCodecUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_audio_codecs",kind:"message",T:Ch,repeated:!0}]),mo=p.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}]),fo=p.makeMessageType("livekit.SubscriptionPermission",()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:mo,repeated:!0}]),Wh=p.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}]),Hh=p.makeMessageType("livekit.RoomMovedResponse",()=>[{no:1,name:"room",kind:"message",T:ci},{no:2,name:"token",kind:"scalar",T:9},{no:3,name:"participant",kind:"message",T:Kt},{no:4,name:"other_participants",kind:"message",T:Kt,repeated:!0}]),Sr=p.makeMessageType("livekit.SyncState",()=>[{no:1,name:"answer",kind:"message",T:Dt},{no:2,name:"subscription",kind:"message",T:gi},{no:3,name:"publish_tracks",kind:"message",T:yr,repeated:!0},{no:4,name:"data_channels",kind:"message",T:go,repeated:!0},{no:5,name:"offer",kind:"message",T:Dt},{no:6,name:"track_sids_disabled",kind:"scalar",T:9,repeated:!0},{no:7,name:"datachannel_receive_states",kind:"message",T:po,repeated:!0},{no:8,name:"publish_data_tracks",kind:"message",T:ao,repeated:!0}]),po=p.makeMessageType("livekit.DataChannelReceiveState",()=>[{no:1,name:"publisher_sid",kind:"scalar",T:9},{no:2,name:"last_seq",kind:"scalar",T:13}]),go=p.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:p.getEnumType(it)}]),lt=p.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:p.getEnumType(Eh),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"}]),vo=p.makeMessageType("livekit.Ping",()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}]),Jh=p.makeMessageType("livekit.Pong",()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}]),Gh=p.makeMessageType("livekit.RegionSettings",()=>[{no:1,name:"regions",kind:"message",T:zh,repeated:!0}]),zh=p.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}]),$h=p.makeMessageType("livekit.SubscriptionResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:p.getEnumType(Va)}]),Qh=p.makeMessageType("livekit.RequestResponse",()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"reason",kind:"enum",T:p.getEnumType(Cr)},{no:3,name:"message",kind:"scalar",T:9},{no:4,name:"trickle",kind:"message",T:fi,oneof:"request"},{no:5,name:"add_track",kind:"message",T:On,oneof:"request"},{no:6,name:"mute",kind:"message",T:pi,oneof:"request"},{no:7,name:"update_metadata",kind:"message",T:kr,oneof:"request"},{no:8,name:"update_audio_track",kind:"message",T:br,oneof:"request"},{no:9,name:"update_video_track",kind:"message",T:uo,oneof:"request"},{no:10,name:"publish_data_track",kind:"message",T:so,oneof:"request"},{no:11,name:"unpublish_data_track",kind:"message",T:oo,oneof:"request"}]),Cr=p.makeEnum("livekit.RequestResponse.Reason",[{no:0,name:"OK"},{no:1,name:"NOT_FOUND"},{no:2,name:"NOT_ALLOWED"},{no:3,name:"LIMIT_EXCEEDED"},{no:4,name:"QUEUED"},{no:5,name:"UNSUPPORTED_TYPE"},{no:6,name:"UNCLASSIFIED_ERROR"},{no:7,name:"INVALID_HANDLE"},{no:8,name:"INVALID_NAME"},{no:9,name:"DUPLICATE_HANDLE"},{no:10,name:"DUPLICATE_NAME"}]),Yh=p.makeMessageType("livekit.TrackSubscribed",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),yo=p.makeMessageType("livekit.ConnectionSettings",()=>[{no:1,name:"auto_subscribe",kind:"scalar",T:8},{no:2,name:"adaptive_stream",kind:"scalar",T:8},{no:3,name:"subscriber_allow_pause",kind:"scalar",T:8,opt:!0},{no:4,name:"disable_ice_lite",kind:"scalar",T:8},{no:5,name:"auto_subscribe_data_track",kind:"scalar",T:8,opt:!0}]),Xh=p.makeMessageType("livekit.JoinRequest",()=>[{no:1,name:"client_info",kind:"message",T:Ya},{no:2,name:"connection_settings",kind:"message",T:yo},{no:3,name:"metadata",kind:"scalar",T:9},{no:4,name:"participant_attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:5,name:"add_track_requests",kind:"message",T:On,repeated:!0},{no:6,name:"publisher_offer",kind:"message",T:Dt},{no:7,name:"reconnect",kind:"scalar",T:8},{no:8,name:"reconnect_reason",kind:"enum",T:p.getEnumType(qt)},{no:9,name:"participant_sid",kind:"scalar",T:9},{no:10,name:"sync_state",kind:"message",T:Sr}]),Zh=p.makeMessageType("livekit.WrappedJoinRequest",()=>[{no:1,name:"compression",kind:"enum",T:p.getEnumType(em)},{no:2,name:"join_request",kind:"scalar",T:12}]),em=p.makeEnum("livekit.WrappedJoinRequest.Compression",[{no:0,name:"NONE"},{no:1,name:"GZIP"}]),tm=p.makeMessageType("livekit.MediaSectionsRequirement",()=>[{no:1,name:"num_audios",kind:"scalar",T:13},{no:2,name:"num_videos",kind:"scalar",T:13}]),nm=p.makeEnum("livekit.EncodedFileType",[{no:0,name:"DEFAULT_FILETYPE"},{no:1,name:"MP4"},{no:2,name:"OGG"},{no:3,name:"MP3"}]),im=p.makeEnum("livekit.SegmentedFileProtocol",[{no:0,name:"DEFAULT_SEGMENTED_FILE_PROTOCOL"},{no:1,name:"HLS_PROTOCOL"}]),rm=p.makeEnum("livekit.SegmentedFileSuffix",[{no:0,name:"INDEX"},{no:1,name:"TIMESTAMP"}]),sm=p.makeEnum("livekit.ImageFileSuffix",[{no:0,name:"IMAGE_SUFFIX_INDEX"},{no:1,name:"IMAGE_SUFFIX_TIMESTAMP"},{no:2,name:"IMAGE_SUFFIX_NONE_OVERWRITE"}]),am=p.makeEnum("livekit.StreamProtocol",[{no:0,name:"DEFAULT_PROTOCOL"},{no:1,name:"RTMP"},{no:2,name:"SRT"}]),om=p.makeEnum("livekit.AudioMixing",[{no:0,name:"DEFAULT_MIXING"},{no:1,name:"DUAL_CHANNEL_AGENT"},{no:2,name:"DUAL_CHANNEL_ALTERNATE"}]),bo=p.makeEnum("livekit.EncodingOptionsPreset",[{no:0,name:"H264_720P_30"},{no:1,name:"H264_720P_60"},{no:2,name:"H264_1080P_30"},{no:3,name:"H264_1080P_60"},{no:4,name:"PORTRAIT_H264_720P_30"},{no:5,name:"PORTRAIT_H264_720P_60"},{no:6,name:"PORTRAIT_H264_1080P_30"},{no:7,name:"PORTRAIT_H264_1080P_60"}]),cm=p.makeMessageType("livekit.RoomCompositeEgressRequest",()=>[{no:1,name:"room_name",kind:"scalar",T:9},{no:2,name:"layout",kind:"scalar",T:9},{no:3,name:"audio_only",kind:"scalar",T:8},{no:15,name:"audio_mixing",kind:"enum",T:p.getEnumType(om)},{no:4,name:"video_only",kind:"scalar",T:8},{no:5,name:"custom_base_url",kind:"scalar",T:9},{no:6,name:"file",kind:"message",T:Er,oneof:"output"},{no:7,name:"stream",kind:"message",T:To,oneof:"output"},{no:10,name:"segments",kind:"message",T:wr,oneof:"output"},{no:8,name:"preset",kind:"enum",T:p.getEnumType(bo),oneof:"options"},{no:9,name:"advanced",kind:"message",T:So,oneof:"options"},{no:11,name:"file_outputs",kind:"message",T:Er,repeated:!0},{no:12,name:"stream_outputs",kind:"message",T:To,repeated:!0},{no:13,name:"segment_outputs",kind:"message",T:wr,repeated:!0},{no:14,name:"image_outputs",kind:"message",T:dm,repeated:!0},{no:16,name:"webhooks",kind:"message",T:Sh,repeated:!0}]),Er=p.makeMessageType("livekit.EncodedFileOutput",()=>[{no:1,name:"file_type",kind:"enum",T:p.getEnumType(nm)},{no:2,name:"filepath",kind:"scalar",T:9},{no:6,name:"disable_manifest",kind:"scalar",T:8},{no:3,name:"s3",kind:"message",T:yi,oneof:"output"},{no:4,name:"gcp",kind:"message",T:bi,oneof:"output"},{no:5,name:"azure",kind:"message",T:ki,oneof:"output"},{no:7,name:"aliOSS",kind:"message",T:Ti,oneof:"output"}]),wr=p.makeMessageType("livekit.SegmentedFileOutput",()=>[{no:1,name:"protocol",kind:"enum",T:p.getEnumType(im)},{no:2,name:"filename_prefix",kind:"scalar",T:9},{no:3,name:"playlist_name",kind:"scalar",T:9},{no:11,name:"live_playlist_name",kind:"scalar",T:9},{no:4,name:"segment_duration",kind:"scalar",T:13},{no:10,name:"filename_suffix",kind:"enum",T:p.getEnumType(rm)},{no:8,name:"disable_manifest",kind:"scalar",T:8},{no:5,name:"s3",kind:"message",T:yi,oneof:"output"},{no:6,name:"gcp",kind:"message",T:bi,oneof:"output"},{no:7,name:"azure",kind:"message",T:ki,oneof:"output"},{no:9,name:"aliOSS",kind:"message",T:Ti,oneof:"output"}]),dm=p.makeMessageType("livekit.ImageOutput",()=>[{no:1,name:"capture_interval",kind:"scalar",T:13},{no:2,name:"width",kind:"scalar",T:5},{no:3,name:"height",kind:"scalar",T:5},{no:4,name:"filename_prefix",kind:"scalar",T:9},{no:5,name:"filename_suffix",kind:"enum",T:p.getEnumType(sm)},{no:6,name:"image_codec",kind:"enum",T:p.getEnumType(hh)},{no:7,name:"disable_manifest",kind:"scalar",T:8},{no:8,name:"s3",kind:"message",T:yi,oneof:"output"},{no:9,name:"gcp",kind:"message",T:bi,oneof:"output"},{no:10,name:"azure",kind:"message",T:ki,oneof:"output"},{no:11,name:"aliOSS",kind:"message",T:Ti,oneof:"output"}]),yi=p.makeMessageType("livekit.S3Upload",()=>[{no:1,name:"access_key",kind:"scalar",T:9},{no:2,name:"secret",kind:"scalar",T:9},{no:11,name:"session_token",kind:"scalar",T:9},{no:12,name:"assume_role_arn",kind:"scalar",T:9},{no:13,name:"assume_role_external_id",kind:"scalar",T:9},{no:3,name:"region",kind:"scalar",T:9},{no:4,name:"endpoint",kind:"scalar",T:9},{no:5,name:"bucket",kind:"scalar",T:9},{no:6,name:"force_path_style",kind:"scalar",T:8},{no:7,name:"metadata",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:8,name:"tagging",kind:"scalar",T:9},{no:9,name:"content_disposition",kind:"scalar",T:9},{no:10,name:"proxy",kind:"message",T:ko}]),bi=p.makeMessageType("livekit.GCPUpload",()=>[{no:1,name:"credentials",kind:"scalar",T:9},{no:2,name:"bucket",kind:"scalar",T:9},{no:3,name:"proxy",kind:"message",T:ko}]),ki=p.makeMessageType("livekit.AzureBlobUpload",()=>[{no:1,name:"account_name",kind:"scalar",T:9},{no:2,name:"account_key",kind:"scalar",T:9},{no:3,name:"container_name",kind:"scalar",T:9}]),Ti=p.makeMessageType("livekit.AliOSSUpload",()=>[{no:1,name:"access_key",kind:"scalar",T:9},{no:2,name:"secret",kind:"scalar",T:9},{no:3,name:"region",kind:"scalar",T:9},{no:4,name:"endpoint",kind:"scalar",T:9},{no:5,name:"bucket",kind:"scalar",T:9}]),ko=p.makeMessageType("livekit.ProxyConfig",()=>[{no:1,name:"url",kind:"scalar",T:9},{no:2,name:"username",kind:"scalar",T:9},{no:3,name:"password",kind:"scalar",T:9}]),To=p.makeMessageType("livekit.StreamOutput",()=>[{no:1,name:"protocol",kind:"enum",T:p.getEnumType(am)},{no:2,name:"urls",kind:"scalar",T:9,repeated:!0}]),So=p.makeMessageType("livekit.EncodingOptions",()=>[{no:1,name:"width",kind:"scalar",T:5},{no:2,name:"height",kind:"scalar",T:5},{no:3,name:"depth",kind:"scalar",T:5},{no:4,name:"framerate",kind:"scalar",T:5},{no:5,name:"audio_codec",kind:"enum",T:p.getEnumType(uh)},{no:6,name:"audio_bitrate",kind:"scalar",T:5},{no:11,name:"audio_quality",kind:"scalar",T:5},{no:7,name:"audio_frequency",kind:"scalar",T:5},{no:8,name:"video_codec",kind:"enum",T:p.getEnumType(lh)},{no:9,name:"video_bitrate",kind:"scalar",T:5},{no:12,name:"video_quality",kind:"scalar",T:5},{no:10,name:"key_frame_interval",kind:"scalar",T:1}]),um=p.makeMessageType("livekit.AutoParticipantEgress",()=>[{no:1,name:"preset",kind:"enum",T:p.getEnumType(bo),oneof:"options"},{no:2,name:"advanced",kind:"message",T:So,oneof:"options"},{no:3,name:"file_outputs",kind:"message",T:Er,repeated:!0},{no:4,name:"segment_outputs",kind:"message",T:wr,repeated:!0}]),lm=p.makeMessageType("livekit.AutoTrackEgress",()=>[{no:1,name:"filepath",kind:"scalar",T:9},{no:5,name:"disable_manifest",kind:"scalar",T:8},{no:2,name:"s3",kind:"message",T:yi,oneof:"output"},{no:3,name:"gcp",kind:"message",T:bi,oneof:"output"},{no:4,name:"azure",kind:"message",T:ki,oneof:"output"},{no:6,name:"aliOSS",kind:"message",T:Ti,oneof:"output"}]),hm=p.makeMessageType("livekit.RoomEgress",()=>[{no:1,name:"room",kind:"message",T:cm},{no:3,name:"participant",kind:"message",T:um},{no:2,name:"tracks",kind:"message",T:lm}]),Si=p.makeMessageType("livekit.RoomConfiguration",()=>[{no:1,name:"name",kind:"scalar",T:9},{no:2,name:"empty_timeout",kind:"scalar",T:13},{no:3,name:"departure_timeout",kind:"scalar",T:13},{no:4,name:"max_participants",kind:"scalar",T:13},{no:11,name:"metadata",kind:"scalar",T:9},{no:5,name:"egress",kind:"message",T:hm},{no:7,name:"min_playout_delay",kind:"scalar",T:13},{no:8,name:"max_playout_delay",kind:"scalar",T:13},{no:9,name:"sync_streams",kind:"scalar",T:8},{no:10,name:"agents",kind:"message",T:pr,repeated:!0}]),mm=p.makeMessageType("livekit.TokenSourceRequest",()=>[{no:1,name:"room_name",kind:"scalar",T:9,opt:!0},{no:2,name:"participant_name",kind:"scalar",T:9,opt:!0},{no:3,name:"participant_identity",kind:"scalar",T:9,opt:!0},{no:4,name:"participant_metadata",kind:"scalar",T:9,opt:!0},{no:5,name:"participant_attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:6,name:"room_config",kind:"message",T:Si,opt:!0}]),Co=p.makeMessageType("livekit.TokenSourceResponse",()=>[{no:1,name:"server_url",kind:"scalar",T:9},{no:2,name:"participant_token",kind:"scalar",T:9}]);function fm(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Ci={exports:{}},pm=Ci.exports,Eo;function gm(){return Eo||(Eo=1,function(n){(function(e,t){n.exports?n.exports=t():e.log=t()})(pm,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={},c=null;function a(g,C){var T=g[C];if(typeof T.bind=="function")return T.bind(g);try{return Function.prototype.bind.call(T,g)}catch{return function(){return Function.prototype.apply.apply(T,[g,arguments])}}}function o(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function d(g){return g==="debug"&&(g="log"),typeof console===t?!1:g==="trace"&&i?o:console[g]!==void 0?a(console,g):console.log!==void 0?a(console,"log"):e}function u(){for(var g=this.getLevel(),C=0;C<r.length;C++){var T=r[C];this[T]=C<g?e:this.methodFactory(T,g,this.name)}if(this.log=this.debug,typeof console===t&&g<this.levels.SILENT)return"No console available for logging"}function l(g){return function(){typeof console!==t&&(u.call(this),this[g].apply(this,arguments))}}function h(g,C,T){return d(g)||l.apply(this,arguments)}function f(g,C){var T=this,_,M,v,b="loglevel";typeof g=="string"?b+=":"+g:typeof g=="symbol"&&(b=void 0);function S(R){var N=(r[R]||"silent").toUpperCase();if(!(typeof window===t||!b)){try{window.localStorage[b]=N;return}catch{}try{window.document.cookie=encodeURIComponent(b)+"="+N+";"}catch{}}}function L(){var R;if(!(typeof window===t||!b)){try{R=window.localStorage[b]}catch{}if(typeof R===t)try{var N=window.document.cookie,H=encodeURIComponent(b),Y=N.indexOf(H+"=");Y!==-1&&(R=/^([^;]+)/.exec(N.slice(Y+H.length+1))[1])}catch{}return T.levels[R]===void 0&&(R=void 0),R}}function F(){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 x(R){var N=R;if(typeof N=="string"&&T.levels[N.toUpperCase()]!==void 0&&(N=T.levels[N.toUpperCase()]),typeof N=="number"&&N>=0&&N<=T.levels.SILENT)return N;throw new TypeError("log.setLevel() called with invalid level: "+R)}T.name=g,T.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},T.methodFactory=C||h,T.getLevel=function(){return v??M??_},T.setLevel=function(R,N){return v=x(R),N!==!1&&S(v),u.call(T)},T.setDefaultLevel=function(R){M=x(R),L()||T.setLevel(R,!1)},T.resetLevel=function(){v=null,F(),u.call(T)},T.enableAll=function(R){T.setLevel(T.levels.TRACE,R)},T.disableAll=function(R){T.setLevel(T.levels.SILENT,R)},T.rebuild=function(){if(c!==T&&(_=x(c.getLevel())),u.call(T),c===T)for(var R in s)s[R].rebuild()},_=x(c?c.getLevel():"WARN");var k=L();k!=null&&(v=x(k)),u.call(T)}c=new f,c.getLogger=function(C){if(typeof C!="symbol"&&typeof C!="string"||C==="")throw new TypeError("You must supply a name when creating a logger.");var T=s[C];return T||(T=s[C]=new f(C,c.methodFactory)),T};var y=typeof window!==t?window.log:void 0;return c.noConflict=function(){return typeof window!==t&&window.log===c&&(window.log=y),c},c.getLoggers=function(){return s},c.default=c,c})}(Ci)),Ci.exports}var Mn=gm(),un;(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"})(un||(un={}));var We;(function(n){n.Default="livekit",n.Room="livekit-room",n.TokenSource="livekit-token-source",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",n.DataTracks="livekit-data-tracks"})(We||(We={}));let W=Mn.getLogger("livekit");const wo=Object.values(We).map(n=>Mn.getLogger(n));W.setDefaultLevel(un.info);function rt(n){const e=Mn.getLogger(n);return e.setDefaultLevel(W.getLevel()),e}function vm(n,e){if(e)Mn.getLogger(e).setLevel(n);else for(const t of wo)t.setLevel(n)}function ym(n,e){(e?[e]:wo).forEach(i=>{const r=i.methodFactory;i.methodFactory=(s,c,a)=>{const o=r(s,c,a),d=un[s],u=d>=c&&d<un.silent;return(l,h)=>{h?o(l,h):o(l),u&&n(d,l,h)}},i.setLevel(i.getLevel())})}const bm=Mn.getLogger("lk-e2ee"),Dn=7e3,km=[0,300,2*2*300,3*3*300,4*4*300,Dn,Dn,Dn,Dn,Dn];class _o{constructor(e){this._retryDelays=e!==void 0?[...e]:km}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 _r(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 m(n,e,t,i){function r(s){return s instanceof t?s:new t(function(c){c(s)})}return new(t||(t=Promise))(function(s,c){function a(u){try{d(i.next(u))}catch(l){c(l)}}function o(u){try{d(i.throw(u))}catch(l){c(l)}}function d(u){u.done?s(u.value):r(u.value).then(a,o)}d((i=i.apply(n,e||[])).next())})}function Ro(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 Tt(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 Ro=="function"?Ro(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(c){return new Promise(function(a,o){c=n[s](c),r(a,o,c.done,c.value)})}}function r(s,c,a,o){Promise.resolve(o).then(function(d){s({value:d,done:a})},c)}}typeof SuppressedError=="function"&&SuppressedError;var Ei={exports:{}},Po;function Tm(){if(Po)return Ei.exports;Po=1;var n=typeof Reflect=="object"?Reflect:null,e=n&&typeof n.apply=="function"?n.apply:function(b,S,L){return Function.prototype.apply.call(b,S,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)}Ei.exports=s,Ei.exports.once=T,s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var c=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 c},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+".");c=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 o(v){return v._maxListeners===void 0?s.defaultMaxListeners:v._maxListeners}s.prototype.getMaxListeners=function(){return o(this)},s.prototype.emit=function(b){for(var S=[],L=1;L<arguments.length;L++)S.push(arguments[L]);var F=b==="error",x=this._events;if(x!==void 0)F=F&&x.error===void 0;else if(!F)return!1;if(F){var k;if(S.length>0&&(k=S[0]),k instanceof Error)throw k;var R=new Error("Unhandled error."+(k?" ("+k.message+")":""));throw R.context=k,R}var N=x[b];if(N===void 0)return!1;if(typeof N=="function")e(N,this,S);else for(var H=N.length,Y=y(N,H),L=0;L<H;++L)e(Y[L],this,S);return!0};function d(v,b,S,L){var F,x,k;if(a(S),x=v._events,x===void 0?(x=v._events=Object.create(null),v._eventsCount=0):(x.newListener!==void 0&&(v.emit("newListener",b,S.listener?S.listener:S),x=v._events),k=x[b]),k===void 0)k=x[b]=S,++v._eventsCount;else if(typeof k=="function"?k=x[b]=L?[S,k]:[k,S]:L?k.unshift(S):k.push(S),F=o(v),F>0&&k.length>F&&!k.warned){k.warned=!0;var R=new Error("Possible EventEmitter memory leak detected. "+k.length+" "+String(b)+" listeners added. Use emitter.setMaxListeners() to increase limit");R.name="MaxListenersExceededWarning",R.emitter=v,R.type=b,R.count=k.length,i(R)}return v}s.prototype.addListener=function(b,S){return d(this,b,S,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(b,S){return d(this,b,S,!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,S){var L={fired:!1,wrapFn:void 0,target:v,type:b,listener:S},F=u.bind(L);return F.listener=S,L.wrapFn=F,F}s.prototype.once=function(b,S){return a(S),this.on(b,l(this,b,S)),this},s.prototype.prependOnceListener=function(b,S){return a(S),this.prependListener(b,l(this,b,S)),this},s.prototype.removeListener=function(b,S){var L,F,x,k,R;if(a(S),F=this._events,F===void 0)return this;if(L=F[b],L===void 0)return this;if(L===S||L.listener===S)--this._eventsCount===0?this._events=Object.create(null):(delete F[b],F.removeListener&&this.emit("removeListener",b,L.listener||S));else if(typeof L!="function"){for(x=-1,k=L.length-1;k>=0;k--)if(L[k]===S||L[k].listener===S){R=L[k].listener,x=k;break}if(x<0)return this;x===0?L.shift():g(L,x),L.length===1&&(F[b]=L[0]),F.removeListener!==void 0&&this.emit("removeListener",b,R||S)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(b){var S,L,F;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 x=Object.keys(L),k;for(F=0;F<x.length;++F)k=x[F],k!=="removeListener"&&this.removeAllListeners(k);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(S=L[b],typeof S=="function")this.removeListener(b,S);else if(S!==void 0)for(F=S.length-1;F>=0;F--)this.removeListener(b,S[F]);return this};function h(v,b,S){var L=v._events;if(L===void 0)return[];var F=L[b];return F===void 0?[]:typeof F=="function"?S?[F.listener||F]:[F]:S?C(F):y(F,F.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):f.call(v,b)},s.prototype.listenerCount=f;function f(v){var b=this._events;if(b!==void 0){var S=b[v];if(typeof S=="function")return 1;if(S!==void 0)return S.length}return 0}s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]};function y(v,b){for(var S=new Array(b),L=0;L<b;++L)S[L]=v[L];return S}function g(v,b){for(;b+1<v.length;b++)v[b]=v[b+1];v.pop()}function C(v){for(var b=new Array(v.length),S=0;S<b.length;++S)b[S]=v[S].listener||v[S];return b}function T(v,b){return new Promise(function(S,L){function F(k){v.removeListener(b,x),L(k)}function x(){typeof v.removeListener=="function"&&v.removeListener("error",F),S([].slice.call(arguments))}M(v,b,x,{once:!0}),b!=="error"&&_(v,F,{once:!0})})}function _(v,b,S){typeof v.on=="function"&&M(v,"error",b,S)}function M(v,b,S,L){if(typeof v.on=="function")L.once?v.once(b,S):v.on(b,S);else if(typeof v.addEventListener=="function")v.addEventListener(b,function F(x){L.once&&v.removeEventListener(b,F),S(x)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof v)}return Ei.exports}var ht=Tm();let Io=!0,Oo=!0;function An(n,e,t){const i=n.match(e);return i&&i.length>=t&&parseFloat(i[t],10)}function Wt(n,e,t){if(!n.RTCPeerConnection)return;const i=n.RTCPeerConnection.prototype,r=i.addEventListener;i.addEventListener=function(c,a){if(c!==e)return r.apply(this,arguments);const o=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,o),r.apply(this,[c,o])};const s=i.removeEventListener;i.removeEventListener=function(c,a){if(c!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(a))return s.apply(this,arguments);const o=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,[c,o])},Object.defineProperty(i,"on"+e,{get(){return this["_on"+e]},set(c){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),c&&this.addEventListener(e,this["_on"+e]=c)},enumerable:!0,configurable:!0})}function Sm(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(Io=n,n?"adapter.js logging disabled":"adapter.js logging enabled")}function Cm(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(Oo=!n,"adapter.js deprecation warnings "+(n?"disabled":"enabled"))}function Mo(){if(typeof window=="object"){if(Io)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Rr(n,e){Oo&&console.warn(n+" is deprecated, please use "+e+" instead.")}function Em(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(An(t.userAgent,/Firefox\/(\d+)\./,1));else if(t.webkitGetUserMedia||n.isSecureContext===!1&&n.webkitRTCPeerConnection)e.browser="chrome",e.version=parseInt(An(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2));else if(n.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=parseInt(An(t.userAgent,/AppleWebKit\/(\d+)\./,1)),e.supportsUnifiedPlan=n.RTCRtpTransceiver&&"currentDirection"in n.RTCRtpTransceiver.prototype,e._safariVersion=An(t.userAgent,/Version\/(\d+(\.?\d+))/,1);else return e.browser="Not a supported browser.",e;return e}function Do(n){return Object.prototype.toString.call(n)==="[object Object]"}function Ao(n){return Do(n)?Object.keys(n).reduce(function(e,t){const i=Do(n[t]),r=i?Ao(n[t]):n[t],s=i&&!Object.keys(r).length;return r===void 0||s?e:Object.assign(e,{[t]:r})},{}):n}function Pr(n,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(i=>{i.endsWith("Id")?Pr(n,n.get(e[i]),t):i.endsWith("Ids")&&e[i].forEach(r=>{Pr(n,n.get(r),t)})}))}function xo(n,e,t){const i=t?"outbound-rtp":"inbound-rtp",r=new Map;if(e===null)return r;const s=[];return n.forEach(c=>{c.type==="track"&&c.trackIdentifier===e.id&&s.push(c)}),s.forEach(c=>{n.forEach(a=>{a.type===i&&a.trackId===c.id&&Pr(n,a,r)})}),r}const Lo=Mo;function No(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 o={};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,f){return h?h+f.charAt(0).toUpperCase()+f.slice(1):f==="deviceId"?"sourceId":f};if(u.ideal!==void 0){o.optional=o.optional||[];let h={};typeof u.ideal=="number"?(h[l("min",d)]=u.ideal,o.optional.push(h),h={},h[l("max",d)]=u.ideal,o.optional.push(h)):(h[l("",d)]=u.ideal,o.optional.push(h))}u.exact!==void 0&&typeof u.exact!="number"?(o.mandatory=o.mandatory||{},o.mandatory[l("",d)]=u.exact):["min","max"].forEach(h=>{u[h]!==void 0&&(o.mandatory=o.mandatory||{},o.mandatory[l(h,d)]=u[h])})}),a.advanced&&(o.optional=(o.optional||[]).concat(a.advanced)),o},r=function(a,o){if(e.version>=61)return o(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(y=>y.kind==="videoinput");let f=h.find(y=>l.some(g=>y.label.toLowerCase().includes(g)));return!f&&h.length&&l.includes("back")&&(f=h[h.length-1]),f&&(a.video.deviceId=d.exact?{exact:f.deviceId}:{ideal:f.deviceId}),a.video=i(a.video),Lo("chrome: "+JSON.stringify(a)),o(a)})}a.video=i(a.video)}return Lo("chrome: "+JSON.stringify(a)),o(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}}},c=function(a,o,d){r(a,u=>{t.webkitGetUserMedia(u,o,l=>{d&&d(s(l))})})};if(t.getUserMedia=c.bind(t),t.mediaDevices.getUserMedia){const a=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(o){return r(o,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 Uo(n){n.MediaStream=n.MediaStream||n.webkitMediaStream}function Fo(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 c=new Event("track");c.track=r.track,c.receiver=s,c.transceiver={receiver:s},c.streams=[i.stream],this.dispatchEvent(c)}),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 c=new Event("track");c.track=r,c.receiver=s,c.transceiver={receiver:s},c.streams=[i.stream],this.dispatchEvent(c)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else Wt(n,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function Bo(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,o){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 o=this._senders.indexOf(a);o!==-1&&this._senders.splice(o,1)}}const t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(s){this._senders=this._senders||[],t.apply(this,[s]),s.getTracks().forEach(c=>{this._senders.push(e(this,c))})};const i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(s){this._senders=this._senders||[],i.apply(this,[s]),s.getTracks().forEach(c=>{const a=this._senders.find(o=>o.track===c);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 jo(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(c=>c._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(c=>xo(c,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}),Wt(n,"track",i=>(i.receiver._pc=i.srcElement,i)),n.RTCRtpReceiver.prototype.getStats=function(){const r=this;return this._pc.getStats().then(s=>xo(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,c;return this.getSenders().forEach(a=>{a.track===i&&(r?c=!0:r=a)}),this.getReceivers().forEach(a=>(a.track===i&&(s?c=!0:s=a),a.track===i)),c||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 Vo(n){n.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(c=>this._shimmedLocalStreams[c][0])};const e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(c,a){if(!a)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const o=e.apply(this,arguments);return this._shimmedLocalStreams[a.id]?this._shimmedLocalStreams[a.id].indexOf(o)===-1&&this._shimmedLocalStreams[a.id].push(o):this._shimmedLocalStreams[a.id]=[a,o],o};const t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(c){this._shimmedLocalStreams=this._shimmedLocalStreams||{},c.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 o=this.getSenders().filter(d=>a.indexOf(d)===-1);this._shimmedLocalStreams[c.id]=[c].concat(o)};const i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(c){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[c.id],i.apply(this,arguments)};const r=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(c){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},c&&Object.keys(this._shimmedLocalStreams).forEach(a=>{const o=this._shimmedLocalStreams[a].indexOf(c);o!==-1&&this._shimmedLocalStreams[a].splice(o,1),this._shimmedLocalStreams[a].length===1&&delete this._shimmedLocalStreams[a]}),r.apply(this,arguments)}}function qo(n,e){if(!n.RTCPeerConnection)return;if(n.RTCPeerConnection.prototype.addTrack&&e.version>=65)return Vo(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(f=>f.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(g=>g===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(g=>g.track===u))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const y=this._streams[l.id];if(y)y.addTrack(u),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const g=new n.MediaStream([u]);this._streams[l.id]=g,this._reverseStreams[g.id]=l,this.addStream(g)}return this.getSenders().find(g=>g.track===u)};function s(d,u){let l=u.sdp;return Object.keys(d._reverseStreams||[]).forEach(h=>{const f=d._reverseStreams[h],y=d._streams[f.id];l=l.replace(new RegExp(y.id,"g"),f.id)}),new RTCSessionDescription({type:u.type,sdp:l})}function c(d,u){let l=u.sdp;return Object.keys(d._reverseStreams||[]).forEach(h=>{const f=d._reverseStreams[h],y=d._streams[f.id];l=l.replace(new RegExp(f.id,"g"),y.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,[y=>{const g=s(this,y);h[0].apply(null,[g])},y=>{h[1]&&h[1].apply(null,y)},arguments[2]]):u.apply(this,arguments).then(y=>s(this,y))}};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]=c(this,arguments[0]),a.apply(this,arguments))};const o=Object.getOwnPropertyDescriptor(n.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(n.RTCPeerConnection.prototype,"localDescription",{get(){const d=o.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(f=>{this._streams[f].getTracks().find(g=>u.track===g)&&(h=this._streams[f])}),h&&(h.getTracks().length===1?this.removeStream(this._reverseStreams[h.id]):h.removeTrack(u.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Ir(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 Ko(n,e){Wt(n,"negotiationneeded",t=>{const i=t.target;if(!((e.version<72||i.getConfiguration&&i.getConfiguration().sdpSemantics==="plan-b")&&i.signalingState!=="stable"))return t})}var Wo=Object.freeze({__proto__:null,fixNegotiationNeeded:Ko,shimAddTrackRemoveTrack:qo,shimAddTrackRemoveTrackWithNative:Vo,shimGetSendersWithDtmf:Bo,shimGetUserMedia:No,shimMediaStream:Uo,shimOnTrack:Fo,shimPeerConnection:Ir,shimSenderReceiverGetStats:jo});function Ho(n,e){const t=n&&n.navigator,i=n&&n.MediaStreamTrack;if(t.getUserMedia=function(r,s,c){Rr("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(r).then(s,c)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){const r=function(c,a,o){a in c&&!(o in c)&&(c[o]=c[a],delete c[a])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(t.mediaDevices.getUserMedia=function(c){return typeof c=="object"&&typeof c.audio=="object"&&(c=JSON.parse(JSON.stringify(c)),r(c.audio,"autoGainControl","mozAutoGainControl"),r(c.audio,"noiseSuppression","mozNoiseSuppression")),s(c)},i&&i.prototype.getSettings){const c=i.prototype.getSettings;i.prototype.getSettings=function(){const a=c.apply(this,arguments);return r(a,"mozAutoGainControl","autoGainControl"),r(a,"mozNoiseSuppression","noiseSuppression"),a}}if(i&&i.prototype.applyConstraints){const c=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")),c.apply(this,[a])}}}}function wm(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 Jo(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 Or(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],c={[r](){return arguments[0]=new(r==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),s.apply(this,arguments)}};n.RTCPeerConnection.prototype[r]=c[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,c,a]=arguments;return i.apply(this,[s||null]).then(o=>{if(e.version<53&&!c)try{o.forEach(d=>{d.type=t[d.type]||d.type})}catch(d){if(d.name!=="TypeError")throw d;o.forEach((u,l)=>{o.set(l,Object.assign({},u,{type:t[u.type]||u.type}))})}return o}).then(c,a)}}function Go(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 zo(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}),Wt(n,"track",t=>(t.receiver._pc=t.srcElement,t)),n.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function $o(n){!n.RTCPeerConnection||"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){Rr("removeStream","removeTrack"),this.getSenders().forEach(i=>{i.track&&t.getTracks().includes(i.track)&&this.removeTrack(i)})})}function Qo(n){n.DataChannel&&!n.RTCDataChannel&&(n.RTCDataChannel=n.DataChannel)}function Yo(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(c=>{if("rid"in c&&!/^[a-z0-9]{0,16}$/i.test(c.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in c&&!(parseFloat(c.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in c&&!(parseFloat(c.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const s=e.apply(this,arguments);if(r){const{sender:c}=s,a=c.getParameters();(!("encodings"in a)||a.encodings.length===1&&Object.keys(a.encodings[0]).length===0)&&(a.encodings=i,c.sendEncodings=i,this.setParametersPromises.push(c.setParameters(a).then(()=>{delete c.sendEncodings}).catch(()=>{delete c.sendEncodings})))}return s})}function Xo(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 Zo(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 ec(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 tc=Object.freeze({__proto__:null,shimAddTransceiver:Yo,shimCreateAnswer:ec,shimCreateOffer:Zo,shimGetDisplayMedia:wm,shimGetParameters:Xo,shimGetUserMedia:Ho,shimOnTrack:Jo,shimPeerConnection:Or,shimRTCDataChannel:Qo,shimReceiverGetStats:zo,shimRemoveStream:$o,shimSenderGetStats:Go});function nc(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),c=1;c<r;c++)s[c-1]=arguments[c];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 ic(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 c=new Event("addstream");c.stream=s,i.dispatchEvent(c)})}),e.apply(i,arguments)}}}function rc(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,c=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(o,d,u){const l=r.apply(this,[o]);return u?(l.then(d,u),Promise.resolve()):l};e.setLocalDescription=a,a=function(o,d,u){const l=s.apply(this,[o]);return u?(l.then(d,u),Promise.resolve()):l},e.setRemoteDescription=a,a=function(o,d,u){const l=c.apply(this,[o]);return u?(l.then(d,u),Promise.resolve()):l},e.addIceCandidate=a}function sc(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(ac(r))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=(function(i,r,s){e.mediaDevices.getUserMedia(i).then(r,s)}).bind(e))}function ac(n){return n&&n.video!==void 0?Object.assign({},n,{video:Ao(n.video)}):n}function oc(n){if(!n.RTCPeerConnection)return;const e=n.RTCPeerConnection;n.RTCPeerConnection=function(i,r){if(i&&i.iceServers){const s=[];for(let c=0;c<i.iceServers.length;c++){let a=i.iceServers[c];a.urls===void 0&&a.url?(Rr("RTCIceServer.url","RTCIceServer.urls"),a=JSON.parse(JSON.stringify(a)),a.urls=a.url,delete a.url,s.push(a)):s.push(i.iceServers[c])}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 cc(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 dc(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(c=>c.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(c=>c.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 uc(n){typeof n!="object"||n.AudioContext||(n.AudioContext=n.webkitAudioContext)}var lc=Object.freeze({__proto__:null,shimAudioContext:uc,shimCallbacksAPI:rc,shimConstraints:ac,shimCreateOfferLegacy:dc,shimGetUserMedia:sc,shimLocalStreamsAPI:nc,shimRTCIceServerUrls:oc,shimRemoteStreamsAPI:ic,shimTrackEventTransceiver:cc}),Mr={exports:{}},hc;function _m(){return hc||(hc=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
|