@d-id/client-sdk 1.1.6-staging.20 → 1.1.6

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
@@ -66,7 +66,7 @@ var h = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(h || {}
66
66
  const $e = 45 * 1e3, Be = "X-Playground-Chat", Z = "https://api.d-id.com", Le = "wss://notifications.d-id.com", ze = "79f81a83a67430be2bc0fd61042b8faa", de = (e) => new Promise((t) => setTimeout(t, e)), V = (e = 16) => {
67
67
  const t = new Uint8Array(e);
68
68
  return window.crypto.getRandomValues(t), Array.from(t, (n) => n.toString(16).padStart(2, "0")).join("").slice(0, 13);
69
- }, Ne = (e) => [M.TextOnly, M.Playground, M.Maintenance].includes(e), le = (e) => e && [M.DirectPlayback, M.Off].includes(e);
69
+ }, Ne = (e) => [M.TextOnly, M.Playground, M.Maintenance].includes(e), ue = (e) => e && [M.DirectPlayback, M.Off].includes(e);
70
70
  function xe(e, t) {
71
71
  let n;
72
72
  return {
@@ -103,7 +103,7 @@ async function te(e, t) {
103
103
  }
104
104
  throw r;
105
105
  }
106
- function ue() {
106
+ function le() {
107
107
  let e = window.localStorage.getItem("did_external_key_id");
108
108
  if (!e) {
109
109
  let t = V();
@@ -112,13 +112,13 @@ function ue() {
112
112
  return e;
113
113
  }
114
114
  let Fe = V();
115
- function me(e) {
115
+ function fe(e) {
116
116
  if (e.type === "bearer")
117
117
  return `Bearer ${e.token}`;
118
118
  if (e.type === "basic")
119
119
  return `Basic ${btoa(`${e.username}:${e.password}`)}`;
120
120
  if (e.type === "key")
121
- return `Client-Key ${e.clientKey}.${ue()}_${Fe}`;
121
+ return `Client-Key ${e.clientKey}.${le()}_${Fe}`;
122
122
  throw new Error(`Unknown auth type: ${e}`);
123
123
  }
124
124
  const Je = (e) => te(e, {
@@ -136,13 +136,13 @@ function ae(e, t = Z, n) {
136
136
  ...a,
137
137
  headers: {
138
138
  ...a.headers,
139
- Authorization: me(e),
139
+ Authorization: fe(e),
140
140
  "Content-Type": "application/json"
141
141
  }
142
142
  }));
143
143
  if (!s.ok) {
144
- let l = await s.text().catch(() => `Failed to fetch with status ${s.status}`);
145
- const d = new Error(l);
144
+ let u = await s.text().catch(() => `Failed to fetch with status ${s.status}`);
145
+ const d = new Error(u);
146
146
  throw n && !c && n(d, {
147
147
  url: o,
148
148
  options: a,
@@ -181,7 +181,7 @@ function ae(e, t = Z, n) {
181
181
  }
182
182
  };
183
183
  }
184
- function fe(e, t = Z, n) {
184
+ function me(e, t = Z, n) {
185
185
  const r = ae(e, `${t}/agents`, n);
186
186
  return {
187
187
  create(o, i) {
@@ -259,7 +259,7 @@ function Ue(e) {
259
259
  }
260
260
  const Ke = (e) => e.reduce((t, n) => t + n, 0), ie = (e) => Ke(e) / e.length;
261
261
  function He(e, t, n) {
262
- var s, l, d;
262
+ var s, u, d;
263
263
  const {
264
264
  event: r,
265
265
  ...o
@@ -277,7 +277,7 @@ function He(e, t, n) {
277
277
  script: {
278
278
  ...o.script,
279
279
  provider: {
280
- ...(l = o == null ? void 0 : o.script) == null ? void 0 : l.provider,
280
+ ...(u = o == null ? void 0 : o.script) == null ? void 0 : u.provider,
281
281
  language: c
282
282
  }
283
283
  },
@@ -291,7 +291,7 @@ function Ve(e) {
291
291
  const t = window != null && window.hasOwnProperty("DID_AGENTS_API") ? "agents-ui" : "agents-sdk";
292
292
  return {
293
293
  token: e.token || "testKey",
294
- distinct_id: e.distinctId || ue(),
294
+ distinct_id: e.distinctId || le(),
295
295
  agentId: e.agentId,
296
296
  additionalProperties: {},
297
297
  isEnabled: e.isEnabled ?? !0,
@@ -346,12 +346,12 @@ function Ve(e) {
346
346
  if (c.events[o] = {
347
347
  props: r
348
348
  }, c.resolvedDependencies.push(o), i.every((s) => c.resolvedDependencies.includes(s))) {
349
- const s = i.reduce((l, d) => c.events[d] ? {
350
- ...l,
349
+ const s = i.reduce((u, d) => c.events[d] ? {
350
+ ...u,
351
351
  ...c.events[d].props
352
- } : l, {});
353
- this.track(n, s), c.resolvedDependencies = c.resolvedDependencies.filter((l) => !i.includes(l)), i.forEach((l) => {
354
- delete c.events[l];
352
+ } : u, {});
353
+ this.track(n, s), c.resolvedDependencies = c.resolvedDependencies.filter((u) => !i.includes(u)), i.forEach((u) => {
354
+ delete c.events[u];
355
355
  });
356
356
  }
357
357
  }
@@ -366,27 +366,22 @@ function he() {
366
366
  };
367
367
  }
368
368
  const N = he(), re = he();
369
- function pe(e) {
369
+ function we(e) {
370
370
  return e === M.Playground ? {
371
371
  headers: {
372
372
  [Be]: "true"
373
373
  }
374
374
  } : {};
375
375
  }
376
- async function we(e, t, n, r, o = !1, i) {
376
+ async function pe(e, t, n, r, o = !1, i) {
377
377
  try {
378
- return !i && !le(r) && (i = await t.newChat(e.id, {
378
+ return !i && !ue(r) && (i = await t.newChat(e.id, {
379
379
  persist: o
380
- }, pe(r)), n.track("agent-chat", {
380
+ }, we(r)), n.track("agent-chat", {
381
381
  event: "created",
382
- chatId: i.id,
383
- agentId: e.id,
384
- mode: r,
385
- access: e.access,
386
- name: e.preview_name,
387
- ...e.access === "public" ? {
388
- from: "agent-template"
389
- } : {}
382
+ chat_id: i.id,
383
+ agent_id: e.id,
384
+ mode: r
390
385
  })), {
391
386
  chat: i,
392
387
  chatMode: (i == null ? void 0 : i.chat_mode) ?? r
@@ -433,10 +428,10 @@ function Oe(e) {
433
428
  onMessage: c = null,
434
429
  onOpen: a = null,
435
430
  onClose: s = null,
436
- onError: l = null
437
- } = r || {}, d = new WebSocket(`${o}?authorization=${me(i)}`);
431
+ onError: u = null
432
+ } = r || {}, d = new WebSocket(`${o}?authorization=${fe(i)}`);
438
433
  d.onmessage = c, d.onclose = s, d.onerror = (y) => {
439
- console.error(y), l == null || l("Websocket failed to connect", y), n(y);
434
+ console.error(y), u == null || u("Websocket failed to connect", y), n(y);
440
435
  }, d.onopen = (y) => {
441
436
  a == null || a(y), t(d);
442
437
  };
@@ -503,7 +498,7 @@ function rt(e, t, n, r, o) {
503
498
  return {
504
499
  clearQueue: () => i = {},
505
500
  onMessage: (c, a) => {
506
- var s, l;
501
+ var s, u;
507
502
  if ("content" in a)
508
503
  tt(c, a, i, t, n.callbacks.onNewMessage), c === q.Answer && e.track("agent-message-received", {
509
504
  messages: t.messages.length,
@@ -525,7 +520,7 @@ function rt(e, t, n, r, o) {
525
520
  event: x
526
521
  }, c, ["done"]);
527
522
  }
528
- A.includes(c) && ((l = (s = n.callbacks).onError) == null || l.call(s, new Error(`Stream failed with event ${c}`), {
523
+ A.includes(c) && ((u = (s = n.callbacks).onError) == null || u.call(s, new Error(`Stream failed with event ${c}`), {
529
524
  data: a
530
525
  })), a.event === d.StreamDone && o();
531
526
  }
@@ -667,7 +662,7 @@ function ot(e) {
667
662
  return {};
668
663
  }
669
664
  function ct(e, t, n) {
670
- const r = e.map((s, l) => l === 0 ? n ? {
665
+ const r = e.map((s, u) => u === 0 ? n ? {
671
666
  timestamp: s.timestamp,
672
667
  duration: 0,
673
668
  rtt: s.rtt,
@@ -703,22 +698,22 @@ function ct(e, t, n) {
703
698
  freezeDuration: s.freezeDuration
704
699
  } : {
705
700
  timestamp: s.timestamp,
706
- duration: t * l / 1e3,
701
+ duration: t * u / 1e3,
707
702
  rtt: s.rtt,
708
- bytesReceived: s.bytesReceived - e[l - 1].bytesReceived,
709
- bitrate: (s.bytesReceived - e[l - 1].bytesReceived) * 8 / (t / 1e3),
710
- packetsReceived: s.packetsReceived - e[l - 1].packetsReceived,
711
- packetsLost: s.packetsLost - e[l - 1].packetsLost,
712
- framesDropped: s.framesDropped - e[l - 1].framesDropped,
713
- framesDecoded: s.framesDecoded - e[l - 1].framesDecoded,
703
+ bytesReceived: s.bytesReceived - e[u - 1].bytesReceived,
704
+ bitrate: (s.bytesReceived - e[u - 1].bytesReceived) * 8 / (t / 1e3),
705
+ packetsReceived: s.packetsReceived - e[u - 1].packetsReceived,
706
+ packetsLost: s.packetsLost - e[u - 1].packetsLost,
707
+ framesDropped: s.framesDropped - e[u - 1].framesDropped,
708
+ framesDecoded: s.framesDecoded - e[u - 1].framesDecoded,
714
709
  jitter: s.jitter,
715
- jitterBufferDelay: s.jitterBufferDelay - e[l - 1].jitterBufferDelay,
716
- jitterBufferEmittedCount: s.jitterBufferEmittedCount - e[l - 1].jitterBufferEmittedCount,
717
- avgJitterDelayInInterval: (s.jitterBufferDelay - e[l - 1].jitterBufferDelay) / (s.jitterBufferEmittedCount - e[l - 1].jitterBufferEmittedCount),
710
+ jitterBufferDelay: s.jitterBufferDelay - e[u - 1].jitterBufferDelay,
711
+ jitterBufferEmittedCount: s.jitterBufferEmittedCount - e[u - 1].jitterBufferEmittedCount,
712
+ avgJitterDelayInInterval: (s.jitterBufferDelay - e[u - 1].jitterBufferDelay) / (s.jitterBufferEmittedCount - e[u - 1].jitterBufferEmittedCount),
718
713
  framesPerSecond: s.framesPerSecond,
719
- freezeCount: s.freezeCount - e[l - 1].freezeCount,
720
- freezeDuration: s.freezeDuration - e[l - 1].freezeDuration
721
- }), o = st(r), i = o.reduce((s, l) => s + (l.causes.includes("low fps") ? 1 : 0), 0), c = r.filter((s) => !!s.avgJitterDelayInInterval).map((s) => s.avgJitterDelayInInterval), a = r.filter((s) => !!s.rtt).map((s) => s.rtt);
714
+ freezeCount: s.freezeCount - e[u - 1].freezeCount,
715
+ freezeDuration: s.freezeDuration - e[u - 1].freezeDuration
716
+ }), o = st(r), i = o.reduce((s, u) => s + (u.causes.includes("low fps") ? 1 : 0), 0), c = r.filter((s) => !!s.avgJitterDelayInInterval).map((s) => s.avgJitterDelayInInterval), a = r.filter((s) => !!s.rtt).map((s) => s.rtt);
722
717
  return {
723
718
  webRTCStats: {
724
719
  anomalies: o,
@@ -734,8 +729,8 @@ function ct(e, t, n) {
734
729
  resolution: `${e[0].frameWidth}x${e[0].frameHeight}`
735
730
  };
736
731
  }
737
- const ne = 100, dt = Math.max(Math.ceil(400 / ne), 1), lt = 0.25, ut = 0.28;
738
- function mt() {
732
+ const ne = 100, dt = Math.max(Math.ceil(400 / ne), 1), ut = 0.25, lt = 0.28;
733
+ function ft() {
739
734
  let e = 0, t, n, r = 0;
740
735
  return (o) => {
741
736
  for (const i of o.values())
@@ -746,9 +741,9 @@ function mt() {
746
741
  r = d / y;
747
742
  }
748
743
  t = c, n = a;
749
- const s = i.framesDecoded, l = s - e > 0;
744
+ const s = i.framesDecoded, u = s - e > 0;
750
745
  return e = s, {
751
- isReceiving: l,
746
+ isReceiving: u,
752
747
  avgJitterDelayInInterval: r,
753
748
  freezeCount: i.freezeCount
754
749
  };
@@ -759,9 +754,9 @@ function mt() {
759
754
  };
760
755
  };
761
756
  }
762
- function ft(e, t, n, r, o, i = !1) {
763
- let c = [], a, s = 0, l = !1, d = O.Unknown, y = O.Unknown, A = 0, P = 0;
764
- const x = mt();
757
+ function mt(e, t, n, r, o, i = !1) {
758
+ let c = [], a, s = 0, u = !1, d = O.Unknown, y = O.Unknown, A = 0, P = 0;
759
+ const x = ft();
765
760
  return setInterval(async () => {
766
761
  const F = await e.getStats(), {
767
762
  isReceiving: R,
@@ -769,10 +764,10 @@ function ft(e, t, n, r, o, i = !1) {
769
764
  freezeCount: K
770
765
  } = x(F), T = ot(F);
771
766
  if (R)
772
- s = 0, A = K - P, y = U < lt ? O.Strong : U > ut && A > 1 ? O.Weak : d, y !== d && (o == null || o(y), d = y, P += A, A = 0), l || (r == null || r(h.Start), a = c[c.length - 1], c = [], l = !0), c.push(T);
773
- else if (l && (s++, s >= dt)) {
774
- const u = ct(c, ne, a);
775
- r == null || r(h.Stop, u), t() || n(), P = K, l = !1;
767
+ s = 0, A = K - P, y = U < ut ? O.Strong : U > lt && A > 1 ? O.Weak : d, y !== d && (o == null || o(y), d = y, P += A, A = 0), u || (r == null || r(h.Start), a = c[c.length - 1], c = [], u = !0), c.push(T);
768
+ else if (u && (s++, s >= dt)) {
769
+ const l = ct(c, ne, a);
770
+ r == null || r(h.Stop, l), t() || n(), P = K, u = !1;
776
771
  }
777
772
  }, ne);
778
773
  }
@@ -820,7 +815,7 @@ function ht(e) {
820
815
  };
821
816
  }
822
817
  }
823
- function pt({
818
+ function wt({
824
819
  statsSignal: e,
825
820
  dataChannelSignal: t,
826
821
  onVideoStateChange: n,
@@ -828,7 +823,7 @@ function pt({
828
823
  }) {
829
824
  e === h.Start && t === h.Start ? n == null || n(h.Start) : e === h.Stop && t === h.Stop && (n == null || n(h.Stop, r));
830
825
  }
831
- function wt({
826
+ function pt({
832
827
  statsSignal: e,
833
828
  dataChannelSignal: t,
834
829
  onVideoStateChange: n,
@@ -845,12 +840,12 @@ function oe({
845
840
  streamType: o,
846
841
  report: i
847
842
  }) {
848
- o === W.Legacy ? pt({
843
+ o === W.Legacy ? wt({
849
844
  statsSignal: e,
850
845
  dataChannelSignal: t,
851
846
  onVideoStateChange: n,
852
847
  report: i
853
- }) : o === W.Fluent && wt({
848
+ }) : o === W.Fluent && pt({
854
849
  statsSignal: e,
855
850
  dataChannelSignal: t,
856
851
  onVideoStateChange: n,
@@ -867,7 +862,7 @@ async function yt(e, t, {
867
862
  }) {
868
863
  var J;
869
864
  ye = n;
870
- let a = !1, s = !1, l = h.Stop, d = h.Stop;
865
+ let a = !1, s = !1, u = h.Stop, d = h.Stop;
871
866
  const {
872
867
  startConnection: y,
873
868
  sendStreamRequest: A,
@@ -879,45 +874,45 @@ async function yt(e, t, {
879
874
  offer: U,
880
875
  ice_servers: K,
881
876
  session_id: T,
882
- fluent: u,
883
- interrupt_enabled: p
877
+ fluent: l,
878
+ interrupt_enabled: w
884
879
  } = await x(t);
885
880
  (J = r.onStreamCreated) == null || J.call(r, {
886
881
  stream_id: R,
887
882
  session_id: T,
888
883
  agent_id: e
889
884
  });
890
- const f = new gt({
885
+ const m = new gt({
891
886
  iceServers: K
892
- }), D = f.createDataChannel("JanusDataChannel");
887
+ }), D = m.createDataChannel("JanusDataChannel");
893
888
  if (!T)
894
889
  throw new Error("Could not create session_id");
895
- const v = u ? W.Fluent : W.Legacy;
890
+ const v = l ? W.Fluent : W.Legacy;
896
891
  c.enrich({
897
892
  "stream-type": v
898
893
  });
899
- const w = t.stream_warmup && !u, _ = () => a, $ = () => {
900
- var m;
901
- a = !0, s && ((m = r.onConnectionStateChange) == null || m.call(r, I.Connected));
902
- }, B = ft(f, _, $, (m, g) => oe({
903
- statsSignal: d = m,
904
- dataChannelSignal: v === W.Legacy ? l : void 0,
894
+ const p = t.stream_warmup && !l, _ = () => a, $ = () => {
895
+ var f;
896
+ a = !0, s && ((f = r.onConnectionStateChange) == null || f.call(r, I.Connected));
897
+ }, B = mt(m, _, $, (f, g) => oe({
898
+ statsSignal: d = f,
899
+ dataChannelSignal: v === W.Legacy ? u : void 0,
905
900
  onVideoStateChange: r.onVideoStateChange,
906
901
  onAgentActivityStateChange: r.onAgentActivityStateChange,
907
902
  report: g,
908
903
  streamType: v
909
- }), (m) => {
904
+ }), (f) => {
910
905
  var g;
911
- return (g = r.onConnectivityStateChange) == null ? void 0 : g.call(r, m);
912
- }, w);
913
- f.onicecandidate = (m) => {
906
+ return (g = r.onConnectivityStateChange) == null ? void 0 : g.call(r, f);
907
+ }, p);
908
+ m.onicecandidate = (f) => {
914
909
  var g;
915
- b("peerConnection.onicecandidate", m);
910
+ b("peerConnection.onicecandidate", f);
916
911
  try {
917
- m.candidate && m.candidate.sdpMid && m.candidate.sdpMLineIndex !== null ? F(R, {
918
- candidate: m.candidate.candidate,
919
- sdpMid: m.candidate.sdpMid,
920
- sdpMLineIndex: m.candidate.sdpMLineIndex
912
+ f.candidate && f.candidate.sdpMid && f.candidate.sdpMLineIndex !== null ? F(R, {
913
+ candidate: f.candidate.candidate,
914
+ sdpMid: f.candidate.sdpMid,
915
+ sdpMLineIndex: f.candidate.sdpMLineIndex
921
916
  }, T) : F(R, {
922
917
  candidate: null
923
918
  }, T);
@@ -927,26 +922,26 @@ async function yt(e, t, {
927
922
  });
928
923
  }
929
924
  }, D.onopen = () => {
930
- s = !0, (!w || a) && $();
925
+ s = !0, (!p || a) && $();
931
926
  };
932
- const k = (m) => {
927
+ const k = (f) => {
933
928
  var g;
934
- (g = r.onVideoIdChange) == null || g.call(r, m);
929
+ (g = r.onVideoIdChange) == null || g.call(r, f);
935
930
  };
936
- function E(m, g) {
937
- if (m === j.StreamStarted && typeof g == "object" && "metadata" in g) {
931
+ function E(f, g) {
932
+ if (f === j.StreamStarted && typeof g == "object" && "metadata" in g) {
938
933
  const S = g.metadata;
939
934
  k(S.videoId);
940
935
  }
941
- m === j.StreamDone && k(null), l = m === j.StreamStarted ? h.Start : h.Stop, oe({
936
+ f === j.StreamDone && k(null), u = f === j.StreamStarted ? h.Start : h.Stop, oe({
942
937
  statsSignal: v === W.Legacy ? d : void 0,
943
- dataChannelSignal: l,
938
+ dataChannelSignal: u,
944
939
  onVideoStateChange: r.onVideoStateChange,
945
940
  onAgentActivityStateChange: r.onAgentActivityStateChange,
946
941
  streamType: v
947
942
  });
948
943
  }
949
- function C(m, g) {
944
+ function C(f, g) {
950
945
  const S = typeof g == "string" ? g : g == null ? void 0 : g.metadata;
951
946
  S && c.enrich({
952
947
  streamMetadata: S
@@ -959,44 +954,44 @@ async function yt(e, t, {
959
954
  [j.StreamDone]: E,
960
955
  [j.StreamReady]: C
961
956
  };
962
- D.onmessage = (m) => {
957
+ D.onmessage = (f) => {
963
958
  var Y;
964
959
  const {
965
960
  subject: g,
966
961
  data: S
967
- } = ht(m.data);
962
+ } = ht(f.data);
968
963
  (Y = L[g]) == null || Y.call(L, g, S);
969
- }, f.oniceconnectionstatechange = () => {
964
+ }, m.oniceconnectionstatechange = () => {
970
965
  var g;
971
- b("peerConnection.oniceconnectionstatechange => " + f.iceConnectionState);
972
- const m = se(f.iceConnectionState);
973
- m !== I.Connected && ((g = r.onConnectionStateChange) == null || g.call(r, m));
974
- }, f.ontrack = (m) => {
966
+ b("peerConnection.oniceconnectionstatechange => " + m.iceConnectionState);
967
+ const f = se(m.iceConnectionState);
968
+ f !== I.Connected && ((g = r.onConnectionStateChange) == null || g.call(r, f));
969
+ }, m.ontrack = (f) => {
975
970
  var g;
976
- b("peerConnection.ontrack", m), (g = r.onSrcObjectReady) == null || g.call(r, m.streams[0]);
977
- }, await f.setRemoteDescription(U), b("set remote description OK");
978
- const z = await f.createAnswer();
979
- return b("create answer OK"), await f.setLocalDescription(z), b("set local description OK"), await y(R, z, T), b("start connection OK"), {
971
+ b("peerConnection.ontrack", f), (g = r.onSrcObjectReady) == null || g.call(r, f.streams[0]);
972
+ }, await m.setRemoteDescription(U), b("set remote description OK");
973
+ const z = await m.createAnswer();
974
+ return b("create answer OK"), await m.setLocalDescription(z), b("set local description OK"), await y(R, z, T), b("start connection OK"), {
980
975
  /**
981
976
  * Method to send request to server to get clip or talk depend on you payload
982
977
  * @param payload
983
978
  */
984
- speak(m) {
985
- return A(R, T, m);
979
+ speak(f) {
980
+ return A(R, T, f);
986
981
  },
987
982
  /**
988
983
  * Method to close RTC connection
989
984
  */
990
985
  async disconnect() {
991
- var m;
986
+ var f;
992
987
  if (R) {
993
- const g = se(f.iceConnectionState);
994
- if (f) {
988
+ const g = se(m.iceConnectionState);
989
+ if (m) {
995
990
  if (g === I.New) {
996
991
  clearInterval(B);
997
992
  return;
998
993
  }
999
- f.close(), f.oniceconnectionstatechange = null, f.onnegotiationneeded = null, f.onicecandidate = null, f.ontrack = null;
994
+ m.close(), m.oniceconnectionstatechange = null, m.onnegotiationneeded = null, m.onicecandidate = null, m.ontrack = null;
1000
995
  }
1001
996
  try {
1002
997
  g === I.Connected && await P(R, T).catch((S) => {
@@ -1004,13 +999,13 @@ async function yt(e, t, {
1004
999
  } catch (S) {
1005
1000
  b("Error on close stream connection", S);
1006
1001
  }
1007
- (m = r.onAgentActivityStateChange) == null || m.call(r, X.Idle), clearInterval(B);
1002
+ (f = r.onAgentActivityStateChange) == null || f.call(r, X.Idle), clearInterval(B);
1008
1003
  }
1009
1004
  },
1010
1005
  /**
1011
1006
  * Method to send data channel messages to the server
1012
1007
  */
1013
- sendDataChannelMessage(m) {
1008
+ sendDataChannelMessage(f) {
1014
1009
  var g, S;
1015
1010
  if (!a || D.readyState !== "open") {
1016
1011
  b("Data channel is not ready for sending messages"), (g = r.onError) == null || g.call(r, new Error("Data channel is not ready for sending messages"), {
@@ -1019,7 +1014,7 @@ async function yt(e, t, {
1019
1014
  return;
1020
1015
  }
1021
1016
  try {
1022
- D.send(m);
1017
+ D.send(f);
1023
1018
  } catch (Y) {
1024
1019
  b("Error sending data channel message", Y), (S = r.onError) == null || S.call(r, Y, {
1025
1020
  streamId: R
@@ -1035,7 +1030,7 @@ async function yt(e, t, {
1035
1030
  */
1036
1031
  streamId: R,
1037
1032
  streamType: v,
1038
- interruptAvailable: p
1033
+ interruptAvailable: w
1039
1034
  };
1040
1035
  }
1041
1036
  function vt(e, t) {
@@ -1104,8 +1099,8 @@ function St(e, t, n) {
1104
1099
  (s = (a = t.callbacks).onConnectionStateChange) == null || s.call(a, c), c === I.Connected && r(i);
1105
1100
  },
1106
1101
  onVideoStateChange: (c, a) => {
1107
- var s, l;
1108
- (l = (s = t.callbacks).onVideoStateChange) == null || l.call(s, c), kt(c, e, a, n, i.streamType);
1102
+ var s, u;
1103
+ (u = (s = t.callbacks).onVideoStateChange) == null || u.call(s, c), kt(c, e, a, n, i.streamType);
1109
1104
  },
1110
1105
  onAgentActivityStateChange: (c) => {
1111
1106
  var a, s;
@@ -1119,12 +1114,12 @@ function St(e, t, n) {
1119
1114
  });
1120
1115
  }
1121
1116
  async function It(e, t, n, r, o) {
1122
- var s, l, d, y;
1117
+ var s, u, d, y;
1123
1118
  const {
1124
1119
  chat: i,
1125
1120
  chatMode: c
1126
- } = await we(e, n, r, t.mode, t.persistentChat, o);
1127
- if (c && c !== t.mode && (t.mode = c, (l = (s = t.callbacks).onModeChange) == null || l.call(s, c), c === M.TextOnly))
1121
+ } = await pe(e, n, r, t.mode, t.persistentChat, o);
1122
+ if (c && c !== t.mode && (t.mode = c, (u = (s = t.callbacks).onModeChange) == null || u.call(s, c), c === M.TextOnly))
1128
1123
  return (y = (d = t.callbacks).onError) == null || y.call(d, new Ce(c)), {
1129
1124
  chat: i
1130
1125
  };
@@ -1149,36 +1144,36 @@ async function Et(e, t) {
1149
1144
  s.track("agent-sdk", {
1150
1145
  event: "init"
1151
1146
  });
1152
- const l = fe(t.auth, c, t.callbacks.onError), d = await l.getById(e);
1147
+ const u = me(t.auth, c, t.callbacks.onError), d = await u.getById(e);
1153
1148
  s.enrich(Ue(d));
1154
1149
  const {
1155
1150
  onMessage: y,
1156
1151
  clearQueue: A
1157
1152
  } = rt(s, a, t, d, () => {
1158
- var u;
1159
- return (u = a.socketManager) == null ? void 0 : u.disconnect();
1153
+ var l;
1154
+ return (l = a.socketManager) == null ? void 0 : l.disconnect();
1160
1155
  });
1161
1156
  a.messages = Xe(t.initialMessages), (K = (U = t.callbacks).onNewMessage) == null || K.call(U, [...a.messages], "answer");
1162
- const P = (u) => {
1163
- r = u;
1157
+ const P = (l) => {
1158
+ r = l;
1164
1159
  };
1165
1160
  s.track("agent-sdk", {
1166
1161
  event: "loaded",
1167
1162
  ...We(d)
1168
1163
  });
1169
- async function x(u) {
1164
+ async function x(l) {
1170
1165
  var _, $, B, k, E, C, L;
1171
- ($ = (_ = t.callbacks).onConnectionStateChange) == null || $.call(_, I.Connecting), N.reset(), u && !n && (delete a.chat, (k = (B = t.callbacks).onNewMessage) == null || k.call(B, [...a.messages], "answer"));
1172
- const p = t.mode === M.DirectPlayback ? Promise.resolve(void 0) : Ge(t.auth, i, {
1166
+ ($ = (_ = t.callbacks).onConnectionStateChange) == null || $.call(_, I.Connecting), N.reset(), l && !n && (delete a.chat, (k = (B = t.callbacks).onNewMessage) == null || k.call(B, [...a.messages], "answer"));
1167
+ const w = t.mode === M.DirectPlayback ? Promise.resolve(void 0) : Ge(t.auth, i, {
1173
1168
  onMessage: y,
1174
1169
  onError: t.callbacks.onError
1175
- }), f = te(() => It(d, {
1170
+ }), m = te(() => It(d, {
1176
1171
  ...t,
1177
1172
  callbacks: {
1178
1173
  ...t.callbacks,
1179
1174
  onVideoIdChange: P
1180
1175
  }
1181
- }, l, s, a.chat), {
1176
+ }, u, s, a.chat), {
1182
1177
  limit: 3,
1183
1178
  timeout: $e,
1184
1179
  timeoutErrorMessage: "Timeout initializing the stream",
@@ -1186,88 +1181,73 @@ async function Et(e, t) {
1186
1181
  shouldRetryFn: (z) => (z == null ? void 0 : z.message) !== "Could not connect" && z.status !== 429,
1187
1182
  delayMs: 1e3
1188
1183
  }).catch((z) => {
1189
- var J, m;
1190
- throw R(M.Maintenance), (m = (J = t.callbacks).onConnectionStateChange) == null || m.call(J, I.Fail), z;
1184
+ var J, f;
1185
+ throw R(M.Maintenance), (f = (J = t.callbacks).onConnectionStateChange) == null || f.call(J, I.Fail), z;
1191
1186
  }), [D, {
1192
1187
  streamingManager: v,
1193
- chat: w
1194
- }] = await Promise.all([p, f]);
1195
- w && w.id !== ((E = a.chat) == null ? void 0 : E.id) && ((L = (C = t.callbacks).onNewChat) == null || L.call(C, w.id)), a.streamingManager = v, a.socketManager = D, a.chat = w, n = !1, R((w == null ? void 0 : w.chat_mode) ?? t.mode ?? M.Functional);
1188
+ chat: p
1189
+ }] = await Promise.all([w, m]);
1190
+ p && p.id !== ((E = a.chat) == null ? void 0 : E.id) && ((L = (C = t.callbacks).onNewChat) == null || L.call(C, p.id)), a.streamingManager = v, a.socketManager = D, a.chat = p, n = !1, R((p == null ? void 0 : p.chat_mode) ?? t.mode ?? M.Functional);
1196
1191
  }
1197
1192
  async function F() {
1198
- var u, p, f, D;
1199
- (u = a.socketManager) == null || u.disconnect(), await ((p = a.streamingManager) == null ? void 0 : p.disconnect()), delete a.streamingManager, delete a.socketManager, (D = (f = t.callbacks).onConnectionStateChange) == null || D.call(f, I.Disconnected);
1193
+ var l, w, m, D;
1194
+ (l = a.socketManager) == null || l.disconnect(), await ((w = a.streamingManager) == null ? void 0 : w.disconnect()), delete a.streamingManager, delete a.socketManager, (D = (m = t.callbacks).onConnectionStateChange) == null || D.call(m, I.Disconnected);
1200
1195
  }
1201
- async function R(u) {
1202
- var p, f;
1203
- u !== a.chatMode && (s.track("agent-mode-change", {
1204
- mode: u
1205
- }), a.chatMode = u, a.chatMode !== M.Functional && await F(), (f = (p = t.callbacks).onModeChange) == null || f.call(p, u));
1196
+ async function R(l) {
1197
+ var w, m;
1198
+ l !== a.chatMode && (s.track("agent-mode-change", {
1199
+ mode: l
1200
+ }), a.chatMode = l, a.chatMode !== M.Functional && await F(), (m = (w = t.callbacks).onModeChange) == null || m.call(w, l));
1206
1201
  }
1207
1202
  return {
1208
1203
  agent: d,
1209
1204
  getStreamType: () => {
1210
- var u;
1211
- return (u = a.streamingManager) == null ? void 0 : u.streamType;
1205
+ var l;
1206
+ return (l = a.streamingManager) == null ? void 0 : l.streamType;
1212
1207
  },
1213
1208
  getIsInterruptAvailable: () => {
1214
- var u;
1215
- return ((u = a.streamingManager) == null ? void 0 : u.interruptAvailable) ?? !1;
1209
+ var l;
1210
+ return ((l = a.streamingManager) == null ? void 0 : l.interruptAvailable) ?? !1;
1216
1211
  },
1217
1212
  starterMessages: ((T = d.knowledge) == null ? void 0 : T.starter_message) || [],
1218
- getSTTToken: () => l.getSTTToken(d.id),
1213
+ getSTTToken: () => u.getSTTToken(d.id),
1219
1214
  changeMode: R,
1220
1215
  enrichAnalytics: s.enrich,
1221
1216
  async connect() {
1222
- var u;
1217
+ var l;
1223
1218
  await x(!0), s.track("agent-chat", {
1224
1219
  event: "connect",
1225
- chatId: (u = a.chat) == null ? void 0 : u.id,
1220
+ chatId: (l = a.chat) == null ? void 0 : l.id,
1226
1221
  agentId: d.id,
1227
- mode: a.chatMode,
1228
- access: d.access,
1229
- name: d.preview_name,
1230
- ...d.access === "public" ? {
1231
- from: "agent-template"
1232
- } : {}
1222
+ mode: a.chatMode
1233
1223
  });
1234
1224
  },
1235
1225
  async reconnect() {
1236
- var u;
1226
+ var l;
1237
1227
  await F(), await x(!1), s.track("agent-chat", {
1238
1228
  event: "reconnect",
1239
- chatId: (u = a.chat) == null ? void 0 : u.id,
1229
+ chatId: (l = a.chat) == null ? void 0 : l.id,
1240
1230
  agentId: d.id,
1241
- mode: a.chatMode,
1242
- access: d.access,
1243
- name: d.preview_name,
1244
- ...d.access === "public" ? {
1245
- from: "agent-template"
1246
- } : {}
1231
+ mode: a.chatMode
1247
1232
  });
1248
1233
  },
1249
1234
  async disconnect() {
1250
- var u;
1235
+ var l;
1251
1236
  await F(), s.track("agent-chat", {
1252
1237
  event: "disconnect",
1253
- chatId: (u = a.chat) == null ? void 0 : u.id,
1238
+ chatId: (l = a.chat) == null ? void 0 : l.id,
1254
1239
  agentId: d.id,
1255
- mode: a.chatMode,
1256
- access: d.access,
1257
- name: d.preview_name,
1258
- ...d.access === "public" ? {
1259
- from: "agent-template"
1260
- } : {}
1240
+ mode: a.chatMode
1261
1241
  });
1262
1242
  },
1263
- async chat(u) {
1264
- var v, w, _, $, B;
1265
- const p = () => {
1266
- if (le(t.mode))
1243
+ async chat(l) {
1244
+ var v, p, _, $, B;
1245
+ const w = () => {
1246
+ if (ue(t.mode))
1267
1247
  throw new H(`${t.mode} is enabled, chat is disabled`);
1268
- if (u.length >= 800)
1248
+ if (l.length >= 800)
1269
1249
  throw new H("Message cannot be more than 800 characters");
1270
- if (u.length === 0)
1250
+ if (l.length === 0)
1271
1251
  throw new H("Message cannot be empty");
1272
1252
  if (a.chatMode === M.Maintenance)
1273
1253
  throw new H("Chat is in maintenance mode");
@@ -1277,10 +1257,10 @@ async function Et(e, t) {
1277
1257
  if (!a.chat)
1278
1258
  throw new H("Chat is not initialized");
1279
1259
  }
1280
- }, f = async () => {
1260
+ }, m = async () => {
1281
1261
  var k, E;
1282
1262
  if (!a.chat) {
1283
- const C = await we(d, l, s, a.chatMode, t.persistentChat);
1263
+ const C = await pe(d, u, s, a.chatMode, t.persistentChat);
1284
1264
  if (!C.chat)
1285
1265
  throw new De(a.chatMode, !!t.persistentChat);
1286
1266
  a.chat = C.chat, (E = (k = t.callbacks).onNewChat) == null || E.call(k, a.chat.id);
@@ -1288,7 +1268,7 @@ async function Et(e, t) {
1288
1268
  return a.chat.id;
1289
1269
  }, D = async (k, E) => te(() => {
1290
1270
  var C, L;
1291
- return l.chat(d.id, E, {
1271
+ return u.chat(d.id, E, {
1292
1272
  chatMode: a.chatMode,
1293
1273
  streamId: (C = a.streamingManager) == null ? void 0 : C.streamId,
1294
1274
  sessionId: (L = a.streamingManager) == null ? void 0 : L.sessionId,
@@ -1297,28 +1277,28 @@ async function Et(e, t) {
1297
1277
  ...J
1298
1278
  }) => J)
1299
1279
  }, {
1300
- ...pe(a.chatMode),
1280
+ ...we(a.chatMode),
1301
1281
  skipErrorHandler: !0
1302
1282
  });
1303
1283
  }, {
1304
1284
  limit: 2,
1305
1285
  shouldRetryFn: (C) => {
1306
- var J, m, g, S;
1286
+ var J, f, g, S;
1307
1287
  const L = (J = C == null ? void 0 : C.message) == null ? void 0 : J.includes("missing or invalid session_id");
1308
- return !((m = C == null ? void 0 : C.message) == null ? void 0 : m.includes("Stream Error")) && !L ? ((S = (g = t.callbacks).onError) == null || S.call(g, C), !1) : !0;
1288
+ return !((f = C == null ? void 0 : C.message) == null ? void 0 : f.includes("Stream Error")) && !L ? ((S = (g = t.callbacks).onError) == null || S.call(g, C), !1) : !0;
1309
1289
  },
1310
1290
  onRetry: async () => {
1311
1291
  await F(), await x(!1);
1312
1292
  }
1313
1293
  });
1314
1294
  try {
1315
- A(), p(), a.messages.push({
1295
+ A(), w(), a.messages.push({
1316
1296
  id: V(),
1317
1297
  role: "user",
1318
- content: u,
1298
+ content: l,
1319
1299
  created_at: new Date(N.update()).toISOString()
1320
- }), (w = (v = t.callbacks).onNewMessage) == null || w.call(v, [...a.messages], "user");
1321
- const k = await f(), E = await D([...a.messages], k);
1300
+ }), (p = (v = t.callbacks).onNewMessage) == null || p.call(v, [...a.messages], "user");
1301
+ const k = await m(), E = await D([...a.messages], k);
1322
1302
  return a.messages.push({
1323
1303
  id: V(),
1324
1304
  role: "assistant",
@@ -1343,77 +1323,77 @@ async function Et(e, t) {
1343
1323
  }), k;
1344
1324
  }
1345
1325
  },
1346
- rate(u, p, f) {
1347
- var w, _, $, B;
1348
- const D = a.messages.find((k) => k.id === u);
1326
+ rate(l, w, m) {
1327
+ var p, _, $, B;
1328
+ const D = a.messages.find((k) => k.id === l);
1349
1329
  if (a.chat) {
1350
1330
  if (!D)
1351
1331
  throw new Error("Message not found");
1352
1332
  } else
1353
1333
  throw new Error("Chat is not initialized");
1354
- const v = ((w = D.matches) == null ? void 0 : w.map((k) => [k.document_id, k.id])) ?? [];
1334
+ const v = ((p = D.matches) == null ? void 0 : p.map((k) => [k.document_id, k.id])) ?? [];
1355
1335
  return s.track("agent-rate", {
1356
- event: f ? "update" : "create",
1357
- thumb: p === 1 ? "up" : "down",
1336
+ event: m ? "update" : "create",
1337
+ thumb: w === 1 ? "up" : "down",
1358
1338
  knowledge_id: ((_ = d.knowledge) == null ? void 0 : _.id) ?? "",
1359
1339
  mode: a.chatMode,
1360
1340
  matches: v,
1361
- score: p
1362
- }), f ? l.updateRating(d.id, a.chat.id, f, {
1341
+ score: w
1342
+ }), m ? u.updateRating(d.id, a.chat.id, m, {
1363
1343
  knowledge_id: (($ = d.knowledge) == null ? void 0 : $.id) ?? "",
1364
- message_id: u,
1344
+ message_id: l,
1365
1345
  matches: v,
1366
- score: p
1367
- }) : l.createRating(d.id, a.chat.id, {
1346
+ score: w
1347
+ }) : u.createRating(d.id, a.chat.id, {
1368
1348
  knowledge_id: ((B = d.knowledge) == null ? void 0 : B.id) ?? "",
1369
- message_id: u,
1349
+ message_id: l,
1370
1350
  matches: v,
1371
- score: p
1351
+ score: w
1372
1352
  });
1373
1353
  },
1374
- deleteRate(u) {
1375
- var p;
1354
+ deleteRate(l) {
1355
+ var w;
1376
1356
  if (!a.chat)
1377
1357
  throw new Error("Chat is not initialized");
1378
1358
  return s.track("agent-rate-delete", {
1379
1359
  type: "text",
1380
- chat_id: (p = a.chat) == null ? void 0 : p.id,
1381
- id: u,
1360
+ chat_id: (w = a.chat) == null ? void 0 : w.id,
1361
+ id: l,
1382
1362
  mode: a.chatMode
1383
- }), l.deleteRating(d.id, a.chat.id, u);
1363
+ }), u.deleteRating(d.id, a.chat.id, l);
1384
1364
  },
1385
- async speak(u) {
1386
- var v, w, _;
1387
- function p() {
1388
- if (typeof u == "string") {
1365
+ async speak(l) {
1366
+ var v, p, _;
1367
+ function w() {
1368
+ if (typeof l == "string") {
1389
1369
  if (!d.presenter.voice)
1390
1370
  throw new Error("Presenter voice is not initialized");
1391
1371
  return {
1392
1372
  type: "text",
1393
1373
  provider: d.presenter.voice,
1394
- input: u,
1374
+ input: l,
1395
1375
  ssml: !1
1396
1376
  };
1397
1377
  }
1398
- if (u.type === "text" && !u.provider) {
1378
+ if (l.type === "text" && !l.provider) {
1399
1379
  if (!d.presenter.voice)
1400
1380
  throw new Error("Presenter voice is not initialized");
1401
1381
  return {
1402
1382
  type: "text",
1403
1383
  provider: d.presenter.voice,
1404
- input: u.input,
1405
- ssml: u.ssml
1384
+ input: l.input,
1385
+ ssml: l.ssml
1406
1386
  };
1407
1387
  }
1408
- return u;
1388
+ return l;
1409
1389
  }
1410
- const f = p();
1411
- if (s.track("agent-speak", f), N.update(), a.messages && f.type === "text" && (a.messages.push({
1390
+ const m = w();
1391
+ if (s.track("agent-speak", m), N.update(), a.messages && m.type === "text" && (a.messages.push({
1412
1392
  id: V(),
1413
1393
  role: "assistant",
1414
- content: f.input,
1394
+ content: m.input,
1415
1395
  created_at: new Date(N.get(!0)).toISOString()
1416
- }), (w = (v = t.callbacks).onNewMessage) == null || w.call(v, [...a.messages], "answer")), Ne(a.chatMode))
1396
+ }), (p = (v = t.callbacks).onNewMessage) == null || p.call(v, [...a.messages], "answer")), Ne(a.chatMode))
1417
1397
  return {
1418
1398
  duration: 0,
1419
1399
  video_id: "",
@@ -1422,7 +1402,7 @@ async function Et(e, t) {
1422
1402
  if (!a.streamingManager)
1423
1403
  throw new Error("Please connect to the agent first");
1424
1404
  return a.streamingManager.speak({
1425
- script: f,
1405
+ script: m,
1426
1406
  metadata: {
1427
1407
  chat_id: (_ = a.chat) == null ? void 0 : _.id,
1428
1408
  agent_id: d.id
@@ -1430,13 +1410,13 @@ async function Et(e, t) {
1430
1410
  });
1431
1411
  },
1432
1412
  async interrupt({
1433
- type: u
1413
+ type: l
1434
1414
  }) {
1435
- var f, D, v, w, _;
1436
- Ye(a.streamingManager, (f = a.streamingManager) == null ? void 0 : f.streamType, r);
1437
- const p = a.messages[a.messages.length - 1];
1415
+ var m, D, v, p, _;
1416
+ Ye(a.streamingManager, (m = a.streamingManager) == null ? void 0 : m.streamType, r);
1417
+ const w = a.messages[a.messages.length - 1];
1438
1418
  s.track("agent-video-interrupt", {
1439
- type: u || "click",
1419
+ type: l || "click",
1440
1420
  stream_id: (D = a.streamingManager) == null ? void 0 : D.streamId,
1441
1421
  agent_id: d.id,
1442
1422
  owner_id: d.owner_id,
@@ -1444,14 +1424,14 @@ async function Et(e, t) {
1444
1424
  message_duration_to_interrupt: N.get(!0),
1445
1425
  chat_id: (v = a.chat) == null ? void 0 : v.id,
1446
1426
  mode: a.chatMode
1447
- }), p.interrupted = !0, (_ = (w = t.callbacks).onNewMessage) == null || _.call(w, [...a.messages], "answer"), Qe(a.streamingManager, r);
1427
+ }), w.interrupted = !0, (_ = (p = t.callbacks).onNewMessage) == null || _.call(p, [...a.messages], "answer"), Qe(a.streamingManager, r);
1448
1428
  }
1449
1429
  };
1450
1430
  }
1451
1431
  function Mt(e, t, n) {
1452
1432
  const {
1453
1433
  getById: r
1454
- } = fe(t, n || Z);
1434
+ } = me(t, n || Z);
1455
1435
  return r(e);
1456
1436
  }
1457
1437
  export {
@@ -1 +1 @@
1
- (function(h,M){typeof exports=="object"&&typeof module<"u"?M(exports):typeof define=="function"&&define.amd?define(["exports"],M):(h=typeof globalThis<"u"?globalThis:h||self,M(h.index={}))})(this,function(h){"use strict";var Et=Object.defineProperty;var Mt=(h,M,x)=>M in h?Et(h,M,{enumerable:!0,configurable:!0,writable:!0,value:x}):h[M]=x;var te=(h,M,x)=>(Mt(h,typeof M!="symbol"?M+"":M,x),x);class M extends Error{constructor({kind:n,description:r,error:o}){super(JSON.stringify({kind:n,description:r}));te(this,"kind");te(this,"description");te(this,"error");this.kind=n,this.description=r,this.error=o}}class x extends M{constructor(t,n){super({kind:"ChatCreationFailed",description:`Failed to create ${n?"persistent":""} chat, mode: ${t}`})}}class ce extends M{constructor(t){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${t}`})}}class V extends M{constructor(n,r){super({kind:"ValidationError",description:n});te(this,"key");this.key=r}}class de extends M{constructor(t){super({kind:"WSError",description:t})}}var ue=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(ue||{}),le=(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))(le||{}),fe=(e=>(e.Created="created",e.Started="started",e.Done="done",e.Error="error",e.Rejected="rejected",e.Ready="ready",e))(fe||{}),me=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(me||{}),I=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e.Off="Off",e))(I||{}),q=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(q||{}),ge=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(ge||{}),he=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(he||{}),we=(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))(we||{}),re=(e=>(e.Clip="clip",e.Talk="talk",e))(re||{});const pe=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var w=(e=>(e.Start="START",e.Stop="STOP",e))(w||{}),Q=(e=>(e.Strong="STRONG",e.Weak="WEAK",e.Unknown="UNKNOWN",e))(Q||{}),X=(e=>(e.Idle="IDLE",e.Talking="TALKING",e))(X||{}),b=(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.StreamInterrupt="stream/interrupt",e.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(b||{}),D=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(D||{}),W=(e=>(e.Legacy="legacy",e.Fluent="fluent",e))(W||{}),ye=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(ye||{}),ve=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(ve||{});const Pe=45*1e3,$e="X-Playground-Chat",Z="https://api.d-id.com",Be="wss://notifications.d-id.com",Le="79f81a83a67430be2bc0fd61042b8faa",ke=e=>new Promise(t=>setTimeout(t,e)),G=(e=16)=>{const t=new Uint8Array(e);return window.crypto.getRandomValues(t),Array.from(t,n=>n.toString(16).padStart(2,"0")).join("").slice(0,13)},ze=e=>[I.TextOnly,I.Playground,I.Maintenance].includes(e),Ce=e=>e&&[I.DirectPlayback,I.Off].includes(e);function Fe(e,t){let n;return{promise:new Promise((o,i)=>{n=setTimeout(()=>i(new Error(t)),e)}),clear:()=>clearTimeout(n)}}async function ne(e,t){const n={limit:(t==null?void 0:t.limit)??3,delayMs:(t==null?void 0:t.delayMs)??0,timeout:(t==null?void 0:t.timeout)??3e4,timeoutErrorMessage:(t==null?void 0:t.timeoutErrorMessage)||"Timeout error",shouldRetryFn:(t==null?void 0:t.shouldRetryFn)??(()=>!0),onRetry:(t==null?void 0:t.onRetry)??(()=>{})};let r;for(let o=1;o<=n.limit;o++)try{if(!n.timeout)return await e();const{promise:i,clear:c}=Fe(n.timeout,n.timeoutErrorMessage),a=e().finally(c);return await Promise.race([a,i])}catch(i){if(r=i,!n.shouldRetryFn(i)||o>=n.limit)throw i;await ke(n.delayMs),n.onRetry(i)}throw r}function De(){let e=window.localStorage.getItem("did_external_key_id");if(!e){let t=G();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let Ne=G();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}.${De()}_${Ne}`;throw new Error(`Unknown auth type: ${e}`)}const Je=e=>ne(e,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:t=>t.status===429});function ae(e,t=Z,n){const r=async(o,i)=>{const{skipErrorHandler:c,...a}=i||{},s=await Je(()=>fetch(t+(o!=null&&o.startsWith("/")?o:`/${o}`),{...a,headers:{...a.headers,Authorization:Se(e),"Content-Type":"application/json"}}));if(!s.ok){let u=await s.text().catch(()=>`Failed to fetch with status ${s.status}`);const d=new Error(u);throw n&&!c&&n(d,{url:o,options:a,headers:s.headers}),d}return s.json()};return{get(o,i){return r(o,{...i,method:"GET"})},post(o,i,c){return r(o,{...c,body:JSON.stringify(i),method:"POST"})},delete(o,i,c){return r(o,{...c,body:JSON.stringify(i),method:"DELETE"})},patch(o,i,c){return r(o,{...c,body:JSON.stringify(i),method:"PATCH"})}}}function Re(e,t=Z,n){const r=ae(e,`${t}/agents`,n);return{create(o,i){return r.post("/",o,i)},getAgents(o,i){return r.get(`/${o?`?tag=${o}`:""}`,i).then(c=>c??[])},getById(o,i){return r.get(`/${o}`,i)},delete(o,i){return r.delete(`/${o}`,void 0,i)},update(o,i,c){return r.patch(`/${o}`,i,c)},newChat(o,i,c){return r.post(`/${o}/chat`,i,c)},chat(o,i,c,a){return r.post(`/${o}/chat/${i}`,c,a)},createRating(o,i,c,a){return r.post(`/${o}/chat/${i}/ratings`,c,a)},updateRating(o,i,c,a,s){return r.patch(`/${o}/chat/${i}/ratings/${c}`,a,s)},deleteRating(o,i,c,a){return r.delete(`/${o}/chat/${i}/ratings/${c}`,a)},getSTTToken(o,i){return r.get(`/${o}/stt-token`,i)}}}const Ie=e=>e.type==="clip"&&e.presenter_id.startsWith("v2_")?"clip_v2":e.type;function We(e){var o,i,c,a;const t=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",n=()=>{const s=navigator.platform;return s.toLowerCase().includes("win")?"Windows":s.toLowerCase().includes("mac")?"Mac OS X":s.toLowerCase().includes("linux")?"Linux":"Unknown"},r=e.presenter;return{$os:`${n()}`,isMobile:`${t()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:Ie(r),agentVoice:{voiceId:(i=(o=e.presenter)==null?void 0:o.voice)==null?void 0:i.voice_id,provider:(a=(c=e.presenter)==null?void 0:c.voice)==null?void 0:a.type}}}function Ue(e){var n,r,o,i,c,a;const t=(n=e.llm)==null?void 0:n.prompt_customization;return{agentType:Ie(e.presenter),owner_id:e.owner_id??"",promptVersion:(r=e.llm)==null?void 0:r.prompt_version,behavior:{role:t==null?void 0:t.role,personality:t==null?void 0:t.personality,instructions:(o=e.llm)==null?void 0:o.instructions},temperature:(i=e.llm)==null?void 0:i.temperature,knowledgeSource:t==null?void 0:t.knowledge_source,starterQuestionsCount:(a=(c=e.knowledge)==null?void 0:c.starter_message)==null?void 0:a.length,topicsToAvoid:t==null?void 0:t.topics_to_avoid,maxResponseLength:t==null?void 0:t.max_response_length}}const Ke=e=>e.reduce((t,n)=>t+n,0),_e=e=>Ke(e)/e.length;function He(e,t,n){var s,u,d;const{event:r,...o}=e,{template:i}=(t==null?void 0:t.llm)||{},{language:c}=((s=t==null?void 0:t.presenter)==null?void 0:s.voice)||{};return{...o,llm:{...o.llm,template:i},script:{...o.script,provider:{...(u=o==null?void 0:o.script)==null?void 0:u.provider,language:c}},stitch:(t==null?void 0:t.presenter.type)==="talk"?(d=t==null?void 0:t.presenter)==null?void 0:d.stitch:void 0,...n}}let ie={};const xe="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function Ve(e){const t=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk";return{token:e.token||"testKey",distinct_id:e.distinctId||De(),agentId:e.agentId,additionalProperties:{},isEnabled:e.isEnabled??!0,getRandom:G,enrich(n){this.additionalProperties={...this.additionalProperties,...n}},async track(n,r){if(!this.isEnabled)return Promise.resolve();const{audioPath:o,...i}=r||{},c={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:n,properties:{...this.additionalProperties,...i,agentId:this.agentId,source:t,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}}])})};try{return await fetch(xe,c).then(a=>a.json())}catch(a){return console.error(a)}},linkTrack(n,r,o,i){ie[n]||(ie[n]={events:{},resolvedDependencies:[]}),i.includes(o)||i.push(o);const c=ie[n];if(c.events[o]={props:r},c.resolvedDependencies.push(o),i.every(s=>c.resolvedDependencies.includes(s))){const s=i.reduce((u,d)=>c.events[d]?{...u,...c.events[d].props}:u,{});this.track(n,s),c.resolvedDependencies=c.resolvedDependencies.filter(u=>!i.includes(u)),i.forEach(u=>{delete c.events[u]})}}}}function Ee(){let e=0;return{reset:()=>e=0,update:()=>e=Date.now(),get:(t=!1)=>t?Date.now()-e:e}}const $=Ee(),se=Ee();function Me(e){return e===I.Playground?{headers:{[$e]:"true"}}:{}}async function Te(e,t,n,r,o=!1,i){try{return!i&&!Ce(r)&&(i=await t.newChat(e.id,{persist:o},Me(r)),n.track("agent-chat",{event:"created",chatId:i.id,agentId:e.id,mode:r,access:e.access,name:e.preview_name,...e.access==="public"?{from:"agent-template"}:{}})),{chat:i,chatMode:(i==null?void 0:i.chat_mode)??r}}catch(c){try{const a=JSON.parse(c.message);if((a==null?void 0:a.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(a){console.error("Error parsing the error message:",a)}throw new Error("Cannot create new chat")}}function qe(e){return e&&e.length>0?e:[]}function Xe(e,t,n){if(!e)throw new Error("Please connect to the agent first");if(!e.interruptAvailable)throw new Error("Interrupt is not enabled for this stream");if(t!==W.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!n)throw new Error("No active video to interrupt")}async function Ye(e,t){const n={type:b.StreamInterrupt,videoId:t,timestamp:Date.now()};e.sendDataChannelMessage(JSON.stringify(n))}function Oe(e){return new Promise((t,n)=>{const{callbacks:r,host:o,auth:i}=e,{onMessage:c=null,onOpen:a=null,onClose:s=null,onError:u=null}=r||{},d=new WebSocket(`${o}?authorization=${Se(i)}`);d.onmessage=c,d.onclose=s,d.onerror=v=>{console.error(v),u==null||u("Websocket failed to connect",v),n(v)},d.onopen=v=>{a==null||a(v),t(d)}})}async function Qe(e){const{retries:t=1}=e;let n=null;for(let r=0;(n==null?void 0:n.readyState)!==WebSocket.OPEN;r++)try{n=await Oe(e)}catch(o){if(r===t)throw o;await ke(r*500)}return n}async function Ge(e,t,n){const r=n!=null&&n.onMessage?[n.onMessage]:[],o=await Qe({auth:e,host:t,callbacks:{onError:i=>{var c;return(c=n.onError)==null?void 0:c.call(n,new de(i))},onMessage(i){const c=JSON.parse(i.data);r.forEach(a=>a(c.event,c))}}});return{socket:o,disconnect:()=>o.close(),subscribeToEvents:i=>r.push(i)}}function Ze(e){if(e.answer!==void 0)return e.answer;let t=0,n="";for(;t in e;)n+=e[t++];return n}function et(e,t,n,r,o){const i=r.messages[r.messages.length-1];if(!(e===q.Partial||e===q.Answer)||(i==null?void 0:i.role)!=="assistant")return;const{content:c,sequence:a}=t;e===q.Partial?n[a]=c:n.answer=c;const s=Ze(n);(i.content!==s||e===q.Answer)&&(i.content=s,o==null||o([...r.messages],e))}function tt(e,t,n,r,o){let i={};return{clearQueue:()=>i={},onMessage:(c,a)=>{var s,u;if("content"in a)et(c,a,i,t,n.callbacks.onNewMessage),c===q.Answer&&e.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const d=b,v=[d.StreamVideoDone,d.StreamVideoError,d.StreamVideoRejected],B=[d.StreamFailed,d.StreamVideoError,d.StreamVideoRejected],L=He(a,r,{mode:t.chatMode});if(c=c,c===d.StreamVideoCreated)e.linkTrack("agent-video",L,d.StreamVideoCreated,["start"]);else if(v.includes(c)){const U=c.split("/")[1];B.includes(c)?e.track("agent-video",{...L,event:U}):e.linkTrack("agent-video",{...L,event:U},c,["done"])}B.includes(c)&&((u=(s=n.callbacks).onError)==null||u.call(s,new Error(`Stream failed with event ${c}`),{data:a})),a.event===d.StreamDone&&o()}}}}function rt(e,t,n,r){const o=ae(e,`${t}/agents/${n}`,r);return{createStream(i){return o.post("/streams",{output_resolution:i.output_resolution,compatibility_mode:i.compatibility_mode,stream_warmup:i.stream_warmup,session_timeout:i.session_timeout,fluent:i.fluent})},startConnection(i,c,a){return o.post(`/streams/${i}/sdp`,{session_id:a,answer:c})},addIceCandidate(i,c,a){return o.post(`/streams/${i}/ice`,{session_id:a,...c})},sendStreamRequest(i,c,a){return o.post(`/streams/${i}`,{session_id:c,...a})},close(i,c){return o.delete(`/streams/${i}`,{session_id:c})}}}function nt(e,t,n,r){const o=ae(e,`${t}/agents/${n}`,r);return{createStream(i,c){return o.post("/streams",{driver_url:i.driver_url,face:i.face,config:i.config,output_resolution:i.output_resolution,compatibility_mode:i.compatibility_mode,stream_warmup:i.stream_warmup,session_timeout:i.session_timeout,fluent:i.fluent},c)},startConnection(i,c,a,s){return o.post(`/streams/${i}/sdp`,{session_id:a,answer:c},s)},addIceCandidate(i,c,a,s){return o.post(`/streams/${i}/ice`,{session_id:a,...c},s)},sendStreamRequest(i,c,a,s){return o.post(`/streams/${i}`,{session_id:c,...a},s)},close(i,c,a){return o.delete(`/streams/${i}`,{session_id:c},a)}}}function at(e,t,n){const r=(t.timestamp-e.timestamp)/1e3;return{duration:r,bytesReceived:t.bytesReceived-e.bytesReceived,bitrate:Math.round((t.bytesReceived-e.bytesReceived)*8/r),packetsReceived:t.packetsReceived-e.packetsReceived,packetsLost:t.packetsLost-e.packetsLost,framesDropped:t.framesDropped-e.framesDropped,framesDecoded:t.framesDecoded-e.framesDecoded,jitter:t.jitter,avgJitterDelayInInterval:(t.jitterBufferDelay-e.jitterBufferDelay)/(t.jitterBufferEmittedCount-e.jitterBufferEmittedCount),jitterBufferEmittedCount:t.jitterBufferEmittedCount-e.jitterBufferEmittedCount,jitterBufferDelay:(t.jitterBufferDelay-e.jitterBufferDelay)/r,framesPerSecond:t.framesPerSecond,freezeCount:t.freezeCount-e.freezeCount,freezeDuration:t.freezeDuration-e.freezeDuration,lowFpsCount:n}}function it(e){return e.filter(t=>t.freezeCount>0||t.framesPerSecond<21||t.framesDropped>0||t.packetsLost>0).map(t=>{const{timestamp:n,...r}=t,o=[];return t.freezeCount>0&&o.push("freeze"),t.framesPerSecond<21&&o.push("low fps"),t.framesDropped>0&&o.push("frames dropped"),t.packetsLost>0&&o.push("packet loss"),{...r,causes:o}})}function st(e){let t="",n=0;for(const r of e.values())if(r&&r.type==="codec"&&r.mimeType.startsWith("video")&&(t=r.mimeType.split("/")[1]),r&&r.type==="candidate-pair"&&(n=r.currentRoundTripTime),r&&r.type==="inbound-rtp"&&r.kind==="video")return{codec:t,rtt:n,timestamp:r.timestamp,bytesReceived:r.bytesReceived,packetsReceived:r.packetsReceived,packetsLost:r.packetsLost,framesDropped:r.framesDropped,framesDecoded:r.framesDecoded,jitter:r.jitter,jitterBufferDelay:r.jitterBufferDelay,jitterBufferEmittedCount:r.jitterBufferEmittedCount,avgJitterDelayInInterval:r.jitterBufferDelay/r.jitterBufferEmittedCount,frameWidth:r.frameWidth,frameHeight:r.frameHeight,framesPerSecond:r.framesPerSecond,freezeCount:r.freezeCount,freezeDuration:r.totalFreezesDuration};return{}}function ot(e,t,n){const r=e.map((s,u)=>u===0?n?{timestamp:s.timestamp,duration:0,rtt:s.rtt,bytesReceived:s.bytesReceived-n.bytesReceived,bitrate:(s.bytesReceived-n.bytesReceived)*8/(t/1e3),packetsReceived:s.packetsReceived-n.packetsReceived,packetsLost:s.packetsLost-n.packetsLost,framesDropped:s.framesDropped-n.framesDropped,framesDecoded:s.framesDecoded-n.framesDecoded,jitter:s.jitter,jitterBufferDelay:s.jitterBufferDelay-n.jitterBufferDelay,jitterBufferEmittedCount:s.jitterBufferEmittedCount-n.jitterBufferEmittedCount,avgJitterDelayInInterval:(s.jitterBufferDelay-n.jitterBufferDelay)/(s.jitterBufferEmittedCount-n.jitterBufferEmittedCount),framesPerSecond:s.framesPerSecond,freezeCount:s.freezeCount-n.freezeCount,freezeDuration:s.freezeDuration-n.freezeDuration}:{timestamp:s.timestamp,rtt:s.rtt,duration:0,bytesReceived:s.bytesReceived,bitrate:s.bytesReceived*8/(t/1e3),packetsReceived:s.packetsReceived,packetsLost:s.packetsLost,framesDropped:s.framesDropped,framesDecoded:s.framesDecoded,jitter:s.jitter,jitterBufferDelay:s.jitterBufferDelay,jitterBufferEmittedCount:s.jitterBufferEmittedCount,avgJitterDelayInInterval:s.jitterBufferDelay/s.jitterBufferEmittedCount,framesPerSecond:s.framesPerSecond,freezeCount:s.freezeCount,freezeDuration:s.freezeDuration}:{timestamp:s.timestamp,duration:t*u/1e3,rtt:s.rtt,bytesReceived:s.bytesReceived-e[u-1].bytesReceived,bitrate:(s.bytesReceived-e[u-1].bytesReceived)*8/(t/1e3),packetsReceived:s.packetsReceived-e[u-1].packetsReceived,packetsLost:s.packetsLost-e[u-1].packetsLost,framesDropped:s.framesDropped-e[u-1].framesDropped,framesDecoded:s.framesDecoded-e[u-1].framesDecoded,jitter:s.jitter,jitterBufferDelay:s.jitterBufferDelay-e[u-1].jitterBufferDelay,jitterBufferEmittedCount:s.jitterBufferEmittedCount-e[u-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(s.jitterBufferDelay-e[u-1].jitterBufferDelay)/(s.jitterBufferEmittedCount-e[u-1].jitterBufferEmittedCount),framesPerSecond:s.framesPerSecond,freezeCount:s.freezeCount-e[u-1].freezeCount,freezeDuration:s.freezeDuration-e[u-1].freezeDuration}),o=it(r),i=o.reduce((s,u)=>s+(u.causes.includes("low fps")?1:0),0),c=r.filter(s=>!!s.avgJitterDelayInInterval).map(s=>s.avgJitterDelayInInterval),a=r.filter(s=>!!s.rtt).map(s=>s.rtt);return{webRTCStats:{anomalies:o,minRtt:Math.min(...a),avgRtt:_e(a),maxRtt:Math.max(...a),aggregateReport:at(e[0],e[e.length-1],i),minJitterDelayInInterval:Math.min(...c),maxJitterDelayInInterval:Math.max(...c),avgJitterDelayInInterval:_e(c)},codec:e[0].codec,resolution:`${e[0].frameWidth}x${e[0].frameHeight}`}}const oe=100,ct=Math.max(Math.ceil(400/oe),1),dt=.25,ut=.28;function lt(){let e=0,t,n,r=0;return o=>{for(const i of o.values())if(i&&i.type==="inbound-rtp"&&i.kind==="video"){const c=i.jitterBufferDelay,a=i.jitterBufferEmittedCount;if(n&&a>n){const d=c-t,v=a-n;r=d/v}t=c,n=a;const s=i.framesDecoded,u=s-e>0;return e=s,{isReceiving:u,avgJitterDelayInInterval:r,freezeCount:i.freezeCount}}return{isReceiving:!1,avgJitterDelayInInterval:r}}}function ft(e,t,n,r,o,i=!1){let c=[],a,s=0,u=!1,d=Q.Unknown,v=Q.Unknown,B=0,L=0;const U=lt();return setInterval(async()=>{const K=await e.getStats(),{isReceiving:_,avgJitterDelayInInterval:Y,freezeCount:O}=U(K),A=st(K);if(_)s=0,B=O-L,v=Y<dt?Q.Strong:Y>ut&&B>1?Q.Weak:d,v!==d&&(o==null||o(v),d=v,L+=B,B=0),u||(r==null||r(w.Start),a=c[c.length-1],c=[],u=!0),c.push(A);else if(u&&(s++,s>=ct)){const l=ot(c,oe,a);r==null||r(w.Stop,l),t()||n(),L=O,u=!1}},oe)}let je=!1;const P=(e,t)=>je&&console.log(e,t),mt=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function be(e){switch(e){case"connected":return D.Connected;case"checking":return D.Connecting;case"failed":return D.Fail;case"new":return D.New;case"closed":return D.Closed;case"disconnected":return D.Disconnected;case"completed":return D.Completed;default:return D.New}}function gt(e){const[t,n=""]=e.split(/:(.+)/);try{const r=JSON.parse(n);return P("parsed data channel message",{subject:t,data:r}),{subject:t,data:r}}catch(r){return P("Failed to parse data channel message, returning data as string",{subject:t,rawData:n,error:r}),{subject:t,data:n}}}function ht({statsSignal:e,dataChannelSignal:t,onVideoStateChange:n,report:r}){e===w.Start&&t===w.Start?n==null||n(w.Start):e===w.Stop&&t===w.Stop&&(n==null||n(w.Stop,r))}function wt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:n,onAgentActivityStateChange:r,report:o}){e===w.Start?n==null||n(w.Start):e===w.Stop&&(n==null||n(w.Stop,o)),t===w.Start?r==null||r(X.Talking):t===w.Stop&&(r==null||r(X.Idle))}function Ae({statsSignal:e,dataChannelSignal:t,onVideoStateChange:n,onAgentActivityStateChange:r,streamType:o,report:i}){o===W.Legacy?ht({statsSignal:e,dataChannelSignal:t,onVideoStateChange:n,report:i}):o===W.Fluent&&wt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:n,onAgentActivityStateChange:r,report:i})}async function pt(e,t,{debug:n=!1,callbacks:r,auth:o,baseURL:i=Z,analytics:c}){var H;je=n;let a=!1,s=!1,u=w.Stop,d=w.Stop;const{startConnection:v,sendStreamRequest:B,close:L,createStream:U,addIceCandidate:K}=t.videoType===re.Clip?rt(o,i,e,r.onError):nt(o,i,e,r.onError),{id:_,offer:Y,ice_servers:O,session_id:A,fluent:l,interrupt_enabled:p}=await U(t);(H=r.onStreamCreated)==null||H.call(r,{stream_id:_,session_id:A,agent_id:e});const m=new mt({iceServers:O}),S=m.createDataChannel("JanusDataChannel");if(!A)throw new Error("Could not create session_id");const k=l?W.Fluent:W.Legacy;c.enrich({"stream-type":k});const y=t.stream_warmup&&!l,T=()=>a,z=()=>{var f;a=!0,s&&((f=r.onConnectionStateChange)==null||f.call(r,D.Connected))},F=ft(m,T,z,(f,g)=>Ae({statsSignal:d=f,dataChannelSignal:k===W.Legacy?u:void 0,onVideoStateChange:r.onVideoStateChange,onAgentActivityStateChange:r.onAgentActivityStateChange,report:g,streamType:k}),f=>{var g;return(g=r.onConnectivityStateChange)==null?void 0:g.call(r,f)},y);m.onicecandidate=f=>{var g;P("peerConnection.onicecandidate",f);try{f.candidate&&f.candidate.sdpMid&&f.candidate.sdpMLineIndex!==null?K(_,{candidate:f.candidate.candidate,sdpMid:f.candidate.sdpMid,sdpMLineIndex:f.candidate.sdpMLineIndex},A):K(_,{candidate:null},A)}catch(E){(g=r.onError)==null||g.call(r,E,{streamId:_})}},S.onopen=()=>{s=!0,(!y||a)&&z()};const C=f=>{var g;(g=r.onVideoIdChange)==null||g.call(r,f)};function j(f,g){if(f===b.StreamStarted&&typeof g=="object"&&"metadata"in g){const E=g.metadata;C(E.videoId)}f===b.StreamDone&&C(null),u=f===b.StreamStarted?w.Start:w.Stop,Ae({statsSignal:k===W.Legacy?d:void 0,dataChannelSignal:u,onVideoStateChange:r.onVideoStateChange,onAgentActivityStateChange:r.onAgentActivityStateChange,streamType:k})}function R(f,g){const E=typeof g=="string"?g:g==null?void 0:g.metadata;E&&c.enrich({streamMetadata:E}),c.track("agent-chat",{event:"ready"})}const N={[b.StreamStarted]:j,[b.StreamDone]:j,[b.StreamReady]:R};S.onmessage=f=>{var ee;const{subject:g,data:E}=gt(f.data);(ee=N[g])==null||ee.call(N,g,E)},m.oniceconnectionstatechange=()=>{var g;P("peerConnection.oniceconnectionstatechange => "+m.iceConnectionState);const f=be(m.iceConnectionState);f!==D.Connected&&((g=r.onConnectionStateChange)==null||g.call(r,f))},m.ontrack=f=>{var g;P("peerConnection.ontrack",f),(g=r.onSrcObjectReady)==null||g.call(r,f.streams[0])},await m.setRemoteDescription(Y),P("set remote description OK");const J=await m.createAnswer();return P("create answer OK"),await m.setLocalDescription(J),P("set local description OK"),await v(_,J,A),P("start connection OK"),{speak(f){return B(_,A,f)},async disconnect(){var f;if(_){const g=be(m.iceConnectionState);if(m){if(g===D.New){clearInterval(F);return}m.close(),m.oniceconnectionstatechange=null,m.onnegotiationneeded=null,m.onicecandidate=null,m.ontrack=null}try{g===D.Connected&&await L(_,A).catch(E=>{})}catch(E){P("Error on close stream connection",E)}(f=r.onAgentActivityStateChange)==null||f.call(r,X.Idle),clearInterval(F)}},sendDataChannelMessage(f){var g,E;if(!a||S.readyState!=="open"){P("Data channel is not ready for sending messages"),(g=r.onError)==null||g.call(r,new Error("Data channel is not ready for sending messages"),{streamId:_});return}try{S.send(f)}catch(ee){P("Error sending data channel message",ee),(E=r.onError)==null||E.call(r,ee,{streamId:_})}},sessionId:A,streamId:_,streamType:k,interruptAvailable:p}}function yt(e,t){const{streamOptions:n}=t??{};return{videoType:pe(e.presenter.type),output_resolution:n==null?void 0:n.outputResolution,session_timeout:n==null?void 0:n.sessionTimeout,stream_warmup:n==null?void 0:n.streamWarmup,compatibility_mode:n==null?void 0:n.compatibilityMode,fluent:n==null?void 0:n.fluent}}function vt(e,t,n,r,o){o===W.Fluent?kt(e,t,n,r,o):Dt(e,t,n,r,o)}function kt(e,t,n,r,o){e===w.Start?r.track("stream-session",{event:"start","stream-type":o}):e===w.Stop&&r.track("stream-session",{event:"stop",is_greenscreen:t.presenter.type==="clip"&&t.presenter.is_greenscreen,background:t.presenter.type==="clip"&&t.presenter.background,"stream-type":o,...n})}function Ct(e,t,n,r){$.get()<=0||(e===w.Start?n.linkTrack("agent-video",{event:"start",latency:$.get(!0),"stream-type":r},"start",[b.StreamVideoCreated]):e===w.Stop&&n.linkTrack("agent-video",{event:"stop",is_greenscreen:t.presenter.type==="clip"&&t.presenter.is_greenscreen,background:t.presenter.type==="clip"&&t.presenter.background,"stream-type":r},"done",[b.StreamVideoDone]))}function Dt(e,t,n,r,o){$.get()<=0||(e===w.Start?r.linkTrack("agent-video",{event:"start",latency:$.get(!0),"stream-type":o},"start",[b.StreamVideoCreated]):e===w.Stop&&r.linkTrack("agent-video",{event:"stop",is_greenscreen:t.presenter.type==="clip"&&t.presenter.is_greenscreen,background:t.presenter.type==="clip"&&t.presenter.background,"stream-type":o,...n},"done",[b.StreamVideoDone]))}function St(e,t,n){return $.reset(),new Promise(async(r,o)=>{try{const i=await pt(e.id,yt(e,t),{...t,analytics:n,callbacks:{...t.callbacks,onConnectionStateChange:c=>{var a,s;(s=(a=t.callbacks).onConnectionStateChange)==null||s.call(a,c),c===D.Connected&&r(i)},onVideoStateChange:(c,a)=>{var s,u;(u=(s=t.callbacks).onVideoStateChange)==null||u.call(s,c),vt(c,e,a,n,i.streamType)},onAgentActivityStateChange:c=>{var a,s;(s=(a=t.callbacks).onAgentActivityStateChange)==null||s.call(a,c),c===X.Talking?se.update():se.reset(),Ct(c===X.Talking?w.Start:w.Stop,e,n,i.streamType)}}})}catch(i){o(i)}})}async function Rt(e,t,n,r,o){var s,u,d,v;const{chat:i,chatMode:c}=await Te(e,n,r,t.mode,t.persistentChat,o);if(c&&c!==t.mode&&(t.mode=c,(u=(s=t.callbacks).onModeChange)==null||u.call(s,c),c===I.TextOnly))return(v=(d=t.callbacks).onError)==null||v.call(d,new ce(c)),{chat:i};const a=await St(e,t,r);return{chat:i,streamingManager:a}}async function It(e,t){var Y,O,A;let n=!0,r=null;const o=t.mixpanelKey||Le,i=t.wsURL||Be,c=t.baseURL||Z,a={messages:[],chatMode:t.mode||I.Functional},s=Ve({token:o,agentId:e,isEnabled:t.enableAnalitics,distinctId:t.distinctId});s.track("agent-sdk",{event:"init"});const u=Re(t.auth,c,t.callbacks.onError),d=await u.getById(e);s.enrich(Ue(d));const{onMessage:v,clearQueue:B}=tt(s,a,t,d,()=>{var l;return(l=a.socketManager)==null?void 0:l.disconnect()});a.messages=qe(t.initialMessages),(O=(Y=t.callbacks).onNewMessage)==null||O.call(Y,[...a.messages],"answer");const L=l=>{r=l};s.track("agent-sdk",{event:"loaded",...We(d)});async function U(l){var T,z,F,C,j,R,N;(z=(T=t.callbacks).onConnectionStateChange)==null||z.call(T,D.Connecting),$.reset(),l&&!n&&(delete a.chat,(C=(F=t.callbacks).onNewMessage)==null||C.call(F,[...a.messages],"answer"));const p=t.mode===I.DirectPlayback?Promise.resolve(void 0):Ge(t.auth,i,{onMessage:v,onError:t.callbacks.onError}),m=ne(()=>Rt(d,{...t,callbacks:{...t.callbacks,onVideoIdChange:L}},u,s,a.chat),{limit:3,timeout:Pe,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:J=>(J==null?void 0:J.message)!=="Could not connect"&&J.status!==429,delayMs:1e3}).catch(J=>{var H,f;throw _(I.Maintenance),(f=(H=t.callbacks).onConnectionStateChange)==null||f.call(H,D.Fail),J}),[S,{streamingManager:k,chat:y}]=await Promise.all([p,m]);y&&y.id!==((j=a.chat)==null?void 0:j.id)&&((N=(R=t.callbacks).onNewChat)==null||N.call(R,y.id)),a.streamingManager=k,a.socketManager=S,a.chat=y,n=!1,_((y==null?void 0:y.chat_mode)??t.mode??I.Functional)}async function K(){var l,p,m,S;(l=a.socketManager)==null||l.disconnect(),await((p=a.streamingManager)==null?void 0:p.disconnect()),delete a.streamingManager,delete a.socketManager,(S=(m=t.callbacks).onConnectionStateChange)==null||S.call(m,D.Disconnected)}async function _(l){var p,m;l!==a.chatMode&&(s.track("agent-mode-change",{mode:l}),a.chatMode=l,a.chatMode!==I.Functional&&await K(),(m=(p=t.callbacks).onModeChange)==null||m.call(p,l))}return{agent:d,getStreamType:()=>{var l;return(l=a.streamingManager)==null?void 0:l.streamType},getIsInterruptAvailable:()=>{var l;return((l=a.streamingManager)==null?void 0:l.interruptAvailable)??!1},starterMessages:((A=d.knowledge)==null?void 0:A.starter_message)||[],getSTTToken:()=>u.getSTTToken(d.id),changeMode:_,enrichAnalytics:s.enrich,async connect(){var l;await U(!0),s.track("agent-chat",{event:"connect",chatId:(l=a.chat)==null?void 0:l.id,agentId:d.id,mode:a.chatMode,access:d.access,name:d.preview_name,...d.access==="public"?{from:"agent-template"}:{}})},async reconnect(){var l;await K(),await U(!1),s.track("agent-chat",{event:"reconnect",chatId:(l=a.chat)==null?void 0:l.id,agentId:d.id,mode:a.chatMode,access:d.access,name:d.preview_name,...d.access==="public"?{from:"agent-template"}:{}})},async disconnect(){var l;await K(),s.track("agent-chat",{event:"disconnect",chatId:(l=a.chat)==null?void 0:l.id,agentId:d.id,mode:a.chatMode,access:d.access,name:d.preview_name,...d.access==="public"?{from:"agent-template"}:{}})},async chat(l){var k,y,T,z,F;const p=()=>{if(Ce(t.mode))throw new V(`${t.mode} is enabled, chat is disabled`);if(l.length>=800)throw new V("Message cannot be more than 800 characters");if(l.length===0)throw new V("Message cannot be empty");if(a.chatMode===I.Maintenance)throw new V("Chat is in maintenance mode");if(![I.TextOnly,I.Playground].includes(a.chatMode)){if(!a.streamingManager)throw new V("Streaming manager is not initialized");if(!a.chat)throw new V("Chat is not initialized")}},m=async()=>{var C,j;if(!a.chat){const R=await Te(d,u,s,a.chatMode,t.persistentChat);if(!R.chat)throw new x(a.chatMode,!!t.persistentChat);a.chat=R.chat,(j=(C=t.callbacks).onNewChat)==null||j.call(C,a.chat.id)}return a.chat.id},S=async(C,j)=>ne(()=>{var R,N;return u.chat(d.id,j,{chatMode:a.chatMode,streamId:(R=a.streamingManager)==null?void 0:R.streamId,sessionId:(N=a.streamingManager)==null?void 0:N.sessionId,messages:C.map(({matches:J,...H})=>H)},{...Me(a.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:R=>{var H,f,g,E;const N=(H=R==null?void 0:R.message)==null?void 0:H.includes("missing or invalid session_id");return!((f=R==null?void 0:R.message)==null?void 0:f.includes("Stream Error"))&&!N?((E=(g=t.callbacks).onError)==null||E.call(g,R),!1):!0},onRetry:async()=>{await K(),await U(!1)}});try{B(),p(),a.messages.push({id:G(),role:"user",content:l,created_at:new Date($.update()).toISOString()}),(y=(k=t.callbacks).onNewMessage)==null||y.call(k,[...a.messages],"user");const C=await m(),j=await S([...a.messages],C);return a.messages.push({id:G(),role:"assistant",content:j.result||"",created_at:new Date().toISOString(),context:j.context,matches:j.matches}),s.track("agent-message-send",{event:"success",mode:a.chatMode,messages:a.messages.length+1}),j.result&&((z=(T=t.callbacks).onNewMessage)==null||z.call(T,[...a.messages],"answer"),s.track("agent-message-received",{latency:$.get(!0),mode:a.chatMode,messages:a.messages.length})),j}catch(C){throw((F=a.messages[a.messages.length-1])==null?void 0:F.role)==="assistant"&&a.messages.pop(),s.track("agent-message-send",{event:"error",mode:a.chatMode,messages:a.messages.length}),C}},rate(l,p,m){var y,T,z,F;const S=a.messages.find(C=>C.id===l);if(a.chat){if(!S)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const k=((y=S.matches)==null?void 0:y.map(C=>[C.document_id,C.id]))??[];return s.track("agent-rate",{event:m?"update":"create",thumb:p===1?"up":"down",knowledge_id:((T=d.knowledge)==null?void 0:T.id)??"",mode:a.chatMode,matches:k,score:p}),m?u.updateRating(d.id,a.chat.id,m,{knowledge_id:((z=d.knowledge)==null?void 0:z.id)??"",message_id:l,matches:k,score:p}):u.createRating(d.id,a.chat.id,{knowledge_id:((F=d.knowledge)==null?void 0:F.id)??"",message_id:l,matches:k,score:p})},deleteRate(l){var p;if(!a.chat)throw new Error("Chat is not initialized");return s.track("agent-rate-delete",{type:"text",chat_id:(p=a.chat)==null?void 0:p.id,id:l,mode:a.chatMode}),u.deleteRating(d.id,a.chat.id,l)},async speak(l){var k,y,T;function p(){if(typeof l=="string"){if(!d.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:d.presenter.voice,input:l,ssml:!1}}if(l.type==="text"&&!l.provider){if(!d.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:d.presenter.voice,input:l.input,ssml:l.ssml}}return l}const m=p();if(s.track("agent-speak",m),$.update(),a.messages&&m.type==="text"&&(a.messages.push({id:G(),role:"assistant",content:m.input,created_at:new Date($.get(!0)).toISOString()}),(y=(k=t.callbacks).onNewMessage)==null||y.call(k,[...a.messages],"answer")),ze(a.chatMode))return{duration:0,video_id:"",status:"success"};if(!a.streamingManager)throw new Error("Please connect to the agent first");return a.streamingManager.speak({script:m,metadata:{chat_id:(T=a.chat)==null?void 0:T.id,agent_id:d.id}})},async interrupt({type:l}){var m,S,k,y,T;Xe(a.streamingManager,(m=a.streamingManager)==null?void 0:m.streamType,r);const p=a.messages[a.messages.length-1];s.track("agent-video-interrupt",{type:l||"click",stream_id:(S=a.streamingManager)==null?void 0:S.streamId,agent_id:d.id,owner_id:d.owner_id,video_duration_to_interrupt:se.get(!0),message_duration_to_interrupt:$.get(!0),chat_id:(k=a.chat)==null?void 0:k.id,mode:a.chatMode}),p.interrupted=!0,(T=(y=t.callbacks).onNewMessage)==null||T.call(y,[...a.messages],"answer"),Ye(a.streamingManager,r)}}}function _t(e,t,n){const{getById:r}=Re(t,n||Z);return r(e)}h.AgentActivityState=X,h.AgentStatus=fe,h.ChatCreationFailed=x,h.ChatMode=I,h.ChatModeDowngraded=ce,h.ChatProgress=q,h.ConnectionState=D,h.ConnectivityState=Q,h.DocumentType=we,h.KnowledgeType=he,h.PlanGroup=le,h.Providers=ye,h.RateState=me,h.StreamEvents=b,h.StreamType=W,h.StreamingState=w,h.Subject=ge,h.UserPlan=ue,h.ValidationError=V,h.VideoType=re,h.VoiceAccess=ve,h.WsError=de,h.createAgentManager=It,h.getAgent=_t,h.mapVideoType=pe,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
1
+ (function(h,M){typeof exports=="object"&&typeof module<"u"?M(exports):typeof define=="function"&&define.amd?define(["exports"],M):(h=typeof globalThis<"u"?globalThis:h||self,M(h.index={}))})(this,function(h){"use strict";var _t=Object.defineProperty;var Mt=(h,M,x)=>M in h?_t(h,M,{enumerable:!0,configurable:!0,writable:!0,value:x}):h[M]=x;var te=(h,M,x)=>(Mt(h,typeof M!="symbol"?M+"":M,x),x);class M extends Error{constructor({kind:n,description:r,error:o}){super(JSON.stringify({kind:n,description:r}));te(this,"kind");te(this,"description");te(this,"error");this.kind=n,this.description=r,this.error=o}}class x extends M{constructor(t,n){super({kind:"ChatCreationFailed",description:`Failed to create ${n?"persistent":""} chat, mode: ${t}`})}}class ce extends M{constructor(t){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${t}`})}}class V extends M{constructor(n,r){super({kind:"ValidationError",description:n});te(this,"key");this.key=r}}class de extends M{constructor(t){super({kind:"WSError",description:t})}}var ue=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(ue||{}),le=(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))(le||{}),fe=(e=>(e.Created="created",e.Started="started",e.Done="done",e.Error="error",e.Rejected="rejected",e.Ready="ready",e))(fe||{}),me=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(me||{}),E=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e.Off="Off",e))(E||{}),q=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(q||{}),ge=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(ge||{}),he=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(he||{}),we=(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))(we||{}),re=(e=>(e.Clip="clip",e.Talk="talk",e))(re||{});const pe=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var w=(e=>(e.Start="START",e.Stop="STOP",e))(w||{}),Q=(e=>(e.Strong="STRONG",e.Weak="WEAK",e.Unknown="UNKNOWN",e))(Q||{}),X=(e=>(e.Idle="IDLE",e.Talking="TALKING",e))(X||{}),A=(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.StreamInterrupt="stream/interrupt",e.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(A||{}),D=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(D||{}),W=(e=>(e.Legacy="legacy",e.Fluent="fluent",e))(W||{}),ye=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(ye||{}),ve=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(ve||{});const Pe=45*1e3,$e="X-Playground-Chat",Z="https://api.d-id.com",Be="wss://notifications.d-id.com",Le="79f81a83a67430be2bc0fd61042b8faa",ke=e=>new Promise(t=>setTimeout(t,e)),G=(e=16)=>{const t=new Uint8Array(e);return window.crypto.getRandomValues(t),Array.from(t,n=>n.toString(16).padStart(2,"0")).join("").slice(0,13)},ze=e=>[E.TextOnly,E.Playground,E.Maintenance].includes(e),Ce=e=>e&&[E.DirectPlayback,E.Off].includes(e);function Fe(e,t){let n;return{promise:new Promise((o,i)=>{n=setTimeout(()=>i(new Error(t)),e)}),clear:()=>clearTimeout(n)}}async function ne(e,t){const n={limit:(t==null?void 0:t.limit)??3,delayMs:(t==null?void 0:t.delayMs)??0,timeout:(t==null?void 0:t.timeout)??3e4,timeoutErrorMessage:(t==null?void 0:t.timeoutErrorMessage)||"Timeout error",shouldRetryFn:(t==null?void 0:t.shouldRetryFn)??(()=>!0),onRetry:(t==null?void 0:t.onRetry)??(()=>{})};let r;for(let o=1;o<=n.limit;o++)try{if(!n.timeout)return await e();const{promise:i,clear:c}=Fe(n.timeout,n.timeoutErrorMessage),a=e().finally(c);return await Promise.race([a,i])}catch(i){if(r=i,!n.shouldRetryFn(i)||o>=n.limit)throw i;await ke(n.delayMs),n.onRetry(i)}throw r}function De(){let e=window.localStorage.getItem("did_external_key_id");if(!e){let t=G();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let Ne=G();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}.${De()}_${Ne}`;throw new Error(`Unknown auth type: ${e}`)}const Je=e=>ne(e,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:t=>t.status===429});function ae(e,t=Z,n){const r=async(o,i)=>{const{skipErrorHandler:c,...a}=i||{},s=await Je(()=>fetch(t+(o!=null&&o.startsWith("/")?o:`/${o}`),{...a,headers:{...a.headers,Authorization:Se(e),"Content-Type":"application/json"}}));if(!s.ok){let u=await s.text().catch(()=>`Failed to fetch with status ${s.status}`);const d=new Error(u);throw n&&!c&&n(d,{url:o,options:a,headers:s.headers}),d}return s.json()};return{get(o,i){return r(o,{...i,method:"GET"})},post(o,i,c){return r(o,{...c,body:JSON.stringify(i),method:"POST"})},delete(o,i,c){return r(o,{...c,body:JSON.stringify(i),method:"DELETE"})},patch(o,i,c){return r(o,{...c,body:JSON.stringify(i),method:"PATCH"})}}}function Re(e,t=Z,n){const r=ae(e,`${t}/agents`,n);return{create(o,i){return r.post("/",o,i)},getAgents(o,i){return r.get(`/${o?`?tag=${o}`:""}`,i).then(c=>c??[])},getById(o,i){return r.get(`/${o}`,i)},delete(o,i){return r.delete(`/${o}`,void 0,i)},update(o,i,c){return r.patch(`/${o}`,i,c)},newChat(o,i,c){return r.post(`/${o}/chat`,i,c)},chat(o,i,c,a){return r.post(`/${o}/chat/${i}`,c,a)},createRating(o,i,c,a){return r.post(`/${o}/chat/${i}/ratings`,c,a)},updateRating(o,i,c,a,s){return r.patch(`/${o}/chat/${i}/ratings/${c}`,a,s)},deleteRating(o,i,c,a){return r.delete(`/${o}/chat/${i}/ratings/${c}`,a)},getSTTToken(o,i){return r.get(`/${o}/stt-token`,i)}}}const Ee=e=>e.type==="clip"&&e.presenter_id.startsWith("v2_")?"clip_v2":e.type;function We(e){var o,i,c,a;const t=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",n=()=>{const s=navigator.platform;return s.toLowerCase().includes("win")?"Windows":s.toLowerCase().includes("mac")?"Mac OS X":s.toLowerCase().includes("linux")?"Linux":"Unknown"},r=e.presenter;return{$os:`${n()}`,isMobile:`${t()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:Ee(r),agentVoice:{voiceId:(i=(o=e.presenter)==null?void 0:o.voice)==null?void 0:i.voice_id,provider:(a=(c=e.presenter)==null?void 0:c.voice)==null?void 0:a.type}}}function Ue(e){var n,r,o,i,c,a;const t=(n=e.llm)==null?void 0:n.prompt_customization;return{agentType:Ee(e.presenter),owner_id:e.owner_id??"",promptVersion:(r=e.llm)==null?void 0:r.prompt_version,behavior:{role:t==null?void 0:t.role,personality:t==null?void 0:t.personality,instructions:(o=e.llm)==null?void 0:o.instructions},temperature:(i=e.llm)==null?void 0:i.temperature,knowledgeSource:t==null?void 0:t.knowledge_source,starterQuestionsCount:(a=(c=e.knowledge)==null?void 0:c.starter_message)==null?void 0:a.length,topicsToAvoid:t==null?void 0:t.topics_to_avoid,maxResponseLength:t==null?void 0:t.max_response_length}}const Ke=e=>e.reduce((t,n)=>t+n,0),Ie=e=>Ke(e)/e.length;function He(e,t,n){var s,u,d;const{event:r,...o}=e,{template:i}=(t==null?void 0:t.llm)||{},{language:c}=((s=t==null?void 0:t.presenter)==null?void 0:s.voice)||{};return{...o,llm:{...o.llm,template:i},script:{...o.script,provider:{...(u=o==null?void 0:o.script)==null?void 0:u.provider,language:c}},stitch:(t==null?void 0:t.presenter.type)==="talk"?(d=t==null?void 0:t.presenter)==null?void 0:d.stitch:void 0,...n}}let ie={};const xe="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function Ve(e){const t=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk";return{token:e.token||"testKey",distinct_id:e.distinctId||De(),agentId:e.agentId,additionalProperties:{},isEnabled:e.isEnabled??!0,getRandom:G,enrich(n){this.additionalProperties={...this.additionalProperties,...n}},async track(n,r){if(!this.isEnabled)return Promise.resolve();const{audioPath:o,...i}=r||{},c={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:n,properties:{...this.additionalProperties,...i,agentId:this.agentId,source:t,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}}])})};try{return await fetch(xe,c).then(a=>a.json())}catch(a){return console.error(a)}},linkTrack(n,r,o,i){ie[n]||(ie[n]={events:{},resolvedDependencies:[]}),i.includes(o)||i.push(o);const c=ie[n];if(c.events[o]={props:r},c.resolvedDependencies.push(o),i.every(s=>c.resolvedDependencies.includes(s))){const s=i.reduce((u,d)=>c.events[d]?{...u,...c.events[d].props}:u,{});this.track(n,s),c.resolvedDependencies=c.resolvedDependencies.filter(u=>!i.includes(u)),i.forEach(u=>{delete c.events[u]})}}}}function _e(){let e=0;return{reset:()=>e=0,update:()=>e=Date.now(),get:(t=!1)=>t?Date.now()-e:e}}const $=_e(),se=_e();function Me(e){return e===E.Playground?{headers:{[$e]:"true"}}:{}}async function Te(e,t,n,r,o=!1,i){try{return!i&&!Ce(r)&&(i=await t.newChat(e.id,{persist:o},Me(r)),n.track("agent-chat",{event:"created",chat_id:i.id,agent_id:e.id,mode:r})),{chat:i,chatMode:(i==null?void 0:i.chat_mode)??r}}catch(c){try{const a=JSON.parse(c.message);if((a==null?void 0:a.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(a){console.error("Error parsing the error message:",a)}throw new Error("Cannot create new chat")}}function qe(e){return e&&e.length>0?e:[]}function Xe(e,t,n){if(!e)throw new Error("Please connect to the agent first");if(!e.interruptAvailable)throw new Error("Interrupt is not enabled for this stream");if(t!==W.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!n)throw new Error("No active video to interrupt")}async function Ye(e,t){const n={type:A.StreamInterrupt,videoId:t,timestamp:Date.now()};e.sendDataChannelMessage(JSON.stringify(n))}function Oe(e){return new Promise((t,n)=>{const{callbacks:r,host:o,auth:i}=e,{onMessage:c=null,onOpen:a=null,onClose:s=null,onError:u=null}=r||{},d=new WebSocket(`${o}?authorization=${Se(i)}`);d.onmessage=c,d.onclose=s,d.onerror=v=>{console.error(v),u==null||u("Websocket failed to connect",v),n(v)},d.onopen=v=>{a==null||a(v),t(d)}})}async function Qe(e){const{retries:t=1}=e;let n=null;for(let r=0;(n==null?void 0:n.readyState)!==WebSocket.OPEN;r++)try{n=await Oe(e)}catch(o){if(r===t)throw o;await ke(r*500)}return n}async function Ge(e,t,n){const r=n!=null&&n.onMessage?[n.onMessage]:[],o=await Qe({auth:e,host:t,callbacks:{onError:i=>{var c;return(c=n.onError)==null?void 0:c.call(n,new de(i))},onMessage(i){const c=JSON.parse(i.data);r.forEach(a=>a(c.event,c))}}});return{socket:o,disconnect:()=>o.close(),subscribeToEvents:i=>r.push(i)}}function Ze(e){if(e.answer!==void 0)return e.answer;let t=0,n="";for(;t in e;)n+=e[t++];return n}function et(e,t,n,r,o){const i=r.messages[r.messages.length-1];if(!(e===q.Partial||e===q.Answer)||(i==null?void 0:i.role)!=="assistant")return;const{content:c,sequence:a}=t;e===q.Partial?n[a]=c:n.answer=c;const s=Ze(n);(i.content!==s||e===q.Answer)&&(i.content=s,o==null||o([...r.messages],e))}function tt(e,t,n,r,o){let i={};return{clearQueue:()=>i={},onMessage:(c,a)=>{var s,u;if("content"in a)et(c,a,i,t,n.callbacks.onNewMessage),c===q.Answer&&e.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const d=A,v=[d.StreamVideoDone,d.StreamVideoError,d.StreamVideoRejected],B=[d.StreamFailed,d.StreamVideoError,d.StreamVideoRejected],L=He(a,r,{mode:t.chatMode});if(c=c,c===d.StreamVideoCreated)e.linkTrack("agent-video",L,d.StreamVideoCreated,["start"]);else if(v.includes(c)){const U=c.split("/")[1];B.includes(c)?e.track("agent-video",{...L,event:U}):e.linkTrack("agent-video",{...L,event:U},c,["done"])}B.includes(c)&&((u=(s=n.callbacks).onError)==null||u.call(s,new Error(`Stream failed with event ${c}`),{data:a})),a.event===d.StreamDone&&o()}}}}function rt(e,t,n,r){const o=ae(e,`${t}/agents/${n}`,r);return{createStream(i){return o.post("/streams",{output_resolution:i.output_resolution,compatibility_mode:i.compatibility_mode,stream_warmup:i.stream_warmup,session_timeout:i.session_timeout,fluent:i.fluent})},startConnection(i,c,a){return o.post(`/streams/${i}/sdp`,{session_id:a,answer:c})},addIceCandidate(i,c,a){return o.post(`/streams/${i}/ice`,{session_id:a,...c})},sendStreamRequest(i,c,a){return o.post(`/streams/${i}`,{session_id:c,...a})},close(i,c){return o.delete(`/streams/${i}`,{session_id:c})}}}function nt(e,t,n,r){const o=ae(e,`${t}/agents/${n}`,r);return{createStream(i,c){return o.post("/streams",{driver_url:i.driver_url,face:i.face,config:i.config,output_resolution:i.output_resolution,compatibility_mode:i.compatibility_mode,stream_warmup:i.stream_warmup,session_timeout:i.session_timeout,fluent:i.fluent},c)},startConnection(i,c,a,s){return o.post(`/streams/${i}/sdp`,{session_id:a,answer:c},s)},addIceCandidate(i,c,a,s){return o.post(`/streams/${i}/ice`,{session_id:a,...c},s)},sendStreamRequest(i,c,a,s){return o.post(`/streams/${i}`,{session_id:c,...a},s)},close(i,c,a){return o.delete(`/streams/${i}`,{session_id:c},a)}}}function at(e,t,n){const r=(t.timestamp-e.timestamp)/1e3;return{duration:r,bytesReceived:t.bytesReceived-e.bytesReceived,bitrate:Math.round((t.bytesReceived-e.bytesReceived)*8/r),packetsReceived:t.packetsReceived-e.packetsReceived,packetsLost:t.packetsLost-e.packetsLost,framesDropped:t.framesDropped-e.framesDropped,framesDecoded:t.framesDecoded-e.framesDecoded,jitter:t.jitter,avgJitterDelayInInterval:(t.jitterBufferDelay-e.jitterBufferDelay)/(t.jitterBufferEmittedCount-e.jitterBufferEmittedCount),jitterBufferEmittedCount:t.jitterBufferEmittedCount-e.jitterBufferEmittedCount,jitterBufferDelay:(t.jitterBufferDelay-e.jitterBufferDelay)/r,framesPerSecond:t.framesPerSecond,freezeCount:t.freezeCount-e.freezeCount,freezeDuration:t.freezeDuration-e.freezeDuration,lowFpsCount:n}}function it(e){return e.filter(t=>t.freezeCount>0||t.framesPerSecond<21||t.framesDropped>0||t.packetsLost>0).map(t=>{const{timestamp:n,...r}=t,o=[];return t.freezeCount>0&&o.push("freeze"),t.framesPerSecond<21&&o.push("low fps"),t.framesDropped>0&&o.push("frames dropped"),t.packetsLost>0&&o.push("packet loss"),{...r,causes:o}})}function st(e){let t="",n=0;for(const r of e.values())if(r&&r.type==="codec"&&r.mimeType.startsWith("video")&&(t=r.mimeType.split("/")[1]),r&&r.type==="candidate-pair"&&(n=r.currentRoundTripTime),r&&r.type==="inbound-rtp"&&r.kind==="video")return{codec:t,rtt:n,timestamp:r.timestamp,bytesReceived:r.bytesReceived,packetsReceived:r.packetsReceived,packetsLost:r.packetsLost,framesDropped:r.framesDropped,framesDecoded:r.framesDecoded,jitter:r.jitter,jitterBufferDelay:r.jitterBufferDelay,jitterBufferEmittedCount:r.jitterBufferEmittedCount,avgJitterDelayInInterval:r.jitterBufferDelay/r.jitterBufferEmittedCount,frameWidth:r.frameWidth,frameHeight:r.frameHeight,framesPerSecond:r.framesPerSecond,freezeCount:r.freezeCount,freezeDuration:r.totalFreezesDuration};return{}}function ot(e,t,n){const r=e.map((s,u)=>u===0?n?{timestamp:s.timestamp,duration:0,rtt:s.rtt,bytesReceived:s.bytesReceived-n.bytesReceived,bitrate:(s.bytesReceived-n.bytesReceived)*8/(t/1e3),packetsReceived:s.packetsReceived-n.packetsReceived,packetsLost:s.packetsLost-n.packetsLost,framesDropped:s.framesDropped-n.framesDropped,framesDecoded:s.framesDecoded-n.framesDecoded,jitter:s.jitter,jitterBufferDelay:s.jitterBufferDelay-n.jitterBufferDelay,jitterBufferEmittedCount:s.jitterBufferEmittedCount-n.jitterBufferEmittedCount,avgJitterDelayInInterval:(s.jitterBufferDelay-n.jitterBufferDelay)/(s.jitterBufferEmittedCount-n.jitterBufferEmittedCount),framesPerSecond:s.framesPerSecond,freezeCount:s.freezeCount-n.freezeCount,freezeDuration:s.freezeDuration-n.freezeDuration}:{timestamp:s.timestamp,rtt:s.rtt,duration:0,bytesReceived:s.bytesReceived,bitrate:s.bytesReceived*8/(t/1e3),packetsReceived:s.packetsReceived,packetsLost:s.packetsLost,framesDropped:s.framesDropped,framesDecoded:s.framesDecoded,jitter:s.jitter,jitterBufferDelay:s.jitterBufferDelay,jitterBufferEmittedCount:s.jitterBufferEmittedCount,avgJitterDelayInInterval:s.jitterBufferDelay/s.jitterBufferEmittedCount,framesPerSecond:s.framesPerSecond,freezeCount:s.freezeCount,freezeDuration:s.freezeDuration}:{timestamp:s.timestamp,duration:t*u/1e3,rtt:s.rtt,bytesReceived:s.bytesReceived-e[u-1].bytesReceived,bitrate:(s.bytesReceived-e[u-1].bytesReceived)*8/(t/1e3),packetsReceived:s.packetsReceived-e[u-1].packetsReceived,packetsLost:s.packetsLost-e[u-1].packetsLost,framesDropped:s.framesDropped-e[u-1].framesDropped,framesDecoded:s.framesDecoded-e[u-1].framesDecoded,jitter:s.jitter,jitterBufferDelay:s.jitterBufferDelay-e[u-1].jitterBufferDelay,jitterBufferEmittedCount:s.jitterBufferEmittedCount-e[u-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(s.jitterBufferDelay-e[u-1].jitterBufferDelay)/(s.jitterBufferEmittedCount-e[u-1].jitterBufferEmittedCount),framesPerSecond:s.framesPerSecond,freezeCount:s.freezeCount-e[u-1].freezeCount,freezeDuration:s.freezeDuration-e[u-1].freezeDuration}),o=it(r),i=o.reduce((s,u)=>s+(u.causes.includes("low fps")?1:0),0),c=r.filter(s=>!!s.avgJitterDelayInInterval).map(s=>s.avgJitterDelayInInterval),a=r.filter(s=>!!s.rtt).map(s=>s.rtt);return{webRTCStats:{anomalies:o,minRtt:Math.min(...a),avgRtt:Ie(a),maxRtt:Math.max(...a),aggregateReport:at(e[0],e[e.length-1],i),minJitterDelayInInterval:Math.min(...c),maxJitterDelayInInterval:Math.max(...c),avgJitterDelayInInterval:Ie(c)},codec:e[0].codec,resolution:`${e[0].frameWidth}x${e[0].frameHeight}`}}const oe=100,ct=Math.max(Math.ceil(400/oe),1),dt=.25,ut=.28;function lt(){let e=0,t,n,r=0;return o=>{for(const i of o.values())if(i&&i.type==="inbound-rtp"&&i.kind==="video"){const c=i.jitterBufferDelay,a=i.jitterBufferEmittedCount;if(n&&a>n){const d=c-t,v=a-n;r=d/v}t=c,n=a;const s=i.framesDecoded,u=s-e>0;return e=s,{isReceiving:u,avgJitterDelayInInterval:r,freezeCount:i.freezeCount}}return{isReceiving:!1,avgJitterDelayInInterval:r}}}function ft(e,t,n,r,o,i=!1){let c=[],a,s=0,u=!1,d=Q.Unknown,v=Q.Unknown,B=0,L=0;const U=lt();return setInterval(async()=>{const K=await e.getStats(),{isReceiving:I,avgJitterDelayInInterval:Y,freezeCount:O}=U(K),b=st(K);if(I)s=0,B=O-L,v=Y<dt?Q.Strong:Y>ut&&B>1?Q.Weak:d,v!==d&&(o==null||o(v),d=v,L+=B,B=0),u||(r==null||r(w.Start),a=c[c.length-1],c=[],u=!0),c.push(b);else if(u&&(s++,s>=ct)){const l=ot(c,oe,a);r==null||r(w.Stop,l),t()||n(),L=O,u=!1}},oe)}let je=!1;const P=(e,t)=>je&&console.log(e,t),mt=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function Ae(e){switch(e){case"connected":return D.Connected;case"checking":return D.Connecting;case"failed":return D.Fail;case"new":return D.New;case"closed":return D.Closed;case"disconnected":return D.Disconnected;case"completed":return D.Completed;default:return D.New}}function gt(e){const[t,n=""]=e.split(/:(.+)/);try{const r=JSON.parse(n);return P("parsed data channel message",{subject:t,data:r}),{subject:t,data:r}}catch(r){return P("Failed to parse data channel message, returning data as string",{subject:t,rawData:n,error:r}),{subject:t,data:n}}}function ht({statsSignal:e,dataChannelSignal:t,onVideoStateChange:n,report:r}){e===w.Start&&t===w.Start?n==null||n(w.Start):e===w.Stop&&t===w.Stop&&(n==null||n(w.Stop,r))}function wt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:n,onAgentActivityStateChange:r,report:o}){e===w.Start?n==null||n(w.Start):e===w.Stop&&(n==null||n(w.Stop,o)),t===w.Start?r==null||r(X.Talking):t===w.Stop&&(r==null||r(X.Idle))}function be({statsSignal:e,dataChannelSignal:t,onVideoStateChange:n,onAgentActivityStateChange:r,streamType:o,report:i}){o===W.Legacy?ht({statsSignal:e,dataChannelSignal:t,onVideoStateChange:n,report:i}):o===W.Fluent&&wt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:n,onAgentActivityStateChange:r,report:i})}async function pt(e,t,{debug:n=!1,callbacks:r,auth:o,baseURL:i=Z,analytics:c}){var H;je=n;let a=!1,s=!1,u=w.Stop,d=w.Stop;const{startConnection:v,sendStreamRequest:B,close:L,createStream:U,addIceCandidate:K}=t.videoType===re.Clip?rt(o,i,e,r.onError):nt(o,i,e,r.onError),{id:I,offer:Y,ice_servers:O,session_id:b,fluent:l,interrupt_enabled:p}=await U(t);(H=r.onStreamCreated)==null||H.call(r,{stream_id:I,session_id:b,agent_id:e});const m=new mt({iceServers:O}),S=m.createDataChannel("JanusDataChannel");if(!b)throw new Error("Could not create session_id");const k=l?W.Fluent:W.Legacy;c.enrich({"stream-type":k});const y=t.stream_warmup&&!l,T=()=>a,z=()=>{var f;a=!0,s&&((f=r.onConnectionStateChange)==null||f.call(r,D.Connected))},F=ft(m,T,z,(f,g)=>be({statsSignal:d=f,dataChannelSignal:k===W.Legacy?u:void 0,onVideoStateChange:r.onVideoStateChange,onAgentActivityStateChange:r.onAgentActivityStateChange,report:g,streamType:k}),f=>{var g;return(g=r.onConnectivityStateChange)==null?void 0:g.call(r,f)},y);m.onicecandidate=f=>{var g;P("peerConnection.onicecandidate",f);try{f.candidate&&f.candidate.sdpMid&&f.candidate.sdpMLineIndex!==null?K(I,{candidate:f.candidate.candidate,sdpMid:f.candidate.sdpMid,sdpMLineIndex:f.candidate.sdpMLineIndex},b):K(I,{candidate:null},b)}catch(_){(g=r.onError)==null||g.call(r,_,{streamId:I})}},S.onopen=()=>{s=!0,(!y||a)&&z()};const C=f=>{var g;(g=r.onVideoIdChange)==null||g.call(r,f)};function j(f,g){if(f===A.StreamStarted&&typeof g=="object"&&"metadata"in g){const _=g.metadata;C(_.videoId)}f===A.StreamDone&&C(null),u=f===A.StreamStarted?w.Start:w.Stop,be({statsSignal:k===W.Legacy?d:void 0,dataChannelSignal:u,onVideoStateChange:r.onVideoStateChange,onAgentActivityStateChange:r.onAgentActivityStateChange,streamType:k})}function R(f,g){const _=typeof g=="string"?g:g==null?void 0:g.metadata;_&&c.enrich({streamMetadata:_}),c.track("agent-chat",{event:"ready"})}const N={[A.StreamStarted]:j,[A.StreamDone]:j,[A.StreamReady]:R};S.onmessage=f=>{var ee;const{subject:g,data:_}=gt(f.data);(ee=N[g])==null||ee.call(N,g,_)},m.oniceconnectionstatechange=()=>{var g;P("peerConnection.oniceconnectionstatechange => "+m.iceConnectionState);const f=Ae(m.iceConnectionState);f!==D.Connected&&((g=r.onConnectionStateChange)==null||g.call(r,f))},m.ontrack=f=>{var g;P("peerConnection.ontrack",f),(g=r.onSrcObjectReady)==null||g.call(r,f.streams[0])},await m.setRemoteDescription(Y),P("set remote description OK");const J=await m.createAnswer();return P("create answer OK"),await m.setLocalDescription(J),P("set local description OK"),await v(I,J,b),P("start connection OK"),{speak(f){return B(I,b,f)},async disconnect(){var f;if(I){const g=Ae(m.iceConnectionState);if(m){if(g===D.New){clearInterval(F);return}m.close(),m.oniceconnectionstatechange=null,m.onnegotiationneeded=null,m.onicecandidate=null,m.ontrack=null}try{g===D.Connected&&await L(I,b).catch(_=>{})}catch(_){P("Error on close stream connection",_)}(f=r.onAgentActivityStateChange)==null||f.call(r,X.Idle),clearInterval(F)}},sendDataChannelMessage(f){var g,_;if(!a||S.readyState!=="open"){P("Data channel is not ready for sending messages"),(g=r.onError)==null||g.call(r,new Error("Data channel is not ready for sending messages"),{streamId:I});return}try{S.send(f)}catch(ee){P("Error sending data channel message",ee),(_=r.onError)==null||_.call(r,ee,{streamId:I})}},sessionId:b,streamId:I,streamType:k,interruptAvailable:p}}function yt(e,t){const{streamOptions:n}=t??{};return{videoType:pe(e.presenter.type),output_resolution:n==null?void 0:n.outputResolution,session_timeout:n==null?void 0:n.sessionTimeout,stream_warmup:n==null?void 0:n.streamWarmup,compatibility_mode:n==null?void 0:n.compatibilityMode,fluent:n==null?void 0:n.fluent}}function vt(e,t,n,r,o){o===W.Fluent?kt(e,t,n,r,o):Dt(e,t,n,r,o)}function kt(e,t,n,r,o){e===w.Start?r.track("stream-session",{event:"start","stream-type":o}):e===w.Stop&&r.track("stream-session",{event:"stop",is_greenscreen:t.presenter.type==="clip"&&t.presenter.is_greenscreen,background:t.presenter.type==="clip"&&t.presenter.background,"stream-type":o,...n})}function Ct(e,t,n,r){$.get()<=0||(e===w.Start?n.linkTrack("agent-video",{event:"start",latency:$.get(!0),"stream-type":r},"start",[A.StreamVideoCreated]):e===w.Stop&&n.linkTrack("agent-video",{event:"stop",is_greenscreen:t.presenter.type==="clip"&&t.presenter.is_greenscreen,background:t.presenter.type==="clip"&&t.presenter.background,"stream-type":r},"done",[A.StreamVideoDone]))}function Dt(e,t,n,r,o){$.get()<=0||(e===w.Start?r.linkTrack("agent-video",{event:"start",latency:$.get(!0),"stream-type":o},"start",[A.StreamVideoCreated]):e===w.Stop&&r.linkTrack("agent-video",{event:"stop",is_greenscreen:t.presenter.type==="clip"&&t.presenter.is_greenscreen,background:t.presenter.type==="clip"&&t.presenter.background,"stream-type":o,...n},"done",[A.StreamVideoDone]))}function St(e,t,n){return $.reset(),new Promise(async(r,o)=>{try{const i=await pt(e.id,yt(e,t),{...t,analytics:n,callbacks:{...t.callbacks,onConnectionStateChange:c=>{var a,s;(s=(a=t.callbacks).onConnectionStateChange)==null||s.call(a,c),c===D.Connected&&r(i)},onVideoStateChange:(c,a)=>{var s,u;(u=(s=t.callbacks).onVideoStateChange)==null||u.call(s,c),vt(c,e,a,n,i.streamType)},onAgentActivityStateChange:c=>{var a,s;(s=(a=t.callbacks).onAgentActivityStateChange)==null||s.call(a,c),c===X.Talking?se.update():se.reset(),Ct(c===X.Talking?w.Start:w.Stop,e,n,i.streamType)}}})}catch(i){o(i)}})}async function Rt(e,t,n,r,o){var s,u,d,v;const{chat:i,chatMode:c}=await Te(e,n,r,t.mode,t.persistentChat,o);if(c&&c!==t.mode&&(t.mode=c,(u=(s=t.callbacks).onModeChange)==null||u.call(s,c),c===E.TextOnly))return(v=(d=t.callbacks).onError)==null||v.call(d,new ce(c)),{chat:i};const a=await St(e,t,r);return{chat:i,streamingManager:a}}async function Et(e,t){var Y,O,b;let n=!0,r=null;const o=t.mixpanelKey||Le,i=t.wsURL||Be,c=t.baseURL||Z,a={messages:[],chatMode:t.mode||E.Functional},s=Ve({token:o,agentId:e,isEnabled:t.enableAnalitics,distinctId:t.distinctId});s.track("agent-sdk",{event:"init"});const u=Re(t.auth,c,t.callbacks.onError),d=await u.getById(e);s.enrich(Ue(d));const{onMessage:v,clearQueue:B}=tt(s,a,t,d,()=>{var l;return(l=a.socketManager)==null?void 0:l.disconnect()});a.messages=qe(t.initialMessages),(O=(Y=t.callbacks).onNewMessage)==null||O.call(Y,[...a.messages],"answer");const L=l=>{r=l};s.track("agent-sdk",{event:"loaded",...We(d)});async function U(l){var T,z,F,C,j,R,N;(z=(T=t.callbacks).onConnectionStateChange)==null||z.call(T,D.Connecting),$.reset(),l&&!n&&(delete a.chat,(C=(F=t.callbacks).onNewMessage)==null||C.call(F,[...a.messages],"answer"));const p=t.mode===E.DirectPlayback?Promise.resolve(void 0):Ge(t.auth,i,{onMessage:v,onError:t.callbacks.onError}),m=ne(()=>Rt(d,{...t,callbacks:{...t.callbacks,onVideoIdChange:L}},u,s,a.chat),{limit:3,timeout:Pe,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:J=>(J==null?void 0:J.message)!=="Could not connect"&&J.status!==429,delayMs:1e3}).catch(J=>{var H,f;throw I(E.Maintenance),(f=(H=t.callbacks).onConnectionStateChange)==null||f.call(H,D.Fail),J}),[S,{streamingManager:k,chat:y}]=await Promise.all([p,m]);y&&y.id!==((j=a.chat)==null?void 0:j.id)&&((N=(R=t.callbacks).onNewChat)==null||N.call(R,y.id)),a.streamingManager=k,a.socketManager=S,a.chat=y,n=!1,I((y==null?void 0:y.chat_mode)??t.mode??E.Functional)}async function K(){var l,p,m,S;(l=a.socketManager)==null||l.disconnect(),await((p=a.streamingManager)==null?void 0:p.disconnect()),delete a.streamingManager,delete a.socketManager,(S=(m=t.callbacks).onConnectionStateChange)==null||S.call(m,D.Disconnected)}async function I(l){var p,m;l!==a.chatMode&&(s.track("agent-mode-change",{mode:l}),a.chatMode=l,a.chatMode!==E.Functional&&await K(),(m=(p=t.callbacks).onModeChange)==null||m.call(p,l))}return{agent:d,getStreamType:()=>{var l;return(l=a.streamingManager)==null?void 0:l.streamType},getIsInterruptAvailable:()=>{var l;return((l=a.streamingManager)==null?void 0:l.interruptAvailable)??!1},starterMessages:((b=d.knowledge)==null?void 0:b.starter_message)||[],getSTTToken:()=>u.getSTTToken(d.id),changeMode:I,enrichAnalytics:s.enrich,async connect(){var l;await U(!0),s.track("agent-chat",{event:"connect",chatId:(l=a.chat)==null?void 0:l.id,agentId:d.id,mode:a.chatMode})},async reconnect(){var l;await K(),await U(!1),s.track("agent-chat",{event:"reconnect",chatId:(l=a.chat)==null?void 0:l.id,agentId:d.id,mode:a.chatMode})},async disconnect(){var l;await K(),s.track("agent-chat",{event:"disconnect",chatId:(l=a.chat)==null?void 0:l.id,agentId:d.id,mode:a.chatMode})},async chat(l){var k,y,T,z,F;const p=()=>{if(Ce(t.mode))throw new V(`${t.mode} is enabled, chat is disabled`);if(l.length>=800)throw new V("Message cannot be more than 800 characters");if(l.length===0)throw new V("Message cannot be empty");if(a.chatMode===E.Maintenance)throw new V("Chat is in maintenance mode");if(![E.TextOnly,E.Playground].includes(a.chatMode)){if(!a.streamingManager)throw new V("Streaming manager is not initialized");if(!a.chat)throw new V("Chat is not initialized")}},m=async()=>{var C,j;if(!a.chat){const R=await Te(d,u,s,a.chatMode,t.persistentChat);if(!R.chat)throw new x(a.chatMode,!!t.persistentChat);a.chat=R.chat,(j=(C=t.callbacks).onNewChat)==null||j.call(C,a.chat.id)}return a.chat.id},S=async(C,j)=>ne(()=>{var R,N;return u.chat(d.id,j,{chatMode:a.chatMode,streamId:(R=a.streamingManager)==null?void 0:R.streamId,sessionId:(N=a.streamingManager)==null?void 0:N.sessionId,messages:C.map(({matches:J,...H})=>H)},{...Me(a.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:R=>{var H,f,g,_;const N=(H=R==null?void 0:R.message)==null?void 0:H.includes("missing or invalid session_id");return!((f=R==null?void 0:R.message)==null?void 0:f.includes("Stream Error"))&&!N?((_=(g=t.callbacks).onError)==null||_.call(g,R),!1):!0},onRetry:async()=>{await K(),await U(!1)}});try{B(),p(),a.messages.push({id:G(),role:"user",content:l,created_at:new Date($.update()).toISOString()}),(y=(k=t.callbacks).onNewMessage)==null||y.call(k,[...a.messages],"user");const C=await m(),j=await S([...a.messages],C);return a.messages.push({id:G(),role:"assistant",content:j.result||"",created_at:new Date().toISOString(),context:j.context,matches:j.matches}),s.track("agent-message-send",{event:"success",mode:a.chatMode,messages:a.messages.length+1}),j.result&&((z=(T=t.callbacks).onNewMessage)==null||z.call(T,[...a.messages],"answer"),s.track("agent-message-received",{latency:$.get(!0),mode:a.chatMode,messages:a.messages.length})),j}catch(C){throw((F=a.messages[a.messages.length-1])==null?void 0:F.role)==="assistant"&&a.messages.pop(),s.track("agent-message-send",{event:"error",mode:a.chatMode,messages:a.messages.length}),C}},rate(l,p,m){var y,T,z,F;const S=a.messages.find(C=>C.id===l);if(a.chat){if(!S)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const k=((y=S.matches)==null?void 0:y.map(C=>[C.document_id,C.id]))??[];return s.track("agent-rate",{event:m?"update":"create",thumb:p===1?"up":"down",knowledge_id:((T=d.knowledge)==null?void 0:T.id)??"",mode:a.chatMode,matches:k,score:p}),m?u.updateRating(d.id,a.chat.id,m,{knowledge_id:((z=d.knowledge)==null?void 0:z.id)??"",message_id:l,matches:k,score:p}):u.createRating(d.id,a.chat.id,{knowledge_id:((F=d.knowledge)==null?void 0:F.id)??"",message_id:l,matches:k,score:p})},deleteRate(l){var p;if(!a.chat)throw new Error("Chat is not initialized");return s.track("agent-rate-delete",{type:"text",chat_id:(p=a.chat)==null?void 0:p.id,id:l,mode:a.chatMode}),u.deleteRating(d.id,a.chat.id,l)},async speak(l){var k,y,T;function p(){if(typeof l=="string"){if(!d.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:d.presenter.voice,input:l,ssml:!1}}if(l.type==="text"&&!l.provider){if(!d.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:d.presenter.voice,input:l.input,ssml:l.ssml}}return l}const m=p();if(s.track("agent-speak",m),$.update(),a.messages&&m.type==="text"&&(a.messages.push({id:G(),role:"assistant",content:m.input,created_at:new Date($.get(!0)).toISOString()}),(y=(k=t.callbacks).onNewMessage)==null||y.call(k,[...a.messages],"answer")),ze(a.chatMode))return{duration:0,video_id:"",status:"success"};if(!a.streamingManager)throw new Error("Please connect to the agent first");return a.streamingManager.speak({script:m,metadata:{chat_id:(T=a.chat)==null?void 0:T.id,agent_id:d.id}})},async interrupt({type:l}){var m,S,k,y,T;Xe(a.streamingManager,(m=a.streamingManager)==null?void 0:m.streamType,r);const p=a.messages[a.messages.length-1];s.track("agent-video-interrupt",{type:l||"click",stream_id:(S=a.streamingManager)==null?void 0:S.streamId,agent_id:d.id,owner_id:d.owner_id,video_duration_to_interrupt:se.get(!0),message_duration_to_interrupt:$.get(!0),chat_id:(k=a.chat)==null?void 0:k.id,mode:a.chatMode}),p.interrupted=!0,(T=(y=t.callbacks).onNewMessage)==null||T.call(y,[...a.messages],"answer"),Ye(a.streamingManager,r)}}}function It(e,t,n){const{getById:r}=Re(t,n||Z);return r(e)}h.AgentActivityState=X,h.AgentStatus=fe,h.ChatCreationFailed=x,h.ChatMode=E,h.ChatModeDowngraded=ce,h.ChatProgress=q,h.ConnectionState=D,h.ConnectivityState=Q,h.DocumentType=we,h.KnowledgeType=he,h.PlanGroup=le,h.Providers=ye,h.RateState=me,h.StreamEvents=A,h.StreamType=W,h.StreamingState=w,h.Subject=ge,h.UserPlan=ue,h.ValidationError=V,h.VideoType=re,h.VoiceAccess=ve,h.WsError=de,h.createAgentManager=Et,h.getAgent=It,h.mapVideoType=pe,Object.defineProperty(h,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.1.6-staging.20",
4
+ "version": "1.1.6",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {