@d-id/client-sdk 1.1.0-beta.17 → 1.1.0-beta.18
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 +45 -45
- package/dist/index.umd.cjs +1 -1
- package/dist/src/types/entities/agents/chat.d.ts +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ class Z extends Error {
|
|
|
17
17
|
this.kind = a, this.description = r, this.error = s;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
class
|
|
20
|
+
class De extends Z {
|
|
21
21
|
constructor(t, a) {
|
|
22
22
|
super({
|
|
23
23
|
kind: "ChatCreationFailed",
|
|
@@ -25,7 +25,7 @@ class Ce extends Z {
|
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
class
|
|
28
|
+
class Ce extends Z {
|
|
29
29
|
constructor(t) {
|
|
30
30
|
super({
|
|
31
31
|
kind: "ChatModeDowngraded",
|
|
@@ -51,7 +51,7 @@ class Re extends Z {
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
var Ee = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(Ee || {}), 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 || {}), _e = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(_e || {}), Ie = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(Ie || {}), P = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e.
|
|
54
|
+
var Ee = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(Ee || {}), 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 || {}), _e = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(_e || {}), Ie = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(Ie || {}), P = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e.Off = "Off", e))(P || {}), H = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(H || {}), 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 || {}), de = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(de || {});
|
|
55
55
|
const be = (e) => {
|
|
56
56
|
switch (e) {
|
|
57
57
|
case "clip":
|
|
@@ -66,7 +66,7 @@ var p = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(p || {}
|
|
|
66
66
|
const Ae = 45 * 1e3, Be = "X-Playground-Chat", O = "https://api.d-id.com", Le = "wss://notifications.d-id.com", ze = "79f81a83a67430be2bc0fd61042b8faa", ue = (e) => new Promise((t) => setTimeout(t, e)), q = (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) => [P.TextOnly, P.Playground, P.Maintenance].includes(e), ee = (e) => e && [P.DirectPlayback, P.
|
|
69
|
+
}, Ne = (e) => [P.TextOnly, P.Playground, P.Maintenance].includes(e), ee = (e) => e && [P.DirectPlayback, P.Off].includes(e);
|
|
70
70
|
function xe(e, t) {
|
|
71
71
|
let a;
|
|
72
72
|
return {
|
|
@@ -304,8 +304,8 @@ function qe(e) {
|
|
|
304
304
|
return Promise.resolve();
|
|
305
305
|
const {
|
|
306
306
|
audioPath: R,
|
|
307
|
-
...
|
|
308
|
-
} = j || {},
|
|
307
|
+
...D
|
|
308
|
+
} = j || {}, C = {
|
|
309
309
|
method: "POST",
|
|
310
310
|
headers: {
|
|
311
311
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
@@ -315,7 +315,7 @@ function qe(e) {
|
|
|
315
315
|
event: w,
|
|
316
316
|
properties: {
|
|
317
317
|
...this.additionalProperties,
|
|
318
|
-
...
|
|
318
|
+
...D,
|
|
319
319
|
...s,
|
|
320
320
|
source: t,
|
|
321
321
|
time: Date.now(),
|
|
@@ -329,26 +329,26 @@ function qe(e) {
|
|
|
329
329
|
})
|
|
330
330
|
};
|
|
331
331
|
try {
|
|
332
|
-
return await fetch(He,
|
|
332
|
+
return await fetch(He, C).then((k) => k.json());
|
|
333
333
|
} catch (k) {
|
|
334
334
|
return console.error(k);
|
|
335
335
|
}
|
|
336
336
|
},
|
|
337
|
-
linkTrack(w, j, R,
|
|
337
|
+
linkTrack(w, j, R, D) {
|
|
338
338
|
G[w] || (G[w] = {
|
|
339
339
|
events: {},
|
|
340
340
|
resolvedDependencies: []
|
|
341
|
-
}),
|
|
342
|
-
const
|
|
343
|
-
if (
|
|
341
|
+
}), D.includes(R) || D.push(R);
|
|
342
|
+
const C = G[w];
|
|
343
|
+
if (C.events[R] = {
|
|
344
344
|
props: j
|
|
345
|
-
},
|
|
346
|
-
const L =
|
|
345
|
+
}, C.resolvedDependencies.push(R), D.every((L) => C.resolvedDependencies.includes(L))) {
|
|
346
|
+
const L = D.reduce(($, u) => C.events[u] ? {
|
|
347
347
|
...$,
|
|
348
|
-
...
|
|
348
|
+
...C.events[u].props
|
|
349
349
|
} : $, {});
|
|
350
|
-
this.track(w, L),
|
|
351
|
-
delete
|
|
350
|
+
this.track(w, L), C.resolvedDependencies = C.resolvedDependencies.filter(($) => !D.includes($)), D.forEach(($) => {
|
|
351
|
+
delete C.events[$];
|
|
352
352
|
});
|
|
353
353
|
}
|
|
354
354
|
}
|
|
@@ -508,13 +508,13 @@ function et(e, t, a, r, s) {
|
|
|
508
508
|
if (c = c, c === l.StreamVideoCreated)
|
|
509
509
|
e.linkTrack("agent-video", R, l.StreamVideoCreated, ["start"]);
|
|
510
510
|
else if (w.includes(c)) {
|
|
511
|
-
const
|
|
511
|
+
const D = c.split("/")[1];
|
|
512
512
|
j.includes(c) ? e.track("agent-video", {
|
|
513
513
|
...R,
|
|
514
|
-
event:
|
|
514
|
+
event: D
|
|
515
515
|
}) : e.linkTrack("agent-video", {
|
|
516
516
|
...R,
|
|
517
|
-
event:
|
|
517
|
+
event: D
|
|
518
518
|
}, c, ["done"]);
|
|
519
519
|
}
|
|
520
520
|
j.includes(c) && ((d = (o = a.callbacks).onError) == null || d.call(o, new Error(`Stream failed with event ${c}`), {
|
|
@@ -753,13 +753,13 @@ function ut() {
|
|
|
753
753
|
}
|
|
754
754
|
function lt(e, t, a, r, s, i = !1) {
|
|
755
755
|
let c = [], n, o = 0, d = !1, l = Q.Unknown, w = Q.Unknown, j = 0, R = 0;
|
|
756
|
-
const
|
|
756
|
+
const D = ut();
|
|
757
757
|
return setInterval(async () => {
|
|
758
|
-
const
|
|
758
|
+
const C = await e.getStats(), {
|
|
759
759
|
isReceiving: k,
|
|
760
760
|
avgJitterDelayInInterval: L,
|
|
761
761
|
freezeCount: $
|
|
762
|
-
} = C
|
|
762
|
+
} = D(C), u = it(C);
|
|
763
763
|
if (k)
|
|
764
764
|
o = 0, j = $ - R, w = L < ct ? Q.Strong : L > dt && j > 1 ? Q.Weak : l, w !== l && (s == null || s(w), l = w, R += j, j = 0), d || (r == null || r(p.Start), n = c[c.length - 1], c = [], d = !0), c.push(u);
|
|
765
765
|
else if (d && (o++, o >= ot)) {
|
|
@@ -864,8 +864,8 @@ async function wt(e, t, {
|
|
|
864
864
|
startConnection: w,
|
|
865
865
|
sendStreamRequest: j,
|
|
866
866
|
close: R,
|
|
867
|
-
createStream:
|
|
868
|
-
addIceCandidate:
|
|
867
|
+
createStream: D,
|
|
868
|
+
addIceCandidate: C
|
|
869
869
|
} = t.videoType === de.Clip ? tt(s, i, e, r.onError) : rt(s, i, e, r.onError), {
|
|
870
870
|
id: k,
|
|
871
871
|
offer: L,
|
|
@@ -873,7 +873,7 @@ async function wt(e, t, {
|
|
|
873
873
|
session_id: u,
|
|
874
874
|
fluent: m,
|
|
875
875
|
interrupt_enabled: v
|
|
876
|
-
} = await
|
|
876
|
+
} = await D(t);
|
|
877
877
|
(W = r.onStreamCreated) == null || W.call(r, {
|
|
878
878
|
stream_id: k,
|
|
879
879
|
session_id: u,
|
|
@@ -906,11 +906,11 @@ async function wt(e, t, {
|
|
|
906
906
|
var h;
|
|
907
907
|
B("peerConnection.onicecandidate", f);
|
|
908
908
|
try {
|
|
909
|
-
f.candidate && f.candidate.sdpMid && f.candidate.sdpMLineIndex !== null ?
|
|
909
|
+
f.candidate && f.candidate.sdpMid && f.candidate.sdpMLineIndex !== null ? C(k, {
|
|
910
910
|
candidate: f.candidate.candidate,
|
|
911
911
|
sdpMid: f.candidate.sdpMid,
|
|
912
912
|
sdpMLineIndex: f.candidate.sdpMLineIndex
|
|
913
|
-
}, u) :
|
|
913
|
+
}, u) : C(k, {
|
|
914
914
|
candidate: null
|
|
915
915
|
}, u);
|
|
916
916
|
} catch (b) {
|
|
@@ -1036,7 +1036,7 @@ function pt(e, t) {
|
|
|
1036
1036
|
};
|
|
1037
1037
|
}
|
|
1038
1038
|
function yt(e, t, a, r, s) {
|
|
1039
|
-
s === U.Fluent ? vt(e, t, a, r, s) :
|
|
1039
|
+
s === U.Fluent ? vt(e, t, a, r, s) : Dt(e, t, a, r, s);
|
|
1040
1040
|
}
|
|
1041
1041
|
function vt(e, t, a, r, s) {
|
|
1042
1042
|
e === p.Start ? r.track("stream-session", {
|
|
@@ -1062,7 +1062,7 @@ function kt(e, t, a, r) {
|
|
|
1062
1062
|
"stream-type": r
|
|
1063
1063
|
}, "done", [J.StreamVideoDone]));
|
|
1064
1064
|
}
|
|
1065
|
-
function
|
|
1065
|
+
function Dt(e, t, a, r, s) {
|
|
1066
1066
|
F.get() <= 0 || (e === p.Start ? r.linkTrack("agent-video", {
|
|
1067
1067
|
event: "start",
|
|
1068
1068
|
latency: F.get(!0),
|
|
@@ -1075,7 +1075,7 @@ function Ct(e, t, a, r, s) {
|
|
|
1075
1075
|
...a
|
|
1076
1076
|
}, "done", [J.StreamVideoDone]));
|
|
1077
1077
|
}
|
|
1078
|
-
function
|
|
1078
|
+
function Ct(e, t, a) {
|
|
1079
1079
|
return F.reset(), new Promise(async (r, s) => {
|
|
1080
1080
|
try {
|
|
1081
1081
|
const i = await wt(e.id, pt(e, t), {
|
|
@@ -1109,10 +1109,10 @@ async function Rt(e, t, a, r, s) {
|
|
|
1109
1109
|
chatMode: c
|
|
1110
1110
|
} = await pe(e, a, r, t.mode, t.persistentChat, s);
|
|
1111
1111
|
if (c && c !== t.mode && (t.mode = c, (d = (o = t.callbacks).onModeChange) == null || d.call(o, c), c === P.TextOnly))
|
|
1112
|
-
return (w = (l = t.callbacks).onError) == null || w.call(l, new
|
|
1112
|
+
return (w = (l = t.callbacks).onError) == null || w.call(l, new Ce(c)), {
|
|
1113
1113
|
chat: i
|
|
1114
1114
|
};
|
|
1115
|
-
const n = await
|
|
1115
|
+
const n = await Ct(e, t, r);
|
|
1116
1116
|
return {
|
|
1117
1117
|
chat: i,
|
|
1118
1118
|
streamingManager: n
|
|
@@ -1155,22 +1155,22 @@ async function St(e, t) {
|
|
|
1155
1155
|
delayMs: 1e3
|
|
1156
1156
|
}).catch((x) => {
|
|
1157
1157
|
var W, f;
|
|
1158
|
-
throw
|
|
1158
|
+
throw C(P.Maintenance), (f = (W = t.callbacks).onConnectionStateChange) == null || f.call(W, T.Fail), x;
|
|
1159
1159
|
}), [g, {
|
|
1160
1160
|
streamingManager: E,
|
|
1161
1161
|
chat: y
|
|
1162
1162
|
}] = await Promise.all([m, v]);
|
|
1163
|
-
y && y.id !== ((_ = n.chat) == null ? void 0 : _.id) && ((N = (I = t.callbacks).onNewChat) == null || N.call(I, y.id)), n.streamingManager = E, n.socketManager = g, n.chat = y, a = !1,
|
|
1163
|
+
y && y.id !== ((_ = n.chat) == null ? void 0 : _.id) && ((N = (I = t.callbacks).onNewChat) == null || N.call(I, y.id)), n.streamingManager = E, n.socketManager = g, n.chat = y, a = !1, C((y == null ? void 0 : y.chat_mode) ?? t.mode ?? P.Functional);
|
|
1164
1164
|
}
|
|
1165
|
-
async function
|
|
1165
|
+
async function D() {
|
|
1166
1166
|
var u, m, v, g;
|
|
1167
1167
|
(u = n.socketManager) == null || u.disconnect(), await ((m = n.streamingManager) == null ? void 0 : m.disconnect()), r = !1, delete n.streamingManager, delete n.socketManager, (g = (v = t.callbacks).onConnectionStateChange) == null || g.call(v, T.Disconnected);
|
|
1168
1168
|
}
|
|
1169
|
-
async function
|
|
1169
|
+
async function C(u) {
|
|
1170
1170
|
var m, v;
|
|
1171
1171
|
u !== n.chatMode && (l.track("agent-mode-change", {
|
|
1172
1172
|
mode: u
|
|
1173
|
-
}), n.chatMode = u, n.chatMode !== P.Functional && await
|
|
1173
|
+
}), n.chatMode = u, n.chatMode !== P.Functional && await D(), (v = (m = t.callbacks).onModeChange) == null || v.call(m, u));
|
|
1174
1174
|
}
|
|
1175
1175
|
return {
|
|
1176
1176
|
agent: d,
|
|
@@ -1184,7 +1184,7 @@ async function St(e, t) {
|
|
|
1184
1184
|
},
|
|
1185
1185
|
starterMessages: (($ = d.knowledge) == null ? void 0 : $.starter_message) || [],
|
|
1186
1186
|
getSTTToken: () => o.getSTTToken(d.id),
|
|
1187
|
-
changeMode:
|
|
1187
|
+
changeMode: C,
|
|
1188
1188
|
enrichAnalytics: l.enrich,
|
|
1189
1189
|
async connect() {
|
|
1190
1190
|
var u;
|
|
@@ -1197,7 +1197,7 @@ async function St(e, t) {
|
|
|
1197
1197
|
},
|
|
1198
1198
|
async reconnect() {
|
|
1199
1199
|
var u;
|
|
1200
|
-
await
|
|
1200
|
+
await D(), await R(!1), l.track("agent-chat", {
|
|
1201
1201
|
event: "reconnect",
|
|
1202
1202
|
chatId: (u = n.chat) == null ? void 0 : u.id,
|
|
1203
1203
|
agentId: d.id,
|
|
@@ -1206,7 +1206,7 @@ async function St(e, t) {
|
|
|
1206
1206
|
},
|
|
1207
1207
|
async disconnect() {
|
|
1208
1208
|
var u;
|
|
1209
|
-
await
|
|
1209
|
+
await D(), l.track("agent-chat", {
|
|
1210
1210
|
event: "disconnect",
|
|
1211
1211
|
chatId: (u = n.chat) == null ? void 0 : u.id,
|
|
1212
1212
|
agentId: d.id,
|
|
@@ -1235,7 +1235,7 @@ async function St(e, t) {
|
|
|
1235
1235
|
if (!n.chat) {
|
|
1236
1236
|
const I = await pe(d, o, l, n.chatMode, t.persistentChat);
|
|
1237
1237
|
if (!I.chat)
|
|
1238
|
-
throw new
|
|
1238
|
+
throw new De(n.chatMode, !!t.persistentChat);
|
|
1239
1239
|
n.chat = I.chat, (_ = (S = t.callbacks).onNewChat) == null || _.call(S, n.chat.id);
|
|
1240
1240
|
}
|
|
1241
1241
|
return n.chat.id;
|
|
@@ -1261,7 +1261,7 @@ async function St(e, t) {
|
|
|
1261
1261
|
return !((f = I == null ? void 0 : I.message) == null ? void 0 : f.includes("Stream Error")) && !N ? ((b = (h = t.callbacks).onError) == null || b.call(h, I), !1) : !0;
|
|
1262
1262
|
},
|
|
1263
1263
|
onRetry: async () => {
|
|
1264
|
-
await
|
|
1264
|
+
await D(), await R(!1);
|
|
1265
1265
|
}
|
|
1266
1266
|
});
|
|
1267
1267
|
try {
|
|
@@ -1414,9 +1414,9 @@ function _t(e, t, a) {
|
|
|
1414
1414
|
export {
|
|
1415
1415
|
V as AgentActivityState,
|
|
1416
1416
|
_e as AgentStatus,
|
|
1417
|
-
|
|
1417
|
+
De as ChatCreationFailed,
|
|
1418
1418
|
P as ChatMode,
|
|
1419
|
-
|
|
1419
|
+
Ce as ChatModeDowngraded,
|
|
1420
1420
|
H as ChatProgress,
|
|
1421
1421
|
T as ConnectionState,
|
|
1422
1422
|
Q as ConnectivityState,
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(m,b){typeof exports=="object"&&typeof module<"u"?b(exports):typeof define=="function"&&define.amd?define(["exports"],b):(m=typeof globalThis<"u"?globalThis:m||self,b(m.index={}))})(this,function(m){"use strict";var Et=Object.defineProperty;var _t=(m,b,q)=>b in m?Et(m,b,{enumerable:!0,configurable:!0,writable:!0,value:q}):m[b]=q;var ee=(m,b,q)=>(_t(m,typeof b!="symbol"?b+"":b,q),q);class b extends Error{constructor({kind:a,description:r,error:s}){super(JSON.stringify({kind:a,description:r}));ee(this,"kind");ee(this,"description");ee(this,"error");this.kind=a,this.description=r,this.error=s}}class q extends b{constructor(t,a){super({kind:"ChatCreationFailed",description:`Failed to create ${a?"persistent":""} chat, mode: ${t}`})}}class ce extends b{constructor(t){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${t}`})}}class V extends b{constructor(a,r){super({kind:"ValidationError",description:a});ee(this,"key");this.key=r}}class de extends b{constructor(t){super({kind:"WSError",description:t})}}var ue=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(ue||{}),le=(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))(le||{}),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||{}),P=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e.OuterControl="OuterControl",e))(P||{}),X=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(X||{}),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||{}),O=(e=>(e.Strong="STRONG",e.Weak="WEAK",e.Unknown="UNKNOWN",e))(O||{}),Y=(e=>(e.Idle="IDLE",e.Talking="TALKING",e))(Y||{}),z=(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))(z||{}),M=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(M||{}),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",G="https://api.d-id.com",Be="wss://notifications.d-id.com",Le="79f81a83a67430be2bc0fd61042b8faa",ke=e=>new Promise(t=>setTimeout(t,e)),Q=(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.OuterControl].includes(e);function Fe(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 r;for(let s=1;s<=a.limit;s++)try{if(!a.timeout)return await e();const{promise:i,clear:c}=Fe(a.timeout,a.timeoutErrorMessage),n=e().finally(c);return await Promise.race([n,i])}catch(i){if(r=i,!a.shouldRetryFn(i)||s>=a.limit)throw i;await ke(a.delayMs),a.onRetry(i)}throw r}function Ce(){let e=window.localStorage.getItem("did_external_key_id");if(!e){let t=Q();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let Ne=Q();function De(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}.${Ce()}_${Ne}`;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=G,a){const r=async(s,i)=>{const{skipErrorHandler:c,...n}=i||{},o=await Je(()=>fetch(t+(s!=null&&s.startsWith("/")?s:`/${s}`),{...n,headers:{...n.headers,Authorization:De(e),"Content-Type":"application/json"}}));if(!o.ok){let d=await o.text().catch(()=>`Failed to fetch with status ${o.status}`);const l=new Error(d);throw a&&!c&&a(l,{url:s,options:n,headers:o.headers}),l}return o.json()};return{get(s,i){return r(s,{...i,method:"GET"})},post(s,i,c){return r(s,{...c,body:JSON.stringify(i),method:"POST"})},delete(s,i,c){return r(s,{...c,body:JSON.stringify(i),method:"DELETE"})},patch(s,i,c){return r(s,{...c,body:JSON.stringify(i),method:"PATCH"})}}}function Re(e,t=G,a){const r=ae(e,`${t}/agents`,a);return{create(s,i){return r.post("/",s,i)},getAgents(s,i){return r.get(`/${s?`?tag=${s}`:""}`,i).then(c=>c??[])},getById(s,i){return r.get(`/${s}`,i)},delete(s,i){return r.delete(`/${s}`,void 0,i)},update(s,i,c){return r.patch(`/${s}`,i,c)},newChat(s,i,c){return r.post(`/${s}/chat`,i,c)},chat(s,i,c,n){return r.post(`/${s}/chat/${i}`,c,n)},createRating(s,i,c,n){return r.post(`/${s}/chat/${i}/ratings`,c,n)},updateRating(s,i,c,n,o){return r.patch(`/${s}/chat/${i}/ratings/${c}`,n,o)},deleteRating(s,i,c,n){return r.delete(`/${s}/chat/${i}/ratings/${c}`,n)},getSTTToken(s,i){return r.get(`/${s}/stt-token`,i)}}}const Se=e=>e.type==="clip"&&e.presenter_id.startsWith("v2_")?"clip_v2":e.type;function We(e){var s,i,c,n;const t=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",a=()=>{const o=navigator.platform;return o.toLowerCase().includes("win")?"Windows":o.toLowerCase().includes("mac")?"Mac OS X":o.toLowerCase().includes("linux")?"Linux":"Unknown"},r=e.presenter;return{$os:`${a()}`,isMobile:`${t()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:Se(r),agentVoice:{voiceId:(i=(s=e.presenter)==null?void 0:s.voice)==null?void 0:i.voice_id,provider:(n=(c=e.presenter)==null?void 0:c.voice)==null?void 0:n.type}}}const Ue=e=>e.reduce((t,a)=>t+a,0),Ee=e=>Ue(e)/e.length;function Ke(e,t,a){var o,d,l;const{event:r,...s}=e,{template:i}=(t==null?void 0:t.llm)||{},{language:c}=((o=t==null?void 0:t.presenter)==null?void 0:o.voice)||{};return{...s,llm:{...s.llm,template:i},script:{...s.script,provider:{...(d=s==null?void 0:s.script)==null?void 0:d.provider,language:c}},stitch:(t==null?void 0:t.presenter.type)==="talk"?(l=t==null?void 0:t.presenter)==null?void 0:l.stitch:void 0,...a}}let ie={};const He="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function xe(e){var i,c,n,o,d,l;const t=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",a=e.agent.presenter,r=(i=e.agent.llm)==null?void 0:i.prompt_customization,s={token:e.token||"testKey",distinct_id:e.distinctId||Ce(),agentId:e.agent.id,agentType:Se(a),owner_id:e.agent.owner_id??"",promptVersion:(c=e.agent.llm)==null?void 0:c.prompt_version,behavior:{role:r==null?void 0:r.role,personality:r==null?void 0:r.personality,instructions:(n=e.agent.llm)==null?void 0:n.instructions},temperature:(o=e.agent.llm)==null?void 0:o.temperature,knowledgeSource:r==null?void 0:r.knowledge_source,starterQuestionsCount:(l=(d=e.agent.knowledge)==null?void 0:d.starter_message)==null?void 0:l.length,topicsToAvoid:r==null?void 0:r.topics_to_avoid,maxResponseLength:r==null?void 0:r.max_response_length};return{...s,additionalProperties:{},isEnabled:e.isEnabled??!0,getRandom:Q,enrich(p){this.additionalProperties={...this.additionalProperties,...p}},async track(p,A){if(!this.isEnabled)return Promise.resolve();const{audioPath:S,...D}=A||{},R={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:p,properties:{...this.additionalProperties,...D,...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,R).then(C=>C.json())}catch(C){return console.error(C)}},linkTrack(p,A,S,D){ie[p]||(ie[p]={events:{},resolvedDependencies:[]}),D.includes(S)||D.push(S);const R=ie[p];if(R.events[S]={props:A},R.resolvedDependencies.push(S),D.every(J=>R.resolvedDependencies.includes(J))){const J=D.reduce((B,u)=>R.events[u]?{...B,...R.events[u].props}:B,{});this.track(p,J),R.resolvedDependencies=R.resolvedDependencies.filter(B=>!D.includes(B)),D.forEach(B=>{delete R.events[B]})}}}}function _e(){let e=0;return{reset:()=>e=0,update:()=>e=Date.now(),get:(t=!1)=>t?Date.now()-e:e}}const N=_e(),se=_e();function Ie(e){return e===P.Playground?{headers:{[$e]:"true"}}:{}}async function Me(e,t,a,r,s=!1,i){try{return!i&&!re(r)&&(i=await t.newChat(e.id,{persist:s},Ie(r)),a.track("agent-chat",{event:"created",chat_id:i.id,agent_id:e.id,mode:r})),{chat:i,chatMode:(i==null?void 0:i.chat_mode)??r}}catch(c){try{const n=JSON.parse(c.message);if((n==null?void 0:n.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(n){console.error("Error parsing the error message:",n)}throw new Error("Cannot create new chat")}}function qe(e){return e&&e.length>0?e:[]}function Ve(e,t,a,r,s){if(!e||!t)throw new Error("Please connect to the agent first");if(!e.interruptEnabled)throw new Error("Interrupt is not enabled for this stream");if(a!==H.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!r&&!s)throw new Error("No active video to interrupt")}async function Te(e,t){const a={type:z.StreamInterrupt,videoId:t,timestamp:Date.now()};e.sendDataChannelMessage(JSON.stringify(a))}function Xe(e){return new Promise((t,a)=>{const{callbacks:r,host:s,auth:i}=e,{onMessage:c=null,onOpen:n=null,onClose:o=null,onError:d=null}=r||{},l=new WebSocket(`${s}?authorization=${De(i)}`);l.onmessage=c,l.onclose=o,l.onerror=p=>{console.error(p),d==null||d("Websocket failed to connect",p),a(p)},l.onopen=p=>{n==null||n(p),t(l)}})}async function Ye(e){const{retries:t=1}=e;let a=null;for(let r=0;(a==null?void 0:a.readyState)!==WebSocket.OPEN;r++)try{a=await Xe(e)}catch(s){if(r===t)throw s;await ke(r*500)}return a}async function Oe(e,t,a){const r=a!=null&&a.onMessage?[a.onMessage]:[],s=await Ye({auth:e,host:t,callbacks:{onError:i=>{var c;return(c=a.onError)==null?void 0:c.call(a,new de(i))},onMessage(i){const c=JSON.parse(i.data);r.forEach(n=>n(c.event,c))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:i=>r.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,r,s){const i=r.messages[r.messages.length-1];if(!(e===X.Partial||e===X.Answer)||(i==null?void 0:i.role)!=="assistant")return;const{content:c,sequence:n}=t;e===X.Partial?a[n]=c:a.answer=c;const o=Qe(a);(i.content!==o||e===X.Answer)&&(i.content=o,s==null||s([...r.messages],e))}function Ze(e,t,a,r,s){let i={};return{clearQueue:()=>i={},onMessage:(c,n)=>{var o,d;if("content"in n)Ge(c,n,i,t,a.callbacks.onNewMessage),c===X.Answer&&e.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const l=z,p=[l.StreamVideoDone,l.StreamVideoError,l.StreamVideoRejected],A=[l.StreamFailed,l.StreamVideoError,l.StreamVideoRejected],S=Ke(n,r,{mode:t.chatMode});if(c=c,c===l.StreamVideoCreated)e.linkTrack("agent-video",S,l.StreamVideoCreated,["start"]);else if(p.includes(c)){const D=c.split("/")[1];A.includes(c)?e.track("agent-video",{...S,event:D}):e.linkTrack("agent-video",{...S,event:D},c,["done"])}A.includes(c)&&((d=(o=a.callbacks).onError)==null||d.call(o,new Error(`Stream failed with event ${c}`),{data:n})),n.event===l.StreamDone&&s()}}}}function et(e,t,a,r){const s=ae(e,`${t}/agents/${a}`,r);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,c,n){return s.post(`/streams/${i}/sdp`,{session_id:n,answer:c})},addIceCandidate(i,c,n){return s.post(`/streams/${i}/ice`,{session_id:n,...c})},sendStreamRequest(i,c,n){return s.post(`/streams/${i}`,{session_id:c,...n})},close(i,c){return s.delete(`/streams/${i}`,{session_id:c})}}}function tt(e,t,a,r){const s=ae(e,`${t}/agents/${a}`,r);return{createStream(i,c){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},c)},startConnection(i,c,n,o){return s.post(`/streams/${i}/sdp`,{session_id:n,answer:c},o)},addIceCandidate(i,c,n,o){return s.post(`/streams/${i}/ice`,{session_id:n,...c},o)},sendStreamRequest(i,c,n,o){return s.post(`/streams/${i}`,{session_id:c,...n},o)},close(i,c,n){return s.delete(`/streams/${i}`,{session_id:c},n)}}}function rt(e,t,a){const r=(t.timestamp-e.timestamp)/1e3;return{duration:r,bytesReceived:t.bytesReceived-e.bytesReceived,bitrate:Math.round((t.bytesReceived-e.bytesReceived)*8/r),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)/r,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,...r}=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"),{...r,causes:s}})}function at(e){let t="",a=0;for(const r of e.values())if(r&&r.type==="codec"&&r.mimeType.startsWith("video")&&(t=r.mimeType.split("/")[1]),r&&r.type==="candidate-pair"&&(a=r.currentRoundTripTime),r&&r.type==="inbound-rtp"&&r.kind==="video")return{codec:t,rtt:a,timestamp:r.timestamp,bytesReceived:r.bytesReceived,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,frameWidth:r.frameWidth,frameHeight:r.frameHeight,framesPerSecond:r.framesPerSecond,freezeCount:r.freezeCount,freezeDuration:r.totalFreezesDuration};return{}}function it(e,t,a){const r=e.map((o,d)=>d===0?a?{timestamp:o.timestamp,duration:0,rtt:o.rtt,bytesReceived:o.bytesReceived-a.bytesReceived,bitrate:(o.bytesReceived-a.bytesReceived)*8/(t/1e3),packetsReceived:o.packetsReceived-a.packetsReceived,packetsLost:o.packetsLost-a.packetsLost,framesDropped:o.framesDropped-a.framesDropped,framesDecoded:o.framesDecoded-a.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-a.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-a.jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-a.jitterBufferDelay)/(o.jitterBufferEmittedCount-a.jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-a.freezeCount,freezeDuration:o.freezeDuration-a.freezeDuration}:{timestamp:o.timestamp,rtt:o.rtt,duration:0,bytesReceived:o.bytesReceived,bitrate:o.bytesReceived*8/(t/1e3),packetsReceived:o.packetsReceived,packetsLost:o.packetsLost,framesDropped:o.framesDropped,framesDecoded:o.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount,avgJitterDelayInInterval:o.jitterBufferDelay/o.jitterBufferEmittedCount,framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount,freezeDuration:o.freezeDuration}:{timestamp:o.timestamp,duration:t*d/1e3,rtt:o.rtt,bytesReceived:o.bytesReceived-e[d-1].bytesReceived,bitrate:(o.bytesReceived-e[d-1].bytesReceived)*8/(t/1e3),packetsReceived:o.packetsReceived-e[d-1].packetsReceived,packetsLost:o.packetsLost-e[d-1].packetsLost,framesDropped:o.framesDropped-e[d-1].framesDropped,framesDecoded:o.framesDecoded-e[d-1].framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-e[d-1].jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-e[d-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-e[d-1].jitterBufferDelay)/(o.jitterBufferEmittedCount-e[d-1].jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-e[d-1].freezeCount,freezeDuration:o.freezeDuration-e[d-1].freezeDuration}),s=nt(r),i=s.reduce((o,d)=>o+(d.causes.includes("low fps")?1:0),0),c=r.filter(o=>!!o.avgJitterDelayInInterval).map(o=>o.avgJitterDelayInInterval),n=r.filter(o=>!!o.rtt).map(o=>o.rtt);return{webRTCStats:{anomalies:s,minRtt:Math.min(...n),avgRtt:Ee(n),maxRtt:Math.max(...n),aggregateReport:rt(e[0],e[e.length-1],i),minJitterDelayInInterval:Math.min(...c),maxJitterDelayInInterval:Math.max(...c),avgJitterDelayInInterval:Ee(c)},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,r=0;return s=>{for(const i of s.values())if(i&&i.type==="inbound-rtp"&&i.kind==="video"){const c=i.jitterBufferDelay,n=i.jitterBufferEmittedCount;if(a&&n>a){const l=c-t,p=n-a;r=l/p}t=c,a=n;const o=i.framesDecoded,d=o-e>0;return e=o,{isReceiving:d,avgJitterDelayInInterval:r,freezeCount:i.freezeCount}}return{isReceiving:!1,avgJitterDelayInInterval:r}}}function ut(e,t,a,r,s,i=!1){let c=[],n,o=0,d=!1,l=O.Unknown,p=O.Unknown,A=0,S=0;const D=dt();return setInterval(async()=>{const R=await e.getStats(),{isReceiving:C,avgJitterDelayInInterval:J,freezeCount:B}=D(R),u=at(R);if(C)o=0,A=B-S,p=J<ot?O.Strong:J>ct&&A>1?O.Weak:l,p!==l&&(s==null||s(p),l=p,S+=A,A=0),d||(r==null||r(y.Start),n=c[c.length-1],c=[],d=!0),c.push(u);else if(d&&(o++,o>=st)){const g=it(c,oe,n);r==null||r(y.Stop,g),t()||a(),S=B,d=!1}},oe)}let je=!1;const F=(e,t)=>je&&console.log(e,t),lt=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function be(e){switch(e){case"connected":return M.Connected;case"checking":return M.Connecting;case"failed":return M.Fail;case"new":return M.New;case"closed":return M.Closed;case"disconnected":return M.Disconnected;case"completed":return M.Completed;default:return M.New}}function ft(e){const[t,a=""]=e.split(/:(.+)/);try{const r=JSON.parse(a);return F("parsed data channel message",{subject:t,data:r}),{subject:t,data:r}}catch(r){return F("Failed to parse data channel message, returning data as string",{subject:t,rawData:a,error:r}),{subject:t,data:a}}}function mt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,report:r}){e===y.Start&&t===y.Start?a==null||a(y.Start):e===y.Stop&&t===y.Stop&&(a==null||a(y.Stop,r))}function gt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:r,report:s}){e===y.Start?a==null||a(y.Start):e===y.Stop&&(a==null||a(y.Stop,s)),t===y.Start?r==null||r(Y.Talking):t===y.Stop&&(r==null||r(Y.Idle))}function Pe({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:r,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:r,report:i})}async function ht(e,t,{debug:a=!1,callbacks:r,auth:s,baseURL:i=G,analytics:c}){var x;je=a;let n=!1,o=!1,d=y.Stop,l=y.Stop;const{startConnection:p,sendStreamRequest:A,close:S,createStream:D,addIceCandidate:R}=t.videoType===te.Clip?et(s,i,e,r.onError):tt(s,i,e,r.onError),{id:C,offer:J,ice_servers:B,session_id:u,fluent:g,interrupt_enabled:k}=await D(t);(x=r.onStreamCreated)==null||x.call(r,{stream_id:C,session_id:u,agent_id:e});const h=new lt({iceServers:B}),E=h.createDataChannel("JanusDataChannel");if(!u)throw new Error("Could not create session_id");const v=g?H.Fluent:H.Legacy;c.enrich({"stream-type":v});const j=t.stream_warmup&&!g,L=()=>n,W=()=>{var f;n=!0,o&&((f=r.onConnectionStateChange)==null||f.call(r,M.Connected))},_=ut(h,L,W,(f,w)=>Pe({statsSignal:l=f,dataChannelSignal:v===H.Legacy?d:void 0,onVideoStateChange:r.onVideoStateChange,onAgentActivityStateChange:r.onAgentActivityStateChange,report:w,streamType:v}),f=>{var w;return(w=r.onConnectivityStateChange)==null?void 0:w.call(r,f)},j);h.onicecandidate=f=>{var w;F("peerConnection.onicecandidate",f);try{f.candidate&&f.candidate.sdpMid&&f.candidate.sdpMLineIndex!==null?R(C,{candidate:f.candidate.candidate,sdpMid:f.candidate.sdpMid,sdpMLineIndex:f.candidate.sdpMLineIndex},u):R(C,{candidate:null},u)}catch($){(w=r.onError)==null||w.call(r,$,{streamId:C})}},E.onopen=()=>{o=!0,(!j||n)&&W()};function I(f){d=f===z.StreamStarted?y.Start:y.Stop,Pe({statsSignal:v===H.Legacy?l:void 0,dataChannelSignal:d,onVideoStateChange:r.onVideoStateChange,onAgentActivityStateChange:r.onAgentActivityStateChange,streamType:v})}function T(f,w){const $=typeof w=="string"?w:w==null?void 0:w.metadata;$&&c.enrich({streamMetadata:$}),c.track("agent-chat",{event:"ready"})}const U={[z.StreamStarted]:I,[z.StreamDone]:I,[z.StreamReady]:T};E.onmessage=f=>{var Z;const{subject:w,data:$}=ft(f.data);(Z=U[w])==null||Z.call(U,w,$)},h.oniceconnectionstatechange=()=>{var w;F("peerConnection.oniceconnectionstatechange => "+h.iceConnectionState);const f=be(h.iceConnectionState);f!==M.Connected&&((w=r.onConnectionStateChange)==null||w.call(r,f))},h.ontrack=f=>{var w;F("peerConnection.ontrack",f),(w=r.onSrcObjectReady)==null||w.call(r,f.streams[0])},await h.setRemoteDescription(J),F("set remote description OK");const K=await h.createAnswer();return F("create answer OK"),await h.setLocalDescription(K),F("set local description OK"),await p(C,K,u),F("start connection OK"),{speak(f){return A(C,u,f)},async disconnect(){var f;if(C){const w=be(h.iceConnectionState);if(h){if(w===M.New){clearInterval(_);return}h.close(),h.oniceconnectionstatechange=null,h.onnegotiationneeded=null,h.onicecandidate=null,h.ontrack=null}try{w===M.Connected&&await S(C,u).catch($=>{})}catch($){F("Error on close stream connection",$)}(f=r.onAgentActivityStateChange)==null||f.call(r,Y.Idle),clearInterval(_)}},sendDataChannelMessage(f){var w,$;if(!n||E.readyState!=="open"){F("Data channel is not ready for sending messages"),(w=r.onError)==null||w.call(r,new Error("Data channel is not ready for sending messages"),{streamId:C});return}try{E.send(f)}catch(Z){F("Error sending data channel message",Z),($=r.onError)==null||$.call(r,Z,{streamId:C})}},sessionId:u,streamId:C,streamType:v,interruptEnabled:k}}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,r,s){s===H.Fluent?yt(e,t,a,r,s):kt(e,t,a,r,s)}function yt(e,t,a,r,s){e===y.Start?r.track("stream-session",{event:"start","stream-type":s}):e===y.Stop&&r.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,r){N.get()<=0||(e===y.Start?a.linkTrack("agent-video",{event:"start",latency:N.get(!0),"stream-type":r},"start",[z.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":r},"done",[z.StreamVideoDone]))}function kt(e,t,a,r,s){N.get()<=0||(e===y.Start?r.linkTrack("agent-video",{event:"start",latency:N.get(!0),"stream-type":s},"start",[z.StreamVideoCreated]):e===y.Stop&&r.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",[z.StreamVideoDone]))}function Ct(e,t,a){return N.reset(),new Promise(async(r,s)=>{try{const i=await ht(e.id,wt(e,t),{...t,analytics:a,callbacks:{...t.callbacks,onConnectionStateChange:c=>{var n,o;(o=(n=t.callbacks).onConnectionStateChange)==null||o.call(n,c),c===M.Connected&&r(i)},onVideoStateChange:(c,n)=>{var o,d;(d=(o=t.callbacks).onVideoStateChange)==null||d.call(o,c),pt(c,e,n,a,i.streamType)},onAgentActivityStateChange:c=>{var n,o;(o=(n=t.callbacks).onAgentActivityStateChange)==null||o.call(n,c),c===Y.Talking?se.update():se.reset(),vt(c===Y.Talking?y.Start:y.Stop,e,a,i.streamType)}}})}catch(i){s(i)}})}async function Dt(e,t,a,r,s){var o,d,l,p;const{chat:i,chatMode:c}=await Me(e,a,r,t.mode,t.persistentChat,s);if(c&&c!==t.mode&&(t.mode=c,(d=(o=t.callbacks).onModeChange)==null||d.call(o,c),c===P.TextOnly))return(p=(l=t.callbacks).onError)==null||p.call(l,new ce(c)),{chat:i};const n=await Ct(e,t,r);return{chat:i,streamingManager:n}}async function Rt(e,t){var C,J,B;let a=!0,r=!1;const s=t.mixpanelKey||Le,i=t.wsURL||Be,c=t.baseURL||G,n={messages:[],chatMode:t.mode||P.Functional},o=Re(t.auth,c,t.callbacks.onError),d=await o.getById(e),l=xe({token:s,agent:d,isEnabled:t.enableAnalitics,distinctId:t.distinctId}),{onMessage:p,clearQueue:A}=Ze(l,n,t,d,()=>{var u;return(u=n.socketManager)==null?void 0:u.disconnect()});n.messages=qe(t.initialMessages),(J=(C=t.callbacks).onNewMessage)==null||J.call(C,[...n.messages],"answer"),l.track("agent-sdk",{event:"loaded",...We(d)});async function S(u){var j,L,W,_,I,T,U;(L=(j=t.callbacks).onConnectionStateChange)==null||L.call(j,M.Connecting),N.reset(),r=!1,u&&!a&&(delete n.chat,(_=(W=t.callbacks).onNewMessage)==null||_.call(W,[...n.messages],"answer"));const g=re(t.mode)?Promise.resolve(void 0):Oe(t.auth,i,{onMessage:p,onError:t.callbacks.onError}),k=ne(()=>Dt(d,t,o,l,n.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 x,f;throw R(P.Maintenance),(f=(x=t.callbacks).onConnectionStateChange)==null||f.call(x,M.Fail),K}),[h,{streamingManager:E,chat:v}]=await Promise.all([g,k]);v&&v.id!==((I=n.chat)==null?void 0:I.id)&&((U=(T=t.callbacks).onNewChat)==null||U.call(T,v.id)),n.streamingManager=E,n.socketManager=h,n.chat=v,a=!1,R((v==null?void 0:v.chat_mode)??t.mode??P.Functional)}async function D(){var u,g,k,h;(u=n.socketManager)==null||u.disconnect(),await((g=n.streamingManager)==null?void 0:g.disconnect()),r=!1,delete n.streamingManager,delete n.socketManager,(h=(k=t.callbacks).onConnectionStateChange)==null||h.call(k,M.Disconnected)}async function R(u){var g,k;u!==n.chatMode&&(l.track("agent-mode-change",{mode:u}),n.chatMode=u,n.chatMode!==P.Functional&&await D(),(k=(g=t.callbacks).onModeChange)==null||k.call(g,u))}return{agent:d,getStreamType:()=>{var u;return(u=n.streamingManager)==null?void 0:u.streamType},getIsInterruptEnabled:()=>{var u;return((u=n.streamingManager)==null?void 0:u.interruptEnabled)??!1},starterMessages:((B=d.knowledge)==null?void 0:B.starter_message)||[],getSTTToken:()=>o.getSTTToken(d.id),changeMode:R,enrichAnalytics:l.enrich,async connect(){var u;await S(!0),l.track("agent-chat",{event:"connect",chatId:(u=n.chat)==null?void 0:u.id,agentId:d.id,mode:n.chatMode})},async reconnect(){var u;await D(),await S(!1),l.track("agent-chat",{event:"reconnect",chatId:(u=n.chat)==null?void 0:u.id,agentId:d.id,mode:n.chatMode})},async disconnect(){var u;await D(),l.track("agent-chat",{event:"disconnect",chatId:(u=n.chat)==null?void 0:u.id,agentId:d.id,mode:n.chatMode})},async chat(u){var E,v,j,L,W;const g=()=>{if(re(t.mode))throw new V(`${t.mode} is enabled, chat is disabled`);if(u.length>=800)throw new V("Message cannot be more than 800 characters");if(u.length===0)throw new V("Message cannot be empty");if(n.chatMode===P.Maintenance)throw new V("Chat is in maintenance mode");if(![P.TextOnly,P.Playground].includes(n.chatMode)){if(!n.streamingManager)throw new V("Streaming manager is not initialized");if(!n.chat)throw new V("Chat is not initialized")}},k=async()=>{var _,I;if(!n.chat){const T=await Me(d,o,l,n.chatMode,t.persistentChat);if(!T.chat)throw new q(n.chatMode,!!t.persistentChat);n.chat=T.chat,(I=(_=t.callbacks).onNewChat)==null||I.call(_,n.chat.id)}return n.chat.id},h=async(_,I)=>ne(()=>{var T,U;return o.chat(d.id,I,{chatMode:n.chatMode,streamId:(T=n.streamingManager)==null?void 0:T.streamId,sessionId:(U=n.streamingManager)==null?void 0:U.sessionId,messages:_.map(({matches:K,...x})=>x)},{...Ie(n.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:T=>{var x,f,w,$;const U=(x=T==null?void 0:T.message)==null?void 0:x.includes("missing or invalid session_id");return!((f=T==null?void 0:T.message)==null?void 0:f.includes("Stream Error"))&&!U?(($=(w=t.callbacks).onError)==null||$.call(w,T),!1):!0},onRetry:async()=>{await D(),await S(!1)}});try{A(),g(),n.messages.push({id:Q(),role:"user",content:u,created_at:new Date(N.update()).toISOString()}),(v=(E=t.callbacks).onNewMessage)==null||v.call(E,[...n.messages],"user");const _=await k(),I=await h([...n.messages],_);return n.messages.push({id:Q(),role:"assistant",content:I.result||"",created_at:new Date().toISOString(),context:I.context,matches:I.matches,videoId:I.videoId}),r&&I.videoId&&n.streamingManager&&(r=!1,n.messages[n.messages.length-1].interrupted=!0,await Te(n.streamingManager,I.videoId)),l.track("agent-message-send",{event:"success",mode:n.chatMode,messages:n.messages.length+1}),I.result&&((L=(j=t.callbacks).onNewMessage)==null||L.call(j,[...n.messages],"answer"),l.track("agent-message-received",{latency:N.get(!0),mode:n.chatMode,messages:n.messages.length})),I}catch(_){throw r=!1,((W=n.messages[n.messages.length-1])==null?void 0:W.role)==="assistant"&&n.messages.pop(),l.track("agent-message-send",{event:"error",mode:n.chatMode,messages:n.messages.length}),_}},rate(u,g,k){var v,j,L,W;const h=n.messages.find(_=>_.id===u);if(n.chat){if(!h)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const E=((v=h.matches)==null?void 0:v.map(_=>[_.document_id,_.id]))??[];return l.track("agent-rate",{event:k?"update":"create",thumb:g===1?"up":"down",knowledge_id:((j=d.knowledge)==null?void 0:j.id)??"",mode:n.chatMode,matches:E,score:g}),k?o.updateRating(d.id,n.chat.id,k,{knowledge_id:((L=d.knowledge)==null?void 0:L.id)??"",message_id:u,matches:E,score:g}):o.createRating(d.id,n.chat.id,{knowledge_id:((W=d.knowledge)==null?void 0:W.id)??"",message_id:u,matches:E,score:g})},deleteRate(u){var g;if(!n.chat)throw new Error("Chat is not initialized");return l.track("agent-rate-delete",{type:"text",chat_id:(g=n.chat)==null?void 0:g.id,id:u,mode:n.chatMode}),o.deleteRating(d.id,n.chat.id,u)},async speak(u){var E,v,j;function g(){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 k=g();if(l.track("agent-speak",k),N.update(),n.messages&&k.type==="text"&&(n.messages.push({id:Q(),role:"assistant",content:k.input,created_at:new Date(N.get(!0)).toISOString()}),(v=(E=t.callbacks).onNewMessage)==null||v.call(E,[...n.messages],"answer")),ze(n.chatMode))return{duration:0,status:"success"};if(!n.streamingManager)throw new Error("Please connect to the agent first");return n.streamingManager.speak({script:k,metadata:{chat_id:(j=n.chat)==null?void 0:j.id,agent_id:d.id}})},async interrupt({type:u}){var h,E,v,j,L;const g=n.messages[n.messages.length-1],k=(g==null?void 0:g.role)==="user";if(Ve(n.streamingManager,n.chat,(h=n.streamingManager)==null?void 0:h.streamType,k,!!(g!=null&&g.videoId)),l.track("agent-video-interrupt",{type:u||"click",stream_id:(E=n.streamingManager)==null?void 0:E.streamId,agent_id:d.id,owner_id:d.owner_id,video_duration_to_interrupt:se.get(!0),message_duration_to_interrupt:N.get(!0),chat_id:(v=n.chat)==null?void 0:v.id,mode:n.chatMode,queued_interrupt:k}),k){r=!0;return}g.interrupted=!0,(L=(j=t.callbacks).onNewMessage)==null||L.call(j,[...n.messages],"answer"),Te(n.streamingManager,g.videoId)}}}function St(e,t,a){const{getById:r}=Re(t,a||G);return r(e)}m.AgentActivityState=Y,m.AgentStatus=fe,m.ChatCreationFailed=q,m.ChatMode=P,m.ChatModeDowngraded=ce,m.ChatProgress=X,m.ConnectionState=M,m.ConnectivityState=O,m.DocumentType=we,m.KnowledgeType=he,m.PlanGroup=le,m.Providers=ye,m.RateState=me,m.StreamEvents=z,m.StreamType=H,m.StreamingState=y,m.Subject=ge,m.UserPlan=ue,m.ValidationError=V,m.VideoType=te,m.VoiceAccess=ve,m.WsError=de,m.createAgentManager=Rt,m.getAgent=St,m.mapVideoType=pe,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(m,b){typeof exports=="object"&&typeof module<"u"?b(exports):typeof define=="function"&&define.amd?define(["exports"],b):(m=typeof globalThis<"u"?globalThis:m||self,b(m.index={}))})(this,function(m){"use strict";var Et=Object.defineProperty;var _t=(m,b,q)=>b in m?Et(m,b,{enumerable:!0,configurable:!0,writable:!0,value:q}):m[b]=q;var ee=(m,b,q)=>(_t(m,typeof b!="symbol"?b+"":b,q),q);class b extends Error{constructor({kind:a,description:r,error:s}){super(JSON.stringify({kind:a,description:r}));ee(this,"kind");ee(this,"description");ee(this,"error");this.kind=a,this.description=r,this.error=s}}class q extends b{constructor(t,a){super({kind:"ChatCreationFailed",description:`Failed to create ${a?"persistent":""} chat, mode: ${t}`})}}class ce extends b{constructor(t){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${t}`})}}class V extends b{constructor(a,r){super({kind:"ValidationError",description:a});ee(this,"key");this.key=r}}class de extends b{constructor(t){super({kind:"WSError",description:t})}}var ue=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(ue||{}),le=(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))(le||{}),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||{}),P=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e.Off="Off",e))(P||{}),X=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(X||{}),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||{}),O=(e=>(e.Strong="STRONG",e.Weak="WEAK",e.Unknown="UNKNOWN",e))(O||{}),Y=(e=>(e.Idle="IDLE",e.Talking="TALKING",e))(Y||{}),z=(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))(z||{}),M=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(M||{}),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",G="https://api.d-id.com",Be="wss://notifications.d-id.com",Le="79f81a83a67430be2bc0fd61042b8faa",ke=e=>new Promise(t=>setTimeout(t,e)),Q=(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 Fe(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 r;for(let s=1;s<=a.limit;s++)try{if(!a.timeout)return await e();const{promise:i,clear:c}=Fe(a.timeout,a.timeoutErrorMessage),n=e().finally(c);return await Promise.race([n,i])}catch(i){if(r=i,!a.shouldRetryFn(i)||s>=a.limit)throw i;await ke(a.delayMs),a.onRetry(i)}throw r}function Ce(){let e=window.localStorage.getItem("did_external_key_id");if(!e){let t=Q();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let Ne=Q();function De(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}.${Ce()}_${Ne}`;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=G,a){const r=async(s,i)=>{const{skipErrorHandler:c,...n}=i||{},o=await Je(()=>fetch(t+(s!=null&&s.startsWith("/")?s:`/${s}`),{...n,headers:{...n.headers,Authorization:De(e),"Content-Type":"application/json"}}));if(!o.ok){let d=await o.text().catch(()=>`Failed to fetch with status ${o.status}`);const l=new Error(d);throw a&&!c&&a(l,{url:s,options:n,headers:o.headers}),l}return o.json()};return{get(s,i){return r(s,{...i,method:"GET"})},post(s,i,c){return r(s,{...c,body:JSON.stringify(i),method:"POST"})},delete(s,i,c){return r(s,{...c,body:JSON.stringify(i),method:"DELETE"})},patch(s,i,c){return r(s,{...c,body:JSON.stringify(i),method:"PATCH"})}}}function Re(e,t=G,a){const r=ae(e,`${t}/agents`,a);return{create(s,i){return r.post("/",s,i)},getAgents(s,i){return r.get(`/${s?`?tag=${s}`:""}`,i).then(c=>c??[])},getById(s,i){return r.get(`/${s}`,i)},delete(s,i){return r.delete(`/${s}`,void 0,i)},update(s,i,c){return r.patch(`/${s}`,i,c)},newChat(s,i,c){return r.post(`/${s}/chat`,i,c)},chat(s,i,c,n){return r.post(`/${s}/chat/${i}`,c,n)},createRating(s,i,c,n){return r.post(`/${s}/chat/${i}/ratings`,c,n)},updateRating(s,i,c,n,o){return r.patch(`/${s}/chat/${i}/ratings/${c}`,n,o)},deleteRating(s,i,c,n){return r.delete(`/${s}/chat/${i}/ratings/${c}`,n)},getSTTToken(s,i){return r.get(`/${s}/stt-token`,i)}}}const Se=e=>e.type==="clip"&&e.presenter_id.startsWith("v2_")?"clip_v2":e.type;function We(e){var s,i,c,n;const t=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",a=()=>{const o=navigator.platform;return o.toLowerCase().includes("win")?"Windows":o.toLowerCase().includes("mac")?"Mac OS X":o.toLowerCase().includes("linux")?"Linux":"Unknown"},r=e.presenter;return{$os:`${a()}`,isMobile:`${t()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:Se(r),agentVoice:{voiceId:(i=(s=e.presenter)==null?void 0:s.voice)==null?void 0:i.voice_id,provider:(n=(c=e.presenter)==null?void 0:c.voice)==null?void 0:n.type}}}const Ue=e=>e.reduce((t,a)=>t+a,0),Ee=e=>Ue(e)/e.length;function Ke(e,t,a){var o,d,l;const{event:r,...s}=e,{template:i}=(t==null?void 0:t.llm)||{},{language:c}=((o=t==null?void 0:t.presenter)==null?void 0:o.voice)||{};return{...s,llm:{...s.llm,template:i},script:{...s.script,provider:{...(d=s==null?void 0:s.script)==null?void 0:d.provider,language:c}},stitch:(t==null?void 0:t.presenter.type)==="talk"?(l=t==null?void 0:t.presenter)==null?void 0:l.stitch:void 0,...a}}let ie={};const He="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function xe(e){var i,c,n,o,d,l;const t=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",a=e.agent.presenter,r=(i=e.agent.llm)==null?void 0:i.prompt_customization,s={token:e.token||"testKey",distinct_id:e.distinctId||Ce(),agentId:e.agent.id,agentType:Se(a),owner_id:e.agent.owner_id??"",promptVersion:(c=e.agent.llm)==null?void 0:c.prompt_version,behavior:{role:r==null?void 0:r.role,personality:r==null?void 0:r.personality,instructions:(n=e.agent.llm)==null?void 0:n.instructions},temperature:(o=e.agent.llm)==null?void 0:o.temperature,knowledgeSource:r==null?void 0:r.knowledge_source,starterQuestionsCount:(l=(d=e.agent.knowledge)==null?void 0:d.starter_message)==null?void 0:l.length,topicsToAvoid:r==null?void 0:r.topics_to_avoid,maxResponseLength:r==null?void 0:r.max_response_length};return{...s,additionalProperties:{},isEnabled:e.isEnabled??!0,getRandom:Q,enrich(p){this.additionalProperties={...this.additionalProperties,...p}},async track(p,A){if(!this.isEnabled)return Promise.resolve();const{audioPath:S,...D}=A||{},R={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:p,properties:{...this.additionalProperties,...D,...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,R).then(C=>C.json())}catch(C){return console.error(C)}},linkTrack(p,A,S,D){ie[p]||(ie[p]={events:{},resolvedDependencies:[]}),D.includes(S)||D.push(S);const R=ie[p];if(R.events[S]={props:A},R.resolvedDependencies.push(S),D.every(J=>R.resolvedDependencies.includes(J))){const J=D.reduce((B,u)=>R.events[u]?{...B,...R.events[u].props}:B,{});this.track(p,J),R.resolvedDependencies=R.resolvedDependencies.filter(B=>!D.includes(B)),D.forEach(B=>{delete R.events[B]})}}}}function _e(){let e=0;return{reset:()=>e=0,update:()=>e=Date.now(),get:(t=!1)=>t?Date.now()-e:e}}const N=_e(),se=_e();function Ie(e){return e===P.Playground?{headers:{[$e]:"true"}}:{}}async function Me(e,t,a,r,s=!1,i){try{return!i&&!re(r)&&(i=await t.newChat(e.id,{persist:s},Ie(r)),a.track("agent-chat",{event:"created",chat_id:i.id,agent_id:e.id,mode:r})),{chat:i,chatMode:(i==null?void 0:i.chat_mode)??r}}catch(c){try{const n=JSON.parse(c.message);if((n==null?void 0:n.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(n){console.error("Error parsing the error message:",n)}throw new Error("Cannot create new chat")}}function qe(e){return e&&e.length>0?e:[]}function Ve(e,t,a,r,s){if(!e||!t)throw new Error("Please connect to the agent first");if(!e.interruptEnabled)throw new Error("Interrupt is not enabled for this stream");if(a!==H.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!r&&!s)throw new Error("No active video to interrupt")}async function Te(e,t){const a={type:z.StreamInterrupt,videoId:t,timestamp:Date.now()};e.sendDataChannelMessage(JSON.stringify(a))}function Xe(e){return new Promise((t,a)=>{const{callbacks:r,host:s,auth:i}=e,{onMessage:c=null,onOpen:n=null,onClose:o=null,onError:d=null}=r||{},l=new WebSocket(`${s}?authorization=${De(i)}`);l.onmessage=c,l.onclose=o,l.onerror=p=>{console.error(p),d==null||d("Websocket failed to connect",p),a(p)},l.onopen=p=>{n==null||n(p),t(l)}})}async function Ye(e){const{retries:t=1}=e;let a=null;for(let r=0;(a==null?void 0:a.readyState)!==WebSocket.OPEN;r++)try{a=await Xe(e)}catch(s){if(r===t)throw s;await ke(r*500)}return a}async function Oe(e,t,a){const r=a!=null&&a.onMessage?[a.onMessage]:[],s=await Ye({auth:e,host:t,callbacks:{onError:i=>{var c;return(c=a.onError)==null?void 0:c.call(a,new de(i))},onMessage(i){const c=JSON.parse(i.data);r.forEach(n=>n(c.event,c))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:i=>r.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,r,s){const i=r.messages[r.messages.length-1];if(!(e===X.Partial||e===X.Answer)||(i==null?void 0:i.role)!=="assistant")return;const{content:c,sequence:n}=t;e===X.Partial?a[n]=c:a.answer=c;const o=Qe(a);(i.content!==o||e===X.Answer)&&(i.content=o,s==null||s([...r.messages],e))}function Ze(e,t,a,r,s){let i={};return{clearQueue:()=>i={},onMessage:(c,n)=>{var o,d;if("content"in n)Ge(c,n,i,t,a.callbacks.onNewMessage),c===X.Answer&&e.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const l=z,p=[l.StreamVideoDone,l.StreamVideoError,l.StreamVideoRejected],A=[l.StreamFailed,l.StreamVideoError,l.StreamVideoRejected],S=Ke(n,r,{mode:t.chatMode});if(c=c,c===l.StreamVideoCreated)e.linkTrack("agent-video",S,l.StreamVideoCreated,["start"]);else if(p.includes(c)){const D=c.split("/")[1];A.includes(c)?e.track("agent-video",{...S,event:D}):e.linkTrack("agent-video",{...S,event:D},c,["done"])}A.includes(c)&&((d=(o=a.callbacks).onError)==null||d.call(o,new Error(`Stream failed with event ${c}`),{data:n})),n.event===l.StreamDone&&s()}}}}function et(e,t,a,r){const s=ae(e,`${t}/agents/${a}`,r);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,c,n){return s.post(`/streams/${i}/sdp`,{session_id:n,answer:c})},addIceCandidate(i,c,n){return s.post(`/streams/${i}/ice`,{session_id:n,...c})},sendStreamRequest(i,c,n){return s.post(`/streams/${i}`,{session_id:c,...n})},close(i,c){return s.delete(`/streams/${i}`,{session_id:c})}}}function tt(e,t,a,r){const s=ae(e,`${t}/agents/${a}`,r);return{createStream(i,c){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},c)},startConnection(i,c,n,o){return s.post(`/streams/${i}/sdp`,{session_id:n,answer:c},o)},addIceCandidate(i,c,n,o){return s.post(`/streams/${i}/ice`,{session_id:n,...c},o)},sendStreamRequest(i,c,n,o){return s.post(`/streams/${i}`,{session_id:c,...n},o)},close(i,c,n){return s.delete(`/streams/${i}`,{session_id:c},n)}}}function rt(e,t,a){const r=(t.timestamp-e.timestamp)/1e3;return{duration:r,bytesReceived:t.bytesReceived-e.bytesReceived,bitrate:Math.round((t.bytesReceived-e.bytesReceived)*8/r),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)/r,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,...r}=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"),{...r,causes:s}})}function at(e){let t="",a=0;for(const r of e.values())if(r&&r.type==="codec"&&r.mimeType.startsWith("video")&&(t=r.mimeType.split("/")[1]),r&&r.type==="candidate-pair"&&(a=r.currentRoundTripTime),r&&r.type==="inbound-rtp"&&r.kind==="video")return{codec:t,rtt:a,timestamp:r.timestamp,bytesReceived:r.bytesReceived,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,frameWidth:r.frameWidth,frameHeight:r.frameHeight,framesPerSecond:r.framesPerSecond,freezeCount:r.freezeCount,freezeDuration:r.totalFreezesDuration};return{}}function it(e,t,a){const r=e.map((o,d)=>d===0?a?{timestamp:o.timestamp,duration:0,rtt:o.rtt,bytesReceived:o.bytesReceived-a.bytesReceived,bitrate:(o.bytesReceived-a.bytesReceived)*8/(t/1e3),packetsReceived:o.packetsReceived-a.packetsReceived,packetsLost:o.packetsLost-a.packetsLost,framesDropped:o.framesDropped-a.framesDropped,framesDecoded:o.framesDecoded-a.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-a.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-a.jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-a.jitterBufferDelay)/(o.jitterBufferEmittedCount-a.jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-a.freezeCount,freezeDuration:o.freezeDuration-a.freezeDuration}:{timestamp:o.timestamp,rtt:o.rtt,duration:0,bytesReceived:o.bytesReceived,bitrate:o.bytesReceived*8/(t/1e3),packetsReceived:o.packetsReceived,packetsLost:o.packetsLost,framesDropped:o.framesDropped,framesDecoded:o.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount,avgJitterDelayInInterval:o.jitterBufferDelay/o.jitterBufferEmittedCount,framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount,freezeDuration:o.freezeDuration}:{timestamp:o.timestamp,duration:t*d/1e3,rtt:o.rtt,bytesReceived:o.bytesReceived-e[d-1].bytesReceived,bitrate:(o.bytesReceived-e[d-1].bytesReceived)*8/(t/1e3),packetsReceived:o.packetsReceived-e[d-1].packetsReceived,packetsLost:o.packetsLost-e[d-1].packetsLost,framesDropped:o.framesDropped-e[d-1].framesDropped,framesDecoded:o.framesDecoded-e[d-1].framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-e[d-1].jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-e[d-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-e[d-1].jitterBufferDelay)/(o.jitterBufferEmittedCount-e[d-1].jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-e[d-1].freezeCount,freezeDuration:o.freezeDuration-e[d-1].freezeDuration}),s=nt(r),i=s.reduce((o,d)=>o+(d.causes.includes("low fps")?1:0),0),c=r.filter(o=>!!o.avgJitterDelayInInterval).map(o=>o.avgJitterDelayInInterval),n=r.filter(o=>!!o.rtt).map(o=>o.rtt);return{webRTCStats:{anomalies:s,minRtt:Math.min(...n),avgRtt:Ee(n),maxRtt:Math.max(...n),aggregateReport:rt(e[0],e[e.length-1],i),minJitterDelayInInterval:Math.min(...c),maxJitterDelayInInterval:Math.max(...c),avgJitterDelayInInterval:Ee(c)},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,r=0;return s=>{for(const i of s.values())if(i&&i.type==="inbound-rtp"&&i.kind==="video"){const c=i.jitterBufferDelay,n=i.jitterBufferEmittedCount;if(a&&n>a){const l=c-t,p=n-a;r=l/p}t=c,a=n;const o=i.framesDecoded,d=o-e>0;return e=o,{isReceiving:d,avgJitterDelayInInterval:r,freezeCount:i.freezeCount}}return{isReceiving:!1,avgJitterDelayInInterval:r}}}function ut(e,t,a,r,s,i=!1){let c=[],n,o=0,d=!1,l=O.Unknown,p=O.Unknown,A=0,S=0;const D=dt();return setInterval(async()=>{const R=await e.getStats(),{isReceiving:C,avgJitterDelayInInterval:J,freezeCount:B}=D(R),u=at(R);if(C)o=0,A=B-S,p=J<ot?O.Strong:J>ct&&A>1?O.Weak:l,p!==l&&(s==null||s(p),l=p,S+=A,A=0),d||(r==null||r(y.Start),n=c[c.length-1],c=[],d=!0),c.push(u);else if(d&&(o++,o>=st)){const g=it(c,oe,n);r==null||r(y.Stop,g),t()||a(),S=B,d=!1}},oe)}let je=!1;const F=(e,t)=>je&&console.log(e,t),lt=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function be(e){switch(e){case"connected":return M.Connected;case"checking":return M.Connecting;case"failed":return M.Fail;case"new":return M.New;case"closed":return M.Closed;case"disconnected":return M.Disconnected;case"completed":return M.Completed;default:return M.New}}function ft(e){const[t,a=""]=e.split(/:(.+)/);try{const r=JSON.parse(a);return F("parsed data channel message",{subject:t,data:r}),{subject:t,data:r}}catch(r){return F("Failed to parse data channel message, returning data as string",{subject:t,rawData:a,error:r}),{subject:t,data:a}}}function mt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,report:r}){e===y.Start&&t===y.Start?a==null||a(y.Start):e===y.Stop&&t===y.Stop&&(a==null||a(y.Stop,r))}function gt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:r,report:s}){e===y.Start?a==null||a(y.Start):e===y.Stop&&(a==null||a(y.Stop,s)),t===y.Start?r==null||r(Y.Talking):t===y.Stop&&(r==null||r(Y.Idle))}function Pe({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:r,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:r,report:i})}async function ht(e,t,{debug:a=!1,callbacks:r,auth:s,baseURL:i=G,analytics:c}){var x;je=a;let n=!1,o=!1,d=y.Stop,l=y.Stop;const{startConnection:p,sendStreamRequest:A,close:S,createStream:D,addIceCandidate:R}=t.videoType===te.Clip?et(s,i,e,r.onError):tt(s,i,e,r.onError),{id:C,offer:J,ice_servers:B,session_id:u,fluent:g,interrupt_enabled:k}=await D(t);(x=r.onStreamCreated)==null||x.call(r,{stream_id:C,session_id:u,agent_id:e});const h=new lt({iceServers:B}),E=h.createDataChannel("JanusDataChannel");if(!u)throw new Error("Could not create session_id");const v=g?H.Fluent:H.Legacy;c.enrich({"stream-type":v});const j=t.stream_warmup&&!g,L=()=>n,W=()=>{var f;n=!0,o&&((f=r.onConnectionStateChange)==null||f.call(r,M.Connected))},_=ut(h,L,W,(f,w)=>Pe({statsSignal:l=f,dataChannelSignal:v===H.Legacy?d:void 0,onVideoStateChange:r.onVideoStateChange,onAgentActivityStateChange:r.onAgentActivityStateChange,report:w,streamType:v}),f=>{var w;return(w=r.onConnectivityStateChange)==null?void 0:w.call(r,f)},j);h.onicecandidate=f=>{var w;F("peerConnection.onicecandidate",f);try{f.candidate&&f.candidate.sdpMid&&f.candidate.sdpMLineIndex!==null?R(C,{candidate:f.candidate.candidate,sdpMid:f.candidate.sdpMid,sdpMLineIndex:f.candidate.sdpMLineIndex},u):R(C,{candidate:null},u)}catch($){(w=r.onError)==null||w.call(r,$,{streamId:C})}},E.onopen=()=>{o=!0,(!j||n)&&W()};function I(f){d=f===z.StreamStarted?y.Start:y.Stop,Pe({statsSignal:v===H.Legacy?l:void 0,dataChannelSignal:d,onVideoStateChange:r.onVideoStateChange,onAgentActivityStateChange:r.onAgentActivityStateChange,streamType:v})}function T(f,w){const $=typeof w=="string"?w:w==null?void 0:w.metadata;$&&c.enrich({streamMetadata:$}),c.track("agent-chat",{event:"ready"})}const U={[z.StreamStarted]:I,[z.StreamDone]:I,[z.StreamReady]:T};E.onmessage=f=>{var Z;const{subject:w,data:$}=ft(f.data);(Z=U[w])==null||Z.call(U,w,$)},h.oniceconnectionstatechange=()=>{var w;F("peerConnection.oniceconnectionstatechange => "+h.iceConnectionState);const f=be(h.iceConnectionState);f!==M.Connected&&((w=r.onConnectionStateChange)==null||w.call(r,f))},h.ontrack=f=>{var w;F("peerConnection.ontrack",f),(w=r.onSrcObjectReady)==null||w.call(r,f.streams[0])},await h.setRemoteDescription(J),F("set remote description OK");const K=await h.createAnswer();return F("create answer OK"),await h.setLocalDescription(K),F("set local description OK"),await p(C,K,u),F("start connection OK"),{speak(f){return A(C,u,f)},async disconnect(){var f;if(C){const w=be(h.iceConnectionState);if(h){if(w===M.New){clearInterval(_);return}h.close(),h.oniceconnectionstatechange=null,h.onnegotiationneeded=null,h.onicecandidate=null,h.ontrack=null}try{w===M.Connected&&await S(C,u).catch($=>{})}catch($){F("Error on close stream connection",$)}(f=r.onAgentActivityStateChange)==null||f.call(r,Y.Idle),clearInterval(_)}},sendDataChannelMessage(f){var w,$;if(!n||E.readyState!=="open"){F("Data channel is not ready for sending messages"),(w=r.onError)==null||w.call(r,new Error("Data channel is not ready for sending messages"),{streamId:C});return}try{E.send(f)}catch(Z){F("Error sending data channel message",Z),($=r.onError)==null||$.call(r,Z,{streamId:C})}},sessionId:u,streamId:C,streamType:v,interruptEnabled:k}}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,r,s){s===H.Fluent?yt(e,t,a,r,s):kt(e,t,a,r,s)}function yt(e,t,a,r,s){e===y.Start?r.track("stream-session",{event:"start","stream-type":s}):e===y.Stop&&r.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,r){N.get()<=0||(e===y.Start?a.linkTrack("agent-video",{event:"start",latency:N.get(!0),"stream-type":r},"start",[z.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":r},"done",[z.StreamVideoDone]))}function kt(e,t,a,r,s){N.get()<=0||(e===y.Start?r.linkTrack("agent-video",{event:"start",latency:N.get(!0),"stream-type":s},"start",[z.StreamVideoCreated]):e===y.Stop&&r.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",[z.StreamVideoDone]))}function Ct(e,t,a){return N.reset(),new Promise(async(r,s)=>{try{const i=await ht(e.id,wt(e,t),{...t,analytics:a,callbacks:{...t.callbacks,onConnectionStateChange:c=>{var n,o;(o=(n=t.callbacks).onConnectionStateChange)==null||o.call(n,c),c===M.Connected&&r(i)},onVideoStateChange:(c,n)=>{var o,d;(d=(o=t.callbacks).onVideoStateChange)==null||d.call(o,c),pt(c,e,n,a,i.streamType)},onAgentActivityStateChange:c=>{var n,o;(o=(n=t.callbacks).onAgentActivityStateChange)==null||o.call(n,c),c===Y.Talking?se.update():se.reset(),vt(c===Y.Talking?y.Start:y.Stop,e,a,i.streamType)}}})}catch(i){s(i)}})}async function Dt(e,t,a,r,s){var o,d,l,p;const{chat:i,chatMode:c}=await Me(e,a,r,t.mode,t.persistentChat,s);if(c&&c!==t.mode&&(t.mode=c,(d=(o=t.callbacks).onModeChange)==null||d.call(o,c),c===P.TextOnly))return(p=(l=t.callbacks).onError)==null||p.call(l,new ce(c)),{chat:i};const n=await Ct(e,t,r);return{chat:i,streamingManager:n}}async function Rt(e,t){var C,J,B;let a=!0,r=!1;const s=t.mixpanelKey||Le,i=t.wsURL||Be,c=t.baseURL||G,n={messages:[],chatMode:t.mode||P.Functional},o=Re(t.auth,c,t.callbacks.onError),d=await o.getById(e),l=xe({token:s,agent:d,isEnabled:t.enableAnalitics,distinctId:t.distinctId}),{onMessage:p,clearQueue:A}=Ze(l,n,t,d,()=>{var u;return(u=n.socketManager)==null?void 0:u.disconnect()});n.messages=qe(t.initialMessages),(J=(C=t.callbacks).onNewMessage)==null||J.call(C,[...n.messages],"answer"),l.track("agent-sdk",{event:"loaded",...We(d)});async function S(u){var j,L,W,_,I,T,U;(L=(j=t.callbacks).onConnectionStateChange)==null||L.call(j,M.Connecting),N.reset(),r=!1,u&&!a&&(delete n.chat,(_=(W=t.callbacks).onNewMessage)==null||_.call(W,[...n.messages],"answer"));const g=re(t.mode)?Promise.resolve(void 0):Oe(t.auth,i,{onMessage:p,onError:t.callbacks.onError}),k=ne(()=>Dt(d,t,o,l,n.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 x,f;throw R(P.Maintenance),(f=(x=t.callbacks).onConnectionStateChange)==null||f.call(x,M.Fail),K}),[h,{streamingManager:E,chat:v}]=await Promise.all([g,k]);v&&v.id!==((I=n.chat)==null?void 0:I.id)&&((U=(T=t.callbacks).onNewChat)==null||U.call(T,v.id)),n.streamingManager=E,n.socketManager=h,n.chat=v,a=!1,R((v==null?void 0:v.chat_mode)??t.mode??P.Functional)}async function D(){var u,g,k,h;(u=n.socketManager)==null||u.disconnect(),await((g=n.streamingManager)==null?void 0:g.disconnect()),r=!1,delete n.streamingManager,delete n.socketManager,(h=(k=t.callbacks).onConnectionStateChange)==null||h.call(k,M.Disconnected)}async function R(u){var g,k;u!==n.chatMode&&(l.track("agent-mode-change",{mode:u}),n.chatMode=u,n.chatMode!==P.Functional&&await D(),(k=(g=t.callbacks).onModeChange)==null||k.call(g,u))}return{agent:d,getStreamType:()=>{var u;return(u=n.streamingManager)==null?void 0:u.streamType},getIsInterruptEnabled:()=>{var u;return((u=n.streamingManager)==null?void 0:u.interruptEnabled)??!1},starterMessages:((B=d.knowledge)==null?void 0:B.starter_message)||[],getSTTToken:()=>o.getSTTToken(d.id),changeMode:R,enrichAnalytics:l.enrich,async connect(){var u;await S(!0),l.track("agent-chat",{event:"connect",chatId:(u=n.chat)==null?void 0:u.id,agentId:d.id,mode:n.chatMode})},async reconnect(){var u;await D(),await S(!1),l.track("agent-chat",{event:"reconnect",chatId:(u=n.chat)==null?void 0:u.id,agentId:d.id,mode:n.chatMode})},async disconnect(){var u;await D(),l.track("agent-chat",{event:"disconnect",chatId:(u=n.chat)==null?void 0:u.id,agentId:d.id,mode:n.chatMode})},async chat(u){var E,v,j,L,W;const g=()=>{if(re(t.mode))throw new V(`${t.mode} is enabled, chat is disabled`);if(u.length>=800)throw new V("Message cannot be more than 800 characters");if(u.length===0)throw new V("Message cannot be empty");if(n.chatMode===P.Maintenance)throw new V("Chat is in maintenance mode");if(![P.TextOnly,P.Playground].includes(n.chatMode)){if(!n.streamingManager)throw new V("Streaming manager is not initialized");if(!n.chat)throw new V("Chat is not initialized")}},k=async()=>{var _,I;if(!n.chat){const T=await Me(d,o,l,n.chatMode,t.persistentChat);if(!T.chat)throw new q(n.chatMode,!!t.persistentChat);n.chat=T.chat,(I=(_=t.callbacks).onNewChat)==null||I.call(_,n.chat.id)}return n.chat.id},h=async(_,I)=>ne(()=>{var T,U;return o.chat(d.id,I,{chatMode:n.chatMode,streamId:(T=n.streamingManager)==null?void 0:T.streamId,sessionId:(U=n.streamingManager)==null?void 0:U.sessionId,messages:_.map(({matches:K,...x})=>x)},{...Ie(n.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:T=>{var x,f,w,$;const U=(x=T==null?void 0:T.message)==null?void 0:x.includes("missing or invalid session_id");return!((f=T==null?void 0:T.message)==null?void 0:f.includes("Stream Error"))&&!U?(($=(w=t.callbacks).onError)==null||$.call(w,T),!1):!0},onRetry:async()=>{await D(),await S(!1)}});try{A(),g(),n.messages.push({id:Q(),role:"user",content:u,created_at:new Date(N.update()).toISOString()}),(v=(E=t.callbacks).onNewMessage)==null||v.call(E,[...n.messages],"user");const _=await k(),I=await h([...n.messages],_);return n.messages.push({id:Q(),role:"assistant",content:I.result||"",created_at:new Date().toISOString(),context:I.context,matches:I.matches,videoId:I.videoId}),r&&I.videoId&&n.streamingManager&&(r=!1,n.messages[n.messages.length-1].interrupted=!0,await Te(n.streamingManager,I.videoId)),l.track("agent-message-send",{event:"success",mode:n.chatMode,messages:n.messages.length+1}),I.result&&((L=(j=t.callbacks).onNewMessage)==null||L.call(j,[...n.messages],"answer"),l.track("agent-message-received",{latency:N.get(!0),mode:n.chatMode,messages:n.messages.length})),I}catch(_){throw r=!1,((W=n.messages[n.messages.length-1])==null?void 0:W.role)==="assistant"&&n.messages.pop(),l.track("agent-message-send",{event:"error",mode:n.chatMode,messages:n.messages.length}),_}},rate(u,g,k){var v,j,L,W;const h=n.messages.find(_=>_.id===u);if(n.chat){if(!h)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const E=((v=h.matches)==null?void 0:v.map(_=>[_.document_id,_.id]))??[];return l.track("agent-rate",{event:k?"update":"create",thumb:g===1?"up":"down",knowledge_id:((j=d.knowledge)==null?void 0:j.id)??"",mode:n.chatMode,matches:E,score:g}),k?o.updateRating(d.id,n.chat.id,k,{knowledge_id:((L=d.knowledge)==null?void 0:L.id)??"",message_id:u,matches:E,score:g}):o.createRating(d.id,n.chat.id,{knowledge_id:((W=d.knowledge)==null?void 0:W.id)??"",message_id:u,matches:E,score:g})},deleteRate(u){var g;if(!n.chat)throw new Error("Chat is not initialized");return l.track("agent-rate-delete",{type:"text",chat_id:(g=n.chat)==null?void 0:g.id,id:u,mode:n.chatMode}),o.deleteRating(d.id,n.chat.id,u)},async speak(u){var E,v,j;function g(){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 k=g();if(l.track("agent-speak",k),N.update(),n.messages&&k.type==="text"&&(n.messages.push({id:Q(),role:"assistant",content:k.input,created_at:new Date(N.get(!0)).toISOString()}),(v=(E=t.callbacks).onNewMessage)==null||v.call(E,[...n.messages],"answer")),ze(n.chatMode))return{duration:0,status:"success"};if(!n.streamingManager)throw new Error("Please connect to the agent first");return n.streamingManager.speak({script:k,metadata:{chat_id:(j=n.chat)==null?void 0:j.id,agent_id:d.id}})},async interrupt({type:u}){var h,E,v,j,L;const g=n.messages[n.messages.length-1],k=(g==null?void 0:g.role)==="user";if(Ve(n.streamingManager,n.chat,(h=n.streamingManager)==null?void 0:h.streamType,k,!!(g!=null&&g.videoId)),l.track("agent-video-interrupt",{type:u||"click",stream_id:(E=n.streamingManager)==null?void 0:E.streamId,agent_id:d.id,owner_id:d.owner_id,video_duration_to_interrupt:se.get(!0),message_duration_to_interrupt:N.get(!0),chat_id:(v=n.chat)==null?void 0:v.id,mode:n.chatMode,queued_interrupt:k}),k){r=!0;return}g.interrupted=!0,(L=(j=t.callbacks).onNewMessage)==null||L.call(j,[...n.messages],"answer"),Te(n.streamingManager,g.videoId)}}}function St(e,t,a){const{getById:r}=Re(t,a||G);return r(e)}m.AgentActivityState=Y,m.AgentStatus=fe,m.ChatCreationFailed=q,m.ChatMode=P,m.ChatModeDowngraded=ce,m.ChatProgress=X,m.ConnectionState=M,m.ConnectivityState=O,m.DocumentType=we,m.KnowledgeType=he,m.PlanGroup=le,m.Providers=ye,m.RateState=me,m.StreamEvents=z,m.StreamType=H,m.StreamingState=y,m.Subject=ge,m.UserPlan=ue,m.ValidationError=V,m.VideoType=te,m.VoiceAccess=ve,m.WsError=de,m.createAgentManager=Rt,m.getAgent=St,m.mapVideoType=pe,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})});
|