@d-id/client-sdk 1.0.19-beta.73 → 1.0.19-beta.76
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 +175 -176
- package/dist/index.umd.cjs +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var j = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(j || {}),
|
|
1
|
+
var j = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(j || {}), B = /* @__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))(B || {}), J = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(J || {}), E = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e))(E || {}), N = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(N || {}), q = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(q || {}), V = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(V || {}), Q = /* @__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))(Q || {}), k = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(k || {}), T = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(T || {}), $ = /* @__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))($ || {}), R = /* @__PURE__ */ ((e) => (e[e.New = 0] = "New", e[e.Fail = 1] = "Fail", e[e.Connected = 2] = "Connected", e[e.Connecting = 3] = "Connecting", e[e.Terminating = 4] = "Terminating", e))(R || {}), X = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(X || {}), Y = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(Y || {});
|
|
2
2
|
const P = "https://api.d-id.com", Z = "wss://notifications.d-id.com", G = "79f81a83a67430be2bc0fd61042b8faa", b = () => Math.random().toString(16).slice(2);
|
|
3
3
|
function z() {
|
|
4
4
|
let e = window.localStorage.getItem("did_external_key_id");
|
|
@@ -25,8 +25,8 @@ function K(e, a = P) {
|
|
|
25
25
|
}
|
|
26
26
|
});
|
|
27
27
|
if (!i.ok) {
|
|
28
|
-
let
|
|
29
|
-
throw new Error(
|
|
28
|
+
let o = await i.text().catch(() => "Failed to fetch");
|
|
29
|
+
throw new Error(o);
|
|
30
30
|
}
|
|
31
31
|
return i.json();
|
|
32
32
|
};
|
|
@@ -81,17 +81,17 @@ function H(e, a = P) {
|
|
|
81
81
|
newChat(n, r) {
|
|
82
82
|
return t.post(`/${n}/chat`, void 0, r);
|
|
83
83
|
},
|
|
84
|
-
chat(n, r, i,
|
|
85
|
-
return t.post(`/${n}/chat/${r}`, i,
|
|
84
|
+
chat(n, r, i, o) {
|
|
85
|
+
return t.post(`/${n}/chat/${r}`, i, o);
|
|
86
86
|
},
|
|
87
|
-
createRating(n, r, i,
|
|
88
|
-
return t.post(`/${n}/chat/${r}/ratings`, i,
|
|
87
|
+
createRating(n, r, i, o) {
|
|
88
|
+
return t.post(`/${n}/chat/${r}/ratings`, i, o);
|
|
89
89
|
},
|
|
90
|
-
updateRating(n, r, i,
|
|
91
|
-
return t.patch(`/${n}/chat/${r}/ratings/${i}`,
|
|
90
|
+
updateRating(n, r, i, o, c) {
|
|
91
|
+
return t.patch(`/${n}/chat/${r}/ratings/${i}`, o, c);
|
|
92
92
|
},
|
|
93
|
-
deleteRating(n, r, i,
|
|
94
|
-
return t.delete(`/${n}/chat/${r}/ratings/${i}`,
|
|
93
|
+
deleteRating(n, r, i, o) {
|
|
94
|
+
return t.delete(`/${n}/chat/${r}/ratings/${i}`, o);
|
|
95
95
|
}
|
|
96
96
|
};
|
|
97
97
|
}
|
|
@@ -103,15 +103,15 @@ function ne(e) {
|
|
|
103
103
|
host: r,
|
|
104
104
|
auth: i
|
|
105
105
|
} = e, {
|
|
106
|
-
onMessage:
|
|
107
|
-
onOpen:
|
|
108
|
-
onClose:
|
|
109
|
-
onError:
|
|
106
|
+
onMessage: o = null,
|
|
107
|
+
onOpen: c = null,
|
|
108
|
+
onClose: g = null,
|
|
109
|
+
onError: m = null
|
|
110
110
|
} = n || {}, w = new WebSocket(`${r}?authorization=${D(i)}`);
|
|
111
|
-
w.onmessage =
|
|
112
|
-
console.error(f),
|
|
111
|
+
w.onmessage = o, w.onclose = g, w.onerror = (f) => {
|
|
112
|
+
console.error(f), m == null || m("Websocket failed to connect", f), t(f);
|
|
113
113
|
}, w.onopen = (f) => {
|
|
114
|
-
|
|
114
|
+
c == null || c(f), a(w);
|
|
115
115
|
};
|
|
116
116
|
});
|
|
117
117
|
}
|
|
@@ -137,8 +137,8 @@ async function F(e, a, t) {
|
|
|
137
137
|
callbacks: {
|
|
138
138
|
onError: t == null ? void 0 : t.onError,
|
|
139
139
|
onMessage: (i) => {
|
|
140
|
-
const
|
|
141
|
-
n.forEach((
|
|
140
|
+
const o = JSON.parse(i.data);
|
|
141
|
+
n.forEach((c) => c(o.event, o));
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
});
|
|
@@ -160,24 +160,24 @@ function ie(e, a, t) {
|
|
|
160
160
|
type: k.Clip
|
|
161
161
|
});
|
|
162
162
|
},
|
|
163
|
-
startConnection(r, i,
|
|
163
|
+
startConnection(r, i, o) {
|
|
164
164
|
return n.post(`/streams/${r}/sdp`, {
|
|
165
|
-
session_id:
|
|
165
|
+
session_id: o,
|
|
166
166
|
answer: i,
|
|
167
167
|
type: k.Clip
|
|
168
168
|
});
|
|
169
169
|
},
|
|
170
|
-
addIceCandidate(r, i,
|
|
170
|
+
addIceCandidate(r, i, o) {
|
|
171
171
|
return n.post(`/streams/${r}/ice`, {
|
|
172
|
-
session_id:
|
|
172
|
+
session_id: o,
|
|
173
173
|
...i,
|
|
174
174
|
type: k.Clip
|
|
175
175
|
});
|
|
176
176
|
},
|
|
177
|
-
sendStreamRequest(r, i,
|
|
177
|
+
sendStreamRequest(r, i, o) {
|
|
178
178
|
return n.post(`/streams/${r}`, {
|
|
179
179
|
session_id: i,
|
|
180
|
-
...
|
|
180
|
+
...o,
|
|
181
181
|
type: k.Clip
|
|
182
182
|
});
|
|
183
183
|
},
|
|
@@ -202,32 +202,32 @@ function ae(e, a, t) {
|
|
|
202
202
|
type: k.Talk
|
|
203
203
|
}, i);
|
|
204
204
|
},
|
|
205
|
-
startConnection(r, i,
|
|
205
|
+
startConnection(r, i, o, c) {
|
|
206
206
|
return n.post(`/streams/${r}/sdp`, {
|
|
207
|
-
session_id:
|
|
207
|
+
session_id: o,
|
|
208
208
|
answer: i,
|
|
209
209
|
type: k.Talk
|
|
210
|
-
},
|
|
210
|
+
}, c);
|
|
211
211
|
},
|
|
212
|
-
addIceCandidate(r, i,
|
|
212
|
+
addIceCandidate(r, i, o, c) {
|
|
213
213
|
return n.post(`/streams/${r}/ice`, {
|
|
214
|
-
session_id:
|
|
214
|
+
session_id: o,
|
|
215
215
|
...i,
|
|
216
216
|
type: k.Talk
|
|
217
|
-
},
|
|
217
|
+
}, c);
|
|
218
218
|
},
|
|
219
|
-
sendStreamRequest(r, i,
|
|
219
|
+
sendStreamRequest(r, i, o, c) {
|
|
220
220
|
return n.post(`/streams/${r}`, {
|
|
221
221
|
session_id: i,
|
|
222
|
-
...
|
|
222
|
+
...o,
|
|
223
223
|
type: k.Talk
|
|
224
|
-
},
|
|
224
|
+
}, c);
|
|
225
225
|
},
|
|
226
|
-
close(r, i,
|
|
226
|
+
close(r, i, o) {
|
|
227
227
|
return n.delete(`/streams/${r}`, {
|
|
228
228
|
session_id: i,
|
|
229
229
|
type: k.Talk
|
|
230
|
-
},
|
|
230
|
+
}, o);
|
|
231
231
|
}
|
|
232
232
|
};
|
|
233
233
|
}
|
|
@@ -282,27 +282,24 @@ function de(e) {
|
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
function ce(e, a) {
|
|
285
|
-
let t = [], n = 0, r = 0, i;
|
|
285
|
+
let t = [], n = 0, r = 0, i = 0, o;
|
|
286
286
|
return setInterval(() => {
|
|
287
287
|
e.getStats().then((g) => {
|
|
288
|
-
g.forEach((
|
|
289
|
-
if (
|
|
290
|
-
if (r = t.length - 1,
|
|
291
|
-
const
|
|
292
|
-
let f = i;
|
|
293
|
-
i = l - w > 0;
|
|
288
|
+
g.forEach((m) => {
|
|
289
|
+
if (m.type === "inbound-rtp" && m.kind === "video") {
|
|
290
|
+
if (r = t.length - 1, m && t[r]) {
|
|
291
|
+
const w = m.bytesReceived, f = t[r].bytesReceived, M = o;
|
|
294
292
|
let C;
|
|
295
|
-
if (f !==
|
|
296
|
-
if (
|
|
297
|
-
n = t.length;
|
|
293
|
+
if (o = w - f > 0, i = o ? 0 : ++i, M !== o)
|
|
294
|
+
if (o)
|
|
295
|
+
n = t.length, a == null || a(T.Start, C);
|
|
298
296
|
else {
|
|
299
|
-
const
|
|
300
|
-
C = se(
|
|
297
|
+
const L = t.slice(n), x = n === 0 ? void 0 : t[n - 1];
|
|
298
|
+
C = se(L, x), C = C.sort((_, s) => s.packetsLost - _.packetsLost).slice(0, 5);
|
|
301
299
|
}
|
|
302
|
-
|
|
303
|
-
}
|
|
300
|
+
!o && i === 3 && (a == null || a(T.Stop, C));
|
|
304
301
|
}
|
|
305
|
-
t.push(
|
|
302
|
+
t.push(m);
|
|
306
303
|
}
|
|
307
304
|
});
|
|
308
305
|
});
|
|
@@ -313,18 +310,18 @@ async function ge(e, a, {
|
|
|
313
310
|
callbacks: n,
|
|
314
311
|
auth: r,
|
|
315
312
|
analytics: i,
|
|
316
|
-
baseURL:
|
|
313
|
+
baseURL: o = P
|
|
317
314
|
}) {
|
|
318
315
|
U = t;
|
|
319
|
-
let
|
|
316
|
+
let c;
|
|
320
317
|
const {
|
|
321
|
-
startConnection:
|
|
322
|
-
sendStreamRequest:
|
|
318
|
+
startConnection: g,
|
|
319
|
+
sendStreamRequest: m,
|
|
323
320
|
close: w,
|
|
324
321
|
createStream: f,
|
|
325
|
-
addIceCandidate:
|
|
326
|
-
} = a.videoType === k.Clip ? ie(r,
|
|
327
|
-
id:
|
|
322
|
+
addIceCandidate: M
|
|
323
|
+
} = a.videoType === k.Clip ? ie(r, o, e) : ae(r, o, e), {
|
|
324
|
+
id: C,
|
|
328
325
|
offer: L,
|
|
329
326
|
ice_servers: x,
|
|
330
327
|
session_id: _
|
|
@@ -333,70 +330,70 @@ async function ge(e, a, {
|
|
|
333
330
|
}), u = s.createDataChannel("JanusDataChannel");
|
|
334
331
|
if (!_)
|
|
335
332
|
throw new Error("Could not create session_id");
|
|
336
|
-
const
|
|
337
|
-
s.onicecandidate = (
|
|
338
|
-
A("peerConnection.onicecandidate",
|
|
339
|
-
candidate:
|
|
340
|
-
sdpMid:
|
|
341
|
-
sdpMLineIndex:
|
|
342
|
-
}, _) : C
|
|
333
|
+
const l = ce(s, n.onVideoStateChange);
|
|
334
|
+
s.onicecandidate = (d) => {
|
|
335
|
+
A("peerConnection.onicecandidate", d), d.candidate && d.candidate.sdpMid && d.candidate.sdpMLineIndex !== null ? M(C, {
|
|
336
|
+
candidate: d.candidate.candidate,
|
|
337
|
+
sdpMid: d.candidate.sdpMid,
|
|
338
|
+
sdpMLineIndex: d.candidate.sdpMLineIndex
|
|
339
|
+
}, _) : M(C, {
|
|
343
340
|
candidate: null
|
|
344
341
|
}, _);
|
|
345
342
|
}, s.oniceconnectionstatechange = () => {
|
|
346
343
|
var h;
|
|
347
344
|
A("peerConnection.oniceconnectionstatechange => " + s.iceConnectionState);
|
|
348
|
-
const
|
|
349
|
-
|
|
345
|
+
const d = de(s.iceConnectionState);
|
|
346
|
+
d === R.Connected ? c = setTimeout(() => {
|
|
350
347
|
var S;
|
|
351
348
|
(S = n.onConnectionStateChange) == null || S.call(n, R.Connected);
|
|
352
|
-
}, 5e3) : (clearTimeout(
|
|
353
|
-
}, s.ontrack = (
|
|
349
|
+
}, 5e3) : (clearTimeout(c), (h = n.onConnectionStateChange) == null || h.call(n, d));
|
|
350
|
+
}, s.ontrack = (d) => {
|
|
354
351
|
var h;
|
|
355
|
-
A("peerConnection.ontrack",
|
|
356
|
-
}, u.onmessage = (
|
|
352
|
+
A("peerConnection.ontrack", d), (h = n.onSrcObjectReady) == null || h.call(n, d.streams[0]);
|
|
353
|
+
}, u.onmessage = (d) => {
|
|
357
354
|
var h, S;
|
|
358
355
|
if (u.readyState === "open") {
|
|
359
|
-
const [v, y] =
|
|
356
|
+
const [v, y] = d.data.split(":");
|
|
360
357
|
v === $.StreamStarted ? i == null || i.track("agent-video", {
|
|
361
358
|
event: "start",
|
|
362
|
-
...
|
|
359
|
+
...d
|
|
363
360
|
}) : v === $.StreamDone ? i == null || i.track("agent-video", {
|
|
364
361
|
event: "stop",
|
|
365
|
-
...
|
|
362
|
+
...d
|
|
366
363
|
}) : v === $.StreamFailed ? ((h = n.onVideoStateChange) == null || h.call(n, T.Stop, {
|
|
367
364
|
event: v,
|
|
368
365
|
data: y
|
|
369
|
-
}), clearInterval(
|
|
366
|
+
}), clearInterval(l)) : v === $.StreamReady ? (clearTimeout(c), (S = n.onConnectionStateChange) == null || S.call(n, R.Connected)) : v === $.StreamCreated ? i == null || i.track("agent-video", {
|
|
370
367
|
event: "created",
|
|
371
|
-
...
|
|
368
|
+
...d
|
|
372
369
|
}) : v === $.StreamVideoCreated ? i == null || i.track("agent-video", {
|
|
373
370
|
event: "video-created",
|
|
374
|
-
...
|
|
371
|
+
...d
|
|
375
372
|
}) : v === $.StreamVideoDone ? i == null || i.track("agent-video", {
|
|
376
373
|
event: "video-done",
|
|
377
|
-
...
|
|
374
|
+
...d
|
|
378
375
|
}) : v === $.StreamVideoError && (i == null || i.track("agent-video", {
|
|
379
376
|
event: "video-error",
|
|
380
|
-
...
|
|
377
|
+
...d
|
|
381
378
|
}));
|
|
382
379
|
}
|
|
383
380
|
}, await s.setRemoteDescription(L), A("set remote description OK");
|
|
384
381
|
const p = await s.createAnswer();
|
|
385
|
-
return A("create answer OK"), await s.setLocalDescription(p), A("set local description OK"), await
|
|
382
|
+
return A("create answer OK"), await s.setLocalDescription(p), A("set local description OK"), await g(C, p, _), A("start connection OK"), {
|
|
386
383
|
/**
|
|
387
384
|
* Method to send request to server to get clip or talk depend on you payload
|
|
388
385
|
* @param payload
|
|
389
386
|
*/
|
|
390
|
-
speak(
|
|
391
|
-
return
|
|
387
|
+
speak(d) {
|
|
388
|
+
return m(C, _, d);
|
|
392
389
|
},
|
|
393
390
|
/**
|
|
394
391
|
* Method to close RTC connection
|
|
395
392
|
*/
|
|
396
393
|
async disconnect() {
|
|
397
|
-
var
|
|
398
|
-
|
|
399
|
-
}), (
|
|
394
|
+
var d, h;
|
|
395
|
+
C && (s && (s.close(), s.oniceconnectionstatechange = null, s.onnegotiationneeded = null, s.onicecandidate = null, s.ontrack = null), await w(C, _).catch((S) => {
|
|
396
|
+
}), (d = n.onConnectionStateChange) == null || d.call(n, R.New), (h = n.onVideoStateChange) == null || h.call(n, T.Stop), clearInterval(l));
|
|
400
397
|
},
|
|
401
398
|
/**
|
|
402
399
|
* Session identifier information, should be returned in the body of all streaming requests
|
|
@@ -405,7 +402,7 @@ async function ge(e, a, {
|
|
|
405
402
|
/**
|
|
406
403
|
* Id of current RTC stream
|
|
407
404
|
*/
|
|
408
|
-
streamId:
|
|
405
|
+
streamId: C
|
|
409
406
|
};
|
|
410
407
|
}
|
|
411
408
|
function me(e) {
|
|
@@ -448,12 +445,12 @@ function me(e) {
|
|
|
448
445
|
};
|
|
449
446
|
}
|
|
450
447
|
function le(e) {
|
|
451
|
-
var n, r, i,
|
|
448
|
+
var n, r, i, o, c;
|
|
452
449
|
const a = () => /Mobi|Android/i.test(navigator.userAgent) ? "Mobile" : "Desktop";
|
|
453
450
|
return {
|
|
454
451
|
$os: `${(() => {
|
|
455
|
-
const
|
|
456
|
-
return
|
|
452
|
+
const g = navigator.platform;
|
|
453
|
+
return g.toLowerCase().includes("win") ? "Windows" : g.toLowerCase().includes("mac") ? "Mac OS X" : g.toLowerCase().includes("linux") ? "Linux" : "Unknown";
|
|
457
454
|
})()}`,
|
|
458
455
|
isMobile: `${a() == "Mobile"}`,
|
|
459
456
|
browser: navigator.userAgent,
|
|
@@ -461,7 +458,7 @@ function le(e) {
|
|
|
461
458
|
agentType: (n = e.presenter) == null ? void 0 : n.type,
|
|
462
459
|
agentVoice: {
|
|
463
460
|
voiceId: (i = (r = e.presenter) == null ? void 0 : r.voice) == null ? void 0 : i.voice_id,
|
|
464
|
-
provider: (
|
|
461
|
+
provider: (c = (o = e.presenter) == null ? void 0 : o.voice) == null ? void 0 : c.type
|
|
465
462
|
}
|
|
466
463
|
};
|
|
467
464
|
}
|
|
@@ -483,40 +480,40 @@ function ue(e) {
|
|
|
483
480
|
};
|
|
484
481
|
}
|
|
485
482
|
function W(e, a, t, n, r) {
|
|
486
|
-
return new Promise(async (i,
|
|
487
|
-
let
|
|
488
|
-
const
|
|
483
|
+
return new Promise(async (i, o) => {
|
|
484
|
+
let c = r;
|
|
485
|
+
const g = await ge(e.id, ue(e), {
|
|
489
486
|
...a,
|
|
490
487
|
callbacks: {
|
|
491
488
|
...a.callbacks,
|
|
492
|
-
onConnectionStateChange: async (
|
|
489
|
+
onConnectionStateChange: async (m) => {
|
|
493
490
|
var w, f;
|
|
494
|
-
if (
|
|
491
|
+
if (m === R.Connected)
|
|
495
492
|
try {
|
|
496
|
-
|
|
493
|
+
c || (c = await t.newChat(e.id), n.track("agent-chat", {
|
|
497
494
|
event: "created",
|
|
498
|
-
chat_id:
|
|
495
|
+
chat_id: c.id,
|
|
499
496
|
agent_id: e.id
|
|
500
|
-
})),
|
|
501
|
-
chat:
|
|
502
|
-
streamingManager:
|
|
497
|
+
})), g && i({
|
|
498
|
+
chat: c,
|
|
499
|
+
streamingManager: g
|
|
503
500
|
});
|
|
504
|
-
} catch (
|
|
505
|
-
console.error(
|
|
501
|
+
} catch (M) {
|
|
502
|
+
console.error(M), o("Cannot create new chat");
|
|
506
503
|
}
|
|
507
504
|
else
|
|
508
|
-
|
|
509
|
-
(f = (w = a.callbacks).onConnectionStateChange) == null || f.call(w,
|
|
505
|
+
m === R.Fail && o(new Error("Cannot create connection"));
|
|
506
|
+
(f = (w = a.callbacks).onConnectionStateChange) == null || f.call(w, m);
|
|
510
507
|
},
|
|
511
|
-
onVideoStateChange(
|
|
512
|
-
var f,
|
|
508
|
+
onVideoStateChange(m, w) {
|
|
509
|
+
var f, M;
|
|
513
510
|
n.track("agent-video", {
|
|
514
|
-
event:
|
|
511
|
+
event: m,
|
|
515
512
|
rtc_stats: w ?? []
|
|
516
|
-
}), (
|
|
513
|
+
}), (M = (f = a.callbacks).onVideoStateChange) == null || M.call(f, m, w);
|
|
517
514
|
}
|
|
518
515
|
}
|
|
519
|
-
}).catch(
|
|
516
|
+
}).catch(o);
|
|
520
517
|
});
|
|
521
518
|
}
|
|
522
519
|
function he(e, a, t) {
|
|
@@ -543,85 +540,87 @@ async function we(e, a) {
|
|
|
543
540
|
chatMode: a.mode || E.Functional
|
|
544
541
|
};
|
|
545
542
|
let n = -1;
|
|
546
|
-
const r = a.wsURL || Z, i = a.baseURL || P,
|
|
547
|
-
t.messages = O(
|
|
548
|
-
const
|
|
549
|
-
mixPanelKey:
|
|
550
|
-
agent:
|
|
543
|
+
const r = a.wsURL || Z, i = a.baseURL || P, o = a.mixpanelKey || G, c = H(a.auth, i), g = await c.getById(e);
|
|
544
|
+
t.messages = O(g), (x = (L = a.callbacks).onNewMessage) == null || x.call(L, t.messages);
|
|
545
|
+
const m = me({
|
|
546
|
+
mixPanelKey: o,
|
|
547
|
+
agent: g,
|
|
551
548
|
...a
|
|
552
549
|
});
|
|
553
|
-
|
|
550
|
+
m.track("agent-sdk", {
|
|
554
551
|
event: "loaded",
|
|
555
|
-
...le(
|
|
552
|
+
...le(g)
|
|
556
553
|
});
|
|
557
554
|
const w = {
|
|
558
555
|
onMessage: (s, u) => {
|
|
559
|
-
var
|
|
556
|
+
var l, p;
|
|
560
557
|
if ("content" in u) {
|
|
561
558
|
const {
|
|
562
|
-
content:
|
|
559
|
+
content: d
|
|
563
560
|
} = u, h = t.messages[t.messages.length - 1];
|
|
564
|
-
(h == null ? void 0 : h.role) === "assistant" && (n < t.messages.length && (h.content = s === N.Partial ? h.content +
|
|
561
|
+
(h == null ? void 0 : h.role) === "assistant" && (n < t.messages.length && (h.content = s === N.Partial ? h.content + d : d), s === N.Answer && (n = t.messages.length)), s === N.Complete && m.track("agent-message-received", {
|
|
565
562
|
messages: t.messages.length
|
|
566
|
-
}), (p = (
|
|
563
|
+
}), (p = (l = a.callbacks).onNewMessage) == null || p.call(l, t.messages);
|
|
567
564
|
}
|
|
568
565
|
}
|
|
569
566
|
};
|
|
570
567
|
async function f() {
|
|
571
|
-
var p,
|
|
568
|
+
var p, d, h, S, v;
|
|
572
569
|
const s = await F(a.auth, r, w), {
|
|
573
570
|
streamingManager: u,
|
|
574
|
-
chat:
|
|
575
|
-
} = await W(
|
|
576
|
-
n = -1, t.messages = O(
|
|
571
|
+
chat: l
|
|
572
|
+
} = await W(g, a, c, m, t.chat);
|
|
573
|
+
n = -1, t.messages = O(g), (d = (p = a.callbacks).onNewMessage) == null || d.call(p, t.messages), l != null && l.id && l.id !== ((h = t.chat) == null ? void 0 : h.id) && ((v = (S = a.callbacks).onNewChat) == null || v.call(S, l == null ? void 0 : l.id)), t.streamingManager = u, t.socketManager = s, t.chat = l, C(E.Functional), m.track("agent-chat", {
|
|
577
574
|
event: "connect",
|
|
578
|
-
chatId:
|
|
579
|
-
agentId:
|
|
575
|
+
chatId: l.id,
|
|
576
|
+
agentId: g.id
|
|
580
577
|
});
|
|
581
578
|
}
|
|
582
|
-
async function
|
|
583
|
-
var s, u,
|
|
584
|
-
(s = t.socketManager) == null || s.disconnect(), await ((u = t.streamingManager) == null ? void 0 : u.disconnect()), delete t.streamingManager, delete t.socketManager, t.messages = O(
|
|
579
|
+
async function M() {
|
|
580
|
+
var s, u, l, p, d;
|
|
581
|
+
(s = t.socketManager) == null || s.disconnect(), await ((u = t.streamingManager) == null ? void 0 : u.disconnect()), delete t.streamingManager, delete t.socketManager, t.messages = O(g), (p = (l = a.callbacks).onNewMessage) == null || p.call(l, t.messages), m.track("agent-chat", {
|
|
585
582
|
event: "disconnect",
|
|
586
|
-
chatId: (
|
|
587
|
-
agentId:
|
|
583
|
+
chatId: (d = t.chat) == null ? void 0 : d.id,
|
|
584
|
+
agentId: g.id
|
|
588
585
|
});
|
|
589
586
|
}
|
|
590
|
-
async function
|
|
591
|
-
var u,
|
|
592
|
-
s !== t.chatMode && (
|
|
587
|
+
async function C(s) {
|
|
588
|
+
var u, l;
|
|
589
|
+
s !== t.chatMode && (m.track("agent-mode-change", {
|
|
593
590
|
mode: s
|
|
594
|
-
}), t.chatMode = s, t.chatMode !== E.Functional && await
|
|
591
|
+
}), t.chatMode = s, t.chatMode !== E.Functional && await M(), (l = (u = a.callbacks).onModeChange) == null || l.call(u, s));
|
|
595
592
|
}
|
|
596
593
|
return {
|
|
597
|
-
agent:
|
|
598
|
-
starterMessages: ((_ =
|
|
594
|
+
agent: g,
|
|
595
|
+
starterMessages: ((_ = g.knowledge) == null ? void 0 : _.starter_message) || [],
|
|
599
596
|
connect: f,
|
|
600
|
-
disconnect:
|
|
601
|
-
changeMode:
|
|
597
|
+
disconnect: M,
|
|
598
|
+
changeMode: C,
|
|
602
599
|
async reconnect() {
|
|
603
600
|
if (!t.chat)
|
|
604
601
|
return f();
|
|
605
602
|
const s = await F(a.auth, r, w), {
|
|
606
603
|
streamingManager: u,
|
|
607
|
-
chat:
|
|
608
|
-
} = await W(
|
|
609
|
-
t.streamingManager = u, t.socketManager = s,
|
|
604
|
+
chat: l
|
|
605
|
+
} = await W(g, a, c, m, t.chat);
|
|
606
|
+
t.streamingManager = u, t.socketManager = s, C(E.Functional), m.track("agent-chat", {
|
|
610
607
|
event: "reconnect",
|
|
611
|
-
chatId:
|
|
612
|
-
agentId:
|
|
608
|
+
chatId: l.id,
|
|
609
|
+
agentId: g.id
|
|
613
610
|
});
|
|
614
611
|
},
|
|
615
612
|
async chat(s, u = !1) {
|
|
616
|
-
var
|
|
613
|
+
var l, p, d, h, S, v;
|
|
617
614
|
try {
|
|
615
|
+
if (s.length >= 800)
|
|
616
|
+
throw new Error("Message cannot be more than 800 characters");
|
|
618
617
|
const y = Date.now();
|
|
619
618
|
if (t.messages.push({
|
|
620
619
|
id: b(),
|
|
621
620
|
role: "user",
|
|
622
621
|
content: s,
|
|
623
622
|
created_at: new Date(y).toISOString()
|
|
624
|
-
}), (p = (
|
|
623
|
+
}), (p = (l = a.callbacks).onNewMessage) == null || p.call(l, t.messages), s.length === 0)
|
|
625
624
|
throw new Error("Message cannot be empty");
|
|
626
625
|
if (t.chatMode === E.Maintenance)
|
|
627
626
|
throw new Error("Chat is in maintenance mode");
|
|
@@ -631,15 +630,15 @@ async function we(e, a) {
|
|
|
631
630
|
if (!t.chat)
|
|
632
631
|
throw new Error("Chat is not initialized");
|
|
633
632
|
} else
|
|
634
|
-
t.chat || (t.chat = await
|
|
635
|
-
const I = await
|
|
636
|
-
sessionId: (
|
|
633
|
+
t.chat || (t.chat = await c.newChat(g.id));
|
|
634
|
+
const I = await c.chat(g.id, t.chat.id, {
|
|
635
|
+
sessionId: (d = t.streamingManager) == null ? void 0 : d.sessionId,
|
|
637
636
|
streamId: (h = t.streamingManager) == null ? void 0 : h.streamId,
|
|
638
637
|
messages: t.messages,
|
|
639
638
|
chatMode: t.chatMode,
|
|
640
639
|
append_chat: u
|
|
641
640
|
});
|
|
642
|
-
return
|
|
641
|
+
return m.track("agent-message-send", {
|
|
643
642
|
event: "success",
|
|
644
643
|
messages: t.messages.length + 1
|
|
645
644
|
}), t.messages.push({
|
|
@@ -648,18 +647,18 @@ async function we(e, a) {
|
|
|
648
647
|
content: I.result ?? "",
|
|
649
648
|
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
650
649
|
matches: I.matches
|
|
651
|
-
}), I.result &&
|
|
650
|
+
}), I.result && m.track("agent-message-received", {
|
|
652
651
|
latency: Date.now() - y,
|
|
653
652
|
messages: t.messages.length
|
|
654
653
|
}), (v = (S = a.callbacks).onNewMessage) == null || v.call(S, t.messages), I;
|
|
655
654
|
} catch (y) {
|
|
656
|
-
throw
|
|
655
|
+
throw m.track("agent-message-send", {
|
|
657
656
|
event: "error",
|
|
658
657
|
messages: t.messages.length
|
|
659
658
|
}), y;
|
|
660
659
|
}
|
|
661
660
|
},
|
|
662
|
-
rate(s, u,
|
|
661
|
+
rate(s, u, l) {
|
|
663
662
|
var h, S, v, y;
|
|
664
663
|
const p = t.messages.find((I) => I.id === s);
|
|
665
664
|
if (t.chat) {
|
|
@@ -667,22 +666,22 @@ async function we(e, a) {
|
|
|
667
666
|
throw new Error("Message not found");
|
|
668
667
|
} else
|
|
669
668
|
throw new Error("Chat is not initialized");
|
|
670
|
-
const
|
|
671
|
-
return
|
|
672
|
-
event:
|
|
669
|
+
const d = ((h = p.matches) == null ? void 0 : h.map((I) => [I.document_id, I.id])) ?? [];
|
|
670
|
+
return m.track("agent-rate", {
|
|
671
|
+
event: l ? "update" : "create",
|
|
673
672
|
thumb: u === 1 ? "up" : "down",
|
|
674
|
-
knowledge_id: ((S =
|
|
675
|
-
matches:
|
|
673
|
+
knowledge_id: ((S = g.knowledge) == null ? void 0 : S.id) ?? "",
|
|
674
|
+
matches: d,
|
|
676
675
|
score: u
|
|
677
|
-
}),
|
|
678
|
-
knowledge_id: ((v =
|
|
676
|
+
}), l ? c.updateRating(g.id, t.chat.id, l, {
|
|
677
|
+
knowledge_id: ((v = g.knowledge) == null ? void 0 : v.id) ?? "",
|
|
679
678
|
message_id: s,
|
|
680
|
-
matches:
|
|
679
|
+
matches: d,
|
|
681
680
|
score: u
|
|
682
|
-
}) :
|
|
683
|
-
knowledge_id: ((y =
|
|
681
|
+
}) : c.createRating(g.id, t.chat.id, {
|
|
682
|
+
knowledge_id: ((y = g.knowledge) == null ? void 0 : y.id) ?? "",
|
|
684
683
|
message_id: s,
|
|
685
|
-
matches:
|
|
684
|
+
matches: d,
|
|
686
685
|
score: u
|
|
687
686
|
});
|
|
688
687
|
},
|
|
@@ -690,21 +689,21 @@ async function we(e, a) {
|
|
|
690
689
|
var u;
|
|
691
690
|
if (!t.chat)
|
|
692
691
|
throw new Error("Chat is not initialized");
|
|
693
|
-
return
|
|
692
|
+
return m.track("agent-rate-delete", {
|
|
694
693
|
type: "text",
|
|
695
694
|
chat_id: (u = t.chat) == null ? void 0 : u.id,
|
|
696
695
|
id: s
|
|
697
|
-
}),
|
|
696
|
+
}), c.deleteRating(g.id, t.chat.id, s);
|
|
698
697
|
},
|
|
699
698
|
speak(s) {
|
|
700
699
|
if (!t.streamingManager)
|
|
701
700
|
throw new Error("Streaming manager is not initialized");
|
|
702
701
|
function u() {
|
|
703
|
-
if (
|
|
702
|
+
if (g.presenter) {
|
|
704
703
|
if (s.type === "text")
|
|
705
704
|
return {
|
|
706
705
|
type: "text",
|
|
707
|
-
provider: s.provider ? s.provider :
|
|
706
|
+
provider: s.provider ? s.provider : g.presenter.voice,
|
|
708
707
|
input: s.input,
|
|
709
708
|
ssml: s.ssml || !1
|
|
710
709
|
};
|
|
@@ -717,9 +716,9 @@ async function we(e, a) {
|
|
|
717
716
|
throw new Error("Presenter is not initialized");
|
|
718
717
|
throw new Error("Invalid payload");
|
|
719
718
|
}
|
|
720
|
-
const
|
|
721
|
-
return
|
|
722
|
-
script:
|
|
719
|
+
const l = u();
|
|
720
|
+
return m.track("agent-speak", l), t.streamingManager.speak({
|
|
721
|
+
script: l
|
|
723
722
|
});
|
|
724
723
|
}
|
|
725
724
|
};
|
|
@@ -729,13 +728,13 @@ export {
|
|
|
729
728
|
N as ChatProgress,
|
|
730
729
|
R as ConnectionState,
|
|
731
730
|
Q as DocumentType,
|
|
732
|
-
|
|
733
|
-
|
|
731
|
+
V as KnowledgeType,
|
|
732
|
+
B as PlanGroup,
|
|
734
733
|
X as Providers,
|
|
735
|
-
|
|
734
|
+
J as RateState,
|
|
736
735
|
$ as StreamEvents,
|
|
737
736
|
T as StreamingState,
|
|
738
|
-
|
|
737
|
+
q as Subject,
|
|
739
738
|
j as UserPlan,
|
|
740
739
|
k as VideoType,
|
|
741
740
|
Y as VoiceAccess,
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(w,L){typeof exports=="object"&&typeof module<"u"?L(exports):typeof define=="function"&&define.amd?define(["exports"],L):(w=typeof globalThis<"u"?globalThis:w||self,L(w.index={}))})(this,function(w){"use strict";var L=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(L||{}),W=(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))(W||{}),z=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(z||{}),E=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))(E||{}),O=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(O||{}),H=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(H||{}),j=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(j||{}),U=(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))(U||{}),S=(e=>(e.Clip="clip",e.Talk="talk",e))(S||{}),P=(e=>(e.Start="START",e.Stop="STOP",e))(P||{}),I=(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))(I||{}),y=(e=>(e[e.New=0]="New",e[e.Fail=1]="Fail",e[e.Connected=2]="Connected",e[e.Connecting=3]="Connecting",e[e.Terminating=4]="Terminating",e))(y||{}),V=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(V||{}),B=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(B||{});const K="https://api.d-id.com",G="wss://notifications.d-id.com",ee="79f81a83a67430be2bc0fd61042b8faa",x=()=>Math.random().toString(16).slice(2);function J(){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 te=x();function q(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}.${J()}_${te}`;throw new Error(`Unknown auth type: ${e}`)}function D(e,a=K){const t=async(n,r)=>{const i=await fetch(a+(n!=null&&n.startsWith("/")?n:`/${n}`),{...r,headers:{...r==null?void 0:r.headers,Authorization:q(e),"Content-Type":"application/json"}});if(!i.ok){let d=await i.text().catch(()=>"Failed to fetch");throw new Error(d)}return i.json()};return{get(n,r){return t(n,{...r,method:"GET"})},post(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"POST"})},delete(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"DELETE"})},patch(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"PATCH"})}}}function Q(e,a=K){const t=D(e,`${a}/agents`);return{create(n,r){return t.post("/",n,r)},getAgents(n,r){return t.get(`/${n?`?tag=${n}`:""}`,r).then(i=>i??[])},getById(n,r){return t.get(`/${n}`,r)},delete(n,r){return t.delete(`/${n}`,void 0,r)},update(n,r,i){return t.patch(`/${n}`,r,i)},newChat(n,r){return t.post(`/${n}/chat`,void 0,r)},chat(n,r,i,d){return t.post(`/${n}/chat/${r}`,i,d)},createRating(n,r,i,d){return t.post(`/${n}/chat/${r}/ratings`,i,d)},updateRating(n,r,i,d,g){return t.patch(`/${n}/chat/${r}/ratings/${i}`,d,g)},deleteRating(n,r,i,d){return t.delete(`/${n}/chat/${r}/ratings/${i}`,d)}}}const ne=e=>new Promise(a=>setTimeout(a,e));function re(e){return new Promise((a,t)=>{const{callbacks:n,host:r,auth:i}=e,{onMessage:d=null,onOpen:g=null,onClose:c=null,onError:l=null}=n||{},f=new WebSocket(`${r}?authorization=${q(i)}`);f.onmessage=d,f.onclose=c,f.onerror=p=>{console.error(p),l==null||l("Websocket failed to connect",p),t(p)},f.onopen=p=>{g==null||g(p),a(f)}})}async function ie(e){const{retries:a=1}=e;let t=null;for(let n=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;n++)try{t=await re(e)}catch(r){if(n===a)throw r;await ne(n*500)}return t}async function X(e,a,t){const n=t!=null&&t.onMessage?[t.onMessage]:[],r=await ie({auth:e,host:a,callbacks:{onError:t==null?void 0:t.onError,onMessage:i=>{const d=JSON.parse(i.data);n.forEach(g=>g(d.event,d))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:i=>n.push(i)}}function ae(e,a,t){const n=D(e,`${a}/agents/${t}`);return{createStream(r){return n.post("/streams",{driver_id:r.driver_id,presenter_id:r.presenter_id,compatibility_mode:r.compatibility_mode,stream_warmup:r.stream_warmup,type:S.Clip})},startConnection(r,i,d){return n.post(`/streams/${r}/sdp`,{session_id:d,answer:i,type:S.Clip})},addIceCandidate(r,i,d){return n.post(`/streams/${r}/ice`,{session_id:d,...i,type:S.Clip})},sendStreamRequest(r,i,d){return n.post(`/streams/${r}`,{session_id:i,...d,type:S.Clip})},close(r,i){return n.delete(`/streams/${r}`,{session_id:i,type:S.Clip})}}}function se(e,a,t){const n=D(e,`${a}/agents/${t}`);return{createStream(r,i){return n.post("/streams",{source_url:r.source_url,driver_url:r.driver_url,face:r.face,config:r.config,stream_warmup:r.stream_warmup,type:S.Talk},i)},startConnection(r,i,d,g){return n.post(`/streams/${r}/sdp`,{session_id:d,answer:i,type:S.Talk},g)},addIceCandidate(r,i,d,g){return n.post(`/streams/${r}/ice`,{session_id:d,...i,type:S.Talk},g)},sendStreamRequest(r,i,d,g){return n.post(`/streams/${r}`,{session_id:i,...d,type:S.Talk},g)},close(r,i,d){return n.delete(`/streams/${r}`,{session_id:i,type:S.Talk},d)}}}function oe(e,a){return e.map((t,n)=>n===0?a?{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-a.bytesReceived,packetsReceived:t.packetsReceived-a.packetsReceived,packetsLost:t.packetsLost-a.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived,packetsReceived:t.packetsReceived,packetsLost:t.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-e[n-1].bytesReceived,packetsReceived:t.packetsReceived-e[n-1].packetsReceived,packetsLost:t.packetsLost-e[n-1].packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond})}let Y=!1;const T=(e,a)=>Y&&console.log(e,a),de=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ce(e){switch(e){case"connected":return y.Connected;case"checking":return y.Connecting;case"failed":return y.Fail;case"new":case"closed":case"disconnected":default:return y.New}}function ge(e,a){let t=[],n=0,r=0,i;return setInterval(()=>{e.getStats().then(g=>{g.forEach(c=>{if(c.type==="inbound-rtp"&&c.kind==="video"){if(r=t.length-1,c&&t[r]){const l=c.bytesReceived,f=t[r].bytesReceived;let p=i;i=l-f>0;let M;if(p!==i){if(i)n=t.length;else{const _=t.slice(n),b=n===0?void 0:t[n-1];M=oe(_,b),M=M.sort((N,R)=>R.packetsLost-N.packetsLost).slice(0,5)}a==null||a(i?P.Start:P.Stop,M)}}t.push(c)}})})},500)}async function me(e,a,{debug:t=!1,callbacks:n,auth:r,analytics:i,baseURL:d=K}){Y=t;let g;const{startConnection:c,sendStreamRequest:l,close:f,createStream:p,addIceCandidate:M}=a.videoType===S.Clip?ae(r,d,e):se(r,d,e),{id:_,offer:b,ice_servers:N,session_id:R}=await p(a),s=new de({iceServers:N}),u=s.createDataChannel("JanusDataChannel");if(!R)throw new Error("Could not create session_id");const m=ge(s,n.onVideoStateChange);s.onicecandidate=o=>{T("peerConnection.onicecandidate",o),o.candidate&&o.candidate.sdpMid&&o.candidate.sdpMLineIndex!==null?M(_,{candidate:o.candidate.candidate,sdpMid:o.candidate.sdpMid,sdpMLineIndex:o.candidate.sdpMLineIndex},R):M(_,{candidate:null},R)},s.oniceconnectionstatechange=()=>{var h;T("peerConnection.oniceconnectionstatechange => "+s.iceConnectionState);const o=ce(s.iceConnectionState);o===y.Connected?g=setTimeout(()=>{var k;(k=n.onConnectionStateChange)==null||k.call(n,y.Connected)},5e3):(clearTimeout(g),(h=n.onConnectionStateChange)==null||h.call(n,o))},s.ontrack=o=>{var h;T("peerConnection.ontrack",o),(h=n.onSrcObjectReady)==null||h.call(n,o.streams[0])},u.onmessage=o=>{var h,k;if(u.readyState==="open"){const[C,A]=o.data.split(":");C===I.StreamStarted?i==null||i.track("agent-video",{event:"start",...o}):C===I.StreamDone?i==null||i.track("agent-video",{event:"stop",...o}):C===I.StreamFailed?((h=n.onVideoStateChange)==null||h.call(n,P.Stop,{event:C,data:A}),clearInterval(m)):C===I.StreamReady?(clearTimeout(g),(k=n.onConnectionStateChange)==null||k.call(n,y.Connected)):C===I.StreamCreated?i==null||i.track("agent-video",{event:"created",...o}):C===I.StreamVideoCreated?i==null||i.track("agent-video",{event:"video-created",...o}):C===I.StreamVideoDone?i==null||i.track("agent-video",{event:"video-done",...o}):C===I.StreamVideoError&&(i==null||i.track("agent-video",{event:"video-error",...o}))}},await s.setRemoteDescription(b),T("set remote description OK");const v=await s.createAnswer();return T("create answer OK"),await s.setLocalDescription(v),T("set local description OK"),await c(_,v,R),T("start connection OK"),{speak(o){return l(_,R,o)},async disconnect(){var o,h;_&&(s&&(s.close(),s.oniceconnectionstatechange=null,s.onnegotiationneeded=null,s.onicecandidate=null,s.ontrack=null),await f(_,R).catch(k=>{}),(o=n.onConnectionStateChange)==null||o.call(n,y.New),(h=n.onVideoStateChange)==null||h.call(n,P.Stop),clearInterval(m))},sessionId:R,streamId:_}}function le(e){const a={mixPanelKey:e.mixPanelKey||"testKey",distinct_id:e.distinctId||J(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...a,getRandom:()=>Math.random().toString(16).slice(2),track(t,n){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const r={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...n,...a,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",r).then(i=>i.json()).catch(i=>console.error(i))}}}function ue(e){var n,r,i,d,g;const a=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const c=navigator.platform;return c.toLowerCase().includes("win")?"Windows":c.toLowerCase().includes("mac")?"Mac OS X":c.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${a()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(n=e.presenter)==null?void 0:n.type,agentVoice:{voiceId:(i=(r=e.presenter)==null?void 0:r.voice)==null?void 0:i.voice_id,provider:(g=(d=e.presenter)==null?void 0:d.voice)==null?void 0:g.type}}}function he(e){if(e.presenter){if(e.presenter.type===S.Clip)return{videoType:S.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");return{videoType:S.Talk,source_url:e.presenter.source_url,stream_warmup:!0}}function Z(e,a,t,n,r){return new Promise(async(i,d)=>{let g=r;const c=await me(e.id,he(e),{...a,callbacks:{...a.callbacks,onConnectionStateChange:async l=>{var f,p;if(l===y.Connected)try{g||(g=await t.newChat(e.id),n.track("agent-chat",{event:"created",chat_id:g.id,agent_id:e.id})),c&&i({chat:g,streamingManager:c})}catch(M){console.error(M),d("Cannot create new chat")}else l===y.Fail&&d(new Error("Cannot create connection"));(p=(f=a.callbacks).onConnectionStateChange)==null||p.call(f,l)},onVideoStateChange(l,f){var p,M;n.track("agent-video",{event:l,rtc_stats:f??[]}),(M=(p=a.callbacks).onVideoStateChange)==null||M.call(p,l,f)}}}).catch(d)})}function we(e,a,t){return Q(a,t||K).getById(e)}function F(e){let a="";if(e.greetings&&e.greetings.length>0){const t=Math.floor(Math.random()*e.greetings.length);a=e.greetings[t]}else a=`Hi! I'm ${e.preview_name}, welcome to agents. How can I help you?`;return[{content:a,id:x(),role:"assistant",created_at:new Date().toISOString()}]}async function fe(e,a){var b,N,R;const t={messages:[],chatMode:a.mode||E.Functional};let n=-1;const r=a.wsURL||G,i=a.baseURL||K,d=a.mixpanelKey||ee,g=Q(a.auth,i),c=await g.getById(e);t.messages=F(c),(N=(b=a.callbacks).onNewMessage)==null||N.call(b,t.messages);const l=le({mixPanelKey:d,agent:c,...a});l.track("agent-sdk",{event:"loaded",...ue(c)});const f={onMessage:(s,u)=>{var m,v;if("content"in u){const{content:o}=u,h=t.messages[t.messages.length-1];(h==null?void 0:h.role)==="assistant"&&(n<t.messages.length&&(h.content=s===O.Partial?h.content+o:o),s===O.Answer&&(n=t.messages.length)),s===O.Complete&&l.track("agent-message-received",{messages:t.messages.length}),(v=(m=a.callbacks).onNewMessage)==null||v.call(m,t.messages)}}};async function p(){var v,o,h,k,C;const s=await X(a.auth,r,f),{streamingManager:u,chat:m}=await Z(c,a,g,l,t.chat);n=-1,t.messages=F(c),(o=(v=a.callbacks).onNewMessage)==null||o.call(v,t.messages),m!=null&&m.id&&m.id!==((h=t.chat)==null?void 0:h.id)&&((C=(k=a.callbacks).onNewChat)==null||C.call(k,m==null?void 0:m.id)),t.streamingManager=u,t.socketManager=s,t.chat=m,_(E.Functional),l.track("agent-chat",{event:"connect",chatId:m.id,agentId:c.id})}async function M(){var s,u,m,v,o;(s=t.socketManager)==null||s.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,t.messages=F(c),(v=(m=a.callbacks).onNewMessage)==null||v.call(m,t.messages),l.track("agent-chat",{event:"disconnect",chatId:(o=t.chat)==null?void 0:o.id,agentId:c.id})}async function _(s){var u,m;s!==t.chatMode&&(l.track("agent-mode-change",{mode:s}),t.chatMode=s,t.chatMode!==E.Functional&&await M(),(m=(u=a.callbacks).onModeChange)==null||m.call(u,s))}return{agent:c,starterMessages:((R=c.knowledge)==null?void 0:R.starter_message)||[],connect:p,disconnect:M,changeMode:_,async reconnect(){if(!t.chat)return p();const s=await X(a.auth,r,f),{streamingManager:u,chat:m}=await Z(c,a,g,l,t.chat);t.streamingManager=u,t.socketManager=s,_(E.Functional),l.track("agent-chat",{event:"reconnect",chatId:m.id,agentId:c.id})},async chat(s,u=!1){var m,v,o,h,k,C;try{const A=Date.now();if(t.messages.push({id:x(),role:"user",content:s,created_at:new Date(A).toISOString()}),(v=(m=a.callbacks).onNewMessage)==null||v.call(m,t.messages),s.length===0)throw new Error("Message cannot be empty");if(t.chatMode===E.Maintenance)throw new Error("Chat is in maintenance mode");if(t.chatMode!==E.TextOnly){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");if(!t.chat)throw new Error("Chat is not initialized")}else t.chat||(t.chat=await g.newChat(c.id));const $=await g.chat(c.id,t.chat.id,{sessionId:(o=t.streamingManager)==null?void 0:o.sessionId,streamId:(h=t.streamingManager)==null?void 0:h.streamId,messages:t.messages,chatMode:t.chatMode,append_chat:u});return l.track("agent-message-send",{event:"success",messages:t.messages.length+1}),t.messages.push({id:x(),role:"assistant",content:$.result??"",created_at:new Date().toISOString(),matches:$.matches}),$.result&&l.track("agent-message-received",{latency:Date.now()-A,messages:t.messages.length}),(C=(k=a.callbacks).onNewMessage)==null||C.call(k,t.messages),$}catch(A){throw l.track("agent-message-send",{event:"error",messages:t.messages.length}),A}},rate(s,u,m){var h,k,C,A;const v=t.messages.find($=>$.id===s);if(t.chat){if(!v)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const o=((h=v.matches)==null?void 0:h.map($=>[$.document_id,$.id]))??[];return l.track("agent-rate",{event:m?"update":"create",thumb:u===1?"up":"down",knowledge_id:((k=c.knowledge)==null?void 0:k.id)??"",matches:o,score:u}),m?g.updateRating(c.id,t.chat.id,m,{knowledge_id:((C=c.knowledge)==null?void 0:C.id)??"",message_id:s,matches:o,score:u}):g.createRating(c.id,t.chat.id,{knowledge_id:((A=c.knowledge)==null?void 0:A.id)??"",message_id:s,matches:o,score:u})},deleteRate(s){var u;if(!t.chat)throw new Error("Chat is not initialized");return l.track("agent-rate-delete",{type:"text",chat_id:(u=t.chat)==null?void 0:u.id,id:s}),g.deleteRating(c.id,t.chat.id,s)},speak(s){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function u(){if(c.presenter){if(s.type==="text")return{type:"text",provider:s.provider?s.provider:c.presenter.voice,input:s.input,ssml:s.ssml||!1};if(s.type==="audio")return{type:"audio",audio_url:s.audio_url}}else throw new Error("Presenter is not initialized");throw new Error("Invalid payload")}const m=u();return l.track("agent-speak",m),t.streamingManager.speak({script:m})}}}w.ChatMode=E,w.ChatProgress=O,w.ConnectionState=y,w.DocumentType=U,w.KnowledgeType=j,w.PlanGroup=W,w.Providers=V,w.RateState=z,w.StreamEvents=I,w.StreamingState=P,w.Subject=H,w.UserPlan=L,w.VideoType=S,w.VoiceAccess=B,w.createAgentManager=fe,w.getAgent=we,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(w,P){typeof exports=="object"&&typeof module<"u"?P(exports):typeof define=="function"&&define.amd?define(["exports"],P):(w=typeof globalThis<"u"?globalThis:w||self,P(w.index={}))})(this,function(w){"use strict";var P=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(P||{}),W=(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))(W||{}),z=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(z||{}),E=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))(E||{}),O=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(O||{}),H=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(H||{}),j=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(j||{}),U=(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))(U||{}),M=(e=>(e.Clip="clip",e.Talk="talk",e))(M||{}),L=(e=>(e.Start="START",e.Stop="STOP",e))(L||{}),I=(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))(I||{}),_=(e=>(e[e.New=0]="New",e[e.Fail=1]="Fail",e[e.Connected=2]="Connected",e[e.Connecting=3]="Connecting",e[e.Terminating=4]="Terminating",e))(_||{}),B=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(B||{}),J=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(J||{});const K="https://api.d-id.com",G="wss://notifications.d-id.com",ee="79f81a83a67430be2bc0fd61042b8faa",x=()=>Math.random().toString(16).slice(2);function V(){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 te=x();function q(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}.${V()}_${te}`;throw new Error(`Unknown auth type: ${e}`)}function F(e,a=K){const t=async(n,r)=>{const i=await fetch(a+(n!=null&&n.startsWith("/")?n:`/${n}`),{...r,headers:{...r==null?void 0:r.headers,Authorization:q(e),"Content-Type":"application/json"}});if(!i.ok){let o=await i.text().catch(()=>"Failed to fetch");throw new Error(o)}return i.json()};return{get(n,r){return t(n,{...r,method:"GET"})},post(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"POST"})},delete(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"DELETE"})},patch(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"PATCH"})}}}function Q(e,a=K){const t=F(e,`${a}/agents`);return{create(n,r){return t.post("/",n,r)},getAgents(n,r){return t.get(`/${n?`?tag=${n}`:""}`,r).then(i=>i??[])},getById(n,r){return t.get(`/${n}`,r)},delete(n,r){return t.delete(`/${n}`,void 0,r)},update(n,r,i){return t.patch(`/${n}`,r,i)},newChat(n,r){return t.post(`/${n}/chat`,void 0,r)},chat(n,r,i,o){return t.post(`/${n}/chat/${r}`,i,o)},createRating(n,r,i,o){return t.post(`/${n}/chat/${r}/ratings`,i,o)},updateRating(n,r,i,o,c){return t.patch(`/${n}/chat/${r}/ratings/${i}`,o,c)},deleteRating(n,r,i,o){return t.delete(`/${n}/chat/${r}/ratings/${i}`,o)}}}const ne=e=>new Promise(a=>setTimeout(a,e));function re(e){return new Promise((a,t)=>{const{callbacks:n,host:r,auth:i}=e,{onMessage:o=null,onOpen:c=null,onClose:g=null,onError:m=null}=n||{},f=new WebSocket(`${r}?authorization=${q(i)}`);f.onmessage=o,f.onclose=g,f.onerror=p=>{console.error(p),m==null||m("Websocket failed to connect",p),t(p)},f.onopen=p=>{c==null||c(p),a(f)}})}async function ie(e){const{retries:a=1}=e;let t=null;for(let n=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;n++)try{t=await re(e)}catch(r){if(n===a)throw r;await ne(n*500)}return t}async function X(e,a,t){const n=t!=null&&t.onMessage?[t.onMessage]:[],r=await ie({auth:e,host:a,callbacks:{onError:t==null?void 0:t.onError,onMessage:i=>{const o=JSON.parse(i.data);n.forEach(c=>c(o.event,o))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:i=>n.push(i)}}function ae(e,a,t){const n=F(e,`${a}/agents/${t}`);return{createStream(r){return n.post("/streams",{driver_id:r.driver_id,presenter_id:r.presenter_id,compatibility_mode:r.compatibility_mode,stream_warmup:r.stream_warmup,type:M.Clip})},startConnection(r,i,o){return n.post(`/streams/${r}/sdp`,{session_id:o,answer:i,type:M.Clip})},addIceCandidate(r,i,o){return n.post(`/streams/${r}/ice`,{session_id:o,...i,type:M.Clip})},sendStreamRequest(r,i,o){return n.post(`/streams/${r}`,{session_id:i,...o,type:M.Clip})},close(r,i){return n.delete(`/streams/${r}`,{session_id:i,type:M.Clip})}}}function se(e,a,t){const n=F(e,`${a}/agents/${t}`);return{createStream(r,i){return n.post("/streams",{source_url:r.source_url,driver_url:r.driver_url,face:r.face,config:r.config,stream_warmup:r.stream_warmup,type:M.Talk},i)},startConnection(r,i,o,c){return n.post(`/streams/${r}/sdp`,{session_id:o,answer:i,type:M.Talk},c)},addIceCandidate(r,i,o,c){return n.post(`/streams/${r}/ice`,{session_id:o,...i,type:M.Talk},c)},sendStreamRequest(r,i,o,c){return n.post(`/streams/${r}`,{session_id:i,...o,type:M.Talk},c)},close(r,i,o){return n.delete(`/streams/${r}`,{session_id:i,type:M.Talk},o)}}}function oe(e,a){return e.map((t,n)=>n===0?a?{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-a.bytesReceived,packetsReceived:t.packetsReceived-a.packetsReceived,packetsLost:t.packetsLost-a.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived,packetsReceived:t.packetsReceived,packetsLost:t.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-e[n-1].bytesReceived,packetsReceived:t.packetsReceived-e[n-1].packetsReceived,packetsLost:t.packetsLost-e[n-1].packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond})}let Y=!1;const T=(e,a)=>Y&&console.log(e,a),de=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ce(e){switch(e){case"connected":return _.Connected;case"checking":return _.Connecting;case"failed":return _.Fail;case"new":case"closed":case"disconnected":default:return _.New}}function ge(e,a){let t=[],n=0,r=0,i=0,o;return setInterval(()=>{e.getStats().then(g=>{g.forEach(m=>{if(m.type==="inbound-rtp"&&m.kind==="video"){if(r=t.length-1,m&&t[r]){const f=m.bytesReceived,p=t[r].bytesReceived,y=o;let S;if(o=f-p>0,i=o?0:++i,y!==o)if(o)n=t.length,a==null||a(L.Start,S);else{const b=t.slice(n),N=n===0?void 0:t[n-1];S=oe(b,N),S=S.sort((R,s)=>s.packetsLost-R.packetsLost).slice(0,5)}!o&&i===3&&(a==null||a(L.Stop,S))}t.push(m)}})})},500)}async function me(e,a,{debug:t=!1,callbacks:n,auth:r,analytics:i,baseURL:o=K}){Y=t;let c;const{startConnection:g,sendStreamRequest:m,close:f,createStream:p,addIceCandidate:y}=a.videoType===M.Clip?ae(r,o,e):se(r,o,e),{id:S,offer:b,ice_servers:N,session_id:R}=await p(a),s=new de({iceServers:N}),u=s.createDataChannel("JanusDataChannel");if(!R)throw new Error("Could not create session_id");const l=ge(s,n.onVideoStateChange);s.onicecandidate=d=>{T("peerConnection.onicecandidate",d),d.candidate&&d.candidate.sdpMid&&d.candidate.sdpMLineIndex!==null?y(S,{candidate:d.candidate.candidate,sdpMid:d.candidate.sdpMid,sdpMLineIndex:d.candidate.sdpMLineIndex},R):y(S,{candidate:null},R)},s.oniceconnectionstatechange=()=>{var h;T("peerConnection.oniceconnectionstatechange => "+s.iceConnectionState);const d=ce(s.iceConnectionState);d===_.Connected?c=setTimeout(()=>{var k;(k=n.onConnectionStateChange)==null||k.call(n,_.Connected)},5e3):(clearTimeout(c),(h=n.onConnectionStateChange)==null||h.call(n,d))},s.ontrack=d=>{var h;T("peerConnection.ontrack",d),(h=n.onSrcObjectReady)==null||h.call(n,d.streams[0])},u.onmessage=d=>{var h,k;if(u.readyState==="open"){const[C,A]=d.data.split(":");C===I.StreamStarted?i==null||i.track("agent-video",{event:"start",...d}):C===I.StreamDone?i==null||i.track("agent-video",{event:"stop",...d}):C===I.StreamFailed?((h=n.onVideoStateChange)==null||h.call(n,L.Stop,{event:C,data:A}),clearInterval(l)):C===I.StreamReady?(clearTimeout(c),(k=n.onConnectionStateChange)==null||k.call(n,_.Connected)):C===I.StreamCreated?i==null||i.track("agent-video",{event:"created",...d}):C===I.StreamVideoCreated?i==null||i.track("agent-video",{event:"video-created",...d}):C===I.StreamVideoDone?i==null||i.track("agent-video",{event:"video-done",...d}):C===I.StreamVideoError&&(i==null||i.track("agent-video",{event:"video-error",...d}))}},await s.setRemoteDescription(b),T("set remote description OK");const v=await s.createAnswer();return T("create answer OK"),await s.setLocalDescription(v),T("set local description OK"),await g(S,v,R),T("start connection OK"),{speak(d){return m(S,R,d)},async disconnect(){var d,h;S&&(s&&(s.close(),s.oniceconnectionstatechange=null,s.onnegotiationneeded=null,s.onicecandidate=null,s.ontrack=null),await f(S,R).catch(k=>{}),(d=n.onConnectionStateChange)==null||d.call(n,_.New),(h=n.onVideoStateChange)==null||h.call(n,L.Stop),clearInterval(l))},sessionId:R,streamId:S}}function le(e){const a={mixPanelKey:e.mixPanelKey||"testKey",distinct_id:e.distinctId||V(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...a,getRandom:()=>Math.random().toString(16).slice(2),track(t,n){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const r={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...n,...a,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",r).then(i=>i.json()).catch(i=>console.error(i))}}}function ue(e){var n,r,i,o,c;const a=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const g=navigator.platform;return g.toLowerCase().includes("win")?"Windows":g.toLowerCase().includes("mac")?"Mac OS X":g.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${a()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(n=e.presenter)==null?void 0:n.type,agentVoice:{voiceId:(i=(r=e.presenter)==null?void 0:r.voice)==null?void 0:i.voice_id,provider:(c=(o=e.presenter)==null?void 0:o.voice)==null?void 0:c.type}}}function he(e){if(e.presenter){if(e.presenter.type===M.Clip)return{videoType:M.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");return{videoType:M.Talk,source_url:e.presenter.source_url,stream_warmup:!0}}function Z(e,a,t,n,r){return new Promise(async(i,o)=>{let c=r;const g=await me(e.id,he(e),{...a,callbacks:{...a.callbacks,onConnectionStateChange:async m=>{var f,p;if(m===_.Connected)try{c||(c=await t.newChat(e.id),n.track("agent-chat",{event:"created",chat_id:c.id,agent_id:e.id})),g&&i({chat:c,streamingManager:g})}catch(y){console.error(y),o("Cannot create new chat")}else m===_.Fail&&o(new Error("Cannot create connection"));(p=(f=a.callbacks).onConnectionStateChange)==null||p.call(f,m)},onVideoStateChange(m,f){var p,y;n.track("agent-video",{event:m,rtc_stats:f??[]}),(y=(p=a.callbacks).onVideoStateChange)==null||y.call(p,m,f)}}}).catch(o)})}function we(e,a,t){return Q(a,t||K).getById(e)}function D(e){let a="";if(e.greetings&&e.greetings.length>0){const t=Math.floor(Math.random()*e.greetings.length);a=e.greetings[t]}else a=`Hi! I'm ${e.preview_name}, welcome to agents. How can I help you?`;return[{content:a,id:x(),role:"assistant",created_at:new Date().toISOString()}]}async function fe(e,a){var b,N,R;const t={messages:[],chatMode:a.mode||E.Functional};let n=-1;const r=a.wsURL||G,i=a.baseURL||K,o=a.mixpanelKey||ee,c=Q(a.auth,i),g=await c.getById(e);t.messages=D(g),(N=(b=a.callbacks).onNewMessage)==null||N.call(b,t.messages);const m=le({mixPanelKey:o,agent:g,...a});m.track("agent-sdk",{event:"loaded",...ue(g)});const f={onMessage:(s,u)=>{var l,v;if("content"in u){const{content:d}=u,h=t.messages[t.messages.length-1];(h==null?void 0:h.role)==="assistant"&&(n<t.messages.length&&(h.content=s===O.Partial?h.content+d:d),s===O.Answer&&(n=t.messages.length)),s===O.Complete&&m.track("agent-message-received",{messages:t.messages.length}),(v=(l=a.callbacks).onNewMessage)==null||v.call(l,t.messages)}}};async function p(){var v,d,h,k,C;const s=await X(a.auth,r,f),{streamingManager:u,chat:l}=await Z(g,a,c,m,t.chat);n=-1,t.messages=D(g),(d=(v=a.callbacks).onNewMessage)==null||d.call(v,t.messages),l!=null&&l.id&&l.id!==((h=t.chat)==null?void 0:h.id)&&((C=(k=a.callbacks).onNewChat)==null||C.call(k,l==null?void 0:l.id)),t.streamingManager=u,t.socketManager=s,t.chat=l,S(E.Functional),m.track("agent-chat",{event:"connect",chatId:l.id,agentId:g.id})}async function y(){var s,u,l,v,d;(s=t.socketManager)==null||s.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,t.messages=D(g),(v=(l=a.callbacks).onNewMessage)==null||v.call(l,t.messages),m.track("agent-chat",{event:"disconnect",chatId:(d=t.chat)==null?void 0:d.id,agentId:g.id})}async function S(s){var u,l;s!==t.chatMode&&(m.track("agent-mode-change",{mode:s}),t.chatMode=s,t.chatMode!==E.Functional&&await y(),(l=(u=a.callbacks).onModeChange)==null||l.call(u,s))}return{agent:g,starterMessages:((R=g.knowledge)==null?void 0:R.starter_message)||[],connect:p,disconnect:y,changeMode:S,async reconnect(){if(!t.chat)return p();const s=await X(a.auth,r,f),{streamingManager:u,chat:l}=await Z(g,a,c,m,t.chat);t.streamingManager=u,t.socketManager=s,S(E.Functional),m.track("agent-chat",{event:"reconnect",chatId:l.id,agentId:g.id})},async chat(s,u=!1){var l,v,d,h,k,C;try{if(s.length>=800)throw new Error("Message cannot be more than 800 characters");const A=Date.now();if(t.messages.push({id:x(),role:"user",content:s,created_at:new Date(A).toISOString()}),(v=(l=a.callbacks).onNewMessage)==null||v.call(l,t.messages),s.length===0)throw new Error("Message cannot be empty");if(t.chatMode===E.Maintenance)throw new Error("Chat is in maintenance mode");if(t.chatMode!==E.TextOnly){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");if(!t.chat)throw new Error("Chat is not initialized")}else t.chat||(t.chat=await c.newChat(g.id));const $=await c.chat(g.id,t.chat.id,{sessionId:(d=t.streamingManager)==null?void 0:d.sessionId,streamId:(h=t.streamingManager)==null?void 0:h.streamId,messages:t.messages,chatMode:t.chatMode,append_chat:u});return m.track("agent-message-send",{event:"success",messages:t.messages.length+1}),t.messages.push({id:x(),role:"assistant",content:$.result??"",created_at:new Date().toISOString(),matches:$.matches}),$.result&&m.track("agent-message-received",{latency:Date.now()-A,messages:t.messages.length}),(C=(k=a.callbacks).onNewMessage)==null||C.call(k,t.messages),$}catch(A){throw m.track("agent-message-send",{event:"error",messages:t.messages.length}),A}},rate(s,u,l){var h,k,C,A;const v=t.messages.find($=>$.id===s);if(t.chat){if(!v)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const d=((h=v.matches)==null?void 0:h.map($=>[$.document_id,$.id]))??[];return m.track("agent-rate",{event:l?"update":"create",thumb:u===1?"up":"down",knowledge_id:((k=g.knowledge)==null?void 0:k.id)??"",matches:d,score:u}),l?c.updateRating(g.id,t.chat.id,l,{knowledge_id:((C=g.knowledge)==null?void 0:C.id)??"",message_id:s,matches:d,score:u}):c.createRating(g.id,t.chat.id,{knowledge_id:((A=g.knowledge)==null?void 0:A.id)??"",message_id:s,matches:d,score:u})},deleteRate(s){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:s}),c.deleteRating(g.id,t.chat.id,s)},speak(s){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function u(){if(g.presenter){if(s.type==="text")return{type:"text",provider:s.provider?s.provider:g.presenter.voice,input:s.input,ssml:s.ssml||!1};if(s.type==="audio")return{type:"audio",audio_url:s.audio_url}}else throw new Error("Presenter is not initialized");throw new Error("Invalid payload")}const l=u();return m.track("agent-speak",l),t.streamingManager.speak({script:l})}}}w.ChatMode=E,w.ChatProgress=O,w.ConnectionState=_,w.DocumentType=U,w.KnowledgeType=j,w.PlanGroup=W,w.Providers=B,w.RateState=z,w.StreamEvents=I,w.StreamingState=L,w.Subject=H,w.UserPlan=P,w.VideoType=M,w.VoiceAccess=J,w.createAgentManager=fe,w.getAgent=we,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@d-id/client-sdk",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.0.19-beta.
|
|
4
|
+
"version": "1.0.19-beta.76",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "d-id client sdk",
|
|
7
7
|
"repository": {
|
|
@@ -44,4 +44,4 @@
|
|
|
44
44
|
"vite": "^5.1.4",
|
|
45
45
|
"vite-plugin-dts": "^3.7.3"
|
|
46
46
|
}
|
|
47
|
-
}
|
|
47
|
+
}
|