@d-id/client-sdk 1.0.19-beta.110 → 1.0.19-beta.111

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var G = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(G || {}), ee = /* @__PURE__ */ ((e) => (e.TRIAL = "deid-trial", e.PRO = "deid-pro", e.ENTERPRISE = "deid-enterprise", e.LITE = "deid-lite", e.ADVANCED = "deid-advanced", e.BUILD = "deid-api-build", e.LAUNCH = "deid-api-launch", e.SCALE = "deid-api-scale", e))(ee || {}), te = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(te || {}), k = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e))(k || {}), L = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(L || {}), ne = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(ne || {}), re = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(re || {}), ae = /* @__PURE__ */ ((e) => (e.Pdf = "pdf", e.Text = "text", e.Html = "html", e.Word = "word", e.Json = "json", e.Markdown = "markdown", e.Csv = "csv", e.Excel = "excel", e.Powerpoint = "powerpoint", e.Archive = "archive", e.Image = "image", e.Audio = "audio", e.Video = "video", e))(ae || {}), v = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(v || {}), b = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(b || {}), U = /* @__PURE__ */ ((e) => (e.ChatAnswer = "chat/answer", e.ChatPartial = "chat/partial", e.StreamDone = "stream/done", e.StreamStarted = "stream/started", e.StreamFailed = "stream/error", e.StreamReady = "stream/ready", e.StreamCreated = "stream/created", e.StreamVideoCreated = "stream-video/started", e.StreamVideoDone = "stream-video/done", e.StreamVideoError = "stream-video/error", e.StreamVideoRejected = "stream-video/rejected", e))(U || {}), I = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Terminating = "terminating", e))(I || {}), ie = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(ie || {}), se = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(se || {});
1
+ var G = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(G || {}), ee = /* @__PURE__ */ ((e) => (e.TRIAL = "deid-trial", e.PRO = "deid-pro", e.ENTERPRISE = "deid-enterprise", e.LITE = "deid-lite", e.ADVANCED = "deid-advanced", e.BUILD = "deid-api-build", e.LAUNCH = "deid-api-launch", e.SCALE = "deid-api-scale", e))(ee || {}), te = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(te || {}), k = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e))(k || {}), b = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(b || {}), ne = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(ne || {}), re = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(re || {}), ae = /* @__PURE__ */ ((e) => (e.Pdf = "pdf", e.Text = "text", e.Html = "html", e.Word = "word", e.Json = "json", e.Markdown = "markdown", e.Csv = "csv", e.Excel = "excel", e.Powerpoint = "powerpoint", e.Archive = "archive", e.Image = "image", e.Audio = "audio", e.Video = "video", e))(ae || {}), v = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(v || {}), N = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(N || {}), U = /* @__PURE__ */ ((e) => (e.ChatAnswer = "chat/answer", e.ChatPartial = "chat/partial", e.StreamDone = "stream/done", e.StreamStarted = "stream/started", e.StreamFailed = "stream/error", e.StreamReady = "stream/ready", e.StreamCreated = "stream/created", e.StreamVideoCreated = "stream-video/started", e.StreamVideoDone = "stream-video/done", e.StreamVideoError = "stream-video/error", e.StreamVideoRejected = "stream-video/rejected", e))(U || {}), I = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Terminating = "terminating", e))(I || {}), ie = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(ie || {}), se = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(se || {});
2
2
  const z = "https://api.d-id.com", oe = "wss://notifications.d-id.com", ce = "79f81a83a67430be2bc0fd61042b8faa", F = () => Math.random().toString(16).slice(2);
