@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 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 || {}), V = /* @__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))(V || {}), B = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(B || {}), 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 || {}), J = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(J || {}), q = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(q || {}), 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 || {});
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 d = await i.text().catch(() => "Failed to fetch");
29
- throw new Error(d);
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, d) {
85
- return t.post(`/${n}/chat/${r}`, i, d);
84
+ chat(n, r, i, o) {
85
+ return t.post(`/${n}/chat/${r}`, i, o);
86
86
  },
87
- createRating(n, r, i, d) {
88
- return t.post(`/${n}/chat/${r}/ratings`, i, d);
87
+ createRating(n, r, i, o) {
88
+ return t.post(`/${n}/chat/${r}/ratings`, i, o);
89
89
  },
90
- updateRating(n, r, i, d, g) {
91
- return t.patch(`/${n}/chat/${r}/ratings/${i}`, d, g);
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, d) {
94
- return t.delete(`/${n}/chat/${r}/ratings/${i}`, d);
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: d = null,
107
- onOpen: g = null,
108
- onClose: c = null,
109
- onError: l = null
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 = d, w.onclose = c, w.onerror = (f) => {
112
- console.error(f), l == null || l("Websocket failed to connect", f), t(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
- g == null || g(f), a(w);
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 d = JSON.parse(i.data);
141
- n.forEach((g) => g(d.event, d));
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, d) {
163
+ startConnection(r, i, o) {
164
164
  return n.post(`/streams/${r}/sdp`, {
165
- session_id: d,
165
+ session_id: o,
166
166
  answer: i,
167
167
  type: k.Clip
168
168
  });
169
169
  },
170
- addIceCandidate(r, i, d) {
170
+ addIceCandidate(r, i, o) {
171
171
  return n.post(`/streams/${r}/ice`, {
172
- session_id: d,
172
+ session_id: o,
173
173
  ...i,
174
174
  type: k.Clip
175
175
  });
176
176
  },
177
- sendStreamRequest(r, i, d) {
177
+ sendStreamRequest(r, i, o) {
178
178
  return n.post(`/streams/${r}`, {
179
179
  session_id: i,
180
- ...d,
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, d, g) {
205
+ startConnection(r, i, o, c) {
206
206
  return n.post(`/streams/${r}/sdp`, {
207
- session_id: d,
207
+ session_id: o,
208
208
  answer: i,
209
209
  type: k.Talk
210
- }, g);
210
+ }, c);
211
211
  },
212
- addIceCandidate(r, i, d, g) {
212
+ addIceCandidate(r, i, o, c) {
213
213
  return n.post(`/streams/${r}/ice`, {
214
- session_id: d,
214
+ session_id: o,
215
215
  ...i,
216
216
  type: k.Talk
217
- }, g);
217
+ }, c);
218
218
  },
219
- sendStreamRequest(r, i, d, g) {
219
+ sendStreamRequest(r, i, o, c) {
220
220
  return n.post(`/streams/${r}`, {
221
221
  session_id: i,
222
- ...d,
222
+ ...o,
223
223
  type: k.Talk
224
- }, g);
224
+ }, c);
225
225
  },
226
- close(r, i, d) {
226
+ close(r, i, o) {
227
227
  return n.delete(`/streams/${r}`, {
228
228
  session_id: i,
229
229
  type: k.Talk
230
- }, d);
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((c) => {
289
- if (c.type === "inbound-rtp" && c.kind === "video") {
290
- if (r = t.length - 1, c && t[r]) {
291
- const l = c.bytesReceived, w = t[r].bytesReceived;
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 !== i) {
296
- if (i)
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 M = t.slice(n), L = n === 0 ? void 0 : t[n - 1];
300
- C = se(M, L), C = C.sort((x, _) => _.packetsLost - x.packetsLost).slice(0, 5);
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
- a == null || a(i ? T.Start : T.Stop, C);
303
- }
300
+ !o && i === 3 && (a == null || a(T.Stop, C));
304
301
  }
305
- t.push(c);
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: d = P
313
+ baseURL: o = P
317
314
  }) {
318
315
  U = t;
319
- let g;
316
+ let c;
320
317
  const {
321
- startConnection: c,
322
- sendStreamRequest: l,
318
+ startConnection: g,
319
+ sendStreamRequest: m,
323
320
  close: w,
324
321
  createStream: f,
325
- addIceCandidate: C
326
- } = a.videoType === k.Clip ? ie(r, d, e) : ae(r, d, e), {
327
- id: M,
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 m = ce(s, n.onVideoStateChange);
337
- s.onicecandidate = (o) => {
338
- A("peerConnection.onicecandidate", o), o.candidate && o.candidate.sdpMid && o.candidate.sdpMLineIndex !== null ? C(M, {
339
- candidate: o.candidate.candidate,
340
- sdpMid: o.candidate.sdpMid,
341
- sdpMLineIndex: o.candidate.sdpMLineIndex
342
- }, _) : C(M, {
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 o = de(s.iceConnectionState);
349
- o === R.Connected ? g = setTimeout(() => {
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(g), (h = n.onConnectionStateChange) == null || h.call(n, o));
353
- }, s.ontrack = (o) => {
349
+ }, 5e3) : (clearTimeout(c), (h = n.onConnectionStateChange) == null || h.call(n, d));
350
+ }, s.ontrack = (d) => {
354
351
  var h;
355
- A("peerConnection.ontrack", o), (h = n.onSrcObjectReady) == null || h.call(n, o.streams[0]);
356
- }, u.onmessage = (o) => {
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] = o.data.split(":");
356
+ const [v, y] = d.data.split(":");
360
357
  v === $.StreamStarted ? i == null || i.track("agent-video", {
361
358
  event: "start",
362
- ...o
359
+ ...d
363
360
  }) : v === $.StreamDone ? i == null || i.track("agent-video", {
364
361
  event: "stop",
365
- ...o
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(m)) : v === $.StreamReady ? (clearTimeout(g), (S = n.onConnectionStateChange) == null || S.call(n, R.Connected)) : v === $.StreamCreated ? i == null || i.track("agent-video", {
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
- ...o
368
+ ...d
372
369
  }) : v === $.StreamVideoCreated ? i == null || i.track("agent-video", {
373
370
  event: "video-created",
374
- ...o
371
+ ...d
375
372
  }) : v === $.StreamVideoDone ? i == null || i.track("agent-video", {
376
373
  event: "video-done",
377
- ...o
374
+ ...d
378
375
  }) : v === $.StreamVideoError && (i == null || i.track("agent-video", {
379
376
  event: "video-error",
380
- ...o
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 c(M, p, _), A("start connection OK"), {
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(o) {
391
- return l(M, _, o);
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 o, h;
398
- M && (s && (s.close(), s.oniceconnectionstatechange = null, s.onnegotiationneeded = null, s.onicecandidate = null, s.ontrack = null), await w(M, _).catch((S) => {
399
- }), (o = n.onConnectionStateChange) == null || o.call(n, R.New), (h = n.onVideoStateChange) == null || h.call(n, T.Stop), clearInterval(m));
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: M
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, d, g;
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 c = navigator.platform;
456
- return c.toLowerCase().includes("win") ? "Windows" : c.toLowerCase().includes("mac") ? "Mac OS X" : c.toLowerCase().includes("linux") ? "Linux" : "Unknown";
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: (g = (d = e.presenter) == null ? void 0 : d.voice) == null ? void 0 : g.type
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, d) => {
487
- let g = r;
488
- const c = await ge(e.id, ue(e), {
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 (l) => {
489
+ onConnectionStateChange: async (m) => {
493
490
  var w, f;
494
- if (l === R.Connected)
491
+ if (m === R.Connected)
495
492
  try {
496
- g || (g = await t.newChat(e.id), n.track("agent-chat", {
493
+ c || (c = await t.newChat(e.id), n.track("agent-chat", {
497
494
  event: "created",
498
- chat_id: g.id,
495
+ chat_id: c.id,
499
496
  agent_id: e.id
500
- })), c && i({
501
- chat: g,
502
- streamingManager: c
497
+ })), g && i({
498
+ chat: c,
499
+ streamingManager: g
503
500
  });
504
- } catch (C) {
505
- console.error(C), d("Cannot create new chat");
501
+ } catch (M) {
502
+ console.error(M), o("Cannot create new chat");
506
503
  }
507
504
  else
508
- l === R.Fail && d(new Error("Cannot create connection"));
509
- (f = (w = a.callbacks).onConnectionStateChange) == null || f.call(w, l);
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(l, w) {
512
- var f, C;
508
+ onVideoStateChange(m, w) {
509
+ var f, M;
513
510
  n.track("agent-video", {
514
- event: l,
511
+ event: m,
515
512
  rtc_stats: w ?? []
516
- }), (C = (f = a.callbacks).onVideoStateChange) == null || C.call(f, l, w);
513
+ }), (M = (f = a.callbacks).onVideoStateChange) == null || M.call(f, m, w);
517
514
  }
518
515
  }
519
- }).catch(d);
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, d = a.mixpanelKey || G, g = H(a.auth, i), c = await g.getById(e);
547
- t.messages = O(c), (x = (L = a.callbacks).onNewMessage) == null || x.call(L, t.messages);
548
- const l = me({
549
- mixPanelKey: d,
550
- agent: c,
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
- l.track("agent-sdk", {
550
+ m.track("agent-sdk", {
554
551
  event: "loaded",
555
- ...le(c)
552
+ ...le(g)
556
553
  });
557
554
  const w = {
558
555
  onMessage: (s, u) => {
559
- var m, p;
556
+ var l, p;
560
557
  if ("content" in u) {
561
558
  const {
562
- content: o
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 + o : o), s === N.Answer && (n = t.messages.length)), s === N.Complete && l.track("agent-message-received", {
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 = (m = a.callbacks).onNewMessage) == null || p.call(m, t.messages);
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, o, h, S, v;
568
+ var p, d, h, S, v;
572
569
  const s = await F(a.auth, r, w), {
573
570
  streamingManager: u,
574
- chat: m
575
- } = await W(c, a, g, l, t.chat);
576
- n = -1, t.messages = O(c), (o = (p = a.callbacks).onNewMessage) == null || o.call(p, t.messages), m != null && m.id && m.id !== ((h = t.chat) == null ? void 0 : h.id) && ((v = (S = a.callbacks).onNewChat) == null || v.call(S, m == null ? void 0 : m.id)), t.streamingManager = u, t.socketManager = s, t.chat = m, M(E.Functional), l.track("agent-chat", {
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: m.id,
579
- agentId: c.id
575
+ chatId: l.id,
576
+ agentId: g.id
580
577
  });
581
578
  }
582
- async function C() {
583
- var s, u, m, p, o;
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(c), (p = (m = a.callbacks).onNewMessage) == null || p.call(m, t.messages), l.track("agent-chat", {
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: (o = t.chat) == null ? void 0 : o.id,
587
- agentId: c.id
583
+ chatId: (d = t.chat) == null ? void 0 : d.id,
584
+ agentId: g.id
588
585
  });
589
586
  }
590
- async function M(s) {
591
- var u, m;
592
- s !== t.chatMode && (l.track("agent-mode-change", {
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 C(), (m = (u = a.callbacks).onModeChange) == null || m.call(u, s));
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: c,
598
- starterMessages: ((_ = c.knowledge) == null ? void 0 : _.starter_message) || [],
594
+ agent: g,
595
+ starterMessages: ((_ = g.knowledge) == null ? void 0 : _.starter_message) || [],
599
596
  connect: f,
600
- disconnect: C,
601
- changeMode: M,
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: m
608
- } = await W(c, a, g, l, t.chat);
609
- t.streamingManager = u, t.socketManager = s, M(E.Functional), l.track("agent-chat", {
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: m.id,
612
- agentId: c.id
608
+ chatId: l.id,
609
+ agentId: g.id
613
610
  });
614
611
  },
615
612
  async chat(s, u = !1) {
616
- var m, p, o, h, S, v;
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 = (m = a.callbacks).onNewMessage) == null || p.call(m, t.messages), s.length === 0)
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 g.newChat(c.id));
635
- const I = await g.chat(c.id, t.chat.id, {
636
- sessionId: (o = t.streamingManager) == null ? void 0 : o.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 l.track("agent-message-send", {
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 && l.track("agent-message-received", {
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 l.track("agent-message-send", {
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, m) {
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 o = ((h = p.matches) == null ? void 0 : h.map((I) => [I.document_id, I.id])) ?? [];
671
- return l.track("agent-rate", {
672
- event: m ? "update" : "create",
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 = c.knowledge) == null ? void 0 : S.id) ?? "",
675
- matches: o,
673
+ knowledge_id: ((S = g.knowledge) == null ? void 0 : S.id) ?? "",
674
+ matches: d,
676
675
  score: u
677
- }), m ? g.updateRating(c.id, t.chat.id, m, {
678
- knowledge_id: ((v = c.knowledge) == null ? void 0 : v.id) ?? "",
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: o,
679
+ matches: d,
681
680
  score: u
682
- }) : g.createRating(c.id, t.chat.id, {
683
- knowledge_id: ((y = c.knowledge) == null ? void 0 : y.id) ?? "",
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: o,
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 l.track("agent-rate-delete", {
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
- }), g.deleteRating(c.id, t.chat.id, s);
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 (c.presenter) {
702
+ if (g.presenter) {
704
703
  if (s.type === "text")
705
704
  return {
706
705
  type: "text",
707
- provider: s.provider ? s.provider : c.presenter.voice,
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 m = u();
721
- return l.track("agent-speak", m), t.streamingManager.speak({
722
- script: m
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
- q as KnowledgeType,
733
- V as PlanGroup,
731
+ V as KnowledgeType,
732
+ B as PlanGroup,
734
733
  X as Providers,
735
- B as RateState,
734
+ J as RateState,
736
735
  $ as StreamEvents,
737
736
  T as StreamingState,
738
- J as Subject,
737
+ q as Subject,
739
738
  j as UserPlan,
740
739
  k as VideoType,
741
740
  Y as VoiceAccess,
@@ -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.73",
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
+ }