@d-id/client-sdk 1.1.0-beta.25 → 1.1.0-beta.26
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 +69 -69
- package/dist/index.umd.cjs +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -51,7 +51,7 @@ class Re extends Z {
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
var _e = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(_e || {}), Se = /* @__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))(Se || {}), Ee = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(Ee || {}), Ie = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(Ie || {}),
|
|
54
|
+
var _e = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(_e || {}), Se = /* @__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))(Se || {}), Ee = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(Ee || {}), Ie = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(Ie || {}), A = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e.Off = "Off", e))(A || {}), q = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(q || {}), Me = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(Me || {}), Te = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(Te || {}), je = /* @__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))(je || {}), ce = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(ce || {});
|
|
55
55
|
const be = (e) => {
|
|
56
56
|
switch (e) {
|
|
57
57
|
case "clip":
|
|
@@ -63,10 +63,10 @@ const be = (e) => {
|
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
65
|
var p = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(p || {}), Q = /* @__PURE__ */ ((e) => (e.Strong = "STRONG", e.Weak = "WEAK", e.Unknown = "UNKNOWN", e))(Q || {}), X = /* @__PURE__ */ ((e) => (e.Idle = "IDLE", e.Talking = "TALKING", e))(X || {}), J = /* @__PURE__ */ ((e) => (e.ChatAnswer = "chat/answer", e.ChatPartial = "chat/partial", 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))(J || {}), j = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Closed = "closed", e.Completed = "completed", e.Disconnected = "disconnected", e))(j || {}), U = /* @__PURE__ */ ((e) => (e.Legacy = "legacy", e.Fluent = "fluent", e))(U || {}), Pe = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(Pe || {}), Ae = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(Ae || {});
|
|
66
|
-
const $e = 45 * 1e3, Be = "X-Playground-Chat", O = "https://api.d-id.com", Le = "wss://notifications.d-id.com", ze = "79f81a83a67430be2bc0fd61042b8faa",
|
|
66
|
+
const $e = 45 * 1e3, Be = "X-Playground-Chat", O = "https://api.d-id.com", Le = "wss://notifications.d-id.com", ze = "79f81a83a67430be2bc0fd61042b8faa", de = (e) => new Promise((t) => setTimeout(t, e)), V = (e = 16) => {
|
|
67
67
|
const t = new Uint8Array(e);
|
|
68
68
|
return window.crypto.getRandomValues(t), Array.from(t, (a) => a.toString(16).padStart(2, "0")).join("").slice(0, 13);
|
|
69
|
-
}, Ne = (e) => [
|
|
69
|
+
}, Ne = (e) => [A.TextOnly, A.Playground, A.Maintenance].includes(e), le = (e) => e && [A.DirectPlayback, A.Off].includes(e);
|
|
70
70
|
function xe(e, t) {
|
|
71
71
|
let a;
|
|
72
72
|
return {
|
|
@@ -76,7 +76,7 @@ function xe(e, t) {
|
|
|
76
76
|
clear: () => clearTimeout(a)
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
|
-
async function
|
|
79
|
+
async function te(e, t) {
|
|
80
80
|
const a = {
|
|
81
81
|
limit: (t == null ? void 0 : t.limit) ?? 3,
|
|
82
82
|
delayMs: (t == null ? void 0 : t.delayMs) ?? 0,
|
|
@@ -99,7 +99,7 @@ async function re(e, t) {
|
|
|
99
99
|
} catch (i) {
|
|
100
100
|
if (n = i, !a.shouldRetryFn(i) || s >= a.limit)
|
|
101
101
|
throw i;
|
|
102
|
-
await
|
|
102
|
+
await de(a.delayMs), a.onRetry(i);
|
|
103
103
|
}
|
|
104
104
|
throw n;
|
|
105
105
|
}
|
|
@@ -121,13 +121,13 @@ function fe(e) {
|
|
|
121
121
|
return `Client-Key ${e.clientKey}.${ue()}_${Fe}`;
|
|
122
122
|
throw new Error(`Unknown auth type: ${e}`);
|
|
123
123
|
}
|
|
124
|
-
const Je = (e) =>
|
|
124
|
+
const Je = (e) => te(e, {
|
|
125
125
|
limit: 3,
|
|
126
126
|
delayMs: 1e3,
|
|
127
127
|
timeout: 0,
|
|
128
128
|
shouldRetryFn: (t) => t.status === 429
|
|
129
129
|
});
|
|
130
|
-
function
|
|
130
|
+
function ae(e, t = O, a) {
|
|
131
131
|
const n = async (s, i) => {
|
|
132
132
|
const {
|
|
133
133
|
skipErrorHandler: o,
|
|
@@ -182,7 +182,7 @@ function ie(e, t = O, a) {
|
|
|
182
182
|
};
|
|
183
183
|
}
|
|
184
184
|
function me(e, t = O, a) {
|
|
185
|
-
const n =
|
|
185
|
+
const n = ae(e, `${t}/agents`, a);
|
|
186
186
|
return {
|
|
187
187
|
create(s, i) {
|
|
188
188
|
return n.post("/", s, i);
|
|
@@ -238,7 +238,7 @@ function We(e) {
|
|
|
238
238
|
}
|
|
239
239
|
};
|
|
240
240
|
}
|
|
241
|
-
const Ue = (e) => e.reduce((t, a) => t + a, 0),
|
|
241
|
+
const Ue = (e) => e.reduce((t, a) => t + a, 0), ie = (e) => Ue(e) / e.length;
|
|
242
242
|
function Ke(e, t, a) {
|
|
243
243
|
var r, l, d;
|
|
244
244
|
const {
|
|
@@ -299,13 +299,13 @@ function qe(e) {
|
|
|
299
299
|
...f
|
|
300
300
|
};
|
|
301
301
|
},
|
|
302
|
-
async track(f,
|
|
302
|
+
async track(f, $) {
|
|
303
303
|
if (!this.isEnabled)
|
|
304
304
|
return Promise.resolve();
|
|
305
305
|
const {
|
|
306
306
|
audioPath: I,
|
|
307
307
|
..._
|
|
308
|
-
} =
|
|
308
|
+
} = $ || {}, D = {
|
|
309
309
|
method: "POST",
|
|
310
310
|
headers: {
|
|
311
311
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
@@ -334,14 +334,14 @@ function qe(e) {
|
|
|
334
334
|
return console.error(v);
|
|
335
335
|
}
|
|
336
336
|
},
|
|
337
|
-
linkTrack(f,
|
|
337
|
+
linkTrack(f, $, I, _) {
|
|
338
338
|
G[f] || (G[f] = {
|
|
339
339
|
events: {},
|
|
340
340
|
resolvedDependencies: []
|
|
341
341
|
}), _.includes(I) || _.push(I);
|
|
342
342
|
const D = G[f];
|
|
343
343
|
if (D.events[I] = {
|
|
344
|
-
props:
|
|
344
|
+
props: $
|
|
345
345
|
}, D.resolvedDependencies.push(I), _.every((N) => D.resolvedDependencies.includes(N))) {
|
|
346
346
|
const N = _.reduce((L, b) => D.events[b] ? {
|
|
347
347
|
...L,
|
|
@@ -362,9 +362,9 @@ function he() {
|
|
|
362
362
|
get: (t = !1) => t ? Date.now() - e : e
|
|
363
363
|
};
|
|
364
364
|
}
|
|
365
|
-
const F = he(),
|
|
365
|
+
const F = he(), re = he();
|
|
366
366
|
function we(e) {
|
|
367
|
-
return e ===
|
|
367
|
+
return e === A.Playground ? {
|
|
368
368
|
headers: {
|
|
369
369
|
[Be]: "true"
|
|
370
370
|
}
|
|
@@ -372,7 +372,7 @@ function we(e) {
|
|
|
372
372
|
}
|
|
373
373
|
async function pe(e, t, a, n, s = !1, i) {
|
|
374
374
|
try {
|
|
375
|
-
return !i && !
|
|
375
|
+
return !i && !le(n) && (i = await t.newChat(e.id, {
|
|
376
376
|
persist: s
|
|
377
377
|
}, we(n)), a.track("agent-chat", {
|
|
378
378
|
event: "created",
|
|
@@ -445,7 +445,7 @@ async function Qe(e) {
|
|
|
445
445
|
} catch (s) {
|
|
446
446
|
if (n === t)
|
|
447
447
|
throw s;
|
|
448
|
-
await
|
|
448
|
+
await de(n * 500);
|
|
449
449
|
}
|
|
450
450
|
return a;
|
|
451
451
|
}
|
|
@@ -502,14 +502,14 @@ function et(e, t, a, n, s) {
|
|
|
502
502
|
mode: t.chatMode
|
|
503
503
|
});
|
|
504
504
|
else {
|
|
505
|
-
const d = J, f = [d.StreamVideoDone, d.StreamVideoError, d.StreamVideoRejected],
|
|
505
|
+
const d = J, f = [d.StreamVideoDone, d.StreamVideoError, d.StreamVideoRejected], $ = [d.StreamFailed, d.StreamVideoError, d.StreamVideoRejected], I = Ke(c, n, {
|
|
506
506
|
mode: t.chatMode
|
|
507
507
|
});
|
|
508
508
|
if (o = o, o === d.StreamVideoCreated)
|
|
509
509
|
e.linkTrack("agent-video", I, d.StreamVideoCreated, ["start"]);
|
|
510
510
|
else if (f.includes(o)) {
|
|
511
511
|
const _ = o.split("/")[1];
|
|
512
|
-
|
|
512
|
+
$.includes(o) ? e.track("agent-video", {
|
|
513
513
|
...I,
|
|
514
514
|
event: _
|
|
515
515
|
}) : e.linkTrack("agent-video", {
|
|
@@ -517,7 +517,7 @@ function et(e, t, a, n, s) {
|
|
|
517
517
|
event: _
|
|
518
518
|
}, o, ["done"]);
|
|
519
519
|
}
|
|
520
|
-
|
|
520
|
+
$.includes(o) && ((l = (r = a.callbacks).onError) == null || l.call(r, new Error(`Stream failed with event ${o}`), {
|
|
521
521
|
data: c
|
|
522
522
|
})), c.event === d.StreamDone && s();
|
|
523
523
|
}
|
|
@@ -525,7 +525,7 @@ function et(e, t, a, n, s) {
|
|
|
525
525
|
};
|
|
526
526
|
}
|
|
527
527
|
function tt(e, t, a, n) {
|
|
528
|
-
const s =
|
|
528
|
+
const s = ae(e, `${t}/agents/${a}`, n);
|
|
529
529
|
return {
|
|
530
530
|
createStream(i) {
|
|
531
531
|
return s.post("/streams", {
|
|
@@ -562,7 +562,7 @@ function tt(e, t, a, n) {
|
|
|
562
562
|
};
|
|
563
563
|
}
|
|
564
564
|
function rt(e, t, a, n) {
|
|
565
|
-
const s =
|
|
565
|
+
const s = ae(e, `${t}/agents/${a}`, n);
|
|
566
566
|
return {
|
|
567
567
|
createStream(i, o) {
|
|
568
568
|
return s.post("/streams", {
|
|
@@ -715,18 +715,18 @@ function st(e, t, a) {
|
|
|
715
715
|
webRTCStats: {
|
|
716
716
|
anomalies: s,
|
|
717
717
|
minRtt: Math.min(...c),
|
|
718
|
-
avgRtt:
|
|
718
|
+
avgRtt: ie(c),
|
|
719
719
|
maxRtt: Math.max(...c),
|
|
720
720
|
aggregateReport: nt(e[0], e[e.length - 1], i),
|
|
721
721
|
minJitterDelayInInterval: Math.min(...o),
|
|
722
722
|
maxJitterDelayInInterval: Math.max(...o),
|
|
723
|
-
avgJitterDelayInInterval:
|
|
723
|
+
avgJitterDelayInInterval: ie(o)
|
|
724
724
|
},
|
|
725
725
|
codec: e[0].codec,
|
|
726
726
|
resolution: `${e[0].frameWidth}x${e[0].frameHeight}`
|
|
727
727
|
};
|
|
728
728
|
}
|
|
729
|
-
const
|
|
729
|
+
const ne = 100, ot = Math.max(Math.ceil(400 / ne), 1), ct = 0.25, dt = 0.28;
|
|
730
730
|
function lt() {
|
|
731
731
|
let e = 0, t, a, n = 0;
|
|
732
732
|
return (s) => {
|
|
@@ -752,7 +752,7 @@ function lt() {
|
|
|
752
752
|
};
|
|
753
753
|
}
|
|
754
754
|
function ut(e, t, a, n, s, i = !1) {
|
|
755
|
-
let o = [], c, r = 0, l = !1, d = Q.Unknown, f = Q.Unknown,
|
|
755
|
+
let o = [], c, r = 0, l = !1, d = Q.Unknown, f = Q.Unknown, $ = 0, I = 0;
|
|
756
756
|
const _ = lt();
|
|
757
757
|
return setInterval(async () => {
|
|
758
758
|
const D = await e.getStats(), {
|
|
@@ -761,16 +761,16 @@ function ut(e, t, a, n, s, i = !1) {
|
|
|
761
761
|
freezeCount: L
|
|
762
762
|
} = _(D), b = it(D);
|
|
763
763
|
if (v)
|
|
764
|
-
r = 0,
|
|
764
|
+
r = 0, $ = L - I, f = N < ct ? Q.Strong : N > dt && $ > 1 ? Q.Weak : d, f !== d && (s == null || s(f), d = f, I += $, $ = 0), l || (n == null || n(p.Start), c = o[o.length - 1], o = [], l = !0), o.push(b);
|
|
765
765
|
else if (l && (r++, r >= ot)) {
|
|
766
|
-
const u = st(o,
|
|
766
|
+
const u = st(o, ne, c);
|
|
767
767
|
n == null || n(p.Stop, u), t() || a(), I = L, l = !1;
|
|
768
768
|
}
|
|
769
|
-
},
|
|
769
|
+
}, ne);
|
|
770
770
|
}
|
|
771
771
|
let ye = !1;
|
|
772
772
|
const z = (e, t) => ye && console.log(e, t), ft = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
|
|
773
|
-
function
|
|
773
|
+
function se(e) {
|
|
774
774
|
switch (e) {
|
|
775
775
|
case "connected":
|
|
776
776
|
return j.Connected;
|
|
@@ -829,7 +829,7 @@ function ht({
|
|
|
829
829
|
}) {
|
|
830
830
|
e === p.Start ? a == null || a(p.Start) : e === p.Stop && (a == null || a(p.Stop, s)), t === p.Start ? n == null || n(X.Talking) : t === p.Stop && (n == null || n(X.Idle));
|
|
831
831
|
}
|
|
832
|
-
function
|
|
832
|
+
function oe({
|
|
833
833
|
statsSignal: e,
|
|
834
834
|
dataChannelSignal: t,
|
|
835
835
|
onVideoStateChange: a,
|
|
@@ -862,11 +862,11 @@ async function wt(e, t, {
|
|
|
862
862
|
let c = !1, r = !1, l = p.Stop, d = p.Stop;
|
|
863
863
|
const {
|
|
864
864
|
startConnection: f,
|
|
865
|
-
sendStreamRequest:
|
|
865
|
+
sendStreamRequest: $,
|
|
866
866
|
close: I,
|
|
867
867
|
createStream: _,
|
|
868
868
|
addIceCandidate: D
|
|
869
|
-
} = t.videoType ===
|
|
869
|
+
} = t.videoType === ce.Clip ? tt(s, i, e, n.onError) : rt(s, i, e, n.onError), {
|
|
870
870
|
id: v,
|
|
871
871
|
offer: N,
|
|
872
872
|
ice_servers: L,
|
|
@@ -891,7 +891,7 @@ async function wt(e, t, {
|
|
|
891
891
|
const k = t.stream_warmup && !u, P = () => c, M = () => {
|
|
892
892
|
var m;
|
|
893
893
|
c = !0, r && ((m = n.onConnectionStateChange) == null || m.call(n, j.Connected));
|
|
894
|
-
}, T = ut(g, P, M, (m, h) =>
|
|
894
|
+
}, T = ut(g, P, M, (m, h) => oe({
|
|
895
895
|
statsSignal: d = m,
|
|
896
896
|
dataChannelSignal: C === U.Legacy ? l : void 0,
|
|
897
897
|
onVideoStateChange: n.onVideoStateChange,
|
|
@@ -913,8 +913,8 @@ async function wt(e, t, {
|
|
|
913
913
|
}, b) : D(v, {
|
|
914
914
|
candidate: null
|
|
915
915
|
}, b);
|
|
916
|
-
} catch (
|
|
917
|
-
(h = n.onError) == null || h.call(n,
|
|
916
|
+
} catch (B) {
|
|
917
|
+
(h = n.onError) == null || h.call(n, B, {
|
|
918
918
|
streamId: v
|
|
919
919
|
});
|
|
920
920
|
}
|
|
@@ -922,7 +922,7 @@ async function wt(e, t, {
|
|
|
922
922
|
r = !0, (!k || c) && M();
|
|
923
923
|
};
|
|
924
924
|
function y(m) {
|
|
925
|
-
l = m === J.StreamStarted ? p.Start : p.Stop,
|
|
925
|
+
l = m === J.StreamStarted ? p.Start : p.Stop, oe({
|
|
926
926
|
statsSignal: C === U.Legacy ? d : void 0,
|
|
927
927
|
dataChannelSignal: l,
|
|
928
928
|
onVideoStateChange: n.onVideoStateChange,
|
|
@@ -931,9 +931,9 @@ async function wt(e, t, {
|
|
|
931
931
|
});
|
|
932
932
|
}
|
|
933
933
|
function E(m, h) {
|
|
934
|
-
const
|
|
935
|
-
|
|
936
|
-
streamMetadata:
|
|
934
|
+
const B = typeof h == "string" ? h : h == null ? void 0 : h.metadata;
|
|
935
|
+
B && o.enrich({
|
|
936
|
+
streamMetadata: B
|
|
937
937
|
}), o.track("agent-chat", {
|
|
938
938
|
event: "ready"
|
|
939
939
|
});
|
|
@@ -947,13 +947,13 @@ async function wt(e, t, {
|
|
|
947
947
|
var K;
|
|
948
948
|
const {
|
|
949
949
|
subject: h,
|
|
950
|
-
data:
|
|
950
|
+
data: B
|
|
951
951
|
} = mt(m.data);
|
|
952
|
-
(K = R[h]) == null || K.call(R, h,
|
|
952
|
+
(K = R[h]) == null || K.call(R, h, B);
|
|
953
953
|
}, g.oniceconnectionstatechange = () => {
|
|
954
954
|
var h;
|
|
955
955
|
z("peerConnection.oniceconnectionstatechange => " + g.iceConnectionState);
|
|
956
|
-
const m =
|
|
956
|
+
const m = se(g.iceConnectionState);
|
|
957
957
|
m !== j.Connected && ((h = n.onConnectionStateChange) == null || h.call(n, m));
|
|
958
958
|
}, g.ontrack = (m) => {
|
|
959
959
|
var h;
|
|
@@ -966,7 +966,7 @@ async function wt(e, t, {
|
|
|
966
966
|
* @param payload
|
|
967
967
|
*/
|
|
968
968
|
speak(m) {
|
|
969
|
-
return
|
|
969
|
+
return $(v, b, m);
|
|
970
970
|
},
|
|
971
971
|
/**
|
|
972
972
|
* Method to close RTC connection
|
|
@@ -974,7 +974,7 @@ async function wt(e, t, {
|
|
|
974
974
|
async disconnect() {
|
|
975
975
|
var m;
|
|
976
976
|
if (v) {
|
|
977
|
-
const h =
|
|
977
|
+
const h = se(g.iceConnectionState);
|
|
978
978
|
if (g) {
|
|
979
979
|
if (h === j.New) {
|
|
980
980
|
clearInterval(T);
|
|
@@ -983,10 +983,10 @@ async function wt(e, t, {
|
|
|
983
983
|
g.close(), g.oniceconnectionstatechange = null, g.onnegotiationneeded = null, g.onicecandidate = null, g.ontrack = null;
|
|
984
984
|
}
|
|
985
985
|
try {
|
|
986
|
-
h === j.Connected && await I(v, b).catch((
|
|
986
|
+
h === j.Connected && await I(v, b).catch((B) => {
|
|
987
987
|
});
|
|
988
|
-
} catch (
|
|
989
|
-
z("Error on close stream connection",
|
|
988
|
+
} catch (B) {
|
|
989
|
+
z("Error on close stream connection", B);
|
|
990
990
|
}
|
|
991
991
|
(m = n.onAgentActivityStateChange) == null || m.call(n, X.Idle), clearInterval(T);
|
|
992
992
|
}
|
|
@@ -995,7 +995,7 @@ async function wt(e, t, {
|
|
|
995
995
|
* Method to send data channel messages to the server
|
|
996
996
|
*/
|
|
997
997
|
sendDataChannelMessage(m) {
|
|
998
|
-
var h,
|
|
998
|
+
var h, B;
|
|
999
999
|
if (!c || S.readyState !== "open") {
|
|
1000
1000
|
z("Data channel is not ready for sending messages"), (h = n.onError) == null || h.call(n, new Error("Data channel is not ready for sending messages"), {
|
|
1001
1001
|
streamId: v
|
|
@@ -1005,7 +1005,7 @@ async function wt(e, t, {
|
|
|
1005
1005
|
try {
|
|
1006
1006
|
S.send(m);
|
|
1007
1007
|
} catch (K) {
|
|
1008
|
-
z("Error sending data channel message", K), (
|
|
1008
|
+
z("Error sending data channel message", K), (B = n.onError) == null || B.call(n, K, {
|
|
1009
1009
|
streamId: v
|
|
1010
1010
|
});
|
|
1011
1011
|
}
|
|
@@ -1093,7 +1093,7 @@ function Ct(e, t, a) {
|
|
|
1093
1093
|
},
|
|
1094
1094
|
onAgentActivityStateChange: (o) => {
|
|
1095
1095
|
var c, r;
|
|
1096
|
-
(r = (c = t.callbacks).onAgentActivityStateChange) == null || r.call(c, o), o === X.Talking ?
|
|
1096
|
+
(r = (c = t.callbacks).onAgentActivityStateChange) == null || r.call(c, o), o === X.Talking ? re.update() : re.reset(), kt(o === X.Talking ? p.Start : p.Stop, e, a, i.streamType);
|
|
1097
1097
|
}
|
|
1098
1098
|
}
|
|
1099
1099
|
});
|
|
@@ -1108,7 +1108,7 @@ async function Rt(e, t, a, n, s) {
|
|
|
1108
1108
|
chat: i,
|
|
1109
1109
|
chatMode: o
|
|
1110
1110
|
} = await pe(e, a, n, t.mode, t.persistentChat, s);
|
|
1111
|
-
if (o && o !== t.mode && (t.mode = o, (l = (r = t.callbacks).onModeChange) == null || l.call(r, o), o ===
|
|
1111
|
+
if (o && o !== t.mode && (t.mode = o, (l = (r = t.callbacks).onModeChange) == null || l.call(r, o), o === A.TextOnly))
|
|
1112
1112
|
return (f = (d = t.callbacks).onError) == null || f.call(d, new Ce(o)), {
|
|
1113
1113
|
chat: i
|
|
1114
1114
|
};
|
|
@@ -1123,14 +1123,14 @@ async function St(e, t) {
|
|
|
1123
1123
|
let a = !0, n = !1, s = !1;
|
|
1124
1124
|
const i = t.mixpanelKey || ze, o = t.wsURL || Le, c = t.baseURL || O, r = {
|
|
1125
1125
|
messages: [],
|
|
1126
|
-
chatMode: t.mode ||
|
|
1126
|
+
chatMode: t.mode || A.Functional
|
|
1127
1127
|
}, l = me(t.auth, c, t.callbacks.onError), d = await l.getById(e), f = qe({
|
|
1128
1128
|
token: i,
|
|
1129
1129
|
agent: d,
|
|
1130
1130
|
isEnabled: t.enableAnalitics,
|
|
1131
1131
|
distinctId: t.distinctId
|
|
1132
1132
|
}), {
|
|
1133
|
-
onMessage:
|
|
1133
|
+
onMessage: $,
|
|
1134
1134
|
clearQueue: I
|
|
1135
1135
|
} = et(f, r, t, d, () => {
|
|
1136
1136
|
var u;
|
|
@@ -1143,10 +1143,10 @@ async function St(e, t) {
|
|
|
1143
1143
|
async function _(u) {
|
|
1144
1144
|
var P, M, T, y, E, R, W;
|
|
1145
1145
|
(M = (P = t.callbacks).onConnectionStateChange) == null || M.call(P, j.Connecting), F.reset(), n = !1, s = !1, u && !a && (delete r.chat, (y = (T = t.callbacks).onNewMessage) == null || y.call(T, [...r.messages], "answer"));
|
|
1146
|
-
const w =
|
|
1147
|
-
onMessage:
|
|
1146
|
+
const w = t.mode === A.DirectPlayback ? Promise.resolve(void 0) : Oe(t.auth, o, {
|
|
1147
|
+
onMessage: $,
|
|
1148
1148
|
onError: t.callbacks.onError
|
|
1149
|
-
}), g =
|
|
1149
|
+
}), g = te(() => Rt(d, t, l, f, r.chat), {
|
|
1150
1150
|
limit: 3,
|
|
1151
1151
|
timeout: $e,
|
|
1152
1152
|
timeoutErrorMessage: "Timeout initializing the stream",
|
|
@@ -1155,12 +1155,12 @@ async function St(e, t) {
|
|
|
1155
1155
|
delayMs: 1e3
|
|
1156
1156
|
}).catch((x) => {
|
|
1157
1157
|
var m, h;
|
|
1158
|
-
throw v(
|
|
1158
|
+
throw v(A.Maintenance), (h = (m = t.callbacks).onConnectionStateChange) == null || h.call(m, j.Fail), x;
|
|
1159
1159
|
}), [S, {
|
|
1160
1160
|
streamingManager: C,
|
|
1161
1161
|
chat: k
|
|
1162
1162
|
}] = await Promise.all([w, g]);
|
|
1163
|
-
k && k.id !== ((E = r.chat) == null ? void 0 : E.id) && ((W = (R = t.callbacks).onNewChat) == null || W.call(R, k.id)), r.streamingManager = C, r.socketManager = S, r.chat = k, a = !1, v((k == null ? void 0 : k.chat_mode) ?? t.mode ??
|
|
1163
|
+
k && k.id !== ((E = r.chat) == null ? void 0 : E.id) && ((W = (R = t.callbacks).onNewChat) == null || W.call(R, k.id)), r.streamingManager = C, r.socketManager = S, r.chat = k, a = !1, v((k == null ? void 0 : k.chat_mode) ?? t.mode ?? A.Functional);
|
|
1164
1164
|
}
|
|
1165
1165
|
async function D() {
|
|
1166
1166
|
var u, w, g, S;
|
|
@@ -1170,7 +1170,7 @@ async function St(e, t) {
|
|
|
1170
1170
|
var w, g;
|
|
1171
1171
|
u !== r.chatMode && (f.track("agent-mode-change", {
|
|
1172
1172
|
mode: u
|
|
1173
|
-
}), r.chatMode = u, r.chatMode !==
|
|
1173
|
+
}), r.chatMode = u, r.chatMode !== A.Functional && await D(), (g = (w = t.callbacks).onModeChange) == null || g.call(w, u));
|
|
1174
1174
|
}
|
|
1175
1175
|
return {
|
|
1176
1176
|
agent: d,
|
|
@@ -1216,15 +1216,15 @@ async function St(e, t) {
|
|
|
1216
1216
|
async chat(u) {
|
|
1217
1217
|
var C, k, P, M, T;
|
|
1218
1218
|
const w = () => {
|
|
1219
|
-
if (
|
|
1219
|
+
if (le(t.mode))
|
|
1220
1220
|
throw new H(`${t.mode} is enabled, chat is disabled`);
|
|
1221
1221
|
if (u.length >= 800)
|
|
1222
1222
|
throw new H("Message cannot be more than 800 characters");
|
|
1223
1223
|
if (u.length === 0)
|
|
1224
1224
|
throw new H("Message cannot be empty");
|
|
1225
|
-
if (r.chatMode ===
|
|
1225
|
+
if (r.chatMode === A.Maintenance)
|
|
1226
1226
|
throw new H("Chat is in maintenance mode");
|
|
1227
|
-
if (![
|
|
1227
|
+
if (![A.TextOnly, A.Playground].includes(r.chatMode)) {
|
|
1228
1228
|
if (!r.streamingManager)
|
|
1229
1229
|
throw new H("Streaming manager is not initialized");
|
|
1230
1230
|
if (!r.chat)
|
|
@@ -1239,7 +1239,7 @@ async function St(e, t) {
|
|
|
1239
1239
|
r.chat = R.chat, (E = (y = t.callbacks).onNewChat) == null || E.call(y, r.chat.id);
|
|
1240
1240
|
}
|
|
1241
1241
|
return r.chat.id;
|
|
1242
|
-
}, S = async (y, E) =>
|
|
1242
|
+
}, S = async (y, E) => te(() => {
|
|
1243
1243
|
var R, W;
|
|
1244
1244
|
return l.chat(d.id, E, {
|
|
1245
1245
|
chatMode: r.chatMode,
|
|
@@ -1256,9 +1256,9 @@ async function St(e, t) {
|
|
|
1256
1256
|
}, {
|
|
1257
1257
|
limit: 2,
|
|
1258
1258
|
shouldRetryFn: (R) => {
|
|
1259
|
-
var m, h,
|
|
1259
|
+
var m, h, B, K;
|
|
1260
1260
|
const W = (m = R == null ? void 0 : R.message) == null ? void 0 : m.includes("missing or invalid session_id");
|
|
1261
|
-
return !((h = R == null ? void 0 : R.message) == null ? void 0 : h.includes("Stream Error")) && !W ? ((K = (
|
|
1261
|
+
return !((h = R == null ? void 0 : R.message) == null ? void 0 : h.includes("Stream Error")) && !W ? ((K = (B = t.callbacks).onError) == null || K.call(B, R), !1) : !0;
|
|
1262
1262
|
},
|
|
1263
1263
|
onRetry: async () => {
|
|
1264
1264
|
await D(), await _(!1);
|
|
@@ -1399,7 +1399,7 @@ async function St(e, t) {
|
|
|
1399
1399
|
stream_id: (k = r.streamingManager) == null ? void 0 : k.streamId,
|
|
1400
1400
|
agent_id: d.id,
|
|
1401
1401
|
owner_id: d.owner_id,
|
|
1402
|
-
video_duration_to_interrupt:
|
|
1402
|
+
video_duration_to_interrupt: re.get(!0),
|
|
1403
1403
|
message_duration_to_interrupt: F.get(!0),
|
|
1404
1404
|
chat_id: (P = r.chat) == null ? void 0 : P.id,
|
|
1405
1405
|
mode: r.chatMode,
|
|
@@ -1422,7 +1422,7 @@ export {
|
|
|
1422
1422
|
X as AgentActivityState,
|
|
1423
1423
|
Ee as AgentStatus,
|
|
1424
1424
|
De as ChatCreationFailed,
|
|
1425
|
-
|
|
1425
|
+
A as ChatMode,
|
|
1426
1426
|
Ce as ChatModeDowngraded,
|
|
1427
1427
|
q as ChatProgress,
|
|
1428
1428
|
j as ConnectionState,
|
|
@@ -1438,7 +1438,7 @@ export {
|
|
|
1438
1438
|
Me as Subject,
|
|
1439
1439
|
_e as UserPlan,
|
|
1440
1440
|
H as ValidationError,
|
|
1441
|
-
|
|
1441
|
+
ce as VideoType,
|
|
1442
1442
|
Ae as VoiceAccess,
|
|
1443
1443
|
Re as WsError,
|
|
1444
1444
|
St as createAgentManager,
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(h,A){typeof exports=="object"&&typeof module<"u"?A(exports):typeof define=="function"&&define.amd?define(["exports"],A):(h=typeof globalThis<"u"?globalThis:h||self,A(h.index={}))})(this,function(h){"use strict";var _t=Object.defineProperty;var Et=(h,A,x)=>A in h?_t(h,A,{enumerable:!0,configurable:!0,writable:!0,value:x}):h[A]=x;var ee=(h,A,x)=>(Et(h,typeof A!="symbol"?A+"":A,x),x);class A extends Error{constructor({kind:a,description:n,error:s}){super(JSON.stringify({kind:a,description:n}));ee(this,"kind");ee(this,"description");ee(this,"error");this.kind=a,this.description=n,this.error=s}}class x extends A{constructor(t,a){super({kind:"ChatCreationFailed",description:`Failed to create ${a?"persistent":""} chat, mode: ${t}`})}}class de extends A{constructor(t){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${t}`})}}class X extends A{constructor(a,n){super({kind:"ValidationError",description:a});ee(this,"key");this.key=n}}class ue extends A{constructor(t){super({kind:"WSError",description:t})}}var le=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(le||{}),fe=(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))(fe||{}),me=(e=>(e.Created="created",e.Started="started",e.Done="done",e.Error="error",e.Rejected="rejected",e.Ready="ready",e))(me||{}),ge=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(ge||{}),P=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e.Off="Off",e))(P||{}),Y=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(Y||{}),he=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(he||{}),we=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(we||{}),pe=(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))(pe||{}),te=(e=>(e.Clip="clip",e.Talk="talk",e))(te||{});const ye=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var y=(e=>(e.Start="START",e.Stop="STOP",e))(y||{}),Q=(e=>(e.Strong="STRONG",e.Weak="WEAK",e.Unknown="UNKNOWN",e))(Q||{}),O=(e=>(e.Idle="IDLE",e.Talking="TALKING",e))(O||{}),F=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",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))(F||{}),E=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(E||{}),H=(e=>(e.Legacy="legacy",e.Fluent="fluent",e))(H||{}),ve=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(ve||{}),ke=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(ke||{});const Pe=45*1e3,$e="X-Playground-Chat",Z="https://api.d-id.com",Be="wss://notifications.d-id.com",Le="79f81a83a67430be2bc0fd61042b8faa",Ce=e=>new Promise(t=>setTimeout(t,e)),G=(e=16)=>{const t=new Uint8Array(e);return window.crypto.getRandomValues(t),Array.from(t,a=>a.toString(16).padStart(2,"0")).join("").slice(0,13)},ze=e=>[P.TextOnly,P.Playground,P.Maintenance].includes(e),re=e=>e&&[P.DirectPlayback,P.Off].includes(e);function Ne(e,t){let a;return{promise:new Promise((s,i)=>{a=setTimeout(()=>i(new Error(t)),e)}),clear:()=>clearTimeout(a)}}async function ne(e,t){const a={limit:(t==null?void 0:t.limit)??3,delayMs:(t==null?void 0:t.delayMs)??0,timeout:(t==null?void 0:t.timeout)??3e4,timeoutErrorMessage:(t==null?void 0:t.timeoutErrorMessage)||"Timeout error",shouldRetryFn:(t==null?void 0:t.shouldRetryFn)??(()=>!0),onRetry:(t==null?void 0:t.onRetry)??(()=>{})};let n;for(let s=1;s<=a.limit;s++)try{if(!a.timeout)return await e();const{promise:i,clear:o}=Ne(a.timeout,a.timeoutErrorMessage),c=e().finally(o);return await Promise.race([c,i])}catch(i){if(n=i,!a.shouldRetryFn(i)||s>=a.limit)throw i;await Ce(a.delayMs),a.onRetry(i)}throw n}function De(){let e=window.localStorage.getItem("did_external_key_id");if(!e){let t=G();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let Fe=G();function Re(e){if(e.type==="bearer")return`Bearer ${e.token}`;if(e.type==="basic")return`Basic ${btoa(`${e.username}:${e.password}`)}`;if(e.type==="key")return`Client-Key ${e.clientKey}.${De()}_${Fe}`;throw new Error(`Unknown auth type: ${e}`)}const Je=e=>ne(e,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:t=>t.status===429});function ae(e,t=Z,a){const n=async(s,i)=>{const{skipErrorHandler:o,...c}=i||{},r=await Je(()=>fetch(t+(s!=null&&s.startsWith("/")?s:`/${s}`),{...c,headers:{...c.headers,Authorization:Re(e),"Content-Type":"application/json"}}));if(!r.ok){let u=await r.text().catch(()=>`Failed to fetch with status ${r.status}`);const d=new Error(u);throw a&&!o&&a(d,{url:s,options:c,headers:r.headers}),d}return r.json()};return{get(s,i){return n(s,{...i,method:"GET"})},post(s,i,o){return n(s,{...o,body:JSON.stringify(i),method:"POST"})},delete(s,i,o){return n(s,{...o,body:JSON.stringify(i),method:"DELETE"})},patch(s,i,o){return n(s,{...o,body:JSON.stringify(i),method:"PATCH"})}}}function Se(e,t=Z,a){const n=ae(e,`${t}/agents`,a);return{create(s,i){return n.post("/",s,i)},getAgents(s,i){return n.get(`/${s?`?tag=${s}`:""}`,i).then(o=>o??[])},getById(s,i){return n.get(`/${s}`,i)},delete(s,i){return n.delete(`/${s}`,void 0,i)},update(s,i,o){return n.patch(`/${s}`,i,o)},newChat(s,i,o){return n.post(`/${s}/chat`,i,o)},chat(s,i,o,c){return n.post(`/${s}/chat/${i}`,o,c)},createRating(s,i,o,c){return n.post(`/${s}/chat/${i}/ratings`,o,c)},updateRating(s,i,o,c,r){return n.patch(`/${s}/chat/${i}/ratings/${o}`,c,r)},deleteRating(s,i,o,c){return n.delete(`/${s}/chat/${i}/ratings/${o}`,c)},getSTTToken(s,i){return n.get(`/${s}/stt-token`,i)}}}const _e=e=>e.type==="clip"&&e.presenter_id.startsWith("v2_")?"clip_v2":e.type;function We(e){var s,i,o,c;const t=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",a=()=>{const r=navigator.platform;return r.toLowerCase().includes("win")?"Windows":r.toLowerCase().includes("mac")?"Mac OS X":r.toLowerCase().includes("linux")?"Linux":"Unknown"},n=e.presenter;return{$os:`${a()}`,isMobile:`${t()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:_e(n),agentVoice:{voiceId:(i=(s=e.presenter)==null?void 0:s.voice)==null?void 0:i.voice_id,provider:(c=(o=e.presenter)==null?void 0:o.voice)==null?void 0:c.type}}}const Ue=e=>e.reduce((t,a)=>t+a,0),Ee=e=>Ue(e)/e.length;function Ke(e,t,a){var r,u,d;const{event:n,...s}=e,{template:i}=(t==null?void 0:t.llm)||{},{language:o}=((r=t==null?void 0:t.presenter)==null?void 0:r.voice)||{};return{...s,llm:{...s.llm,template:i},script:{...s.script,provider:{...(u=s==null?void 0:s.script)==null?void 0:u.provider,language:o}},stitch:(t==null?void 0:t.presenter.type)==="talk"?(d=t==null?void 0:t.presenter)==null?void 0:d.stitch:void 0,...a}}let ie={};const He="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function qe(e){var i,o,c,r,u,d;const t=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",a=e.agent.presenter,n=(i=e.agent.llm)==null?void 0:i.prompt_customization,s={token:e.token||"testKey",distinct_id:e.distinctId||De(),agentId:e.agent.id,agentType:_e(a),owner_id:e.agent.owner_id??"",promptVersion:(o=e.agent.llm)==null?void 0:o.prompt_version,behavior:{role:n==null?void 0:n.role,personality:n==null?void 0:n.personality,instructions:(c=e.agent.llm)==null?void 0:c.instructions},temperature:(r=e.agent.llm)==null?void 0:r.temperature,knowledgeSource:n==null?void 0:n.knowledge_source,starterQuestionsCount:(d=(u=e.agent.knowledge)==null?void 0:u.starter_message)==null?void 0:d.length,topicsToAvoid:n==null?void 0:n.topics_to_avoid,maxResponseLength:n==null?void 0:n.max_response_length};return{...s,additionalProperties:{},isEnabled:e.isEnabled??!0,getRandom:G,enrich(f){this.additionalProperties={...this.additionalProperties,...f}},async track(f,L){if(!this.isEnabled)return Promise.resolve();const{audioPath:T,..._}=L||{},D={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:f,properties:{...this.additionalProperties,..._,...s,source:t,time:Date.now(),$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}}])})};try{return await fetch(He,D).then(k=>k.json())}catch(k){return console.error(k)}},linkTrack(f,L,T,_){ie[f]||(ie[f]={events:{},resolvedDependencies:[]}),_.includes(T)||_.push(T);const D=ie[f];if(D.events[T]={props:L},D.resolvedDependencies.push(T),_.every(U=>D.resolvedDependencies.includes(U))){const U=_.reduce((N,$)=>D.events[$]?{...N,...D.events[$].props}:N,{});this.track(f,U),D.resolvedDependencies=D.resolvedDependencies.filter(N=>!_.includes(N)),_.forEach(N=>{delete D.events[N]})}}}}function Ie(){let e=0;return{reset:()=>e=0,update:()=>e=Date.now(),get:(t=!1)=>t?Date.now()-e:e}}const W=Ie(),se=Ie();function Me(e){return e===P.Playground?{headers:{[$e]:"true"}}:{}}async function Te(e,t,a,n,s=!1,i){try{return!i&&!re(n)&&(i=await t.newChat(e.id,{persist:s},Me(n)),a.track("agent-chat",{event:"created",chat_id:i.id,agent_id:e.id,mode:n})),{chat:i,chatMode:(i==null?void 0:i.chat_mode)??n}}catch(o){try{const c=JSON.parse(o.message);if((c==null?void 0:c.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(c){console.error("Error parsing the error message:",c)}throw new Error("Cannot create new chat")}}function xe(e){return e&&e.length>0?e:[]}function Ve(e,t,a,n){if(!e)throw new Error("Please connect to the agent first");if(!e.interruptAvailable)throw new Error("Interrupt is not enabled for this stream");if(t!==H.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!a&&!n)throw new Error("No active video to interrupt")}async function oe(e,t){const a={type:F.StreamInterrupt,videoId:t,timestamp:Date.now()};e.sendDataChannelMessage(JSON.stringify(a))}function Xe(e){return new Promise((t,a)=>{const{callbacks:n,host:s,auth:i}=e,{onMessage:o=null,onOpen:c=null,onClose:r=null,onError:u=null}=n||{},d=new WebSocket(`${s}?authorization=${Re(i)}`);d.onmessage=o,d.onclose=r,d.onerror=f=>{console.error(f),u==null||u("Websocket failed to connect",f),a(f)},d.onopen=f=>{c==null||c(f),t(d)}})}async function Ye(e){const{retries:t=1}=e;let a=null;for(let n=0;(a==null?void 0:a.readyState)!==WebSocket.OPEN;n++)try{a=await Xe(e)}catch(s){if(n===t)throw s;await Ce(n*500)}return a}async function Oe(e,t,a){const n=a!=null&&a.onMessage?[a.onMessage]:[],s=await Ye({auth:e,host:t,callbacks:{onError:i=>{var o;return(o=a.onError)==null?void 0:o.call(a,new ue(i))},onMessage(i){const o=JSON.parse(i.data);n.forEach(c=>c(o.event,o))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:i=>n.push(i)}}function Qe(e){if(e.answer!==void 0)return e.answer;let t=0,a="";for(;t in e;)a+=e[t++];return a}function Ge(e,t,a,n,s){const i=n.messages[n.messages.length-1];if(!(e===Y.Partial||e===Y.Answer)||(i==null?void 0:i.role)!=="assistant")return;const{content:o,sequence:c}=t;e===Y.Partial?a[c]=o:a.answer=o;const r=Qe(a);(i.content!==r||e===Y.Answer)&&(i.content=r,s==null||s([...n.messages],e))}function Ze(e,t,a,n,s){let i={};return{clearQueue:()=>i={},onMessage:(o,c)=>{var r,u;if("content"in c)Ge(o,c,i,t,a.callbacks.onNewMessage),o===Y.Answer&&e.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const d=F,f=[d.StreamVideoDone,d.StreamVideoError,d.StreamVideoRejected],L=[d.StreamFailed,d.StreamVideoError,d.StreamVideoRejected],T=Ke(c,n,{mode:t.chatMode});if(o=o,o===d.StreamVideoCreated)e.linkTrack("agent-video",T,d.StreamVideoCreated,["start"]);else if(f.includes(o)){const _=o.split("/")[1];L.includes(o)?e.track("agent-video",{...T,event:_}):e.linkTrack("agent-video",{...T,event:_},o,["done"])}L.includes(o)&&((u=(r=a.callbacks).onError)==null||u.call(r,new Error(`Stream failed with event ${o}`),{data:c})),c.event===d.StreamDone&&s()}}}}function et(e,t,a,n){const s=ae(e,`${t}/agents/${a}`,n);return{createStream(i){return s.post("/streams",{output_resolution:i.output_resolution,compatibility_mode:i.compatibility_mode,stream_warmup:i.stream_warmup,session_timeout:i.session_timeout,fluent:i.fluent})},startConnection(i,o,c){return s.post(`/streams/${i}/sdp`,{session_id:c,answer:o})},addIceCandidate(i,o,c){return s.post(`/streams/${i}/ice`,{session_id:c,...o})},sendStreamRequest(i,o,c){return s.post(`/streams/${i}`,{session_id:o,...c})},close(i,o){return s.delete(`/streams/${i}`,{session_id:o})}}}function tt(e,t,a,n){const s=ae(e,`${t}/agents/${a}`,n);return{createStream(i,o){return s.post("/streams",{driver_url:i.driver_url,face:i.face,config:i.config,output_resolution:i.output_resolution,compatibility_mode:i.compatibility_mode,stream_warmup:i.stream_warmup,session_timeout:i.session_timeout,fluent:i.fluent},o)},startConnection(i,o,c,r){return s.post(`/streams/${i}/sdp`,{session_id:c,answer:o},r)},addIceCandidate(i,o,c,r){return s.post(`/streams/${i}/ice`,{session_id:c,...o},r)},sendStreamRequest(i,o,c,r){return s.post(`/streams/${i}`,{session_id:o,...c},r)},close(i,o,c){return s.delete(`/streams/${i}`,{session_id:o},c)}}}function rt(e,t,a){const n=(t.timestamp-e.timestamp)/1e3;return{duration:n,bytesReceived:t.bytesReceived-e.bytesReceived,bitrate:Math.round((t.bytesReceived-e.bytesReceived)*8/n),packetsReceived:t.packetsReceived-e.packetsReceived,packetsLost:t.packetsLost-e.packetsLost,framesDropped:t.framesDropped-e.framesDropped,framesDecoded:t.framesDecoded-e.framesDecoded,jitter:t.jitter,avgJitterDelayInInterval:(t.jitterBufferDelay-e.jitterBufferDelay)/(t.jitterBufferEmittedCount-e.jitterBufferEmittedCount),jitterBufferEmittedCount:t.jitterBufferEmittedCount-e.jitterBufferEmittedCount,jitterBufferDelay:(t.jitterBufferDelay-e.jitterBufferDelay)/n,framesPerSecond:t.framesPerSecond,freezeCount:t.freezeCount-e.freezeCount,freezeDuration:t.freezeDuration-e.freezeDuration,lowFpsCount:a}}function nt(e){return e.filter(t=>t.freezeCount>0||t.framesPerSecond<21||t.framesDropped>0||t.packetsLost>0).map(t=>{const{timestamp:a,...n}=t,s=[];return t.freezeCount>0&&s.push("freeze"),t.framesPerSecond<21&&s.push("low fps"),t.framesDropped>0&&s.push("frames dropped"),t.packetsLost>0&&s.push("packet loss"),{...n,causes:s}})}function at(e){let t="",a=0;for(const n of e.values())if(n&&n.type==="codec"&&n.mimeType.startsWith("video")&&(t=n.mimeType.split("/")[1]),n&&n.type==="candidate-pair"&&(a=n.currentRoundTripTime),n&&n.type==="inbound-rtp"&&n.kind==="video")return{codec:t,rtt:a,timestamp:n.timestamp,bytesReceived:n.bytesReceived,packetsReceived:n.packetsReceived,packetsLost:n.packetsLost,framesDropped:n.framesDropped,framesDecoded:n.framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay,jitterBufferEmittedCount:n.jitterBufferEmittedCount,avgJitterDelayInInterval:n.jitterBufferDelay/n.jitterBufferEmittedCount,frameWidth:n.frameWidth,frameHeight:n.frameHeight,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount,freezeDuration:n.totalFreezesDuration};return{}}function it(e,t,a){const n=e.map((r,u)=>u===0?a?{timestamp:r.timestamp,duration:0,rtt:r.rtt,bytesReceived:r.bytesReceived-a.bytesReceived,bitrate:(r.bytesReceived-a.bytesReceived)*8/(t/1e3),packetsReceived:r.packetsReceived-a.packetsReceived,packetsLost:r.packetsLost-a.packetsLost,framesDropped:r.framesDropped-a.framesDropped,framesDecoded:r.framesDecoded-a.framesDecoded,jitter:r.jitter,jitterBufferDelay:r.jitterBufferDelay-a.jitterBufferDelay,jitterBufferEmittedCount:r.jitterBufferEmittedCount-a.jitterBufferEmittedCount,avgJitterDelayInInterval:(r.jitterBufferDelay-a.jitterBufferDelay)/(r.jitterBufferEmittedCount-a.jitterBufferEmittedCount),framesPerSecond:r.framesPerSecond,freezeCount:r.freezeCount-a.freezeCount,freezeDuration:r.freezeDuration-a.freezeDuration}:{timestamp:r.timestamp,rtt:r.rtt,duration:0,bytesReceived:r.bytesReceived,bitrate:r.bytesReceived*8/(t/1e3),packetsReceived:r.packetsReceived,packetsLost:r.packetsLost,framesDropped:r.framesDropped,framesDecoded:r.framesDecoded,jitter:r.jitter,jitterBufferDelay:r.jitterBufferDelay,jitterBufferEmittedCount:r.jitterBufferEmittedCount,avgJitterDelayInInterval:r.jitterBufferDelay/r.jitterBufferEmittedCount,framesPerSecond:r.framesPerSecond,freezeCount:r.freezeCount,freezeDuration:r.freezeDuration}:{timestamp:r.timestamp,duration:t*u/1e3,rtt:r.rtt,bytesReceived:r.bytesReceived-e[u-1].bytesReceived,bitrate:(r.bytesReceived-e[u-1].bytesReceived)*8/(t/1e3),packetsReceived:r.packetsReceived-e[u-1].packetsReceived,packetsLost:r.packetsLost-e[u-1].packetsLost,framesDropped:r.framesDropped-e[u-1].framesDropped,framesDecoded:r.framesDecoded-e[u-1].framesDecoded,jitter:r.jitter,jitterBufferDelay:r.jitterBufferDelay-e[u-1].jitterBufferDelay,jitterBufferEmittedCount:r.jitterBufferEmittedCount-e[u-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(r.jitterBufferDelay-e[u-1].jitterBufferDelay)/(r.jitterBufferEmittedCount-e[u-1].jitterBufferEmittedCount),framesPerSecond:r.framesPerSecond,freezeCount:r.freezeCount-e[u-1].freezeCount,freezeDuration:r.freezeDuration-e[u-1].freezeDuration}),s=nt(n),i=s.reduce((r,u)=>r+(u.causes.includes("low fps")?1:0),0),o=n.filter(r=>!!r.avgJitterDelayInInterval).map(r=>r.avgJitterDelayInInterval),c=n.filter(r=>!!r.rtt).map(r=>r.rtt);return{webRTCStats:{anomalies:s,minRtt:Math.min(...c),avgRtt:Ee(c),maxRtt:Math.max(...c),aggregateReport:rt(e[0],e[e.length-1],i),minJitterDelayInInterval:Math.min(...o),maxJitterDelayInInterval:Math.max(...o),avgJitterDelayInInterval:Ee(o)},codec:e[0].codec,resolution:`${e[0].frameWidth}x${e[0].frameHeight}`}}const ce=100,st=Math.max(Math.ceil(400/ce),1),ot=.25,ct=.28;function dt(){let e=0,t,a,n=0;return s=>{for(const i of s.values())if(i&&i.type==="inbound-rtp"&&i.kind==="video"){const o=i.jitterBufferDelay,c=i.jitterBufferEmittedCount;if(a&&c>a){const d=o-t,f=c-a;n=d/f}t=o,a=c;const r=i.framesDecoded,u=r-e>0;return e=r,{isReceiving:u,avgJitterDelayInInterval:n,freezeCount:i.freezeCount}}return{isReceiving:!1,avgJitterDelayInInterval:n}}}function ut(e,t,a,n,s,i=!1){let o=[],c,r=0,u=!1,d=Q.Unknown,f=Q.Unknown,L=0,T=0;const _=dt();return setInterval(async()=>{const D=await e.getStats(),{isReceiving:k,avgJitterDelayInInterval:U,freezeCount:N}=_(D),$=at(D);if(k)r=0,L=N-T,f=U<ot?Q.Strong:U>ct&&L>1?Q.Weak:d,f!==d&&(s==null||s(f),d=f,T+=L,L=0),u||(n==null||n(y.Start),c=o[o.length-1],o=[],u=!0),o.push($);else if(u&&(r++,r>=st)){const l=it(o,ce,c);n==null||n(y.Stop,l),t()||a(),T=N,u=!1}},ce)}let je=!1;const J=(e,t)=>je&&console.log(e,t),lt=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function be(e){switch(e){case"connected":return E.Connected;case"checking":return E.Connecting;case"failed":return E.Fail;case"new":return E.New;case"closed":return E.Closed;case"disconnected":return E.Disconnected;case"completed":return E.Completed;default:return E.New}}function ft(e){const[t,a=""]=e.split(/:(.+)/);try{const n=JSON.parse(a);return J("parsed data channel message",{subject:t,data:n}),{subject:t,data:n}}catch(n){return J("Failed to parse data channel message, returning data as string",{subject:t,rawData:a,error:n}),{subject:t,data:a}}}function mt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,report:n}){e===y.Start&&t===y.Start?a==null||a(y.Start):e===y.Stop&&t===y.Stop&&(a==null||a(y.Stop,n))}function gt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:n,report:s}){e===y.Start?a==null||a(y.Start):e===y.Stop&&(a==null||a(y.Stop,s)),t===y.Start?n==null||n(O.Talking):t===y.Stop&&(n==null||n(O.Idle))}function Ae({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:n,streamType:s,report:i}){s===H.Legacy?mt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,report:i}):s===H.Fluent&>({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:n,report:i})}async function ht(e,t,{debug:a=!1,callbacks:n,auth:s,baseURL:i=Z,analytics:o}){var K;je=a;let c=!1,r=!1,u=y.Stop,d=y.Stop;const{startConnection:f,sendStreamRequest:L,close:T,createStream:_,addIceCandidate:D}=t.videoType===te.Clip?et(s,i,e,n.onError):tt(s,i,e,n.onError),{id:k,offer:U,ice_servers:N,session_id:$,fluent:l,interrupt_enabled:p}=await _(t);(K=n.onStreamCreated)==null||K.call(n,{stream_id:k,session_id:$,agent_id:e});const g=new lt({iceServers:N}),I=g.createDataChannel("JanusDataChannel");if(!$)throw new Error("Could not create session_id");const R=l?H.Fluent:H.Legacy;o.enrich({"stream-type":R});const C=t.stream_warmup&&!l,B=()=>c,j=()=>{var m;c=!0,r&&((m=n.onConnectionStateChange)==null||m.call(n,E.Connected))},b=ut(g,B,j,(m,w)=>Ae({statsSignal:d=m,dataChannelSignal:R===H.Legacy?u:void 0,onVideoStateChange:n.onVideoStateChange,onAgentActivityStateChange:n.onAgentActivityStateChange,report:w,streamType:R}),m=>{var w;return(w=n.onConnectivityStateChange)==null?void 0:w.call(n,m)},C);g.onicecandidate=m=>{var w;J("peerConnection.onicecandidate",m);try{m.candidate&&m.candidate.sdpMid&&m.candidate.sdpMLineIndex!==null?D(k,{candidate:m.candidate.candidate,sdpMid:m.candidate.sdpMid,sdpMLineIndex:m.candidate.sdpMLineIndex},$):D(k,{candidate:null},$)}catch(z){(w=n.onError)==null||w.call(n,z,{streamId:k})}},I.onopen=()=>{r=!0,(!C||c)&&j()};function v(m){u=m===F.StreamStarted?y.Start:y.Stop,Ae({statsSignal:R===H.Legacy?d:void 0,dataChannelSignal:u,onVideoStateChange:n.onVideoStateChange,onAgentActivityStateChange:n.onAgentActivityStateChange,streamType:R})}function M(m,w){const z=typeof w=="string"?w:w==null?void 0:w.metadata;z&&o.enrich({streamMetadata:z}),o.track("agent-chat",{event:"ready"})}const S={[F.StreamStarted]:v,[F.StreamDone]:v,[F.StreamReady]:M};I.onmessage=m=>{var V;const{subject:w,data:z}=ft(m.data);(V=S[w])==null||V.call(S,w,z)},g.oniceconnectionstatechange=()=>{var w;J("peerConnection.oniceconnectionstatechange => "+g.iceConnectionState);const m=be(g.iceConnectionState);m!==E.Connected&&((w=n.onConnectionStateChange)==null||w.call(n,m))},g.ontrack=m=>{var w;J("peerConnection.ontrack",m),(w=n.onSrcObjectReady)==null||w.call(n,m.streams[0])},await g.setRemoteDescription(U),J("set remote description OK");const q=await g.createAnswer();return J("create answer OK"),await g.setLocalDescription(q),J("set local description OK"),await f(k,q,$),J("start connection OK"),{speak(m){return L(k,$,m)},async disconnect(){var m;if(k){const w=be(g.iceConnectionState);if(g){if(w===E.New){clearInterval(b);return}g.close(),g.oniceconnectionstatechange=null,g.onnegotiationneeded=null,g.onicecandidate=null,g.ontrack=null}try{w===E.Connected&&await T(k,$).catch(z=>{})}catch(z){J("Error on close stream connection",z)}(m=n.onAgentActivityStateChange)==null||m.call(n,O.Idle),clearInterval(b)}},sendDataChannelMessage(m){var w,z;if(!c||I.readyState!=="open"){J("Data channel is not ready for sending messages"),(w=n.onError)==null||w.call(n,new Error("Data channel is not ready for sending messages"),{streamId:k});return}try{I.send(m)}catch(V){J("Error sending data channel message",V),(z=n.onError)==null||z.call(n,V,{streamId:k})}},sessionId:$,streamId:k,streamType:R,interruptAvailable:p}}function wt(e,t){const{streamOptions:a}=t??{};return{videoType:ye(e.presenter.type),output_resolution:a==null?void 0:a.outputResolution,session_timeout:a==null?void 0:a.sessionTimeout,stream_warmup:a==null?void 0:a.streamWarmup,compatibility_mode:a==null?void 0:a.compatibilityMode,fluent:a==null?void 0:a.fluent}}function pt(e,t,a,n,s){s===H.Fluent?yt(e,t,a,n,s):kt(e,t,a,n,s)}function yt(e,t,a,n,s){e===y.Start?n.track("stream-session",{event:"start","stream-type":s}):e===y.Stop&&n.track("stream-session",{event:"stop",is_greenscreen:t.presenter.type==="clip"&&t.presenter.is_greenscreen,background:t.presenter.type==="clip"&&t.presenter.background,"stream-type":s,...a})}function vt(e,t,a,n){W.get()<=0||(e===y.Start?a.linkTrack("agent-video",{event:"start",latency:W.get(!0),"stream-type":n},"start",[F.StreamVideoCreated]):e===y.Stop&&a.linkTrack("agent-video",{event:"stop",is_greenscreen:t.presenter.type==="clip"&&t.presenter.is_greenscreen,background:t.presenter.type==="clip"&&t.presenter.background,"stream-type":n},"done",[F.StreamVideoDone]))}function kt(e,t,a,n,s){W.get()<=0||(e===y.Start?n.linkTrack("agent-video",{event:"start",latency:W.get(!0),"stream-type":s},"start",[F.StreamVideoCreated]):e===y.Stop&&n.linkTrack("agent-video",{event:"stop",is_greenscreen:t.presenter.type==="clip"&&t.presenter.is_greenscreen,background:t.presenter.type==="clip"&&t.presenter.background,"stream-type":s,...a},"done",[F.StreamVideoDone]))}function Ct(e,t,a){return W.reset(),new Promise(async(n,s)=>{try{const i=await ht(e.id,wt(e,t),{...t,analytics:a,callbacks:{...t.callbacks,onConnectionStateChange:o=>{var c,r;(r=(c=t.callbacks).onConnectionStateChange)==null||r.call(c,o),o===E.Connected&&n(i)},onVideoStateChange:(o,c)=>{var r,u;(u=(r=t.callbacks).onVideoStateChange)==null||u.call(r,o),pt(o,e,c,a,i.streamType)},onAgentActivityStateChange:o=>{var c,r;(r=(c=t.callbacks).onAgentActivityStateChange)==null||r.call(c,o),o===O.Talking?se.update():se.reset(),vt(o===O.Talking?y.Start:y.Stop,e,a,i.streamType)}}})}catch(i){s(i)}})}async function Dt(e,t,a,n,s){var r,u,d,f;const{chat:i,chatMode:o}=await Te(e,a,n,t.mode,t.persistentChat,s);if(o&&o!==t.mode&&(t.mode=o,(u=(r=t.callbacks).onModeChange)==null||u.call(r,o),o===P.TextOnly))return(f=(d=t.callbacks).onError)==null||f.call(d,new de(o)),{chat:i};const c=await Ct(e,t,n);return{chat:i,streamingManager:c}}async function Rt(e,t){var U,N,$;let a=!0,n=!1,s=!1;const i=t.mixpanelKey||Le,o=t.wsURL||Be,c=t.baseURL||Z,r={messages:[],chatMode:t.mode||P.Functional},u=Se(t.auth,c,t.callbacks.onError),d=await u.getById(e),f=qe({token:i,agent:d,isEnabled:t.enableAnalitics,distinctId:t.distinctId}),{onMessage:L,clearQueue:T}=Ze(f,r,t,d,()=>{var l;return(l=r.socketManager)==null?void 0:l.disconnect()});r.messages=xe(t.initialMessages),(N=(U=t.callbacks).onNewMessage)==null||N.call(U,[...r.messages],"answer"),f.track("agent-sdk",{event:"loaded",...We(d)});async function _(l){var B,j,b,v,M,S,q;(j=(B=t.callbacks).onConnectionStateChange)==null||j.call(B,E.Connecting),W.reset(),n=!1,s=!1,l&&!a&&(delete r.chat,(v=(b=t.callbacks).onNewMessage)==null||v.call(b,[...r.messages],"answer"));const p=re(t.mode)?Promise.resolve(void 0):Oe(t.auth,o,{onMessage:L,onError:t.callbacks.onError}),g=ne(()=>Dt(d,t,u,f,r.chat),{limit:3,timeout:Pe,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:K=>(K==null?void 0:K.message)!=="Could not connect"&&K.status!==429,delayMs:1e3}).catch(K=>{var m,w;throw k(P.Maintenance),(w=(m=t.callbacks).onConnectionStateChange)==null||w.call(m,E.Fail),K}),[I,{streamingManager:R,chat:C}]=await Promise.all([p,g]);C&&C.id!==((M=r.chat)==null?void 0:M.id)&&((q=(S=t.callbacks).onNewChat)==null||q.call(S,C.id)),r.streamingManager=R,r.socketManager=I,r.chat=C,a=!1,k((C==null?void 0:C.chat_mode)??t.mode??P.Functional)}async function D(){var l,p,g,I;(l=r.socketManager)==null||l.disconnect(),await((p=r.streamingManager)==null?void 0:p.disconnect()),n=!1,s=!1,delete r.streamingManager,delete r.socketManager,(I=(g=t.callbacks).onConnectionStateChange)==null||I.call(g,E.Disconnected)}async function k(l){var p,g;l!==r.chatMode&&(f.track("agent-mode-change",{mode:l}),r.chatMode=l,r.chatMode!==P.Functional&&await D(),(g=(p=t.callbacks).onModeChange)==null||g.call(p,l))}return{agent:d,getStreamType:()=>{var l;return(l=r.streamingManager)==null?void 0:l.streamType},getIsInterruptAvailable:()=>{var l;return((l=r.streamingManager)==null?void 0:l.interruptAvailable)??!1},starterMessages:(($=d.knowledge)==null?void 0:$.starter_message)||[],getSTTToken:()=>u.getSTTToken(d.id),changeMode:k,enrichAnalytics:f.enrich,async connect(){var l;await _(!0),f.track("agent-chat",{event:"connect",chatId:(l=r.chat)==null?void 0:l.id,agentId:d.id,mode:r.chatMode})},async reconnect(){var l;await D(),await _(!1),f.track("agent-chat",{event:"reconnect",chatId:(l=r.chat)==null?void 0:l.id,agentId:d.id,mode:r.chatMode})},async disconnect(){var l;await D(),f.track("agent-chat",{event:"disconnect",chatId:(l=r.chat)==null?void 0:l.id,agentId:d.id,mode:r.chatMode})},async chat(l){var R,C,B,j,b;const p=()=>{if(re(t.mode))throw new X(`${t.mode} is enabled, chat is disabled`);if(l.length>=800)throw new X("Message cannot be more than 800 characters");if(l.length===0)throw new X("Message cannot be empty");if(r.chatMode===P.Maintenance)throw new X("Chat is in maintenance mode");if(![P.TextOnly,P.Playground].includes(r.chatMode)){if(!r.streamingManager)throw new X("Streaming manager is not initialized");if(!r.chat)throw new X("Chat is not initialized")}},g=async()=>{var v,M;if(!r.chat){const S=await Te(d,u,f,r.chatMode,t.persistentChat);if(!S.chat)throw new x(r.chatMode,!!t.persistentChat);r.chat=S.chat,(M=(v=t.callbacks).onNewChat)==null||M.call(v,r.chat.id)}return r.chat.id},I=async(v,M)=>ne(()=>{var S,q;return u.chat(d.id,M,{chatMode:r.chatMode,streamId:(S=r.streamingManager)==null?void 0:S.streamId,sessionId:(q=r.streamingManager)==null?void 0:q.sessionId,messages:v.map(({matches:K,...m})=>m)},{...Me(r.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:S=>{var m,w,z,V;const q=(m=S==null?void 0:S.message)==null?void 0:m.includes("missing or invalid session_id");return!((w=S==null?void 0:S.message)==null?void 0:w.includes("Stream Error"))&&!q?((V=(z=t.callbacks).onError)==null||V.call(z,S),!1):!0},onRetry:async()=>{await D(),await _(!1)}});try{T(),p(),r.messages.push({id:G(),role:"user",content:l,created_at:new Date(W.update()).toISOString()}),(C=(R=t.callbacks).onNewMessage)==null||C.call(R,[...r.messages],"user");const v=await g(),M=await I([...r.messages],v);return r.messages.push({id:G(),role:"assistant",content:M.result||"",created_at:new Date().toISOString(),context:M.context,matches:M.matches,videoId:M.videoId}),n&&M.videoId&&r.streamingManager&&(n=!1,r.messages[r.messages.length-1].interrupted=!0,await oe(r.streamingManager,M.videoId)),f.track("agent-message-send",{event:"success",mode:r.chatMode,messages:r.messages.length+1}),M.result&&((j=(B=t.callbacks).onNewMessage)==null||j.call(B,[...r.messages],"answer"),f.track("agent-message-received",{latency:W.get(!0),mode:r.chatMode,messages:r.messages.length})),M}catch(v){throw n=!1,((b=r.messages[r.messages.length-1])==null?void 0:b.role)==="assistant"&&r.messages.pop(),f.track("agent-message-send",{event:"error",mode:r.chatMode,messages:r.messages.length}),v}},rate(l,p,g){var C,B,j,b;const I=r.messages.find(v=>v.id===l);if(r.chat){if(!I)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const R=((C=I.matches)==null?void 0:C.map(v=>[v.document_id,v.id]))??[];return f.track("agent-rate",{event:g?"update":"create",thumb:p===1?"up":"down",knowledge_id:((B=d.knowledge)==null?void 0:B.id)??"",mode:r.chatMode,matches:R,score:p}),g?u.updateRating(d.id,r.chat.id,g,{knowledge_id:((j=d.knowledge)==null?void 0:j.id)??"",message_id:l,matches:R,score:p}):u.createRating(d.id,r.chat.id,{knowledge_id:((b=d.knowledge)==null?void 0:b.id)??"",message_id:l,matches:R,score:p})},deleteRate(l){var p;if(!r.chat)throw new Error("Chat is not initialized");return f.track("agent-rate-delete",{type:"text",chat_id:(p=r.chat)==null?void 0:p.id,id:l,mode:r.chatMode}),u.deleteRating(d.id,r.chat.id,l)},async speak(l){var R,C,B,j,b;function p(){if(typeof l=="string"){if(!d.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:d.presenter.voice,input:l,ssml:!1}}if(l.type==="text"&&!l.provider){if(!d.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:d.presenter.voice,input:l.input,ssml:l.ssml}}return l}const g=p();if(f.track("agent-speak",g),W.update(),r.messages&&g.type==="text"&&(r.messages.push({id:G(),role:"assistant",content:g.input,created_at:new Date(W.get(!0)).toISOString()}),(C=(R=t.callbacks).onNewMessage)==null||C.call(R,[...r.messages],"answer")),ze(r.chatMode))return{duration:0,video_id:"",status:"success"};if(!r.streamingManager)throw new Error("Please connect to the agent first");s=!0;try{const v=await r.streamingManager.speak({script:g,metadata:{chat_id:(B=r.chat)==null?void 0:B.id,agent_id:d.id}});return s=!1,r.messages[r.messages.length-1].videoId=v.video_id,n&&v.video_id&&r.streamingManager&&(n=!1,r.messages[r.messages.length-1].interrupted=!0,await oe(r.streamingManager,v.video_id)),(b=(j=t.callbacks).onNewMessage)==null||b.call(j,[...r.messages],"answer"),v}finally{s=!1}},async interrupt({type:l}){var R,C,B,j,b;const p=r.messages[r.messages.length-1],g=(p==null?void 0:p.role)==="user",I=g||s;if(Ve(r.streamingManager,(R=r.streamingManager)==null?void 0:R.streamType,I,!!(p!=null&&p.videoId)),f.track("agent-video-interrupt",{type:l||"click",stream_id:(C=r.streamingManager)==null?void 0:C.streamId,agent_id:d.id,owner_id:d.owner_id,video_duration_to_interrupt:se.get(!0),message_duration_to_interrupt:W.get(!0),chat_id:(B=r.chat)==null?void 0:B.id,mode:r.chatMode,queued_interrupt:g}),I){n=!0;return}p.interrupted=!0,(b=(j=t.callbacks).onNewMessage)==null||b.call(j,[...r.messages],"answer"),oe(r.streamingManager,p.videoId)}}}function St(e,t,a){const{getById:n}=Se(t,a||Z);return n(e)}h.AgentActivityState=O,h.AgentStatus=me,h.ChatCreationFailed=x,h.ChatMode=P,h.ChatModeDowngraded=de,h.ChatProgress=Y,h.ConnectionState=E,h.ConnectivityState=Q,h.DocumentType=pe,h.KnowledgeType=we,h.PlanGroup=fe,h.Providers=ve,h.RateState=ge,h.StreamEvents=F,h.StreamType=H,h.StreamingState=y,h.Subject=he,h.UserPlan=le,h.ValidationError=X,h.VideoType=te,h.VoiceAccess=ke,h.WsError=ue,h.createAgentManager=Rt,h.getAgent=St,h.mapVideoType=ye,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(h,A){typeof exports=="object"&&typeof module<"u"?A(exports):typeof define=="function"&&define.amd?define(["exports"],A):(h=typeof globalThis<"u"?globalThis:h||self,A(h.index={}))})(this,function(h){"use strict";var _t=Object.defineProperty;var Et=(h,A,x)=>A in h?_t(h,A,{enumerable:!0,configurable:!0,writable:!0,value:x}):h[A]=x;var ee=(h,A,x)=>(Et(h,typeof A!="symbol"?A+"":A,x),x);class A extends Error{constructor({kind:a,description:n,error:s}){super(JSON.stringify({kind:a,description:n}));ee(this,"kind");ee(this,"description");ee(this,"error");this.kind=a,this.description=n,this.error=s}}class x extends A{constructor(t,a){super({kind:"ChatCreationFailed",description:`Failed to create ${a?"persistent":""} chat, mode: ${t}`})}}class ce extends A{constructor(t){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${t}`})}}class X extends A{constructor(a,n){super({kind:"ValidationError",description:a});ee(this,"key");this.key=n}}class de extends A{constructor(t){super({kind:"WSError",description:t})}}var le=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(le||{}),ue=(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))(ue||{}),fe=(e=>(e.Created="created",e.Started="started",e.Done="done",e.Error="error",e.Rejected="rejected",e.Ready="ready",e))(fe||{}),me=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(me||{}),T=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e.Off="Off",e))(T||{}),Y=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(Y||{}),ge=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(ge||{}),he=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(he||{}),we=(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))(we||{}),te=(e=>(e.Clip="clip",e.Talk="talk",e))(te||{});const pe=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var y=(e=>(e.Start="START",e.Stop="STOP",e))(y||{}),Q=(e=>(e.Strong="STRONG",e.Weak="WEAK",e.Unknown="UNKNOWN",e))(Q||{}),O=(e=>(e.Idle="IDLE",e.Talking="TALKING",e))(O||{}),F=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",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))(F||{}),E=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(E||{}),H=(e=>(e.Legacy="legacy",e.Fluent="fluent",e))(H||{}),ye=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(ye||{}),ve=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(ve||{});const Ae=45*1e3,$e="X-Playground-Chat",Z="https://api.d-id.com",Be="wss://notifications.d-id.com",Le="79f81a83a67430be2bc0fd61042b8faa",ke=e=>new Promise(t=>setTimeout(t,e)),G=(e=16)=>{const t=new Uint8Array(e);return window.crypto.getRandomValues(t),Array.from(t,a=>a.toString(16).padStart(2,"0")).join("").slice(0,13)},ze=e=>[T.TextOnly,T.Playground,T.Maintenance].includes(e),Ce=e=>e&&[T.DirectPlayback,T.Off].includes(e);function Ne(e,t){let a;return{promise:new Promise((s,i)=>{a=setTimeout(()=>i(new Error(t)),e)}),clear:()=>clearTimeout(a)}}async function re(e,t){const a={limit:(t==null?void 0:t.limit)??3,delayMs:(t==null?void 0:t.delayMs)??0,timeout:(t==null?void 0:t.timeout)??3e4,timeoutErrorMessage:(t==null?void 0:t.timeoutErrorMessage)||"Timeout error",shouldRetryFn:(t==null?void 0:t.shouldRetryFn)??(()=>!0),onRetry:(t==null?void 0:t.onRetry)??(()=>{})};let n;for(let s=1;s<=a.limit;s++)try{if(!a.timeout)return await e();const{promise:i,clear:o}=Ne(a.timeout,a.timeoutErrorMessage),c=e().finally(o);return await Promise.race([c,i])}catch(i){if(n=i,!a.shouldRetryFn(i)||s>=a.limit)throw i;await ke(a.delayMs),a.onRetry(i)}throw n}function De(){let e=window.localStorage.getItem("did_external_key_id");if(!e){let t=G();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let Fe=G();function Re(e){if(e.type==="bearer")return`Bearer ${e.token}`;if(e.type==="basic")return`Basic ${btoa(`${e.username}:${e.password}`)}`;if(e.type==="key")return`Client-Key ${e.clientKey}.${De()}_${Fe}`;throw new Error(`Unknown auth type: ${e}`)}const Je=e=>re(e,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:t=>t.status===429});function ne(e,t=Z,a){const n=async(s,i)=>{const{skipErrorHandler:o,...c}=i||{},r=await Je(()=>fetch(t+(s!=null&&s.startsWith("/")?s:`/${s}`),{...c,headers:{...c.headers,Authorization:Re(e),"Content-Type":"application/json"}}));if(!r.ok){let l=await r.text().catch(()=>`Failed to fetch with status ${r.status}`);const d=new Error(l);throw a&&!o&&a(d,{url:s,options:c,headers:r.headers}),d}return r.json()};return{get(s,i){return n(s,{...i,method:"GET"})},post(s,i,o){return n(s,{...o,body:JSON.stringify(i),method:"POST"})},delete(s,i,o){return n(s,{...o,body:JSON.stringify(i),method:"DELETE"})},patch(s,i,o){return n(s,{...o,body:JSON.stringify(i),method:"PATCH"})}}}function Se(e,t=Z,a){const n=ne(e,`${t}/agents`,a);return{create(s,i){return n.post("/",s,i)},getAgents(s,i){return n.get(`/${s?`?tag=${s}`:""}`,i).then(o=>o??[])},getById(s,i){return n.get(`/${s}`,i)},delete(s,i){return n.delete(`/${s}`,void 0,i)},update(s,i,o){return n.patch(`/${s}`,i,o)},newChat(s,i,o){return n.post(`/${s}/chat`,i,o)},chat(s,i,o,c){return n.post(`/${s}/chat/${i}`,o,c)},createRating(s,i,o,c){return n.post(`/${s}/chat/${i}/ratings`,o,c)},updateRating(s,i,o,c,r){return n.patch(`/${s}/chat/${i}/ratings/${o}`,c,r)},deleteRating(s,i,o,c){return n.delete(`/${s}/chat/${i}/ratings/${o}`,c)},getSTTToken(s,i){return n.get(`/${s}/stt-token`,i)}}}const _e=e=>e.type==="clip"&&e.presenter_id.startsWith("v2_")?"clip_v2":e.type;function We(e){var s,i,o,c;const t=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",a=()=>{const r=navigator.platform;return r.toLowerCase().includes("win")?"Windows":r.toLowerCase().includes("mac")?"Mac OS X":r.toLowerCase().includes("linux")?"Linux":"Unknown"},n=e.presenter;return{$os:`${a()}`,isMobile:`${t()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:_e(n),agentVoice:{voiceId:(i=(s=e.presenter)==null?void 0:s.voice)==null?void 0:i.voice_id,provider:(c=(o=e.presenter)==null?void 0:o.voice)==null?void 0:c.type}}}const Ue=e=>e.reduce((t,a)=>t+a,0),Ee=e=>Ue(e)/e.length;function Ke(e,t,a){var r,l,d;const{event:n,...s}=e,{template:i}=(t==null?void 0:t.llm)||{},{language:o}=((r=t==null?void 0:t.presenter)==null?void 0:r.voice)||{};return{...s,llm:{...s.llm,template:i},script:{...s.script,provider:{...(l=s==null?void 0:s.script)==null?void 0:l.provider,language:o}},stitch:(t==null?void 0:t.presenter.type)==="talk"?(d=t==null?void 0:t.presenter)==null?void 0:d.stitch:void 0,...a}}let ae={};const He="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function qe(e){var i,o,c,r,l,d;const t=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",a=e.agent.presenter,n=(i=e.agent.llm)==null?void 0:i.prompt_customization,s={token:e.token||"testKey",distinct_id:e.distinctId||De(),agentId:e.agent.id,agentType:_e(a),owner_id:e.agent.owner_id??"",promptVersion:(o=e.agent.llm)==null?void 0:o.prompt_version,behavior:{role:n==null?void 0:n.role,personality:n==null?void 0:n.personality,instructions:(c=e.agent.llm)==null?void 0:c.instructions},temperature:(r=e.agent.llm)==null?void 0:r.temperature,knowledgeSource:n==null?void 0:n.knowledge_source,starterQuestionsCount:(d=(l=e.agent.knowledge)==null?void 0:l.starter_message)==null?void 0:d.length,topicsToAvoid:n==null?void 0:n.topics_to_avoid,maxResponseLength:n==null?void 0:n.max_response_length};return{...s,additionalProperties:{},isEnabled:e.isEnabled??!0,getRandom:G,enrich(f){this.additionalProperties={...this.additionalProperties,...f}},async track(f,L){if(!this.isEnabled)return Promise.resolve();const{audioPath:j,..._}=L||{},D={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:f,properties:{...this.additionalProperties,..._,...s,source:t,time:Date.now(),$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}}])})};try{return await fetch(He,D).then(k=>k.json())}catch(k){return console.error(k)}},linkTrack(f,L,j,_){ae[f]||(ae[f]={events:{},resolvedDependencies:[]}),_.includes(j)||_.push(j);const D=ae[f];if(D.events[j]={props:L},D.resolvedDependencies.push(j),_.every(U=>D.resolvedDependencies.includes(U))){const U=_.reduce((N,$)=>D.events[$]?{...N,...D.events[$].props}:N,{});this.track(f,U),D.resolvedDependencies=D.resolvedDependencies.filter(N=>!_.includes(N)),_.forEach(N=>{delete D.events[N]})}}}}function Ie(){let e=0;return{reset:()=>e=0,update:()=>e=Date.now(),get:(t=!1)=>t?Date.now()-e:e}}const W=Ie(),ie=Ie();function Me(e){return e===T.Playground?{headers:{[$e]:"true"}}:{}}async function Te(e,t,a,n,s=!1,i){try{return!i&&!Ce(n)&&(i=await t.newChat(e.id,{persist:s},Me(n)),a.track("agent-chat",{event:"created",chat_id:i.id,agent_id:e.id,mode:n})),{chat:i,chatMode:(i==null?void 0:i.chat_mode)??n}}catch(o){try{const c=JSON.parse(o.message);if((c==null?void 0:c.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(c){console.error("Error parsing the error message:",c)}throw new Error("Cannot create new chat")}}function xe(e){return e&&e.length>0?e:[]}function Ve(e,t,a,n){if(!e)throw new Error("Please connect to the agent first");if(!e.interruptAvailable)throw new Error("Interrupt is not enabled for this stream");if(t!==H.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!a&&!n)throw new Error("No active video to interrupt")}async function se(e,t){const a={type:F.StreamInterrupt,videoId:t,timestamp:Date.now()};e.sendDataChannelMessage(JSON.stringify(a))}function Xe(e){return new Promise((t,a)=>{const{callbacks:n,host:s,auth:i}=e,{onMessage:o=null,onOpen:c=null,onClose:r=null,onError:l=null}=n||{},d=new WebSocket(`${s}?authorization=${Re(i)}`);d.onmessage=o,d.onclose=r,d.onerror=f=>{console.error(f),l==null||l("Websocket failed to connect",f),a(f)},d.onopen=f=>{c==null||c(f),t(d)}})}async function Ye(e){const{retries:t=1}=e;let a=null;for(let n=0;(a==null?void 0:a.readyState)!==WebSocket.OPEN;n++)try{a=await Xe(e)}catch(s){if(n===t)throw s;await ke(n*500)}return a}async function Oe(e,t,a){const n=a!=null&&a.onMessage?[a.onMessage]:[],s=await Ye({auth:e,host:t,callbacks:{onError:i=>{var o;return(o=a.onError)==null?void 0:o.call(a,new de(i))},onMessage(i){const o=JSON.parse(i.data);n.forEach(c=>c(o.event,o))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:i=>n.push(i)}}function Qe(e){if(e.answer!==void 0)return e.answer;let t=0,a="";for(;t in e;)a+=e[t++];return a}function Ge(e,t,a,n,s){const i=n.messages[n.messages.length-1];if(!(e===Y.Partial||e===Y.Answer)||(i==null?void 0:i.role)!=="assistant")return;const{content:o,sequence:c}=t;e===Y.Partial?a[c]=o:a.answer=o;const r=Qe(a);(i.content!==r||e===Y.Answer)&&(i.content=r,s==null||s([...n.messages],e))}function Ze(e,t,a,n,s){let i={};return{clearQueue:()=>i={},onMessage:(o,c)=>{var r,l;if("content"in c)Ge(o,c,i,t,a.callbacks.onNewMessage),o===Y.Answer&&e.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const d=F,f=[d.StreamVideoDone,d.StreamVideoError,d.StreamVideoRejected],L=[d.StreamFailed,d.StreamVideoError,d.StreamVideoRejected],j=Ke(c,n,{mode:t.chatMode});if(o=o,o===d.StreamVideoCreated)e.linkTrack("agent-video",j,d.StreamVideoCreated,["start"]);else if(f.includes(o)){const _=o.split("/")[1];L.includes(o)?e.track("agent-video",{...j,event:_}):e.linkTrack("agent-video",{...j,event:_},o,["done"])}L.includes(o)&&((l=(r=a.callbacks).onError)==null||l.call(r,new Error(`Stream failed with event ${o}`),{data:c})),c.event===d.StreamDone&&s()}}}}function et(e,t,a,n){const s=ne(e,`${t}/agents/${a}`,n);return{createStream(i){return s.post("/streams",{output_resolution:i.output_resolution,compatibility_mode:i.compatibility_mode,stream_warmup:i.stream_warmup,session_timeout:i.session_timeout,fluent:i.fluent})},startConnection(i,o,c){return s.post(`/streams/${i}/sdp`,{session_id:c,answer:o})},addIceCandidate(i,o,c){return s.post(`/streams/${i}/ice`,{session_id:c,...o})},sendStreamRequest(i,o,c){return s.post(`/streams/${i}`,{session_id:o,...c})},close(i,o){return s.delete(`/streams/${i}`,{session_id:o})}}}function tt(e,t,a,n){const s=ne(e,`${t}/agents/${a}`,n);return{createStream(i,o){return s.post("/streams",{driver_url:i.driver_url,face:i.face,config:i.config,output_resolution:i.output_resolution,compatibility_mode:i.compatibility_mode,stream_warmup:i.stream_warmup,session_timeout:i.session_timeout,fluent:i.fluent},o)},startConnection(i,o,c,r){return s.post(`/streams/${i}/sdp`,{session_id:c,answer:o},r)},addIceCandidate(i,o,c,r){return s.post(`/streams/${i}/ice`,{session_id:c,...o},r)},sendStreamRequest(i,o,c,r){return s.post(`/streams/${i}`,{session_id:o,...c},r)},close(i,o,c){return s.delete(`/streams/${i}`,{session_id:o},c)}}}function rt(e,t,a){const n=(t.timestamp-e.timestamp)/1e3;return{duration:n,bytesReceived:t.bytesReceived-e.bytesReceived,bitrate:Math.round((t.bytesReceived-e.bytesReceived)*8/n),packetsReceived:t.packetsReceived-e.packetsReceived,packetsLost:t.packetsLost-e.packetsLost,framesDropped:t.framesDropped-e.framesDropped,framesDecoded:t.framesDecoded-e.framesDecoded,jitter:t.jitter,avgJitterDelayInInterval:(t.jitterBufferDelay-e.jitterBufferDelay)/(t.jitterBufferEmittedCount-e.jitterBufferEmittedCount),jitterBufferEmittedCount:t.jitterBufferEmittedCount-e.jitterBufferEmittedCount,jitterBufferDelay:(t.jitterBufferDelay-e.jitterBufferDelay)/n,framesPerSecond:t.framesPerSecond,freezeCount:t.freezeCount-e.freezeCount,freezeDuration:t.freezeDuration-e.freezeDuration,lowFpsCount:a}}function nt(e){return e.filter(t=>t.freezeCount>0||t.framesPerSecond<21||t.framesDropped>0||t.packetsLost>0).map(t=>{const{timestamp:a,...n}=t,s=[];return t.freezeCount>0&&s.push("freeze"),t.framesPerSecond<21&&s.push("low fps"),t.framesDropped>0&&s.push("frames dropped"),t.packetsLost>0&&s.push("packet loss"),{...n,causes:s}})}function at(e){let t="",a=0;for(const n of e.values())if(n&&n.type==="codec"&&n.mimeType.startsWith("video")&&(t=n.mimeType.split("/")[1]),n&&n.type==="candidate-pair"&&(a=n.currentRoundTripTime),n&&n.type==="inbound-rtp"&&n.kind==="video")return{codec:t,rtt:a,timestamp:n.timestamp,bytesReceived:n.bytesReceived,packetsReceived:n.packetsReceived,packetsLost:n.packetsLost,framesDropped:n.framesDropped,framesDecoded:n.framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay,jitterBufferEmittedCount:n.jitterBufferEmittedCount,avgJitterDelayInInterval:n.jitterBufferDelay/n.jitterBufferEmittedCount,frameWidth:n.frameWidth,frameHeight:n.frameHeight,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount,freezeDuration:n.totalFreezesDuration};return{}}function it(e,t,a){const n=e.map((r,l)=>l===0?a?{timestamp:r.timestamp,duration:0,rtt:r.rtt,bytesReceived:r.bytesReceived-a.bytesReceived,bitrate:(r.bytesReceived-a.bytesReceived)*8/(t/1e3),packetsReceived:r.packetsReceived-a.packetsReceived,packetsLost:r.packetsLost-a.packetsLost,framesDropped:r.framesDropped-a.framesDropped,framesDecoded:r.framesDecoded-a.framesDecoded,jitter:r.jitter,jitterBufferDelay:r.jitterBufferDelay-a.jitterBufferDelay,jitterBufferEmittedCount:r.jitterBufferEmittedCount-a.jitterBufferEmittedCount,avgJitterDelayInInterval:(r.jitterBufferDelay-a.jitterBufferDelay)/(r.jitterBufferEmittedCount-a.jitterBufferEmittedCount),framesPerSecond:r.framesPerSecond,freezeCount:r.freezeCount-a.freezeCount,freezeDuration:r.freezeDuration-a.freezeDuration}:{timestamp:r.timestamp,rtt:r.rtt,duration:0,bytesReceived:r.bytesReceived,bitrate:r.bytesReceived*8/(t/1e3),packetsReceived:r.packetsReceived,packetsLost:r.packetsLost,framesDropped:r.framesDropped,framesDecoded:r.framesDecoded,jitter:r.jitter,jitterBufferDelay:r.jitterBufferDelay,jitterBufferEmittedCount:r.jitterBufferEmittedCount,avgJitterDelayInInterval:r.jitterBufferDelay/r.jitterBufferEmittedCount,framesPerSecond:r.framesPerSecond,freezeCount:r.freezeCount,freezeDuration:r.freezeDuration}:{timestamp:r.timestamp,duration:t*l/1e3,rtt:r.rtt,bytesReceived:r.bytesReceived-e[l-1].bytesReceived,bitrate:(r.bytesReceived-e[l-1].bytesReceived)*8/(t/1e3),packetsReceived:r.packetsReceived-e[l-1].packetsReceived,packetsLost:r.packetsLost-e[l-1].packetsLost,framesDropped:r.framesDropped-e[l-1].framesDropped,framesDecoded:r.framesDecoded-e[l-1].framesDecoded,jitter:r.jitter,jitterBufferDelay:r.jitterBufferDelay-e[l-1].jitterBufferDelay,jitterBufferEmittedCount:r.jitterBufferEmittedCount-e[l-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(r.jitterBufferDelay-e[l-1].jitterBufferDelay)/(r.jitterBufferEmittedCount-e[l-1].jitterBufferEmittedCount),framesPerSecond:r.framesPerSecond,freezeCount:r.freezeCount-e[l-1].freezeCount,freezeDuration:r.freezeDuration-e[l-1].freezeDuration}),s=nt(n),i=s.reduce((r,l)=>r+(l.causes.includes("low fps")?1:0),0),o=n.filter(r=>!!r.avgJitterDelayInInterval).map(r=>r.avgJitterDelayInInterval),c=n.filter(r=>!!r.rtt).map(r=>r.rtt);return{webRTCStats:{anomalies:s,minRtt:Math.min(...c),avgRtt:Ee(c),maxRtt:Math.max(...c),aggregateReport:rt(e[0],e[e.length-1],i),minJitterDelayInInterval:Math.min(...o),maxJitterDelayInInterval:Math.max(...o),avgJitterDelayInInterval:Ee(o)},codec:e[0].codec,resolution:`${e[0].frameWidth}x${e[0].frameHeight}`}}const oe=100,st=Math.max(Math.ceil(400/oe),1),ot=.25,ct=.28;function dt(){let e=0,t,a,n=0;return s=>{for(const i of s.values())if(i&&i.type==="inbound-rtp"&&i.kind==="video"){const o=i.jitterBufferDelay,c=i.jitterBufferEmittedCount;if(a&&c>a){const d=o-t,f=c-a;n=d/f}t=o,a=c;const r=i.framesDecoded,l=r-e>0;return e=r,{isReceiving:l,avgJitterDelayInInterval:n,freezeCount:i.freezeCount}}return{isReceiving:!1,avgJitterDelayInInterval:n}}}function lt(e,t,a,n,s,i=!1){let o=[],c,r=0,l=!1,d=Q.Unknown,f=Q.Unknown,L=0,j=0;const _=dt();return setInterval(async()=>{const D=await e.getStats(),{isReceiving:k,avgJitterDelayInInterval:U,freezeCount:N}=_(D),$=at(D);if(k)r=0,L=N-j,f=U<ot?Q.Strong:U>ct&&L>1?Q.Weak:d,f!==d&&(s==null||s(f),d=f,j+=L,L=0),l||(n==null||n(y.Start),c=o[o.length-1],o=[],l=!0),o.push($);else if(l&&(r++,r>=st)){const u=it(o,oe,c);n==null||n(y.Stop,u),t()||a(),j=N,l=!1}},oe)}let je=!1;const J=(e,t)=>je&&console.log(e,t),ut=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function be(e){switch(e){case"connected":return E.Connected;case"checking":return E.Connecting;case"failed":return E.Fail;case"new":return E.New;case"closed":return E.Closed;case"disconnected":return E.Disconnected;case"completed":return E.Completed;default:return E.New}}function ft(e){const[t,a=""]=e.split(/:(.+)/);try{const n=JSON.parse(a);return J("parsed data channel message",{subject:t,data:n}),{subject:t,data:n}}catch(n){return J("Failed to parse data channel message, returning data as string",{subject:t,rawData:a,error:n}),{subject:t,data:a}}}function mt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,report:n}){e===y.Start&&t===y.Start?a==null||a(y.Start):e===y.Stop&&t===y.Stop&&(a==null||a(y.Stop,n))}function gt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:n,report:s}){e===y.Start?a==null||a(y.Start):e===y.Stop&&(a==null||a(y.Stop,s)),t===y.Start?n==null||n(O.Talking):t===y.Stop&&(n==null||n(O.Idle))}function Pe({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:n,streamType:s,report:i}){s===H.Legacy?mt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,report:i}):s===H.Fluent&>({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:n,report:i})}async function ht(e,t,{debug:a=!1,callbacks:n,auth:s,baseURL:i=Z,analytics:o}){var K;je=a;let c=!1,r=!1,l=y.Stop,d=y.Stop;const{startConnection:f,sendStreamRequest:L,close:j,createStream:_,addIceCandidate:D}=t.videoType===te.Clip?et(s,i,e,n.onError):tt(s,i,e,n.onError),{id:k,offer:U,ice_servers:N,session_id:$,fluent:u,interrupt_enabled:p}=await _(t);(K=n.onStreamCreated)==null||K.call(n,{stream_id:k,session_id:$,agent_id:e});const g=new ut({iceServers:N}),I=g.createDataChannel("JanusDataChannel");if(!$)throw new Error("Could not create session_id");const R=u?H.Fluent:H.Legacy;o.enrich({"stream-type":R});const C=t.stream_warmup&&!u,B=()=>c,b=()=>{var m;c=!0,r&&((m=n.onConnectionStateChange)==null||m.call(n,E.Connected))},P=lt(g,B,b,(m,w)=>Pe({statsSignal:d=m,dataChannelSignal:R===H.Legacy?l:void 0,onVideoStateChange:n.onVideoStateChange,onAgentActivityStateChange:n.onAgentActivityStateChange,report:w,streamType:R}),m=>{var w;return(w=n.onConnectivityStateChange)==null?void 0:w.call(n,m)},C);g.onicecandidate=m=>{var w;J("peerConnection.onicecandidate",m);try{m.candidate&&m.candidate.sdpMid&&m.candidate.sdpMLineIndex!==null?D(k,{candidate:m.candidate.candidate,sdpMid:m.candidate.sdpMid,sdpMLineIndex:m.candidate.sdpMLineIndex},$):D(k,{candidate:null},$)}catch(z){(w=n.onError)==null||w.call(n,z,{streamId:k})}},I.onopen=()=>{r=!0,(!C||c)&&b()};function v(m){l=m===F.StreamStarted?y.Start:y.Stop,Pe({statsSignal:R===H.Legacy?d:void 0,dataChannelSignal:l,onVideoStateChange:n.onVideoStateChange,onAgentActivityStateChange:n.onAgentActivityStateChange,streamType:R})}function M(m,w){const z=typeof w=="string"?w:w==null?void 0:w.metadata;z&&o.enrich({streamMetadata:z}),o.track("agent-chat",{event:"ready"})}const S={[F.StreamStarted]:v,[F.StreamDone]:v,[F.StreamReady]:M};I.onmessage=m=>{var V;const{subject:w,data:z}=ft(m.data);(V=S[w])==null||V.call(S,w,z)},g.oniceconnectionstatechange=()=>{var w;J("peerConnection.oniceconnectionstatechange => "+g.iceConnectionState);const m=be(g.iceConnectionState);m!==E.Connected&&((w=n.onConnectionStateChange)==null||w.call(n,m))},g.ontrack=m=>{var w;J("peerConnection.ontrack",m),(w=n.onSrcObjectReady)==null||w.call(n,m.streams[0])},await g.setRemoteDescription(U),J("set remote description OK");const q=await g.createAnswer();return J("create answer OK"),await g.setLocalDescription(q),J("set local description OK"),await f(k,q,$),J("start connection OK"),{speak(m){return L(k,$,m)},async disconnect(){var m;if(k){const w=be(g.iceConnectionState);if(g){if(w===E.New){clearInterval(P);return}g.close(),g.oniceconnectionstatechange=null,g.onnegotiationneeded=null,g.onicecandidate=null,g.ontrack=null}try{w===E.Connected&&await j(k,$).catch(z=>{})}catch(z){J("Error on close stream connection",z)}(m=n.onAgentActivityStateChange)==null||m.call(n,O.Idle),clearInterval(P)}},sendDataChannelMessage(m){var w,z;if(!c||I.readyState!=="open"){J("Data channel is not ready for sending messages"),(w=n.onError)==null||w.call(n,new Error("Data channel is not ready for sending messages"),{streamId:k});return}try{I.send(m)}catch(V){J("Error sending data channel message",V),(z=n.onError)==null||z.call(n,V,{streamId:k})}},sessionId:$,streamId:k,streamType:R,interruptAvailable:p}}function wt(e,t){const{streamOptions:a}=t??{};return{videoType:pe(e.presenter.type),output_resolution:a==null?void 0:a.outputResolution,session_timeout:a==null?void 0:a.sessionTimeout,stream_warmup:a==null?void 0:a.streamWarmup,compatibility_mode:a==null?void 0:a.compatibilityMode,fluent:a==null?void 0:a.fluent}}function pt(e,t,a,n,s){s===H.Fluent?yt(e,t,a,n,s):kt(e,t,a,n,s)}function yt(e,t,a,n,s){e===y.Start?n.track("stream-session",{event:"start","stream-type":s}):e===y.Stop&&n.track("stream-session",{event:"stop",is_greenscreen:t.presenter.type==="clip"&&t.presenter.is_greenscreen,background:t.presenter.type==="clip"&&t.presenter.background,"stream-type":s,...a})}function vt(e,t,a,n){W.get()<=0||(e===y.Start?a.linkTrack("agent-video",{event:"start",latency:W.get(!0),"stream-type":n},"start",[F.StreamVideoCreated]):e===y.Stop&&a.linkTrack("agent-video",{event:"stop",is_greenscreen:t.presenter.type==="clip"&&t.presenter.is_greenscreen,background:t.presenter.type==="clip"&&t.presenter.background,"stream-type":n},"done",[F.StreamVideoDone]))}function kt(e,t,a,n,s){W.get()<=0||(e===y.Start?n.linkTrack("agent-video",{event:"start",latency:W.get(!0),"stream-type":s},"start",[F.StreamVideoCreated]):e===y.Stop&&n.linkTrack("agent-video",{event:"stop",is_greenscreen:t.presenter.type==="clip"&&t.presenter.is_greenscreen,background:t.presenter.type==="clip"&&t.presenter.background,"stream-type":s,...a},"done",[F.StreamVideoDone]))}function Ct(e,t,a){return W.reset(),new Promise(async(n,s)=>{try{const i=await ht(e.id,wt(e,t),{...t,analytics:a,callbacks:{...t.callbacks,onConnectionStateChange:o=>{var c,r;(r=(c=t.callbacks).onConnectionStateChange)==null||r.call(c,o),o===E.Connected&&n(i)},onVideoStateChange:(o,c)=>{var r,l;(l=(r=t.callbacks).onVideoStateChange)==null||l.call(r,o),pt(o,e,c,a,i.streamType)},onAgentActivityStateChange:o=>{var c,r;(r=(c=t.callbacks).onAgentActivityStateChange)==null||r.call(c,o),o===O.Talking?ie.update():ie.reset(),vt(o===O.Talking?y.Start:y.Stop,e,a,i.streamType)}}})}catch(i){s(i)}})}async function Dt(e,t,a,n,s){var r,l,d,f;const{chat:i,chatMode:o}=await Te(e,a,n,t.mode,t.persistentChat,s);if(o&&o!==t.mode&&(t.mode=o,(l=(r=t.callbacks).onModeChange)==null||l.call(r,o),o===T.TextOnly))return(f=(d=t.callbacks).onError)==null||f.call(d,new ce(o)),{chat:i};const c=await Ct(e,t,n);return{chat:i,streamingManager:c}}async function Rt(e,t){var U,N,$;let a=!0,n=!1,s=!1;const i=t.mixpanelKey||Le,o=t.wsURL||Be,c=t.baseURL||Z,r={messages:[],chatMode:t.mode||T.Functional},l=Se(t.auth,c,t.callbacks.onError),d=await l.getById(e),f=qe({token:i,agent:d,isEnabled:t.enableAnalitics,distinctId:t.distinctId}),{onMessage:L,clearQueue:j}=Ze(f,r,t,d,()=>{var u;return(u=r.socketManager)==null?void 0:u.disconnect()});r.messages=xe(t.initialMessages),(N=(U=t.callbacks).onNewMessage)==null||N.call(U,[...r.messages],"answer"),f.track("agent-sdk",{event:"loaded",...We(d)});async function _(u){var B,b,P,v,M,S,q;(b=(B=t.callbacks).onConnectionStateChange)==null||b.call(B,E.Connecting),W.reset(),n=!1,s=!1,u&&!a&&(delete r.chat,(v=(P=t.callbacks).onNewMessage)==null||v.call(P,[...r.messages],"answer"));const p=t.mode===T.DirectPlayback?Promise.resolve(void 0):Oe(t.auth,o,{onMessage:L,onError:t.callbacks.onError}),g=re(()=>Dt(d,t,l,f,r.chat),{limit:3,timeout:Ae,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:K=>(K==null?void 0:K.message)!=="Could not connect"&&K.status!==429,delayMs:1e3}).catch(K=>{var m,w;throw k(T.Maintenance),(w=(m=t.callbacks).onConnectionStateChange)==null||w.call(m,E.Fail),K}),[I,{streamingManager:R,chat:C}]=await Promise.all([p,g]);C&&C.id!==((M=r.chat)==null?void 0:M.id)&&((q=(S=t.callbacks).onNewChat)==null||q.call(S,C.id)),r.streamingManager=R,r.socketManager=I,r.chat=C,a=!1,k((C==null?void 0:C.chat_mode)??t.mode??T.Functional)}async function D(){var u,p,g,I;(u=r.socketManager)==null||u.disconnect(),await((p=r.streamingManager)==null?void 0:p.disconnect()),n=!1,s=!1,delete r.streamingManager,delete r.socketManager,(I=(g=t.callbacks).onConnectionStateChange)==null||I.call(g,E.Disconnected)}async function k(u){var p,g;u!==r.chatMode&&(f.track("agent-mode-change",{mode:u}),r.chatMode=u,r.chatMode!==T.Functional&&await D(),(g=(p=t.callbacks).onModeChange)==null||g.call(p,u))}return{agent:d,getStreamType:()=>{var u;return(u=r.streamingManager)==null?void 0:u.streamType},getIsInterruptAvailable:()=>{var u;return((u=r.streamingManager)==null?void 0:u.interruptAvailable)??!1},starterMessages:(($=d.knowledge)==null?void 0:$.starter_message)||[],getSTTToken:()=>l.getSTTToken(d.id),changeMode:k,enrichAnalytics:f.enrich,async connect(){var u;await _(!0),f.track("agent-chat",{event:"connect",chatId:(u=r.chat)==null?void 0:u.id,agentId:d.id,mode:r.chatMode})},async reconnect(){var u;await D(),await _(!1),f.track("agent-chat",{event:"reconnect",chatId:(u=r.chat)==null?void 0:u.id,agentId:d.id,mode:r.chatMode})},async disconnect(){var u;await D(),f.track("agent-chat",{event:"disconnect",chatId:(u=r.chat)==null?void 0:u.id,agentId:d.id,mode:r.chatMode})},async chat(u){var R,C,B,b,P;const p=()=>{if(Ce(t.mode))throw new X(`${t.mode} is enabled, chat is disabled`);if(u.length>=800)throw new X("Message cannot be more than 800 characters");if(u.length===0)throw new X("Message cannot be empty");if(r.chatMode===T.Maintenance)throw new X("Chat is in maintenance mode");if(![T.TextOnly,T.Playground].includes(r.chatMode)){if(!r.streamingManager)throw new X("Streaming manager is not initialized");if(!r.chat)throw new X("Chat is not initialized")}},g=async()=>{var v,M;if(!r.chat){const S=await Te(d,l,f,r.chatMode,t.persistentChat);if(!S.chat)throw new x(r.chatMode,!!t.persistentChat);r.chat=S.chat,(M=(v=t.callbacks).onNewChat)==null||M.call(v,r.chat.id)}return r.chat.id},I=async(v,M)=>re(()=>{var S,q;return l.chat(d.id,M,{chatMode:r.chatMode,streamId:(S=r.streamingManager)==null?void 0:S.streamId,sessionId:(q=r.streamingManager)==null?void 0:q.sessionId,messages:v.map(({matches:K,...m})=>m)},{...Me(r.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:S=>{var m,w,z,V;const q=(m=S==null?void 0:S.message)==null?void 0:m.includes("missing or invalid session_id");return!((w=S==null?void 0:S.message)==null?void 0:w.includes("Stream Error"))&&!q?((V=(z=t.callbacks).onError)==null||V.call(z,S),!1):!0},onRetry:async()=>{await D(),await _(!1)}});try{j(),p(),r.messages.push({id:G(),role:"user",content:u,created_at:new Date(W.update()).toISOString()}),(C=(R=t.callbacks).onNewMessage)==null||C.call(R,[...r.messages],"user");const v=await g(),M=await I([...r.messages],v);return r.messages.push({id:G(),role:"assistant",content:M.result||"",created_at:new Date().toISOString(),context:M.context,matches:M.matches,videoId:M.videoId}),n&&M.videoId&&r.streamingManager&&(n=!1,r.messages[r.messages.length-1].interrupted=!0,await se(r.streamingManager,M.videoId)),f.track("agent-message-send",{event:"success",mode:r.chatMode,messages:r.messages.length+1}),M.result&&((b=(B=t.callbacks).onNewMessage)==null||b.call(B,[...r.messages],"answer"),f.track("agent-message-received",{latency:W.get(!0),mode:r.chatMode,messages:r.messages.length})),M}catch(v){throw n=!1,((P=r.messages[r.messages.length-1])==null?void 0:P.role)==="assistant"&&r.messages.pop(),f.track("agent-message-send",{event:"error",mode:r.chatMode,messages:r.messages.length}),v}},rate(u,p,g){var C,B,b,P;const I=r.messages.find(v=>v.id===u);if(r.chat){if(!I)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const R=((C=I.matches)==null?void 0:C.map(v=>[v.document_id,v.id]))??[];return f.track("agent-rate",{event:g?"update":"create",thumb:p===1?"up":"down",knowledge_id:((B=d.knowledge)==null?void 0:B.id)??"",mode:r.chatMode,matches:R,score:p}),g?l.updateRating(d.id,r.chat.id,g,{knowledge_id:((b=d.knowledge)==null?void 0:b.id)??"",message_id:u,matches:R,score:p}):l.createRating(d.id,r.chat.id,{knowledge_id:((P=d.knowledge)==null?void 0:P.id)??"",message_id:u,matches:R,score:p})},deleteRate(u){var p;if(!r.chat)throw new Error("Chat is not initialized");return f.track("agent-rate-delete",{type:"text",chat_id:(p=r.chat)==null?void 0:p.id,id:u,mode:r.chatMode}),l.deleteRating(d.id,r.chat.id,u)},async speak(u){var R,C,B,b,P;function p(){if(typeof u=="string"){if(!d.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:d.presenter.voice,input:u,ssml:!1}}if(u.type==="text"&&!u.provider){if(!d.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:d.presenter.voice,input:u.input,ssml:u.ssml}}return u}const g=p();if(f.track("agent-speak",g),W.update(),r.messages&&g.type==="text"&&(r.messages.push({id:G(),role:"assistant",content:g.input,created_at:new Date(W.get(!0)).toISOString()}),(C=(R=t.callbacks).onNewMessage)==null||C.call(R,[...r.messages],"answer")),ze(r.chatMode))return{duration:0,video_id:"",status:"success"};if(!r.streamingManager)throw new Error("Please connect to the agent first");s=!0;try{const v=await r.streamingManager.speak({script:g,metadata:{chat_id:(B=r.chat)==null?void 0:B.id,agent_id:d.id}});return s=!1,r.messages[r.messages.length-1].videoId=v.video_id,n&&v.video_id&&r.streamingManager&&(n=!1,r.messages[r.messages.length-1].interrupted=!0,await se(r.streamingManager,v.video_id)),(P=(b=t.callbacks).onNewMessage)==null||P.call(b,[...r.messages],"answer"),v}finally{s=!1}},async interrupt({type:u}){var R,C,B,b,P;const p=r.messages[r.messages.length-1],g=(p==null?void 0:p.role)==="user",I=g||s;if(Ve(r.streamingManager,(R=r.streamingManager)==null?void 0:R.streamType,I,!!(p!=null&&p.videoId)),f.track("agent-video-interrupt",{type:u||"click",stream_id:(C=r.streamingManager)==null?void 0:C.streamId,agent_id:d.id,owner_id:d.owner_id,video_duration_to_interrupt:ie.get(!0),message_duration_to_interrupt:W.get(!0),chat_id:(B=r.chat)==null?void 0:B.id,mode:r.chatMode,queued_interrupt:g}),I){n=!0;return}p.interrupted=!0,(P=(b=t.callbacks).onNewMessage)==null||P.call(b,[...r.messages],"answer"),se(r.streamingManager,p.videoId)}}}function St(e,t,a){const{getById:n}=Se(t,a||Z);return n(e)}h.AgentActivityState=O,h.AgentStatus=fe,h.ChatCreationFailed=x,h.ChatMode=T,h.ChatModeDowngraded=ce,h.ChatProgress=Y,h.ConnectionState=E,h.ConnectivityState=Q,h.DocumentType=we,h.KnowledgeType=he,h.PlanGroup=ue,h.Providers=ye,h.RateState=me,h.StreamEvents=F,h.StreamType=H,h.StreamingState=y,h.Subject=ge,h.UserPlan=le,h.ValidationError=X,h.VideoType=te,h.VoiceAccess=ve,h.WsError=de,h.createAgentManager=Rt,h.getAgent=St,h.mapVideoType=pe,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
|