@d-id/client-sdk 1.0.19-beta.78 → 1.0.19-beta.79

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
@@ -107,11 +107,11 @@ function ne(e) {
107
107
  onOpen: d = null,
108
108
  onClose: g = null,
109
109
  onError: l = null
110
- } = n || {}, p = new WebSocket(`${a}?authorization=${H(i)}`);
111
- p.onmessage = o, p.onclose = g, p.onerror = (v) => {
112
- console.error(v), l == null || l("Websocket failed to connect", v), t(v);
113
- }, p.onopen = (v) => {
114
- d == null || d(v), r(p);
110
+ } = n || {}, h = new WebSocket(`${a}?authorization=${H(i)}`);
111
+ h.onmessage = o, h.onclose = g, h.onerror = (f) => {
112
+ console.error(f), l == null || l("Websocket failed to connect", f), t(f);
113
+ }, h.onopen = (f) => {
114
+ d == null || d(f), r(h);
115
115
  };
116
116
  });
117
117
  }
@@ -265,7 +265,7 @@ function se(e, r) {
265
265
  });
266
266
  }
267
267
  let j = !1;
268
- const $ = (e, r) => j && console.log(e, r), oe = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
268
+ const A = (e, r) => j && console.log(e, r), oe = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
269
269
  function ce(e) {
270
270
  switch (e) {
271
271
  case "connected":
@@ -288,16 +288,16 @@ function de(e, r) {
288
288
  g.forEach((l) => {
289
289
  if (l.type === "inbound-rtp" && l.kind === "video") {
290
290
  if (a = t.length - 1, l && t[a]) {
291
- const p = l.bytesReceived, v = t[a].bytesReceived, k = o;
292
- let y;
293
- if (o = p - v > 0, i = o ? 0 : ++i, k !== o)
291
+ const h = l.bytesReceived, f = t[a].bytesReceived, k = o;
292
+ let v;
293
+ if (o = h - f > 0, i = o ? 0 : ++i, k !== o)
294
294
  if (o)
295
- n = t.length, r == null || r(N.Start, y);
295
+ n = t.length, r == null || r(N.Start, v);
296
296
  else {
297
297
  const L = t.slice(n), b = n === 0 ? void 0 : t[n - 1];
298
- y = se(L, b), y = y.sort((M, s) => s.packetsLost - M.packetsLost).slice(0, 5);
298
+ v = se(L, b), v = v.sort((M, s) => s.packetsLost - M.packetsLost).slice(0, 5);
299
299
  }
300
- !o && i === 2 && (r == null || r(N.Stop, y));
300
+ !o && i === 3 && (r == null || r(N.Stop, v));
301
301
  }
302
302
  t.push(l);
303
303
  }
@@ -317,75 +317,62 @@ async function ge(e, r, {
317
317
  const {
318
318
  startConnection: g,
319
319
  sendStreamRequest: l,
320
- close: p,
321
- createStream: v,
320
+ close: h,
321
+ createStream: f,
322
322
  addIceCandidate: k
323
323
  } = r.videoType === C.Clip ? re(a, o, e) : ie(a, o, e), {
324
- id: y,
324
+ id: v,
325
325
  offer: L,
326
326
  ice_servers: b,
327
327
  session_id: M
328
- } = await v(r), s = new oe({
328
+ } = await f(r), s = new oe({
329
329
  iceServers: b
330
330
  }), u = s.createDataChannel("JanusDataChannel");
331
331
  if (!M)
332
332
  throw new Error("Could not create session_id");
333
333
  const m = de(s, n.onVideoStateChange);
334
334
  s.onicecandidate = (c) => {
335
- $("peerConnection.onicecandidate", c), c.candidate && c.candidate.sdpMid && c.candidate.sdpMLineIndex !== null ? k(y, {
335
+ A("peerConnection.onicecandidate", c), c.candidate && c.candidate.sdpMid && c.candidate.sdpMLineIndex !== null ? k(v, {
336
336
  candidate: c.candidate.candidate,
337
337
  sdpMid: c.candidate.sdpMid,
338
338
  sdpMLineIndex: c.candidate.sdpMLineIndex
339
- }, M) : k(y, {
339
+ }, M) : k(v, {
340
340
  candidate: null
341
341
  }, M);
342
342
  }, s.oniceconnectionstatechange = () => {
343
- var h;
344
- $("peerConnection.oniceconnectionstatechange => " + s.iceConnectionState);
343
+ var w;
344
+ A("peerConnection.oniceconnectionstatechange => " + s.iceConnectionState);
345
345
  const c = ce(s.iceConnectionState);
346
- c === S.Connected ? (i.track("agent-chat-loaded"), d = setTimeout(() => {
347
- var f;
348
- (f = n.onConnectionStateChange) == null || f.call(n, S.Connected);
349
- }, 5e3)) : (clearTimeout(d), (h = n.onConnectionStateChange) == null || h.call(n, c));
346
+ c === S.Connected ? d = setTimeout(() => {
347
+ var y;
348
+ (y = n.onConnectionStateChange) == null || y.call(n, S.Connected);
349
+ }, 5e3) : (clearTimeout(d), (w = n.onConnectionStateChange) == null || w.call(n, c));
350
350
  }, s.ontrack = (c) => {
351
- var h;
352
- $("peerConnection.ontrack", c), (h = n.onSrcObjectReady) == null || h.call(n, c.streams[0]);
351
+ var w;
352
+ A("peerConnection.ontrack", c), (w = n.onSrcObjectReady) == null || w.call(n, c.streams[0]);
353
353
  }, u.onmessage = (c) => {
354
- var h;
354
+ var w;
355
355
  if (u.readyState === "open") {
356
- const [f, _] = c.data.split(":");
357
- f === I.StreamVideoCreated || I.StreamVideoDone || I.StreamVideoError || I.StreamVideoRejected ? i.track("agent-video", {
358
- event: f,
359
- ...c
360
- }) : f === I.StreamFailed || f === I.StreamDone ? clearInterval(m) : f === I.StreamReady ? (clearTimeout(d), (h = n.onConnectionStateChange) == null || h.call(n, S.Connected)) : f === I.StreamCreated && i.track("agent-video", {
361
- event: "created"
362
- });
356
+ const [y, _] = c.data.split(":");
357
+ y === I.StreamFailed || y === I.StreamDone ? clearInterval(m) : y === I.StreamReady && (clearTimeout(d), (w = n.onConnectionStateChange) == null || w.call(n, S.Connected));
363
358
  }
364
- }, await s.setRemoteDescription(L), $("set remote description OK");
365
- const w = await s.createAnswer();
366
- return $("create answer OK"), await s.setLocalDescription(w), $("set local description OK"), await g(y, w, M), $("start connection OK"), {
359
+ }, await s.setRemoteDescription(L), A("set remote description OK");
360
+ const p = await s.createAnswer();
361
+ return A("create answer OK"), await s.setLocalDescription(p), A("set local description OK"), await g(v, p, M), A("start connection OK"), {
367
362
  /**
368
363
  * Method to send request to server to get clip or talk depend on you payload
369
364
  * @param payload
370
365
  */
371
366
  speak(c) {
372
- return l(y, M, c);
367
+ return l(v, M, c);
373
368
  },
374
369
  /**
375
370
  * Method to close RTC connection
376
371
  */
377
372
  async disconnect() {
378
- var c, h;
379
- if (y) {
380
- s && (s.close(), s.oniceconnectionstatechange = null, s.onnegotiationneeded = null, s.onicecandidate = null, s.ontrack = null);
381
- try {
382
- await p(y, M).catch((f) => {
383
- });
384
- } catch (f) {
385
- $("Error on close stream connection", f);
386
- }
387
- (c = n.onConnectionStateChange) == null || c.call(n, S.New), (h = n.onVideoStateChange) == null || h.call(n, N.Stop), clearInterval(m);
388
- }
373
+ var c, w;
374
+ v && (s && (s.close(), s.oniceconnectionstatechange = null, s.onnegotiationneeded = null, s.onicecandidate = null, s.ontrack = null), await h(v, M).catch((y) => {
375
+ }), (c = n.onConnectionStateChange) == null || c.call(n, S.New), (w = n.onVideoStateChange) == null || w.call(n, N.Stop), clearInterval(m));
389
376
  },
390
377
  /**
391
378
  * Session identifier information, should be returned in the body of all streaming requests
@@ -394,7 +381,7 @@ async function ge(e, r, {
394
381
  /**
395
382
  * Id of current RTC stream
396
383
  */
397
- streamId: y
384
+ streamId: v
398
385
  };
399
386
  }
400
387
  function le(e) {
@@ -479,7 +466,7 @@ function z(e, r, t, n, a) {
479
466
  callbacks: {
480
467
  ...r.callbacks,
481
468
  onConnectionStateChange: async (l) => {
482
- var p, v;
469
+ var h, f;
483
470
  if (l === S.Connected)
484
471
  try {
485
472
  d || (d = await t.newChat(e.id), n.track("agent-chat", {
@@ -495,21 +482,21 @@ function z(e, r, t, n, a) {
495
482
  }
496
483
  else
497
484
  l === S.Fail && o(new Error("Cannot create connection"));
498
- (v = (p = r.callbacks).onConnectionStateChange) == null || v.call(p, l);
485
+ (f = (h = r.callbacks).onConnectionStateChange) == null || f.call(h, l);
499
486
  },
500
- onVideoStateChange(l, p) {
501
- var v, k;
487
+ onVideoStateChange(l, h) {
488
+ var f, k;
502
489
  n.track("agent-video", {
503
490
  event: l,
504
- rtc_stats: p ?? []
505
- }), (k = (v = r.callbacks).onVideoStateChange) == null || k.call(v, l, p);
491
+ rtc_stats: h ?? []
492
+ }), (k = (f = r.callbacks).onVideoStateChange) == null || k.call(f, l, h);
506
493
  }
507
494
  },
508
495
  analytics: n
509
496
  }).catch(o);
510
497
  });
511
498
  }
512
- function he(e, r, t) {
499
+ function we(e, r, t) {
513
500
  return K(r, t || T).getById(e);
514
501
  }
515
502
  function O(e) {
@@ -526,7 +513,7 @@ function O(e) {
526
513
  created_at: (/* @__PURE__ */ new Date()).toISOString()
527
514
  }];
528
515
  }
529
- async function we(e, r) {
516
+ async function he(e, r) {
530
517
  var L, b, M;
531
518
  const t = {
532
519
  messages: [],
@@ -544,40 +531,46 @@ async function we(e, r) {
544
531
  event: "loaded",
545
532
  ...me(g)
546
533
  });
547
- const p = {
534
+ const h = {
548
535
  onMessage: (s, u) => {
549
- var m, w;
536
+ var m, p;
550
537
  if ("content" in u) {
551
538
  const {
552
539
  content: c
553
- } = u, h = t.messages[t.messages.length - 1];
554
- (h == null ? void 0 : h.role) === "assistant" && (n < t.messages.length && (h.content = s === x.Partial ? h.content + c : c), s === x.Answer && (n = t.messages.length)), s === x.Complete && l.track("agent-message-received", {
540
+ } = u, w = t.messages[t.messages.length - 1];
541
+ (w == null ? void 0 : w.role) === "assistant" && (n < t.messages.length && (w.content = s === x.Partial ? w.content + c : c), s === x.Answer && (n = t.messages.length)), s === x.Complete && l.track("agent-message-received", {
555
542
  messages: t.messages.length
556
- }), (w = (m = r.callbacks).onNewMessage) == null || w.call(m, t.messages);
543
+ }), (p = (m = r.callbacks).onNewMessage) == null || p.call(m, t.messages);
544
+ } else if ([I.StreamVideoCreated, I.StreamVideoDone, I.StreamVideoError, I.StreamVideoRejected].includes(s)) {
545
+ const c = s.split("/")[1];
546
+ l.track("agent-video", {
547
+ ...u,
548
+ event: c
549
+ });
557
550
  }
558
551
  }
559
552
  };
560
- async function v() {
561
- var w, c, h, f, _;
562
- const s = await W(r.auth, a, p), {
553
+ async function f() {
554
+ var p, c, w, y, _;
555
+ const s = await W(r.auth, a, h), {
563
556
  streamingManager: u,
564
557
  chat: m
565
558
  } = await z(g, r, d, l, t.chat);
566
- n = -1, t.messages.length === 0 && (t.messages = O(g), (c = (w = r.callbacks).onNewMessage) == null || c.call(w, t.messages)), m != null && m.id && m.id !== ((h = t.chat) == null ? void 0 : h.id) && ((_ = (f = r.callbacks).onNewChat) == null || _.call(f, m == null ? void 0 : m.id)), t.streamingManager = u, t.socketManager = s, t.chat = m, y(E.Functional), l.track("agent-chat", {
559
+ n = -1, t.messages = O(g), (c = (p = r.callbacks).onNewMessage) == null || c.call(p, t.messages), m != null && m.id && m.id !== ((w = t.chat) == null ? void 0 : w.id) && ((_ = (y = r.callbacks).onNewChat) == null || _.call(y, m == null ? void 0 : m.id)), t.streamingManager = u, t.socketManager = s, t.chat = m, v(E.Functional), l.track("agent-chat", {
567
560
  event: "connect",
568
561
  chatId: m.id,
569
562
  agentId: g.id
570
563
  });
571
564
  }
572
565
  async function k() {
573
- var s, u, m, w, c;
574
- (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), (w = (m = r.callbacks).onNewMessage) == null || w.call(m, t.messages), l.track("agent-chat", {
566
+ var s, u, m, p, c;
567
+ (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 = (m = r.callbacks).onNewMessage) == null || p.call(m, t.messages), l.track("agent-chat", {
575
568
  event: "disconnect",
576
569
  chatId: (c = t.chat) == null ? void 0 : c.id,
577
570
  agentId: g.id
578
571
  });
579
572
  }
580
- async function y(s) {
573
+ async function v(s) {
581
574
  var u, m;
582
575
  s !== t.chatMode && (l.track("agent-mode-change", {
583
576
  mode: s
@@ -586,36 +579,34 @@ async function we(e, r) {
586
579
  return {
587
580
  agent: g,
588
581
  starterMessages: ((M = g.knowledge) == null ? void 0 : M.starter_message) || [],
589
- connect: v,
582
+ connect: f,
590
583
  disconnect: k,
591
- changeMode: y,
584
+ changeMode: v,
592
585
  async reconnect() {
593
- var w, c;
594
586
  if (!t.chat)
595
- return v();
596
- (w = t.socketManager) == null || w.disconnect(), await ((c = t.streamingManager) == null ? void 0 : c.disconnect());
597
- const s = await W(r.auth, a, p), {
587
+ return f();
588
+ const s = await W(r.auth, a, h), {
598
589
  streamingManager: u,
599
590
  chat: m
600
591
  } = await z(g, r, d, l, t.chat);
601
- t.streamingManager = u, t.socketManager = s, y(E.Functional), l.track("agent-chat", {
592
+ t.streamingManager = u, t.socketManager = s, v(E.Functional), l.track("agent-chat", {
602
593
  event: "reconnect",
603
594
  chatId: m.id,
604
595
  agentId: g.id
605
596
  });
606
597
  },
607
598
  async chat(s, u = !1) {
608
- var m, w, c, h, f, _;
599
+ var m, p, c, w, y, _;
609
600
  try {
610
601
  if (s.length >= 800)
611
602
  throw new Error("Message cannot be more than 800 characters");
612
- const A = Date.now();
603
+ const $ = Date.now();
613
604
  if (t.messages.push({
614
605
  id: P(),
615
606
  role: "user",
616
607
  content: s,
617
- created_at: new Date(A).toISOString()
618
- }), (w = (m = r.callbacks).onNewMessage) == null || w.call(m, t.messages), s.length === 0)
608
+ created_at: new Date($).toISOString()
609
+ }), (p = (m = r.callbacks).onNewMessage) == null || p.call(m, t.messages), s.length === 0)
619
610
  throw new Error("Message cannot be empty");
620
611
  if (t.chatMode === E.Maintenance)
621
612
  throw new Error("Chat is in maintenance mode");
@@ -628,7 +619,7 @@ async function we(e, r) {
628
619
  t.chat || (t.chat = await d.newChat(g.id));
629
620
  const R = await d.chat(g.id, t.chat.id, {
630
621
  sessionId: (c = t.streamingManager) == null ? void 0 : c.sessionId,
631
- streamId: (h = t.streamingManager) == null ? void 0 : h.streamId,
622
+ streamId: (w = t.streamingManager) == null ? void 0 : w.streamId,
632
623
  messages: t.messages,
633
624
  chatMode: t.chatMode,
634
625
  append_chat: u
@@ -639,33 +630,33 @@ async function we(e, r) {
639
630
  }), t.messages.push({
640
631
  id: P(),
641
632
  role: "assistant",
642
- content: R.result || "",
633
+ content: R.result ?? "",
643
634
  created_at: (/* @__PURE__ */ new Date()).toISOString(),
644
635
  matches: R.matches
645
- }), R.result && (l.track("agent-message-received", {
646
- latency: Date.now() - A,
636
+ }), R.result && l.track("agent-message-received", {
637
+ latency: Date.now() - $,
647
638
  messages: t.messages.length
648
- }), (_ = (f = r.callbacks).onNewMessage) == null || _.call(f, t.messages)), R;
649
- } catch (A) {
639
+ }), (_ = (y = r.callbacks).onNewMessage) == null || _.call(y, t.messages), R;
640
+ } catch ($) {
650
641
  throw l.track("agent-message-send", {
651
642
  event: "error",
652
643
  messages: t.messages.length
653
- }), A;
644
+ }), $;
654
645
  }
655
646
  },
656
647
  rate(s, u, m) {
657
- var h, f, _, A;
658
- const w = t.messages.find((R) => R.id === s);
648
+ var w, y, _, $;
649
+ const p = t.messages.find((R) => R.id === s);
659
650
  if (t.chat) {
660
- if (!w)
651
+ if (!p)
661
652
  throw new Error("Message not found");
662
653
  } else
663
654
  throw new Error("Chat is not initialized");
664
- const c = ((h = w.matches) == null ? void 0 : h.map((R) => [R.document_id, R.id])) ?? [];
655
+ const c = ((w = p.matches) == null ? void 0 : w.map((R) => [R.document_id, R.id])) ?? [];
665
656
  return l.track("agent-rate", {
666
657
  event: m ? "update" : "create",
667
658
  thumb: u === 1 ? "up" : "down",
668
- knowledge_id: ((f = g.knowledge) == null ? void 0 : f.id) ?? "",
659
+ knowledge_id: ((y = g.knowledge) == null ? void 0 : y.id) ?? "",
669
660
  matches: c,
670
661
  score: u
671
662
  }), m ? d.updateRating(g.id, t.chat.id, m, {
@@ -674,7 +665,7 @@ async function we(e, r) {
674
665
  matches: c,
675
666
  score: u
676
667
  }) : d.createRating(g.id, t.chat.id, {
677
- knowledge_id: ((A = g.knowledge) == null ? void 0 : A.id) ?? "",
668
+ knowledge_id: (($ = g.knowledge) == null ? void 0 : $.id) ?? "",
678
669
  message_id: s,
679
670
  matches: c,
680
671
  score: u
@@ -733,6 +724,6 @@ export {
733
724
  U as UserPlan,
734
725
  C as VideoType,
735
726
  Y as VoiceAccess,
736
- we as createAgentManager,
737
- he as getAgent
727
+ he as createAgentManager,
728
+ we as getAgent
738
729
  };
@@ -1 +1 @@
1
- (function(w,b){typeof exports=="object"&&typeof module<"u"?b(exports):typeof define=="function"&&define.amd?define(["exports"],b):(w=typeof globalThis<"u"?globalThis:w||self,b(w.index={}))})(this,function(w){"use strict";var b=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(b||{}),j=(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))(j||{}),z=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(z||{}),$=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))($||{}),N=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(N||{}),H=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(H||{}),x=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(x||{}),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||{}),O=(e=>(e.Start="START",e.Stop="STOP",e))(O||{}),R=(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||{}),k=(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))(k||{}),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 F="https://api.d-id.com",G="wss://notifications.d-id.com",ee="79f81a83a67430be2bc0fd61042b8faa",D=()=>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=D();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 K(e,i=F){const t=async(n,a)=>{const r=await fetch(i+(n!=null&&n.startsWith("/")?n:`/${n}`),{...a,headers:{...a==null?void 0:a.headers,Authorization:q(e),"Content-Type":"application/json"}});if(!r.ok){let o=await r.text().catch(()=>"Failed to fetch");throw new Error(o)}return r.json()};return{get(n,a){return t(n,{...a,method:"GET"})},post(n,a,r){return t(n,{...r,body:JSON.stringify(a),method:"POST"})},delete(n,a,r){return t(n,{...r,body:JSON.stringify(a),method:"DELETE"})},patch(n,a,r){return t(n,{...r,body:JSON.stringify(a),method:"PATCH"})}}}function Q(e,i=F){const t=K(e,`${i}/agents`);return{create(n,a){return t.post("/",n,a)},getAgents(n,a){return t.get(`/${n?`?tag=${n}`:""}`,a).then(r=>r??[])},getById(n,a){return t.get(`/${n}`,a)},delete(n,a){return t.delete(`/${n}`,void 0,a)},update(n,a,r){return t.patch(`/${n}`,a,r)},newChat(n,a){return t.post(`/${n}/chat`,void 0,a)},chat(n,a,r,o){return t.post(`/${n}/chat/${a}`,r,o)},createRating(n,a,r,o){return t.post(`/${n}/chat/${a}/ratings`,r,o)},updateRating(n,a,r,o,d){return t.patch(`/${n}/chat/${a}/ratings/${r}`,o,d)},deleteRating(n,a,r,o){return t.delete(`/${n}/chat/${a}/ratings/${r}`,o)}}}const ne=e=>new Promise(i=>setTimeout(i,e));function ae(e){return new Promise((i,t)=>{const{callbacks:n,host:a,auth:r}=e,{onMessage:o=null,onOpen:d=null,onClose:g=null,onError:l=null}=n||{},v=new WebSocket(`${a}?authorization=${q(r)}`);v.onmessage=o,v.onclose=g,v.onerror=y=>{console.error(y),l==null||l("Websocket failed to connect",y),t(y)},v.onopen=y=>{d==null||d(y),i(v)}})}async function ie(e){const{retries:i=1}=e;let t=null;for(let n=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;n++)try{t=await ae(e)}catch(a){if(n===i)throw a;await ne(n*500)}return t}async function X(e,i,t){const n=t!=null&&t.onMessage?[t.onMessage]:[],a=await ie({auth:e,host:i,callbacks:{onError:t==null?void 0:t.onError,onMessage:r=>{const o=JSON.parse(r.data);n.forEach(d=>d(o.event,o))}}});return{socket:a,disconnect:()=>a.close(),subscribeToEvents:r=>n.push(r)}}function re(e,i,t){const n=K(e,`${i}/agents/${t}`);return{createStream(a){return n.post("/streams",{driver_id:a.driver_id,presenter_id:a.presenter_id,compatibility_mode:a.compatibility_mode,stream_warmup:a.stream_warmup,type:S.Clip})},startConnection(a,r,o){return n.post(`/streams/${a}/sdp`,{session_id:o,answer:r,type:S.Clip})},addIceCandidate(a,r,o){return n.post(`/streams/${a}/ice`,{session_id:o,...r,type:S.Clip})},sendStreamRequest(a,r,o){return n.post(`/streams/${a}`,{session_id:r,...o,type:S.Clip})},close(a,r){return n.delete(`/streams/${a}`,{session_id:r,type:S.Clip})}}}function se(e,i,t){const n=K(e,`${i}/agents/${t}`);return{createStream(a,r){return n.post("/streams",{source_url:a.source_url,driver_url:a.driver_url,face:a.face,config:a.config,stream_warmup:a.stream_warmup,type:S.Talk},r)},startConnection(a,r,o,d){return n.post(`/streams/${a}/sdp`,{session_id:o,answer:r,type:S.Talk},d)},addIceCandidate(a,r,o,d){return n.post(`/streams/${a}/ice`,{session_id:o,...r,type:S.Talk},d)},sendStreamRequest(a,r,o,d){return n.post(`/streams/${a}`,{session_id:r,...o,type:S.Talk},d)},close(a,r,o){return n.delete(`/streams/${a}`,{session_id:r,type:S.Talk},o)}}}function oe(e,i){return e.map((t,n)=>n===0?i?{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-i.bytesReceived,packetsReceived:t.packetsReceived-i.packetsReceived,packetsLost:t.packetsLost-i.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 E=(e,i)=>Y&&console.log(e,i),ce=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function de(e){switch(e){case"connected":return k.Connected;case"checking":return k.Connecting;case"failed":return k.Fail;case"new":case"closed":case"disconnected":default:return k.New}}function ge(e,i){let t=[],n=0,a=0,r=0,o;return setInterval(()=>{e.getStats().then(g=>{g.forEach(l=>{if(l.type==="inbound-rtp"&&l.kind==="video"){if(a=t.length-1,l&&t[a]){const v=l.bytesReceived,y=t[a].bytesReceived,M=o;let C;if(o=v-y>0,r=o?0:++r,M!==o)if(o)n=t.length,i==null||i(O.Start,C);else{const L=t.slice(n),P=n===0?void 0:t[n-1];C=oe(L,P),C=C.sort((_,s)=>s.packetsLost-_.packetsLost).slice(0,5)}!o&&r===2&&(i==null||i(O.Stop,C))}t.push(l)}})})},500)}async function le(e,i,{debug:t=!1,callbacks:n,auth:a,analytics:r,baseURL:o=F}){Y=t;let d;const{startConnection:g,sendStreamRequest:l,close:v,createStream:y,addIceCandidate:M}=i.videoType===S.Clip?re(a,o,e):se(a,o,e),{id:C,offer:L,ice_servers:P,session_id:_}=await y(i),s=new ce({iceServers:P}),u=s.createDataChannel("JanusDataChannel");if(!_)throw new Error("Could not create session_id");const m=ge(s,n.onVideoStateChange);s.onicecandidate=c=>{E("peerConnection.onicecandidate",c),c.candidate&&c.candidate.sdpMid&&c.candidate.sdpMLineIndex!==null?M(C,{candidate:c.candidate.candidate,sdpMid:c.candidate.sdpMid,sdpMLineIndex:c.candidate.sdpMLineIndex},_):M(C,{candidate:null},_)},s.oniceconnectionstatechange=()=>{var h;E("peerConnection.oniceconnectionstatechange => "+s.iceConnectionState);const c=de(s.iceConnectionState);c===k.Connected?(r.track("agent-chat-loaded"),d=setTimeout(()=>{var p;(p=n.onConnectionStateChange)==null||p.call(n,k.Connected)},5e3)):(clearTimeout(d),(h=n.onConnectionStateChange)==null||h.call(n,c))},s.ontrack=c=>{var h;E("peerConnection.ontrack",c),(h=n.onSrcObjectReady)==null||h.call(n,c.streams[0])},u.onmessage=c=>{var h;if(u.readyState==="open"){const[p,I]=c.data.split(":");p===R.StreamVideoCreated||R.StreamVideoDone||R.StreamVideoError||R.StreamVideoRejected?r.track("agent-video",{event:p,...c}):p===R.StreamFailed||p===R.StreamDone?clearInterval(m):p===R.StreamReady?(clearTimeout(d),(h=n.onConnectionStateChange)==null||h.call(n,k.Connected)):p===R.StreamCreated&&r.track("agent-video",{event:"created"})}},await s.setRemoteDescription(L),E("set remote description OK");const f=await s.createAnswer();return E("create answer OK"),await s.setLocalDescription(f),E("set local description OK"),await g(C,f,_),E("start connection OK"),{speak(c){return l(C,_,c)},async disconnect(){var c,h;if(C){s&&(s.close(),s.oniceconnectionstatechange=null,s.onnegotiationneeded=null,s.onicecandidate=null,s.ontrack=null);try{await v(C,_).catch(p=>{})}catch(p){E("Error on close stream connection",p)}(c=n.onConnectionStateChange)==null||c.call(n,k.New),(h=n.onVideoStateChange)==null||h.call(n,O.Stop),clearInterval(m)}},sessionId:_,streamId:C}}function me(e){const i={token:e.token||"testKey",distinct_id:e.distinctId||V(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...i,getRandom:()=>Math.random().toString(16).slice(2),track(t,n){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const a={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...n,...i,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",a).then(r=>r.json()).catch(r=>console.error(r))}}}function ue(e){var n,a,r,o,d;const i=()=>/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:`${i()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(n=e.presenter)==null?void 0:n.type,agentVoice:{voiceId:(r=(a=e.presenter)==null?void 0:a.voice)==null?void 0:r.voice_id,provider:(d=(o=e.presenter)==null?void 0:o.voice)==null?void 0:d.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,i,t,n,a){return new Promise(async(r,o)=>{let d=a;const g=await le(e.id,he(e),{...i,callbacks:{...i.callbacks,onConnectionStateChange:async l=>{var v,y;if(l===k.Connected)try{d||(d=await t.newChat(e.id),n.track("agent-chat",{event:"created",chat_id:d.id,agent_id:e.id})),g&&r({chat:d,streamingManager:g})}catch(M){console.error(M),o("Cannot create new chat")}else l===k.Fail&&o(new Error("Cannot create connection"));(y=(v=i.callbacks).onConnectionStateChange)==null||y.call(v,l)},onVideoStateChange(l,v){var y,M;n.track("agent-video",{event:l,rtc_stats:v??[]}),(M=(y=i.callbacks).onVideoStateChange)==null||M.call(y,l,v)}},analytics:n}).catch(o)})}function we(e,i,t){return Q(i,t||F).getById(e)}function W(e){let i="";if(e.greetings&&e.greetings.length>0){const t=Math.floor(Math.random()*e.greetings.length);i=e.greetings[t]}else i=`Hi! I'm ${e.preview_name}, welcome to agents. How can I help you?`;return[{content:i,id:D(),role:"assistant",created_at:new Date().toISOString()}]}async function fe(e,i){var L,P,_;const t={messages:[],chatMode:i.mode||$.Functional};let n=-1;const a=i.wsURL||G,r=i.baseURL||F,o=i.mixpanelKey||ee,d=Q(i.auth,r),g=await d.getById(e);t.messages=W(g),(P=(L=i.callbacks).onNewMessage)==null||P.call(L,t.messages);const l=me({token:o,agent:g,...i});l.track("agent-sdk",{event:"loaded",...ue(g)});const v={onMessage:(s,u)=>{var m,f;if("content"in u){const{content:c}=u,h=t.messages[t.messages.length-1];(h==null?void 0:h.role)==="assistant"&&(n<t.messages.length&&(h.content=s===N.Partial?h.content+c:c),s===N.Answer&&(n=t.messages.length)),s===N.Complete&&l.track("agent-message-received",{messages:t.messages.length}),(f=(m=i.callbacks).onNewMessage)==null||f.call(m,t.messages)}}};async function y(){var f,c,h,p,I;const s=await X(i.auth,a,v),{streamingManager:u,chat:m}=await Z(g,i,d,l,t.chat);n=-1,t.messages.length===0&&(t.messages=W(g),(c=(f=i.callbacks).onNewMessage)==null||c.call(f,t.messages)),m!=null&&m.id&&m.id!==((h=t.chat)==null?void 0:h.id)&&((I=(p=i.callbacks).onNewChat)==null||I.call(p,m==null?void 0:m.id)),t.streamingManager=u,t.socketManager=s,t.chat=m,C($.Functional),l.track("agent-chat",{event:"connect",chatId:m.id,agentId:g.id})}async function M(){var s,u,m,f,c;(s=t.socketManager)==null||s.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,t.messages=W(g),(f=(m=i.callbacks).onNewMessage)==null||f.call(m,t.messages),l.track("agent-chat",{event:"disconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id})}async function C(s){var u,m;s!==t.chatMode&&(l.track("agent-mode-change",{mode:s}),t.chatMode=s,t.chatMode!==$.Functional&&await M(),(m=(u=i.callbacks).onModeChange)==null||m.call(u,s))}return{agent:g,starterMessages:((_=g.knowledge)==null?void 0:_.starter_message)||[],connect:y,disconnect:M,changeMode:C,async reconnect(){var f,c;if(!t.chat)return y();(f=t.socketManager)==null||f.disconnect(),await((c=t.streamingManager)==null?void 0:c.disconnect());const s=await X(i.auth,a,v),{streamingManager:u,chat:m}=await Z(g,i,d,l,t.chat);t.streamingManager=u,t.socketManager=s,C($.Functional),l.track("agent-chat",{event:"reconnect",chatId:m.id,agentId:g.id})},async chat(s,u=!1){var m,f,c,h,p,I;try{if(s.length>=800)throw new Error("Message cannot be more than 800 characters");const T=Date.now();if(t.messages.push({id:D(),role:"user",content:s,created_at:new Date(T).toISOString()}),(f=(m=i.callbacks).onNewMessage)==null||f.call(m,t.messages),s.length===0)throw new Error("Message cannot be empty");if(t.chatMode===$.Maintenance)throw new Error("Chat is in maintenance mode");if(t.chatMode!==$.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 d.newChat(g.id));const A=await d.chat(g.id,t.chat.id,{sessionId:(c=t.streamingManager)==null?void 0:c.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:D(),role:"assistant",content:A.result||"",created_at:new Date().toISOString(),matches:A.matches}),A.result&&(l.track("agent-message-received",{latency:Date.now()-T,messages:t.messages.length}),(I=(p=i.callbacks).onNewMessage)==null||I.call(p,t.messages)),A}catch(T){throw l.track("agent-message-send",{event:"error",messages:t.messages.length}),T}},rate(s,u,m){var h,p,I,T;const f=t.messages.find(A=>A.id===s);if(t.chat){if(!f)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const c=((h=f.matches)==null?void 0:h.map(A=>[A.document_id,A.id]))??[];return l.track("agent-rate",{event:m?"update":"create",thumb:u===1?"up":"down",knowledge_id:((p=g.knowledge)==null?void 0:p.id)??"",matches:c,score:u}),m?d.updateRating(g.id,t.chat.id,m,{knowledge_id:((I=g.knowledge)==null?void 0:I.id)??"",message_id:s,matches:c,score:u}):d.createRating(g.id,t.chat.id,{knowledge_id:((T=g.knowledge)==null?void 0:T.id)??"",message_id:s,matches:c,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}),d.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 m=u();return l.track("agent-speak",m),t.streamingManager.speak({script:m})}}}w.ChatMode=$,w.ChatProgress=N,w.ConnectionState=k,w.DocumentType=U,w.KnowledgeType=x,w.PlanGroup=j,w.Providers=B,w.RateState=z,w.StreamEvents=R,w.StreamingState=O,w.Subject=H,w.UserPlan=b,w.VideoType=S,w.VoiceAccess=J,w.createAgentManager=fe,w.getAgent=we,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
1
+ (function(w,b){typeof exports=="object"&&typeof module<"u"?b(exports):typeof define=="function"&&define.amd?define(["exports"],b):(w=typeof globalThis<"u"?globalThis:w||self,b(w.index={}))})(this,function(w){"use strict";var b=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(b||{}),j=(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))(j||{}),z=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(z||{}),$=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))($||{}),N=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(N||{}),H=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(H||{}),x=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(x||{}),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||{}),C=(e=>(e.Clip="clip",e.Talk="talk",e))(C||{}),O=(e=>(e.Start="START",e.Stop="STOP",e))(O||{}),R=(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||{}),k=(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))(k||{}),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 F="https://api.d-id.com",G="wss://notifications.d-id.com",ee="79f81a83a67430be2bc0fd61042b8faa",D=()=>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=D();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 K(e,i=F){const t=async(n,a)=>{const r=await fetch(i+(n!=null&&n.startsWith("/")?n:`/${n}`),{...a,headers:{...a==null?void 0:a.headers,Authorization:q(e),"Content-Type":"application/json"}});if(!r.ok){let o=await r.text().catch(()=>"Failed to fetch");throw new Error(o)}return r.json()};return{get(n,a){return t(n,{...a,method:"GET"})},post(n,a,r){return t(n,{...r,body:JSON.stringify(a),method:"POST"})},delete(n,a,r){return t(n,{...r,body:JSON.stringify(a),method:"DELETE"})},patch(n,a,r){return t(n,{...r,body:JSON.stringify(a),method:"PATCH"})}}}function Q(e,i=F){const t=K(e,`${i}/agents`);return{create(n,a){return t.post("/",n,a)},getAgents(n,a){return t.get(`/${n?`?tag=${n}`:""}`,a).then(r=>r??[])},getById(n,a){return t.get(`/${n}`,a)},delete(n,a){return t.delete(`/${n}`,void 0,a)},update(n,a,r){return t.patch(`/${n}`,a,r)},newChat(n,a){return t.post(`/${n}/chat`,void 0,a)},chat(n,a,r,o){return t.post(`/${n}/chat/${a}`,r,o)},createRating(n,a,r,o){return t.post(`/${n}/chat/${a}/ratings`,r,o)},updateRating(n,a,r,o,d){return t.patch(`/${n}/chat/${a}/ratings/${r}`,o,d)},deleteRating(n,a,r,o){return t.delete(`/${n}/chat/${a}/ratings/${r}`,o)}}}const ne=e=>new Promise(i=>setTimeout(i,e));function ae(e){return new Promise((i,t)=>{const{callbacks:n,host:a,auth:r}=e,{onMessage:o=null,onOpen:d=null,onClose:g=null,onError:l=null}=n||{},f=new WebSocket(`${a}?authorization=${q(r)}`);f.onmessage=o,f.onclose=g,f.onerror=p=>{console.error(p),l==null||l("Websocket failed to connect",p),t(p)},f.onopen=p=>{d==null||d(p),i(f)}})}async function ie(e){const{retries:i=1}=e;let t=null;for(let n=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;n++)try{t=await ae(e)}catch(a){if(n===i)throw a;await ne(n*500)}return t}async function X(e,i,t){const n=t!=null&&t.onMessage?[t.onMessage]:[],a=await ie({auth:e,host:i,callbacks:{onError:t==null?void 0:t.onError,onMessage:r=>{const o=JSON.parse(r.data);n.forEach(d=>d(o.event,o))}}});return{socket:a,disconnect:()=>a.close(),subscribeToEvents:r=>n.push(r)}}function re(e,i,t){const n=K(e,`${i}/agents/${t}`);return{createStream(a){return n.post("/streams",{driver_id:a.driver_id,presenter_id:a.presenter_id,compatibility_mode:a.compatibility_mode,stream_warmup:a.stream_warmup,type:C.Clip})},startConnection(a,r,o){return n.post(`/streams/${a}/sdp`,{session_id:o,answer:r,type:C.Clip})},addIceCandidate(a,r,o){return n.post(`/streams/${a}/ice`,{session_id:o,...r,type:C.Clip})},sendStreamRequest(a,r,o){return n.post(`/streams/${a}`,{session_id:r,...o,type:C.Clip})},close(a,r){return n.delete(`/streams/${a}`,{session_id:r,type:C.Clip})}}}function se(e,i,t){const n=K(e,`${i}/agents/${t}`);return{createStream(a,r){return n.post("/streams",{source_url:a.source_url,driver_url:a.driver_url,face:a.face,config:a.config,stream_warmup:a.stream_warmup,type:C.Talk},r)},startConnection(a,r,o,d){return n.post(`/streams/${a}/sdp`,{session_id:o,answer:r,type:C.Talk},d)},addIceCandidate(a,r,o,d){return n.post(`/streams/${a}/ice`,{session_id:o,...r,type:C.Talk},d)},sendStreamRequest(a,r,o,d){return n.post(`/streams/${a}`,{session_id:r,...o,type:C.Talk},d)},close(a,r,o){return n.delete(`/streams/${a}`,{session_id:r,type:C.Talk},o)}}}function oe(e,i){return e.map((t,n)=>n===0?i?{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-i.bytesReceived,packetsReceived:t.packetsReceived-i.packetsReceived,packetsLost:t.packetsLost-i.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 E=(e,i)=>Y&&console.log(e,i),ce=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function de(e){switch(e){case"connected":return k.Connected;case"checking":return k.Connecting;case"failed":return k.Fail;case"new":case"closed":case"disconnected":default:return k.New}}function ge(e,i){let t=[],n=0,a=0,r=0,o;return setInterval(()=>{e.getStats().then(g=>{g.forEach(l=>{if(l.type==="inbound-rtp"&&l.kind==="video"){if(a=t.length-1,l&&t[a]){const f=l.bytesReceived,p=t[a].bytesReceived,M=o;let y;if(o=f-p>0,r=o?0:++r,M!==o)if(o)n=t.length,i==null||i(O.Start,y);else{const L=t.slice(n),P=n===0?void 0:t[n-1];y=oe(L,P),y=y.sort((_,s)=>s.packetsLost-_.packetsLost).slice(0,5)}!o&&r===3&&(i==null||i(O.Stop,y))}t.push(l)}})})},500)}async function le(e,i,{debug:t=!1,callbacks:n,auth:a,analytics:r,baseURL:o=F}){Y=t;let d;const{startConnection:g,sendStreamRequest:l,close:f,createStream:p,addIceCandidate:M}=i.videoType===C.Clip?re(a,o,e):se(a,o,e),{id:y,offer:L,ice_servers:P,session_id:_}=await p(i),s=new ce({iceServers:P}),u=s.createDataChannel("JanusDataChannel");if(!_)throw new Error("Could not create session_id");const m=ge(s,n.onVideoStateChange);s.onicecandidate=c=>{E("peerConnection.onicecandidate",c),c.candidate&&c.candidate.sdpMid&&c.candidate.sdpMLineIndex!==null?M(y,{candidate:c.candidate.candidate,sdpMid:c.candidate.sdpMid,sdpMLineIndex:c.candidate.sdpMLineIndex},_):M(y,{candidate:null},_)},s.oniceconnectionstatechange=()=>{var h;E("peerConnection.oniceconnectionstatechange => "+s.iceConnectionState);const c=de(s.iceConnectionState);c===k.Connected?d=setTimeout(()=>{var S;(S=n.onConnectionStateChange)==null||S.call(n,k.Connected)},5e3):(clearTimeout(d),(h=n.onConnectionStateChange)==null||h.call(n,c))},s.ontrack=c=>{var h;E("peerConnection.ontrack",c),(h=n.onSrcObjectReady)==null||h.call(n,c.streams[0])},u.onmessage=c=>{var h;if(u.readyState==="open"){const[S,I]=c.data.split(":");S===R.StreamFailed||S===R.StreamDone?clearInterval(m):S===R.StreamReady&&(clearTimeout(d),(h=n.onConnectionStateChange)==null||h.call(n,k.Connected))}},await s.setRemoteDescription(L),E("set remote description OK");const v=await s.createAnswer();return E("create answer OK"),await s.setLocalDescription(v),E("set local description OK"),await g(y,v,_),E("start connection OK"),{speak(c){return l(y,_,c)},async disconnect(){var c,h;y&&(s&&(s.close(),s.oniceconnectionstatechange=null,s.onnegotiationneeded=null,s.onicecandidate=null,s.ontrack=null),await f(y,_).catch(S=>{}),(c=n.onConnectionStateChange)==null||c.call(n,k.New),(h=n.onVideoStateChange)==null||h.call(n,O.Stop),clearInterval(m))},sessionId:_,streamId:y}}function me(e){const i={token:e.token||"testKey",distinct_id:e.distinctId||V(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...i,getRandom:()=>Math.random().toString(16).slice(2),track(t,n){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const a={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...n,...i,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",a).then(r=>r.json()).catch(r=>console.error(r))}}}function ue(e){var n,a,r,o,d;const i=()=>/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:`${i()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(n=e.presenter)==null?void 0:n.type,agentVoice:{voiceId:(r=(a=e.presenter)==null?void 0:a.voice)==null?void 0:r.voice_id,provider:(d=(o=e.presenter)==null?void 0:o.voice)==null?void 0:d.type}}}function he(e){if(e.presenter){if(e.presenter.type===C.Clip)return{videoType:C.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:C.Talk,source_url:e.presenter.source_url,stream_warmup:!0}}function Z(e,i,t,n,a){return new Promise(async(r,o)=>{let d=a;const g=await le(e.id,he(e),{...i,callbacks:{...i.callbacks,onConnectionStateChange:async l=>{var f,p;if(l===k.Connected)try{d||(d=await t.newChat(e.id),n.track("agent-chat",{event:"created",chat_id:d.id,agent_id:e.id})),g&&r({chat:d,streamingManager:g})}catch(M){console.error(M),o("Cannot create new chat")}else l===k.Fail&&o(new Error("Cannot create connection"));(p=(f=i.callbacks).onConnectionStateChange)==null||p.call(f,l)},onVideoStateChange(l,f){var p,M;n.track("agent-video",{event:l,rtc_stats:f??[]}),(M=(p=i.callbacks).onVideoStateChange)==null||M.call(p,l,f)}},analytics:n}).catch(o)})}function we(e,i,t){return Q(i,t||F).getById(e)}function W(e){let i="";if(e.greetings&&e.greetings.length>0){const t=Math.floor(Math.random()*e.greetings.length);i=e.greetings[t]}else i=`Hi! I'm ${e.preview_name}, welcome to agents. How can I help you?`;return[{content:i,id:D(),role:"assistant",created_at:new Date().toISOString()}]}async function fe(e,i){var L,P,_;const t={messages:[],chatMode:i.mode||$.Functional};let n=-1;const a=i.wsURL||G,r=i.baseURL||F,o=i.mixpanelKey||ee,d=Q(i.auth,r),g=await d.getById(e);t.messages=W(g),(P=(L=i.callbacks).onNewMessage)==null||P.call(L,t.messages);const l=me({token:o,agent:g,...i});l.track("agent-sdk",{event:"loaded",...ue(g)});const f={onMessage:(s,u)=>{var m,v;if("content"in u){const{content:c}=u,h=t.messages[t.messages.length-1];(h==null?void 0:h.role)==="assistant"&&(n<t.messages.length&&(h.content=s===N.Partial?h.content+c:c),s===N.Answer&&(n=t.messages.length)),s===N.Complete&&l.track("agent-message-received",{messages:t.messages.length}),(v=(m=i.callbacks).onNewMessage)==null||v.call(m,t.messages)}else if([R.StreamVideoCreated,R.StreamVideoDone,R.StreamVideoError,R.StreamVideoRejected].includes(s)){const c=s.split("/")[1];l.track("agent-video",{...u,event:c})}}};async function p(){var v,c,h,S,I;const s=await X(i.auth,a,f),{streamingManager:u,chat:m}=await Z(g,i,d,l,t.chat);n=-1,t.messages=W(g),(c=(v=i.callbacks).onNewMessage)==null||c.call(v,t.messages),m!=null&&m.id&&m.id!==((h=t.chat)==null?void 0:h.id)&&((I=(S=i.callbacks).onNewChat)==null||I.call(S,m==null?void 0:m.id)),t.streamingManager=u,t.socketManager=s,t.chat=m,y($.Functional),l.track("agent-chat",{event:"connect",chatId:m.id,agentId:g.id})}async function M(){var s,u,m,v,c;(s=t.socketManager)==null||s.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,t.messages=W(g),(v=(m=i.callbacks).onNewMessage)==null||v.call(m,t.messages),l.track("agent-chat",{event:"disconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id})}async function y(s){var u,m;s!==t.chatMode&&(l.track("agent-mode-change",{mode:s}),t.chatMode=s,t.chatMode!==$.Functional&&await M(),(m=(u=i.callbacks).onModeChange)==null||m.call(u,s))}return{agent:g,starterMessages:((_=g.knowledge)==null?void 0:_.starter_message)||[],connect:p,disconnect:M,changeMode:y,async reconnect(){if(!t.chat)return p();const s=await X(i.auth,a,f),{streamingManager:u,chat:m}=await Z(g,i,d,l,t.chat);t.streamingManager=u,t.socketManager=s,y($.Functional),l.track("agent-chat",{event:"reconnect",chatId:m.id,agentId:g.id})},async chat(s,u=!1){var m,v,c,h,S,I;try{if(s.length>=800)throw new Error("Message cannot be more than 800 characters");const T=Date.now();if(t.messages.push({id:D(),role:"user",content:s,created_at:new Date(T).toISOString()}),(v=(m=i.callbacks).onNewMessage)==null||v.call(m,t.messages),s.length===0)throw new Error("Message cannot be empty");if(t.chatMode===$.Maintenance)throw new Error("Chat is in maintenance mode");if(t.chatMode!==$.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 d.newChat(g.id));const A=await d.chat(g.id,t.chat.id,{sessionId:(c=t.streamingManager)==null?void 0:c.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:D(),role:"assistant",content:A.result??"",created_at:new Date().toISOString(),matches:A.matches}),A.result&&l.track("agent-message-received",{latency:Date.now()-T,messages:t.messages.length}),(I=(S=i.callbacks).onNewMessage)==null||I.call(S,t.messages),A}catch(T){throw l.track("agent-message-send",{event:"error",messages:t.messages.length}),T}},rate(s,u,m){var h,S,I,T;const v=t.messages.find(A=>A.id===s);if(t.chat){if(!v)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const c=((h=v.matches)==null?void 0:h.map(A=>[A.document_id,A.id]))??[];return l.track("agent-rate",{event:m?"update":"create",thumb:u===1?"up":"down",knowledge_id:((S=g.knowledge)==null?void 0:S.id)??"",matches:c,score:u}),m?d.updateRating(g.id,t.chat.id,m,{knowledge_id:((I=g.knowledge)==null?void 0:I.id)??"",message_id:s,matches:c,score:u}):d.createRating(g.id,t.chat.id,{knowledge_id:((T=g.knowledge)==null?void 0:T.id)??"",message_id:s,matches:c,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}),d.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 m=u();return l.track("agent-speak",m),t.streamingManager.speak({script:m})}}}w.ChatMode=$,w.ChatProgress=N,w.ConnectionState=k,w.DocumentType=U,w.KnowledgeType=x,w.PlanGroup=j,w.Providers=B,w.RateState=z,w.StreamEvents=R,w.StreamingState=O,w.Subject=H,w.UserPlan=b,w.VideoType=C,w.VoiceAccess=J,w.createAgentManager=fe,w.getAgent=we,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
@@ -1,6 +1,6 @@
1
1
  import { SupportedStreamScipt } from '../../StreamScript';
2
2
  import { Auth } from '../../auth';
3
- import { ConnectionState, SendStreamPayloadResponse, StreamingState } from '../../stream';
3
+ import { ConnectionState, SendStreamPayloadResponse, StreamEvents, StreamingState } from '../../stream';
4
4
  import { Agent } from './agent';
5
5
  import { ChatMode, ChatResponse, Message, RatingEntity } from './chat';
6
6
  /**
@@ -28,7 +28,7 @@ export declare enum ChatProgress {
28
28
  */
29
29
  Complete = "done"
30
30
  }
31
- export type ChatProgressCallback = (progress: ChatProgress, data: any) => void;
31
+ export type ChatProgressCallback = (progress: ChatProgress | StreamEvents, data: any) => void;
32
32
  export type ConnectionStateChangeCallback = (state: ConnectionState) => void;
33
33
  export type VideoStateChangeCallback = (state: StreamingState, data: any) => void;
34
34
  interface ManagerCallbacks {
@@ -1,4 +1,3 @@
1
- import { Rect } from '../../face-rect';
2
1
  import { ExtendedTextToSpeechProviders } from '../../tts';
3
2
  export type videoType = 'talk' | 'clip';
4
3
  export type Presenter = TalkPresenter | ClipPresenter;
@@ -12,8 +11,6 @@ export interface TalkPresenter extends BasePresenter {
12
11
  type: 'talk';
13
12
  source_url: string;
14
13
  driver_url?: string;
15
- stitch?: boolean;
16
- face?: Rect;
17
14
  }
18
15
  export interface ClipPresenter extends BasePresenter {
19
16
  type: 'clip';
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.78",
4
+ "version": "1.0.19-beta.79",
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
+ }
@@ -1,6 +0,0 @@
1
- export interface Rect {
2
- top: number;
3
- left: number;
4
- bottom: number;
5
- right: number;
6
- }