@d-id/client-sdk 1.1.0-beta.1 → 1.1.0-beta.2
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 +113 -108
- package/dist/index.umd.cjs +1 -1
- package/dist/src/types/stream/api/clip.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -33,7 +33,7 @@ class ge extends J {
|
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
class
|
|
36
|
+
class F extends J {
|
|
37
37
|
constructor(a, n) {
|
|
38
38
|
super({
|
|
39
39
|
kind: "ValidationError",
|
|
@@ -51,8 +51,8 @@ class he extends J {
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
var we = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(we || {}), pe = /* @__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))(pe || {}), ye = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(ye || {}),
|
|
55
|
-
const
|
|
54
|
+
var we = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(we || {}), pe = /* @__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))(pe || {}), ye = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(ye || {}), ke = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(ke || {}), I = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e))(I || {}), B = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(B || {}), ve = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(ve || {}), Re = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(Re || {}), Ce = /* @__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))(Ce || {}), ne = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(ne || {});
|
|
55
|
+
const De = (e) => {
|
|
56
56
|
switch (e) {
|
|
57
57
|
case "clip":
|
|
58
58
|
return "clip";
|
|
@@ -62,7 +62,7 @@ const Se = (e) => {
|
|
|
62
62
|
throw new Error(`Unknown video type: ${e}`);
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
|
-
var
|
|
65
|
+
var S = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(S || {}), U = /* @__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.StreamVideoCreated = "stream-video/started", e.StreamVideoDone = "stream-video/done", e.StreamVideoError = "stream-video/error", e.StreamVideoRejected = "stream-video/rejected", e))(U || {}), D = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Closed = "closed", e.Completed = "completed", e.Disconnected = "disconnected", e))(D || {}), Se = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(Se || {}), _e = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(_e || {});
|
|
66
66
|
const Me = 45 * 1e3, Ee = "X-Playground-Chat", K = "https://api.d-id.com", be = "wss://notifications.d-id.com", Ie = "79f81a83a67430be2bc0fd61042b8faa", ae = (e) => new Promise((t) => setTimeout(t, e)), q = () => Math.random().toString(16).slice(2);
|
|
67
67
|
function Pe(e, t) {
|
|
68
68
|
let a;
|
|
@@ -302,7 +302,7 @@ function je(e) {
|
|
|
302
302
|
const {
|
|
303
303
|
audioPath: h,
|
|
304
304
|
...y
|
|
305
|
-
} = R || {},
|
|
305
|
+
} = R || {}, k = {
|
|
306
306
|
method: "POST",
|
|
307
307
|
headers: {
|
|
308
308
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
@@ -326,7 +326,7 @@ function je(e) {
|
|
|
326
326
|
})
|
|
327
327
|
};
|
|
328
328
|
try {
|
|
329
|
-
return await fetch(Le,
|
|
329
|
+
return await fetch(Le, k).then((C) => C.json());
|
|
330
330
|
} catch (C) {
|
|
331
331
|
return console.error(C);
|
|
332
332
|
}
|
|
@@ -336,16 +336,16 @@ function je(e) {
|
|
|
336
336
|
events: {},
|
|
337
337
|
resolvedDependencies: []
|
|
338
338
|
}), y.includes(h) || y.push(h);
|
|
339
|
-
const
|
|
340
|
-
if (
|
|
339
|
+
const k = V[g];
|
|
340
|
+
if (k.events[h] = {
|
|
341
341
|
props: R
|
|
342
|
-
},
|
|
343
|
-
const A = y.reduce((
|
|
344
|
-
...
|
|
345
|
-
...
|
|
346
|
-
} :
|
|
347
|
-
this.track(g, A),
|
|
348
|
-
delete
|
|
342
|
+
}, k.resolvedDependencies.push(h), y.every((A) => k.resolvedDependencies.includes(A))) {
|
|
343
|
+
const A = y.reduce((P, l) => k.events[l] ? {
|
|
344
|
+
...P,
|
|
345
|
+
...k.events[l].props
|
|
346
|
+
} : P, {});
|
|
347
|
+
this.track(g, A), k.resolvedDependencies = k.resolvedDependencies.filter((P) => !y.includes(P)), y.forEach((P) => {
|
|
348
|
+
delete k.events[P];
|
|
349
349
|
});
|
|
350
350
|
}
|
|
351
351
|
}
|
|
@@ -361,7 +361,7 @@ function xe() {
|
|
|
361
361
|
}
|
|
362
362
|
const N = xe();
|
|
363
363
|
function ce(e) {
|
|
364
|
-
return e ===
|
|
364
|
+
return e === I.Playground ? {
|
|
365
365
|
headers: {
|
|
366
366
|
[Ee]: "true"
|
|
367
367
|
}
|
|
@@ -369,7 +369,7 @@ function ce(e) {
|
|
|
369
369
|
}
|
|
370
370
|
async function de(e, t, a, n, s = !1, i) {
|
|
371
371
|
try {
|
|
372
|
-
return !i && n !==
|
|
372
|
+
return !i && n !== I.DirectPlayback && (i = await t.newChat(e.id, {
|
|
373
373
|
persist: s
|
|
374
374
|
}, ce(n)), a.track("agent-chat", {
|
|
375
375
|
event: "created",
|
|
@@ -404,7 +404,7 @@ function ee(e, t) {
|
|
|
404
404
|
created_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
405
405
|
}];
|
|
406
406
|
}
|
|
407
|
-
function
|
|
407
|
+
function Fe(e) {
|
|
408
408
|
return new Promise((t, a) => {
|
|
409
409
|
const {
|
|
410
410
|
callbacks: n,
|
|
@@ -423,14 +423,14 @@ function Be(e) {
|
|
|
423
423
|
};
|
|
424
424
|
});
|
|
425
425
|
}
|
|
426
|
-
async function
|
|
426
|
+
async function Be(e) {
|
|
427
427
|
const {
|
|
428
428
|
retries: t = 1
|
|
429
429
|
} = e;
|
|
430
430
|
let a = null;
|
|
431
431
|
for (let n = 0; (a == null ? void 0 : a.readyState) !== WebSocket.OPEN; n++)
|
|
432
432
|
try {
|
|
433
|
-
a = await
|
|
433
|
+
a = await Fe(e);
|
|
434
434
|
} catch (s) {
|
|
435
435
|
if (n === t)
|
|
436
436
|
throw s;
|
|
@@ -439,7 +439,7 @@ async function Fe(e) {
|
|
|
439
439
|
return a;
|
|
440
440
|
}
|
|
441
441
|
async function We(e, t, a) {
|
|
442
|
-
const n = a != null && a.onMessage ? [a.onMessage] : [], s = await
|
|
442
|
+
const n = a != null && a.onMessage ? [a.onMessage] : [], s = await Be({
|
|
443
443
|
auth: e,
|
|
444
444
|
host: t,
|
|
445
445
|
callbacks: {
|
|
@@ -469,15 +469,15 @@ function He(e) {
|
|
|
469
469
|
}
|
|
470
470
|
function Ke(e, t, a, n, s) {
|
|
471
471
|
const i = n.messages[n.messages.length - 1];
|
|
472
|
-
if (!(e ===
|
|
472
|
+
if (!(e === B.Partial || e === B.Answer) || (i == null ? void 0 : i.role) !== "assistant")
|
|
473
473
|
return;
|
|
474
474
|
const {
|
|
475
475
|
content: r,
|
|
476
476
|
sequence: o
|
|
477
477
|
} = t;
|
|
478
|
-
e ===
|
|
478
|
+
e === B.Partial ? a[o] = r : a.answer = r;
|
|
479
479
|
const c = He(a);
|
|
480
|
-
(i.content !== c || e ===
|
|
480
|
+
(i.content !== c || e === B.Answer) && (i.content = c, s == null || s([...n.messages], e));
|
|
481
481
|
}
|
|
482
482
|
function Ue(e, t, a, n, s) {
|
|
483
483
|
let i = {};
|
|
@@ -486,7 +486,7 @@ function Ue(e, t, a, n, s) {
|
|
|
486
486
|
onMessage: (r, o) => {
|
|
487
487
|
var c, u;
|
|
488
488
|
if ("content" in o)
|
|
489
|
-
Ke(r, o, i, t, a.callbacks.onNewMessage), r ===
|
|
489
|
+
Ke(r, o, i, t, a.callbacks.onNewMessage), r === B.Answer && e.track("agent-message-received", {
|
|
490
490
|
messages: t.messages.length,
|
|
491
491
|
mode: t.chatMode
|
|
492
492
|
});
|
|
@@ -695,13 +695,13 @@ function Qe(e, t, a) {
|
|
|
695
695
|
resolution: `${e[0].frameWidth}x${e[0].frameHeight}`
|
|
696
696
|
};
|
|
697
697
|
}
|
|
698
|
-
const Y =
|
|
698
|
+
const Y = 100, Ze = Math.max(Math.ceil(400 / Y), 1);
|
|
699
699
|
function Ge() {
|
|
700
700
|
let e = 0;
|
|
701
701
|
return (t) => {
|
|
702
702
|
for (const a of t.values())
|
|
703
703
|
if (a && a.type === "inbound-rtp" && a.kind === "video") {
|
|
704
|
-
const n = a.
|
|
704
|
+
const n = a.framesDecoded, s = n - e > 0;
|
|
705
705
|
return e = n, s;
|
|
706
706
|
}
|
|
707
707
|
return !1;
|
|
@@ -712,12 +712,12 @@ function Oe(e, t, a, n, s = !1, i = !1) {
|
|
|
712
712
|
let o = [], c, u = 0, d = !1, g = 0;
|
|
713
713
|
const R = Ge();
|
|
714
714
|
return setInterval(async () => {
|
|
715
|
-
const h = await e.getStats(), y = R(h),
|
|
715
|
+
const h = await e.getStats(), y = R(h), k = Ye(h);
|
|
716
716
|
if (y)
|
|
717
|
-
u = 0, d || (n == null || n(
|
|
717
|
+
u = 0, d || (n == null || n(S.Start), i && g >= r && !t() && a(), c = o[o.length - 1], o = [], g++, d = !0), o.push(k);
|
|
718
718
|
else if (d && (u++, u >= Ze)) {
|
|
719
719
|
const C = Qe(o, Y, c);
|
|
720
|
-
n == null || n(
|
|
720
|
+
n == null || n(S.Stop, C), !i && !t() && a(), d = !1;
|
|
721
721
|
}
|
|
722
722
|
}, Y);
|
|
723
723
|
}
|
|
@@ -726,25 +726,25 @@ const L = (e, t) => le && console.log(e, t), et = (window.RTCPeerConnection || w
|
|
|
726
726
|
function te(e) {
|
|
727
727
|
switch (e) {
|
|
728
728
|
case "connected":
|
|
729
|
-
return
|
|
729
|
+
return D.Connected;
|
|
730
730
|
case "checking":
|
|
731
|
-
return
|
|
731
|
+
return D.Connecting;
|
|
732
732
|
case "failed":
|
|
733
|
-
return
|
|
733
|
+
return D.Fail;
|
|
734
734
|
case "new":
|
|
735
|
-
return
|
|
735
|
+
return D.New;
|
|
736
736
|
case "closed":
|
|
737
|
-
return
|
|
737
|
+
return D.Closed;
|
|
738
738
|
case "disconnected":
|
|
739
|
-
return
|
|
739
|
+
return D.Disconnected;
|
|
740
740
|
case "completed":
|
|
741
|
-
return
|
|
741
|
+
return D.Completed;
|
|
742
742
|
default:
|
|
743
|
-
return
|
|
743
|
+
return D.New;
|
|
744
744
|
}
|
|
745
745
|
}
|
|
746
746
|
function re(e, t, a, n) {
|
|
747
|
-
e ===
|
|
747
|
+
e === S.Start && t === S.Start ? a == null || a(S.Start) : e === S.Stop && t === S.Stop && (a == null || a(S.Stop, n));
|
|
748
748
|
}
|
|
749
749
|
async function tt(e, t, {
|
|
750
750
|
debug: a = !1,
|
|
@@ -754,36 +754,36 @@ async function tt(e, t, {
|
|
|
754
754
|
warmup: r
|
|
755
755
|
}) {
|
|
756
756
|
le = a;
|
|
757
|
-
let o = !1, c = !1, u =
|
|
757
|
+
let o = !1, c = !1, u = S.Stop, d = S.Stop;
|
|
758
758
|
const {
|
|
759
759
|
startConnection: g,
|
|
760
760
|
sendStreamRequest: R,
|
|
761
761
|
close: h,
|
|
762
762
|
createStream: y,
|
|
763
|
-
addIceCandidate:
|
|
763
|
+
addIceCandidate: k
|
|
764
764
|
} = t.videoType === ne.Clip ? qe(s, i, e, n.onError) : Je(s, i, e, n.onError), {
|
|
765
765
|
id: C,
|
|
766
766
|
offer: A,
|
|
767
|
-
ice_servers:
|
|
767
|
+
ice_servers: P,
|
|
768
768
|
session_id: l
|
|
769
769
|
} = await y(t), m = new et({
|
|
770
|
-
iceServers:
|
|
771
|
-
}),
|
|
770
|
+
iceServers: P
|
|
771
|
+
}), v = m.createDataChannel("JanusDataChannel");
|
|
772
772
|
if (!l)
|
|
773
773
|
throw new Error("Could not create session_id");
|
|
774
|
-
const
|
|
774
|
+
const b = () => o, T = () => {
|
|
775
775
|
var f;
|
|
776
|
-
o = !0, c && ((f = n.onConnectionStateChange) == null || f.call(n,
|
|
777
|
-
}, _ = Oe(m,
|
|
776
|
+
o = !0, c && ((f = n.onConnectionStateChange) == null || f.call(n, D.Connected));
|
|
777
|
+
}, _ = Oe(m, b, T, (f, w) => re(d = f, u, n.onVideoStateChange, w), r, !!t.stream_greeting);
|
|
778
778
|
m.onicecandidate = (f) => {
|
|
779
779
|
var w;
|
|
780
780
|
L("peerConnection.onicecandidate", f);
|
|
781
781
|
try {
|
|
782
|
-
f.candidate && f.candidate.sdpMid && f.candidate.sdpMLineIndex !== null ?
|
|
782
|
+
f.candidate && f.candidate.sdpMid && f.candidate.sdpMLineIndex !== null ? k(C, {
|
|
783
783
|
candidate: f.candidate.candidate,
|
|
784
784
|
sdpMid: f.candidate.sdpMid,
|
|
785
785
|
sdpMLineIndex: f.candidate.sdpMLineIndex
|
|
786
|
-
}, l) :
|
|
786
|
+
}, l) : k(C, {
|
|
787
787
|
candidate: null
|
|
788
788
|
}, l);
|
|
789
789
|
} catch (p) {
|
|
@@ -791,15 +791,15 @@ async function tt(e, t, {
|
|
|
791
791
|
streamId: C
|
|
792
792
|
});
|
|
793
793
|
}
|
|
794
|
-
},
|
|
794
|
+
}, v.onopen = () => {
|
|
795
795
|
c = !0, (!t.stream_warmup && !t.stream_greeting || o) && T();
|
|
796
|
-
},
|
|
797
|
-
f.data === "stream/started" ? u =
|
|
796
|
+
}, v.onmessage = (f) => {
|
|
797
|
+
f.data === "stream/started" ? u = S.Start : f.data === "stream/done" && (u = S.Stop), re(d, u, n.onVideoStateChange);
|
|
798
798
|
}, m.oniceconnectionstatechange = () => {
|
|
799
799
|
var w;
|
|
800
800
|
L("peerConnection.oniceconnectionstatechange => " + m.iceConnectionState);
|
|
801
801
|
const f = te(m.iceConnectionState);
|
|
802
|
-
f !==
|
|
802
|
+
f !== D.Connected && ((w = n.onConnectionStateChange) == null || w.call(n, f));
|
|
803
803
|
}, m.ontrack = (f) => {
|
|
804
804
|
var w;
|
|
805
805
|
L("peerConnection.ontrack", f), (w = n.onSrcObjectReady) == null || w.call(n, f.streams[0]);
|
|
@@ -821,19 +821,19 @@ async function tt(e, t, {
|
|
|
821
821
|
if (C) {
|
|
822
822
|
const p = te(m.iceConnectionState);
|
|
823
823
|
if (m) {
|
|
824
|
-
if (p ===
|
|
825
|
-
(f = n.onVideoStateChange) == null || f.call(n,
|
|
824
|
+
if (p === D.New) {
|
|
825
|
+
(f = n.onVideoStateChange) == null || f.call(n, S.Stop), clearInterval(_);
|
|
826
826
|
return;
|
|
827
827
|
}
|
|
828
828
|
m.close(), m.oniceconnectionstatechange = null, m.onnegotiationneeded = null, m.onicecandidate = null, m.ontrack = null;
|
|
829
829
|
}
|
|
830
830
|
try {
|
|
831
|
-
p ===
|
|
831
|
+
p === D.Connected && await h(C, l).catch((M) => {
|
|
832
832
|
});
|
|
833
833
|
} catch (M) {
|
|
834
834
|
L("Error on close stream connection", M);
|
|
835
835
|
}
|
|
836
|
-
(w = n.onVideoStateChange) == null || w.call(n,
|
|
836
|
+
(w = n.onVideoStateChange) == null || w.call(n, S.Stop), clearInterval(_);
|
|
837
837
|
}
|
|
838
838
|
},
|
|
839
839
|
/**
|
|
@@ -852,7 +852,7 @@ function rt(e, t, a) {
|
|
|
852
852
|
streamOptions: n
|
|
853
853
|
} = t ?? {};
|
|
854
854
|
return {
|
|
855
|
-
videoType:
|
|
855
|
+
videoType: De(e.presenter.type),
|
|
856
856
|
output_resolution: n == null ? void 0 : n.outputResolution,
|
|
857
857
|
session_timeout: n == null ? void 0 : n.sessionTimeout,
|
|
858
858
|
stream_warmup: n == null ? void 0 : n.streamWarmup,
|
|
@@ -861,10 +861,10 @@ function rt(e, t, a) {
|
|
|
861
861
|
};
|
|
862
862
|
}
|
|
863
863
|
function nt(e, t, a, n) {
|
|
864
|
-
N.get() > 0 && (e ===
|
|
864
|
+
N.get() > 0 && (e === S.Start ? n.linkTrack("agent-video", {
|
|
865
865
|
event: "start",
|
|
866
866
|
latency: N.get(!0)
|
|
867
|
-
}, "start", [U.StreamVideoCreated]) : e ===
|
|
867
|
+
}, "start", [U.StreamVideoCreated]) : e === S.Stop && n.linkTrack("agent-video", {
|
|
868
868
|
event: "stop",
|
|
869
869
|
is_greenscreen: t.presenter.type === "clip" && t.presenter.is_greenscreen,
|
|
870
870
|
background: t.presenter.type === "clip" && t.presenter.background,
|
|
@@ -883,7 +883,7 @@ function at(e, t, a, n) {
|
|
|
883
883
|
...t.callbacks,
|
|
884
884
|
onConnectionStateChange: (c) => {
|
|
885
885
|
var u, d;
|
|
886
|
-
(d = (u = t.callbacks).onConnectionStateChange) == null || d.call(u, c), c ===
|
|
886
|
+
(d = (u = t.callbacks).onConnectionStateChange) == null || d.call(u, c), c === D.Connected && s(o);
|
|
887
887
|
},
|
|
888
888
|
onVideoStateChange: (c, u) => {
|
|
889
889
|
var d, g;
|
|
@@ -902,7 +902,7 @@ async function it(e, t, a, n, s, i) {
|
|
|
902
902
|
chat: r,
|
|
903
903
|
chatMode: o
|
|
904
904
|
} = await de(e, a, n, t.mode, t.persistentChat, s);
|
|
905
|
-
if (o && o !== t.mode && (t.mode = o, (d = (u = t.callbacks).onModeChange) == null || d.call(u, o), o ===
|
|
905
|
+
if (o && o !== t.mode && (t.mode = o, (d = (u = t.callbacks).onModeChange) == null || d.call(u, o), o === I.TextOnly))
|
|
906
906
|
return (R = (g = t.callbacks).onError) == null || R.call(g, new ge(o)), {
|
|
907
907
|
chat: r
|
|
908
908
|
};
|
|
@@ -913,11 +913,11 @@ async function it(e, t, a, n, s, i) {
|
|
|
913
913
|
};
|
|
914
914
|
}
|
|
915
915
|
async function ot(e, t) {
|
|
916
|
-
var C, A,
|
|
916
|
+
var C, A, P;
|
|
917
917
|
let a = !0;
|
|
918
918
|
const n = t.mixpanelKey || Ie, s = t.wsURL || be, i = t.baseURL || K, r = {
|
|
919
919
|
messages: [],
|
|
920
|
-
chatMode: t.mode ||
|
|
920
|
+
chatMode: t.mode || I.Functional
|
|
921
921
|
}, o = oe(t.auth, i, t.callbacks.onError), c = await o.getById(e), u = Ne(c), d = je({
|
|
922
922
|
token: n,
|
|
923
923
|
agent: c,
|
|
@@ -936,11 +936,11 @@ async function ot(e, t) {
|
|
|
936
936
|
});
|
|
937
937
|
async function h(l) {
|
|
938
938
|
var $, f, w, p, M, E, j;
|
|
939
|
-
(f = ($ = t.callbacks).onConnectionStateChange) == null || f.call($,
|
|
940
|
-
const m = t.mode ===
|
|
939
|
+
(f = ($ = t.callbacks).onConnectionStateChange) == null || f.call($, D.Connecting), N.reset(), l && !a && (delete r.chat, r.messages = ee(u), (p = (w = t.callbacks).onNewMessage) == null || p.call(w, [...r.messages], "answer"));
|
|
940
|
+
const m = t.mode === I.DirectPlayback ? Promise.resolve(void 0) : We(t.auth, s, {
|
|
941
941
|
onMessage: g,
|
|
942
942
|
onError: t.callbacks.onError
|
|
943
|
-
}),
|
|
943
|
+
}), v = X(() => it(c, t, o, d, r.chat, l ? u : void 0), {
|
|
944
944
|
limit: 3,
|
|
945
945
|
timeout: Me,
|
|
946
946
|
timeoutErrorMessage: "Timeout initializing the stream",
|
|
@@ -949,28 +949,28 @@ async function ot(e, t) {
|
|
|
949
949
|
delayMs: 1e3
|
|
950
950
|
}).catch((z) => {
|
|
951
951
|
var x, W;
|
|
952
|
-
throw
|
|
953
|
-
}), [
|
|
952
|
+
throw k(I.Maintenance), (W = (x = t.callbacks).onConnectionStateChange) == null || W.call(x, D.Fail), z;
|
|
953
|
+
}), [b, {
|
|
954
954
|
streamingManager: T,
|
|
955
955
|
chat: _
|
|
956
|
-
}] = await Promise.all([m,
|
|
957
|
-
_ && _.id !== ((M = r.chat) == null ? void 0 : M.id) && ((j = (E = t.callbacks).onNewChat) == null || j.call(E, _.id)), r.streamingManager = T, r.socketManager =
|
|
956
|
+
}] = await Promise.all([m, v]);
|
|
957
|
+
_ && _.id !== ((M = r.chat) == null ? void 0 : M.id) && ((j = (E = t.callbacks).onNewChat) == null || j.call(E, _.id)), r.streamingManager = T, r.socketManager = b, r.chat = _, a = !1, k((_ == null ? void 0 : _.chat_mode) ?? t.mode ?? I.Functional);
|
|
958
958
|
}
|
|
959
959
|
async function y() {
|
|
960
|
-
var l, m,
|
|
961
|
-
(l = r.socketManager) == null || l.disconnect(), await ((m = r.streamingManager) == null ? void 0 : m.disconnect()), delete r.streamingManager, delete r.socketManager, (
|
|
960
|
+
var l, m, v, b;
|
|
961
|
+
(l = r.socketManager) == null || l.disconnect(), await ((m = r.streamingManager) == null ? void 0 : m.disconnect()), delete r.streamingManager, delete r.socketManager, (b = (v = t.callbacks).onConnectionStateChange) == null || b.call(v, D.Disconnected);
|
|
962
962
|
}
|
|
963
|
-
async function
|
|
964
|
-
var m,
|
|
963
|
+
async function k(l) {
|
|
964
|
+
var m, v;
|
|
965
965
|
l !== r.chatMode && (d.track("agent-mode-change", {
|
|
966
966
|
mode: l
|
|
967
|
-
}), r.chatMode = l, r.chatMode !==
|
|
967
|
+
}), r.chatMode = l, r.chatMode !== I.Functional && await y(), (v = (m = t.callbacks).onModeChange) == null || v.call(m, l));
|
|
968
968
|
}
|
|
969
969
|
return {
|
|
970
970
|
agent: c,
|
|
971
|
-
starterMessages: ((
|
|
971
|
+
starterMessages: ((P = c.knowledge) == null ? void 0 : P.starter_message) || [],
|
|
972
972
|
getSTTToken: () => o.getSTTToken(c.id),
|
|
973
|
-
changeMode:
|
|
973
|
+
changeMode: k,
|
|
974
974
|
enrichAnalytics: d.enrich,
|
|
975
975
|
async connect() {
|
|
976
976
|
var l;
|
|
@@ -1002,21 +1002,21 @@ async function ot(e, t) {
|
|
|
1002
1002
|
async chat(l) {
|
|
1003
1003
|
var T, _, $, f, w;
|
|
1004
1004
|
const m = () => {
|
|
1005
|
-
if (t.mode ===
|
|
1006
|
-
throw new
|
|
1005
|
+
if (t.mode === I.DirectPlayback)
|
|
1006
|
+
throw new F("Direct playback is enabled, chat is disabled");
|
|
1007
1007
|
if (l.length >= 800)
|
|
1008
|
-
throw new
|
|
1008
|
+
throw new F("Message cannot be more than 800 characters");
|
|
1009
1009
|
if (l.length === 0)
|
|
1010
|
-
throw new
|
|
1011
|
-
if (r.chatMode ===
|
|
1012
|
-
throw new
|
|
1013
|
-
if (![
|
|
1010
|
+
throw new F("Message cannot be empty");
|
|
1011
|
+
if (r.chatMode === I.Maintenance)
|
|
1012
|
+
throw new F("Chat is in maintenance mode");
|
|
1013
|
+
if (![I.TextOnly, I.Playground].includes(r.chatMode)) {
|
|
1014
1014
|
if (!r.streamingManager)
|
|
1015
|
-
throw new
|
|
1015
|
+
throw new F("Streaming manager is not initialized");
|
|
1016
1016
|
if (!r.chat)
|
|
1017
|
-
throw new
|
|
1017
|
+
throw new F("Chat is not initialized");
|
|
1018
1018
|
}
|
|
1019
|
-
},
|
|
1019
|
+
}, v = async () => {
|
|
1020
1020
|
var p, M;
|
|
1021
1021
|
if (!r.chat) {
|
|
1022
1022
|
const E = await de(c, o, d, r.chatMode, t.persistentChat);
|
|
@@ -1025,7 +1025,7 @@ async function ot(e, t) {
|
|
|
1025
1025
|
r.chat = E.chat, (M = (p = t.callbacks).onNewChat) == null || M.call(p, r.chat.id);
|
|
1026
1026
|
}
|
|
1027
1027
|
return r.chat.id;
|
|
1028
|
-
},
|
|
1028
|
+
}, b = async (p, M) => X(() => {
|
|
1029
1029
|
var E, j;
|
|
1030
1030
|
return o.chat(c.id, M, {
|
|
1031
1031
|
chatMode: r.chatMode,
|
|
@@ -1057,7 +1057,7 @@ async function ot(e, t) {
|
|
|
1057
1057
|
content: l,
|
|
1058
1058
|
created_at: new Date(N.update()).toISOString()
|
|
1059
1059
|
}), (_ = (T = t.callbacks).onNewMessage) == null || _.call(T, [...r.messages], "user");
|
|
1060
|
-
const p = await
|
|
1060
|
+
const p = await v(), M = await b([...r.messages], p);
|
|
1061
1061
|
return r.messages.push({
|
|
1062
1062
|
id: q(),
|
|
1063
1063
|
role: "assistant",
|
|
@@ -1082,23 +1082,23 @@ async function ot(e, t) {
|
|
|
1082
1082
|
}), p;
|
|
1083
1083
|
}
|
|
1084
1084
|
},
|
|
1085
|
-
rate(l, m,
|
|
1085
|
+
rate(l, m, v) {
|
|
1086
1086
|
var _, $, f, w;
|
|
1087
|
-
const
|
|
1087
|
+
const b = r.messages.find((p) => p.id === l);
|
|
1088
1088
|
if (r.chat) {
|
|
1089
|
-
if (!
|
|
1089
|
+
if (!b)
|
|
1090
1090
|
throw new Error("Message not found");
|
|
1091
1091
|
} else
|
|
1092
1092
|
throw new Error("Chat is not initialized");
|
|
1093
|
-
const T = ((_ =
|
|
1093
|
+
const T = ((_ = b.matches) == null ? void 0 : _.map((p) => [p.document_id, p.id])) ?? [];
|
|
1094
1094
|
return d.track("agent-rate", {
|
|
1095
|
-
event:
|
|
1095
|
+
event: v ? "update" : "create",
|
|
1096
1096
|
thumb: m === 1 ? "up" : "down",
|
|
1097
1097
|
knowledge_id: (($ = c.knowledge) == null ? void 0 : $.id) ?? "",
|
|
1098
1098
|
mode: r.chatMode,
|
|
1099
1099
|
matches: T,
|
|
1100
1100
|
score: m
|
|
1101
|
-
}),
|
|
1101
|
+
}), v ? o.updateRating(c.id, r.chat.id, v, {
|
|
1102
1102
|
knowledge_id: ((f = c.knowledge) == null ? void 0 : f.id) ?? "",
|
|
1103
1103
|
message_id: l,
|
|
1104
1104
|
matches: T,
|
|
@@ -1122,6 +1122,7 @@ async function ot(e, t) {
|
|
|
1122
1122
|
}), o.deleteRating(c.id, r.chat.id, l);
|
|
1123
1123
|
},
|
|
1124
1124
|
speak(l) {
|
|
1125
|
+
var b;
|
|
1125
1126
|
if (!r.streamingManager)
|
|
1126
1127
|
throw new Error("Please connect to the agent first");
|
|
1127
1128
|
function m() {
|
|
@@ -1147,9 +1148,13 @@ async function ot(e, t) {
|
|
|
1147
1148
|
}
|
|
1148
1149
|
return l;
|
|
1149
1150
|
}
|
|
1150
|
-
const
|
|
1151
|
-
return d.track("agent-speak",
|
|
1152
|
-
script:
|
|
1151
|
+
const v = m();
|
|
1152
|
+
return d.track("agent-speak", v), N.update(), r.streamingManager.speak({
|
|
1153
|
+
script: v,
|
|
1154
|
+
metadata: {
|
|
1155
|
+
chat_id: (b = r.chat) == null ? void 0 : b.id,
|
|
1156
|
+
agent_id: c.id
|
|
1157
|
+
}
|
|
1153
1158
|
});
|
|
1154
1159
|
}
|
|
1155
1160
|
};
|
|
@@ -1163,24 +1168,24 @@ function ct(e, t, a) {
|
|
|
1163
1168
|
export {
|
|
1164
1169
|
ye as AgentStatus,
|
|
1165
1170
|
fe as ChatCreationFailed,
|
|
1166
|
-
|
|
1171
|
+
I as ChatMode,
|
|
1167
1172
|
ge as ChatModeDowngraded,
|
|
1168
|
-
|
|
1169
|
-
|
|
1173
|
+
B as ChatProgress,
|
|
1174
|
+
D as ConnectionState,
|
|
1170
1175
|
Ce as DocumentType,
|
|
1171
1176
|
Re as KnowledgeType,
|
|
1172
1177
|
pe as PlanGroup,
|
|
1173
|
-
|
|
1174
|
-
|
|
1178
|
+
Se as Providers,
|
|
1179
|
+
ke as RateState,
|
|
1175
1180
|
U as StreamEvents,
|
|
1176
|
-
|
|
1177
|
-
|
|
1181
|
+
S as StreamingState,
|
|
1182
|
+
ve as Subject,
|
|
1178
1183
|
we as UserPlan,
|
|
1179
|
-
|
|
1184
|
+
F as ValidationError,
|
|
1180
1185
|
ne as VideoType,
|
|
1181
1186
|
_e as VoiceAccess,
|
|
1182
1187
|
he as WsError,
|
|
1183
1188
|
ot as createAgentManager,
|
|
1184
1189
|
ct as getAgent,
|
|
1185
|
-
|
|
1190
|
+
De as mapVideoType
|
|
1186
1191
|
};
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(h,_){typeof exports=="object"&&typeof module<"u"?_(exports):typeof define=="function"&&define.amd?define(["exports"],_):(h=typeof globalThis<"u"?globalThis:h||self,_(h.index={}))})(this,function(h){"use strict";var ot=Object.defineProperty;var ct=(h,_,z)=>_ in h?ot(h,_,{enumerable:!0,configurable:!0,writable:!0,value:z}):h[_]=z;var J=(h,_,z)=>(ct(h,typeof _!="symbol"?_+"":_,z),z);class _ extends Error{constructor({kind:a,description:r,error:s}){super(JSON.stringify({kind:a,description:r}));J(this,"kind");J(this,"description");J(this,"error");this.kind=a,this.description=r,this.error=s}}class z extends _{constructor(t,a){super({kind:"ChatCreationFailed",description:`Failed to create ${a?"persistent":""} chat, mode: ${t}`})}}class te extends _{constructor(t){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${t}`})}}class F extends _{constructor(a,r){super({kind:"ValidationError",description:a});J(this,"key");this.key=r}}class ne extends _{constructor(t){super({kind:"WSError",description:t})}}var re=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(re||{}),ae=(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))(ae||{}),ie=(e=>(e.Created="created",e.Started="started",e.Done="done",e.Error="error",e.Rejected="rejected",e.Ready="ready",e))(ie||{}),se=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(se||{}),P=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e))(P||{}),W=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(W||{}),oe=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(oe||{}),ce=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(ce||{}),de=(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))(de||{}),Y=(e=>(e.Clip="clip",e.Talk="talk",e))(Y||{});const le=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var R=(e=>(e.Start="START",e.Stop="STOP",e))(R||{}),V=(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.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(V||{}),S=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(S||{}),me=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(me||{}),ue=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(ue||{});const Me=45*1e3,_e="X-Playground-Chat",x="https://api.d-id.com",Ee="wss://notifications.d-id.com",be="79f81a83a67430be2bc0fd61042b8faa",fe=e=>new Promise(t=>setTimeout(t,e)),X=()=>Math.random().toString(16).slice(2);function Te(e,t){let a;return{promise:new Promise((s,i)=>{a=setTimeout(()=>i(new Error(t)),e)}),clear:()=>clearTimeout(a)}}async function Q(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:n}=Te(a.timeout,a.timeoutErrorMessage),o=e().finally(n);return await Promise.race([o,i])}catch(i){if(r=i,!a.shouldRetryFn(i)||s>=a.limit)throw i;await fe(a.delayMs),a.onRetry(i)}throw r}function ge(){let e=window.localStorage.getItem("did_external_key_id");return e||(e=Math.random().toString(16).slice(2),window.localStorage.setItem("did_external_key_id",e)),e}let Pe=X();function he(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}.${ge()}_${Pe}`;throw new Error(`Unknown auth type: ${e}`)}const Ie=e=>Q(e,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:t=>t.status===429});function Z(e,t=x,a){const r=async(s,i)=>{const{skipErrorHandler:n,...o}=i||{},c=await Ie(()=>fetch(t+(s!=null&&s.startsWith("/")?s:`/${s}`),{...o,headers:{...o.headers,Authorization:he(e),"Content-Type":"application/json"}}));if(!c.ok){let u=await c.text().catch(()=>`Failed to fetch with status ${c.status}`);const d=new Error(u);throw a&&!n&&a(d,{url:s,options:o,headers:c.headers}),d}return c.json()};return{get(s,i){return r(s,{...i,method:"GET"})},post(s,i,n){return r(s,{...n,body:JSON.stringify(i),method:"POST"})},delete(s,i,n){return r(s,{...n,body:JSON.stringify(i),method:"DELETE"})},patch(s,i,n){return r(s,{...n,body:JSON.stringify(i),method:"PATCH"})}}}function we(e,t=x,a){const r=Z(e,`${t}/agents`,a);return{create(s,i){return r.post("/",s,i)},getAgents(s,i){return r.get(`/${s?`?tag=${s}`:""}`,i).then(n=>n??[])},getById(s,i){return r.get(`/${s}`,i)},delete(s,i){return r.delete(`/${s}`,void 0,i)},update(s,i,n){return r.patch(`/${s}`,i,n)},newChat(s,i,n){return r.post(`/${s}/chat`,i,n)},chat(s,i,n,o){return r.post(`/${s}/chat/${i}`,n,o)},createRating(s,i,n,o){return r.post(`/${s}/chat/${i}/ratings`,n,o)},updateRating(s,i,n,o,c){return r.patch(`/${s}/chat/${i}/ratings/${n}`,o,c)},deleteRating(s,i,n,o){return r.delete(`/${s}/chat/${i}/ratings/${n}`,o)},getSTTToken(s,i){return r.get(`/${s}/stt-token`,i)}}}const G=e=>e.type==="clip"&&e.presenter_id.startsWith("v2_")?"clip_v2":e.type;function Ae(e){var s,i,n,o;const t=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",a=()=>{const c=navigator.platform;return c.toLowerCase().includes("win")?"Windows":c.toLowerCase().includes("mac")?"Mac OS X":c.toLowerCase().includes("linux")?"Linux":"Unknown"},r=e.presenter;return{$os:`${a()}`,isMobile:`${t()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:G(r),agentVoice:{voiceId:(i=(s=e.presenter)==null?void 0:s.voice)==null?void 0:i.voice_id,provider:(o=(n=e.presenter)==null?void 0:n.voice)==null?void 0:o.type}}}function $e(e,t,a){var c,u,d;const{event:r,...s}=e,{template:i}=(t==null?void 0:t.llm)||{},{language:n}=((c=t==null?void 0:t.presenter)==null?void 0:c.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:n}},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 O={};const je="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function ze(e){var i,n,o,c,u,d;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||ge(),agentId:e.agent.id,agentType:G(a),owner_id:e.agent.owner_id??"",promptVersion:(n=e.agent.llm)==null?void 0:n.prompt_version,behavior:{role:r==null?void 0:r.role,personality:r==null?void 0:r.personality,instructions:(o=e.agent.llm)==null?void 0:o.instructions},temperature:(c=e.agent.llm)==null?void 0:c.temperature,knowledgeSource:r==null?void 0:r.knowledge_source,starterQuestionsCount:(d=(u=e.agent.knowledge)==null?void 0:u.starter_message)==null?void 0:d.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:()=>Math.random().toString(16).slice(2),enrich(g){const D={};if(g&&typeof g!="object")throw new Error("properties must be a flat json object");for(let w in g)(typeof g[w]=="string"||typeof g[w]=="number")&&(D[w]=g[w]);this.additionalProperties={...this.additionalProperties,...D}},async track(g,D){if(!this.isEnabled)return Promise.resolve();const{audioPath:w,...v}=D||{},k={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:g,properties:{...this.additionalProperties,...v,...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(je,k).then(M=>M.json())}catch(M){return console.error(M)}},linkTrack(g,D,w,v){O[g]||(O[g]={events:{},resolvedDependencies:[]}),v.includes(w)||v.push(w);const k=O[g];if(k.events[w]={props:D},k.resolvedDependencies.push(w),v.every(N=>k.resolvedDependencies.includes(N))){const N=v.reduce((I,l)=>k.events[l]?{...I,...k.events[l].props}:I,{});this.track(g,N),k.resolvedDependencies=k.resolvedDependencies.filter(I=>!v.includes(I)),v.forEach(I=>{delete k.events[I]})}}}}function Le(){let e=0;return{reset:()=>e=0,update:()=>e=Date.now(),get:(t=!1)=>t?Date.now()-e:e}}const H=Le();function pe(e){return e===P.Playground?{headers:{[_e]:"true"}}:{}}async function ye(e,t,a,r,s=!1,i){try{return!i&&r!==P.DirectPlayback&&(i=await t.newChat(e.id,{persist:s},pe(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(n){try{const o=JSON.parse(n.message);if((o==null?void 0:o.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(o){console.error("Error parsing the error message:",o)}throw new Error("Cannot create new chat")}}function Ne(e){var a;const t=((a=e.greetings)==null?void 0:a.filter(r=>r.length>0))??[];return t.length>0?t[Math.floor(Math.random()*t.length)]:`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`}function ve(e,t){return t&&t.length>0?t:[{content:e,id:X(),role:"assistant",created_at:new Date().toISOString()}]}function Be(e){return new Promise((t,a)=>{const{callbacks:r,host:s,auth:i}=e,{onMessage:n=null,onOpen:o=null,onClose:c=null,onError:u=null}=r||{},d=new WebSocket(`${s}?authorization=${he(i)}`);d.onmessage=n,d.onclose=c,d.onerror=g=>{console.error(g),u==null||u("Websocket failed to connect",g),a(g)},d.onopen=g=>{o==null||o(g),t(d)}})}async function Fe(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 Be(e)}catch(s){if(r===t)throw s;await fe(r*500)}return a}async function We(e,t,a){const r=a!=null&&a.onMessage?[a.onMessage]:[],s=await Fe({auth:e,host:t,callbacks:{onError:i=>{var n;return(n=a.onError)==null?void 0:n.call(a,new ne(i))},onMessage(i){const n=JSON.parse(i.data);r.forEach(o=>o(n.event,n))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:i=>r.push(i)}}function He(e){if(e.answer!==void 0)return e.answer;let t=0,a="";for(;t in e;)a+=e[t++];return a}function Ke(e,t,a,r,s){const i=r.messages[r.messages.length-1];if(!(e===W.Partial||e===W.Answer)||(i==null?void 0:i.role)!=="assistant")return;const{content:n,sequence:o}=t;e===W.Partial?a[o]=n:a.answer=n;const c=He(a);(i.content!==c||e===W.Answer)&&(i.content=c,s==null||s([...r.messages],e))}function Ue(e,t,a,r,s){let i={};return{clearQueue:()=>i={},onMessage:(n,o)=>{var c,u;if("content"in o)Ke(n,o,i,t,a.callbacks.onNewMessage),n===W.Answer&&e.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const d=V,g=[d.StreamVideoDone,d.StreamVideoError,d.StreamVideoRejected],D=[d.StreamFailed,d.StreamVideoError,d.StreamVideoRejected],w=$e(o,r,{mode:t.chatMode});if(n=n,n===d.StreamVideoCreated)e.linkTrack("agent-video",w,d.StreamVideoCreated,["start"]);else if(g.includes(n)){const v=n.split("/")[1];D.includes(n)?e.track("agent-video",{...w,event:v}):e.linkTrack("agent-video",{...w,event:v},n,["done"])}D.includes(n)&&((u=(c=a.callbacks).onError)==null||u.call(c,new Error(`Stream failed with event ${n}`),{data:o})),o.event===d.StreamDone&&s()}}}}function Ve(e,t,a,r){const s=Z(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,stream_greeting:i.stream_greeting})},startConnection(i,n,o){return s.post(`/streams/${i}/sdp`,{session_id:o,answer:n})},addIceCandidate(i,n,o){return s.post(`/streams/${i}/ice`,{session_id:o,...n})},sendStreamRequest(i,n,o){return s.post(`/streams/${i}`,{session_id:n,...o})},close(i,n){return s.delete(`/streams/${i}`,{session_id:n})}}}function xe(e,t,a,r){const s=Z(e,`${t}/agents/${a}`,r);return{createStream(i,n){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,stream_greeting:i.stream_greeting},n)},startConnection(i,n,o,c){return s.post(`/streams/${i}/sdp`,{session_id:o,answer:n},c)},addIceCandidate(i,n,o,c){return s.post(`/streams/${i}/ice`,{session_id:o,...n},c)},sendStreamRequest(i,n,o,c){return s.post(`/streams/${i}`,{session_id:n,...o},c)},close(i,n,o){return s.delete(`/streams/${i}`,{session_id:n},o)}}}function qe(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,jitterBufferDelay:(t.jitterBufferDelay-e.jitterBufferDelay)/r,framesPerSecond:t.framesPerSecond,freezeCount:t.freezeCount-e.freezeCount,freezeDuration:t.freezeDuration-e.freezeDuration,lowFpsCount:a}}function Je(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 Xe(e){let t="";for(const a of e.values())if(a&&a.type==="codec"&&a.mimeType.startsWith("video")&&(t=a.mimeType.split("/")[1]),a&&a.type==="inbound-rtp"&&a.kind==="video")return{codec:t,timestamp:a.timestamp,bytesReceived:a.bytesReceived,packetsReceived:a.packetsReceived,packetsLost:a.packetsLost,framesDropped:a.framesDropped,framesDecoded:a.framesDecoded,jitter:a.jitter,jitterBufferDelay:a.jitterBufferDelay,frameWidth:a.frameWidth,frameHeight:a.frameHeight,framesPerSecond:a.framesPerSecond,freezeCount:a.freezeCount,freezeDuration:a.totalFreezesDuration};return{}}function Ye(e,t,a){const r=e.map((n,o)=>o===0?a?{timestamp:n.timestamp,duration:0,bytesReceived:n.bytesReceived-a.bytesReceived,bitrate:(n.bytesReceived-a.bytesReceived)*8/(t/1e3),packetsReceived:n.packetsReceived-a.packetsReceived,packetsLost:n.packetsLost-a.packetsLost,framesDropped:n.framesDropped-a.framesDropped,framesDecoded:n.framesDecoded-a.framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay-a.jitterBufferDelay,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount-a.freezeCount,freezeDuration:n.freezeDuration-a.freezeDuration}:{timestamp:n.timestamp,duration:0,bytesReceived:n.bytesReceived,bitrate:n.bytesReceived*8/(t/1e3),packetsReceived:n.packetsReceived,packetsLost:n.packetsLost,framesDropped:n.framesDropped,framesDecoded:n.framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount,freezeDuration:n.freezeDuration}:{timestamp:n.timestamp,duration:t*o/1e3,bytesReceived:n.bytesReceived-e[o-1].bytesReceived,bitrate:(n.bytesReceived-e[o-1].bytesReceived)*8/(t/1e3),packetsReceived:n.packetsReceived-e[o-1].packetsReceived,packetsLost:n.packetsLost-e[o-1].packetsLost,framesDropped:n.framesDropped-e[o-1].framesDropped,framesDecoded:n.framesDecoded-e[o-1].framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay-e[o-1].jitterBufferDelay,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount-e[o-1].freezeCount,freezeDuration:n.freezeDuration-e[o-1].freezeDuration}),s=Je(r),i=s.reduce((n,o)=>n+(o.causes.includes("low fps")?1:0),0);return{webRTCStats:{anomalies:s,aggregateReport:qe(e[0],e[e.length-1],i)},codec:e[0].codec,resolution:`${e[0].frameWidth}x${e[0].frameHeight}`}}const ee=200,Qe=Math.max(Math.ceil(400/ee),1);function Ze(){let e=0;return t=>{for(const a of t.values())if(a&&a.type==="inbound-rtp"&&a.kind==="video"){const r=a.bytesReceived,s=r-e>0;return e=r,s}return!1}}function Ge(e,t,a,r,s=!1,i=!1){const n=s?1:0;let o=[],c,u=0,d=!1,g=0;const D=Ze();return setInterval(async()=>{const w=await e.getStats(),v=D(w),k=Xe(w);if(v)u=0,d||(r==null||r(R.Start),i&&g>=n&&!t()&&a(),c=o[o.length-1],o=[],g++,d=!0),o.push(k);else if(d&&(u++,u>=Qe)){const M=Ye(o,ee,c);r==null||r(R.Stop,M),!i&&!t()&&a(),d=!1}},ee)}let ke=!1;const L=(e,t)=>ke&&console.log(e,t),Oe=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function Ce(e){switch(e){case"connected":return S.Connected;case"checking":return S.Connecting;case"failed":return S.Fail;case"new":return S.New;case"closed":return S.Closed;case"disconnected":return S.Disconnected;case"completed":return S.Completed;default:return S.New}}function Re(e,t,a,r){e===R.Start&&t===R.Start?a==null||a(R.Start):e===R.Stop&&t===R.Stop&&(a==null||a(R.Stop,r))}async function et(e,t,{debug:a=!1,callbacks:r,auth:s,baseURL:i=x,warmup:n}){ke=a;let o=!1,c=!1,u=R.Stop,d=R.Stop;const{startConnection:g,sendStreamRequest:D,close:w,createStream:v,addIceCandidate:k}=t.videoType===Y.Clip?Ve(s,i,e,r.onError):xe(s,i,e,r.onError),{id:M,offer:N,ice_servers:I,session_id:l}=await v(t),m=new Oe({iceServers:I}),C=m.createDataChannel("JanusDataChannel");if(!l)throw new Error("Could not create session_id");const A=()=>o,$=()=>{var f;o=!0,c&&((f=r.onConnectionStateChange)==null||f.call(r,S.Connected))},E=Ge(m,A,$,(f,p)=>Re(d=f,u,r.onVideoStateChange,p),n,!!t.stream_greeting);m.onicecandidate=f=>{var p;L("peerConnection.onicecandidate",f);try{f.candidate&&f.candidate.sdpMid&&f.candidate.sdpMLineIndex!==null?k(M,{candidate:f.candidate.candidate,sdpMid:f.candidate.sdpMid,sdpMLineIndex:f.candidate.sdpMLineIndex},l):k(M,{candidate:null},l)}catch(y){(p=r.onError)==null||p.call(r,y,{streamId:M})}},C.onopen=()=>{c=!0,(!t.stream_warmup&&!t.stream_greeting||o)&&$()},C.onmessage=f=>{f.data==="stream/started"?u=R.Start:f.data==="stream/done"&&(u=R.Stop),Re(d,u,r.onVideoStateChange)},m.oniceconnectionstatechange=()=>{var p;L("peerConnection.oniceconnectionstatechange => "+m.iceConnectionState);const f=Ce(m.iceConnectionState);f!==S.Connected&&((p=r.onConnectionStateChange)==null||p.call(r,f))},m.ontrack=f=>{var p;L("peerConnection.ontrack",f),(p=r.onSrcObjectReady)==null||p.call(r,f.streams[0])},await m.setRemoteDescription(N),L("set remote description OK");const j=await m.createAnswer();return L("create answer OK"),await m.setLocalDescription(j),L("set local description OK"),await g(M,j,l),L("start connection OK"),{speak(f){return D(M,l,f)},async disconnect(){var f,p;if(M){const y=Ce(m.iceConnectionState);if(m){if(y===S.New){(f=r.onVideoStateChange)==null||f.call(r,R.Stop),clearInterval(E);return}m.close(),m.oniceconnectionstatechange=null,m.onnegotiationneeded=null,m.onicecandidate=null,m.ontrack=null}try{y===S.Connected&&await w(M,l).catch(b=>{})}catch(b){L("Error on close stream connection",b)}(p=r.onVideoStateChange)==null||p.call(r,R.Stop),clearInterval(E)}},sessionId:l,streamId:M}}function tt(e,t,a){var s;const{streamOptions:r}=t??{};return{videoType:le(e.presenter.type),output_resolution:r==null?void 0:r.outputResolution,session_timeout:r==null?void 0:r.sessionTimeout,stream_warmup:r==null?void 0:r.streamWarmup,compatibility_mode:r==null?void 0:r.compatibilityMode,stream_greeting:G(e.presenter)!=="clip"&&((s=t==null?void 0:t.streamOptions)!=null&&s.streamGreeting)?a:void 0}}function nt(e,t,a,r){H.get()>0&&(e===R.Start?r.linkTrack("agent-video",{event:"start",latency:H.get(!0)},"start",[V.StreamVideoCreated]):e===R.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,...a},"done",[V.StreamVideoDone]))}function rt(e,t,a,r){return H.reset(),new Promise(async(s,i)=>{var n;try{const o=await et(e.id,tt(e,t,r),{...t,analytics:a,warmup:(n=t.streamOptions)==null?void 0:n.streamWarmup,callbacks:{...t.callbacks,onConnectionStateChange:c=>{var u,d;(d=(u=t.callbacks).onConnectionStateChange)==null||d.call(u,c),c===S.Connected&&s(o)},onVideoStateChange:(c,u)=>{var d,g;(g=(d=t.callbacks).onVideoStateChange)==null||g.call(d,c),nt(c,e,u,a)}}})}catch(o){i(o)}})}async function at(e,t,a,r,s,i){var u,d,g,D;const{chat:n,chatMode:o}=await ye(e,a,r,t.mode,t.persistentChat,s);if(o&&o!==t.mode&&(t.mode=o,(d=(u=t.callbacks).onModeChange)==null||d.call(u,o),o===P.TextOnly))return(D=(g=t.callbacks).onError)==null||D.call(g,new te(o)),{chat:n};const c=await rt(e,t,r,i);return{chat:n,streamingManager:c}}async function it(e,t){var M,N,I;let a=!0;const r=t.mixpanelKey||be,s=t.wsURL||Ee,i=t.baseURL||x,n={messages:[],chatMode:t.mode||P.Functional},o=we(t.auth,i,t.callbacks.onError),c=await o.getById(e),u=Ne(c),d=ze({token:r,agent:c,isEnabled:t.enableAnalitics,distinctId:t.distinctId}),{onMessage:g,clearQueue:D}=Ue(d,n,t,c,()=>{var l;return(l=n.socketManager)==null?void 0:l.disconnect()});n.messages=ve(u,t.initialMessages),(N=(M=t.callbacks).onNewMessage)==null||N.call(M,[...n.messages],"answer"),d.track("agent-sdk",{event:"loaded",...Ae(c)});async function w(l){var j,f,p,y,b,T,K;(f=(j=t.callbacks).onConnectionStateChange)==null||f.call(j,S.Connecting),H.reset(),l&&!a&&(delete n.chat,n.messages=ve(u),(y=(p=t.callbacks).onNewMessage)==null||y.call(p,[...n.messages],"answer"));const m=t.mode===P.DirectPlayback?Promise.resolve(void 0):We(t.auth,s,{onMessage:g,onError:t.callbacks.onError}),C=Q(()=>at(c,t,o,d,n.chat,l?u:void 0),{limit:3,timeout:Me,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:B=>(B==null?void 0:B.message)!=="Could not connect"&&B.status!==429,delayMs:1e3}).catch(B=>{var U,q;throw k(P.Maintenance),(q=(U=t.callbacks).onConnectionStateChange)==null||q.call(U,S.Fail),B}),[A,{streamingManager:$,chat:E}]=await Promise.all([m,C]);E&&E.id!==((b=n.chat)==null?void 0:b.id)&&((K=(T=t.callbacks).onNewChat)==null||K.call(T,E.id)),n.streamingManager=$,n.socketManager=A,n.chat=E,a=!1,k((E==null?void 0:E.chat_mode)??t.mode??P.Functional)}async function v(){var l,m,C,A;(l=n.socketManager)==null||l.disconnect(),await((m=n.streamingManager)==null?void 0:m.disconnect()),delete n.streamingManager,delete n.socketManager,(A=(C=t.callbacks).onConnectionStateChange)==null||A.call(C,S.Disconnected)}async function k(l){var m,C;l!==n.chatMode&&(d.track("agent-mode-change",{mode:l}),n.chatMode=l,n.chatMode!==P.Functional&&await v(),(C=(m=t.callbacks).onModeChange)==null||C.call(m,l))}return{agent:c,starterMessages:((I=c.knowledge)==null?void 0:I.starter_message)||[],getSTTToken:()=>o.getSTTToken(c.id),changeMode:k,enrichAnalytics:d.enrich,async connect(){var l;await w(!0),d.track("agent-chat",{event:"connect",chatId:(l=n.chat)==null?void 0:l.id,agentId:c.id,mode:n.chatMode})},async reconnect(){var l;await v(),await w(!1),d.track("agent-chat",{event:"reconnect",chatId:(l=n.chat)==null?void 0:l.id,agentId:c.id,mode:n.chatMode})},async disconnect(){var l;await v(),d.track("agent-chat",{event:"disconnect",chatId:(l=n.chat)==null?void 0:l.id,agentId:c.id,mode:n.chatMode})},async chat(l){var $,E,j,f,p;const m=()=>{if(t.mode===P.DirectPlayback)throw new F("Direct playback is enabled, chat is disabled");if(l.length>=800)throw new F("Message cannot be more than 800 characters");if(l.length===0)throw new F("Message cannot be empty");if(n.chatMode===P.Maintenance)throw new F("Chat is in maintenance mode");if(![P.TextOnly,P.Playground].includes(n.chatMode)){if(!n.streamingManager)throw new F("Streaming manager is not initialized");if(!n.chat)throw new F("Chat is not initialized")}},C=async()=>{var y,b;if(!n.chat){const T=await ye(c,o,d,n.chatMode,t.persistentChat);if(!T.chat)throw new z(n.chatMode,!!t.persistentChat);n.chat=T.chat,(b=(y=t.callbacks).onNewChat)==null||b.call(y,n.chat.id)}return n.chat.id},A=async(y,b)=>Q(()=>{var T,K;return o.chat(c.id,b,{chatMode:n.chatMode,streamId:(T=n.streamingManager)==null?void 0:T.streamId,sessionId:(K=n.streamingManager)==null?void 0:K.sessionId,messages:y.map(({matches:B,...U})=>U)},{...pe(n.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:T=>{var U,q,Se,De;const K=(U=T==null?void 0:T.message)==null?void 0:U.includes("missing or invalid session_id");return!((q=T==null?void 0:T.message)==null?void 0:q.includes("Stream Error"))&&!K?((De=(Se=t.callbacks).onError)==null||De.call(Se,T),!1):!0},onRetry:async()=>{await v(),await w(!1)}});try{D(),m(),n.messages.push({id:X(),role:"user",content:l,created_at:new Date(H.update()).toISOString()}),(E=($=t.callbacks).onNewMessage)==null||E.call($,[...n.messages],"user");const y=await C(),b=await A([...n.messages],y);return n.messages.push({id:X(),role:"assistant",content:b.result||"",created_at:new Date().toISOString(),context:b.context,matches:b.matches}),d.track("agent-message-send",{event:"success",mode:n.chatMode,messages:n.messages.length+1}),b.result&&((f=(j=t.callbacks).onNewMessage)==null||f.call(j,[...n.messages],"answer"),d.track("agent-message-received",{latency:H.get(!0),mode:n.chatMode,messages:n.messages.length})),b}catch(y){throw((p=n.messages[n.messages.length-1])==null?void 0:p.role)==="assistant"&&n.messages.pop(),d.track("agent-message-send",{event:"error",mode:n.chatMode,messages:n.messages.length}),y}},rate(l,m,C){var E,j,f,p;const A=n.messages.find(y=>y.id===l);if(n.chat){if(!A)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const $=((E=A.matches)==null?void 0:E.map(y=>[y.document_id,y.id]))??[];return d.track("agent-rate",{event:C?"update":"create",thumb:m===1?"up":"down",knowledge_id:((j=c.knowledge)==null?void 0:j.id)??"",mode:n.chatMode,matches:$,score:m}),C?o.updateRating(c.id,n.chat.id,C,{knowledge_id:((f=c.knowledge)==null?void 0:f.id)??"",message_id:l,matches:$,score:m}):o.createRating(c.id,n.chat.id,{knowledge_id:((p=c.knowledge)==null?void 0:p.id)??"",message_id:l,matches:$,score:m})},deleteRate(l){var m;if(!n.chat)throw new Error("Chat is not initialized");return d.track("agent-rate-delete",{type:"text",chat_id:(m=n.chat)==null?void 0:m.id,id:l,mode:n.chatMode}),o.deleteRating(c.id,n.chat.id,l)},speak(l){if(!n.streamingManager)throw new Error("Please connect to the agent first");function m(){if(typeof l=="string"){if(!c.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:c.presenter.voice,input:l,ssml:!1}}if(l.type==="text"&&!l.provider){if(!c.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:c.presenter.voice,input:l.input,ssml:l.ssml}}return l}const C=m();return d.track("agent-speak",C),H.update(),n.streamingManager.speak({script:C})}}}function st(e,t,a){const{getById:r}=we(t,a||x);return r(e)}h.AgentStatus=ie,h.ChatCreationFailed=z,h.ChatMode=P,h.ChatModeDowngraded=te,h.ChatProgress=W,h.ConnectionState=S,h.DocumentType=de,h.KnowledgeType=ce,h.PlanGroup=ae,h.Providers=me,h.RateState=se,h.StreamEvents=V,h.StreamingState=R,h.Subject=oe,h.UserPlan=re,h.ValidationError=F,h.VideoType=Y,h.VoiceAccess=ue,h.WsError=ne,h.createAgentManager=it,h.getAgent=st,h.mapVideoType=le,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(h,_){typeof exports=="object"&&typeof module<"u"?_(exports):typeof define=="function"&&define.amd?define(["exports"],_):(h=typeof globalThis<"u"?globalThis:h||self,_(h.index={}))})(this,function(h){"use strict";var ot=Object.defineProperty;var ct=(h,_,z)=>_ in h?ot(h,_,{enumerable:!0,configurable:!0,writable:!0,value:z}):h[_]=z;var J=(h,_,z)=>(ct(h,typeof _!="symbol"?_+"":_,z),z);class _ extends Error{constructor({kind:a,description:r,error:s}){super(JSON.stringify({kind:a,description:r}));J(this,"kind");J(this,"description");J(this,"error");this.kind=a,this.description=r,this.error=s}}class z extends _{constructor(t,a){super({kind:"ChatCreationFailed",description:`Failed to create ${a?"persistent":""} chat, mode: ${t}`})}}class te extends _{constructor(t){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${t}`})}}class B extends _{constructor(a,r){super({kind:"ValidationError",description:a});J(this,"key");this.key=r}}class ne extends _{constructor(t){super({kind:"WSError",description:t})}}var re=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(re||{}),ae=(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))(ae||{}),ie=(e=>(e.Created="created",e.Started="started",e.Done="done",e.Error="error",e.Rejected="rejected",e.Ready="ready",e))(ie||{}),se=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(se||{}),P=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e))(P||{}),W=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(W||{}),oe=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(oe||{}),ce=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(ce||{}),de=(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))(de||{}),Y=(e=>(e.Clip="clip",e.Talk="talk",e))(Y||{});const le=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var R=(e=>(e.Start="START",e.Stop="STOP",e))(R||{}),V=(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.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(V||{}),S=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(S||{}),me=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(me||{}),ue=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(ue||{});const Me=45*1e3,_e="X-Playground-Chat",x="https://api.d-id.com",Ee="wss://notifications.d-id.com",be="79f81a83a67430be2bc0fd61042b8faa",fe=e=>new Promise(t=>setTimeout(t,e)),X=()=>Math.random().toString(16).slice(2);function Te(e,t){let a;return{promise:new Promise((s,i)=>{a=setTimeout(()=>i(new Error(t)),e)}),clear:()=>clearTimeout(a)}}async function Q(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:n}=Te(a.timeout,a.timeoutErrorMessage),o=e().finally(n);return await Promise.race([o,i])}catch(i){if(r=i,!a.shouldRetryFn(i)||s>=a.limit)throw i;await fe(a.delayMs),a.onRetry(i)}throw r}function ge(){let e=window.localStorage.getItem("did_external_key_id");return e||(e=Math.random().toString(16).slice(2),window.localStorage.setItem("did_external_key_id",e)),e}let Pe=X();function he(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}.${ge()}_${Pe}`;throw new Error(`Unknown auth type: ${e}`)}const Ie=e=>Q(e,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:t=>t.status===429});function Z(e,t=x,a){const r=async(s,i)=>{const{skipErrorHandler:n,...o}=i||{},c=await Ie(()=>fetch(t+(s!=null&&s.startsWith("/")?s:`/${s}`),{...o,headers:{...o.headers,Authorization:he(e),"Content-Type":"application/json"}}));if(!c.ok){let u=await c.text().catch(()=>`Failed to fetch with status ${c.status}`);const d=new Error(u);throw a&&!n&&a(d,{url:s,options:o,headers:c.headers}),d}return c.json()};return{get(s,i){return r(s,{...i,method:"GET"})},post(s,i,n){return r(s,{...n,body:JSON.stringify(i),method:"POST"})},delete(s,i,n){return r(s,{...n,body:JSON.stringify(i),method:"DELETE"})},patch(s,i,n){return r(s,{...n,body:JSON.stringify(i),method:"PATCH"})}}}function we(e,t=x,a){const r=Z(e,`${t}/agents`,a);return{create(s,i){return r.post("/",s,i)},getAgents(s,i){return r.get(`/${s?`?tag=${s}`:""}`,i).then(n=>n??[])},getById(s,i){return r.get(`/${s}`,i)},delete(s,i){return r.delete(`/${s}`,void 0,i)},update(s,i,n){return r.patch(`/${s}`,i,n)},newChat(s,i,n){return r.post(`/${s}/chat`,i,n)},chat(s,i,n,o){return r.post(`/${s}/chat/${i}`,n,o)},createRating(s,i,n,o){return r.post(`/${s}/chat/${i}/ratings`,n,o)},updateRating(s,i,n,o,c){return r.patch(`/${s}/chat/${i}/ratings/${n}`,o,c)},deleteRating(s,i,n,o){return r.delete(`/${s}/chat/${i}/ratings/${n}`,o)},getSTTToken(s,i){return r.get(`/${s}/stt-token`,i)}}}const G=e=>e.type==="clip"&&e.presenter_id.startsWith("v2_")?"clip_v2":e.type;function Ae(e){var s,i,n,o;const t=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",a=()=>{const c=navigator.platform;return c.toLowerCase().includes("win")?"Windows":c.toLowerCase().includes("mac")?"Mac OS X":c.toLowerCase().includes("linux")?"Linux":"Unknown"},r=e.presenter;return{$os:`${a()}`,isMobile:`${t()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:G(r),agentVoice:{voiceId:(i=(s=e.presenter)==null?void 0:s.voice)==null?void 0:i.voice_id,provider:(o=(n=e.presenter)==null?void 0:n.voice)==null?void 0:o.type}}}function $e(e,t,a){var c,u,d;const{event:r,...s}=e,{template:i}=(t==null?void 0:t.llm)||{},{language:n}=((c=t==null?void 0:t.presenter)==null?void 0:c.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:n}},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 O={};const je="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function ze(e){var i,n,o,c,u,d;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||ge(),agentId:e.agent.id,agentType:G(a),owner_id:e.agent.owner_id??"",promptVersion:(n=e.agent.llm)==null?void 0:n.prompt_version,behavior:{role:r==null?void 0:r.role,personality:r==null?void 0:r.personality,instructions:(o=e.agent.llm)==null?void 0:o.instructions},temperature:(c=e.agent.llm)==null?void 0:c.temperature,knowledgeSource:r==null?void 0:r.knowledge_source,starterQuestionsCount:(d=(u=e.agent.knowledge)==null?void 0:u.starter_message)==null?void 0:d.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:()=>Math.random().toString(16).slice(2),enrich(g){const D={};if(g&&typeof g!="object")throw new Error("properties must be a flat json object");for(let w in g)(typeof g[w]=="string"||typeof g[w]=="number")&&(D[w]=g[w]);this.additionalProperties={...this.additionalProperties,...D}},async track(g,D){if(!this.isEnabled)return Promise.resolve();const{audioPath:w,...v}=D||{},k={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:g,properties:{...this.additionalProperties,...v,...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(je,k).then(M=>M.json())}catch(M){return console.error(M)}},linkTrack(g,D,w,v){O[g]||(O[g]={events:{},resolvedDependencies:[]}),v.includes(w)||v.push(w);const k=O[g];if(k.events[w]={props:D},k.resolvedDependencies.push(w),v.every(N=>k.resolvedDependencies.includes(N))){const N=v.reduce((A,l)=>k.events[l]?{...A,...k.events[l].props}:A,{});this.track(g,N),k.resolvedDependencies=k.resolvedDependencies.filter(A=>!v.includes(A)),v.forEach(A=>{delete k.events[A]})}}}}function Le(){let e=0;return{reset:()=>e=0,update:()=>e=Date.now(),get:(t=!1)=>t?Date.now()-e:e}}const H=Le();function pe(e){return e===P.Playground?{headers:{[_e]:"true"}}:{}}async function ye(e,t,a,r,s=!1,i){try{return!i&&r!==P.DirectPlayback&&(i=await t.newChat(e.id,{persist:s},pe(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(n){try{const o=JSON.parse(n.message);if((o==null?void 0:o.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(o){console.error("Error parsing the error message:",o)}throw new Error("Cannot create new chat")}}function Ne(e){var a;const t=((a=e.greetings)==null?void 0:a.filter(r=>r.length>0))??[];return t.length>0?t[Math.floor(Math.random()*t.length)]:`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`}function ve(e,t){return t&&t.length>0?t:[{content:e,id:X(),role:"assistant",created_at:new Date().toISOString()}]}function Fe(e){return new Promise((t,a)=>{const{callbacks:r,host:s,auth:i}=e,{onMessage:n=null,onOpen:o=null,onClose:c=null,onError:u=null}=r||{},d=new WebSocket(`${s}?authorization=${he(i)}`);d.onmessage=n,d.onclose=c,d.onerror=g=>{console.error(g),u==null||u("Websocket failed to connect",g),a(g)},d.onopen=g=>{o==null||o(g),t(d)}})}async function Be(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 Fe(e)}catch(s){if(r===t)throw s;await fe(r*500)}return a}async function We(e,t,a){const r=a!=null&&a.onMessage?[a.onMessage]:[],s=await Be({auth:e,host:t,callbacks:{onError:i=>{var n;return(n=a.onError)==null?void 0:n.call(a,new ne(i))},onMessage(i){const n=JSON.parse(i.data);r.forEach(o=>o(n.event,n))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:i=>r.push(i)}}function He(e){if(e.answer!==void 0)return e.answer;let t=0,a="";for(;t in e;)a+=e[t++];return a}function Ke(e,t,a,r,s){const i=r.messages[r.messages.length-1];if(!(e===W.Partial||e===W.Answer)||(i==null?void 0:i.role)!=="assistant")return;const{content:n,sequence:o}=t;e===W.Partial?a[o]=n:a.answer=n;const c=He(a);(i.content!==c||e===W.Answer)&&(i.content=c,s==null||s([...r.messages],e))}function Ue(e,t,a,r,s){let i={};return{clearQueue:()=>i={},onMessage:(n,o)=>{var c,u;if("content"in o)Ke(n,o,i,t,a.callbacks.onNewMessage),n===W.Answer&&e.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const d=V,g=[d.StreamVideoDone,d.StreamVideoError,d.StreamVideoRejected],D=[d.StreamFailed,d.StreamVideoError,d.StreamVideoRejected],w=$e(o,r,{mode:t.chatMode});if(n=n,n===d.StreamVideoCreated)e.linkTrack("agent-video",w,d.StreamVideoCreated,["start"]);else if(g.includes(n)){const v=n.split("/")[1];D.includes(n)?e.track("agent-video",{...w,event:v}):e.linkTrack("agent-video",{...w,event:v},n,["done"])}D.includes(n)&&((u=(c=a.callbacks).onError)==null||u.call(c,new Error(`Stream failed with event ${n}`),{data:o})),o.event===d.StreamDone&&s()}}}}function Ve(e,t,a,r){const s=Z(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,stream_greeting:i.stream_greeting})},startConnection(i,n,o){return s.post(`/streams/${i}/sdp`,{session_id:o,answer:n})},addIceCandidate(i,n,o){return s.post(`/streams/${i}/ice`,{session_id:o,...n})},sendStreamRequest(i,n,o){return s.post(`/streams/${i}`,{session_id:n,...o})},close(i,n){return s.delete(`/streams/${i}`,{session_id:n})}}}function xe(e,t,a,r){const s=Z(e,`${t}/agents/${a}`,r);return{createStream(i,n){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,stream_greeting:i.stream_greeting},n)},startConnection(i,n,o,c){return s.post(`/streams/${i}/sdp`,{session_id:o,answer:n},c)},addIceCandidate(i,n,o,c){return s.post(`/streams/${i}/ice`,{session_id:o,...n},c)},sendStreamRequest(i,n,o,c){return s.post(`/streams/${i}`,{session_id:n,...o},c)},close(i,n,o){return s.delete(`/streams/${i}`,{session_id:n},o)}}}function qe(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,jitterBufferDelay:(t.jitterBufferDelay-e.jitterBufferDelay)/r,framesPerSecond:t.framesPerSecond,freezeCount:t.freezeCount-e.freezeCount,freezeDuration:t.freezeDuration-e.freezeDuration,lowFpsCount:a}}function Je(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 Xe(e){let t="";for(const a of e.values())if(a&&a.type==="codec"&&a.mimeType.startsWith("video")&&(t=a.mimeType.split("/")[1]),a&&a.type==="inbound-rtp"&&a.kind==="video")return{codec:t,timestamp:a.timestamp,bytesReceived:a.bytesReceived,packetsReceived:a.packetsReceived,packetsLost:a.packetsLost,framesDropped:a.framesDropped,framesDecoded:a.framesDecoded,jitter:a.jitter,jitterBufferDelay:a.jitterBufferDelay,frameWidth:a.frameWidth,frameHeight:a.frameHeight,framesPerSecond:a.framesPerSecond,freezeCount:a.freezeCount,freezeDuration:a.totalFreezesDuration};return{}}function Ye(e,t,a){const r=e.map((n,o)=>o===0?a?{timestamp:n.timestamp,duration:0,bytesReceived:n.bytesReceived-a.bytesReceived,bitrate:(n.bytesReceived-a.bytesReceived)*8/(t/1e3),packetsReceived:n.packetsReceived-a.packetsReceived,packetsLost:n.packetsLost-a.packetsLost,framesDropped:n.framesDropped-a.framesDropped,framesDecoded:n.framesDecoded-a.framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay-a.jitterBufferDelay,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount-a.freezeCount,freezeDuration:n.freezeDuration-a.freezeDuration}:{timestamp:n.timestamp,duration:0,bytesReceived:n.bytesReceived,bitrate:n.bytesReceived*8/(t/1e3),packetsReceived:n.packetsReceived,packetsLost:n.packetsLost,framesDropped:n.framesDropped,framesDecoded:n.framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount,freezeDuration:n.freezeDuration}:{timestamp:n.timestamp,duration:t*o/1e3,bytesReceived:n.bytesReceived-e[o-1].bytesReceived,bitrate:(n.bytesReceived-e[o-1].bytesReceived)*8/(t/1e3),packetsReceived:n.packetsReceived-e[o-1].packetsReceived,packetsLost:n.packetsLost-e[o-1].packetsLost,framesDropped:n.framesDropped-e[o-1].framesDropped,framesDecoded:n.framesDecoded-e[o-1].framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay-e[o-1].jitterBufferDelay,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount-e[o-1].freezeCount,freezeDuration:n.freezeDuration-e[o-1].freezeDuration}),s=Je(r),i=s.reduce((n,o)=>n+(o.causes.includes("low fps")?1:0),0);return{webRTCStats:{anomalies:s,aggregateReport:qe(e[0],e[e.length-1],i)},codec:e[0].codec,resolution:`${e[0].frameWidth}x${e[0].frameHeight}`}}const ee=100,Qe=Math.max(Math.ceil(400/ee),1);function Ze(){let e=0;return t=>{for(const a of t.values())if(a&&a.type==="inbound-rtp"&&a.kind==="video"){const r=a.framesDecoded,s=r-e>0;return e=r,s}return!1}}function Ge(e,t,a,r,s=!1,i=!1){const n=s?1:0;let o=[],c,u=0,d=!1,g=0;const D=Ze();return setInterval(async()=>{const w=await e.getStats(),v=D(w),k=Xe(w);if(v)u=0,d||(r==null||r(R.Start),i&&g>=n&&!t()&&a(),c=o[o.length-1],o=[],g++,d=!0),o.push(k);else if(d&&(u++,u>=Qe)){const M=Ye(o,ee,c);r==null||r(R.Stop,M),!i&&!t()&&a(),d=!1}},ee)}let ke=!1;const L=(e,t)=>ke&&console.log(e,t),Oe=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function Ce(e){switch(e){case"connected":return S.Connected;case"checking":return S.Connecting;case"failed":return S.Fail;case"new":return S.New;case"closed":return S.Closed;case"disconnected":return S.Disconnected;case"completed":return S.Completed;default:return S.New}}function Re(e,t,a,r){e===R.Start&&t===R.Start?a==null||a(R.Start):e===R.Stop&&t===R.Stop&&(a==null||a(R.Stop,r))}async function et(e,t,{debug:a=!1,callbacks:r,auth:s,baseURL:i=x,warmup:n}){ke=a;let o=!1,c=!1,u=R.Stop,d=R.Stop;const{startConnection:g,sendStreamRequest:D,close:w,createStream:v,addIceCandidate:k}=t.videoType===Y.Clip?Ve(s,i,e,r.onError):xe(s,i,e,r.onError),{id:M,offer:N,ice_servers:A,session_id:l}=await v(t),m=new Oe({iceServers:A}),C=m.createDataChannel("JanusDataChannel");if(!l)throw new Error("Could not create session_id");const I=()=>o,$=()=>{var f;o=!0,c&&((f=r.onConnectionStateChange)==null||f.call(r,S.Connected))},E=Ge(m,I,$,(f,p)=>Re(d=f,u,r.onVideoStateChange,p),n,!!t.stream_greeting);m.onicecandidate=f=>{var p;L("peerConnection.onicecandidate",f);try{f.candidate&&f.candidate.sdpMid&&f.candidate.sdpMLineIndex!==null?k(M,{candidate:f.candidate.candidate,sdpMid:f.candidate.sdpMid,sdpMLineIndex:f.candidate.sdpMLineIndex},l):k(M,{candidate:null},l)}catch(y){(p=r.onError)==null||p.call(r,y,{streamId:M})}},C.onopen=()=>{c=!0,(!t.stream_warmup&&!t.stream_greeting||o)&&$()},C.onmessage=f=>{f.data==="stream/started"?u=R.Start:f.data==="stream/done"&&(u=R.Stop),Re(d,u,r.onVideoStateChange)},m.oniceconnectionstatechange=()=>{var p;L("peerConnection.oniceconnectionstatechange => "+m.iceConnectionState);const f=Ce(m.iceConnectionState);f!==S.Connected&&((p=r.onConnectionStateChange)==null||p.call(r,f))},m.ontrack=f=>{var p;L("peerConnection.ontrack",f),(p=r.onSrcObjectReady)==null||p.call(r,f.streams[0])},await m.setRemoteDescription(N),L("set remote description OK");const j=await m.createAnswer();return L("create answer OK"),await m.setLocalDescription(j),L("set local description OK"),await g(M,j,l),L("start connection OK"),{speak(f){return D(M,l,f)},async disconnect(){var f,p;if(M){const y=Ce(m.iceConnectionState);if(m){if(y===S.New){(f=r.onVideoStateChange)==null||f.call(r,R.Stop),clearInterval(E);return}m.close(),m.oniceconnectionstatechange=null,m.onnegotiationneeded=null,m.onicecandidate=null,m.ontrack=null}try{y===S.Connected&&await w(M,l).catch(b=>{})}catch(b){L("Error on close stream connection",b)}(p=r.onVideoStateChange)==null||p.call(r,R.Stop),clearInterval(E)}},sessionId:l,streamId:M}}function tt(e,t,a){var s;const{streamOptions:r}=t??{};return{videoType:le(e.presenter.type),output_resolution:r==null?void 0:r.outputResolution,session_timeout:r==null?void 0:r.sessionTimeout,stream_warmup:r==null?void 0:r.streamWarmup,compatibility_mode:r==null?void 0:r.compatibilityMode,stream_greeting:G(e.presenter)!=="clip"&&((s=t==null?void 0:t.streamOptions)!=null&&s.streamGreeting)?a:void 0}}function nt(e,t,a,r){H.get()>0&&(e===R.Start?r.linkTrack("agent-video",{event:"start",latency:H.get(!0)},"start",[V.StreamVideoCreated]):e===R.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,...a},"done",[V.StreamVideoDone]))}function rt(e,t,a,r){return H.reset(),new Promise(async(s,i)=>{var n;try{const o=await et(e.id,tt(e,t,r),{...t,analytics:a,warmup:(n=t.streamOptions)==null?void 0:n.streamWarmup,callbacks:{...t.callbacks,onConnectionStateChange:c=>{var u,d;(d=(u=t.callbacks).onConnectionStateChange)==null||d.call(u,c),c===S.Connected&&s(o)},onVideoStateChange:(c,u)=>{var d,g;(g=(d=t.callbacks).onVideoStateChange)==null||g.call(d,c),nt(c,e,u,a)}}})}catch(o){i(o)}})}async function at(e,t,a,r,s,i){var u,d,g,D;const{chat:n,chatMode:o}=await ye(e,a,r,t.mode,t.persistentChat,s);if(o&&o!==t.mode&&(t.mode=o,(d=(u=t.callbacks).onModeChange)==null||d.call(u,o),o===P.TextOnly))return(D=(g=t.callbacks).onError)==null||D.call(g,new te(o)),{chat:n};const c=await rt(e,t,r,i);return{chat:n,streamingManager:c}}async function it(e,t){var M,N,A;let a=!0;const r=t.mixpanelKey||be,s=t.wsURL||Ee,i=t.baseURL||x,n={messages:[],chatMode:t.mode||P.Functional},o=we(t.auth,i,t.callbacks.onError),c=await o.getById(e),u=Ne(c),d=ze({token:r,agent:c,isEnabled:t.enableAnalitics,distinctId:t.distinctId}),{onMessage:g,clearQueue:D}=Ue(d,n,t,c,()=>{var l;return(l=n.socketManager)==null?void 0:l.disconnect()});n.messages=ve(u,t.initialMessages),(N=(M=t.callbacks).onNewMessage)==null||N.call(M,[...n.messages],"answer"),d.track("agent-sdk",{event:"loaded",...Ae(c)});async function w(l){var j,f,p,y,b,T,K;(f=(j=t.callbacks).onConnectionStateChange)==null||f.call(j,S.Connecting),H.reset(),l&&!a&&(delete n.chat,n.messages=ve(u),(y=(p=t.callbacks).onNewMessage)==null||y.call(p,[...n.messages],"answer"));const m=t.mode===P.DirectPlayback?Promise.resolve(void 0):We(t.auth,s,{onMessage:g,onError:t.callbacks.onError}),C=Q(()=>at(c,t,o,d,n.chat,l?u:void 0),{limit:3,timeout:Me,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:F=>(F==null?void 0:F.message)!=="Could not connect"&&F.status!==429,delayMs:1e3}).catch(F=>{var U,q;throw k(P.Maintenance),(q=(U=t.callbacks).onConnectionStateChange)==null||q.call(U,S.Fail),F}),[I,{streamingManager:$,chat:E}]=await Promise.all([m,C]);E&&E.id!==((b=n.chat)==null?void 0:b.id)&&((K=(T=t.callbacks).onNewChat)==null||K.call(T,E.id)),n.streamingManager=$,n.socketManager=I,n.chat=E,a=!1,k((E==null?void 0:E.chat_mode)??t.mode??P.Functional)}async function v(){var l,m,C,I;(l=n.socketManager)==null||l.disconnect(),await((m=n.streamingManager)==null?void 0:m.disconnect()),delete n.streamingManager,delete n.socketManager,(I=(C=t.callbacks).onConnectionStateChange)==null||I.call(C,S.Disconnected)}async function k(l){var m,C;l!==n.chatMode&&(d.track("agent-mode-change",{mode:l}),n.chatMode=l,n.chatMode!==P.Functional&&await v(),(C=(m=t.callbacks).onModeChange)==null||C.call(m,l))}return{agent:c,starterMessages:((A=c.knowledge)==null?void 0:A.starter_message)||[],getSTTToken:()=>o.getSTTToken(c.id),changeMode:k,enrichAnalytics:d.enrich,async connect(){var l;await w(!0),d.track("agent-chat",{event:"connect",chatId:(l=n.chat)==null?void 0:l.id,agentId:c.id,mode:n.chatMode})},async reconnect(){var l;await v(),await w(!1),d.track("agent-chat",{event:"reconnect",chatId:(l=n.chat)==null?void 0:l.id,agentId:c.id,mode:n.chatMode})},async disconnect(){var l;await v(),d.track("agent-chat",{event:"disconnect",chatId:(l=n.chat)==null?void 0:l.id,agentId:c.id,mode:n.chatMode})},async chat(l){var $,E,j,f,p;const m=()=>{if(t.mode===P.DirectPlayback)throw new B("Direct playback is enabled, chat is disabled");if(l.length>=800)throw new B("Message cannot be more than 800 characters");if(l.length===0)throw new B("Message cannot be empty");if(n.chatMode===P.Maintenance)throw new B("Chat is in maintenance mode");if(![P.TextOnly,P.Playground].includes(n.chatMode)){if(!n.streamingManager)throw new B("Streaming manager is not initialized");if(!n.chat)throw new B("Chat is not initialized")}},C=async()=>{var y,b;if(!n.chat){const T=await ye(c,o,d,n.chatMode,t.persistentChat);if(!T.chat)throw new z(n.chatMode,!!t.persistentChat);n.chat=T.chat,(b=(y=t.callbacks).onNewChat)==null||b.call(y,n.chat.id)}return n.chat.id},I=async(y,b)=>Q(()=>{var T,K;return o.chat(c.id,b,{chatMode:n.chatMode,streamId:(T=n.streamingManager)==null?void 0:T.streamId,sessionId:(K=n.streamingManager)==null?void 0:K.sessionId,messages:y.map(({matches:F,...U})=>U)},{...pe(n.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:T=>{var U,q,Se,De;const K=(U=T==null?void 0:T.message)==null?void 0:U.includes("missing or invalid session_id");return!((q=T==null?void 0:T.message)==null?void 0:q.includes("Stream Error"))&&!K?((De=(Se=t.callbacks).onError)==null||De.call(Se,T),!1):!0},onRetry:async()=>{await v(),await w(!1)}});try{D(),m(),n.messages.push({id:X(),role:"user",content:l,created_at:new Date(H.update()).toISOString()}),(E=($=t.callbacks).onNewMessage)==null||E.call($,[...n.messages],"user");const y=await C(),b=await I([...n.messages],y);return n.messages.push({id:X(),role:"assistant",content:b.result||"",created_at:new Date().toISOString(),context:b.context,matches:b.matches}),d.track("agent-message-send",{event:"success",mode:n.chatMode,messages:n.messages.length+1}),b.result&&((f=(j=t.callbacks).onNewMessage)==null||f.call(j,[...n.messages],"answer"),d.track("agent-message-received",{latency:H.get(!0),mode:n.chatMode,messages:n.messages.length})),b}catch(y){throw((p=n.messages[n.messages.length-1])==null?void 0:p.role)==="assistant"&&n.messages.pop(),d.track("agent-message-send",{event:"error",mode:n.chatMode,messages:n.messages.length}),y}},rate(l,m,C){var E,j,f,p;const I=n.messages.find(y=>y.id===l);if(n.chat){if(!I)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const $=((E=I.matches)==null?void 0:E.map(y=>[y.document_id,y.id]))??[];return d.track("agent-rate",{event:C?"update":"create",thumb:m===1?"up":"down",knowledge_id:((j=c.knowledge)==null?void 0:j.id)??"",mode:n.chatMode,matches:$,score:m}),C?o.updateRating(c.id,n.chat.id,C,{knowledge_id:((f=c.knowledge)==null?void 0:f.id)??"",message_id:l,matches:$,score:m}):o.createRating(c.id,n.chat.id,{knowledge_id:((p=c.knowledge)==null?void 0:p.id)??"",message_id:l,matches:$,score:m})},deleteRate(l){var m;if(!n.chat)throw new Error("Chat is not initialized");return d.track("agent-rate-delete",{type:"text",chat_id:(m=n.chat)==null?void 0:m.id,id:l,mode:n.chatMode}),o.deleteRating(c.id,n.chat.id,l)},speak(l){var I;if(!n.streamingManager)throw new Error("Please connect to the agent first");function m(){if(typeof l=="string"){if(!c.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:c.presenter.voice,input:l,ssml:!1}}if(l.type==="text"&&!l.provider){if(!c.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:c.presenter.voice,input:l.input,ssml:l.ssml}}return l}const C=m();return d.track("agent-speak",C),H.update(),n.streamingManager.speak({script:C,metadata:{chat_id:(I=n.chat)==null?void 0:I.id,agent_id:c.id}})}}}function st(e,t,a){const{getById:r}=we(t,a||x);return r(e)}h.AgentStatus=ie,h.ChatCreationFailed=z,h.ChatMode=P,h.ChatModeDowngraded=te,h.ChatProgress=W,h.ConnectionState=S,h.DocumentType=de,h.KnowledgeType=ce,h.PlanGroup=ae,h.Providers=me,h.RateState=se,h.StreamEvents=V,h.StreamingState=R,h.Subject=oe,h.UserPlan=re,h.ValidationError=B,h.VideoType=Y,h.VoiceAccess=ue,h.WsError=ne,h.createAgentManager=it,h.getAgent=st,h.mapVideoType=le,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
|