@d-id/client-sdk 1.0.19-beta.130 → 1.0.19-beta.131
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 +56 -60
- package/dist/index.umd.cjs +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ const le = (e) => {
|
|
|
9
9
|
throw new Error(`Unknown video type: ${e}`);
|
|
10
10
|
}
|
|
11
11
|
};
|
|
12
|
-
var z = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(z || {}), V = /* @__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))(V || {}),
|
|
12
|
+
var z = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(z || {}), V = /* @__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))(V || {}), M = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Closed = "closed", e.Completed = "completed", e.Disconnected = "disconnected", e))(M || {}), ge = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(ge || {}), me = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(me || {});
|
|
13
13
|
const j = "https://api.d-id.com", ue = "wss://notifications.d-id.com", he = "79f81a83a67430be2bc0fd61042b8faa", U = () => Math.random().toString(16).slice(2);
|
|
14
14
|
function Z() {
|
|
15
15
|
let e = window.localStorage.getItem("did_external_key_id");
|
|
@@ -201,7 +201,7 @@ function _e(e, n, s, a) {
|
|
|
201
201
|
}
|
|
202
202
|
};
|
|
203
203
|
}
|
|
204
|
-
function
|
|
204
|
+
function Me(e, n, s, a) {
|
|
205
205
|
const t = H(e, `${n}/agents/${s}`, a);
|
|
206
206
|
return {
|
|
207
207
|
createStream(r, i) {
|
|
@@ -242,25 +242,25 @@ function Se(e, n, s, a) {
|
|
|
242
242
|
};
|
|
243
243
|
}
|
|
244
244
|
let ee = !1;
|
|
245
|
-
const O = (e, n) => ee && console.log(e, n),
|
|
245
|
+
const O = (e, n) => ee && console.log(e, n), Se = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
|
|
246
246
|
function J(e) {
|
|
247
247
|
switch (e) {
|
|
248
248
|
case "connected":
|
|
249
|
-
return
|
|
249
|
+
return M.Connected;
|
|
250
250
|
case "checking":
|
|
251
|
-
return
|
|
251
|
+
return M.Connecting;
|
|
252
252
|
case "failed":
|
|
253
|
-
return
|
|
253
|
+
return M.Fail;
|
|
254
254
|
case "new":
|
|
255
|
-
return
|
|
255
|
+
return M.New;
|
|
256
256
|
case "closed":
|
|
257
|
-
return
|
|
257
|
+
return M.Closed;
|
|
258
258
|
case "disconnected":
|
|
259
|
-
return
|
|
259
|
+
return M.Disconnected;
|
|
260
260
|
case "completed":
|
|
261
|
-
return
|
|
261
|
+
return M.Completed;
|
|
262
262
|
default:
|
|
263
|
-
return
|
|
263
|
+
return M.New;
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
266
|
function ke() {
|
|
@@ -299,12 +299,12 @@ async function Ee(e, n, {
|
|
|
299
299
|
close: g,
|
|
300
300
|
createStream: h,
|
|
301
301
|
addIceCandidate: m
|
|
302
|
-
} = n.videoType === Y.Clip ? _e(t, r, e, a.onError) :
|
|
302
|
+
} = n.videoType === Y.Clip ? _e(t, r, e, a.onError) : Me(t, r, e, a.onError), {
|
|
303
303
|
id: C,
|
|
304
304
|
offer: I,
|
|
305
305
|
ice_servers: y,
|
|
306
306
|
session_id: _
|
|
307
|
-
} = await h(n), w = new
|
|
307
|
+
} = await h(n), w = new Se({
|
|
308
308
|
iceServers: y
|
|
309
309
|
}), b = w.createDataChannel("JanusDataChannel");
|
|
310
310
|
if (!_)
|
|
@@ -312,7 +312,7 @@ async function Ee(e, n, {
|
|
|
312
312
|
let $ = !1;
|
|
313
313
|
const c = () => $, u = () => {
|
|
314
314
|
var l;
|
|
315
|
-
$ = !0, (l = a.onConnectionStateChange) == null || l.call(a,
|
|
315
|
+
$ = !0, (l = a.onConnectionStateChange) == null || l.call(a, M.Connected);
|
|
316
316
|
}, f = Re(w, a.onVideoStateChange, i, c, u);
|
|
317
317
|
w.onicecandidate = (l) => {
|
|
318
318
|
var p;
|
|
@@ -331,7 +331,7 @@ async function Ee(e, n, {
|
|
|
331
331
|
});
|
|
332
332
|
}
|
|
333
333
|
}, b.onmessage = (l) => {
|
|
334
|
-
if (
|
|
334
|
+
if (b.readyState === "open") {
|
|
335
335
|
const [p, k] = l.data.split(":");
|
|
336
336
|
p === V.StreamReady && !$ && u();
|
|
337
337
|
}
|
|
@@ -339,13 +339,13 @@ async function Ee(e, n, {
|
|
|
339
339
|
var p;
|
|
340
340
|
O("peerConnection.oniceconnectionstatechange => " + w.iceConnectionState);
|
|
341
341
|
const l = J(w.iceConnectionState);
|
|
342
|
-
l !==
|
|
342
|
+
l !== M.Connected && ((p = a.onConnectionStateChange) == null || p.call(a, l));
|
|
343
343
|
}, w.ontrack = (l) => {
|
|
344
344
|
var p;
|
|
345
345
|
O("peerConnection.ontrack", l), (p = a.onSrcObjectReady) == null || p.call(a, l.streams[0]);
|
|
346
346
|
}, await w.setRemoteDescription(I), O("set remote description OK");
|
|
347
|
-
const
|
|
348
|
-
return O("create answer OK"), await w.setLocalDescription(
|
|
347
|
+
const S = await w.createAnswer();
|
|
348
|
+
return O("create answer OK"), await w.setLocalDescription(S), O("set local description OK"), await o(C, S, _), O("start connection OK"), {
|
|
349
349
|
/**
|
|
350
350
|
* Method to send request to server to get clip or talk depend on you payload
|
|
351
351
|
* @param payload
|
|
@@ -361,14 +361,14 @@ async function Ee(e, n, {
|
|
|
361
361
|
if (C) {
|
|
362
362
|
const k = J(w.iceConnectionState);
|
|
363
363
|
if (w) {
|
|
364
|
-
if (k ===
|
|
364
|
+
if (k === M.New) {
|
|
365
365
|
(l = a.onVideoStateChange) == null || l.call(a, z.Stop), clearInterval(f);
|
|
366
366
|
return;
|
|
367
367
|
}
|
|
368
368
|
w.close(), w.oniceconnectionstatechange = null, w.onnegotiationneeded = null, w.onicecandidate = null, w.ontrack = null;
|
|
369
369
|
}
|
|
370
370
|
try {
|
|
371
|
-
k ===
|
|
371
|
+
k === M.Connected && await g(C, _).catch((v) => {
|
|
372
372
|
});
|
|
373
373
|
} catch (v) {
|
|
374
374
|
O("Error on close stream connection", v);
|
|
@@ -497,14 +497,10 @@ function Ae(e, n, s) {
|
|
|
497
497
|
};
|
|
498
498
|
}
|
|
499
499
|
let N = 0;
|
|
500
|
-
const
|
|
501
|
-
function
|
|
500
|
+
const Pe = 20 * 1e3;
|
|
501
|
+
function De(e, n, s, a) {
|
|
502
502
|
var t, r, i, o, d;
|
|
503
|
-
return
|
|
504
|
-
chat: n,
|
|
505
|
-
options: s,
|
|
506
|
-
greeting: a
|
|
507
|
-
}), {
|
|
503
|
+
return {
|
|
508
504
|
videoType: le(e.presenter.type),
|
|
509
505
|
output_resolution: (t = s == null ? void 0 : s.streamOptions) == null ? void 0 : t.outputResolution,
|
|
510
506
|
session_timeout: (r = s == null ? void 0 : s.streamOptions) == null ? void 0 : r.sessionTimeout,
|
|
@@ -549,7 +545,7 @@ function be(e, n, s, a, t, r) {
|
|
|
549
545
|
N = 0;
|
|
550
546
|
const d = setTimeout(() => {
|
|
551
547
|
h(new Error("Could not connect"));
|
|
552
|
-
},
|
|
548
|
+
}, Pe), g = (y) => {
|
|
553
549
|
clearTimeout(d), i(y);
|
|
554
550
|
}, h = (y) => {
|
|
555
551
|
clearTimeout(d), o(y);
|
|
@@ -558,7 +554,7 @@ function be(e, n, s, a, t, r) {
|
|
|
558
554
|
!t && n.mode !== E.DirectPlayback && (m = ne(e.id, s, a, n.mode, n.persistentChat).catch((y) => {
|
|
559
555
|
h(y);
|
|
560
556
|
}));
|
|
561
|
-
const C = await Ee(e.id,
|
|
557
|
+
const C = await Ee(e.id, De(e, t, n, r), {
|
|
562
558
|
...n,
|
|
563
559
|
analytics: a,
|
|
564
560
|
warmup: (I = n.streamOptions) == null ? void 0 : I.streamWarmup,
|
|
@@ -566,7 +562,7 @@ function be(e, n, s, a, t, r) {
|
|
|
566
562
|
...n.callbacks,
|
|
567
563
|
onConnectionStateChange: async (y) => {
|
|
568
564
|
var _, w, b, $;
|
|
569
|
-
y ===
|
|
565
|
+
y === M.Connected ? (m && (t = await m), C ? ((w = (_ = n.callbacks).onConnectionStateChange) == null || w.call(_, y), g({
|
|
570
566
|
chat: t,
|
|
571
567
|
streamingManager: C
|
|
572
568
|
})) : t && h(new Error("Something went wrong while initializing the manager"))) : ($ = (b = n.callbacks).onConnectionStateChange) == null || $.call(b, y);
|
|
@@ -641,7 +637,7 @@ async function Ne(e, n) {
|
|
|
641
637
|
});
|
|
642
638
|
const C = {
|
|
643
639
|
onMessage: (c, u) => {
|
|
644
|
-
var f,
|
|
640
|
+
var f, S;
|
|
645
641
|
if ("content" in u)
|
|
646
642
|
Oe(c, u, s, t, n.callbacks.onNewMessage), c === L.Answer && m.track("agent-message-received", {
|
|
647
643
|
messages: t.messages.length,
|
|
@@ -660,40 +656,40 @@ async function Ne(e, n) {
|
|
|
660
656
|
event: R
|
|
661
657
|
});
|
|
662
658
|
}
|
|
663
|
-
k.includes(c) && ((
|
|
659
|
+
k.includes(c) && ((S = (f = n.callbacks).onError) == null || S.call(f, new Error(`Stream failed with event ${c}`), {
|
|
664
660
|
data: u
|
|
665
661
|
})), u.event === l.StreamDone && y();
|
|
666
662
|
}
|
|
667
663
|
}
|
|
668
664
|
};
|
|
669
665
|
async function I(c) {
|
|
670
|
-
var R, A, K, x,
|
|
671
|
-
(A = (R = n.callbacks).onConnectionStateChange) == null || A.call(R,
|
|
666
|
+
var R, A, K, x, P, T, W;
|
|
667
|
+
(A = (R = n.callbacks).onConnectionStateChange) == null || A.call(R, M.Connecting), N = 0;
|
|
672
668
|
const u = 3;
|
|
673
669
|
c && !a && (delete t.chat, t.messages = X(h), (x = (K = n.callbacks).onNewMessage) == null || x.call(K, [...t.messages], "answer"));
|
|
674
670
|
const f = n.mode === E.DirectPlayback ? Promise.resolve(void 0) : ve(n.auth, i, C);
|
|
675
|
-
async function
|
|
671
|
+
async function S() {
|
|
676
672
|
for (let F = 1; F <= u; F++)
|
|
677
673
|
try {
|
|
678
674
|
return await be(g, n, d, m, t.chat, c ? h : void 0);
|
|
679
|
-
} catch (
|
|
680
|
-
if ((
|
|
681
|
-
throw
|
|
675
|
+
} catch (D) {
|
|
676
|
+
if ((D == null ? void 0 : D.message) !== "Could not connect")
|
|
677
|
+
throw D;
|
|
682
678
|
}
|
|
683
679
|
throw new Error("Could not connect");
|
|
684
680
|
}
|
|
685
|
-
const l =
|
|
686
|
-
var
|
|
687
|
-
throw _(E.Maintenance), (q = (
|
|
681
|
+
const l = S().catch((F) => {
|
|
682
|
+
var D, q;
|
|
683
|
+
throw _(E.Maintenance), (q = (D = n.callbacks).onConnectionStateChange) == null || q.call(D, M.Fail), F;
|
|
688
684
|
}), [p, {
|
|
689
685
|
streamingManager: k,
|
|
690
686
|
chat: v
|
|
691
687
|
}] = await Promise.all([f, l]);
|
|
692
|
-
v && v.id !== ((
|
|
688
|
+
v && v.id !== ((P = t.chat) == null ? void 0 : P.id) && ((W = (T = n.callbacks).onNewChat) == null || W.call(T, v.id)), t.streamingManager = k, t.socketManager = p, t.chat = v, a = !1, _((v == null ? void 0 : v.chat_mode) ?? n.mode ?? E.Functional);
|
|
693
689
|
}
|
|
694
690
|
async function y() {
|
|
695
|
-
var c, u, f,
|
|
696
|
-
(c = t.socketManager) == null || c.disconnect(), await ((u = t.streamingManager) == null ? void 0 : u.disconnect()), delete t.streamingManager, delete t.socketManager, (
|
|
691
|
+
var c, u, f, S;
|
|
692
|
+
(c = t.socketManager) == null || c.disconnect(), await ((u = t.streamingManager) == null ? void 0 : u.disconnect()), delete t.streamingManager, delete t.socketManager, (S = (f = n.callbacks).onConnectionStateChange) == null || S.call(f, M.Disconnected);
|
|
697
693
|
}
|
|
698
694
|
async function _(c) {
|
|
699
695
|
var u, f;
|
|
@@ -707,7 +703,7 @@ async function Ne(e, n) {
|
|
|
707
703
|
changeMode: _,
|
|
708
704
|
async connect() {
|
|
709
705
|
var c;
|
|
710
|
-
|
|
706
|
+
await I(!0), m.track("agent-chat", {
|
|
711
707
|
event: "connect",
|
|
712
708
|
chatId: (c = t.chat) == null ? void 0 : c.id,
|
|
713
709
|
agentId: g.id,
|
|
@@ -716,7 +712,7 @@ async function Ne(e, n) {
|
|
|
716
712
|
},
|
|
717
713
|
async reconnect() {
|
|
718
714
|
var c;
|
|
719
|
-
|
|
715
|
+
await y(), await I(!1), m.track("agent-chat", {
|
|
720
716
|
event: "reconnect",
|
|
721
717
|
chatId: (c = t.chat) == null ? void 0 : c.id,
|
|
722
718
|
agentId: g.id,
|
|
@@ -733,7 +729,7 @@ async function Ne(e, n) {
|
|
|
733
729
|
});
|
|
734
730
|
},
|
|
735
731
|
async chat(c) {
|
|
736
|
-
var f,
|
|
732
|
+
var f, S, l, p, k, v;
|
|
737
733
|
const u = U();
|
|
738
734
|
s = {};
|
|
739
735
|
try {
|
|
@@ -756,7 +752,7 @@ async function Ne(e, n) {
|
|
|
756
752
|
role: "user",
|
|
757
753
|
content: c,
|
|
758
754
|
created_at: new Date(N).toISOString()
|
|
759
|
-
}), (
|
|
755
|
+
}), (S = (f = n.callbacks).onNewMessage) == null || S.call(f, [...t.messages], "user"), t.chat || (t.chat = await ne(g.id, d, m, t.chatMode, n.persistentChat), (p = (l = n.callbacks).onNewChat) == null || p.call(l, t.chat.id));
|
|
760
756
|
const R = {
|
|
761
757
|
id: u,
|
|
762
758
|
role: "assistant",
|
|
@@ -765,22 +761,22 @@ async function Ne(e, n) {
|
|
|
765
761
|
matches: []
|
|
766
762
|
}, A = [...t.messages];
|
|
767
763
|
t.messages.push(R);
|
|
768
|
-
const K = (
|
|
764
|
+
const K = (P) => {
|
|
769
765
|
var T, W;
|
|
770
|
-
return d.chat(g.id,
|
|
766
|
+
return d.chat(g.id, P, {
|
|
771
767
|
sessionId: (T = t.streamingManager) == null ? void 0 : T.sessionId,
|
|
772
768
|
streamId: (W = t.streamingManager) == null ? void 0 : W.streamId,
|
|
773
769
|
chatMode: t.chatMode,
|
|
774
770
|
messages: A.map(({
|
|
775
771
|
matches: F,
|
|
776
|
-
...
|
|
777
|
-
}) =>
|
|
772
|
+
...D
|
|
773
|
+
}) => D)
|
|
778
774
|
}, te(t.chatMode));
|
|
779
|
-
}, x = await K(t.chat.id).catch(async (
|
|
775
|
+
}, x = await K(t.chat.id).catch(async (P) => {
|
|
780
776
|
var T;
|
|
781
|
-
if (!((T =
|
|
782
|
-
throw
|
|
783
|
-
return await y(),
|
|
777
|
+
if (!((T = P == null ? void 0 : P.message) != null && T.includes("missing or invalid session_id")))
|
|
778
|
+
throw P;
|
|
779
|
+
return await y(), await I(!1), K(t.chat.id);
|
|
784
780
|
});
|
|
785
781
|
return m.track("agent-message-send", {
|
|
786
782
|
event: "success",
|
|
@@ -801,13 +797,13 @@ async function Ne(e, n) {
|
|
|
801
797
|
},
|
|
802
798
|
rate(c, u, f) {
|
|
803
799
|
var p, k, v, R;
|
|
804
|
-
const
|
|
800
|
+
const S = t.messages.find((A) => A.id === c);
|
|
805
801
|
if (t.chat) {
|
|
806
|
-
if (!
|
|
802
|
+
if (!S)
|
|
807
803
|
throw new Error("Message not found");
|
|
808
804
|
} else
|
|
809
805
|
throw new Error("Chat is not initialized");
|
|
810
|
-
const l = ((p =
|
|
806
|
+
const l = ((p = S.matches) == null ? void 0 : p.map((A) => [A.document_id, A.id])) ?? [];
|
|
811
807
|
return m.track("agent-rate", {
|
|
812
808
|
event: f ? "update" : "create",
|
|
813
809
|
thumb: u === 1 ? "up" : "down",
|
|
@@ -881,7 +877,7 @@ export {
|
|
|
881
877
|
ie as AgentStatus,
|
|
882
878
|
E as ChatMode,
|
|
883
879
|
L as ChatProgress,
|
|
884
|
-
|
|
880
|
+
M as ConnectionState,
|
|
885
881
|
de as DocumentType,
|
|
886
882
|
ce as KnowledgeType,
|
|
887
883
|
ae as PlanGroup,
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(f,K){typeof exports=="object"&&typeof module<"u"?K(exports):typeof define=="function"&&define.amd?define(["exports"],K):(f=typeof globalThis<"u"?globalThis:f||self,K(f.index={}))})(this,function(f){"use strict";var K=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(K||{}),Y=(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))(Y||{}),Z=(e=>(e.Created="created",e.Started="started",e.Done="done",e.Error="error",e.Rejected="rejected",e.Ready="ready",e))(Z||{}),G=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(G||{}),I=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e))(I||{}),x=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(x||{}),Q=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(Q||{}),ee=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(ee||{}),te=(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))(te||{}),q=(e=>(e.Clip="clip",e.Talk="talk",e))(q||{});const ne=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var j=(e=>(e.Start="START",e.Stop="STOP",e))(j||{}),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||{}),re=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(re||{}),ae=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(ae||{});const W="https://api.d-id.com",he="wss://notifications.d-id.com",we="79f81a83a67430be2bc0fd61042b8faa",H=()=>Math.random().toString(16).slice(2);function ie(){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 fe=H();function se(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}.${ie()}_${fe}`;throw new Error(`Unknown auth type: ${e}`)}function J(e,n=W,s){const a=async(t,r)=>{const i=await fetch(n+(t!=null&&t.startsWith("/")?t:`/${t}`),{...r,headers:{...r==null?void 0:r.headers,Authorization:se(e),"Content-Type":"application/json"}});if(!i.ok){let o=await i.text().catch(()=>"Failed to fetch");throw s&&s(new Error(o),{url:t,options:r,headers:i.headers}),new Error(o)}return i.json()};return{get(t,r){return a(t,{...r,method:"GET"})},post(t,r,i){return a(t,{...i,body:JSON.stringify(r),method:"POST"})},delete(t,r,i){return a(t,{...i,body:JSON.stringify(r),method:"DELETE"})},patch(t,r,i){return a(t,{...i,body:JSON.stringify(r),method:"PATCH"})}}}function oe(e,n=W,s){const a=J(e,`${n}/agents`,s);return{create(t,r){return a.post("/",t,r)},getAgents(t,r){return a.get(`/${t?`?tag=${t}`:""}`,r).then(i=>i??[])},getById(t,r){return a.get(`/${t}`,r)},delete(t,r){return a.delete(`/${t}`,void 0,r)},update(t,r,i){return a.patch(`/${t}`,r,i)},newChat(t,r,i){return a.post(`/${t}/chat`,r,i)},chat(t,r,i,o){return a.post(`/${t}/chat/${r}`,i,o)},createRating(t,r,i,o){return a.post(`/${t}/chat/${r}/ratings`,i,o)},updateRating(t,r,i,o,d){return a.patch(`/${t}/chat/${r}/ratings/${i}`,o,d)},deleteRating(t,r,i,o){return a.delete(`/${t}/chat/${r}/ratings/${i}`,o)}}}const pe=e=>new Promise(n=>setTimeout(n,e));function ye(e){return new Promise((n,s)=>{const{callbacks:a,host:t,auth:r}=e,{onMessage:i=null,onOpen:o=null,onClose:d=null,onError:g=null}=a||{},h=new WebSocket(`${t}?authorization=${se(r)}`);h.onmessage=i,h.onclose=d,h.onerror=m=>{console.error(m),g==null||g("Websocket failed to connect",m),s(m)},h.onopen=m=>{o==null||o(m),n(h)}})}async function ve(e){const{retries:n=1}=e;let s=null;for(let a=0;(s==null?void 0:s.readyState)!==WebSocket.OPEN;a++)try{s=await ye(e)}catch(t){if(a===n)throw t;await pe(a*500)}return s}async function Ce(e,n,s){const a=s!=null&&s.onMessage?[s.onMessage]:[],t=await ve({auth:e,host:n,callbacks:{onError:s==null?void 0:s.onError,onMessage:r=>{const i=JSON.parse(r.data);a.forEach(o=>o(i.event,i))}}});return{socket:t,disconnect:()=>t.close(),subscribeToEvents:r=>a.push(r)}}const Se="X-Playground-Chat";function _e(e,n,s,a){const t=J(e,`${n}/agents/${s}`,a);return{createStream(r){return t.post("/streams",{output_resolution:r.output_resolution,compatibility_mode:r.compatibility_mode,stream_warmup:r.stream_warmup,session_timeout:r.session_timeout,stream_greeting:r.stream_greeting})},startConnection(r,i,o){return t.post(`/streams/${r}/sdp`,{session_id:o,answer:i})},addIceCandidate(r,i,o){return t.post(`/streams/${r}/ice`,{session_id:o,...i})},sendStreamRequest(r,i,o){return t.post(`/streams/${r}`,{session_id:i,...o})},close(r,i){return t.delete(`/streams/${r}`,{session_id:i})}}}function Me(e,n,s,a){const t=J(e,`${n}/agents/${s}`,a);return{createStream(r,i){return t.post("/streams",{driver_url:r.driver_url,face:r.face,config:r.config,output_resolution:r.output_resolution,compatibility_mode:r.compatibility_mode,stream_warmup:r.stream_warmup,session_timeout:r.session_timeout,stream_greeting:r.stream_greeting},i)},startConnection(r,i,o,d){return t.post(`/streams/${r}/sdp`,{session_id:o,answer:i},d)},addIceCandidate(r,i,o,d){return t.post(`/streams/${r}/ice`,{session_id:o,...i},d)},sendStreamRequest(r,i,o,d){return t.post(`/streams/${r}`,{session_id:i,...o},d)},close(r,i,o){return t.delete(`/streams/${r}`,{session_id:i},o)}}}let ce=!1;const T=(e,n)=>ce&&console.log(e,n),ke=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function de(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(){let e=0;return n=>{for(const s of n.values())if(s&&s.type==="inbound-rtp"&&s.kind==="video"){const a=s.bytesReceived,t=a-e>0;return e=a,t}return!1}}function Ee(e,n,s=!1,a,t){const i=Math.max(Math.ceil(10),1);let o=0,d=!1;const g=s?1:0;let h=0;const m=Re();return setInterval(async()=>{const _=await e.getStats();m(_)?(o=0,d||(n==null||n(j.Start),h>=g&&!a()&&t(),h++,d=!0)):d&&(o++,o>=i&&(n==null||n(j.Stop),d=!1))},100)}async function Ie(e,n,{debug:s=!1,callbacks:a,auth:t,baseURL:r=W,warmup:i}){ce=s;const{startConnection:o,sendStreamRequest:d,close:g,createStream:h,addIceCandidate:m}=n.videoType===q.Clip?_e(t,r,e,a.onError):Me(t,r,e,a.onError),{id:_,offer:A,ice_servers:v,session_id:M}=await h(n),w=new ke({iceServers:v}),O=w.createDataChannel("JanusDataChannel");if(!M)throw new Error("Could not create session_id");let $=!1;const c=()=>$,u=()=>{var l;$=!0,(l=a.onConnectionStateChange)==null||l.call(a,S.Connected)},p=Ee(w,a.onVideoStateChange,i,c,u);w.onicecandidate=l=>{var y;T("peerConnection.onicecandidate",l);try{l.candidate&&l.candidate.sdpMid&&l.candidate.sdpMLineIndex!==null?m(_,{candidate:l.candidate.candidate,sdpMid:l.candidate.sdpMid,sdpMLineIndex:l.candidate.sdpMLineIndex},M):m(_,{candidate:null},M)}catch(R){(y=a.onError)==null||y.call(a,R,{streamId:_})}},O.onmessage=l=>{if(console.log("pcDataChannel.onmessage",l),O.readyState==="open"){const[y,R]=l.data.split(":");y===V.StreamReady&&!$&&u()}},w.oniceconnectionstatechange=()=>{var y;T("peerConnection.oniceconnectionstatechange => "+w.iceConnectionState);const l=de(w.iceConnectionState);l!==S.Connected&&((y=a.onConnectionStateChange)==null||y.call(a,l))},w.ontrack=l=>{var y;T("peerConnection.ontrack",l),(y=a.onSrcObjectReady)==null||y.call(a,l.streams[0])},await w.setRemoteDescription(A),T("set remote description OK");const k=await w.createAnswer();return T("create answer OK"),await w.setLocalDescription(k),T("set local description OK"),await o(_,k,M),T("start connection OK"),{speak(l){return d(_,M,l)},async disconnect(){var l,y;if(_){const R=de(w.iceConnectionState);if(w){if(R===S.New){(l=a.onVideoStateChange)==null||l.call(a,j.Stop),clearInterval(p);return}w.close(),w.oniceconnectionstatechange=null,w.onnegotiationneeded=null,w.onicecandidate=null,w.ontrack=null}try{R===S.Connected&&await g(_,M).catch(C=>{})}catch(C){T("Error on close stream connection",C)}(y=a.onVideoStateChange)==null||y.call(a,j.Stop),clearInterval(p)}},sessionId:M,streamId:_}}let X={};function Ae(e){const n=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",s=e.agent.presenter,a={token:e.token||"testKey",distinct_id:e.distinctId||ie(),agentId:e.agent.id,agentType:s.type==="clip"&&s.presenter_id.startsWith("v2_")?"clip_v2":s.type,owner_id:e.agent.owner_id??""};return{...a,isEnabled:e.isEnabled??!0,getRandom:()=>Math.random().toString(16).slice(2),track(t,r){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const{audioPath:i,...o}=r||{},d={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...o,...a,source:n,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}}])})};return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1",d).then(g=>g.json()).catch(g=>console.error(g))},linkTrack(t,r,i,o){X[t]||(X[t]={events:{},resolvedDependencies:[]}),o.includes(i)||o.push(i);const d=X[t];if(d.events[i]={props:r},d.resolvedDependencies.push(i),o.every(h=>d.resolvedDependencies.includes(h))){const h=o.reduce((m,_)=>d.events[_]?{...m,...d.events[_].props}:m,{});this.track(t,h),d.resolvedDependencies=d.resolvedDependencies.filter(m=>!o.includes(m)),o.forEach(m=>{delete d.events[m]})}}}}function $e(e){var t,r,i,o;const n=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",s=()=>{const d=navigator.platform;return d.toLowerCase().includes("win")?"Windows":d.toLowerCase().includes("mac")?"Mac OS X":d.toLowerCase().includes("linux")?"Linux":"Unknown"},a=e.presenter;return{$os:`${s()}`,isMobile:`${n()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:a.type==="clip"&&a.presenter_id.startsWith("v2_")?"clip_v2":a.type,agentVoice:{voiceId:(r=(t=e.presenter)==null?void 0:t.voice)==null?void 0:r.voice_id,provider:(o=(i=e.presenter)==null?void 0:i.voice)==null?void 0:o.type}}}function Pe(e,n,s){var g,h;const{event:a,...t}=e,{template:r}=(n==null?void 0:n.llm)||{},{language:i}=((g=n==null?void 0:n.presenter)==null?void 0:g.voice)||{},{stitch:o}=(n==null?void 0:n.presenter)||{};return{...t,llm:{...t.llm,template:r},script:{...t.script,provider:{...(h=t==null?void 0:t.script)==null?void 0:h.provider,language:i}},stitch:o,...s}}let z=0;const be=20*1e3;function De(e,n,s,a){var t,r,i,o,d;return console.log("*****getAgentStreamArgs",{chat:n,options:s,greeting:a}),{videoType:ne(e.presenter.type),output_resolution:(t=s==null?void 0:s.streamOptions)==null?void 0:t.outputResolution,session_timeout:(r=s==null?void 0:s.streamOptions)==null?void 0:r.sessionTimeout,stream_warmup:(i=s==null?void 0:s.streamOptions)==null?void 0:i.streamWarmup,compatibility_mode:(o=s==null?void 0:s.streamOptions)==null?void 0:o.compatibilityMode,stream_greeting:(d=s==null?void 0:s.streamOptions)!=null&&d.streamGreeting&&!n?a:void 0}}function le(e){return e===I.Playground?{headers:{[Se]:"true"}}:{}}async function ge(e,n,s,a,t){try{const r=await n.newChat(e,{persist:t??!1},le(a));return s.track("agent-chat",{event:"created",chat_id:r.id,agent_id:e,mode:a}),r}catch(r){try{console.error(r);const i=JSON.parse(r.message);if((i==null?void 0:i.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(i){console.error("Error parsing the error message:",i)}throw new Error("Cannot create new chat")}}function Te(e,n,s,a,t,r){return new Promise(async(i,o)=>{var A;z=0;const d=setTimeout(()=>{h(new Error("Could not connect"))},be),g=v=>{clearTimeout(d),i(v)},h=v=>{clearTimeout(d),o(v)};let m;!t&&n.mode!==I.DirectPlayback&&(m=ge(e.id,s,a,n.mode,n.persistentChat).catch(v=>{h(v)}));const _=await Ie(e.id,De(e,t,n,r),{...n,analytics:a,warmup:(A=n.streamOptions)==null?void 0:A.streamWarmup,callbacks:{...n.callbacks,onConnectionStateChange:async v=>{var M,w,O,$;v===S.Connected?(m&&(t=await m),_?((w=(M=n.callbacks).onConnectionStateChange)==null||w.call(M,v),g({chat:t,streamingManager:_})):t&&h(new Error("Something went wrong while initializing the manager"))):($=(O=n.callbacks).onConnectionStateChange)==null||$.call(O,v)},onVideoStateChange(v){var M,w;(w=(M=n.callbacks).onVideoStateChange)==null||w.call(M,v),z>0&&v===j.Start&&a.linkTrack("agent-video",{event:"start",latency:Date.now()-z},"start",[V.StreamVideoCreated])}}}).catch(h)})}function Oe(e){var s;const n=(s=e.greetings)==null?void 0:s.filter(a=>a.length>0);if(n&&n.length>0){const a=Math.floor(Math.random()*n.length),t=n[a];if(t&&t.length>0)return t}return`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`}function me(e,n){return n&&n.length>0?n:[{content:e,id:H(),role:"assistant",created_at:new Date().toISOString()}]}function Ne(e){if(e.answer!==void 0)return e.answer;let n=0,s="";for(;n in e;)s+=e[n],n++;return s}function Le(e,n,s,a,t){if(!(e===x.Partial||e===x.Answer))return;const r=a.messages[a.messages.length-1];if((r==null?void 0:r.role)!=="assistant")return;const{content:i,sequence:o}=n;e===x.Partial?s[o]=i:s.answer=i;const d=Ne(s);(r.content!==d||e===x.Answer)&&(r.content=d,t==null||t([...a.messages],e))}async function xe(e,n){var w,O,$;let s={},a=!0;const t={messages:[],chatMode:n.mode||I.Functional},r=n.baseURL||W,i=n.wsURL||he,o=n.mixpanelKey||we,d=oe(n.auth,r,n.callbacks.onError),g=await d.getById(e),h=Oe(g);t.messages=me(h,n.initialMessages),(O=(w=n.callbacks).onNewMessage)==null||O.call(w,[...t.messages],"answer");const m=Ae({token:o,agent:g,...n});m.track("agent-sdk",{event:"loaded",...$e(g)});const _={onMessage:(c,u)=>{var p,k;if("content"in u)Le(c,u,s,t,n.callbacks.onNewMessage),c===x.Answer&&m.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const l=V,y=[l.StreamVideoDone,l.StreamVideoError,l.StreamVideoRejected],R=[l.StreamFailed,l.StreamVideoError,l.StreamVideoRejected],C=Pe(u,g,{mode:t.chatMode});if(c=c,c===l.StreamVideoCreated)m.linkTrack("agent-video",C,l.StreamVideoCreated,["start"]);else if(y.includes(c)){const E=c.split("/")[1];m.track("agent-video",{...C,event:E})}R.includes(c)&&((k=(p=n.callbacks).onError)==null||k.call(p,new Error(`Stream failed with event ${c}`),{data:u})),u.event===l.StreamDone&&v()}}};async function A(c){var E,P,F,N,b,L,U;(P=(E=n.callbacks).onConnectionStateChange)==null||P.call(E,S.Connecting),z=0;const u=3;c&&!a&&(delete t.chat,t.messages=me(h),(N=(F=n.callbacks).onNewMessage)==null||N.call(F,[...t.messages],"answer"));const p=n.mode===I.DirectPlayback?Promise.resolve(void 0):Ce(n.auth,i,_);async function k(){for(let B=1;B<=u;B++)try{return await Te(g,n,d,m,t.chat,c?h:void 0)}catch(D){if((D==null?void 0:D.message)!=="Could not connect")throw D}throw new Error("Could not connect")}const l=k().catch(B=>{var D,ue;throw M(I.Maintenance),(ue=(D=n.callbacks).onConnectionStateChange)==null||ue.call(D,S.Fail),B}),[y,{streamingManager:R,chat:C}]=await Promise.all([p,l]);C&&C.id!==((b=t.chat)==null?void 0:b.id)&&((U=(L=n.callbacks).onNewChat)==null||U.call(L,C.id)),t.streamingManager=R,t.socketManager=y,t.chat=C,a=!1,M((C==null?void 0:C.chat_mode)??n.mode??I.Functional)}async function v(){var c,u,p,k;(c=t.socketManager)==null||c.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,(k=(p=n.callbacks).onConnectionStateChange)==null||k.call(p,S.Disconnected)}async function M(c){var u,p;c!==t.chatMode&&(m.track("agent-mode-change",{mode:c}),t.chatMode=c,t.chatMode!==I.Functional&&await v(),(p=(u=n.callbacks).onModeChange)==null||p.call(u,c))}return{agent:g,starterMessages:(($=g.knowledge)==null?void 0:$.starter_message)||[],changeMode:M,async connect(){var c;console.log("*****Connecting"),await A(!0),m.track("agent-chat",{event:"connect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id,mode:t.chatMode})},async reconnect(){var c;console.log("*****Reconnecting"),await v(),await A(!1),m.track("agent-chat",{event:"reconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id,mode:t.chatMode})},async disconnect(){var c;await v(),m.track("agent-chat",{event:"disconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id,mode:t.chatMode})},async chat(c){var p,k,l,y,R,C;const u=H();s={};try{if(z=Date.now(),n.mode===I.DirectPlayback)throw new Error("Direct playback is enabled, chat is disabled");if(c.length>=800)throw new Error("Message cannot be more than 800 characters");if(c.length===0)throw new Error("Message cannot be empty");if(t.chatMode===I.Maintenance)throw new Error("Chat is in maintenance mode");if(![I.TextOnly,I.Playground].includes(t.chatMode))if(t.streamingManager){if(!t.chat)throw new Error("Chat is not initialized")}else throw new Error("Streaming manager is not initialized");t.messages.push({id:H(),role:"user",content:c,created_at:new Date(z).toISOString()}),(k=(p=n.callbacks).onNewMessage)==null||k.call(p,[...t.messages],"user"),t.chat||(t.chat=await ge(g.id,d,m,t.chatMode,n.persistentChat),(y=(l=n.callbacks).onNewChat)==null||y.call(l,t.chat.id));const E={id:u,role:"assistant",content:"",created_at:new Date().toISOString(),matches:[]},P=[...t.messages];t.messages.push(E);const F=b=>{var L,U;return d.chat(g.id,b,{sessionId:(L=t.streamingManager)==null?void 0:L.sessionId,streamId:(U=t.streamingManager)==null?void 0:U.streamId,chatMode:t.chatMode,messages:P.map(({matches:B,...D})=>D)},le(t.chatMode))},N=await F(t.chat.id).catch(async b=>{var L;if(!((L=b==null?void 0:b.message)!=null&&L.includes("missing or invalid session_id")))throw b;return await v(),console.log("*****Reconnecting from send chat"),await A(!1),F(t.chat.id)});return m.track("agent-message-send",{event:"success",mode:t.chatMode,messages:t.messages.length+1}),E.context=N.context,E.matches=N.matches,N.result&&(E.content=N.result,m.track("agent-message-received",{latency:Date.now()-z,mode:t.chatMode,messages:t.messages.length}),(C=(R=n.callbacks).onNewMessage)==null||C.call(R,[...t.messages],"answer")),N}catch(E){throw t.messages[t.messages.length-1].id===u&&t.messages.pop(),m.track("agent-message-send",{event:"error",mode:t.chatMode,messages:t.messages.length}),E}},rate(c,u,p){var y,R,C,E;const k=t.messages.find(P=>P.id===c);if(t.chat){if(!k)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const l=((y=k.matches)==null?void 0:y.map(P=>[P.document_id,P.id]))??[];return m.track("agent-rate",{event:p?"update":"create",thumb:u===1?"up":"down",knowledge_id:((R=g.knowledge)==null?void 0:R.id)??"",mode:t.chatMode,matches:l,score:u}),p?d.updateRating(g.id,t.chat.id,p,{knowledge_id:((C=g.knowledge)==null?void 0:C.id)??"",message_id:c,matches:l,score:u}):d.createRating(g.id,t.chat.id,{knowledge_id:((E=g.knowledge)==null?void 0:E.id)??"",message_id:c,matches:l,score:u})},deleteRate(c){var u;if(!t.chat)throw new Error("Chat is not initialized");return m.track("agent-rate-delete",{type:"text",chat_id:(u=t.chat)==null?void 0:u.id,id:c,mode:t.chatMode}),d.deleteRating(g.id,t.chat.id,c)},speak(c){if(!t.streamingManager)throw new Error("Please connect to the agent first");function u(){if(typeof c=="string"){if(!g.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:g.presenter.voice,input:c,ssml:!1}}if(c.type==="text"&&!c.provider){if(!g.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:g.presenter.voice,input:c.input,ssml:c.ssml}}return c}const p=u();return m.track("agent-speak",p),t.streamingManager.speak({script:p})}}}function je(e,n,s){const{getById:a}=oe(n,s||W);return a(e)}f.AgentStatus=Z,f.ChatMode=I,f.ChatProgress=x,f.ConnectionState=S,f.DocumentType=te,f.KnowledgeType=ee,f.PlanGroup=Y,f.Providers=re,f.RateState=G,f.StreamEvents=V,f.StreamingState=j,f.Subject=Q,f.UserPlan=K,f.VideoType=q,f.VoiceAccess=ae,f.createAgentManager=xe,f.getAgent=je,f.mapVideoType=ne,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(f,K){typeof exports=="object"&&typeof module<"u"?K(exports):typeof define=="function"&&define.amd?define(["exports"],K):(f=typeof globalThis<"u"?globalThis:f||self,K(f.index={}))})(this,function(f){"use strict";var K=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(K||{}),Y=(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))(Y||{}),Z=(e=>(e.Created="created",e.Started="started",e.Done="done",e.Error="error",e.Rejected="rejected",e.Ready="ready",e))(Z||{}),G=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(G||{}),I=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e))(I||{}),x=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(x||{}),Q=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(Q||{}),ee=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(ee||{}),te=(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))(te||{}),q=(e=>(e.Clip="clip",e.Talk="talk",e))(q||{});const ne=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var j=(e=>(e.Start="START",e.Stop="STOP",e))(j||{}),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||{}),re=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(re||{}),ae=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(ae||{});const W="https://api.d-id.com",he="wss://notifications.d-id.com",we="79f81a83a67430be2bc0fd61042b8faa",H=()=>Math.random().toString(16).slice(2);function ie(){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 fe=H();function se(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}.${ie()}_${fe}`;throw new Error(`Unknown auth type: ${e}`)}function J(e,n=W,s){const a=async(t,r)=>{const i=await fetch(n+(t!=null&&t.startsWith("/")?t:`/${t}`),{...r,headers:{...r==null?void 0:r.headers,Authorization:se(e),"Content-Type":"application/json"}});if(!i.ok){let o=await i.text().catch(()=>"Failed to fetch");throw s&&s(new Error(o),{url:t,options:r,headers:i.headers}),new Error(o)}return i.json()};return{get(t,r){return a(t,{...r,method:"GET"})},post(t,r,i){return a(t,{...i,body:JSON.stringify(r),method:"POST"})},delete(t,r,i){return a(t,{...i,body:JSON.stringify(r),method:"DELETE"})},patch(t,r,i){return a(t,{...i,body:JSON.stringify(r),method:"PATCH"})}}}function oe(e,n=W,s){const a=J(e,`${n}/agents`,s);return{create(t,r){return a.post("/",t,r)},getAgents(t,r){return a.get(`/${t?`?tag=${t}`:""}`,r).then(i=>i??[])},getById(t,r){return a.get(`/${t}`,r)},delete(t,r){return a.delete(`/${t}`,void 0,r)},update(t,r,i){return a.patch(`/${t}`,r,i)},newChat(t,r,i){return a.post(`/${t}/chat`,r,i)},chat(t,r,i,o){return a.post(`/${t}/chat/${r}`,i,o)},createRating(t,r,i,o){return a.post(`/${t}/chat/${r}/ratings`,i,o)},updateRating(t,r,i,o,d){return a.patch(`/${t}/chat/${r}/ratings/${i}`,o,d)},deleteRating(t,r,i,o){return a.delete(`/${t}/chat/${r}/ratings/${i}`,o)}}}const pe=e=>new Promise(n=>setTimeout(n,e));function ye(e){return new Promise((n,s)=>{const{callbacks:a,host:t,auth:r}=e,{onMessage:i=null,onOpen:o=null,onClose:d=null,onError:g=null}=a||{},h=new WebSocket(`${t}?authorization=${se(r)}`);h.onmessage=i,h.onclose=d,h.onerror=m=>{console.error(m),g==null||g("Websocket failed to connect",m),s(m)},h.onopen=m=>{o==null||o(m),n(h)}})}async function ve(e){const{retries:n=1}=e;let s=null;for(let a=0;(s==null?void 0:s.readyState)!==WebSocket.OPEN;a++)try{s=await ye(e)}catch(t){if(a===n)throw t;await pe(a*500)}return s}async function Ce(e,n,s){const a=s!=null&&s.onMessage?[s.onMessage]:[],t=await ve({auth:e,host:n,callbacks:{onError:s==null?void 0:s.onError,onMessage:r=>{const i=JSON.parse(r.data);a.forEach(o=>o(i.event,i))}}});return{socket:t,disconnect:()=>t.close(),subscribeToEvents:r=>a.push(r)}}const Se="X-Playground-Chat";function _e(e,n,s,a){const t=J(e,`${n}/agents/${s}`,a);return{createStream(r){return t.post("/streams",{output_resolution:r.output_resolution,compatibility_mode:r.compatibility_mode,stream_warmup:r.stream_warmup,session_timeout:r.session_timeout,stream_greeting:r.stream_greeting})},startConnection(r,i,o){return t.post(`/streams/${r}/sdp`,{session_id:o,answer:i})},addIceCandidate(r,i,o){return t.post(`/streams/${r}/ice`,{session_id:o,...i})},sendStreamRequest(r,i,o){return t.post(`/streams/${r}`,{session_id:i,...o})},close(r,i){return t.delete(`/streams/${r}`,{session_id:i})}}}function Me(e,n,s,a){const t=J(e,`${n}/agents/${s}`,a);return{createStream(r,i){return t.post("/streams",{driver_url:r.driver_url,face:r.face,config:r.config,output_resolution:r.output_resolution,compatibility_mode:r.compatibility_mode,stream_warmup:r.stream_warmup,session_timeout:r.session_timeout,stream_greeting:r.stream_greeting},i)},startConnection(r,i,o,d){return t.post(`/streams/${r}/sdp`,{session_id:o,answer:i},d)},addIceCandidate(r,i,o,d){return t.post(`/streams/${r}/ice`,{session_id:o,...i},d)},sendStreamRequest(r,i,o,d){return t.post(`/streams/${r}`,{session_id:i,...o},d)},close(r,i,o){return t.delete(`/streams/${r}`,{session_id:i},o)}}}let ce=!1;const T=(e,n)=>ce&&console.log(e,n),ke=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function de(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(){let e=0;return n=>{for(const s of n.values())if(s&&s.type==="inbound-rtp"&&s.kind==="video"){const a=s.bytesReceived,t=a-e>0;return e=a,t}return!1}}function Ee(e,n,s=!1,a,t){const i=Math.max(Math.ceil(10),1);let o=0,d=!1;const g=s?1:0;let h=0;const m=Re();return setInterval(async()=>{const _=await e.getStats();m(_)?(o=0,d||(n==null||n(j.Start),h>=g&&!a()&&t(),h++,d=!0)):d&&(o++,o>=i&&(n==null||n(j.Stop),d=!1))},100)}async function Ie(e,n,{debug:s=!1,callbacks:a,auth:t,baseURL:r=W,warmup:i}){ce=s;const{startConnection:o,sendStreamRequest:d,close:g,createStream:h,addIceCandidate:m}=n.videoType===q.Clip?_e(t,r,e,a.onError):Me(t,r,e,a.onError),{id:_,offer:A,ice_servers:v,session_id:M}=await h(n),w=new ke({iceServers:v}),O=w.createDataChannel("JanusDataChannel");if(!M)throw new Error("Could not create session_id");let $=!1;const c=()=>$,u=()=>{var l;$=!0,(l=a.onConnectionStateChange)==null||l.call(a,S.Connected)},p=Ee(w,a.onVideoStateChange,i,c,u);w.onicecandidate=l=>{var y;T("peerConnection.onicecandidate",l);try{l.candidate&&l.candidate.sdpMid&&l.candidate.sdpMLineIndex!==null?m(_,{candidate:l.candidate.candidate,sdpMid:l.candidate.sdpMid,sdpMLineIndex:l.candidate.sdpMLineIndex},M):m(_,{candidate:null},M)}catch(R){(y=a.onError)==null||y.call(a,R,{streamId:_})}},O.onmessage=l=>{if(O.readyState==="open"){const[y,R]=l.data.split(":");y===V.StreamReady&&!$&&u()}},w.oniceconnectionstatechange=()=>{var y;T("peerConnection.oniceconnectionstatechange => "+w.iceConnectionState);const l=de(w.iceConnectionState);l!==S.Connected&&((y=a.onConnectionStateChange)==null||y.call(a,l))},w.ontrack=l=>{var y;T("peerConnection.ontrack",l),(y=a.onSrcObjectReady)==null||y.call(a,l.streams[0])},await w.setRemoteDescription(A),T("set remote description OK");const k=await w.createAnswer();return T("create answer OK"),await w.setLocalDescription(k),T("set local description OK"),await o(_,k,M),T("start connection OK"),{speak(l){return d(_,M,l)},async disconnect(){var l,y;if(_){const R=de(w.iceConnectionState);if(w){if(R===S.New){(l=a.onVideoStateChange)==null||l.call(a,j.Stop),clearInterval(p);return}w.close(),w.oniceconnectionstatechange=null,w.onnegotiationneeded=null,w.onicecandidate=null,w.ontrack=null}try{R===S.Connected&&await g(_,M).catch(C=>{})}catch(C){T("Error on close stream connection",C)}(y=a.onVideoStateChange)==null||y.call(a,j.Stop),clearInterval(p)}},sessionId:M,streamId:_}}let X={};function Ae(e){const n=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",s=e.agent.presenter,a={token:e.token||"testKey",distinct_id:e.distinctId||ie(),agentId:e.agent.id,agentType:s.type==="clip"&&s.presenter_id.startsWith("v2_")?"clip_v2":s.type,owner_id:e.agent.owner_id??""};return{...a,isEnabled:e.isEnabled??!0,getRandom:()=>Math.random().toString(16).slice(2),track(t,r){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const{audioPath:i,...o}=r||{},d={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...o,...a,source:n,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}}])})};return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1",d).then(g=>g.json()).catch(g=>console.error(g))},linkTrack(t,r,i,o){X[t]||(X[t]={events:{},resolvedDependencies:[]}),o.includes(i)||o.push(i);const d=X[t];if(d.events[i]={props:r},d.resolvedDependencies.push(i),o.every(h=>d.resolvedDependencies.includes(h))){const h=o.reduce((m,_)=>d.events[_]?{...m,...d.events[_].props}:m,{});this.track(t,h),d.resolvedDependencies=d.resolvedDependencies.filter(m=>!o.includes(m)),o.forEach(m=>{delete d.events[m]})}}}}function $e(e){var t,r,i,o;const n=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",s=()=>{const d=navigator.platform;return d.toLowerCase().includes("win")?"Windows":d.toLowerCase().includes("mac")?"Mac OS X":d.toLowerCase().includes("linux")?"Linux":"Unknown"},a=e.presenter;return{$os:`${s()}`,isMobile:`${n()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:a.type==="clip"&&a.presenter_id.startsWith("v2_")?"clip_v2":a.type,agentVoice:{voiceId:(r=(t=e.presenter)==null?void 0:t.voice)==null?void 0:r.voice_id,provider:(o=(i=e.presenter)==null?void 0:i.voice)==null?void 0:o.type}}}function Pe(e,n,s){var g,h;const{event:a,...t}=e,{template:r}=(n==null?void 0:n.llm)||{},{language:i}=((g=n==null?void 0:n.presenter)==null?void 0:g.voice)||{},{stitch:o}=(n==null?void 0:n.presenter)||{};return{...t,llm:{...t.llm,template:r},script:{...t.script,provider:{...(h=t==null?void 0:t.script)==null?void 0:h.provider,language:i}},stitch:o,...s}}let z=0;const be=20*1e3;function De(e,n,s,a){var t,r,i,o,d;return{videoType:ne(e.presenter.type),output_resolution:(t=s==null?void 0:s.streamOptions)==null?void 0:t.outputResolution,session_timeout:(r=s==null?void 0:s.streamOptions)==null?void 0:r.sessionTimeout,stream_warmup:(i=s==null?void 0:s.streamOptions)==null?void 0:i.streamWarmup,compatibility_mode:(o=s==null?void 0:s.streamOptions)==null?void 0:o.compatibilityMode,stream_greeting:(d=s==null?void 0:s.streamOptions)!=null&&d.streamGreeting&&!n?a:void 0}}function le(e){return e===I.Playground?{headers:{[Se]:"true"}}:{}}async function ge(e,n,s,a,t){try{const r=await n.newChat(e,{persist:t??!1},le(a));return s.track("agent-chat",{event:"created",chat_id:r.id,agent_id:e,mode:a}),r}catch(r){try{console.error(r);const i=JSON.parse(r.message);if((i==null?void 0:i.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(i){console.error("Error parsing the error message:",i)}throw new Error("Cannot create new chat")}}function Te(e,n,s,a,t,r){return new Promise(async(i,o)=>{var A;z=0;const d=setTimeout(()=>{h(new Error("Could not connect"))},be),g=v=>{clearTimeout(d),i(v)},h=v=>{clearTimeout(d),o(v)};let m;!t&&n.mode!==I.DirectPlayback&&(m=ge(e.id,s,a,n.mode,n.persistentChat).catch(v=>{h(v)}));const _=await Ie(e.id,De(e,t,n,r),{...n,analytics:a,warmup:(A=n.streamOptions)==null?void 0:A.streamWarmup,callbacks:{...n.callbacks,onConnectionStateChange:async v=>{var M,w,O,$;v===S.Connected?(m&&(t=await m),_?((w=(M=n.callbacks).onConnectionStateChange)==null||w.call(M,v),g({chat:t,streamingManager:_})):t&&h(new Error("Something went wrong while initializing the manager"))):($=(O=n.callbacks).onConnectionStateChange)==null||$.call(O,v)},onVideoStateChange(v){var M,w;(w=(M=n.callbacks).onVideoStateChange)==null||w.call(M,v),z>0&&v===j.Start&&a.linkTrack("agent-video",{event:"start",latency:Date.now()-z},"start",[V.StreamVideoCreated])}}}).catch(h)})}function Oe(e){var s;const n=(s=e.greetings)==null?void 0:s.filter(a=>a.length>0);if(n&&n.length>0){const a=Math.floor(Math.random()*n.length),t=n[a];if(t&&t.length>0)return t}return`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`}function me(e,n){return n&&n.length>0?n:[{content:e,id:H(),role:"assistant",created_at:new Date().toISOString()}]}function Ne(e){if(e.answer!==void 0)return e.answer;let n=0,s="";for(;n in e;)s+=e[n],n++;return s}function Le(e,n,s,a,t){if(!(e===x.Partial||e===x.Answer))return;const r=a.messages[a.messages.length-1];if((r==null?void 0:r.role)!=="assistant")return;const{content:i,sequence:o}=n;e===x.Partial?s[o]=i:s.answer=i;const d=Ne(s);(r.content!==d||e===x.Answer)&&(r.content=d,t==null||t([...a.messages],e))}async function xe(e,n){var w,O,$;let s={},a=!0;const t={messages:[],chatMode:n.mode||I.Functional},r=n.baseURL||W,i=n.wsURL||he,o=n.mixpanelKey||we,d=oe(n.auth,r,n.callbacks.onError),g=await d.getById(e),h=Oe(g);t.messages=me(h,n.initialMessages),(O=(w=n.callbacks).onNewMessage)==null||O.call(w,[...t.messages],"answer");const m=Ae({token:o,agent:g,...n});m.track("agent-sdk",{event:"loaded",...$e(g)});const _={onMessage:(c,u)=>{var p,k;if("content"in u)Le(c,u,s,t,n.callbacks.onNewMessage),c===x.Answer&&m.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const l=V,y=[l.StreamVideoDone,l.StreamVideoError,l.StreamVideoRejected],R=[l.StreamFailed,l.StreamVideoError,l.StreamVideoRejected],C=Pe(u,g,{mode:t.chatMode});if(c=c,c===l.StreamVideoCreated)m.linkTrack("agent-video",C,l.StreamVideoCreated,["start"]);else if(y.includes(c)){const E=c.split("/")[1];m.track("agent-video",{...C,event:E})}R.includes(c)&&((k=(p=n.callbacks).onError)==null||k.call(p,new Error(`Stream failed with event ${c}`),{data:u})),u.event===l.StreamDone&&v()}}};async function A(c){var E,P,F,N,b,L,U;(P=(E=n.callbacks).onConnectionStateChange)==null||P.call(E,S.Connecting),z=0;const u=3;c&&!a&&(delete t.chat,t.messages=me(h),(N=(F=n.callbacks).onNewMessage)==null||N.call(F,[...t.messages],"answer"));const p=n.mode===I.DirectPlayback?Promise.resolve(void 0):Ce(n.auth,i,_);async function k(){for(let B=1;B<=u;B++)try{return await Te(g,n,d,m,t.chat,c?h:void 0)}catch(D){if((D==null?void 0:D.message)!=="Could not connect")throw D}throw new Error("Could not connect")}const l=k().catch(B=>{var D,ue;throw M(I.Maintenance),(ue=(D=n.callbacks).onConnectionStateChange)==null||ue.call(D,S.Fail),B}),[y,{streamingManager:R,chat:C}]=await Promise.all([p,l]);C&&C.id!==((b=t.chat)==null?void 0:b.id)&&((U=(L=n.callbacks).onNewChat)==null||U.call(L,C.id)),t.streamingManager=R,t.socketManager=y,t.chat=C,a=!1,M((C==null?void 0:C.chat_mode)??n.mode??I.Functional)}async function v(){var c,u,p,k;(c=t.socketManager)==null||c.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,(k=(p=n.callbacks).onConnectionStateChange)==null||k.call(p,S.Disconnected)}async function M(c){var u,p;c!==t.chatMode&&(m.track("agent-mode-change",{mode:c}),t.chatMode=c,t.chatMode!==I.Functional&&await v(),(p=(u=n.callbacks).onModeChange)==null||p.call(u,c))}return{agent:g,starterMessages:(($=g.knowledge)==null?void 0:$.starter_message)||[],changeMode:M,async connect(){var c;await A(!0),m.track("agent-chat",{event:"connect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id,mode:t.chatMode})},async reconnect(){var c;await v(),await A(!1),m.track("agent-chat",{event:"reconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id,mode:t.chatMode})},async disconnect(){var c;await v(),m.track("agent-chat",{event:"disconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id,mode:t.chatMode})},async chat(c){var p,k,l,y,R,C;const u=H();s={};try{if(z=Date.now(),n.mode===I.DirectPlayback)throw new Error("Direct playback is enabled, chat is disabled");if(c.length>=800)throw new Error("Message cannot be more than 800 characters");if(c.length===0)throw new Error("Message cannot be empty");if(t.chatMode===I.Maintenance)throw new Error("Chat is in maintenance mode");if(![I.TextOnly,I.Playground].includes(t.chatMode))if(t.streamingManager){if(!t.chat)throw new Error("Chat is not initialized")}else throw new Error("Streaming manager is not initialized");t.messages.push({id:H(),role:"user",content:c,created_at:new Date(z).toISOString()}),(k=(p=n.callbacks).onNewMessage)==null||k.call(p,[...t.messages],"user"),t.chat||(t.chat=await ge(g.id,d,m,t.chatMode,n.persistentChat),(y=(l=n.callbacks).onNewChat)==null||y.call(l,t.chat.id));const E={id:u,role:"assistant",content:"",created_at:new Date().toISOString(),matches:[]},P=[...t.messages];t.messages.push(E);const F=b=>{var L,U;return d.chat(g.id,b,{sessionId:(L=t.streamingManager)==null?void 0:L.sessionId,streamId:(U=t.streamingManager)==null?void 0:U.streamId,chatMode:t.chatMode,messages:P.map(({matches:B,...D})=>D)},le(t.chatMode))},N=await F(t.chat.id).catch(async b=>{var L;if(!((L=b==null?void 0:b.message)!=null&&L.includes("missing or invalid session_id")))throw b;return await v(),await A(!1),F(t.chat.id)});return m.track("agent-message-send",{event:"success",mode:t.chatMode,messages:t.messages.length+1}),E.context=N.context,E.matches=N.matches,N.result&&(E.content=N.result,m.track("agent-message-received",{latency:Date.now()-z,mode:t.chatMode,messages:t.messages.length}),(C=(R=n.callbacks).onNewMessage)==null||C.call(R,[...t.messages],"answer")),N}catch(E){throw t.messages[t.messages.length-1].id===u&&t.messages.pop(),m.track("agent-message-send",{event:"error",mode:t.chatMode,messages:t.messages.length}),E}},rate(c,u,p){var y,R,C,E;const k=t.messages.find(P=>P.id===c);if(t.chat){if(!k)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const l=((y=k.matches)==null?void 0:y.map(P=>[P.document_id,P.id]))??[];return m.track("agent-rate",{event:p?"update":"create",thumb:u===1?"up":"down",knowledge_id:((R=g.knowledge)==null?void 0:R.id)??"",mode:t.chatMode,matches:l,score:u}),p?d.updateRating(g.id,t.chat.id,p,{knowledge_id:((C=g.knowledge)==null?void 0:C.id)??"",message_id:c,matches:l,score:u}):d.createRating(g.id,t.chat.id,{knowledge_id:((E=g.knowledge)==null?void 0:E.id)??"",message_id:c,matches:l,score:u})},deleteRate(c){var u;if(!t.chat)throw new Error("Chat is not initialized");return m.track("agent-rate-delete",{type:"text",chat_id:(u=t.chat)==null?void 0:u.id,id:c,mode:t.chatMode}),d.deleteRating(g.id,t.chat.id,c)},speak(c){if(!t.streamingManager)throw new Error("Please connect to the agent first");function u(){if(typeof c=="string"){if(!g.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:g.presenter.voice,input:c,ssml:!1}}if(c.type==="text"&&!c.provider){if(!g.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:g.presenter.voice,input:c.input,ssml:c.ssml}}return c}const p=u();return m.track("agent-speak",p),t.streamingManager.speak({script:p})}}}function je(e,n,s){const{getById:a}=oe(n,s||W);return a(e)}f.AgentStatus=Z,f.ChatMode=I,f.ChatProgress=x,f.ConnectionState=S,f.DocumentType=te,f.KnowledgeType=ee,f.PlanGroup=Y,f.Providers=re,f.RateState=G,f.StreamEvents=V,f.StreamingState=j,f.Subject=Q,f.UserPlan=K,f.VideoType=q,f.VoiceAccess=ae,f.createAgentManager=xe,f.getAgent=je,f.mapVideoType=ne,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
|