3
3
  function J() {
4
4
  let e = window.localStorage.getItem("did_external_key_id");
@@ -274,7 +274,7 @@ function ve(e, r) {
274
274
  const i = ye();
275
275
  return setInterval(async () => {
276
276
  const o = await e.getStats();
277
- i(o) ? (t = 0, n || (r == null || r(b.Start), n = !0)) : n && (t++, t >= a && (r == null || r(b.Stop), n = !1));
277
+ i(o) ? (t = 0, n || (r == null || r(N.Start), n = !0)) : n && (t++, t >= a && (r == null || r(N.Stop), n = !1));
278
278
  }, 100);
279
279
  }
280
280
  async function Ce(e, r, {
@@ -294,7 +294,7 @@ async function Ce(e, r, {
294
294
  addIceCandidate: T
295
295
  } = r.videoType === v.Clip ? he(t, i, e, a.onError) : fe(t, i, e, a.onError), {
296
296
  id: S,
297
- offer: N,
297
+ offer: O,
298
298
  ice_servers: K,
299
299
  session_id: R
300
300
  } = await C(r), p = new pe({
@@ -328,7 +328,7 @@ async function Ce(e, r, {
328
328
  const [w, f] = u.data.split(":");
329
329
  w === U.StreamReady && (clearTimeout(o), (h = a.onConnectionStateChange) == null || h.call(a, I.Connected));
330
330
  }
331
- }, await p.setRemoteDescription(N), A("set remote description OK");
331
+ }, await p.setRemoteDescription(O), A("set remote description OK");
332
332
  const y = await p.createAnswer();
333
333
  return A("create answer OK"), await p.setLocalDescription(y), A("set local description OK"), await g(S, y, R), A("start connection OK"), {
334
334
  /**
@@ -346,7 +346,7 @@ async function Ce(e, r, {
346
346
  if (S) {
347
347
  if (p) {
348
348
  if (W(p.iceConnectionState) === I.New) {
349
- (u = a.onVideoStateChange) == null || u.call(a, b.Stop), clearInterval(m);
349
+ (u = a.onVideoStateChange) == null || u.call(a, N.Stop), clearInterval(m);
350
350
  return;
351
351
  }
352
352
  p.close(), p.oniceconnectionstatechange = null, p.onnegotiationneeded = null, p.onicecandidate = null, p.ontrack = null;
@@ -357,7 +357,7 @@ async function Ce(e, r, {
357
357
  } catch (f) {
358
358
  A("Error on close stream connection", f);
359
359
  }
360
- (h = a.onConnectionStateChange) == null || h.call(a, I.New), (w = a.onVideoStateChange) == null || w.call(a, b.Stop), clearInterval(m);
360
+ (h = a.onConnectionStateChange) == null || h.call(a, I.New), (w = a.onVideoStateChange) == null || w.call(a, N.Stop), clearInterval(m);
361
361
  }
362
362
  },
363
363
  /**
@@ -550,7 +550,7 @@ function Re(e, r, s, a, t) {
550
550
  },
551
551
  onVideoStateChange(g) {
552
552
  var d, l;
553
- (l = (d = r.callbacks).onVideoStateChange) == null || l.call(d, g), D > 0 && g === b.Start && a.linkTrack("agent-video", {
553
+ (l = (d = r.callbacks).onVideoStateChange) == null || l.call(d, g), D > 0 && g === N.Start && a.linkTrack("agent-video", {
554
554
  event: "start",
555
555
  latency: Date.now() - D
556
556
  }, "start", [U.StreamVideoCreated]);
@@ -582,7 +582,7 @@ function Ee(e) {
582
582
  return s;
583
583
  }
584
584
  function Ae(e, r, s, a, t) {
585
- if (!(e === L.Partial || e === L.Answer))
585
+ if (!(e === b.Partial || e === b.Answer))
586
586
  return;
587
587
  const n = a.messages[a.messages.length - 1];
588
588
  if ((n == null ? void 0 : n.role) !== "assistant")
@@ -591,9 +591,9 @@ function Ae(e, r, s, a, t) {
591
591
  content: i,
592
592
  sequence: o
593
593
  } = r;
594
- e === L.Partial ? s[o] = i : s.answer = i;
594
+ e === b.Partial ? s[o] = i : s.answer = i;
595
595
  const g = Ee(s);
596
- n.content !== g && (n.content = g, t == null || t(a.messages, e));
596
+ (n.content !== g || e === b.Answer) && (n.content = g, t == null || t(a.messages, e));
597
597
  }
598
598
  async function $e(e, r) {
599
599
  var K, R, p;
@@ -616,7 +616,7 @@ async function $e(e, r) {
616
616
  onMessage: (c, m) => {
617
617
  var y, u, h, w;
618
618
  if ("content" in m)
619
- Ae(c, m, s, t, r.callbacks.onNewMessage), c === L.Answer && l.track("agent-message-received", {
619
+ Ae(c, m, s, t, r.callbacks.onNewMessage), c === b.Answer && l.track("agent-message-received", {
620
620
  messages: t.messages.length,
621
621
  mode: t.chatMode
622
622
  });
@@ -643,18 +643,18 @@ async function $e(e, r) {
643
643
  var f, E, _, M, $;
644
644
  D = 0, c && !a && (delete t.chat, t.messages = q(d), (E = (f = r.callbacks).onNewMessage) == null || E.call(f, t.messages, "answer"));
645
645
  const m = r.mode === k.DirectPlayback ? Promise.resolve(void 0) : me(r.auth, i, C), y = Re(d, r, g, l, t.chat).catch((P) => {
646
- throw N(k.Maintenance), P;
646
+ throw O(k.Maintenance), P;
647
647
  }), [u, {
648
648
  streamingManager: h,
649
649
  chat: w
650
650
  }] = await Promise.all([m, y]);
651
- w && w.id !== ((_ = t.chat) == null ? void 0 : _.id) && (($ = (M = r.callbacks).onNewChat) == null || $.call(M, w.id)), t.streamingManager = h, t.socketManager = u, t.chat = w, a = !1, N((w == null ? void 0 : w.chat_mode) ?? r.mode ?? k.Functional);
651
+ w && w.id !== ((_ = t.chat) == null ? void 0 : _.id) && (($ = (M = r.callbacks).onNewChat) == null || $.call(M, w.id)), t.streamingManager = h, t.socketManager = u, t.chat = w, a = !1, O((w == null ? void 0 : w.chat_mode) ?? r.mode ?? k.Functional);
652
652
  }
653
653
  async function S() {
654
654
  var c, m;
655
655
  (c = t.socketManager) == null || c.disconnect(), await ((m = t.streamingManager) == null ? void 0 : m.disconnect()), delete t.streamingManager, delete t.socketManager;
656
656
  }
657
- async function N(c) {
657
+ async function O(c) {
658
658
  var m, y;
659
659
  c !== t.chatMode && (l.track("agent-mode-change", {
660
660
  mode: c
@@ -663,7 +663,7 @@ async function $e(e, r) {
663
663
  return {
664
664
  agent: d,
665
665
  starterMessages: ((p = d.knowledge) == null ? void 0 : p.starter_message) || [],
666
- changeMode: N,
666
+ changeMode: O,
667
667
  async connect() {
668
668
  var c;
669
669
  await T(!0), l.track("agent-chat", {
@@ -725,16 +725,16 @@ async function $e(e, r) {
725
725
  }, M = [...t.messages];
726
726
  t.messages.push(_);
727
727
  const $ = (x) => {
728
- var O, H;
728
+ var L, H;
729
729
  return g.chat(d.id, x, {
730
- sessionId: (O = t.streamingManager) == null ? void 0 : O.sessionId,
730
+ sessionId: (L = t.streamingManager) == null ? void 0 : L.sessionId,
731
731
  streamId: (H = t.streamingManager) == null ? void 0 : H.streamId,
732
732
  chatMode: t.chatMode,
733
733
  messages: M
734
734
  }, Z(t.chatMode));
735
735
  }, P = await $(t.chat.id).catch(async (x) => {
736
- var O;
737
- if (!((O = x == null ? void 0 : x.message) != null && O.includes("missing or invalid session_id")))
736
+ var L;
737
+ if (!((L = x == null ? void 0 : x.message) != null && L.includes("missing or invalid session_id")))
738
738
  throw x;
739
739
  return await S(), await T(!1), $(t.chat.id);
740
740
  });
@@ -825,7 +825,7 @@ function Pe(e, r, s) {
825
825
  }
826
826
  export {
827
827
  k as ChatMode,
828
- L as ChatProgress,
828
+ b as ChatProgress,
829
829
  I as ConnectionState,
830
830
  ae as DocumentType,
831
831
  re as KnowledgeType,
@@ -833,7 +833,7 @@ export {
833
833
  ie as Providers,
834
834
  te as RateState,
835
835
  U as StreamEvents,
836
- b as StreamingState,
836
+ N as StreamingState,
837
837
  ne as Subject,
838
838
  G as UserPlan,
839
839
  v as VideoType,
@@ -1 +1 @@
1
- (function(p,N){typeof exports=="object"&&typeof module<"u"?N(exports):typeof define=="function"&&define.amd?define(["exports"],N):(p=typeof globalThis<"u"?globalThis:p||self,N(p.index={}))})(this,function(p){"use strict";var N=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(N||{}),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||{}),q=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(q||{}),M=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e))(M||{}),O=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(O||{}),J=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(J||{}),X=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(X||{}),Y=(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))(Y||{}),C=(e=>(e.Clip="clip",e.Talk="talk",e))(C||{}),P=(e=>(e.Start="START",e.Stop="STOP",e))(P||{}),z=(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))(z||{}),k=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Terminating="terminating",e))(k||{}),Z=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(Z||{}),G=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(G||{});const K="https://api.d-id.com",ce="wss://notifications.d-id.com",de="79f81a83a67430be2bc0fd61042b8faa",F=()=>Math.random().toString(16).slice(2);function Q(){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 le=F();function ee(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}.${Q()}_${le}`;throw new Error(`Unknown auth type: ${e}`)}function B(e,r=K,s){const i=async(t,n)=>{const a=await fetch(r+(t!=null&&t.startsWith("/")?t:`/${t}`),{...n,headers:{...n==null?void 0:n.headers,Authorization:ee(e),"Content-Type":"application/json"}});if(!a.ok){let o=await a.text().catch(()=>"Failed to fetch");throw s&&s(new Error(o),{url:t,options:n,headers:a.headers}),new Error(o)}return a.json()};return{get(t,n){return i(t,{...n,method:"GET"})},post(t,n,a){return i(t,{...a,body:JSON.stringify(n),method:"POST"})},delete(t,n,a){return i(t,{...a,body:JSON.stringify(n),method:"DELETE"})},patch(t,n,a){return i(t,{...a,body:JSON.stringify(n),method:"PATCH"})}}}function te(e,r=K,s){const i=B(e,`${r}/agents`,s);return{create(t,n){return i.post("/",t,n)},getAgents(t,n){return i.get(`/${t?`?tag=${t}`:""}`,n).then(a=>a??[])},getById(t,n){return i.get(`/${t}`,n)},delete(t,n){return i.delete(`/${t}`,void 0,n)},update(t,n,a){return i.patch(`/${t}`,n,a)},newChat(t,n){return i.post(`/${t}/chat`,void 0,n)},chat(t,n,a,o){return i.post(`/${t}/chat/${n}`,a,o)},createRating(t,n,a,o){return i.post(`/${t}/chat/${n}/ratings`,a,o)},updateRating(t,n,a,o,g){return i.patch(`/${t}/chat/${n}/ratings/${a}`,o,g)},deleteRating(t,n,a,o){return i.delete(`/${t}/chat/${n}/ratings/${a}`,o)}}}const ge=e=>new Promise(r=>setTimeout(r,e));function ue(e){return new Promise((r,s)=>{const{callbacks:i,host:t,auth:n}=e,{onMessage:a=null,onOpen:o=null,onClose:g=null,onError:d=null}=i||{},l=new WebSocket(`${t}?authorization=${ee(n)}`);l.onmessage=a,l.onclose=g,l.onerror=S=>{console.error(S),d==null||d("Websocket failed to connect",S),s(S)},l.onopen=S=>{o==null||o(S),r(l)}})}async function me(e){const{retries:r=1}=e;let s=null;for(let i=0;(s==null?void 0:s.readyState)!==WebSocket.OPEN;i++)try{s=await ue(e)}catch(t){if(i===r)throw t;await ge(i*500)}return s}async function he(e,r,s){const i=s!=null&&s.onMessage?[s.onMessage]:[],t=await me({auth:e,host:r,callbacks:{onError:s==null?void 0:s.onError,onMessage:n=>{const a=JSON.parse(n.data);i.forEach(o=>o(a.event,a))}}});return{socket:t,disconnect:()=>t.close(),subscribeToEvents:n=>i.push(n)}}const we="X-Playground-Chat";function fe(e,r,s,i){const t=B(e,`${r}/agents/${s}`,i);return{createStream(n){return t.post("/streams",{driver_id:n.driver_id,presenter_id:n.presenter_id,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,session_timeout:n.session_timeout,type:C.Clip})},startConnection(n,a,o){return t.post(`/streams/${n}/sdp`,{session_id:o,answer:a,type:C.Clip})},addIceCandidate(n,a,o){return t.post(`/streams/${n}/ice`,{session_id:o,...a,type:C.Clip})},sendStreamRequest(n,a,o){return t.post(`/streams/${n}`,{session_id:a,...o,type:C.Clip})},close(n,a){return t.delete(`/streams/${n}`,{session_id:a,type:C.Clip})}}}function pe(e,r,s,i){const t=B(e,`${r}/agents/${s}`,i);return{createStream(n,a){return t.post("/streams",{source_url:n.source_url,driver_url:n.driver_url,face:n.face,config:n.config,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,output_resolution:n.output_resolution,session_timeout:n.session_timeout,type:C.Talk},a)},startConnection(n,a,o,g){return t.post(`/streams/${n}/sdp`,{session_id:o,answer:a,type:C.Talk},g)},addIceCandidate(n,a,o,g){return t.post(`/streams/${n}/ice`,{session_id:o,...a,type:C.Talk},g)},sendStreamRequest(n,a,o,g){return t.post(`/streams/${n}`,{session_id:a,...o,type:C.Talk},g)},close(n,a,o){return t.delete(`/streams/${n}`,{session_id:a,type:C.Talk},o)}}}let ne=!1;const $=(e,r)=>ne&&console.log(e,r),ye=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function re(e){switch(e){case"connected":return k.Connected;case"checking":return k.Connecting;case"failed":return k.Fail;case"new":case"closed":case"disconnected":default:return k.New}}function ve(){let e=0;return r=>{for(const s of r.values())if(s&&s.type==="inbound-rtp"&&s.kind==="video"){const i=s.bytesReceived,t=i-e>0;return e=i,t}return!1}}function Ce(e,r){const i=Math.max(Math.ceil(10),1);let t=0,n=!1;const a=ve();return setInterval(async()=>{const o=await e.getStats();a(o)?(t=0,n||(r==null||r(P.Start),n=!0)):n&&(t++,t>=i&&(r==null||r(P.Stop),n=!1))},100)}async function Se(e,r,{debug:s=!1,callbacks:i,auth:t,analytics:n,baseURL:a=K}){ne=s;let o;const{startConnection:g,sendStreamRequest:d,close:l,createStream:S,addIceCandidate:L}=r.videoType===C.Clip?fe(t,a,e,i.onError):pe(t,a,e,i.onError),{id:R,offer:U,ice_servers:j,session_id:A}=await S(r),y=new ye({iceServers:j}),c=y.createDataChannel("JanusDataChannel");if(!A)throw new Error("Could not create session_id");const m=Ce(y,i.onVideoStateChange);y.onicecandidate=u=>{$("peerConnection.onicecandidate",u),u.candidate&&u.candidate.sdpMid&&u.candidate.sdpMLineIndex!==null?L(R,{candidate:u.candidate.candidate,sdpMid:u.candidate.sdpMid,sdpMLineIndex:u.candidate.sdpMLineIndex},A):L(R,{candidate:null},A)},y.oniceconnectionstatechange=()=>{var w;$("peerConnection.oniceconnectionstatechange => "+y.iceConnectionState);const u=re(y.iceConnectionState);u===k.Connected?o=setTimeout(()=>{var h;(h=i.onConnectionStateChange)==null||h.call(i,k.Connected)},5e3):(clearTimeout(o),(w=i.onConnectionStateChange)==null||w.call(i,u))},y.ontrack=u=>{var w;$("peerConnection.ontrack",u),(w=i.onSrcObjectReady)==null||w.call(i,u.streams[0])},c.onmessage=u=>{var w;if(c.readyState==="open"){const[h,f]=u.data.split(":");h===z.StreamReady&&(clearTimeout(o),(w=i.onConnectionStateChange)==null||w.call(i,k.Connected))}},await y.setRemoteDescription(U),$("set remote description OK");const v=await y.createAnswer();return $("create answer OK"),await y.setLocalDescription(v),$("set local description OK"),await g(R,v,A),$("start connection OK"),{speak(u){return d(R,A,u)},async disconnect(){var u,w,h;if(R){if(y){if(re(y.iceConnectionState)===k.New){(u=i.onVideoStateChange)==null||u.call(i,P.Stop),clearInterval(m);return}y.close(),y.oniceconnectionstatechange=null,y.onnegotiationneeded=null,y.onicecandidate=null,y.ontrack=null}try{await l(R,A).catch(f=>{})}catch(f){$("Error on close stream connection",f)}(w=i.onConnectionStateChange)==null||w.call(i,k.New),(h=i.onVideoStateChange)==null||h.call(i,P.Stop),clearInterval(m)}},sessionId:A,streamId:R}}let H={};function _e(e){const r=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",s={token:e.token||"testKey",distinct_id:e.distinctId||Q(),agentId:e.agent.id,agentType:e.agent.presenter.type,owner_id:e.agent.owner_id??""};return{...s,isEnabled:e.isEnabled??!0,getRandom:()=>Math.random().toString(16).slice(2),track(i,t){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const{audioPath:n,...a}=t||{},o={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:i,properties:{...a,...s,source:r,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",o).then(g=>g.json()).catch(g=>console.error(g))},linkTrack(i,t,n,a){H[i]||(H[i]={events:{},resolvedDependencies:[]}),a.includes(n)||a.push(n);const o=H[i];if(o.events[n]={props:t},o.resolvedDependencies.push(n),a.every(d=>o.resolvedDependencies.includes(d))){const d=a.reduce((l,S)=>o.events[S]?{...l,...o.events[S].props}:l,{});this.track(i,d),o.resolvedDependencies=o.resolvedDependencies.filter(l=>!a.includes(l)),a.forEach(l=>{delete o.events[l]})}}}}function Me(e){var i,t,n,a,o;const r=()=>/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:`${r()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(i=e.presenter)==null?void 0:i.type,agentVoice:{voiceId:(n=(t=e.presenter)==null?void 0:t.voice)==null?void 0:n.voice_id,provider:(o=(a=e.presenter)==null?void 0:a.voice)==null?void 0:o.type}}}function ke(e,r,s){var d,l;const{event:i,...t}=e,{template:n}=(r==null?void 0:r.llm)||{},{language:a}=((d=r==null?void 0:r.presenter)==null?void 0:d.voice)||{},{stitch:o}=(r==null?void 0:r.presenter)||{};return{...t,llm:{...t.llm,template:n},script:{...t.script,provider:{...(l=t==null?void 0:t.script)==null?void 0:l.provider,language:a}},stitch:o,...s}}const Re=1080;let T=0;function Ie(e,r){var s,i,t;if(e.presenter){if(e.presenter.type===C.Clip)return{videoType:C.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");return{videoType:C.Talk,source_url:e.presenter.source_url,session_timeout:(s=r==null?void 0:r.streamOptions)==null?void 0:s.session_timeout,stream_warmup:((i=r==null?void 0:r.streamOptions)==null?void 0:i.stream_warmup)??!0,compatibility_mode:(t=r==null?void 0:r.streamOptions)==null?void 0:t.compatibility_mode,output_resolution:(r==null?void 0:r.outputResolution)||(e.presenter.stitch?Re:void 0)}}function ie(e){return e===M.Playground?{headers:{[we]:"true"}}:{}}async function ae(e,r,s,i){try{const t=await r.newChat(e,ie(i));return s.track("agent-chat",{event:"created",chat_id:t.id,agent_id:e,mode:i}),t}catch(t){try{console.error(t);const n=JSON.parse(t.message);if((n==null?void 0:n.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(n){console.error("Error parsing the error message:",n)}throw new Error("Cannot create new chat")}}function Ae(e,r,s,i,t){return new Promise(async(n,a)=>{T=0;const o=await Se(e.id,Ie(e,r),{...r,analytics:i,callbacks:{...r.callbacks,onConnectionStateChange:async g=>{var d,l;g===k.Connected&&(!t&&r.mode!==M.DirectPlayback&&(t=await ae(e.id,s,i,r.mode).catch(S=>{a(S)})),o?n({chat:t,streamingManager:o}):t&&a(new Error("Something went wrong while initializing the manager"))),(l=(d=r.callbacks).onConnectionStateChange)==null||l.call(d,g)},onVideoStateChange(g){var d,l;(l=(d=r.callbacks).onVideoStateChange)==null||l.call(d,g),T>0&&g===P.Start&&i.linkTrack("agent-video",{event:"start",latency:Date.now()-T},"start",[z.StreamVideoCreated])}}}).catch(a)})}function se(e){let r="";if(e.greetings&&e.greetings.length>0){const s=Math.floor(Math.random()*e.greetings.length);r=e.greetings[s]}else r=`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`;return[{content:r,id:F(),role:"assistant",created_at:new Date().toISOString()}]}function Ee(e){if(e.answer!==void 0)return e.answer;let r=0,s="";for(;r in e;)s+=e[r],r++;return s}function $e(e,r,s,i,t){if(!(e===O.Partial||e===O.Answer))return;const n=i.messages[i.messages.length-1];if((n==null?void 0:n.role)!=="assistant")return;const{content:a,sequence:o}=r;e===O.Partial?s[o]=a:s.answer=a;const g=Ee(s);n.content!==g&&(n.content=g,t==null||t(i.messages,e))}async function Pe(e,r){var j,A,y;let s={},i=!0;const t={messages:[],chatMode:r.mode||M.Functional},n=r.baseURL||K,a=r.wsURL||ce,o=r.mixpanelKey||de,g=te(r.auth,n,r.callbacks.onError),d=await g.getById(e);t.messages=se(d),(A=(j=r.callbacks).onNewMessage)==null||A.call(j,t.messages,"answer");const l=_e({token:o,agent:d,...r});l.track("agent-sdk",{event:"loaded",...Me(d)});const S={onMessage:(c,m)=>{var v,u,w,h;if("content"in m)$e(c,m,s,t,r.callbacks.onNewMessage),c===O.Answer&&l.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const f=z,E=[f.StreamVideoDone,f.StreamVideoError,f.StreamVideoRejected],_=[f.StreamFailed,f.StreamVideoError,f.StreamVideoRejected],I=ke(m,d,{mode:t.chatMode});if(c=c,c===f.StreamVideoCreated)l.linkTrack("agent-video",I,f.StreamVideoCreated,["start"]);else if(E.includes(c)){const D=c.split("/")[1];l.track("agent-video",{...I,event:D})}_.includes(c)&&((u=(v=r.callbacks).onError)==null||u.call(v,new Error(`Stream failed with event ${c}`),{data:m})),m.event===f.StreamDone&&((h=(w=r.callbacks).onConnectionStateChange)==null||h.call(w,k.New))}}};async function L(c){var f,E,_,I,D;T=0,c&&!i&&(delete t.chat,t.messages=se(d),(E=(f=r.callbacks).onNewMessage)==null||E.call(f,t.messages,"answer"));const m=r.mode===M.DirectPlayback?Promise.resolve(void 0):he(r.auth,a,S),v=Ae(d,r,g,l,t.chat).catch(b=>{throw U(M.Maintenance),b}),[u,{streamingManager:w,chat:h}]=await Promise.all([m,v]);h&&h.id!==((_=t.chat)==null?void 0:_.id)&&((D=(I=r.callbacks).onNewChat)==null||D.call(I,h.id)),t.streamingManager=w,t.socketManager=u,t.chat=h,i=!1,U((h==null?void 0:h.chat_mode)??r.mode??M.Functional)}async function R(){var c,m;(c=t.socketManager)==null||c.disconnect(),await((m=t.streamingManager)==null?void 0:m.disconnect()),delete t.streamingManager,delete t.socketManager}async function U(c){var m,v;c!==t.chatMode&&(l.track("agent-mode-change",{mode:c}),t.chatMode=c,t.chatMode!==M.Functional&&await R(),(v=(m=r.callbacks).onModeChange)==null||v.call(m,c))}return{agent:d,starterMessages:((y=d.knowledge)==null?void 0:y.starter_message)||[],changeMode:U,async connect(){var c;await L(!0),l.track("agent-chat",{event:"connect",chatId:(c=t.chat)==null?void 0:c.id,agentId:d.id,mode:t.chatMode})},async reconnect(){var c;await R(),await L(!1),l.track("agent-chat",{event:"reconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:d.id,mode:t.chatMode})},async disconnect(){var c;await R(),l.track("agent-chat",{event:"disconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:d.id,mode:t.chatMode})},async chat(c){var v,u,w,h,f,E;const m=F();s={};try{if(T=Date.now(),r.mode===M.DirectPlayback)throw new Error("Direct playback is enabled, chat is disabled");if(c.length>=800)throw new Error("Message cannot be more than 800 characters");if(c.length===0)throw new Error("Message cannot be empty");if(t.chatMode===M.Maintenance)throw new Error("Chat is in maintenance mode");if(![M.TextOnly,M.Playground].includes(t.chatMode))if(t.streamingManager){if(!t.chat)throw new Error("Chat is not initialized")}else throw new Error("Streaming manager is not initialized");t.chat||(t.chat=await ae(d.id,g,l,t.chatMode),(u=(v=r.callbacks).onNewChat)==null||u.call(v,t.chat.id)),t.messages.push({id:F(),role:"user",content:c,created_at:new Date(T).toISOString()}),(h=(w=r.callbacks).onNewMessage)==null||h.call(w,t.messages,"user");const _={id:m,role:"assistant",content:"",created_at:new Date().toISOString(),matches:[]},I=[...t.messages];t.messages.push(_);const D=x=>{var V,oe;return g.chat(d.id,x,{sessionId:(V=t.streamingManager)==null?void 0:V.sessionId,streamId:(oe=t.streamingManager)==null?void 0:oe.streamId,chatMode:t.chatMode,messages:I},ie(t.chatMode))},b=await D(t.chat.id).catch(async x=>{var V;if(!((V=x==null?void 0:x.message)!=null&&V.includes("missing or invalid session_id")))throw x;return await R(),await L(!1),D(t.chat.id)});return l.track("agent-message-send",{event:"success",mode:t.chatMode,messages:t.messages.length+1}),_.context=b.context,_.matches=b.matches,b.result&&(_.content=b.result,l.track("agent-message-received",{latency:Date.now()-T,mode:t.chatMode,messages:t.messages.length}),(E=(f=r.callbacks).onNewMessage)==null||E.call(f,t.messages,"answer")),b}catch(_){throw t.messages[t.messages.length-1].id===m&&t.messages.pop(),l.track("agent-message-send",{event:"error",mode:t.chatMode,messages:t.messages.length}),_}},rate(c,m,v){var h,f,E,_;const u=t.messages.find(I=>I.id===c);if(t.chat){if(!u)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const w=((h=u.matches)==null?void 0:h.map(I=>[I.document_id,I.id]))??[];return l.track("agent-rate",{event:v?"update":"create",thumb:m===1?"up":"down",knowledge_id:((f=d.knowledge)==null?void 0:f.id)??"",mode:t.chatMode,matches:w,score:m}),v?g.updateRating(d.id,t.chat.id,v,{knowledge_id:((E=d.knowledge)==null?void 0:E.id)??"",message_id:c,matches:w,score:m}):g.createRating(d.id,t.chat.id,{knowledge_id:((_=d.knowledge)==null?void 0:_.id)??"",message_id:c,matches:w,score:m})},deleteRate(c){var m;if(!t.chat)throw new Error("Chat is not initialized");return l.track("agent-rate-delete",{type:"text",chat_id:(m=t.chat)==null?void 0:m.id,id:c,mode:t.chatMode}),g.deleteRating(d.id,t.chat.id,c)},speak(c){if(!t.streamingManager)throw new Error("Please connect to the agent first");function m(){if(typeof c=="string"){if(!d.presenter)throw new Error("Presenter is not initialized");return{type:"text",provider:d.presenter.voice,input:c,ssml:!1}}return c}const v=m();return l.track("agent-speak",v),t.streamingManager.speak({script:v})}}}function Te(e,r,s){const{getById:i}=te(r,s||K);return i(e)}p.ChatMode=M,p.ChatProgress=O,p.ConnectionState=k,p.DocumentType=Y,p.KnowledgeType=X,p.PlanGroup=W,p.Providers=Z,p.RateState=q,p.StreamEvents=z,p.StreamingState=P,p.Subject=J,p.UserPlan=N,p.VideoType=C,p.VoiceAccess=G,p.createAgentManager=Pe,p.getAgent=Te,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})});
1
+ (function(p,O){typeof exports=="object"&&typeof module<"u"?O(exports):typeof define=="function"&&define.amd?define(["exports"],O):(p=typeof globalThis<"u"?globalThis:p||self,O(p.index={}))})(this,function(p){"use strict";var O=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(O||{}),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||{}),q=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(q||{}),M=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e))(M||{}),P=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(P||{}),J=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(J||{}),X=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(X||{}),Y=(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))(Y||{}),C=(e=>(e.Clip="clip",e.Talk="talk",e))(C||{}),T=(e=>(e.Start="START",e.Stop="STOP",e))(T||{}),z=(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))(z||{}),k=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Terminating="terminating",e))(k||{}),Z=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(Z||{}),G=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(G||{});const K="https://api.d-id.com",ce="wss://notifications.d-id.com",de="79f81a83a67430be2bc0fd61042b8faa",F=()=>Math.random().toString(16).slice(2);function Q(){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 le=F();function ee(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}.${Q()}_${le}`;throw new Error(`Unknown auth type: ${e}`)}function B(e,r=K,s){const i=async(t,n)=>{const a=await fetch(r+(t!=null&&t.startsWith("/")?t:`/${t}`),{...n,headers:{...n==null?void 0:n.headers,Authorization:ee(e),"Content-Type":"application/json"}});if(!a.ok){let o=await a.text().catch(()=>"Failed to fetch");throw s&&s(new Error(o),{url:t,options:n,headers:a.headers}),new Error(o)}return a.json()};return{get(t,n){return i(t,{...n,method:"GET"})},post(t,n,a){return i(t,{...a,body:JSON.stringify(n),method:"POST"})},delete(t,n,a){return i(t,{...a,body:JSON.stringify(n),method:"DELETE"})},patch(t,n,a){return i(t,{...a,body:JSON.stringify(n),method:"PATCH"})}}}function te(e,r=K,s){const i=B(e,`${r}/agents`,s);return{create(t,n){return i.post("/",t,n)},getAgents(t,n){return i.get(`/${t?`?tag=${t}`:""}`,n).then(a=>a??[])},getById(t,n){return i.get(`/${t}`,n)},delete(t,n){return i.delete(`/${t}`,void 0,n)},update(t,n,a){return i.patch(`/${t}`,n,a)},newChat(t,n){return i.post(`/${t}/chat`,void 0,n)},chat(t,n,a,o){return i.post(`/${t}/chat/${n}`,a,o)},createRating(t,n,a,o){return i.post(`/${t}/chat/${n}/ratings`,a,o)},updateRating(t,n,a,o,g){return i.patch(`/${t}/chat/${n}/ratings/${a}`,o,g)},deleteRating(t,n,a,o){return i.delete(`/${t}/chat/${n}/ratings/${a}`,o)}}}const ge=e=>new Promise(r=>setTimeout(r,e));function ue(e){return new Promise((r,s)=>{const{callbacks:i,host:t,auth:n}=e,{onMessage:a=null,onOpen:o=null,onClose:g=null,onError:d=null}=i||{},l=new WebSocket(`${t}?authorization=${ee(n)}`);l.onmessage=a,l.onclose=g,l.onerror=S=>{console.error(S),d==null||d("Websocket failed to connect",S),s(S)},l.onopen=S=>{o==null||o(S),r(l)}})}async function me(e){const{retries:r=1}=e;let s=null;for(let i=0;(s==null?void 0:s.readyState)!==WebSocket.OPEN;i++)try{s=await ue(e)}catch(t){if(i===r)throw t;await ge(i*500)}return s}async function he(e,r,s){const i=s!=null&&s.onMessage?[s.onMessage]:[],t=await me({auth:e,host:r,callbacks:{onError:s==null?void 0:s.onError,onMessage:n=>{const a=JSON.parse(n.data);i.forEach(o=>o(a.event,a))}}});return{socket:t,disconnect:()=>t.close(),subscribeToEvents:n=>i.push(n)}}const we="X-Playground-Chat";function fe(e,r,s,i){const t=B(e,`${r}/agents/${s}`,i);return{createStream(n){return t.post("/streams",{driver_id:n.driver_id,presenter_id:n.presenter_id,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,session_timeout:n.session_timeout,type:C.Clip})},startConnection(n,a,o){return t.post(`/streams/${n}/sdp`,{session_id:o,answer:a,type:C.Clip})},addIceCandidate(n,a,o){return t.post(`/streams/${n}/ice`,{session_id:o,...a,type:C.Clip})},sendStreamRequest(n,a,o){return t.post(`/streams/${n}`,{session_id:a,...o,type:C.Clip})},close(n,a){return t.delete(`/streams/${n}`,{session_id:a,type:C.Clip})}}}function pe(e,r,s,i){const t=B(e,`${r}/agents/${s}`,i);return{createStream(n,a){return t.post("/streams",{source_url:n.source_url,driver_url:n.driver_url,face:n.face,config:n.config,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,output_resolution:n.output_resolution,session_timeout:n.session_timeout,type:C.Talk},a)},startConnection(n,a,o,g){return t.post(`/streams/${n}/sdp`,{session_id:o,answer:a,type:C.Talk},g)},addIceCandidate(n,a,o,g){return t.post(`/streams/${n}/ice`,{session_id:o,...a,type:C.Talk},g)},sendStreamRequest(n,a,o,g){return t.post(`/streams/${n}`,{session_id:a,...o,type:C.Talk},g)},close(n,a,o){return t.delete(`/streams/${n}`,{session_id:a,type:C.Talk},o)}}}let ne=!1;const $=(e,r)=>ne&&console.log(e,r),ye=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function re(e){switch(e){case"connected":return k.Connected;case"checking":return k.Connecting;case"failed":return k.Fail;case"new":case"closed":case"disconnected":default:return k.New}}function ve(){let e=0;return r=>{for(const s of r.values())if(s&&s.type==="inbound-rtp"&&s.kind==="video"){const i=s.bytesReceived,t=i-e>0;return e=i,t}return!1}}function Ce(e,r){const i=Math.max(Math.ceil(10),1);let t=0,n=!1;const a=ve();return setInterval(async()=>{const o=await e.getStats();a(o)?(t=0,n||(r==null||r(T.Start),n=!0)):n&&(t++,t>=i&&(r==null||r(T.Stop),n=!1))},100)}async function Se(e,r,{debug:s=!1,callbacks:i,auth:t,analytics:n,baseURL:a=K}){ne=s;let o;const{startConnection:g,sendStreamRequest:d,close:l,createStream:S,addIceCandidate:L}=r.videoType===C.Clip?fe(t,a,e,i.onError):pe(t,a,e,i.onError),{id:R,offer:U,ice_servers:j,session_id:I}=await S(r),y=new ye({iceServers:j}),c=y.createDataChannel("JanusDataChannel");if(!I)throw new Error("Could not create session_id");const m=Ce(y,i.onVideoStateChange);y.onicecandidate=u=>{$("peerConnection.onicecandidate",u),u.candidate&&u.candidate.sdpMid&&u.candidate.sdpMLineIndex!==null?L(R,{candidate:u.candidate.candidate,sdpMid:u.candidate.sdpMid,sdpMLineIndex:u.candidate.sdpMLineIndex},I):L(R,{candidate:null},I)},y.oniceconnectionstatechange=()=>{var w;$("peerConnection.oniceconnectionstatechange => "+y.iceConnectionState);const u=re(y.iceConnectionState);u===k.Connected?o=setTimeout(()=>{var h;(h=i.onConnectionStateChange)==null||h.call(i,k.Connected)},5e3):(clearTimeout(o),(w=i.onConnectionStateChange)==null||w.call(i,u))},y.ontrack=u=>{var w;$("peerConnection.ontrack",u),(w=i.onSrcObjectReady)==null||w.call(i,u.streams[0])},c.onmessage=u=>{var w;if(c.readyState==="open"){const[h,f]=u.data.split(":");h===z.StreamReady&&(clearTimeout(o),(w=i.onConnectionStateChange)==null||w.call(i,k.Connected))}},await y.setRemoteDescription(U),$("set remote description OK");const v=await y.createAnswer();return $("create answer OK"),await y.setLocalDescription(v),$("set local description OK"),await g(R,v,I),$("start connection OK"),{speak(u){return d(R,I,u)},async disconnect(){var u,w,h;if(R){if(y){if(re(y.iceConnectionState)===k.New){(u=i.onVideoStateChange)==null||u.call(i,T.Stop),clearInterval(m);return}y.close(),y.oniceconnectionstatechange=null,y.onnegotiationneeded=null,y.onicecandidate=null,y.ontrack=null}try{await l(R,I).catch(f=>{})}catch(f){$("Error on close stream connection",f)}(w=i.onConnectionStateChange)==null||w.call(i,k.New),(h=i.onVideoStateChange)==null||h.call(i,T.Stop),clearInterval(m)}},sessionId:I,streamId:R}}let H={};function _e(e){const r=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",s={token:e.token||"testKey",distinct_id:e.distinctId||Q(),agentId:e.agent.id,agentType:e.agent.presenter.type,owner_id:e.agent.owner_id??""};return{...s,isEnabled:e.isEnabled??!0,getRandom:()=>Math.random().toString(16).slice(2),track(i,t){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const{audioPath:n,...a}=t||{},o={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:i,properties:{...a,...s,source:r,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",o).then(g=>g.json()).catch(g=>console.error(g))},linkTrack(i,t,n,a){H[i]||(H[i]={events:{},resolvedDependencies:[]}),a.includes(n)||a.push(n);const o=H[i];if(o.events[n]={props:t},o.resolvedDependencies.push(n),a.every(d=>o.resolvedDependencies.includes(d))){const d=a.reduce((l,S)=>o.events[S]?{...l,...o.events[S].props}:l,{});this.track(i,d),o.resolvedDependencies=o.resolvedDependencies.filter(l=>!a.includes(l)),a.forEach(l=>{delete o.events[l]})}}}}function Me(e){var i,t,n,a,o;const r=()=>/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:`${r()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(i=e.presenter)==null?void 0:i.type,agentVoice:{voiceId:(n=(t=e.presenter)==null?void 0:t.voice)==null?void 0:n.voice_id,provider:(o=(a=e.presenter)==null?void 0:a.voice)==null?void 0:o.type}}}function ke(e,r,s){var d,l;const{event:i,...t}=e,{template:n}=(r==null?void 0:r.llm)||{},{language:a}=((d=r==null?void 0:r.presenter)==null?void 0:d.voice)||{},{stitch:o}=(r==null?void 0:r.presenter)||{};return{...t,llm:{...t.llm,template:n},script:{...t.script,provider:{...(l=t==null?void 0:t.script)==null?void 0:l.provider,language:a}},stitch:o,...s}}const Re=1080;let D=0;function Ae(e,r){var s,i,t;if(e.presenter){if(e.presenter.type===C.Clip)return{videoType:C.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");return{videoType:C.Talk,source_url:e.presenter.source_url,session_timeout:(s=r==null?void 0:r.streamOptions)==null?void 0:s.session_timeout,stream_warmup:((i=r==null?void 0:r.streamOptions)==null?void 0:i.stream_warmup)??!0,compatibility_mode:(t=r==null?void 0:r.streamOptions)==null?void 0:t.compatibility_mode,output_resolution:(r==null?void 0:r.outputResolution)||(e.presenter.stitch?Re:void 0)}}function ie(e){return e===M.Playground?{headers:{[we]:"true"}}:{}}async function ae(e,r,s,i){try{const t=await r.newChat(e,ie(i));return s.track("agent-chat",{event:"created",chat_id:t.id,agent_id:e,mode:i}),t}catch(t){try{console.error(t);const n=JSON.parse(t.message);if((n==null?void 0:n.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(n){console.error("Error parsing the error message:",n)}throw new Error("Cannot create new chat")}}function Ie(e,r,s,i,t){return new Promise(async(n,a)=>{D=0;const o=await Se(e.id,Ae(e,r),{...r,analytics:i,callbacks:{...r.callbacks,onConnectionStateChange:async g=>{var d,l;g===k.Connected&&(!t&&r.mode!==M.DirectPlayback&&(t=await ae(e.id,s,i,r.mode).catch(S=>{a(S)})),o?n({chat:t,streamingManager:o}):t&&a(new Error("Something went wrong while initializing the manager"))),(l=(d=r.callbacks).onConnectionStateChange)==null||l.call(d,g)},onVideoStateChange(g){var d,l;(l=(d=r.callbacks).onVideoStateChange)==null||l.call(d,g),D>0&&g===T.Start&&i.linkTrack("agent-video",{event:"start",latency:Date.now()-D},"start",[z.StreamVideoCreated])}}}).catch(a)})}function se(e){let r="";if(e.greetings&&e.greetings.length>0){const s=Math.floor(Math.random()*e.greetings.length);r=e.greetings[s]}else r=`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`;return[{content:r,id:F(),role:"assistant",created_at:new Date().toISOString()}]}function Ee(e){if(e.answer!==void 0)return e.answer;let r=0,s="";for(;r in e;)s+=e[r],r++;return s}function $e(e,r,s,i,t){if(!(e===P.Partial||e===P.Answer))return;const n=i.messages[i.messages.length-1];if((n==null?void 0:n.role)!=="assistant")return;const{content:a,sequence:o}=r;e===P.Partial?s[o]=a:s.answer=a;const g=Ee(s);(n.content!==g||e===P.Answer)&&(n.content=g,t==null||t(i.messages,e))}async function Pe(e,r){var j,I,y;let s={},i=!0;const t={messages:[],chatMode:r.mode||M.Functional},n=r.baseURL||K,a=r.wsURL||ce,o=r.mixpanelKey||de,g=te(r.auth,n,r.callbacks.onError),d=await g.getById(e);t.messages=se(d),(I=(j=r.callbacks).onNewMessage)==null||I.call(j,t.messages,"answer");const l=_e({token:o,agent:d,...r});l.track("agent-sdk",{event:"loaded",...Me(d)});const S={onMessage:(c,m)=>{var v,u,w,h;if("content"in m)$e(c,m,s,t,r.callbacks.onNewMessage),c===P.Answer&&l.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const f=z,E=[f.StreamVideoDone,f.StreamVideoError,f.StreamVideoRejected],_=[f.StreamFailed,f.StreamVideoError,f.StreamVideoRejected],A=ke(m,d,{mode:t.chatMode});if(c=c,c===f.StreamVideoCreated)l.linkTrack("agent-video",A,f.StreamVideoCreated,["start"]);else if(E.includes(c)){const b=c.split("/")[1];l.track("agent-video",{...A,event:b})}_.includes(c)&&((u=(v=r.callbacks).onError)==null||u.call(v,new Error(`Stream failed with event ${c}`),{data:m})),m.event===f.StreamDone&&((h=(w=r.callbacks).onConnectionStateChange)==null||h.call(w,k.New))}}};async function L(c){var f,E,_,A,b;D=0,c&&!i&&(delete t.chat,t.messages=se(d),(E=(f=r.callbacks).onNewMessage)==null||E.call(f,t.messages,"answer"));const m=r.mode===M.DirectPlayback?Promise.resolve(void 0):he(r.auth,a,S),v=Ie(d,r,g,l,t.chat).catch(N=>{throw U(M.Maintenance),N}),[u,{streamingManager:w,chat:h}]=await Promise.all([m,v]);h&&h.id!==((_=t.chat)==null?void 0:_.id)&&((b=(A=r.callbacks).onNewChat)==null||b.call(A,h.id)),t.streamingManager=w,t.socketManager=u,t.chat=h,i=!1,U((h==null?void 0:h.chat_mode)??r.mode??M.Functional)}async function R(){var c,m;(c=t.socketManager)==null||c.disconnect(),await((m=t.streamingManager)==null?void 0:m.disconnect()),delete t.streamingManager,delete t.socketManager}async function U(c){var m,v;c!==t.chatMode&&(l.track("agent-mode-change",{mode:c}),t.chatMode=c,t.chatMode!==M.Functional&&await R(),(v=(m=r.callbacks).onModeChange)==null||v.call(m,c))}return{agent:d,starterMessages:((y=d.knowledge)==null?void 0:y.starter_message)||[],changeMode:U,async connect(){var c;await L(!0),l.track("agent-chat",{event:"connect",chatId:(c=t.chat)==null?void 0:c.id,agentId:d.id,mode:t.chatMode})},async reconnect(){var c;await R(),await L(!1),l.track("agent-chat",{event:"reconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:d.id,mode:t.chatMode})},async disconnect(){var c;await R(),l.track("agent-chat",{event:"disconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:d.id,mode:t.chatMode})},async chat(c){var v,u,w,h,f,E;const m=F();s={};try{if(D=Date.now(),r.mode===M.DirectPlayback)throw new Error("Direct playback is enabled, chat is disabled");if(c.length>=800)throw new Error("Message cannot be more than 800 characters");if(c.length===0)throw new Error("Message cannot be empty");if(t.chatMode===M.Maintenance)throw new Error("Chat is in maintenance mode");if(![M.TextOnly,M.Playground].includes(t.chatMode))if(t.streamingManager){if(!t.chat)throw new Error("Chat is not initialized")}else throw new Error("Streaming manager is not initialized");t.chat||(t.chat=await ae(d.id,g,l,t.chatMode),(u=(v=r.callbacks).onNewChat)==null||u.call(v,t.chat.id)),t.messages.push({id:F(),role:"user",content:c,created_at:new Date(D).toISOString()}),(h=(w=r.callbacks).onNewMessage)==null||h.call(w,t.messages,"user");const _={id:m,role:"assistant",content:"",created_at:new Date().toISOString(),matches:[]},A=[...t.messages];t.messages.push(_);const b=x=>{var V,oe;return g.chat(d.id,x,{sessionId:(V=t.streamingManager)==null?void 0:V.sessionId,streamId:(oe=t.streamingManager)==null?void 0:oe.streamId,chatMode:t.chatMode,messages:A},ie(t.chatMode))},N=await b(t.chat.id).catch(async x=>{var V;if(!((V=x==null?void 0:x.message)!=null&&V.includes("missing or invalid session_id")))throw x;return await R(),await L(!1),b(t.chat.id)});return l.track("agent-message-send",{event:"success",mode:t.chatMode,messages:t.messages.length+1}),_.context=N.context,_.matches=N.matches,N.result&&(_.content=N.result,l.track("agent-message-received",{latency:Date.now()-D,mode:t.chatMode,messages:t.messages.length}),(E=(f=r.callbacks).onNewMessage)==null||E.call(f,t.messages,"answer")),N}catch(_){throw t.messages[t.messages.length-1].id===m&&t.messages.pop(),l.track("agent-message-send",{event:"error",mode:t.chatMode,messages:t.messages.length}),_}},rate(c,m,v){var h,f,E,_;const u=t.messages.find(A=>A.id===c);if(t.chat){if(!u)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const w=((h=u.matches)==null?void 0:h.map(A=>[A.document_id,A.id]))??[];return l.track("agent-rate",{event:v?"update":"create",thumb:m===1?"up":"down",knowledge_id:((f=d.knowledge)==null?void 0:f.id)??"",mode:t.chatMode,matches:w,score:m}),v?g.updateRating(d.id,t.chat.id,v,{knowledge_id:((E=d.knowledge)==null?void 0:E.id)??"",message_id:c,matches:w,score:m}):g.createRating(d.id,t.chat.id,{knowledge_id:((_=d.knowledge)==null?void 0:_.id)??"",message_id:c,matches:w,score:m})},deleteRate(c){var m;if(!t.chat)throw new Error("Chat is not initialized");return l.track("agent-rate-delete",{type:"text",chat_id:(m=t.chat)==null?void 0:m.id,id:c,mode:t.chatMode}),g.deleteRating(d.id,t.chat.id,c)},speak(c){if(!t.streamingManager)throw new Error("Please connect to the agent first");function m(){if(typeof c=="string"){if(!d.presenter)throw new Error("Presenter is not initialized");return{type:"text",provider:d.presenter.voice,input:c,ssml:!1}}return c}const v=m();return l.track("agent-speak",v),t.streamingManager.speak({script:v})}}}function Te(e,r,s){const{getById:i}=te(r,s||K);return i(e)}p.ChatMode=M,p.ChatProgress=P,p.ConnectionState=k,p.DocumentType=Y,p.KnowledgeType=X,p.PlanGroup=W,p.Providers=Z,p.RateState=q,p.StreamEvents=z,p.StreamingState=T,p.Subject=J,p.UserPlan=O,p.VideoType=C,p.VoiceAccess=G,p.createAgentManager=Pe,p.getAgent=Te,Object.defineProperty(p,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.110",
4
+ "version": "1.0.19-beta.111",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {