@d-id/client-sdk 1.0.19-beta.75 → 1.0.19-beta.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -107,11 +107,11 @@ function ne(e) {
107
107
  onOpen: c = null,
108
108
  onClose: g = null,
109
109
  onError: m = null
110
- } = n || {}, h = new WebSocket(`${r}?authorization=${D(i)}`);
111
- h.onmessage = o, h.onclose = g, h.onerror = (f) => {
110
+ } = n || {}, w = new WebSocket(`${r}?authorization=${D(i)}`);
111
+ w.onmessage = o, w.onclose = g, w.onerror = (f) => {
112
112
  console.error(f), m == null || m("Websocket failed to connect", f), t(f);
113
- }, h.onopen = (f) => {
114
- c == null || c(f), a(h);
113
+ }, w.onopen = (f) => {
114
+ c == null || c(f), a(w);
115
115
  };
116
116
  });
117
117
  }
@@ -288,9 +288,9 @@ function ce(e, a) {
288
288
  g.forEach((m) => {
289
289
  if (m.type === "inbound-rtp" && m.kind === "video") {
290
290
  if (r = t.length - 1, m && t[r]) {
291
- const h = m.bytesReceived, f = t[r].bytesReceived, M = o;
291
+ const w = m.bytesReceived, f = t[r].bytesReceived, M = o;
292
292
  let C;
293
- if (o = h - f > 0, i = o ? 0 : ++i, M !== o)
293
+ if (o = w - f > 0, i = o ? 0 : ++i, M !== o)
294
294
  if (o)
295
295
  n = t.length, a == null || a(T.Start, C);
296
296
  else {
@@ -317,7 +317,7 @@ async function ge(e, a, {
317
317
  const {
318
318
  startConnection: g,
319
319
  sendStreamRequest: m,
320
- close: h,
320
+ close: w,
321
321
  createStream: f,
322
322
  addIceCandidate: M
323
323
  } = a.videoType === k.Clip ? ie(r, o, e) : ae(r, o, e), {
@@ -340,18 +340,18 @@ async function ge(e, a, {
340
340
  candidate: null
341
341
  }, _);
342
342
  }, s.oniceconnectionstatechange = () => {
343
- var w;
343
+ var h;
344
344
  A("peerConnection.oniceconnectionstatechange => " + s.iceConnectionState);
345
345
  const d = de(s.iceConnectionState);
346
346
  d === R.Connected ? c = setTimeout(() => {
347
347
  var S;
348
348
  (S = n.onConnectionStateChange) == null || S.call(n, R.Connected);
349
- }, 5e3) : (clearTimeout(c), (w = n.onConnectionStateChange) == null || w.call(n, d));
349
+ }, 5e3) : (clearTimeout(c), (h = n.onConnectionStateChange) == null || h.call(n, d));
350
350
  }, s.ontrack = (d) => {
351
- var w;
352
- A("peerConnection.ontrack", d), (w = n.onSrcObjectReady) == null || w.call(n, d.streams[0]);
351
+ var h;
352
+ A("peerConnection.ontrack", d), (h = n.onSrcObjectReady) == null || h.call(n, d.streams[0]);
353
353
  }, u.onmessage = (d) => {
354
- var w, S;
354
+ var h, S;
355
355
  if (u.readyState === "open") {
356
356
  const [v, y] = d.data.split(":");
357
357
  v === $.StreamStarted ? i == null || i.track("agent-video", {
@@ -360,7 +360,7 @@ async function ge(e, a, {
360
360
  }) : v === $.StreamDone ? i == null || i.track("agent-video", {
361
361
  event: "stop",
362
362
  ...d
363
- }) : v === $.StreamFailed ? ((w = n.onVideoStateChange) == null || w.call(n, T.Stop, {
363
+ }) : v === $.StreamFailed ? ((h = n.onVideoStateChange) == null || h.call(n, T.Stop, {
364
364
  event: v,
365
365
  data: y
366
366
  }), clearInterval(l)) : v === $.StreamReady ? (clearTimeout(c), (S = n.onConnectionStateChange) == null || S.call(n, R.Connected)) : v === $.StreamCreated ? i == null || i.track("agent-video", {
@@ -391,9 +391,9 @@ async function ge(e, a, {
391
391
  * Method to close RTC connection
392
392
  */
393
393
  async disconnect() {
394
- var d, w;
395
- C && (s && (s.close(), s.oniceconnectionstatechange = null, s.onnegotiationneeded = null, s.onicecandidate = null, s.ontrack = null), await h(C, _).catch((S) => {
396
- }), (d = n.onConnectionStateChange) == null || d.call(n, R.New), (w = n.onVideoStateChange) == null || w.call(n, T.Stop), clearInterval(l));
394
+ var d, h;
395
+ C && (s && (s.close(), s.oniceconnectionstatechange = null, s.onnegotiationneeded = null, s.onicecandidate = null, s.ontrack = null), await w(C, _).catch((S) => {
396
+ }), (d = n.onConnectionStateChange) == null || d.call(n, R.New), (h = n.onVideoStateChange) == null || h.call(n, T.Stop), clearInterval(l));
397
397
  },
398
398
  /**
399
399
  * Session identifier information, should be returned in the body of all streaming requests
@@ -487,7 +487,7 @@ function W(e, a, t, n, r) {
487
487
  callbacks: {
488
488
  ...a.callbacks,
489
489
  onConnectionStateChange: async (m) => {
490
- var h, f;
490
+ var w, f;
491
491
  if (m === R.Connected)
492
492
  try {
493
493
  c || (c = await t.newChat(e.id), n.track("agent-chat", {
@@ -503,20 +503,20 @@ function W(e, a, t, n, r) {
503
503
  }
504
504
  else
505
505
  m === R.Fail && o(new Error("Cannot create connection"));
506
- (f = (h = a.callbacks).onConnectionStateChange) == null || f.call(h, m);
506
+ (f = (w = a.callbacks).onConnectionStateChange) == null || f.call(w, m);
507
507
  },
508
- onVideoStateChange(m, h) {
508
+ onVideoStateChange(m, w) {
509
509
  var f, M;
510
510
  n.track("agent-video", {
511
511
  event: m,
512
- rtc_stats: h ?? []
513
- }), (M = (f = a.callbacks).onVideoStateChange) == null || M.call(f, m, h);
512
+ rtc_stats: w ?? []
513
+ }), (M = (f = a.callbacks).onVideoStateChange) == null || M.call(f, m, w);
514
514
  }
515
515
  }
516
516
  }).catch(o);
517
517
  });
518
518
  }
519
- function we(e, a, t) {
519
+ function he(e, a, t) {
520
520
  return H(a, t || P).getById(e);
521
521
  }
522
522
  function O(e) {
@@ -533,7 +533,7 @@ function O(e) {
533
533
  created_at: (/* @__PURE__ */ new Date()).toISOString()
534
534
  }];
535
535
  }
536
- async function he(e, a) {
536
+ async function we(e, a) {
537
537
  var L, x, _;
538
538
  const t = {
539
539
  messages: [],
@@ -551,26 +551,26 @@ async function he(e, a) {
551
551
  event: "loaded",
552
552
  ...le(g)
553
553
  });
554
- const h = {
554
+ const w = {
555
555
  onMessage: (s, u) => {
556
556
  var l, p;
557
557
  if ("content" in u) {
558
558
  const {
559
559
  content: d
560
- } = u, w = t.messages[t.messages.length - 1];
561
- (w == null ? void 0 : w.role) === "assistant" && (n < t.messages.length && (w.content = s === N.Partial ? w.content + d : d), s === N.Answer && (n = t.messages.length)), s === N.Complete && m.track("agent-message-received", {
560
+ } = u, h = t.messages[t.messages.length - 1];
561
+ (h == null ? void 0 : h.role) === "assistant" && (n < t.messages.length && (h.content = s === N.Partial ? h.content + d : d), s === N.Answer && (n = t.messages.length)), s === N.Complete && m.track("agent-message-received", {
562
562
  messages: t.messages.length
563
563
  }), (p = (l = a.callbacks).onNewMessage) == null || p.call(l, t.messages);
564
564
  }
565
565
  }
566
566
  };
567
567
  async function f() {
568
- var p, d, w, S, v;
569
- const s = await F(a.auth, r, h), {
568
+ var p, d, h, S, v;
569
+ const s = await F(a.auth, r, w), {
570
570
  streamingManager: u,
571
571
  chat: l
572
572
  } = await W(g, a, c, m, t.chat);
573
- n = -1, t.messages = O(g), (d = (p = a.callbacks).onNewMessage) == null || d.call(p, t.messages), l != null && l.id && l.id !== ((w = t.chat) == null ? void 0 : w.id) && ((v = (S = a.callbacks).onNewChat) == null || v.call(S, l == null ? void 0 : l.id)), t.streamingManager = u, t.socketManager = s, t.chat = l, C(E.Functional), m.track("agent-chat", {
573
+ n = -1, t.messages = O(g), (d = (p = a.callbacks).onNewMessage) == null || d.call(p, t.messages), l != null && l.id && l.id !== ((h = t.chat) == null ? void 0 : h.id) && ((v = (S = a.callbacks).onNewChat) == null || v.call(S, l == null ? void 0 : l.id)), t.streamingManager = u, t.socketManager = s, t.chat = l, C(E.Functional), m.track("agent-chat", {
574
574
  event: "connect",
575
575
  chatId: l.id,
576
576
  agentId: g.id
@@ -599,7 +599,7 @@ async function he(e, a) {
599
599
  async reconnect() {
600
600
  if (!t.chat)
601
601
  return f();
602
- const s = await F(a.auth, r, h), {
602
+ const s = await F(a.auth, r, w), {
603
603
  streamingManager: u,
604
604
  chat: l
605
605
  } = await W(g, a, c, m, t.chat);
@@ -610,8 +610,10 @@ async function he(e, a) {
610
610
  });
611
611
  },
612
612
  async chat(s, u = !1) {
613
- var l, p, d, w, S, v;
613
+ var l, p, d, h, S, v;
614
614
  try {
615
+ if (s.length >= 800)
616
+ throw new Error("Message cannot be more than 800 characters");
615
617
  const y = Date.now();
616
618
  if (t.messages.push({
617
619
  id: b(),
@@ -631,7 +633,7 @@ async function he(e, a) {
631
633
  t.chat || (t.chat = await c.newChat(g.id));
632
634
  const I = await c.chat(g.id, t.chat.id, {
633
635
  sessionId: (d = t.streamingManager) == null ? void 0 : d.sessionId,
634
- streamId: (w = t.streamingManager) == null ? void 0 : w.streamId,
636
+ streamId: (h = t.streamingManager) == null ? void 0 : h.streamId,
635
637
  messages: t.messages,
636
638
  chatMode: t.chatMode,
637
639
  append_chat: u
@@ -657,14 +659,14 @@ async function he(e, a) {
657
659
  }
658
660
  },
659
661
  rate(s, u, l) {
660
- var w, S, v, y;
662
+ var h, S, v, y;
661
663
  const p = t.messages.find((I) => I.id === s);
662
664
  if (t.chat) {
663
665
  if (!p)
664
666
  throw new Error("Message not found");
665
667
  } else
666
668
  throw new Error("Chat is not initialized");
667
- const d = ((w = p.matches) == null ? void 0 : w.map((I) => [I.document_id, I.id])) ?? [];
669
+ const d = ((h = p.matches) == null ? void 0 : h.map((I) => [I.document_id, I.id])) ?? [];
668
670
  return m.track("agent-rate", {
669
671
  event: l ? "update" : "create",
670
672
  thumb: u === 1 ? "up" : "down",
@@ -736,6 +738,6 @@ export {
736
738
  j as UserPlan,
737
739
  k as VideoType,
738
740
  Y as VoiceAccess,
739
- he as createAgentManager,
740
- we as getAgent
741
+ we as createAgentManager,
742
+ he as getAgent
741
743
  };
@@ -1 +1 @@
1
- (function(w,P){typeof exports=="object"&&typeof module<"u"?P(exports):typeof define=="function"&&define.amd?define(["exports"],P):(w=typeof globalThis<"u"?globalThis:w||self,P(w.index={}))})(this,function(w){"use strict";var P=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(P||{}),W=(e=>(e.TRIAL="deid-trial",e.PRO="deid-pro",e.ENTERPRISE="deid-enterprise",e.LITE="deid-lite",e.ADVANCED="deid-advanced",e.BUILD="deid-api-build",e.LAUNCH="deid-api-launch",e.SCALE="deid-api-scale",e))(W||{}),z=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(z||{}),E=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))(E||{}),O=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(O||{}),H=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(H||{}),j=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(j||{}),U=(e=>(e.Pdf="pdf",e.Text="text",e.Html="html",e.Word="word",e.Json="json",e.Markdown="markdown",e.Csv="csv",e.Excel="excel",e.Powerpoint="powerpoint",e.Archive="archive",e.Image="image",e.Audio="audio",e.Video="video",e))(U||{}),M=(e=>(e.Clip="clip",e.Talk="talk",e))(M||{}),L=(e=>(e.Start="START",e.Stop="STOP",e))(L||{}),I=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e.StreamFailed="stream/error",e.StreamReady="stream/ready",e.StreamCreated="stream/created",e.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(I||{}),_=(e=>(e[e.New=0]="New",e[e.Fail=1]="Fail",e[e.Connected=2]="Connected",e[e.Connecting=3]="Connecting",e[e.Terminating=4]="Terminating",e))(_||{}),B=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(B||{}),J=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(J||{});const K="https://api.d-id.com",G="wss://notifications.d-id.com",ee="79f81a83a67430be2bc0fd61042b8faa",x=()=>Math.random().toString(16).slice(2);function V(){let e=window.localStorage.getItem("did_external_key_id");return e||(e=Math.random().toString(16).slice(2),window.localStorage.setItem("did_external_key_id",e)),e}let te=x();function q(e){if(e.type==="bearer")return`Bearer ${e.token}`;if(e.type==="basic")return`Basic ${btoa(`${e.username}:${e.password}`)}`;if(e.type==="key")return`Client-Key ${e.clientKey}.${V()}_${te}`;throw new Error(`Unknown auth type: ${e}`)}function F(e,a=K){const t=async(n,r)=>{const i=await fetch(a+(n!=null&&n.startsWith("/")?n:`/${n}`),{...r,headers:{...r==null?void 0:r.headers,Authorization:q(e),"Content-Type":"application/json"}});if(!i.ok){let o=await i.text().catch(()=>"Failed to fetch");throw new Error(o)}return i.json()};return{get(n,r){return t(n,{...r,method:"GET"})},post(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"POST"})},delete(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"DELETE"})},patch(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"PATCH"})}}}function Q(e,a=K){const t=F(e,`${a}/agents`);return{create(n,r){return t.post("/",n,r)},getAgents(n,r){return t.get(`/${n?`?tag=${n}`:""}`,r).then(i=>i??[])},getById(n,r){return t.get(`/${n}`,r)},delete(n,r){return t.delete(`/${n}`,void 0,r)},update(n,r,i){return t.patch(`/${n}`,r,i)},newChat(n,r){return t.post(`/${n}/chat`,void 0,r)},chat(n,r,i,o){return t.post(`/${n}/chat/${r}`,i,o)},createRating(n,r,i,o){return t.post(`/${n}/chat/${r}/ratings`,i,o)},updateRating(n,r,i,o,c){return t.patch(`/${n}/chat/${r}/ratings/${i}`,o,c)},deleteRating(n,r,i,o){return t.delete(`/${n}/chat/${r}/ratings/${i}`,o)}}}const ne=e=>new Promise(a=>setTimeout(a,e));function re(e){return new Promise((a,t)=>{const{callbacks:n,host:r,auth:i}=e,{onMessage:o=null,onOpen:c=null,onClose:g=null,onError:m=null}=n||{},f=new WebSocket(`${r}?authorization=${q(i)}`);f.onmessage=o,f.onclose=g,f.onerror=p=>{console.error(p),m==null||m("Websocket failed to connect",p),t(p)},f.onopen=p=>{c==null||c(p),a(f)}})}async function ie(e){const{retries:a=1}=e;let t=null;for(let n=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;n++)try{t=await re(e)}catch(r){if(n===a)throw r;await ne(n*500)}return t}async function X(e,a,t){const n=t!=null&&t.onMessage?[t.onMessage]:[],r=await ie({auth:e,host:a,callbacks:{onError:t==null?void 0:t.onError,onMessage:i=>{const o=JSON.parse(i.data);n.forEach(c=>c(o.event,o))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:i=>n.push(i)}}function ae(e,a,t){const n=F(e,`${a}/agents/${t}`);return{createStream(r){return n.post("/streams",{driver_id:r.driver_id,presenter_id:r.presenter_id,compatibility_mode:r.compatibility_mode,stream_warmup:r.stream_warmup,type:M.Clip})},startConnection(r,i,o){return n.post(`/streams/${r}/sdp`,{session_id:o,answer:i,type:M.Clip})},addIceCandidate(r,i,o){return n.post(`/streams/${r}/ice`,{session_id:o,...i,type:M.Clip})},sendStreamRequest(r,i,o){return n.post(`/streams/${r}`,{session_id:i,...o,type:M.Clip})},close(r,i){return n.delete(`/streams/${r}`,{session_id:i,type:M.Clip})}}}function se(e,a,t){const n=F(e,`${a}/agents/${t}`);return{createStream(r,i){return n.post("/streams",{source_url:r.source_url,driver_url:r.driver_url,face:r.face,config:r.config,stream_warmup:r.stream_warmup,type:M.Talk},i)},startConnection(r,i,o,c){return n.post(`/streams/${r}/sdp`,{session_id:o,answer:i,type:M.Talk},c)},addIceCandidate(r,i,o,c){return n.post(`/streams/${r}/ice`,{session_id:o,...i,type:M.Talk},c)},sendStreamRequest(r,i,o,c){return n.post(`/streams/${r}`,{session_id:i,...o,type:M.Talk},c)},close(r,i,o){return n.delete(`/streams/${r}`,{session_id:i,type:M.Talk},o)}}}function oe(e,a){return e.map((t,n)=>n===0?a?{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-a.bytesReceived,packetsReceived:t.packetsReceived-a.packetsReceived,packetsLost:t.packetsLost-a.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived,packetsReceived:t.packetsReceived,packetsLost:t.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-e[n-1].bytesReceived,packetsReceived:t.packetsReceived-e[n-1].packetsReceived,packetsLost:t.packetsLost-e[n-1].packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond})}let Y=!1;const T=(e,a)=>Y&&console.log(e,a),de=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ce(e){switch(e){case"connected":return _.Connected;case"checking":return _.Connecting;case"failed":return _.Fail;case"new":case"closed":case"disconnected":default:return _.New}}function ge(e,a){let t=[],n=0,r=0,i=0,o;return setInterval(()=>{e.getStats().then(g=>{g.forEach(m=>{if(m.type==="inbound-rtp"&&m.kind==="video"){if(r=t.length-1,m&&t[r]){const f=m.bytesReceived,p=t[r].bytesReceived,y=o;let S;if(o=f-p>0,i=o?0:++i,y!==o)if(o)n=t.length,a==null||a(L.Start,S);else{const b=t.slice(n),N=n===0?void 0:t[n-1];S=oe(b,N),S=S.sort((R,s)=>s.packetsLost-R.packetsLost).slice(0,5)}!o&&i===3&&(a==null||a(L.Stop,S))}t.push(m)}})})},500)}async function me(e,a,{debug:t=!1,callbacks:n,auth:r,analytics:i,baseURL:o=K}){Y=t;let c;const{startConnection:g,sendStreamRequest:m,close:f,createStream:p,addIceCandidate:y}=a.videoType===M.Clip?ae(r,o,e):se(r,o,e),{id:S,offer:b,ice_servers:N,session_id:R}=await p(a),s=new de({iceServers:N}),u=s.createDataChannel("JanusDataChannel");if(!R)throw new Error("Could not create session_id");const l=ge(s,n.onVideoStateChange);s.onicecandidate=d=>{T("peerConnection.onicecandidate",d),d.candidate&&d.candidate.sdpMid&&d.candidate.sdpMLineIndex!==null?y(S,{candidate:d.candidate.candidate,sdpMid:d.candidate.sdpMid,sdpMLineIndex:d.candidate.sdpMLineIndex},R):y(S,{candidate:null},R)},s.oniceconnectionstatechange=()=>{var h;T("peerConnection.oniceconnectionstatechange => "+s.iceConnectionState);const d=ce(s.iceConnectionState);d===_.Connected?c=setTimeout(()=>{var k;(k=n.onConnectionStateChange)==null||k.call(n,_.Connected)},5e3):(clearTimeout(c),(h=n.onConnectionStateChange)==null||h.call(n,d))},s.ontrack=d=>{var h;T("peerConnection.ontrack",d),(h=n.onSrcObjectReady)==null||h.call(n,d.streams[0])},u.onmessage=d=>{var h,k;if(u.readyState==="open"){const[C,A]=d.data.split(":");C===I.StreamStarted?i==null||i.track("agent-video",{event:"start",...d}):C===I.StreamDone?i==null||i.track("agent-video",{event:"stop",...d}):C===I.StreamFailed?((h=n.onVideoStateChange)==null||h.call(n,L.Stop,{event:C,data:A}),clearInterval(l)):C===I.StreamReady?(clearTimeout(c),(k=n.onConnectionStateChange)==null||k.call(n,_.Connected)):C===I.StreamCreated?i==null||i.track("agent-video",{event:"created",...d}):C===I.StreamVideoCreated?i==null||i.track("agent-video",{event:"video-created",...d}):C===I.StreamVideoDone?i==null||i.track("agent-video",{event:"video-done",...d}):C===I.StreamVideoError&&(i==null||i.track("agent-video",{event:"video-error",...d}))}},await s.setRemoteDescription(b),T("set remote description OK");const v=await s.createAnswer();return T("create answer OK"),await s.setLocalDescription(v),T("set local description OK"),await g(S,v,R),T("start connection OK"),{speak(d){return m(S,R,d)},async disconnect(){var d,h;S&&(s&&(s.close(),s.oniceconnectionstatechange=null,s.onnegotiationneeded=null,s.onicecandidate=null,s.ontrack=null),await f(S,R).catch(k=>{}),(d=n.onConnectionStateChange)==null||d.call(n,_.New),(h=n.onVideoStateChange)==null||h.call(n,L.Stop),clearInterval(l))},sessionId:R,streamId:S}}function le(e){const a={mixPanelKey:e.mixPanelKey||"testKey",distinct_id:e.distinctId||V(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...a,getRandom:()=>Math.random().toString(16).slice(2),track(t,n){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const r={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...n,...a,time:Date.now(),$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerWidth,"Screen Width":window.screen.width||window.innerHeight,"User Agent":navigator.userAgent}}])})};return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1",r).then(i=>i.json()).catch(i=>console.error(i))}}}function ue(e){var n,r,i,o,c;const a=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const g=navigator.platform;return g.toLowerCase().includes("win")?"Windows":g.toLowerCase().includes("mac")?"Mac OS X":g.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${a()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(n=e.presenter)==null?void 0:n.type,agentVoice:{voiceId:(i=(r=e.presenter)==null?void 0:r.voice)==null?void 0:i.voice_id,provider:(c=(o=e.presenter)==null?void 0:o.voice)==null?void 0:c.type}}}function he(e){if(e.presenter){if(e.presenter.type===M.Clip)return{videoType:M.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");return{videoType:M.Talk,source_url:e.presenter.source_url,stream_warmup:!0}}function Z(e,a,t,n,r){return new Promise(async(i,o)=>{let c=r;const g=await me(e.id,he(e),{...a,callbacks:{...a.callbacks,onConnectionStateChange:async m=>{var f,p;if(m===_.Connected)try{c||(c=await t.newChat(e.id),n.track("agent-chat",{event:"created",chat_id:c.id,agent_id:e.id})),g&&i({chat:c,streamingManager:g})}catch(y){console.error(y),o("Cannot create new chat")}else m===_.Fail&&o(new Error("Cannot create connection"));(p=(f=a.callbacks).onConnectionStateChange)==null||p.call(f,m)},onVideoStateChange(m,f){var p,y;n.track("agent-video",{event:m,rtc_stats:f??[]}),(y=(p=a.callbacks).onVideoStateChange)==null||y.call(p,m,f)}}}).catch(o)})}function we(e,a,t){return Q(a,t||K).getById(e)}function D(e){let a="";if(e.greetings&&e.greetings.length>0){const t=Math.floor(Math.random()*e.greetings.length);a=e.greetings[t]}else a=`Hi! I'm ${e.preview_name}, welcome to agents. How can I help you?`;return[{content:a,id:x(),role:"assistant",created_at:new Date().toISOString()}]}async function fe(e,a){var b,N,R;const t={messages:[],chatMode:a.mode||E.Functional};let n=-1;const r=a.wsURL||G,i=a.baseURL||K,o=a.mixpanelKey||ee,c=Q(a.auth,i),g=await c.getById(e);t.messages=D(g),(N=(b=a.callbacks).onNewMessage)==null||N.call(b,t.messages);const m=le({mixPanelKey:o,agent:g,...a});m.track("agent-sdk",{event:"loaded",...ue(g)});const f={onMessage:(s,u)=>{var l,v;if("content"in u){const{content:d}=u,h=t.messages[t.messages.length-1];(h==null?void 0:h.role)==="assistant"&&(n<t.messages.length&&(h.content=s===O.Partial?h.content+d:d),s===O.Answer&&(n=t.messages.length)),s===O.Complete&&m.track("agent-message-received",{messages:t.messages.length}),(v=(l=a.callbacks).onNewMessage)==null||v.call(l,t.messages)}}};async function p(){var v,d,h,k,C;const s=await X(a.auth,r,f),{streamingManager:u,chat:l}=await Z(g,a,c,m,t.chat);n=-1,t.messages=D(g),(d=(v=a.callbacks).onNewMessage)==null||d.call(v,t.messages),l!=null&&l.id&&l.id!==((h=t.chat)==null?void 0:h.id)&&((C=(k=a.callbacks).onNewChat)==null||C.call(k,l==null?void 0:l.id)),t.streamingManager=u,t.socketManager=s,t.chat=l,S(E.Functional),m.track("agent-chat",{event:"connect",chatId:l.id,agentId:g.id})}async function y(){var s,u,l,v,d;(s=t.socketManager)==null||s.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,t.messages=D(g),(v=(l=a.callbacks).onNewMessage)==null||v.call(l,t.messages),m.track("agent-chat",{event:"disconnect",chatId:(d=t.chat)==null?void 0:d.id,agentId:g.id})}async function S(s){var u,l;s!==t.chatMode&&(m.track("agent-mode-change",{mode:s}),t.chatMode=s,t.chatMode!==E.Functional&&await y(),(l=(u=a.callbacks).onModeChange)==null||l.call(u,s))}return{agent:g,starterMessages:((R=g.knowledge)==null?void 0:R.starter_message)||[],connect:p,disconnect:y,changeMode:S,async reconnect(){if(!t.chat)return p();const s=await X(a.auth,r,f),{streamingManager:u,chat:l}=await Z(g,a,c,m,t.chat);t.streamingManager=u,t.socketManager=s,S(E.Functional),m.track("agent-chat",{event:"reconnect",chatId:l.id,agentId:g.id})},async chat(s,u=!1){var l,v,d,h,k,C;try{const A=Date.now();if(t.messages.push({id:x(),role:"user",content:s,created_at:new Date(A).toISOString()}),(v=(l=a.callbacks).onNewMessage)==null||v.call(l,t.messages),s.length===0)throw new Error("Message cannot be empty");if(t.chatMode===E.Maintenance)throw new Error("Chat is in maintenance mode");if(t.chatMode!==E.TextOnly){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");if(!t.chat)throw new Error("Chat is not initialized")}else t.chat||(t.chat=await c.newChat(g.id));const $=await c.chat(g.id,t.chat.id,{sessionId:(d=t.streamingManager)==null?void 0:d.sessionId,streamId:(h=t.streamingManager)==null?void 0:h.streamId,messages:t.messages,chatMode:t.chatMode,append_chat:u});return m.track("agent-message-send",{event:"success",messages:t.messages.length+1}),t.messages.push({id:x(),role:"assistant",content:$.result??"",created_at:new Date().toISOString(),matches:$.matches}),$.result&&m.track("agent-message-received",{latency:Date.now()-A,messages:t.messages.length}),(C=(k=a.callbacks).onNewMessage)==null||C.call(k,t.messages),$}catch(A){throw m.track("agent-message-send",{event:"error",messages:t.messages.length}),A}},rate(s,u,l){var h,k,C,A;const v=t.messages.find($=>$.id===s);if(t.chat){if(!v)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const d=((h=v.matches)==null?void 0:h.map($=>[$.document_id,$.id]))??[];return m.track("agent-rate",{event:l?"update":"create",thumb:u===1?"up":"down",knowledge_id:((k=g.knowledge)==null?void 0:k.id)??"",matches:d,score:u}),l?c.updateRating(g.id,t.chat.id,l,{knowledge_id:((C=g.knowledge)==null?void 0:C.id)??"",message_id:s,matches:d,score:u}):c.createRating(g.id,t.chat.id,{knowledge_id:((A=g.knowledge)==null?void 0:A.id)??"",message_id:s,matches:d,score:u})},deleteRate(s){var u;if(!t.chat)throw new Error("Chat is not initialized");return m.track("agent-rate-delete",{type:"text",chat_id:(u=t.chat)==null?void 0:u.id,id:s}),c.deleteRating(g.id,t.chat.id,s)},speak(s){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function u(){if(g.presenter){if(s.type==="text")return{type:"text",provider:s.provider?s.provider:g.presenter.voice,input:s.input,ssml:s.ssml||!1};if(s.type==="audio")return{type:"audio",audio_url:s.audio_url}}else throw new Error("Presenter is not initialized");throw new Error("Invalid payload")}const l=u();return m.track("agent-speak",l),t.streamingManager.speak({script:l})}}}w.ChatMode=E,w.ChatProgress=O,w.ConnectionState=_,w.DocumentType=U,w.KnowledgeType=j,w.PlanGroup=W,w.Providers=B,w.RateState=z,w.StreamEvents=I,w.StreamingState=L,w.Subject=H,w.UserPlan=P,w.VideoType=M,w.VoiceAccess=J,w.createAgentManager=fe,w.getAgent=we,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
1
+ (function(w,P){typeof exports=="object"&&typeof module<"u"?P(exports):typeof define=="function"&&define.amd?define(["exports"],P):(w=typeof globalThis<"u"?globalThis:w||self,P(w.index={}))})(this,function(w){"use strict";var P=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(P||{}),W=(e=>(e.TRIAL="deid-trial",e.PRO="deid-pro",e.ENTERPRISE="deid-enterprise",e.LITE="deid-lite",e.ADVANCED="deid-advanced",e.BUILD="deid-api-build",e.LAUNCH="deid-api-launch",e.SCALE="deid-api-scale",e))(W||{}),z=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(z||{}),E=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))(E||{}),O=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(O||{}),H=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(H||{}),j=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(j||{}),U=(e=>(e.Pdf="pdf",e.Text="text",e.Html="html",e.Word="word",e.Json="json",e.Markdown="markdown",e.Csv="csv",e.Excel="excel",e.Powerpoint="powerpoint",e.Archive="archive",e.Image="image",e.Audio="audio",e.Video="video",e))(U||{}),M=(e=>(e.Clip="clip",e.Talk="talk",e))(M||{}),L=(e=>(e.Start="START",e.Stop="STOP",e))(L||{}),I=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e.StreamFailed="stream/error",e.StreamReady="stream/ready",e.StreamCreated="stream/created",e.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(I||{}),_=(e=>(e[e.New=0]="New",e[e.Fail=1]="Fail",e[e.Connected=2]="Connected",e[e.Connecting=3]="Connecting",e[e.Terminating=4]="Terminating",e))(_||{}),B=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(B||{}),J=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(J||{});const K="https://api.d-id.com",G="wss://notifications.d-id.com",ee="79f81a83a67430be2bc0fd61042b8faa",x=()=>Math.random().toString(16).slice(2);function V(){let e=window.localStorage.getItem("did_external_key_id");return e||(e=Math.random().toString(16).slice(2),window.localStorage.setItem("did_external_key_id",e)),e}let te=x();function q(e){if(e.type==="bearer")return`Bearer ${e.token}`;if(e.type==="basic")return`Basic ${btoa(`${e.username}:${e.password}`)}`;if(e.type==="key")return`Client-Key ${e.clientKey}.${V()}_${te}`;throw new Error(`Unknown auth type: ${e}`)}function F(e,a=K){const t=async(n,r)=>{const i=await fetch(a+(n!=null&&n.startsWith("/")?n:`/${n}`),{...r,headers:{...r==null?void 0:r.headers,Authorization:q(e),"Content-Type":"application/json"}});if(!i.ok){let o=await i.text().catch(()=>"Failed to fetch");throw new Error(o)}return i.json()};return{get(n,r){return t(n,{...r,method:"GET"})},post(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"POST"})},delete(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"DELETE"})},patch(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"PATCH"})}}}function Q(e,a=K){const t=F(e,`${a}/agents`);return{create(n,r){return t.post("/",n,r)},getAgents(n,r){return t.get(`/${n?`?tag=${n}`:""}`,r).then(i=>i??[])},getById(n,r){return t.get(`/${n}`,r)},delete(n,r){return t.delete(`/${n}`,void 0,r)},update(n,r,i){return t.patch(`/${n}`,r,i)},newChat(n,r){return t.post(`/${n}/chat`,void 0,r)},chat(n,r,i,o){return t.post(`/${n}/chat/${r}`,i,o)},createRating(n,r,i,o){return t.post(`/${n}/chat/${r}/ratings`,i,o)},updateRating(n,r,i,o,c){return t.patch(`/${n}/chat/${r}/ratings/${i}`,o,c)},deleteRating(n,r,i,o){return t.delete(`/${n}/chat/${r}/ratings/${i}`,o)}}}const ne=e=>new Promise(a=>setTimeout(a,e));function re(e){return new Promise((a,t)=>{const{callbacks:n,host:r,auth:i}=e,{onMessage:o=null,onOpen:c=null,onClose:g=null,onError:m=null}=n||{},f=new WebSocket(`${r}?authorization=${q(i)}`);f.onmessage=o,f.onclose=g,f.onerror=p=>{console.error(p),m==null||m("Websocket failed to connect",p),t(p)},f.onopen=p=>{c==null||c(p),a(f)}})}async function ie(e){const{retries:a=1}=e;let t=null;for(let n=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;n++)try{t=await re(e)}catch(r){if(n===a)throw r;await ne(n*500)}return t}async function X(e,a,t){const n=t!=null&&t.onMessage?[t.onMessage]:[],r=await ie({auth:e,host:a,callbacks:{onError:t==null?void 0:t.onError,onMessage:i=>{const o=JSON.parse(i.data);n.forEach(c=>c(o.event,o))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:i=>n.push(i)}}function ae(e,a,t){const n=F(e,`${a}/agents/${t}`);return{createStream(r){return n.post("/streams",{driver_id:r.driver_id,presenter_id:r.presenter_id,compatibility_mode:r.compatibility_mode,stream_warmup:r.stream_warmup,type:M.Clip})},startConnection(r,i,o){return n.post(`/streams/${r}/sdp`,{session_id:o,answer:i,type:M.Clip})},addIceCandidate(r,i,o){return n.post(`/streams/${r}/ice`,{session_id:o,...i,type:M.Clip})},sendStreamRequest(r,i,o){return n.post(`/streams/${r}`,{session_id:i,...o,type:M.Clip})},close(r,i){return n.delete(`/streams/${r}`,{session_id:i,type:M.Clip})}}}function se(e,a,t){const n=F(e,`${a}/agents/${t}`);return{createStream(r,i){return n.post("/streams",{source_url:r.source_url,driver_url:r.driver_url,face:r.face,config:r.config,stream_warmup:r.stream_warmup,type:M.Talk},i)},startConnection(r,i,o,c){return n.post(`/streams/${r}/sdp`,{session_id:o,answer:i,type:M.Talk},c)},addIceCandidate(r,i,o,c){return n.post(`/streams/${r}/ice`,{session_id:o,...i,type:M.Talk},c)},sendStreamRequest(r,i,o,c){return n.post(`/streams/${r}`,{session_id:i,...o,type:M.Talk},c)},close(r,i,o){return n.delete(`/streams/${r}`,{session_id:i,type:M.Talk},o)}}}function oe(e,a){return e.map((t,n)=>n===0?a?{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-a.bytesReceived,packetsReceived:t.packetsReceived-a.packetsReceived,packetsLost:t.packetsLost-a.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived,packetsReceived:t.packetsReceived,packetsLost:t.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-e[n-1].bytesReceived,packetsReceived:t.packetsReceived-e[n-1].packetsReceived,packetsLost:t.packetsLost-e[n-1].packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond})}let Y=!1;const T=(e,a)=>Y&&console.log(e,a),de=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ce(e){switch(e){case"connected":return _.Connected;case"checking":return _.Connecting;case"failed":return _.Fail;case"new":case"closed":case"disconnected":default:return _.New}}function ge(e,a){let t=[],n=0,r=0,i=0,o;return setInterval(()=>{e.getStats().then(g=>{g.forEach(m=>{if(m.type==="inbound-rtp"&&m.kind==="video"){if(r=t.length-1,m&&t[r]){const f=m.bytesReceived,p=t[r].bytesReceived,y=o;let S;if(o=f-p>0,i=o?0:++i,y!==o)if(o)n=t.length,a==null||a(L.Start,S);else{const b=t.slice(n),N=n===0?void 0:t[n-1];S=oe(b,N),S=S.sort((R,s)=>s.packetsLost-R.packetsLost).slice(0,5)}!o&&i===3&&(a==null||a(L.Stop,S))}t.push(m)}})})},500)}async function me(e,a,{debug:t=!1,callbacks:n,auth:r,analytics:i,baseURL:o=K}){Y=t;let c;const{startConnection:g,sendStreamRequest:m,close:f,createStream:p,addIceCandidate:y}=a.videoType===M.Clip?ae(r,o,e):se(r,o,e),{id:S,offer:b,ice_servers:N,session_id:R}=await p(a),s=new de({iceServers:N}),u=s.createDataChannel("JanusDataChannel");if(!R)throw new Error("Could not create session_id");const l=ge(s,n.onVideoStateChange);s.onicecandidate=d=>{T("peerConnection.onicecandidate",d),d.candidate&&d.candidate.sdpMid&&d.candidate.sdpMLineIndex!==null?y(S,{candidate:d.candidate.candidate,sdpMid:d.candidate.sdpMid,sdpMLineIndex:d.candidate.sdpMLineIndex},R):y(S,{candidate:null},R)},s.oniceconnectionstatechange=()=>{var h;T("peerConnection.oniceconnectionstatechange => "+s.iceConnectionState);const d=ce(s.iceConnectionState);d===_.Connected?c=setTimeout(()=>{var k;(k=n.onConnectionStateChange)==null||k.call(n,_.Connected)},5e3):(clearTimeout(c),(h=n.onConnectionStateChange)==null||h.call(n,d))},s.ontrack=d=>{var h;T("peerConnection.ontrack",d),(h=n.onSrcObjectReady)==null||h.call(n,d.streams[0])},u.onmessage=d=>{var h,k;if(u.readyState==="open"){const[C,A]=d.data.split(":");C===I.StreamStarted?i==null||i.track("agent-video",{event:"start",...d}):C===I.StreamDone?i==null||i.track("agent-video",{event:"stop",...d}):C===I.StreamFailed?((h=n.onVideoStateChange)==null||h.call(n,L.Stop,{event:C,data:A}),clearInterval(l)):C===I.StreamReady?(clearTimeout(c),(k=n.onConnectionStateChange)==null||k.call(n,_.Connected)):C===I.StreamCreated?i==null||i.track("agent-video",{event:"created",...d}):C===I.StreamVideoCreated?i==null||i.track("agent-video",{event:"video-created",...d}):C===I.StreamVideoDone?i==null||i.track("agent-video",{event:"video-done",...d}):C===I.StreamVideoError&&(i==null||i.track("agent-video",{event:"video-error",...d}))}},await s.setRemoteDescription(b),T("set remote description OK");const v=await s.createAnswer();return T("create answer OK"),await s.setLocalDescription(v),T("set local description OK"),await g(S,v,R),T("start connection OK"),{speak(d){return m(S,R,d)},async disconnect(){var d,h;S&&(s&&(s.close(),s.oniceconnectionstatechange=null,s.onnegotiationneeded=null,s.onicecandidate=null,s.ontrack=null),await f(S,R).catch(k=>{}),(d=n.onConnectionStateChange)==null||d.call(n,_.New),(h=n.onVideoStateChange)==null||h.call(n,L.Stop),clearInterval(l))},sessionId:R,streamId:S}}function le(e){const a={mixPanelKey:e.mixPanelKey||"testKey",distinct_id:e.distinctId||V(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...a,getRandom:()=>Math.random().toString(16).slice(2),track(t,n){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const r={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...n,...a,time:Date.now(),$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerWidth,"Screen Width":window.screen.width||window.innerHeight,"User Agent":navigator.userAgent}}])})};return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1",r).then(i=>i.json()).catch(i=>console.error(i))}}}function ue(e){var n,r,i,o,c;const a=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const g=navigator.platform;return g.toLowerCase().includes("win")?"Windows":g.toLowerCase().includes("mac")?"Mac OS X":g.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${a()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(n=e.presenter)==null?void 0:n.type,agentVoice:{voiceId:(i=(r=e.presenter)==null?void 0:r.voice)==null?void 0:i.voice_id,provider:(c=(o=e.presenter)==null?void 0:o.voice)==null?void 0:c.type}}}function he(e){if(e.presenter){if(e.presenter.type===M.Clip)return{videoType:M.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");return{videoType:M.Talk,source_url:e.presenter.source_url,stream_warmup:!0}}function Z(e,a,t,n,r){return new Promise(async(i,o)=>{let c=r;const g=await me(e.id,he(e),{...a,callbacks:{...a.callbacks,onConnectionStateChange:async m=>{var f,p;if(m===_.Connected)try{c||(c=await t.newChat(e.id),n.track("agent-chat",{event:"created",chat_id:c.id,agent_id:e.id})),g&&i({chat:c,streamingManager:g})}catch(y){console.error(y),o("Cannot create new chat")}else m===_.Fail&&o(new Error("Cannot create connection"));(p=(f=a.callbacks).onConnectionStateChange)==null||p.call(f,m)},onVideoStateChange(m,f){var p,y;n.track("agent-video",{event:m,rtc_stats:f??[]}),(y=(p=a.callbacks).onVideoStateChange)==null||y.call(p,m,f)}}}).catch(o)})}function we(e,a,t){return Q(a,t||K).getById(e)}function D(e){let a="";if(e.greetings&&e.greetings.length>0){const t=Math.floor(Math.random()*e.greetings.length);a=e.greetings[t]}else a=`Hi! I'm ${e.preview_name}, welcome to agents. How can I help you?`;return[{content:a,id:x(),role:"assistant",created_at:new Date().toISOString()}]}async function fe(e,a){var b,N,R;const t={messages:[],chatMode:a.mode||E.Functional};let n=-1;const r=a.wsURL||G,i=a.baseURL||K,o=a.mixpanelKey||ee,c=Q(a.auth,i),g=await c.getById(e);t.messages=D(g),(N=(b=a.callbacks).onNewMessage)==null||N.call(b,t.messages);const m=le({mixPanelKey:o,agent:g,...a});m.track("agent-sdk",{event:"loaded",...ue(g)});const f={onMessage:(s,u)=>{var l,v;if("content"in u){const{content:d}=u,h=t.messages[t.messages.length-1];(h==null?void 0:h.role)==="assistant"&&(n<t.messages.length&&(h.content=s===O.Partial?h.content+d:d),s===O.Answer&&(n=t.messages.length)),s===O.Complete&&m.track("agent-message-received",{messages:t.messages.length}),(v=(l=a.callbacks).onNewMessage)==null||v.call(l,t.messages)}}};async function p(){var v,d,h,k,C;const s=await X(a.auth,r,f),{streamingManager:u,chat:l}=await Z(g,a,c,m,t.chat);n=-1,t.messages=D(g),(d=(v=a.callbacks).onNewMessage)==null||d.call(v,t.messages),l!=null&&l.id&&l.id!==((h=t.chat)==null?void 0:h.id)&&((C=(k=a.callbacks).onNewChat)==null||C.call(k,l==null?void 0:l.id)),t.streamingManager=u,t.socketManager=s,t.chat=l,S(E.Functional),m.track("agent-chat",{event:"connect",chatId:l.id,agentId:g.id})}async function y(){var s,u,l,v,d;(s=t.socketManager)==null||s.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,t.messages=D(g),(v=(l=a.callbacks).onNewMessage)==null||v.call(l,t.messages),m.track("agent-chat",{event:"disconnect",chatId:(d=t.chat)==null?void 0:d.id,agentId:g.id})}async function S(s){var u,l;s!==t.chatMode&&(m.track("agent-mode-change",{mode:s}),t.chatMode=s,t.chatMode!==E.Functional&&await y(),(l=(u=a.callbacks).onModeChange)==null||l.call(u,s))}return{agent:g,starterMessages:((R=g.knowledge)==null?void 0:R.starter_message)||[],connect:p,disconnect:y,changeMode:S,async reconnect(){if(!t.chat)return p();const s=await X(a.auth,r,f),{streamingManager:u,chat:l}=await Z(g,a,c,m,t.chat);t.streamingManager=u,t.socketManager=s,S(E.Functional),m.track("agent-chat",{event:"reconnect",chatId:l.id,agentId:g.id})},async chat(s,u=!1){var l,v,d,h,k,C;try{if(s.length>=800)throw new Error("Message cannot be more than 800 characters");const A=Date.now();if(t.messages.push({id:x(),role:"user",content:s,created_at:new Date(A).toISOString()}),(v=(l=a.callbacks).onNewMessage)==null||v.call(l,t.messages),s.length===0)throw new Error("Message cannot be empty");if(t.chatMode===E.Maintenance)throw new Error("Chat is in maintenance mode");if(t.chatMode!==E.TextOnly){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");if(!t.chat)throw new Error("Chat is not initialized")}else t.chat||(t.chat=await c.newChat(g.id));const $=await c.chat(g.id,t.chat.id,{sessionId:(d=t.streamingManager)==null?void 0:d.sessionId,streamId:(h=t.streamingManager)==null?void 0:h.streamId,messages:t.messages,chatMode:t.chatMode,append_chat:u});return m.track("agent-message-send",{event:"success",messages:t.messages.length+1}),t.messages.push({id:x(),role:"assistant",content:$.result??"",created_at:new Date().toISOString(),matches:$.matches}),$.result&&m.track("agent-message-received",{latency:Date.now()-A,messages:t.messages.length}),(C=(k=a.callbacks).onNewMessage)==null||C.call(k,t.messages),$}catch(A){throw m.track("agent-message-send",{event:"error",messages:t.messages.length}),A}},rate(s,u,l){var h,k,C,A;const v=t.messages.find($=>$.id===s);if(t.chat){if(!v)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const d=((h=v.matches)==null?void 0:h.map($=>[$.document_id,$.id]))??[];return m.track("agent-rate",{event:l?"update":"create",thumb:u===1?"up":"down",knowledge_id:((k=g.knowledge)==null?void 0:k.id)??"",matches:d,score:u}),l?c.updateRating(g.id,t.chat.id,l,{knowledge_id:((C=g.knowledge)==null?void 0:C.id)??"",message_id:s,matches:d,score:u}):c.createRating(g.id,t.chat.id,{knowledge_id:((A=g.knowledge)==null?void 0:A.id)??"",message_id:s,matches:d,score:u})},deleteRate(s){var u;if(!t.chat)throw new Error("Chat is not initialized");return m.track("agent-rate-delete",{type:"text",chat_id:(u=t.chat)==null?void 0:u.id,id:s}),c.deleteRating(g.id,t.chat.id,s)},speak(s){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function u(){if(g.presenter){if(s.type==="text")return{type:"text",provider:s.provider?s.provider:g.presenter.voice,input:s.input,ssml:s.ssml||!1};if(s.type==="audio")return{type:"audio",audio_url:s.audio_url}}else throw new Error("Presenter is not initialized");throw new Error("Invalid payload")}const l=u();return m.track("agent-speak",l),t.streamingManager.speak({script:l})}}}w.ChatMode=E,w.ChatProgress=O,w.ConnectionState=_,w.DocumentType=U,w.KnowledgeType=j,w.PlanGroup=W,w.Providers=B,w.RateState=z,w.StreamEvents=I,w.StreamingState=L,w.Subject=H,w.UserPlan=P,w.VideoType=M,w.VoiceAccess=J,w.createAgentManager=fe,w.getAgent=we,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@d-id/client-sdk",
3
3
  "private": false,
4
- "version": "1.0.19-beta.75",
4
+ "version": "1.0.19-beta.76",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {
@@ -44,4 +44,4 @@
44
44
  "vite": "^5.1.4",
45
45
  "vite-plugin-dts": "^3.7.3"
46
46
  }
47
- }
47
+ }