@d-id/client-sdk 1.0.19-beta.62 → 1.0.19-beta.64

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
@@ -152,11 +152,11 @@ function re(e) {
152
152
  onOpen: w = null,
153
153
  onClose: v = null,
154
154
  onError: o = null
155
- } = n || {}, h = new WebSocket(`${r}?authorization=${W(i)}`);
156
- h.onmessage = c, h.onclose = v, h.onerror = (d) => {
155
+ } = n || {}, f = new WebSocket(`${r}?authorization=${W(i)}`);
156
+ f.onmessage = c, f.onclose = v, f.onerror = (d) => {
157
157
  console.error(d), o == null || o("Websocket failed to connect", d), t(d);
158
- }, h.onopen = (d) => {
159
- w == null || w(d), s(h);
158
+ }, f.onopen = (d) => {
159
+ w == null || w(d), s(f);
160
160
  };
161
161
  });
162
162
  }
@@ -321,16 +321,16 @@ function me(e, s) {
321
321
  w.forEach((v) => {
322
322
  if (v.type === "inbound-rtp" && v.kind === "video") {
323
323
  if (r = t.length - 1, v && t[r]) {
324
- const o = v.bytesReceived, h = t[r].bytesReceived;
324
+ const o = v.bytesReceived, f = t[r].bytesReceived;
325
325
  let d = i;
326
- i = o - h > 0;
326
+ i = o - f > 0;
327
327
  let l;
328
328
  if (d !== i) {
329
329
  if (i)
330
330
  n = t.length;
331
331
  else {
332
- const y = t.slice(n), g = n === 0 ? void 0 : t[n - 1];
333
- l = de(y, g), l = l.sort((m, a) => a.packetsLost - m.packetsLost).slice(0, 5);
332
+ const y = t.slice(n), m = n === 0 ? void 0 : t[n - 1];
333
+ l = de(y, m), l = l.sort((u, a) => a.packetsLost - u.packetsLost).slice(0, 5);
334
334
  }
335
335
  s == null || s(i ? x.Start : x.Stop, l);
336
336
  }
@@ -354,89 +354,89 @@ async function ue(e, {
354
354
  startConnection: w,
355
355
  sendStreamRequest: v,
356
356
  close: o,
357
- createStream: h,
357
+ createStream: f,
358
358
  addIceCandidate: d
359
359
  } = e.videoType === L.Clip ? ae(n, i) : oe(n, i), {
360
360
  id: l,
361
361
  offer: y,
362
- ice_servers: g,
363
- session_id: m
364
- } = await h(e), a = new ce({
365
- iceServers: g
362
+ ice_servers: m,
363
+ session_id: u
364
+ } = await f(e), a = new ce({
365
+ iceServers: m
366
366
  }), k = a.createDataChannel("JanusDataChannel");
367
- if (!m)
367
+ if (!u)
368
368
  throw new Error("Could not create session_id");
369
369
  const S = me(a, t.onVideoStateChange);
370
- a.onicecandidate = (u) => {
371
- M("peerConnection.onicecandidate", u), u.candidate && u.candidate.sdpMid && u.candidate.sdpMLineIndex !== null ? d(l, {
372
- candidate: u.candidate.candidate,
373
- sdpMid: u.candidate.sdpMid,
374
- sdpMLineIndex: u.candidate.sdpMLineIndex
375
- }, m) : d(l, {
370
+ a.onicecandidate = (g) => {
371
+ M("peerConnection.onicecandidate", g), g.candidate && g.candidate.sdpMid && g.candidate.sdpMLineIndex !== null ? d(l, {
372
+ candidate: g.candidate.candidate,
373
+ sdpMid: g.candidate.sdpMid,
374
+ sdpMLineIndex: g.candidate.sdpMLineIndex
375
+ }, u) : d(l, {
376
376
  candidate: null
377
- }, m);
377
+ }, u);
378
378
  }, a.oniceconnectionstatechange = () => {
379
- var f;
379
+ var p;
380
380
  M("peerConnection.oniceconnectionstatechange => " + a.iceConnectionState);
381
- const u = ge(a.iceConnectionState);
382
- e.videoType === L.Talk && u === I.Connected ? c = setTimeout(() => {
381
+ const g = ge(a.iceConnectionState);
382
+ e.videoType === L.Talk && g === I.Connected ? c = setTimeout(() => {
383
383
  var R;
384
384
  (R = t.onConnectionStateChange) == null || R.call(t, I.Connected);
385
- }, 5e3) : (clearTimeout(c), (f = t.onConnectionStateChange) == null || f.call(t, u));
386
- }, a.ontrack = (u) => {
387
- var f;
388
- M("peerConnection.ontrack", u), (f = t.onSrcObjectReady) == null || f.call(t, u.streams[0]);
389
- }, k.onmessage = (u) => {
390
- var f, R;
385
+ }, 5e3) : (clearTimeout(c), (p = t.onConnectionStateChange) == null || p.call(t, g));
386
+ }, a.ontrack = (g) => {
387
+ var p;
388
+ M("peerConnection.ontrack", g), (p = t.onSrcObjectReady) == null || p.call(t, g.streams[0]);
389
+ }, k.onmessage = (g) => {
390
+ var p, R;
391
391
  if (k.readyState === "open") {
392
- const [p, _] = u.data.split(":");
393
- console.log("data", _), p === $.StreamStarted ? r == null || r.track("agent-video", {
392
+ const [h, _] = g.data.split(":");
393
+ console.log("data", h, _, g), h === $.StreamStarted ? r == null || r.track("agent-video", {
394
394
  event: "start",
395
395
  ..._
396
- }) : p === $.StreamDone ? r == null || r.track("agent-video", {
396
+ }) : h === $.StreamDone ? r == null || r.track("agent-video", {
397
397
  event: "stop",
398
398
  rtcStats: _ ?? [],
399
399
  ..._
400
- }) : p === $.StreamFailed ? ((f = t.onVideoStateChange) == null || f.call(t, x.Stop, {
401
- event: p,
400
+ }) : h === $.StreamFailed ? ((p = t.onVideoStateChange) == null || p.call(t, x.Stop, {
401
+ event: h,
402
402
  data: _
403
- }), clearInterval(S)) : p === $.StreamReady ? (clearTimeout(c), (R = t.onConnectionStateChange) == null || R.call(t, I.Connected)) : p === $.StreamCreated ? r == null || r.track("agent-video", {
403
+ }), clearInterval(S)) : h === $.StreamReady ? (clearTimeout(c), (R = t.onConnectionStateChange) == null || R.call(t, I.Connected)) : h === $.StreamCreated ? r == null || r.track("agent-video", {
404
404
  event: "created",
405
405
  ..._
406
- }) : p === $.StreamVideoCreated ? r == null || r.track("agent-video", {
406
+ }) : h === $.StreamVideoCreated ? r == null || r.track("agent-video", {
407
407
  event: "video-created",
408
408
  ..._
409
- }) : p === $.StreamVideoDone ? r == null || r.track("agent-video", {
409
+ }) : h === $.StreamVideoDone ? r == null || r.track("agent-video", {
410
410
  event: "video-done",
411
411
  rtcStats: _ ?? [],
412
412
  ..._
413
- }) : p === $.StreamVideoError && (r == null || r.track("agent-video", {
413
+ }) : h === $.StreamVideoError && (r == null || r.track("agent-video", {
414
414
  event: "video-error",
415
415
  ..._
416
416
  }));
417
417
  }
418
418
  }, await a.setRemoteDescription(y), M("set remote description OK");
419
419
  const C = await a.createAnswer();
420
- return M("create answer OK"), await a.setLocalDescription(C), M("set local description OK"), await w(l, C, m), M("start connection OK"), {
420
+ return M("create answer OK"), await a.setLocalDescription(C), M("set local description OK"), await w(l, C, u), M("start connection OK"), {
421
421
  /**
422
422
  * Method to send request to server to get clip or talk depend on you payload
423
423
  * @param payload
424
424
  */
425
- speak(u) {
426
- return v(l, m, u);
425
+ speak(g) {
426
+ return v(l, u, g);
427
427
  },
428
428
  /**
429
429
  * Method to close RTC connection
430
430
  */
431
431
  async disconnect() {
432
- var u, f;
433
- l && (a && (a.close(), a.oniceconnectionstatechange = null, a.onnegotiationneeded = null, a.onicecandidate = null, a.ontrack = null), await o(l, m).catch((R) => {
434
- }), (u = t.onConnectionStateChange) == null || u.call(t, I.New), (f = t.onVideoStateChange) == null || f.call(t, x.Stop), clearInterval(S));
432
+ var g, p;
433
+ l && (a && (a.close(), a.oniceconnectionstatechange = null, a.onnegotiationneeded = null, a.onicecandidate = null, a.ontrack = null), await o(l, u).catch((R) => {
434
+ }), (g = t.onConnectionStateChange) == null || g.call(t, I.New), (p = t.onVideoStateChange) == null || p.call(t, x.Stop), clearInterval(S));
435
435
  },
436
436
  /**
437
437
  * Session identifier information, should be returned in the body of all streaming requests
438
438
  */
439
- sessionId: m,
439
+ sessionId: u,
440
440
  /**
441
441
  * Id of current RTC stream
442
442
  */
@@ -522,7 +522,7 @@ function pe(e, s, t, n, r) {
522
522
  callbacks: {
523
523
  ...s.callbacks,
524
524
  onConnectionStateChange: async (o) => {
525
- var h, d;
525
+ var f, d;
526
526
  if (o === I.Connected)
527
527
  try {
528
528
  w || (w = await t.newChat(e.id), n.track("agent-chat", {
@@ -538,14 +538,14 @@ function pe(e, s, t, n, r) {
538
538
  }
539
539
  else
540
540
  o === I.Fail && c(new Error("Cannot create connection"));
541
- (d = (h = s.callbacks).onConnectionStateChange) == null || d.call(h, o);
541
+ (d = (f = s.callbacks).onConnectionStateChange) == null || d.call(f, o);
542
542
  },
543
- onVideoStateChange(o, h) {
543
+ onVideoStateChange(o, f) {
544
544
  var d, l;
545
545
  n.track("agent-video", {
546
546
  event: o,
547
- rtc_stats: h ?? []
548
- }), (l = (d = s.callbacks).onVideoStateChange) == null || l.call(d, o, h);
547
+ rtc_stats: f ?? []
548
+ }), (l = (d = s.callbacks).onVideoStateChange) == null || l.call(d, o, f);
549
549
  }
550
550
  }
551
551
  }).catch(c);
@@ -572,7 +572,7 @@ async function Se(e, s) {
572
572
  var l, y;
573
573
  const t = {
574
574
  messages: []
575
- }, n = s.wsURL || Y, r = s.baseURL || A, i = s.mixpanelKey || Z, c = H(s.auth, r), w = te(s.auth, r), v = ee(s.auth, r), o = await c.getById(e), h = await he(o, v);
575
+ }, n = s.wsURL || Y, r = s.baseURL || A, i = s.mixpanelKey || Z, c = H(s.auth, r), w = te(s.auth, r), v = ee(s.auth, r), o = await c.getById(e), f = await he(o, v);
576
576
  t.messages = b(o), (y = (l = s.callbacks).onNewMessage) == null || y.call(l, t.messages);
577
577
  const d = le({
578
578
  mixPanelKey: i,
@@ -584,44 +584,44 @@ async function Se(e, s) {
584
584
  ...we(o)
585
585
  }), {
586
586
  agent: o,
587
- starterMessages: h,
587
+ starterMessages: f,
588
588
  async connect() {
589
- var k, S, C, u, f;
590
- const g = await se(s.auth, n, {
591
- onMessage: (R, p) => {
589
+ var k, S, C, g, p;
590
+ const m = await se(s.auth, n, {
591
+ onMessage: (R, h) => {
592
592
  var _, N;
593
- if ("content" in p) {
593
+ if ("content" in h) {
594
594
  const {
595
595
  content: O
596
- } = p, E = t.messages[t.messages.length - 1];
596
+ } = h, E = t.messages[t.messages.length - 1];
597
597
  (E == null ? void 0 : E.role) === "assistant" && (E.content = R === T.Partial ? E.content + O : O), R === T.Complete && d.track("agent-message-received", {
598
598
  messages: t.messages.length
599
599
  }), (N = (_ = s.callbacks).onNewMessage) == null || N.call(_, t.messages);
600
600
  }
601
601
  }
602
602
  }), {
603
- streamingManager: m,
603
+ streamingManager: u,
604
604
  chat: a
605
605
  } = await pe(o, s, c, d, t.chat);
606
- t.messages = b(o), (S = (k = s.callbacks).onNewMessage) == null || S.call(k, t.messages), a != null && a.id && a.id !== ((C = t.chat) == null ? void 0 : C.id) && ((f = (u = s.callbacks).onNewChat) == null || f.call(u, a == null ? void 0 : a.id)), t.streamingManager = m, t.socketManager = g, t.chat = a, d.track("agent-chat", {
606
+ t.messages = b(o), (S = (k = s.callbacks).onNewMessage) == null || S.call(k, t.messages), a != null && a.id && a.id !== ((C = t.chat) == null ? void 0 : C.id) && ((p = (g = s.callbacks).onNewChat) == null || p.call(g, a == null ? void 0 : a.id)), t.streamingManager = u, t.socketManager = m, t.chat = a, d.track("agent-chat", {
607
607
  event: "connect",
608
608
  chatId: a.id,
609
609
  agentId: o.id
610
610
  });
611
611
  },
612
612
  async disconnect() {
613
- var g, m, a;
614
- (g = t.socketManager) == null || g.disconnect(), await ((m = t.streamingManager) == null ? void 0 : m.disconnect()), d.track("agent-chat", {
613
+ var m, u, a;
614
+ (m = t.socketManager) == null || m.disconnect(), await ((u = t.streamingManager) == null ? void 0 : u.disconnect()), d.track("agent-chat", {
615
615
  event: "disconnect",
616
616
  chatId: (a = t.chat) == null ? void 0 : a.id,
617
617
  agentId: o.id
618
618
  });
619
619
  },
620
- async chat(g, m = !1) {
620
+ async chat(m, u = !1) {
621
621
  var a, k;
622
622
  try {
623
623
  const S = Date.now();
624
- if (g.length === 0)
624
+ if (m.length === 0)
625
625
  throw new Error("Message cannot be empty");
626
626
  if (!t.chat)
627
627
  throw new Error("Chat is not initialized");
@@ -630,14 +630,14 @@ async function Se(e, s) {
630
630
  t.messages.push({
631
631
  id: K(),
632
632
  role: "user",
633
- content: g,
633
+ content: m,
634
634
  created_at: new Date(S).toISOString()
635
635
  });
636
636
  const C = await c.chat(o.id, t.chat.id, {
637
637
  sessionId: t.streamingManager.sessionId,
638
638
  streamId: t.streamingManager.streamId,
639
639
  messages: t.messages,
640
- append_chat: m
640
+ append_chat: u
641
641
  });
642
642
  return d.track("agent-message-send", {
643
643
  event: "success",
@@ -659,64 +659,64 @@ async function Se(e, s) {
659
659
  }), S;
660
660
  }
661
661
  },
662
- rate(g, m, a) {
663
- var C, u, f, R;
664
- const k = t.messages.find((p) => p.id === g);
662
+ rate(m, u, a) {
663
+ var C, g, p, R;
664
+ const k = t.messages.find((h) => h.id === m);
665
665
  if (t.chat) {
666
666
  if (!k)
667
667
  throw new Error("Message not found");
668
668
  } else
669
669
  throw new Error("Chat is not initialized");
670
- const S = ((C = k.matches) == null ? void 0 : C.map((p) => [p.document_id, p.id])) ?? [];
670
+ const S = ((C = k.matches) == null ? void 0 : C.map((h) => [h.document_id, h.id])) ?? [];
671
671
  return d.track("agent-rate", {
672
672
  event: a ? "update" : "create",
673
- thumb: m === 1 ? "up" : "down",
674
- knowledge_id: ((u = o.knowledge) == null ? void 0 : u.id) ?? "",
673
+ thumb: u === 1 ? "up" : "down",
674
+ knowledge_id: ((g = o.knowledge) == null ? void 0 : g.id) ?? "",
675
675
  matches: S,
676
- score: m
676
+ score: u
677
677
  }), a ? w.update(a, {
678
678
  agent_id: o.id,
679
- knowledge_id: ((f = o.knowledge) == null ? void 0 : f.id) ?? "",
679
+ knowledge_id: ((p = o.knowledge) == null ? void 0 : p.id) ?? "",
680
680
  chat_id: t.chat.id,
681
- message_id: g,
681
+ message_id: m,
682
682
  matches: S,
683
- score: m
683
+ score: u
684
684
  }) : w.create({
685
685
  agent_id: o.id,
686
686
  knowledge_id: ((R = o.knowledge) == null ? void 0 : R.id) ?? "",
687
687
  chat_id: t.chat.id,
688
- message_id: g,
688
+ message_id: m,
689
689
  matches: S,
690
- score: m
690
+ score: u
691
691
  });
692
692
  },
693
- deleteRate(g) {
694
- var m;
693
+ deleteRate(m) {
694
+ var u;
695
695
  return d.track("agent-rate-delete", {
696
696
  type: "text",
697
- chat_id: (m = t.chat) == null ? void 0 : m.id,
698
- id: g
699
- }), w.delete(g);
697
+ chat_id: (u = t.chat) == null ? void 0 : u.id,
698
+ id: m
699
+ }), w.delete(m);
700
700
  },
701
- speak(g) {
701
+ speak(m) {
702
702
  if (!t.streamingManager)
703
703
  throw new Error("Streaming manager is not initialized");
704
- function m() {
705
- if (g.type === "text")
704
+ function u() {
705
+ if (m.type === "text")
706
706
  return {
707
707
  type: "text",
708
- provider: g.provider ? g.provider : o.presenter.voice,
709
- input: g.input,
710
- ssml: g.ssml || !1
708
+ provider: m.provider ? m.provider : o.presenter.voice,
709
+ input: m.input,
710
+ ssml: m.ssml || !1
711
711
  };
712
- if (g.type === "audio")
712
+ if (m.type === "audio")
713
713
  return {
714
714
  type: "audio",
715
- audio_url: g.audio_url
715
+ audio_url: m.audio_url
716
716
  };
717
717
  throw new Error("Invalid payload");
718
718
  }
719
- const a = m();
719
+ const a = u();
720
720
  return d.track("agent-speak", a), t.streamingManager.speak({
721
721
  script: a
722
722
  });
@@ -1 +1 @@
1
- (function(v,L){typeof exports=="object"&&typeof module<"u"?L(exports):typeof define=="function"&&define.amd?define(["exports"],L):(v=typeof globalThis<"u"?globalThis:v||self,L(v.index={}))})(this,function(v){"use strict";var L=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(L||{}),x=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(x||{}),T=(e=>(e.Start="START",e.Stop="STOP",e))(T||{}),$=(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))(I||{}),D=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(D||{}),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||{}),H=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(H||{}),j=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))(j||{}),O=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(O||{}),U=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(U||{}),z=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(z||{}),B=(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))(B||{}),E=(e=>(e.Clip="clip",e.Talk="talk",e))(E||{});const M="https://api.d-id.com",Z="wss://notifications.d-id.com",G="79f81a83a67430be2bc0fd61042b8faa",N=()=>Math.random().toString(16).slice(2);function F(){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 ee=N();function V(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}.${F()}_${ee}`;throw new Error(`Unknown auth type: ${e}`)}function K(e,a=M){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:V(e),"Content-Type":"application/json"}});if(!i.ok){let c=await i.text().catch(()=>"Failed to fetch");throw new Error(c)}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=M){const t=K(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,c){return t.post(`/${n}/chat/${r}`,i,c)}}}function te(e,a=M){const t=K(e,`${a}/knowledge`);return{createKnowledge(n,r){return t.post("/",n,r)},getKnowledgeBase(n){return t.get("/",n)},getKnowledge(n,r){return t.get(`/${n}`,r)},deleteKnowledge(n,r){return t.delete(`/${n}`,void 0,r)},createDocument(n,r,i){return t.post(`/${n}/documents`,r,i)},deleteDocument(n,r,i){return t.delete(`/${n}/documents/${r}`,void 0,i)},getDocuments(n,r){return t.get(`/${n}/documents`,r)},getDocument(n,r,i){return t.get(`/${n}/documents/${r}`,i)},getRecords(n,r,i){return t.get(`/${n}/documents/${r}/records`,i)},query(n,r,i){return t.post(`/${n}/query`,{query:r},i)}}}function ne(e,a=M){const t=K(e,`${a}/chats/ratings`);return{create(n,r){return t.post("/",n,r)},getByKnowledge(n,r){return t.get(`/${n}`,r).then(i=>i??[])},update(n,r,i){return t.patch(`/${n}`,r,i)},delete(n,r){return t.delete(`/${n}`,r)}}}const re=e=>new Promise(a=>setTimeout(a,e));function ie(e){return new Promise((a,t)=>{const{callbacks:n,host:r,auth:i}=e,{onMessage:c=null,onOpen:w=null,onClose:S=null,onError:o=null}=n||{},h=new WebSocket(`${r}?authorization=${V(i)}`);h.onmessage=c,h.onclose=S,h.onerror=d=>{console.error(d),o==null||o("Websocket failed to connect",d),t(d)},h.onopen=d=>{w==null||w(d),a(h)}})}async function ae(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 ie(e)}catch(r){if(n===a)throw r;await re(n*500)}return t}async function se(e,a,t){const n=t!=null&&t.onMessage?[t.onMessage]:[],r=await ae({auth:e,host:a,callbacks:{onError:t==null?void 0:t.onError,onMessage:i=>{const c=JSON.parse(i.data);n.forEach(w=>w(c.event,c))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:i=>n.push(i)}}function oe(e,a){const t=K(e,a);return{createStream(n){return t.post("/clips/streams",{driver_id:n.driver_id,presenter_id:n.presenter_id,compatibility_mode:n.compatibility_mode})},startConnection(n,r,i){return t.post(`/clips/streams/${n}/sdp`,{session_id:i,answer:r})},addIceCandidate(n,r,i){return t.post(`/clips/streams/${n}/ice`,{session_id:i,...r})},sendStreamRequest(n,r,i){return t.post(`/clips/streams/${n}`,{session_id:r,...i})},close(n,r){return t.delete(`/clips/streams/${n}`,{session_id:r})}}}function de(e,a){const t=K(e,a);return{createStream(n,r){return t.post("/talks/streams",{source_url:n.source_url,driver_url:n.driver_url,face:n.face,config:n.config},r)},startConnection(n,r,i,c){return t.post(`/talks/streams/${n}/sdp`,{session_id:i,answer:r},c)},addIceCandidate(n,r,i,c){return t.post(`/talks/streams/${n}/ice`,{session_id:i,...r},c)},sendStreamRequest(n,r,i,c){return t.post(`/talks/streams/${n}`,{session_id:r,...i},c)},close(n,r,i){return t.delete(`/talks/streams/${n}`,{session_id:r},i)}}}function ce(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 J=!1;const A=(e,a)=>J&&console.log(e,a),ge=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ue(e){switch(e){case"connected":return I.Connected;case"checking":return I.Connecting;case"failed":return I.Fail;case"new":case"closed":case"disconnected":default:return I.New}}function me(e,a){let t=[],n=0,r=0,i;return setInterval(()=>{e.getStats().then(w=>{w.forEach(S=>{if(S.type==="inbound-rtp"&&S.kind==="video"){if(r=t.length-1,S&&t[r]){const o=S.bytesReceived,h=t[r].bytesReceived;let d=i;i=o-h>0;let l;if(d!==i){if(i)n=t.length;else{const P=t.slice(n),g=n===0?void 0:t[n-1];l=ce(P,g),l=l.sort((u,s)=>s.packetsLost-u.packetsLost).slice(0,5)}a==null||a(i?T.Start:T.Stop,l)}}t.push(S)}})})},500)}async function le(e,{debug:a=!1,callbacks:t,auth:n,analytics:r,baseURL:i=M}){J=a;let c;const{startConnection:w,sendStreamRequest:S,close:o,createStream:h,addIceCandidate:d}=e.videoType===E.Clip?oe(n,i):de(n,i),{id:l,offer:P,ice_servers:g,session_id:u}=await h(e),s=new ge({iceServers:g}),R=s.createDataChannel("JanusDataChannel");if(!u)throw new Error("Could not create session_id");const C=me(s,t.onVideoStateChange);s.onicecandidate=m=>{A("peerConnection.onicecandidate",m),m.candidate&&m.candidate.sdpMid&&m.candidate.sdpMLineIndex!==null?d(l,{candidate:m.candidate.candidate,sdpMid:m.candidate.sdpMid,sdpMLineIndex:m.candidate.sdpMLineIndex},u):d(l,{candidate:null},u)},s.oniceconnectionstatechange=()=>{var f;A("peerConnection.oniceconnectionstatechange => "+s.iceConnectionState);const m=ue(s.iceConnectionState);e.videoType===E.Talk&&m===I.Connected?c=setTimeout(()=>{var y;(y=t.onConnectionStateChange)==null||y.call(t,I.Connected)},5e3):(clearTimeout(c),(f=t.onConnectionStateChange)==null||f.call(t,m))},s.ontrack=m=>{var f;A("peerConnection.ontrack",m),(f=t.onSrcObjectReady)==null||f.call(t,m.streams[0])},R.onmessage=m=>{var f,y;if(R.readyState==="open"){const[p,k]=m.data.split(":");console.log("data",k),p===$.StreamStarted?r==null||r.track("agent-video",{event:"start",...k}):p===$.StreamDone?r==null||r.track("agent-video",{event:"stop",rtcStats:k??[],...k}):p===$.StreamFailed?((f=t.onVideoStateChange)==null||f.call(t,T.Stop,{event:p,data:k}),clearInterval(C)):p===$.StreamReady?(clearTimeout(c),(y=t.onConnectionStateChange)==null||y.call(t,I.Connected)):p===$.StreamCreated?r==null||r.track("agent-video",{event:"created",...k}):p===$.StreamVideoCreated?r==null||r.track("agent-video",{event:"video-created",...k}):p===$.StreamVideoDone?r==null||r.track("agent-video",{event:"video-done",rtcStats:k??[],...k}):p===$.StreamVideoError&&(r==null||r.track("agent-video",{event:"video-error",...k}))}},await s.setRemoteDescription(P),A("set remote description OK");const _=await s.createAnswer();return A("create answer OK"),await s.setLocalDescription(_),A("set local description OK"),await w(l,_,u),A("start connection OK"),{speak(m){return S(l,u,m)},async disconnect(){var m,f;l&&(s&&(s.close(),s.oniceconnectionstatechange=null,s.onnegotiationneeded=null,s.onicecandidate=null,s.ontrack=null),await o(l,u).catch(y=>{}),(m=t.onConnectionStateChange)==null||m.call(t,I.New),(f=t.onVideoStateChange)==null||f.call(t,T.Stop),clearInterval(C))},sessionId:u,streamId:l}}function we(e){const a={mixPanelKey:e.mixPanelKey||"testKey",distinct_id:e.distinctId||F(),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 he(e){var n,r;const a=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const i=navigator.platform;return i.toLowerCase().includes("win")?"Windows":i.toLowerCase().includes("mac")?"Mac OS X":i.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${a()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:e.presenter.type,agentVoice:{voiceId:(n=e.presenter.voice)==null?void 0:n.voice_id,provider:(r=e.presenter.voice)==null?void 0:r.type}}}function fe(e,a){var t;return(t=e.knowledge)!=null&&t.id?a.getKnowledge(e.knowledge.id).then(n=>(n==null?void 0:n.starter_message)||[]):[]}function pe(e){return e.presenter.type===E.Clip?{videoType:E.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id}:{videoType:E.Talk,source_url:e.presenter.source_url}}function ve(e,a,t,n,r){return new Promise(async(i,c)=>{let w=r;const S=await le(pe(e),{...a,callbacks:{...a.callbacks,onConnectionStateChange:async o=>{var h,d;if(o===I.Connected)try{w||(w=await t.newChat(e.id),n.track("agent-chat",{event:"created",chat_id:w.id,agent_id:e.id})),S&&w&&i({chat:w,streamingManager:S})}catch(l){console.error(l),c("Cannot create new chat")}else o===I.Fail&&c(new Error("Cannot create connection"));(d=(h=a.callbacks).onConnectionStateChange)==null||d.call(h,o)},onVideoStateChange(o,h){var d,l;n.track("agent-video",{event:o,rtc_stats:h??[]}),(l=(d=a.callbacks).onVideoStateChange)==null||l.call(d,o,h)}}}).catch(c)})}function Se(e,a,t){return q(a,t||M).getById(e)}function Q(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:N(),role:"assistant",created_at:new Date().toISOString()}]}async function Ce(e,a){var l,P;const t={messages:[]},n=a.wsURL||Z,r=a.baseURL||M,i=a.mixpanelKey||G,c=q(a.auth,r),w=ne(a.auth,r),S=te(a.auth,r),o=await c.getById(e),h=await fe(o,S);t.messages=Q(o),(P=(l=a.callbacks).onNewMessage)==null||P.call(l,t.messages);const d=we({mixPanelKey:i,agent:o,...a});return d.track("agent-sdk",{event:"loaded",...he(o)}),{agent:o,starterMessages:h,async connect(){var R,C,_,m,f;const g=await se(a.auth,n,{onMessage:(y,p)=>{var k,X;if("content"in p){const{content:Y}=p,b=t.messages[t.messages.length-1];(b==null?void 0:b.role)==="assistant"&&(b.content=y===O.Partial?b.content+Y:Y),y===O.Complete&&d.track("agent-message-received",{messages:t.messages.length}),(X=(k=a.callbacks).onNewMessage)==null||X.call(k,t.messages)}}}),{streamingManager:u,chat:s}=await ve(o,a,c,d,t.chat);t.messages=Q(o),(C=(R=a.callbacks).onNewMessage)==null||C.call(R,t.messages),s!=null&&s.id&&s.id!==((_=t.chat)==null?void 0:_.id)&&((f=(m=a.callbacks).onNewChat)==null||f.call(m,s==null?void 0:s.id)),t.streamingManager=u,t.socketManager=g,t.chat=s,d.track("agent-chat",{event:"connect",chatId:s.id,agentId:o.id})},async disconnect(){var g,u,s;(g=t.socketManager)==null||g.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),d.track("agent-chat",{event:"disconnect",chatId:(s=t.chat)==null?void 0:s.id,agentId:o.id})},async chat(g,u=!1){var s,R;try{const C=Date.now();if(g.length===0)throw new Error("Message cannot be empty");if(!t.chat)throw new Error("Chat is not initialized");if(!t.streamingManager)throw new Error("Streaming manager is not initialized");t.messages.push({id:N(),role:"user",content:g,created_at:new Date(C).toISOString()});const _=await c.chat(o.id,t.chat.id,{sessionId:t.streamingManager.sessionId,streamId:t.streamingManager.streamId,messages:t.messages,append_chat:u});return d.track("agent-message-send",{event:"success",messages:t.messages.length+1}),t.messages.push({id:N(),role:"assistant",content:_.result??"",created_at:new Date().toISOString(),matches:_.matches}),_.result&&d.track("agent-message-received",{latency:Date.now()-C,messages:t.messages.length}),(R=(s=a.callbacks).onNewMessage)==null||R.call(s,t.messages),_}catch(C){throw d.track("agent-message-send",{event:"error",messages:t.messages.length}),C}},rate(g,u,s){var _,m,f,y;const R=t.messages.find(p=>p.id===g);if(t.chat){if(!R)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const C=((_=R.matches)==null?void 0:_.map(p=>[p.document_id,p.id]))??[];return d.track("agent-rate",{event:s?"update":"create",thumb:u===1?"up":"down",knowledge_id:((m=o.knowledge)==null?void 0:m.id)??"",matches:C,score:u}),s?w.update(s,{agent_id:o.id,knowledge_id:((f=o.knowledge)==null?void 0:f.id)??"",chat_id:t.chat.id,message_id:g,matches:C,score:u}):w.create({agent_id:o.id,knowledge_id:((y=o.knowledge)==null?void 0:y.id)??"",chat_id:t.chat.id,message_id:g,matches:C,score:u})},deleteRate(g){var u;return d.track("agent-rate-delete",{type:"text",chat_id:(u=t.chat)==null?void 0:u.id,id:g}),w.delete(g)},speak(g){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function u(){if(g.type==="text")return{type:"text",provider:g.provider?g.provider:o.presenter.voice,input:g.input,ssml:g.ssml||!1};if(g.type==="audio")return{type:"audio",audio_url:g.audio_url};throw new Error("Invalid payload")}const s=u();return d.track("agent-speak",s),t.streamingManager.speak({script:s})}}}v.ChatMode=j,v.DocumentType=B,v.KnowledgeType=z,v.PlanGroup=W,v.Providers=L,v.RateState=H,v.Subject=U,v.UserPlan=D,v.VoiceAccess=x,v.createAgentManager=Ce,v.getAgent=Se,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"})});
1
+ (function(v,L){typeof exports=="object"&&typeof module<"u"?L(exports):typeof define=="function"&&define.amd?define(["exports"],L):(v=typeof globalThis<"u"?globalThis:v||self,L(v.index={}))})(this,function(v){"use strict";var L=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(L||{}),x=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(x||{}),T=(e=>(e.Start="START",e.Stop="STOP",e))(T||{}),$=(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))(I||{}),D=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(D||{}),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||{}),H=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(H||{}),j=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))(j||{}),O=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(O||{}),U=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(U||{}),z=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(z||{}),B=(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))(B||{}),E=(e=>(e.Clip="clip",e.Talk="talk",e))(E||{});const M="https://api.d-id.com",Z="wss://notifications.d-id.com",G="79f81a83a67430be2bc0fd61042b8faa",N=()=>Math.random().toString(16).slice(2);function F(){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 ee=N();function V(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}.${F()}_${ee}`;throw new Error(`Unknown auth type: ${e}`)}function K(e,a=M){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:V(e),"Content-Type":"application/json"}});if(!i.ok){let c=await i.text().catch(()=>"Failed to fetch");throw new Error(c)}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=M){const t=K(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,c){return t.post(`/${n}/chat/${r}`,i,c)}}}function te(e,a=M){const t=K(e,`${a}/knowledge`);return{createKnowledge(n,r){return t.post("/",n,r)},getKnowledgeBase(n){return t.get("/",n)},getKnowledge(n,r){return t.get(`/${n}`,r)},deleteKnowledge(n,r){return t.delete(`/${n}`,void 0,r)},createDocument(n,r,i){return t.post(`/${n}/documents`,r,i)},deleteDocument(n,r,i){return t.delete(`/${n}/documents/${r}`,void 0,i)},getDocuments(n,r){return t.get(`/${n}/documents`,r)},getDocument(n,r,i){return t.get(`/${n}/documents/${r}`,i)},getRecords(n,r,i){return t.get(`/${n}/documents/${r}/records`,i)},query(n,r,i){return t.post(`/${n}/query`,{query:r},i)}}}function ne(e,a=M){const t=K(e,`${a}/chats/ratings`);return{create(n,r){return t.post("/",n,r)},getByKnowledge(n,r){return t.get(`/${n}`,r).then(i=>i??[])},update(n,r,i){return t.patch(`/${n}`,r,i)},delete(n,r){return t.delete(`/${n}`,r)}}}const re=e=>new Promise(a=>setTimeout(a,e));function ie(e){return new Promise((a,t)=>{const{callbacks:n,host:r,auth:i}=e,{onMessage:c=null,onOpen:w=null,onClose:S=null,onError:o=null}=n||{},f=new WebSocket(`${r}?authorization=${V(i)}`);f.onmessage=c,f.onclose=S,f.onerror=d=>{console.error(d),o==null||o("Websocket failed to connect",d),t(d)},f.onopen=d=>{w==null||w(d),a(f)}})}async function ae(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 ie(e)}catch(r){if(n===a)throw r;await re(n*500)}return t}async function se(e,a,t){const n=t!=null&&t.onMessage?[t.onMessage]:[],r=await ae({auth:e,host:a,callbacks:{onError:t==null?void 0:t.onError,onMessage:i=>{const c=JSON.parse(i.data);n.forEach(w=>w(c.event,c))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:i=>n.push(i)}}function oe(e,a){const t=K(e,a);return{createStream(n){return t.post("/clips/streams",{driver_id:n.driver_id,presenter_id:n.presenter_id,compatibility_mode:n.compatibility_mode})},startConnection(n,r,i){return t.post(`/clips/streams/${n}/sdp`,{session_id:i,answer:r})},addIceCandidate(n,r,i){return t.post(`/clips/streams/${n}/ice`,{session_id:i,...r})},sendStreamRequest(n,r,i){return t.post(`/clips/streams/${n}`,{session_id:r,...i})},close(n,r){return t.delete(`/clips/streams/${n}`,{session_id:r})}}}function de(e,a){const t=K(e,a);return{createStream(n,r){return t.post("/talks/streams",{source_url:n.source_url,driver_url:n.driver_url,face:n.face,config:n.config},r)},startConnection(n,r,i,c){return t.post(`/talks/streams/${n}/sdp`,{session_id:i,answer:r},c)},addIceCandidate(n,r,i,c){return t.post(`/talks/streams/${n}/ice`,{session_id:i,...r},c)},sendStreamRequest(n,r,i,c){return t.post(`/talks/streams/${n}`,{session_id:r,...i},c)},close(n,r,i){return t.delete(`/talks/streams/${n}`,{session_id:r},i)}}}function ce(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 J=!1;const A=(e,a)=>J&&console.log(e,a),ge=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ue(e){switch(e){case"connected":return I.Connected;case"checking":return I.Connecting;case"failed":return I.Fail;case"new":case"closed":case"disconnected":default:return I.New}}function me(e,a){let t=[],n=0,r=0,i;return setInterval(()=>{e.getStats().then(w=>{w.forEach(S=>{if(S.type==="inbound-rtp"&&S.kind==="video"){if(r=t.length-1,S&&t[r]){const o=S.bytesReceived,f=t[r].bytesReceived;let d=i;i=o-f>0;let l;if(d!==i){if(i)n=t.length;else{const P=t.slice(n),u=n===0?void 0:t[n-1];l=ce(P,u),l=l.sort((m,s)=>s.packetsLost-m.packetsLost).slice(0,5)}a==null||a(i?T.Start:T.Stop,l)}}t.push(S)}})})},500)}async function le(e,{debug:a=!1,callbacks:t,auth:n,analytics:r,baseURL:i=M}){J=a;let c;const{startConnection:w,sendStreamRequest:S,close:o,createStream:f,addIceCandidate:d}=e.videoType===E.Clip?oe(n,i):de(n,i),{id:l,offer:P,ice_servers:u,session_id:m}=await f(e),s=new ge({iceServers:u}),R=s.createDataChannel("JanusDataChannel");if(!m)throw new Error("Could not create session_id");const C=me(s,t.onVideoStateChange);s.onicecandidate=g=>{A("peerConnection.onicecandidate",g),g.candidate&&g.candidate.sdpMid&&g.candidate.sdpMLineIndex!==null?d(l,{candidate:g.candidate.candidate,sdpMid:g.candidate.sdpMid,sdpMLineIndex:g.candidate.sdpMLineIndex},m):d(l,{candidate:null},m)},s.oniceconnectionstatechange=()=>{var p;A("peerConnection.oniceconnectionstatechange => "+s.iceConnectionState);const g=ue(s.iceConnectionState);e.videoType===E.Talk&&g===I.Connected?c=setTimeout(()=>{var y;(y=t.onConnectionStateChange)==null||y.call(t,I.Connected)},5e3):(clearTimeout(c),(p=t.onConnectionStateChange)==null||p.call(t,g))},s.ontrack=g=>{var p;A("peerConnection.ontrack",g),(p=t.onSrcObjectReady)==null||p.call(t,g.streams[0])},R.onmessage=g=>{var p,y;if(R.readyState==="open"){const[h,k]=g.data.split(":");console.log("data",h,k,g),h===$.StreamStarted?r==null||r.track("agent-video",{event:"start",...k}):h===$.StreamDone?r==null||r.track("agent-video",{event:"stop",rtcStats:k??[],...k}):h===$.StreamFailed?((p=t.onVideoStateChange)==null||p.call(t,T.Stop,{event:h,data:k}),clearInterval(C)):h===$.StreamReady?(clearTimeout(c),(y=t.onConnectionStateChange)==null||y.call(t,I.Connected)):h===$.StreamCreated?r==null||r.track("agent-video",{event:"created",...k}):h===$.StreamVideoCreated?r==null||r.track("agent-video",{event:"video-created",...k}):h===$.StreamVideoDone?r==null||r.track("agent-video",{event:"video-done",rtcStats:k??[],...k}):h===$.StreamVideoError&&(r==null||r.track("agent-video",{event:"video-error",...k}))}},await s.setRemoteDescription(P),A("set remote description OK");const _=await s.createAnswer();return A("create answer OK"),await s.setLocalDescription(_),A("set local description OK"),await w(l,_,m),A("start connection OK"),{speak(g){return S(l,m,g)},async disconnect(){var g,p;l&&(s&&(s.close(),s.oniceconnectionstatechange=null,s.onnegotiationneeded=null,s.onicecandidate=null,s.ontrack=null),await o(l,m).catch(y=>{}),(g=t.onConnectionStateChange)==null||g.call(t,I.New),(p=t.onVideoStateChange)==null||p.call(t,T.Stop),clearInterval(C))},sessionId:m,streamId:l}}function we(e){const a={mixPanelKey:e.mixPanelKey||"testKey",distinct_id:e.distinctId||F(),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 he(e){var n,r;const a=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const i=navigator.platform;return i.toLowerCase().includes("win")?"Windows":i.toLowerCase().includes("mac")?"Mac OS X":i.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${a()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:e.presenter.type,agentVoice:{voiceId:(n=e.presenter.voice)==null?void 0:n.voice_id,provider:(r=e.presenter.voice)==null?void 0:r.type}}}function fe(e,a){var t;return(t=e.knowledge)!=null&&t.id?a.getKnowledge(e.knowledge.id).then(n=>(n==null?void 0:n.starter_message)||[]):[]}function pe(e){return e.presenter.type===E.Clip?{videoType:E.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id}:{videoType:E.Talk,source_url:e.presenter.source_url}}function ve(e,a,t,n,r){return new Promise(async(i,c)=>{let w=r;const S=await le(pe(e),{...a,callbacks:{...a.callbacks,onConnectionStateChange:async o=>{var f,d;if(o===I.Connected)try{w||(w=await t.newChat(e.id),n.track("agent-chat",{event:"created",chat_id:w.id,agent_id:e.id})),S&&w&&i({chat:w,streamingManager:S})}catch(l){console.error(l),c("Cannot create new chat")}else o===I.Fail&&c(new Error("Cannot create connection"));(d=(f=a.callbacks).onConnectionStateChange)==null||d.call(f,o)},onVideoStateChange(o,f){var d,l;n.track("agent-video",{event:o,rtc_stats:f??[]}),(l=(d=a.callbacks).onVideoStateChange)==null||l.call(d,o,f)}}}).catch(c)})}function Se(e,a,t){return q(a,t||M).getById(e)}function Q(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:N(),role:"assistant",created_at:new Date().toISOString()}]}async function Ce(e,a){var l,P;const t={messages:[]},n=a.wsURL||Z,r=a.baseURL||M,i=a.mixpanelKey||G,c=q(a.auth,r),w=ne(a.auth,r),S=te(a.auth,r),o=await c.getById(e),f=await fe(o,S);t.messages=Q(o),(P=(l=a.callbacks).onNewMessage)==null||P.call(l,t.messages);const d=we({mixPanelKey:i,agent:o,...a});return d.track("agent-sdk",{event:"loaded",...he(o)}),{agent:o,starterMessages:f,async connect(){var R,C,_,g,p;const u=await se(a.auth,n,{onMessage:(y,h)=>{var k,X;if("content"in h){const{content:Y}=h,b=t.messages[t.messages.length-1];(b==null?void 0:b.role)==="assistant"&&(b.content=y===O.Partial?b.content+Y:Y),y===O.Complete&&d.track("agent-message-received",{messages:t.messages.length}),(X=(k=a.callbacks).onNewMessage)==null||X.call(k,t.messages)}}}),{streamingManager:m,chat:s}=await ve(o,a,c,d,t.chat);t.messages=Q(o),(C=(R=a.callbacks).onNewMessage)==null||C.call(R,t.messages),s!=null&&s.id&&s.id!==((_=t.chat)==null?void 0:_.id)&&((p=(g=a.callbacks).onNewChat)==null||p.call(g,s==null?void 0:s.id)),t.streamingManager=m,t.socketManager=u,t.chat=s,d.track("agent-chat",{event:"connect",chatId:s.id,agentId:o.id})},async disconnect(){var u,m,s;(u=t.socketManager)==null||u.disconnect(),await((m=t.streamingManager)==null?void 0:m.disconnect()),d.track("agent-chat",{event:"disconnect",chatId:(s=t.chat)==null?void 0:s.id,agentId:o.id})},async chat(u,m=!1){var s,R;try{const C=Date.now();if(u.length===0)throw new Error("Message cannot be empty");if(!t.chat)throw new Error("Chat is not initialized");if(!t.streamingManager)throw new Error("Streaming manager is not initialized");t.messages.push({id:N(),role:"user",content:u,created_at:new Date(C).toISOString()});const _=await c.chat(o.id,t.chat.id,{sessionId:t.streamingManager.sessionId,streamId:t.streamingManager.streamId,messages:t.messages,append_chat:m});return d.track("agent-message-send",{event:"success",messages:t.messages.length+1}),t.messages.push({id:N(),role:"assistant",content:_.result??"",created_at:new Date().toISOString(),matches:_.matches}),_.result&&d.track("agent-message-received",{latency:Date.now()-C,messages:t.messages.length}),(R=(s=a.callbacks).onNewMessage)==null||R.call(s,t.messages),_}catch(C){throw d.track("agent-message-send",{event:"error",messages:t.messages.length}),C}},rate(u,m,s){var _,g,p,y;const R=t.messages.find(h=>h.id===u);if(t.chat){if(!R)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const C=((_=R.matches)==null?void 0:_.map(h=>[h.document_id,h.id]))??[];return d.track("agent-rate",{event:s?"update":"create",thumb:m===1?"up":"down",knowledge_id:((g=o.knowledge)==null?void 0:g.id)??"",matches:C,score:m}),s?w.update(s,{agent_id:o.id,knowledge_id:((p=o.knowledge)==null?void 0:p.id)??"",chat_id:t.chat.id,message_id:u,matches:C,score:m}):w.create({agent_id:o.id,knowledge_id:((y=o.knowledge)==null?void 0:y.id)??"",chat_id:t.chat.id,message_id:u,matches:C,score:m})},deleteRate(u){var m;return d.track("agent-rate-delete",{type:"text",chat_id:(m=t.chat)==null?void 0:m.id,id:u}),w.delete(u)},speak(u){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function m(){if(u.type==="text")return{type:"text",provider:u.provider?u.provider:o.presenter.voice,input:u.input,ssml:u.ssml||!1};if(u.type==="audio")return{type:"audio",audio_url:u.audio_url};throw new Error("Invalid payload")}const s=m();return d.track("agent-speak",s),t.streamingManager.speak({script:s})}}}v.ChatMode=j,v.DocumentType=B,v.KnowledgeType=z,v.PlanGroup=W,v.Providers=L,v.RateState=H,v.Subject=U,v.UserPlan=D,v.VoiceAccess=x,v.createAgentManager=Ce,v.getAgent=Se,Object.defineProperty(v,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.62",
4
+ "version": "1.0.19-beta.64",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {