@d-id/client-sdk 1.0.19-beta.130 → 1.0.19-beta.131

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
@@ -9,7 +9,7 @@ const le = (e) => {
9
9
  throw new Error(`Unknown video type: ${e}`);
10
10
  }
11
11
  };
12
- var z = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(z || {}), V = /* @__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))(V || {}), S = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Closed = "closed", e.Completed = "completed", e.Disconnected = "disconnected", e))(S || {}), ge = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(ge || {}), me = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(me || {});
12
+ var z = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(z || {}), V = /* @__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))(V || {}), M = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Closed = "closed", e.Completed = "completed", e.Disconnected = "disconnected", e))(M || {}), ge = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(ge || {}), me = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(me || {});
13
13
  const j = "https://api.d-id.com", ue = "wss://notifications.d-id.com", he = "79f81a83a67430be2bc0fd61042b8faa", U = () => Math.random().toString(16).slice(2);
14
14
  function Z() {
15
15
  let e = window.localStorage.getItem("did_external_key_id");
@@ -201,7 +201,7 @@ function _e(e, n, s, a) {
201
201
  }
202
202
  };
203
203
  }
204
- function Se(e, n, s, a) {
204
+ function Me(e, n, s, a) {
205
205
  const t = H(e, `${n}/agents/${s}`, a);
206
206
  return {
207
207
  createStream(r, i) {
@@ -242,25 +242,25 @@ function Se(e, n, s, a) {
242
242
  };
243
243
  }
244
244
  let ee = !1;
245
- const O = (e, n) => ee && console.log(e, n), Me = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
245
+ const O = (e, n) => ee && console.log(e, n), Se = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
246
246
  function J(e) {
247
247
  switch (e) {
248
248
  case "connected":
249
- return S.Connected;
249
+ return M.Connected;
250
250
  case "checking":
251
- return S.Connecting;
251
+ return M.Connecting;
252
252
  case "failed":
253
- return S.Fail;
253
+ return M.Fail;
254
254
  case "new":
255
- return S.New;
255
+ return M.New;
256
256
  case "closed":
257
- return S.Closed;
257
+ return M.Closed;
258
258
  case "disconnected":
259
- return S.Disconnected;
259
+ return M.Disconnected;
260
260
  case "completed":
261
- return S.Completed;
261
+ return M.Completed;
262
262
  default:
263
- return S.New;
263
+ return M.New;
264
264
  }
265
265
  }
266
266
  function ke() {
@@ -299,12 +299,12 @@ async function Ee(e, n, {
299
299
  close: g,
300
300
  createStream: h,
301
301
  addIceCandidate: m
302
- } = n.videoType === Y.Clip ? _e(t, r, e, a.onError) : Se(t, r, e, a.onError), {
302
+ } = n.videoType === Y.Clip ? _e(t, r, e, a.onError) : Me(t, r, e, a.onError), {
303
303
  id: C,
304
304
  offer: I,
305
305
  ice_servers: y,
306
306
  session_id: _
307
- } = await h(n), w = new Me({
307
+ } = await h(n), w = new Se({
308
308
  iceServers: y
309
309
  }), b = w.createDataChannel("JanusDataChannel");
310
310
  if (!_)
@@ -312,7 +312,7 @@ async function Ee(e, n, {
312
312
  let $ = !1;
313
313
  const c = () => $, u = () => {
314
314
  var l;
315
- $ = !0, (l = a.onConnectionStateChange) == null || l.call(a, S.Connected);
315
+ $ = !0, (l = a.onConnectionStateChange) == null || l.call(a, M.Connected);
316
316
  }, f = Re(w, a.onVideoStateChange, i, c, u);
317
317
  w.onicecandidate = (l) => {
318
318
  var p;
@@ -331,7 +331,7 @@ async function Ee(e, n, {
331
331
  });
332
332
  }
333
333
  }, b.onmessage = (l) => {
334
- if (console.log("pcDataChannel.onmessage", l), b.readyState === "open") {
334
+ if (b.readyState === "open") {
335
335
  const [p, k] = l.data.split(":");
336
336
  p === V.StreamReady && !$ && u();
337
337
  }
@@ -339,13 +339,13 @@ async function Ee(e, n, {
339
339
  var p;
340
340
  O("peerConnection.oniceconnectionstatechange => " + w.iceConnectionState);
341
341
  const l = J(w.iceConnectionState);
342
- l !== S.Connected && ((p = a.onConnectionStateChange) == null || p.call(a, l));
342
+ l !== M.Connected && ((p = a.onConnectionStateChange) == null || p.call(a, l));
343
343
  }, w.ontrack = (l) => {
344
344
  var p;
345
345
  O("peerConnection.ontrack", l), (p = a.onSrcObjectReady) == null || p.call(a, l.streams[0]);
346
346
  }, await w.setRemoteDescription(I), O("set remote description OK");
347
- const M = await w.createAnswer();
348
- return O("create answer OK"), await w.setLocalDescription(M), O("set local description OK"), await o(C, M, _), O("start connection OK"), {
347
+ const S = await w.createAnswer();
348
+ return O("create answer OK"), await w.setLocalDescription(S), O("set local description OK"), await o(C, S, _), O("start connection OK"), {
349
349
  /**
350
350
  * Method to send request to server to get clip or talk depend on you payload
351
351
  * @param payload
@@ -361,14 +361,14 @@ async function Ee(e, n, {
361
361
  if (C) {
362
362
  const k = J(w.iceConnectionState);
363
363
  if (w) {
364
- if (k === S.New) {
364
+ if (k === M.New) {
365
365
  (l = a.onVideoStateChange) == null || l.call(a, z.Stop), clearInterval(f);
366
366
  return;
367
367
  }
368
368
  w.close(), w.oniceconnectionstatechange = null, w.onnegotiationneeded = null, w.onicecandidate = null, w.ontrack = null;
369
369
  }
370
370
  try {
371
- k === S.Connected && await g(C, _).catch((v) => {
371
+ k === M.Connected && await g(C, _).catch((v) => {
372
372
  });
373
373
  } catch (v) {
374
374
  O("Error on close stream connection", v);
@@ -497,14 +497,10 @@ function Ae(e, n, s) {
497
497
  };
498
498
  }
499
499
  let N = 0;
500
- const De = 20 * 1e3;
501
- function Pe(e, n, s, a) {
500
+ const Pe = 20 * 1e3;
501
+ function De(e, n, s, a) {
502
502
  var t, r, i, o, d;
503
- return console.log("*****getAgentStreamArgs", {
504
- chat: n,
505
- options: s,
506
- greeting: a
507
- }), {
503
+ return {
508
504
  videoType: le(e.presenter.type),
509
505
  output_resolution: (t = s == null ? void 0 : s.streamOptions) == null ? void 0 : t.outputResolution,
510
506
  session_timeout: (r = s == null ? void 0 : s.streamOptions) == null ? void 0 : r.sessionTimeout,
@@ -549,7 +545,7 @@ function be(e, n, s, a, t, r) {
549
545
  N = 0;
550
546
  const d = setTimeout(() => {
551
547
  h(new Error("Could not connect"));
552
- }, De), g = (y) => {
548
+ }, Pe), g = (y) => {
553
549
  clearTimeout(d), i(y);
554
550
  }, h = (y) => {
555
551
  clearTimeout(d), o(y);
@@ -558,7 +554,7 @@ function be(e, n, s, a, t, r) {
558
554
  !t && n.mode !== E.DirectPlayback && (m = ne(e.id, s, a, n.mode, n.persistentChat).catch((y) => {
559
555
  h(y);
560
556
  }));
561
- const C = await Ee(e.id, Pe(e, t, n, r), {
557
+ const C = await Ee(e.id, De(e, t, n, r), {
562
558
  ...n,
563
559
  analytics: a,
564
560
  warmup: (I = n.streamOptions) == null ? void 0 : I.streamWarmup,
@@ -566,7 +562,7 @@ function be(e, n, s, a, t, r) {
566
562
  ...n.callbacks,
567
563
  onConnectionStateChange: async (y) => {
568
564
  var _, w, b, $;
569
- y === S.Connected ? (m && (t = await m), C ? ((w = (_ = n.callbacks).onConnectionStateChange) == null || w.call(_, y), g({
565
+ y === M.Connected ? (m && (t = await m), C ? ((w = (_ = n.callbacks).onConnectionStateChange) == null || w.call(_, y), g({
570
566
  chat: t,
571
567
  streamingManager: C
572
568
  })) : t && h(new Error("Something went wrong while initializing the manager"))) : ($ = (b = n.callbacks).onConnectionStateChange) == null || $.call(b, y);
@@ -641,7 +637,7 @@ async function Ne(e, n) {
641
637
  });
642
638
  const C = {
643
639
  onMessage: (c, u) => {
644
- var f, M;
640
+ var f, S;
645
641
  if ("content" in u)
646
642
  Oe(c, u, s, t, n.callbacks.onNewMessage), c === L.Answer && m.track("agent-message-received", {
647
643
  messages: t.messages.length,
@@ -660,40 +656,40 @@ async function Ne(e, n) {
660
656
  event: R
661
657
  });
662
658
  }
663
- k.includes(c) && ((M = (f = n.callbacks).onError) == null || M.call(f, new Error(`Stream failed with event ${c}`), {
659
+ k.includes(c) && ((S = (f = n.callbacks).onError) == null || S.call(f, new Error(`Stream failed with event ${c}`), {
664
660
  data: u
665
661
  })), u.event === l.StreamDone && y();
666
662
  }
667
663
  }
668
664
  };
669
665
  async function I(c) {
670
- var R, A, K, x, D, T, W;
671
- (A = (R = n.callbacks).onConnectionStateChange) == null || A.call(R, S.Connecting), N = 0;
666
+ var R, A, K, x, P, T, W;
667
+ (A = (R = n.callbacks).onConnectionStateChange) == null || A.call(R, M.Connecting), N = 0;
672
668
  const u = 3;
673
669
  c && !a && (delete t.chat, t.messages = X(h), (x = (K = n.callbacks).onNewMessage) == null || x.call(K, [...t.messages], "answer"));
674
670
  const f = n.mode === E.DirectPlayback ? Promise.resolve(void 0) : ve(n.auth, i, C);
675
- async function M() {
671
+ async function S() {
676
672
  for (let F = 1; F <= u; F++)
677
673
  try {
678
674
  return await be(g, n, d, m, t.chat, c ? h : void 0);
679
- } catch (P) {
680
- if ((P == null ? void 0 : P.message) !== "Could not connect")
681
- throw P;
675
+ } catch (D) {
676
+ if ((D == null ? void 0 : D.message) !== "Could not connect")
677
+ throw D;
682
678
  }
683
679
  throw new Error("Could not connect");
684
680
  }
685
- const l = M().catch((F) => {
686
- var P, q;
687
- throw _(E.Maintenance), (q = (P = n.callbacks).onConnectionStateChange) == null || q.call(P, S.Fail), F;
681
+ const l = S().catch((F) => {
682
+ var D, q;
683
+ throw _(E.Maintenance), (q = (D = n.callbacks).onConnectionStateChange) == null || q.call(D, M.Fail), F;
688
684
  }), [p, {
689
685
  streamingManager: k,
690
686
  chat: v
691
687
  }] = await Promise.all([f, l]);
692
- v && v.id !== ((D = t.chat) == null ? void 0 : D.id) && ((W = (T = n.callbacks).onNewChat) == null || W.call(T, v.id)), t.streamingManager = k, t.socketManager = p, t.chat = v, a = !1, _((v == null ? void 0 : v.chat_mode) ?? n.mode ?? E.Functional);
688
+ v && v.id !== ((P = t.chat) == null ? void 0 : P.id) && ((W = (T = n.callbacks).onNewChat) == null || W.call(T, v.id)), t.streamingManager = k, t.socketManager = p, t.chat = v, a = !1, _((v == null ? void 0 : v.chat_mode) ?? n.mode ?? E.Functional);
693
689
  }
694
690
  async function y() {
695
- var c, u, f, M;
696
- (c = t.socketManager) == null || c.disconnect(), await ((u = t.streamingManager) == null ? void 0 : u.disconnect()), delete t.streamingManager, delete t.socketManager, (M = (f = n.callbacks).onConnectionStateChange) == null || M.call(f, S.Disconnected);
691
+ var c, u, f, S;
692
+ (c = t.socketManager) == null || c.disconnect(), await ((u = t.streamingManager) == null ? void 0 : u.disconnect()), delete t.streamingManager, delete t.socketManager, (S = (f = n.callbacks).onConnectionStateChange) == null || S.call(f, M.Disconnected);
697
693
  }
698
694
  async function _(c) {
699
695
  var u, f;
@@ -707,7 +703,7 @@ async function Ne(e, n) {
707
703
  changeMode: _,
708
704
  async connect() {
709
705
  var c;
710
- console.log("*****Connecting"), await I(!0), m.track("agent-chat", {
706
+ await I(!0), m.track("agent-chat", {
711
707
  event: "connect",
712
708
  chatId: (c = t.chat) == null ? void 0 : c.id,
713
709
  agentId: g.id,
@@ -716,7 +712,7 @@ async function Ne(e, n) {
716
712
  },
717
713
  async reconnect() {
718
714
  var c;
719
- console.log("*****Reconnecting"), await y(), await I(!1), m.track("agent-chat", {
715
+ await y(), await I(!1), m.track("agent-chat", {
720
716
  event: "reconnect",
721
717
  chatId: (c = t.chat) == null ? void 0 : c.id,
722
718
  agentId: g.id,
@@ -733,7 +729,7 @@ async function Ne(e, n) {
733
729
  });
734
730
  },
735
731
  async chat(c) {
736
- var f, M, l, p, k, v;
732
+ var f, S, l, p, k, v;
737
733
  const u = U();
738
734
  s = {};
739
735
  try {
@@ -756,7 +752,7 @@ async function Ne(e, n) {
756
752
  role: "user",
757
753
  content: c,
758
754
  created_at: new Date(N).toISOString()
759
- }), (M = (f = n.callbacks).onNewMessage) == null || M.call(f, [...t.messages], "user"), t.chat || (t.chat = await ne(g.id, d, m, t.chatMode, n.persistentChat), (p = (l = n.callbacks).onNewChat) == null || p.call(l, t.chat.id));
755
+ }), (S = (f = n.callbacks).onNewMessage) == null || S.call(f, [...t.messages], "user"), t.chat || (t.chat = await ne(g.id, d, m, t.chatMode, n.persistentChat), (p = (l = n.callbacks).onNewChat) == null || p.call(l, t.chat.id));
760
756
  const R = {
761
757
  id: u,
762
758
  role: "assistant",
@@ -765,22 +761,22 @@ async function Ne(e, n) {
765
761
  matches: []
766
762
  }, A = [...t.messages];
767
763
  t.messages.push(R);
768
- const K = (D) => {
764
+ const K = (P) => {
769
765
  var T, W;
770
- return d.chat(g.id, D, {
766
+ return d.chat(g.id, P, {
771
767
  sessionId: (T = t.streamingManager) == null ? void 0 : T.sessionId,
772
768
  streamId: (W = t.streamingManager) == null ? void 0 : W.streamId,
773
769
  chatMode: t.chatMode,
774
770
  messages: A.map(({
775
771
  matches: F,
776
- ...P
777
- }) => P)
772
+ ...D
773
+ }) => D)
778
774
  }, te(t.chatMode));
779
- }, x = await K(t.chat.id).catch(async (D) => {
775
+ }, x = await K(t.chat.id).catch(async (P) => {
780
776
  var T;
781
- if (!((T = D == null ? void 0 : D.message) != null && T.includes("missing or invalid session_id")))
782
- throw D;
783
- return await y(), console.log("*****Reconnecting from send chat"), await I(!1), K(t.chat.id);
777
+ if (!((T = P == null ? void 0 : P.message) != null && T.includes("missing or invalid session_id")))
778
+ throw P;
779
+ return await y(), await I(!1), K(t.chat.id);
784
780
  });
785
781
  return m.track("agent-message-send", {
786
782
  event: "success",
@@ -801,13 +797,13 @@ async function Ne(e, n) {
801
797
  },
802
798
  rate(c, u, f) {
803
799
  var p, k, v, R;
804
- const M = t.messages.find((A) => A.id === c);
800
+ const S = t.messages.find((A) => A.id === c);
805
801
  if (t.chat) {
806
- if (!M)
802
+ if (!S)
807
803
  throw new Error("Message not found");
808
804
  } else
809
805
  throw new Error("Chat is not initialized");
810
- const l = ((p = M.matches) == null ? void 0 : p.map((A) => [A.document_id, A.id])) ?? [];
806
+ const l = ((p = S.matches) == null ? void 0 : p.map((A) => [A.document_id, A.id])) ?? [];
811
807
  return m.track("agent-rate", {
812
808
  event: f ? "update" : "create",
813
809
  thumb: u === 1 ? "up" : "down",
@@ -881,7 +877,7 @@ export {
881
877
  ie as AgentStatus,
882
878
  E as ChatMode,
883
879
  L as ChatProgress,
884
- S as ConnectionState,
880
+ M as ConnectionState,
885
881
  de as DocumentType,
886
882
  ce as KnowledgeType,
887
883
  ae as PlanGroup,
@@ -1 +1 @@
1
- (function(f,K){typeof exports=="object"&&typeof module<"u"?K(exports):typeof define=="function"&&define.amd?define(["exports"],K):(f=typeof globalThis<"u"?globalThis:f||self,K(f.index={}))})(this,function(f){"use strict";var K=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(K||{}),Y=(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))(Y||{}),Z=(e=>(e.Created="created",e.Started="started",e.Done="done",e.Error="error",e.Rejected="rejected",e.Ready="ready",e))(Z||{}),G=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(G||{}),I=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e))(I||{}),x=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(x||{}),Q=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(Q||{}),ee=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(ee||{}),te=(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))(te||{}),q=(e=>(e.Clip="clip",e.Talk="talk",e))(q||{});const ne=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var j=(e=>(e.Start="START",e.Stop="STOP",e))(j||{}),V=(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))(V||{}),S=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(S||{}),re=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(re||{}),ae=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(ae||{});const W="https://api.d-id.com",he="wss://notifications.d-id.com",we="79f81a83a67430be2bc0fd61042b8faa",H=()=>Math.random().toString(16).slice(2);function ie(){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 fe=H();function se(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}.${ie()}_${fe}`;throw new Error(`Unknown auth type: ${e}`)}function J(e,n=W,s){const a=async(t,r)=>{const i=await fetch(n+(t!=null&&t.startsWith("/")?t:`/${t}`),{...r,headers:{...r==null?void 0:r.headers,Authorization:se(e),"Content-Type":"application/json"}});if(!i.ok){let o=await i.text().catch(()=>"Failed to fetch");throw s&&s(new Error(o),{url:t,options:r,headers:i.headers}),new Error(o)}return i.json()};return{get(t,r){return a(t,{...r,method:"GET"})},post(t,r,i){return a(t,{...i,body:JSON.stringify(r),method:"POST"})},delete(t,r,i){return a(t,{...i,body:JSON.stringify(r),method:"DELETE"})},patch(t,r,i){return a(t,{...i,body:JSON.stringify(r),method:"PATCH"})}}}function oe(e,n=W,s){const a=J(e,`${n}/agents`,s);return{create(t,r){return a.post("/",t,r)},getAgents(t,r){return a.get(`/${t?`?tag=${t}`:""}`,r).then(i=>i??[])},getById(t,r){return a.get(`/${t}`,r)},delete(t,r){return a.delete(`/${t}`,void 0,r)},update(t,r,i){return a.patch(`/${t}`,r,i)},newChat(t,r,i){return a.post(`/${t}/chat`,r,i)},chat(t,r,i,o){return a.post(`/${t}/chat/${r}`,i,o)},createRating(t,r,i,o){return a.post(`/${t}/chat/${r}/ratings`,i,o)},updateRating(t,r,i,o,d){return a.patch(`/${t}/chat/${r}/ratings/${i}`,o,d)},deleteRating(t,r,i,o){return a.delete(`/${t}/chat/${r}/ratings/${i}`,o)}}}const pe=e=>new Promise(n=>setTimeout(n,e));function ye(e){return new Promise((n,s)=>{const{callbacks:a,host:t,auth:r}=e,{onMessage:i=null,onOpen:o=null,onClose:d=null,onError:g=null}=a||{},h=new WebSocket(`${t}?authorization=${se(r)}`);h.onmessage=i,h.onclose=d,h.onerror=m=>{console.error(m),g==null||g("Websocket failed to connect",m),s(m)},h.onopen=m=>{o==null||o(m),n(h)}})}async function ve(e){const{retries:n=1}=e;let s=null;for(let a=0;(s==null?void 0:s.readyState)!==WebSocket.OPEN;a++)try{s=await ye(e)}catch(t){if(a===n)throw t;await pe(a*500)}return s}async function Ce(e,n,s){const a=s!=null&&s.onMessage?[s.onMessage]:[],t=await ve({auth:e,host:n,callbacks:{onError:s==null?void 0:s.onError,onMessage:r=>{const i=JSON.parse(r.data);a.forEach(o=>o(i.event,i))}}});return{socket:t,disconnect:()=>t.close(),subscribeToEvents:r=>a.push(r)}}const Se="X-Playground-Chat";function _e(e,n,s,a){const t=J(e,`${n}/agents/${s}`,a);return{createStream(r){return t.post("/streams",{output_resolution:r.output_resolution,compatibility_mode:r.compatibility_mode,stream_warmup:r.stream_warmup,session_timeout:r.session_timeout,stream_greeting:r.stream_greeting})},startConnection(r,i,o){return t.post(`/streams/${r}/sdp`,{session_id:o,answer:i})},addIceCandidate(r,i,o){return t.post(`/streams/${r}/ice`,{session_id:o,...i})},sendStreamRequest(r,i,o){return t.post(`/streams/${r}`,{session_id:i,...o})},close(r,i){return t.delete(`/streams/${r}`,{session_id:i})}}}function Me(e,n,s,a){const t=J(e,`${n}/agents/${s}`,a);return{createStream(r,i){return t.post("/streams",{driver_url:r.driver_url,face:r.face,config:r.config,output_resolution:r.output_resolution,compatibility_mode:r.compatibility_mode,stream_warmup:r.stream_warmup,session_timeout:r.session_timeout,stream_greeting:r.stream_greeting},i)},startConnection(r,i,o,d){return t.post(`/streams/${r}/sdp`,{session_id:o,answer:i},d)},addIceCandidate(r,i,o,d){return t.post(`/streams/${r}/ice`,{session_id:o,...i},d)},sendStreamRequest(r,i,o,d){return t.post(`/streams/${r}`,{session_id:i,...o},d)},close(r,i,o){return t.delete(`/streams/${r}`,{session_id:i},o)}}}let ce=!1;const T=(e,n)=>ce&&console.log(e,n),ke=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function de(e){switch(e){case"connected":return S.Connected;case"checking":return S.Connecting;case"failed":return S.Fail;case"new":return S.New;case"closed":return S.Closed;case"disconnected":return S.Disconnected;case"completed":return S.Completed;default:return S.New}}function Re(){let e=0;return n=>{for(const s of n.values())if(s&&s.type==="inbound-rtp"&&s.kind==="video"){const a=s.bytesReceived,t=a-e>0;return e=a,t}return!1}}function Ee(e,n,s=!1,a,t){const i=Math.max(Math.ceil(10),1);let o=0,d=!1;const g=s?1:0;let h=0;const m=Re();return setInterval(async()=>{const _=await e.getStats();m(_)?(o=0,d||(n==null||n(j.Start),h>=g&&!a()&&t(),h++,d=!0)):d&&(o++,o>=i&&(n==null||n(j.Stop),d=!1))},100)}async function Ie(e,n,{debug:s=!1,callbacks:a,auth:t,baseURL:r=W,warmup:i}){ce=s;const{startConnection:o,sendStreamRequest:d,close:g,createStream:h,addIceCandidate:m}=n.videoType===q.Clip?_e(t,r,e,a.onError):Me(t,r,e,a.onError),{id:_,offer:A,ice_servers:v,session_id:M}=await h(n),w=new ke({iceServers:v}),O=w.createDataChannel("JanusDataChannel");if(!M)throw new Error("Could not create session_id");let $=!1;const c=()=>$,u=()=>{var l;$=!0,(l=a.onConnectionStateChange)==null||l.call(a,S.Connected)},p=Ee(w,a.onVideoStateChange,i,c,u);w.onicecandidate=l=>{var y;T("peerConnection.onicecandidate",l);try{l.candidate&&l.candidate.sdpMid&&l.candidate.sdpMLineIndex!==null?m(_,{candidate:l.candidate.candidate,sdpMid:l.candidate.sdpMid,sdpMLineIndex:l.candidate.sdpMLineIndex},M):m(_,{candidate:null},M)}catch(R){(y=a.onError)==null||y.call(a,R,{streamId:_})}},O.onmessage=l=>{if(console.log("pcDataChannel.onmessage",l),O.readyState==="open"){const[y,R]=l.data.split(":");y===V.StreamReady&&!$&&u()}},w.oniceconnectionstatechange=()=>{var y;T("peerConnection.oniceconnectionstatechange => "+w.iceConnectionState);const l=de(w.iceConnectionState);l!==S.Connected&&((y=a.onConnectionStateChange)==null||y.call(a,l))},w.ontrack=l=>{var y;T("peerConnection.ontrack",l),(y=a.onSrcObjectReady)==null||y.call(a,l.streams[0])},await w.setRemoteDescription(A),T("set remote description OK");const k=await w.createAnswer();return T("create answer OK"),await w.setLocalDescription(k),T("set local description OK"),await o(_,k,M),T("start connection OK"),{speak(l){return d(_,M,l)},async disconnect(){var l,y;if(_){const R=de(w.iceConnectionState);if(w){if(R===S.New){(l=a.onVideoStateChange)==null||l.call(a,j.Stop),clearInterval(p);return}w.close(),w.oniceconnectionstatechange=null,w.onnegotiationneeded=null,w.onicecandidate=null,w.ontrack=null}try{R===S.Connected&&await g(_,M).catch(C=>{})}catch(C){T("Error on close stream connection",C)}(y=a.onVideoStateChange)==null||y.call(a,j.Stop),clearInterval(p)}},sessionId:M,streamId:_}}let X={};function Ae(e){const n=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",s=e.agent.presenter,a={token:e.token||"testKey",distinct_id:e.distinctId||ie(),agentId:e.agent.id,agentType:s.type==="clip"&&s.presenter_id.startsWith("v2_")?"clip_v2":s.type,owner_id:e.agent.owner_id??""};return{...a,isEnabled:e.isEnabled??!0,getRandom:()=>Math.random().toString(16).slice(2),track(t,r){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const{audioPath:i,...o}=r||{},d={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...o,...a,source:n,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",d).then(g=>g.json()).catch(g=>console.error(g))},linkTrack(t,r,i,o){X[t]||(X[t]={events:{},resolvedDependencies:[]}),o.includes(i)||o.push(i);const d=X[t];if(d.events[i]={props:r},d.resolvedDependencies.push(i),o.every(h=>d.resolvedDependencies.includes(h))){const h=o.reduce((m,_)=>d.events[_]?{...m,...d.events[_].props}:m,{});this.track(t,h),d.resolvedDependencies=d.resolvedDependencies.filter(m=>!o.includes(m)),o.forEach(m=>{delete d.events[m]})}}}}function $e(e){var t,r,i,o;const n=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",s=()=>{const d=navigator.platform;return d.toLowerCase().includes("win")?"Windows":d.toLowerCase().includes("mac")?"Mac OS X":d.toLowerCase().includes("linux")?"Linux":"Unknown"},a=e.presenter;return{$os:`${s()}`,isMobile:`${n()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:a.type==="clip"&&a.presenter_id.startsWith("v2_")?"clip_v2":a.type,agentVoice:{voiceId:(r=(t=e.presenter)==null?void 0:t.voice)==null?void 0:r.voice_id,provider:(o=(i=e.presenter)==null?void 0:i.voice)==null?void 0:o.type}}}function Pe(e,n,s){var g,h;const{event:a,...t}=e,{template:r}=(n==null?void 0:n.llm)||{},{language:i}=((g=n==null?void 0:n.presenter)==null?void 0:g.voice)||{},{stitch:o}=(n==null?void 0:n.presenter)||{};return{...t,llm:{...t.llm,template:r},script:{...t.script,provider:{...(h=t==null?void 0:t.script)==null?void 0:h.provider,language:i}},stitch:o,...s}}let z=0;const be=20*1e3;function De(e,n,s,a){var t,r,i,o,d;return console.log("*****getAgentStreamArgs",{chat:n,options:s,greeting:a}),{videoType:ne(e.presenter.type),output_resolution:(t=s==null?void 0:s.streamOptions)==null?void 0:t.outputResolution,session_timeout:(r=s==null?void 0:s.streamOptions)==null?void 0:r.sessionTimeout,stream_warmup:(i=s==null?void 0:s.streamOptions)==null?void 0:i.streamWarmup,compatibility_mode:(o=s==null?void 0:s.streamOptions)==null?void 0:o.compatibilityMode,stream_greeting:(d=s==null?void 0:s.streamOptions)!=null&&d.streamGreeting&&!n?a:void 0}}function le(e){return e===I.Playground?{headers:{[Se]:"true"}}:{}}async function ge(e,n,s,a,t){try{const r=await n.newChat(e,{persist:t??!1},le(a));return s.track("agent-chat",{event:"created",chat_id:r.id,agent_id:e,mode:a}),r}catch(r){try{console.error(r);const i=JSON.parse(r.message);if((i==null?void 0:i.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(i){console.error("Error parsing the error message:",i)}throw new Error("Cannot create new chat")}}function Te(e,n,s,a,t,r){return new Promise(async(i,o)=>{var A;z=0;const d=setTimeout(()=>{h(new Error("Could not connect"))},be),g=v=>{clearTimeout(d),i(v)},h=v=>{clearTimeout(d),o(v)};let m;!t&&n.mode!==I.DirectPlayback&&(m=ge(e.id,s,a,n.mode,n.persistentChat).catch(v=>{h(v)}));const _=await Ie(e.id,De(e,t,n,r),{...n,analytics:a,warmup:(A=n.streamOptions)==null?void 0:A.streamWarmup,callbacks:{...n.callbacks,onConnectionStateChange:async v=>{var M,w,O,$;v===S.Connected?(m&&(t=await m),_?((w=(M=n.callbacks).onConnectionStateChange)==null||w.call(M,v),g({chat:t,streamingManager:_})):t&&h(new Error("Something went wrong while initializing the manager"))):($=(O=n.callbacks).onConnectionStateChange)==null||$.call(O,v)},onVideoStateChange(v){var M,w;(w=(M=n.callbacks).onVideoStateChange)==null||w.call(M,v),z>0&&v===j.Start&&a.linkTrack("agent-video",{event:"start",latency:Date.now()-z},"start",[V.StreamVideoCreated])}}}).catch(h)})}function Oe(e){var s;const n=(s=e.greetings)==null?void 0:s.filter(a=>a.length>0);if(n&&n.length>0){const a=Math.floor(Math.random()*n.length),t=n[a];if(t&&t.length>0)return t}return`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`}function me(e,n){return n&&n.length>0?n:[{content:e,id:H(),role:"assistant",created_at:new Date().toISOString()}]}function Ne(e){if(e.answer!==void 0)return e.answer;let n=0,s="";for(;n in e;)s+=e[n],n++;return s}function Le(e,n,s,a,t){if(!(e===x.Partial||e===x.Answer))return;const r=a.messages[a.messages.length-1];if((r==null?void 0:r.role)!=="assistant")return;const{content:i,sequence:o}=n;e===x.Partial?s[o]=i:s.answer=i;const d=Ne(s);(r.content!==d||e===x.Answer)&&(r.content=d,t==null||t([...a.messages],e))}async function xe(e,n){var w,O,$;let s={},a=!0;const t={messages:[],chatMode:n.mode||I.Functional},r=n.baseURL||W,i=n.wsURL||he,o=n.mixpanelKey||we,d=oe(n.auth,r,n.callbacks.onError),g=await d.getById(e),h=Oe(g);t.messages=me(h,n.initialMessages),(O=(w=n.callbacks).onNewMessage)==null||O.call(w,[...t.messages],"answer");const m=Ae({token:o,agent:g,...n});m.track("agent-sdk",{event:"loaded",...$e(g)});const _={onMessage:(c,u)=>{var p,k;if("content"in u)Le(c,u,s,t,n.callbacks.onNewMessage),c===x.Answer&&m.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const l=V,y=[l.StreamVideoDone,l.StreamVideoError,l.StreamVideoRejected],R=[l.StreamFailed,l.StreamVideoError,l.StreamVideoRejected],C=Pe(u,g,{mode:t.chatMode});if(c=c,c===l.StreamVideoCreated)m.linkTrack("agent-video",C,l.StreamVideoCreated,["start"]);else if(y.includes(c)){const E=c.split("/")[1];m.track("agent-video",{...C,event:E})}R.includes(c)&&((k=(p=n.callbacks).onError)==null||k.call(p,new Error(`Stream failed with event ${c}`),{data:u})),u.event===l.StreamDone&&v()}}};async function A(c){var E,P,F,N,b,L,U;(P=(E=n.callbacks).onConnectionStateChange)==null||P.call(E,S.Connecting),z=0;const u=3;c&&!a&&(delete t.chat,t.messages=me(h),(N=(F=n.callbacks).onNewMessage)==null||N.call(F,[...t.messages],"answer"));const p=n.mode===I.DirectPlayback?Promise.resolve(void 0):Ce(n.auth,i,_);async function k(){for(let B=1;B<=u;B++)try{return await Te(g,n,d,m,t.chat,c?h:void 0)}catch(D){if((D==null?void 0:D.message)!=="Could not connect")throw D}throw new Error("Could not connect")}const l=k().catch(B=>{var D,ue;throw M(I.Maintenance),(ue=(D=n.callbacks).onConnectionStateChange)==null||ue.call(D,S.Fail),B}),[y,{streamingManager:R,chat:C}]=await Promise.all([p,l]);C&&C.id!==((b=t.chat)==null?void 0:b.id)&&((U=(L=n.callbacks).onNewChat)==null||U.call(L,C.id)),t.streamingManager=R,t.socketManager=y,t.chat=C,a=!1,M((C==null?void 0:C.chat_mode)??n.mode??I.Functional)}async function v(){var c,u,p,k;(c=t.socketManager)==null||c.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,(k=(p=n.callbacks).onConnectionStateChange)==null||k.call(p,S.Disconnected)}async function M(c){var u,p;c!==t.chatMode&&(m.track("agent-mode-change",{mode:c}),t.chatMode=c,t.chatMode!==I.Functional&&await v(),(p=(u=n.callbacks).onModeChange)==null||p.call(u,c))}return{agent:g,starterMessages:(($=g.knowledge)==null?void 0:$.starter_message)||[],changeMode:M,async connect(){var c;console.log("*****Connecting"),await A(!0),m.track("agent-chat",{event:"connect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id,mode:t.chatMode})},async reconnect(){var c;console.log("*****Reconnecting"),await v(),await A(!1),m.track("agent-chat",{event:"reconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id,mode:t.chatMode})},async disconnect(){var c;await v(),m.track("agent-chat",{event:"disconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id,mode:t.chatMode})},async chat(c){var p,k,l,y,R,C;const u=H();s={};try{if(z=Date.now(),n.mode===I.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===I.Maintenance)throw new Error("Chat is in maintenance mode");if(![I.TextOnly,I.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.messages.push({id:H(),role:"user",content:c,created_at:new Date(z).toISOString()}),(k=(p=n.callbacks).onNewMessage)==null||k.call(p,[...t.messages],"user"),t.chat||(t.chat=await ge(g.id,d,m,t.chatMode,n.persistentChat),(y=(l=n.callbacks).onNewChat)==null||y.call(l,t.chat.id));const E={id:u,role:"assistant",content:"",created_at:new Date().toISOString(),matches:[]},P=[...t.messages];t.messages.push(E);const F=b=>{var L,U;return d.chat(g.id,b,{sessionId:(L=t.streamingManager)==null?void 0:L.sessionId,streamId:(U=t.streamingManager)==null?void 0:U.streamId,chatMode:t.chatMode,messages:P.map(({matches:B,...D})=>D)},le(t.chatMode))},N=await F(t.chat.id).catch(async b=>{var L;if(!((L=b==null?void 0:b.message)!=null&&L.includes("missing or invalid session_id")))throw b;return await v(),console.log("*****Reconnecting from send chat"),await A(!1),F(t.chat.id)});return m.track("agent-message-send",{event:"success",mode:t.chatMode,messages:t.messages.length+1}),E.context=N.context,E.matches=N.matches,N.result&&(E.content=N.result,m.track("agent-message-received",{latency:Date.now()-z,mode:t.chatMode,messages:t.messages.length}),(C=(R=n.callbacks).onNewMessage)==null||C.call(R,[...t.messages],"answer")),N}catch(E){throw t.messages[t.messages.length-1].id===u&&t.messages.pop(),m.track("agent-message-send",{event:"error",mode:t.chatMode,messages:t.messages.length}),E}},rate(c,u,p){var y,R,C,E;const k=t.messages.find(P=>P.id===c);if(t.chat){if(!k)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const l=((y=k.matches)==null?void 0:y.map(P=>[P.document_id,P.id]))??[];return m.track("agent-rate",{event:p?"update":"create",thumb:u===1?"up":"down",knowledge_id:((R=g.knowledge)==null?void 0:R.id)??"",mode:t.chatMode,matches:l,score:u}),p?d.updateRating(g.id,t.chat.id,p,{knowledge_id:((C=g.knowledge)==null?void 0:C.id)??"",message_id:c,matches:l,score:u}):d.createRating(g.id,t.chat.id,{knowledge_id:((E=g.knowledge)==null?void 0:E.id)??"",message_id:c,matches:l,score:u})},deleteRate(c){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:c,mode:t.chatMode}),d.deleteRating(g.id,t.chat.id,c)},speak(c){if(!t.streamingManager)throw new Error("Please connect to the agent first");function u(){if(typeof c=="string"){if(!g.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:g.presenter.voice,input:c,ssml:!1}}if(c.type==="text"&&!c.provider){if(!g.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:g.presenter.voice,input:c.input,ssml:c.ssml}}return c}const p=u();return m.track("agent-speak",p),t.streamingManager.speak({script:p})}}}function je(e,n,s){const{getById:a}=oe(n,s||W);return a(e)}f.AgentStatus=Z,f.ChatMode=I,f.ChatProgress=x,f.ConnectionState=S,f.DocumentType=te,f.KnowledgeType=ee,f.PlanGroup=Y,f.Providers=re,f.RateState=G,f.StreamEvents=V,f.StreamingState=j,f.Subject=Q,f.UserPlan=K,f.VideoType=q,f.VoiceAccess=ae,f.createAgentManager=xe,f.getAgent=je,f.mapVideoType=ne,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
1
+ (function(f,K){typeof exports=="object"&&typeof module<"u"?K(exports):typeof define=="function"&&define.amd?define(["exports"],K):(f=typeof globalThis<"u"?globalThis:f||self,K(f.index={}))})(this,function(f){"use strict";var K=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(K||{}),Y=(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))(Y||{}),Z=(e=>(e.Created="created",e.Started="started",e.Done="done",e.Error="error",e.Rejected="rejected",e.Ready="ready",e))(Z||{}),G=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(G||{}),I=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e))(I||{}),x=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(x||{}),Q=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(Q||{}),ee=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(ee||{}),te=(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))(te||{}),q=(e=>(e.Clip="clip",e.Talk="talk",e))(q||{});const ne=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var j=(e=>(e.Start="START",e.Stop="STOP",e))(j||{}),V=(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))(V||{}),S=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(S||{}),re=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(re||{}),ae=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(ae||{});const W="https://api.d-id.com",he="wss://notifications.d-id.com",we="79f81a83a67430be2bc0fd61042b8faa",H=()=>Math.random().toString(16).slice(2);function ie(){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 fe=H();function se(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}.${ie()}_${fe}`;throw new Error(`Unknown auth type: ${e}`)}function J(e,n=W,s){const a=async(t,r)=>{const i=await fetch(n+(t!=null&&t.startsWith("/")?t:`/${t}`),{...r,headers:{...r==null?void 0:r.headers,Authorization:se(e),"Content-Type":"application/json"}});if(!i.ok){let o=await i.text().catch(()=>"Failed to fetch");throw s&&s(new Error(o),{url:t,options:r,headers:i.headers}),new Error(o)}return i.json()};return{get(t,r){return a(t,{...r,method:"GET"})},post(t,r,i){return a(t,{...i,body:JSON.stringify(r),method:"POST"})},delete(t,r,i){return a(t,{...i,body:JSON.stringify(r),method:"DELETE"})},patch(t,r,i){return a(t,{...i,body:JSON.stringify(r),method:"PATCH"})}}}function oe(e,n=W,s){const a=J(e,`${n}/agents`,s);return{create(t,r){return a.post("/",t,r)},getAgents(t,r){return a.get(`/${t?`?tag=${t}`:""}`,r).then(i=>i??[])},getById(t,r){return a.get(`/${t}`,r)},delete(t,r){return a.delete(`/${t}`,void 0,r)},update(t,r,i){return a.patch(`/${t}`,r,i)},newChat(t,r,i){return a.post(`/${t}/chat`,r,i)},chat(t,r,i,o){return a.post(`/${t}/chat/${r}`,i,o)},createRating(t,r,i,o){return a.post(`/${t}/chat/${r}/ratings`,i,o)},updateRating(t,r,i,o,d){return a.patch(`/${t}/chat/${r}/ratings/${i}`,o,d)},deleteRating(t,r,i,o){return a.delete(`/${t}/chat/${r}/ratings/${i}`,o)}}}const pe=e=>new Promise(n=>setTimeout(n,e));function ye(e){return new Promise((n,s)=>{const{callbacks:a,host:t,auth:r}=e,{onMessage:i=null,onOpen:o=null,onClose:d=null,onError:g=null}=a||{},h=new WebSocket(`${t}?authorization=${se(r)}`);h.onmessage=i,h.onclose=d,h.onerror=m=>{console.error(m),g==null||g("Websocket failed to connect",m),s(m)},h.onopen=m=>{o==null||o(m),n(h)}})}async function ve(e){const{retries:n=1}=e;let s=null;for(let a=0;(s==null?void 0:s.readyState)!==WebSocket.OPEN;a++)try{s=await ye(e)}catch(t){if(a===n)throw t;await pe(a*500)}return s}async function Ce(e,n,s){const a=s!=null&&s.onMessage?[s.onMessage]:[],t=await ve({auth:e,host:n,callbacks:{onError:s==null?void 0:s.onError,onMessage:r=>{const i=JSON.parse(r.data);a.forEach(o=>o(i.event,i))}}});return{socket:t,disconnect:()=>t.close(),subscribeToEvents:r=>a.push(r)}}const Se="X-Playground-Chat";function _e(e,n,s,a){const t=J(e,`${n}/agents/${s}`,a);return{createStream(r){return t.post("/streams",{output_resolution:r.output_resolution,compatibility_mode:r.compatibility_mode,stream_warmup:r.stream_warmup,session_timeout:r.session_timeout,stream_greeting:r.stream_greeting})},startConnection(r,i,o){return t.post(`/streams/${r}/sdp`,{session_id:o,answer:i})},addIceCandidate(r,i,o){return t.post(`/streams/${r}/ice`,{session_id:o,...i})},sendStreamRequest(r,i,o){return t.post(`/streams/${r}`,{session_id:i,...o})},close(r,i){return t.delete(`/streams/${r}`,{session_id:i})}}}function Me(e,n,s,a){const t=J(e,`${n}/agents/${s}`,a);return{createStream(r,i){return t.post("/streams",{driver_url:r.driver_url,face:r.face,config:r.config,output_resolution:r.output_resolution,compatibility_mode:r.compatibility_mode,stream_warmup:r.stream_warmup,session_timeout:r.session_timeout,stream_greeting:r.stream_greeting},i)},startConnection(r,i,o,d){return t.post(`/streams/${r}/sdp`,{session_id:o,answer:i},d)},addIceCandidate(r,i,o,d){return t.post(`/streams/${r}/ice`,{session_id:o,...i},d)},sendStreamRequest(r,i,o,d){return t.post(`/streams/${r}`,{session_id:i,...o},d)},close(r,i,o){return t.delete(`/streams/${r}`,{session_id:i},o)}}}let ce=!1;const T=(e,n)=>ce&&console.log(e,n),ke=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function de(e){switch(e){case"connected":return S.Connected;case"checking":return S.Connecting;case"failed":return S.Fail;case"new":return S.New;case"closed":return S.Closed;case"disconnected":return S.Disconnected;case"completed":return S.Completed;default:return S.New}}function Re(){let e=0;return n=>{for(const s of n.values())if(s&&s.type==="inbound-rtp"&&s.kind==="video"){const a=s.bytesReceived,t=a-e>0;return e=a,t}return!1}}function Ee(e,n,s=!1,a,t){const i=Math.max(Math.ceil(10),1);let o=0,d=!1;const g=s?1:0;let h=0;const m=Re();return setInterval(async()=>{const _=await e.getStats();m(_)?(o=0,d||(n==null||n(j.Start),h>=g&&!a()&&t(),h++,d=!0)):d&&(o++,o>=i&&(n==null||n(j.Stop),d=!1))},100)}async function Ie(e,n,{debug:s=!1,callbacks:a,auth:t,baseURL:r=W,warmup:i}){ce=s;const{startConnection:o,sendStreamRequest:d,close:g,createStream:h,addIceCandidate:m}=n.videoType===q.Clip?_e(t,r,e,a.onError):Me(t,r,e,a.onError),{id:_,offer:A,ice_servers:v,session_id:M}=await h(n),w=new ke({iceServers:v}),O=w.createDataChannel("JanusDataChannel");if(!M)throw new Error("Could not create session_id");let $=!1;const c=()=>$,u=()=>{var l;$=!0,(l=a.onConnectionStateChange)==null||l.call(a,S.Connected)},p=Ee(w,a.onVideoStateChange,i,c,u);w.onicecandidate=l=>{var y;T("peerConnection.onicecandidate",l);try{l.candidate&&l.candidate.sdpMid&&l.candidate.sdpMLineIndex!==null?m(_,{candidate:l.candidate.candidate,sdpMid:l.candidate.sdpMid,sdpMLineIndex:l.candidate.sdpMLineIndex},M):m(_,{candidate:null},M)}catch(R){(y=a.onError)==null||y.call(a,R,{streamId:_})}},O.onmessage=l=>{if(O.readyState==="open"){const[y,R]=l.data.split(":");y===V.StreamReady&&!$&&u()}},w.oniceconnectionstatechange=()=>{var y;T("peerConnection.oniceconnectionstatechange => "+w.iceConnectionState);const l=de(w.iceConnectionState);l!==S.Connected&&((y=a.onConnectionStateChange)==null||y.call(a,l))},w.ontrack=l=>{var y;T("peerConnection.ontrack",l),(y=a.onSrcObjectReady)==null||y.call(a,l.streams[0])},await w.setRemoteDescription(A),T("set remote description OK");const k=await w.createAnswer();return T("create answer OK"),await w.setLocalDescription(k),T("set local description OK"),await o(_,k,M),T("start connection OK"),{speak(l){return d(_,M,l)},async disconnect(){var l,y;if(_){const R=de(w.iceConnectionState);if(w){if(R===S.New){(l=a.onVideoStateChange)==null||l.call(a,j.Stop),clearInterval(p);return}w.close(),w.oniceconnectionstatechange=null,w.onnegotiationneeded=null,w.onicecandidate=null,w.ontrack=null}try{R===S.Connected&&await g(_,M).catch(C=>{})}catch(C){T("Error on close stream connection",C)}(y=a.onVideoStateChange)==null||y.call(a,j.Stop),clearInterval(p)}},sessionId:M,streamId:_}}let X={};function Ae(e){const n=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",s=e.agent.presenter,a={token:e.token||"testKey",distinct_id:e.distinctId||ie(),agentId:e.agent.id,agentType:s.type==="clip"&&s.presenter_id.startsWith("v2_")?"clip_v2":s.type,owner_id:e.agent.owner_id??""};return{...a,isEnabled:e.isEnabled??!0,getRandom:()=>Math.random().toString(16).slice(2),track(t,r){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const{audioPath:i,...o}=r||{},d={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...o,...a,source:n,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",d).then(g=>g.json()).catch(g=>console.error(g))},linkTrack(t,r,i,o){X[t]||(X[t]={events:{},resolvedDependencies:[]}),o.includes(i)||o.push(i);const d=X[t];if(d.events[i]={props:r},d.resolvedDependencies.push(i),o.every(h=>d.resolvedDependencies.includes(h))){const h=o.reduce((m,_)=>d.events[_]?{...m,...d.events[_].props}:m,{});this.track(t,h),d.resolvedDependencies=d.resolvedDependencies.filter(m=>!o.includes(m)),o.forEach(m=>{delete d.events[m]})}}}}function $e(e){var t,r,i,o;const n=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",s=()=>{const d=navigator.platform;return d.toLowerCase().includes("win")?"Windows":d.toLowerCase().includes("mac")?"Mac OS X":d.toLowerCase().includes("linux")?"Linux":"Unknown"},a=e.presenter;return{$os:`${s()}`,isMobile:`${n()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:a.type==="clip"&&a.presenter_id.startsWith("v2_")?"clip_v2":a.type,agentVoice:{voiceId:(r=(t=e.presenter)==null?void 0:t.voice)==null?void 0:r.voice_id,provider:(o=(i=e.presenter)==null?void 0:i.voice)==null?void 0:o.type}}}function Pe(e,n,s){var g,h;const{event:a,...t}=e,{template:r}=(n==null?void 0:n.llm)||{},{language:i}=((g=n==null?void 0:n.presenter)==null?void 0:g.voice)||{},{stitch:o}=(n==null?void 0:n.presenter)||{};return{...t,llm:{...t.llm,template:r},script:{...t.script,provider:{...(h=t==null?void 0:t.script)==null?void 0:h.provider,language:i}},stitch:o,...s}}let z=0;const be=20*1e3;function De(e,n,s,a){var t,r,i,o,d;return{videoType:ne(e.presenter.type),output_resolution:(t=s==null?void 0:s.streamOptions)==null?void 0:t.outputResolution,session_timeout:(r=s==null?void 0:s.streamOptions)==null?void 0:r.sessionTimeout,stream_warmup:(i=s==null?void 0:s.streamOptions)==null?void 0:i.streamWarmup,compatibility_mode:(o=s==null?void 0:s.streamOptions)==null?void 0:o.compatibilityMode,stream_greeting:(d=s==null?void 0:s.streamOptions)!=null&&d.streamGreeting&&!n?a:void 0}}function le(e){return e===I.Playground?{headers:{[Se]:"true"}}:{}}async function ge(e,n,s,a,t){try{const r=await n.newChat(e,{persist:t??!1},le(a));return s.track("agent-chat",{event:"created",chat_id:r.id,agent_id:e,mode:a}),r}catch(r){try{console.error(r);const i=JSON.parse(r.message);if((i==null?void 0:i.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(i){console.error("Error parsing the error message:",i)}throw new Error("Cannot create new chat")}}function Te(e,n,s,a,t,r){return new Promise(async(i,o)=>{var A;z=0;const d=setTimeout(()=>{h(new Error("Could not connect"))},be),g=v=>{clearTimeout(d),i(v)},h=v=>{clearTimeout(d),o(v)};let m;!t&&n.mode!==I.DirectPlayback&&(m=ge(e.id,s,a,n.mode,n.persistentChat).catch(v=>{h(v)}));const _=await Ie(e.id,De(e,t,n,r),{...n,analytics:a,warmup:(A=n.streamOptions)==null?void 0:A.streamWarmup,callbacks:{...n.callbacks,onConnectionStateChange:async v=>{var M,w,O,$;v===S.Connected?(m&&(t=await m),_?((w=(M=n.callbacks).onConnectionStateChange)==null||w.call(M,v),g({chat:t,streamingManager:_})):t&&h(new Error("Something went wrong while initializing the manager"))):($=(O=n.callbacks).onConnectionStateChange)==null||$.call(O,v)},onVideoStateChange(v){var M,w;(w=(M=n.callbacks).onVideoStateChange)==null||w.call(M,v),z>0&&v===j.Start&&a.linkTrack("agent-video",{event:"start",latency:Date.now()-z},"start",[V.StreamVideoCreated])}}}).catch(h)})}function Oe(e){var s;const n=(s=e.greetings)==null?void 0:s.filter(a=>a.length>0);if(n&&n.length>0){const a=Math.floor(Math.random()*n.length),t=n[a];if(t&&t.length>0)return t}return`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`}function me(e,n){return n&&n.length>0?n:[{content:e,id:H(),role:"assistant",created_at:new Date().toISOString()}]}function Ne(e){if(e.answer!==void 0)return e.answer;let n=0,s="";for(;n in e;)s+=e[n],n++;return s}function Le(e,n,s,a,t){if(!(e===x.Partial||e===x.Answer))return;const r=a.messages[a.messages.length-1];if((r==null?void 0:r.role)!=="assistant")return;const{content:i,sequence:o}=n;e===x.Partial?s[o]=i:s.answer=i;const d=Ne(s);(r.content!==d||e===x.Answer)&&(r.content=d,t==null||t([...a.messages],e))}async function xe(e,n){var w,O,$;let s={},a=!0;const t={messages:[],chatMode:n.mode||I.Functional},r=n.baseURL||W,i=n.wsURL||he,o=n.mixpanelKey||we,d=oe(n.auth,r,n.callbacks.onError),g=await d.getById(e),h=Oe(g);t.messages=me(h,n.initialMessages),(O=(w=n.callbacks).onNewMessage)==null||O.call(w,[...t.messages],"answer");const m=Ae({token:o,agent:g,...n});m.track("agent-sdk",{event:"loaded",...$e(g)});const _={onMessage:(c,u)=>{var p,k;if("content"in u)Le(c,u,s,t,n.callbacks.onNewMessage),c===x.Answer&&m.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const l=V,y=[l.StreamVideoDone,l.StreamVideoError,l.StreamVideoRejected],R=[l.StreamFailed,l.StreamVideoError,l.StreamVideoRejected],C=Pe(u,g,{mode:t.chatMode});if(c=c,c===l.StreamVideoCreated)m.linkTrack("agent-video",C,l.StreamVideoCreated,["start"]);else if(y.includes(c)){const E=c.split("/")[1];m.track("agent-video",{...C,event:E})}R.includes(c)&&((k=(p=n.callbacks).onError)==null||k.call(p,new Error(`Stream failed with event ${c}`),{data:u})),u.event===l.StreamDone&&v()}}};async function A(c){var E,P,F,N,b,L,U;(P=(E=n.callbacks).onConnectionStateChange)==null||P.call(E,S.Connecting),z=0;const u=3;c&&!a&&(delete t.chat,t.messages=me(h),(N=(F=n.callbacks).onNewMessage)==null||N.call(F,[...t.messages],"answer"));const p=n.mode===I.DirectPlayback?Promise.resolve(void 0):Ce(n.auth,i,_);async function k(){for(let B=1;B<=u;B++)try{return await Te(g,n,d,m,t.chat,c?h:void 0)}catch(D){if((D==null?void 0:D.message)!=="Could not connect")throw D}throw new Error("Could not connect")}const l=k().catch(B=>{var D,ue;throw M(I.Maintenance),(ue=(D=n.callbacks).onConnectionStateChange)==null||ue.call(D,S.Fail),B}),[y,{streamingManager:R,chat:C}]=await Promise.all([p,l]);C&&C.id!==((b=t.chat)==null?void 0:b.id)&&((U=(L=n.callbacks).onNewChat)==null||U.call(L,C.id)),t.streamingManager=R,t.socketManager=y,t.chat=C,a=!1,M((C==null?void 0:C.chat_mode)??n.mode??I.Functional)}async function v(){var c,u,p,k;(c=t.socketManager)==null||c.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,(k=(p=n.callbacks).onConnectionStateChange)==null||k.call(p,S.Disconnected)}async function M(c){var u,p;c!==t.chatMode&&(m.track("agent-mode-change",{mode:c}),t.chatMode=c,t.chatMode!==I.Functional&&await v(),(p=(u=n.callbacks).onModeChange)==null||p.call(u,c))}return{agent:g,starterMessages:(($=g.knowledge)==null?void 0:$.starter_message)||[],changeMode:M,async connect(){var c;await A(!0),m.track("agent-chat",{event:"connect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id,mode:t.chatMode})},async reconnect(){var c;await v(),await A(!1),m.track("agent-chat",{event:"reconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id,mode:t.chatMode})},async disconnect(){var c;await v(),m.track("agent-chat",{event:"disconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id,mode:t.chatMode})},async chat(c){var p,k,l,y,R,C;const u=H();s={};try{if(z=Date.now(),n.mode===I.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===I.Maintenance)throw new Error("Chat is in maintenance mode");if(![I.TextOnly,I.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.messages.push({id:H(),role:"user",content:c,created_at:new Date(z).toISOString()}),(k=(p=n.callbacks).onNewMessage)==null||k.call(p,[...t.messages],"user"),t.chat||(t.chat=await ge(g.id,d,m,t.chatMode,n.persistentChat),(y=(l=n.callbacks).onNewChat)==null||y.call(l,t.chat.id));const E={id:u,role:"assistant",content:"",created_at:new Date().toISOString(),matches:[]},P=[...t.messages];t.messages.push(E);const F=b=>{var L,U;return d.chat(g.id,b,{sessionId:(L=t.streamingManager)==null?void 0:L.sessionId,streamId:(U=t.streamingManager)==null?void 0:U.streamId,chatMode:t.chatMode,messages:P.map(({matches:B,...D})=>D)},le(t.chatMode))},N=await F(t.chat.id).catch(async b=>{var L;if(!((L=b==null?void 0:b.message)!=null&&L.includes("missing or invalid session_id")))throw b;return await v(),await A(!1),F(t.chat.id)});return m.track("agent-message-send",{event:"success",mode:t.chatMode,messages:t.messages.length+1}),E.context=N.context,E.matches=N.matches,N.result&&(E.content=N.result,m.track("agent-message-received",{latency:Date.now()-z,mode:t.chatMode,messages:t.messages.length}),(C=(R=n.callbacks).onNewMessage)==null||C.call(R,[...t.messages],"answer")),N}catch(E){throw t.messages[t.messages.length-1].id===u&&t.messages.pop(),m.track("agent-message-send",{event:"error",mode:t.chatMode,messages:t.messages.length}),E}},rate(c,u,p){var y,R,C,E;const k=t.messages.find(P=>P.id===c);if(t.chat){if(!k)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const l=((y=k.matches)==null?void 0:y.map(P=>[P.document_id,P.id]))??[];return m.track("agent-rate",{event:p?"update":"create",thumb:u===1?"up":"down",knowledge_id:((R=g.knowledge)==null?void 0:R.id)??"",mode:t.chatMode,matches:l,score:u}),p?d.updateRating(g.id,t.chat.id,p,{knowledge_id:((C=g.knowledge)==null?void 0:C.id)??"",message_id:c,matches:l,score:u}):d.createRating(g.id,t.chat.id,{knowledge_id:((E=g.knowledge)==null?void 0:E.id)??"",message_id:c,matches:l,score:u})},deleteRate(c){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:c,mode:t.chatMode}),d.deleteRating(g.id,t.chat.id,c)},speak(c){if(!t.streamingManager)throw new Error("Please connect to the agent first");function u(){if(typeof c=="string"){if(!g.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:g.presenter.voice,input:c,ssml:!1}}if(c.type==="text"&&!c.provider){if(!g.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:g.presenter.voice,input:c.input,ssml:c.ssml}}return c}const p=u();return m.track("agent-speak",p),t.streamingManager.speak({script:p})}}}function je(e,n,s){const{getById:a}=oe(n,s||W);return a(e)}f.AgentStatus=Z,f.ChatMode=I,f.ChatProgress=x,f.ConnectionState=S,f.DocumentType=te,f.KnowledgeType=ee,f.PlanGroup=Y,f.Providers=re,f.RateState=G,f.StreamEvents=V,f.StreamingState=j,f.Subject=Q,f.UserPlan=K,f.VideoType=q,f.VoiceAccess=ae,f.createAgentManager=xe,f.getAgent=je,f.mapVideoType=ne,Object.defineProperty(f,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.130",
4
+ "version": "1.0.19-beta.131",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {