@d-id/client-sdk 1.1.6 → 1.1.7

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), ue = (e) => e && [M.DirectPlayback, M.Off].includes(e);
69
+ }, Ne = (e) => [M.TextOnly, M.Playground, M.Maintenance].includes(e), le = (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 le() {
106
+ function ue() {
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 le() {
112
112
  return e;
113
113
  }
114
114
  let Fe = V();
115
- function fe(e) {
115
+ function me(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}.${le()}_${Fe}`;
121
+ return `Client-Key ${e.clientKey}.${ue()}_${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: fe(e),
139
+ Authorization: me(e),
140
140
  "Content-Type": "application/json"
141
141
  }
142
142
  }));
143
143
  if (!s.ok) {
144
- let u = await s.text().catch(() => `Failed to fetch with status ${s.status}`);
145
- const d = new Error(u);
144
+ let l = await s.text().catch(() => `Failed to fetch with status ${s.status}`);
145
+ const d = new Error(l);
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 me(e, t = Z, n) {
184
+ function fe(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, u, d;
262
+ var s, l, 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
- ...(u = o == null ? void 0 : o.script) == null ? void 0 : u.provider,
280
+ ...(l = o == null ? void 0 : o.script) == null ? void 0 : l.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 || le(),
294
+ distinct_id: e.distinctId || ue(),
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((u, d) => c.events[d] ? {
350
- ...u,
349
+ const s = i.reduce((l, d) => c.events[d] ? {
350
+ ...l,
351
351
  ...c.events[d].props
352
- } : u, {});
353
- this.track(n, s), c.resolvedDependencies = c.resolvedDependencies.filter((u) => !i.includes(u)), i.forEach((u) => {
354
- delete c.events[u];
352
+ } : l, {});
353
+ this.track(n, s), c.resolvedDependencies = c.resolvedDependencies.filter((l) => !i.includes(l)), i.forEach((l) => {
354
+ delete c.events[l];
355
355
  });
356
356
  }
357
357
  }
@@ -366,22 +366,27 @@ function he() {
366
366
  };
367
367
  }
368
368
  const N = he(), re = he();
369
- function we(e) {
369
+ function pe(e) {
370
370
  return e === M.Playground ? {
371
371
  headers: {
372
372
  [Be]: "true"
373
373
  }
374
374
  } : {};
375
375
  }
376
- async function pe(e, t, n, r, o = !1, i) {
376
+ async function we(e, t, n, r, o = !1, i) {
377
377
  try {
378
- return !i && !ue(r) && (i = await t.newChat(e.id, {
378
+ return !i && !le(r) && (i = await t.newChat(e.id, {
379
379
  persist: o
380
- }, we(r)), n.track("agent-chat", {
380
+ }, pe(r)), n.track("agent-chat", {
381
381
  event: "created",
382
- chat_id: i.id,
383
- agent_id: e.id,
384
- mode: r
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
+ } : {}
385
390
  })), {
386
391
  chat: i,
387
392
  chatMode: (i == null ? void 0 : i.chat_mode) ?? r
@@ -428,10 +433,10 @@ function Oe(e) {
428
433
  onMessage: c = null,
429
434
  onOpen: a = null,
430
435
  onClose: s = null,
431
- onError: u = null
432
- } = r || {}, d = new WebSocket(`${o}?authorization=${fe(i)}`);
436
+ onError: l = null
437
+ } = r || {}, d = new WebSocket(`${o}?authorization=${me(i)}`);
433
438
  d.onmessage = c, d.onclose = s, d.onerror = (y) => {
434
- console.error(y), u == null || u("Websocket failed to connect", y), n(y);
439
+ console.error(y), l == null || l("Websocket failed to connect", y), n(y);
435
440
  }, d.onopen = (y) => {
436
441
  a == null || a(y), t(d);
437
442
  };
@@ -498,7 +503,7 @@ function rt(e, t, n, r, o) {
498
503
  return {
499
504
  clearQueue: () => i = {},
500
505
  onMessage: (c, a) => {
501
- var s, u;
506
+ var s, l;
502
507
  if ("content" in a)
503
508
  tt(c, a, i, t, n.callbacks.onNewMessage), c === q.Answer && e.track("agent-message-received", {
504
509
  messages: t.messages.length,
@@ -520,7 +525,7 @@ function rt(e, t, n, r, o) {
520
525
  event: x
521
526
  }, c, ["done"]);
522
527
  }
523
- A.includes(c) && ((u = (s = n.callbacks).onError) == null || u.call(s, new Error(`Stream failed with event ${c}`), {
528
+ A.includes(c) && ((l = (s = n.callbacks).onError) == null || l.call(s, new Error(`Stream failed with event ${c}`), {
524
529
  data: a
525
530
  })), a.event === d.StreamDone && o();
526
531
  }
@@ -662,7 +667,7 @@ function ot(e) {
662
667
  return {};
663
668
  }
664
669
  function ct(e, t, n) {
665
- const r = e.map((s, u) => u === 0 ? n ? {
670
+ const r = e.map((s, l) => l === 0 ? n ? {
666
671
  timestamp: s.timestamp,
667
672
  duration: 0,
668
673
  rtt: s.rtt,
@@ -698,22 +703,22 @@ function ct(e, t, n) {
698
703
  freezeDuration: s.freezeDuration
699
704
  } : {
700
705
  timestamp: s.timestamp,
701
- duration: t * u / 1e3,
706
+ duration: t * l / 1e3,
702
707
  rtt: s.rtt,
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,
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,
709
714
  jitter: s.jitter,
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),
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),
713
718
  framesPerSecond: s.framesPerSecond,
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);
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);
717
722
  return {
718
723
  webRTCStats: {
719
724
  anomalies: o,
@@ -729,8 +734,8 @@ function ct(e, t, n) {
729
734
  resolution: `${e[0].frameWidth}x${e[0].frameHeight}`
730
735
  };
731
736
  }
732
- const ne = 100, dt = Math.max(Math.ceil(400 / ne), 1), ut = 0.25, lt = 0.28;
733
- function ft() {
737
+ const ne = 100, dt = Math.max(Math.ceil(400 / ne), 1), lt = 0.25, ut = 0.28;
738
+ function mt() {
734
739
  let e = 0, t, n, r = 0;
735
740
  return (o) => {
736
741
  for (const i of o.values())
@@ -741,9 +746,9 @@ function ft() {
741
746
  r = d / y;
742
747
  }
743
748
  t = c, n = a;
744
- const s = i.framesDecoded, u = s - e > 0;
749
+ const s = i.framesDecoded, l = s - e > 0;
745
750
  return e = s, {
746
- isReceiving: u,
751
+ isReceiving: l,
747
752
  avgJitterDelayInInterval: r,
748
753
  freezeCount: i.freezeCount
749
754
  };
@@ -754,9 +759,9 @@ function ft() {
754
759
  };
755
760
  };
756
761
  }
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();
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();
760
765
  return setInterval(async () => {
761
766
  const F = await e.getStats(), {
762
767
  isReceiving: R,
@@ -764,10 +769,10 @@ function mt(e, t, n, r, o, i = !1) {
764
769
  freezeCount: K
765
770
  } = x(F), T = ot(F);
766
771
  if (R)
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;
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;
771
776
  }
772
777
  }, ne);
773
778
  }
@@ -815,7 +820,7 @@ function ht(e) {
815
820
  };
816
821
  }
817
822
  }
818
- function wt({
823
+ function pt({
819
824
  statsSignal: e,
820
825
  dataChannelSignal: t,
821
826
  onVideoStateChange: n,
@@ -823,7 +828,7 @@ function wt({
823
828
  }) {
824
829
  e === h.Start && t === h.Start ? n == null || n(h.Start) : e === h.Stop && t === h.Stop && (n == null || n(h.Stop, r));
825
830
  }
826
- function pt({
831
+ function wt({
827
832
  statsSignal: e,
828
833
  dataChannelSignal: t,
829
834
  onVideoStateChange: n,
@@ -840,12 +845,12 @@ function oe({
840
845
  streamType: o,
841
846
  report: i
842
847
  }) {
843
- o === W.Legacy ? wt({
848
+ o === W.Legacy ? pt({
844
849
  statsSignal: e,
845
850
  dataChannelSignal: t,
846
851
  onVideoStateChange: n,
847
852
  report: i
848
- }) : o === W.Fluent && pt({
853
+ }) : o === W.Fluent && wt({
849
854
  statsSignal: e,
850
855
  dataChannelSignal: t,
851
856
  onVideoStateChange: n,
@@ -862,7 +867,7 @@ async function yt(e, t, {
862
867
  }) {
863
868
  var J;
864
869
  ye = n;
865
- let a = !1, s = !1, u = h.Stop, d = h.Stop;
870
+ let a = !1, s = !1, l = h.Stop, d = h.Stop;
866
871
  const {
867
872
  startConnection: y,
868
873
  sendStreamRequest: A,
@@ -874,45 +879,45 @@ async function yt(e, t, {
874
879
  offer: U,
875
880
  ice_servers: K,
876
881
  session_id: T,
877
- fluent: l,
878
- interrupt_enabled: w
882
+ fluent: u,
883
+ interrupt_enabled: p
879
884
  } = await x(t);
880
885
  (J = r.onStreamCreated) == null || J.call(r, {
881
886
  stream_id: R,
882
887
  session_id: T,
883
888
  agent_id: e
884
889
  });
885
- const m = new gt({
890
+ const f = new gt({
886
891
  iceServers: K
887
- }), D = m.createDataChannel("JanusDataChannel");
892
+ }), D = f.createDataChannel("JanusDataChannel");
888
893
  if (!T)
889
894
  throw new Error("Could not create session_id");
890
- const v = l ? W.Fluent : W.Legacy;
895
+ const v = u ? W.Fluent : W.Legacy;
891
896
  c.enrich({
892
897
  "stream-type": v
893
898
  });
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,
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,
900
905
  onVideoStateChange: r.onVideoStateChange,
901
906
  onAgentActivityStateChange: r.onAgentActivityStateChange,
902
907
  report: g,
903
908
  streamType: v
904
- }), (f) => {
909
+ }), (m) => {
905
910
  var g;
906
- return (g = r.onConnectivityStateChange) == null ? void 0 : g.call(r, f);
907
- }, p);
908
- m.onicecandidate = (f) => {
911
+ return (g = r.onConnectivityStateChange) == null ? void 0 : g.call(r, m);
912
+ }, w);
913
+ f.onicecandidate = (m) => {
909
914
  var g;
910
- b("peerConnection.onicecandidate", f);
915
+ b("peerConnection.onicecandidate", m);
911
916
  try {
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
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
916
921
  }, T) : F(R, {
917
922
  candidate: null
918
923
  }, T);
@@ -922,26 +927,26 @@ async function yt(e, t, {
922
927
  });
923
928
  }
924
929
  }, D.onopen = () => {
925
- s = !0, (!p || a) && $();
930
+ s = !0, (!w || a) && $();
926
931
  };
927
- const k = (f) => {
932
+ const k = (m) => {
928
933
  var g;
929
- (g = r.onVideoIdChange) == null || g.call(r, f);
934
+ (g = r.onVideoIdChange) == null || g.call(r, m);
930
935
  };
931
- function E(f, g) {
932
- if (f === j.StreamStarted && typeof g == "object" && "metadata" in g) {
936
+ function E(m, g) {
937
+ if (m === j.StreamStarted && typeof g == "object" && "metadata" in g) {
933
938
  const S = g.metadata;
934
939
  k(S.videoId);
935
940
  }
936
- f === j.StreamDone && k(null), u = f === j.StreamStarted ? h.Start : h.Stop, oe({
941
+ m === j.StreamDone && k(null), l = m === j.StreamStarted ? h.Start : h.Stop, oe({
937
942
  statsSignal: v === W.Legacy ? d : void 0,
938
- dataChannelSignal: u,
943
+ dataChannelSignal: l,
939
944
  onVideoStateChange: r.onVideoStateChange,
940
945
  onAgentActivityStateChange: r.onAgentActivityStateChange,
941
946
  streamType: v
942
947
  });
943
948
  }
944
- function C(f, g) {
949
+ function C(m, g) {
945
950
  const S = typeof g == "string" ? g : g == null ? void 0 : g.metadata;
946
951
  S && c.enrich({
947
952
  streamMetadata: S
@@ -954,44 +959,44 @@ async function yt(e, t, {
954
959
  [j.StreamDone]: E,
955
960
  [j.StreamReady]: C
956
961
  };
957
- D.onmessage = (f) => {
962
+ D.onmessage = (m) => {
958
963
  var Y;
959
964
  const {
960
965
  subject: g,
961
966
  data: S
962
- } = ht(f.data);
967
+ } = ht(m.data);
963
968
  (Y = L[g]) == null || Y.call(L, g, S);
964
- }, m.oniceconnectionstatechange = () => {
969
+ }, f.oniceconnectionstatechange = () => {
965
970
  var g;
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) => {
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) => {
970
975
  var g;
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"), {
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"), {
975
980
  /**
976
981
  * Method to send request to server to get clip or talk depend on you payload
977
982
  * @param payload
978
983
  */
979
- speak(f) {
980
- return A(R, T, f);
984
+ speak(m) {
985
+ return A(R, T, m);
981
986
  },
982
987
  /**
983
988
  * Method to close RTC connection
984
989
  */
985
990
  async disconnect() {
986
- var f;
991
+ var m;
987
992
  if (R) {
988
- const g = se(m.iceConnectionState);
989
- if (m) {
993
+ const g = se(f.iceConnectionState);
994
+ if (f) {
990
995
  if (g === I.New) {
991
996
  clearInterval(B);
992
997
  return;
993
998
  }
994
- m.close(), m.oniceconnectionstatechange = null, m.onnegotiationneeded = null, m.onicecandidate = null, m.ontrack = null;
999
+ f.close(), f.oniceconnectionstatechange = null, f.onnegotiationneeded = null, f.onicecandidate = null, f.ontrack = null;
995
1000
  }
996
1001
  try {
997
1002
  g === I.Connected && await P(R, T).catch((S) => {
@@ -999,13 +1004,13 @@ async function yt(e, t, {
999
1004
  } catch (S) {
1000
1005
  b("Error on close stream connection", S);
1001
1006
  }
1002
- (f = r.onAgentActivityStateChange) == null || f.call(r, X.Idle), clearInterval(B);
1007
+ (m = r.onAgentActivityStateChange) == null || m.call(r, X.Idle), clearInterval(B);
1003
1008
  }
1004
1009
  },
1005
1010
  /**
1006
1011
  * Method to send data channel messages to the server
1007
1012
  */
1008
- sendDataChannelMessage(f) {
1013
+ sendDataChannelMessage(m) {
1009
1014
  var g, S;
1010
1015
  if (!a || D.readyState !== "open") {
1011
1016
  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"), {
@@ -1014,7 +1019,7 @@ async function yt(e, t, {
1014
1019
  return;
1015
1020
  }
1016
1021
  try {
1017
- D.send(f);
1022
+ D.send(m);
1018
1023
  } catch (Y) {
1019
1024
  b("Error sending data channel message", Y), (S = r.onError) == null || S.call(r, Y, {
1020
1025
  streamId: R
@@ -1030,7 +1035,7 @@ async function yt(e, t, {
1030
1035
  */
1031
1036
  streamId: R,
1032
1037
  streamType: v,
1033
- interruptAvailable: w
1038
+ interruptAvailable: p
1034
1039
  };
1035
1040
  }
1036
1041
  function vt(e, t) {
@@ -1099,8 +1104,8 @@ function St(e, t, n) {
1099
1104
  (s = (a = t.callbacks).onConnectionStateChange) == null || s.call(a, c), c === I.Connected && r(i);
1100
1105
  },
1101
1106
  onVideoStateChange: (c, a) => {
1102
- var s, u;
1103
- (u = (s = t.callbacks).onVideoStateChange) == null || u.call(s, c), kt(c, e, a, n, i.streamType);
1107
+ var s, l;
1108
+ (l = (s = t.callbacks).onVideoStateChange) == null || l.call(s, c), kt(c, e, a, n, i.streamType);
1104
1109
  },
1105
1110
  onAgentActivityStateChange: (c) => {
1106
1111
  var a, s;
@@ -1114,12 +1119,12 @@ function St(e, t, n) {
1114
1119
  });
1115
1120
  }
1116
1121
  async function It(e, t, n, r, o) {
1117
- var s, u, d, y;
1122
+ var s, l, d, y;
1118
1123
  const {
1119
1124
  chat: i,
1120
1125
  chatMode: c
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))
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))
1123
1128
  return (y = (d = t.callbacks).onError) == null || y.call(d, new Ce(c)), {
1124
1129
  chat: i
1125
1130
  };
@@ -1144,36 +1149,36 @@ async function Et(e, t) {
1144
1149
  s.track("agent-sdk", {
1145
1150
  event: "init"
1146
1151
  });
1147
- const u = me(t.auth, c, t.callbacks.onError), d = await u.getById(e);
1152
+ const l = fe(t.auth, c, t.callbacks.onError), d = await l.getById(e);
1148
1153
  s.enrich(Ue(d));
1149
1154
  const {
1150
1155
  onMessage: y,
1151
1156
  clearQueue: A
1152
1157
  } = rt(s, a, t, d, () => {
1153
- var l;
1154
- return (l = a.socketManager) == null ? void 0 : l.disconnect();
1158
+ var u;
1159
+ return (u = a.socketManager) == null ? void 0 : u.disconnect();
1155
1160
  });
1156
1161
  a.messages = Xe(t.initialMessages), (K = (U = t.callbacks).onNewMessage) == null || K.call(U, [...a.messages], "answer");
1157
- const P = (l) => {
1158
- r = l;
1162
+ const P = (u) => {
1163
+ r = u;
1159
1164
  };
1160
1165
  s.track("agent-sdk", {
1161
1166
  event: "loaded",
1162
1167
  ...We(d)
1163
1168
  });
1164
- async function x(l) {
1169
+ async function x(u) {
1165
1170
  var _, $, B, k, E, C, L;
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, {
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, {
1168
1173
  onMessage: y,
1169
1174
  onError: t.callbacks.onError
1170
- }), m = te(() => It(d, {
1175
+ }), f = te(() => It(d, {
1171
1176
  ...t,
1172
1177
  callbacks: {
1173
1178
  ...t.callbacks,
1174
1179
  onVideoIdChange: P
1175
1180
  }
1176
- }, u, s, a.chat), {
1181
+ }, l, s, a.chat), {
1177
1182
  limit: 3,
1178
1183
  timeout: $e,
1179
1184
  timeoutErrorMessage: "Timeout initializing the stream",
@@ -1181,73 +1186,88 @@ async function Et(e, t) {
1181
1186
  shouldRetryFn: (z) => (z == null ? void 0 : z.message) !== "Could not connect" && z.status !== 429,
1182
1187
  delayMs: 1e3
1183
1188
  }).catch((z) => {
1184
- var J, f;
1185
- throw R(M.Maintenance), (f = (J = t.callbacks).onConnectionStateChange) == null || f.call(J, I.Fail), z;
1189
+ var J, m;
1190
+ throw R(M.Maintenance), (m = (J = t.callbacks).onConnectionStateChange) == null || m.call(J, I.Fail), z;
1186
1191
  }), [D, {
1187
1192
  streamingManager: v,
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);
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);
1191
1196
  }
1192
1197
  async function F() {
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);
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);
1195
1200
  }
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));
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));
1201
1206
  }
1202
1207
  return {
1203
1208
  agent: d,
1204
1209
  getStreamType: () => {
1205
- var l;
1206
- return (l = a.streamingManager) == null ? void 0 : l.streamType;
1210
+ var u;
1211
+ return (u = a.streamingManager) == null ? void 0 : u.streamType;
1207
1212
  },
1208
1213
  getIsInterruptAvailable: () => {
1209
- var l;
1210
- return ((l = a.streamingManager) == null ? void 0 : l.interruptAvailable) ?? !1;
1214
+ var u;
1215
+ return ((u = a.streamingManager) == null ? void 0 : u.interruptAvailable) ?? !1;
1211
1216
  },
1212
1217
  starterMessages: ((T = d.knowledge) == null ? void 0 : T.starter_message) || [],
1213
- getSTTToken: () => u.getSTTToken(d.id),
1218
+ getSTTToken: () => l.getSTTToken(d.id),
1214
1219
  changeMode: R,
1215
1220
  enrichAnalytics: s.enrich,
1216
1221
  async connect() {
1217
- var l;
1222
+ var u;
1218
1223
  await x(!0), s.track("agent-chat", {
1219
1224
  event: "connect",
1220
- chatId: (l = a.chat) == null ? void 0 : l.id,
1225
+ chatId: (u = a.chat) == null ? void 0 : u.id,
1221
1226
  agentId: d.id,
1222
- mode: a.chatMode
1227
+ mode: a.chatMode,
1228
+ access: d.access,
1229
+ name: d.preview_name,
1230
+ ...d.access === "public" ? {
1231
+ from: "agent-template"
1232
+ } : {}
1223
1233
  });
1224
1234
  },
1225
1235
  async reconnect() {
1226
- var l;
1236
+ var u;
1227
1237
  await F(), await x(!1), s.track("agent-chat", {
1228
1238
  event: "reconnect",
1229
- chatId: (l = a.chat) == null ? void 0 : l.id,
1239
+ chatId: (u = a.chat) == null ? void 0 : u.id,
1230
1240
  agentId: d.id,
1231
- mode: a.chatMode
1241
+ mode: a.chatMode,
1242
+ access: d.access,
1243
+ name: d.preview_name,
1244
+ ...d.access === "public" ? {
1245
+ from: "agent-template"
1246
+ } : {}
1232
1247
  });
1233
1248
  },
1234
1249
  async disconnect() {
1235
- var l;
1250
+ var u;
1236
1251
  await F(), s.track("agent-chat", {
1237
1252
  event: "disconnect",
1238
- chatId: (l = a.chat) == null ? void 0 : l.id,
1253
+ chatId: (u = a.chat) == null ? void 0 : u.id,
1239
1254
  agentId: d.id,
1240
- mode: a.chatMode
1255
+ mode: a.chatMode,
1256
+ access: d.access,
1257
+ name: d.preview_name,
1258
+ ...d.access === "public" ? {
1259
+ from: "agent-template"
1260
+ } : {}
1241
1261
  });
1242
1262
  },
1243
- async chat(l) {
1244
- var v, p, _, $, B;
1245
- const w = () => {
1246
- if (ue(t.mode))
1263
+ async chat(u) {
1264
+ var v, w, _, $, B;
1265
+ const p = () => {
1266
+ if (le(t.mode))
1247
1267
  throw new H(`${t.mode} is enabled, chat is disabled`);
1248
- if (l.length >= 800)
1268
+ if (u.length >= 800)
1249
1269
  throw new H("Message cannot be more than 800 characters");
1250
- if (l.length === 0)
1270
+ if (u.length === 0)
1251
1271
  throw new H("Message cannot be empty");
1252
1272
  if (a.chatMode === M.Maintenance)
1253
1273
  throw new H("Chat is in maintenance mode");
@@ -1257,10 +1277,10 @@ async function Et(e, t) {
1257
1277
  if (!a.chat)
1258
1278
  throw new H("Chat is not initialized");
1259
1279
  }
1260
- }, m = async () => {
1280
+ }, f = async () => {
1261
1281
  var k, E;
1262
1282
  if (!a.chat) {
1263
- const C = await pe(d, u, s, a.chatMode, t.persistentChat);
1283
+ const C = await we(d, l, s, a.chatMode, t.persistentChat);
1264
1284
  if (!C.chat)
1265
1285
  throw new De(a.chatMode, !!t.persistentChat);
1266
1286
  a.chat = C.chat, (E = (k = t.callbacks).onNewChat) == null || E.call(k, a.chat.id);
@@ -1268,7 +1288,7 @@ async function Et(e, t) {
1268
1288
  return a.chat.id;
1269
1289
  }, D = async (k, E) => te(() => {
1270
1290
  var C, L;
1271
- return u.chat(d.id, E, {
1291
+ return l.chat(d.id, E, {
1272
1292
  chatMode: a.chatMode,
1273
1293
  streamId: (C = a.streamingManager) == null ? void 0 : C.streamId,
1274
1294
  sessionId: (L = a.streamingManager) == null ? void 0 : L.sessionId,
@@ -1277,28 +1297,28 @@ async function Et(e, t) {
1277
1297
  ...J
1278
1298
  }) => J)
1279
1299
  }, {
1280
- ...we(a.chatMode),
1300
+ ...pe(a.chatMode),
1281
1301
  skipErrorHandler: !0
1282
1302
  });
1283
1303
  }, {
1284
1304
  limit: 2,
1285
1305
  shouldRetryFn: (C) => {
1286
- var J, f, g, S;
1306
+ var J, m, g, S;
1287
1307
  const L = (J = C == null ? void 0 : C.message) == null ? void 0 : J.includes("missing or invalid session_id");
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;
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;
1289
1309
  },
1290
1310
  onRetry: async () => {
1291
1311
  await F(), await x(!1);
1292
1312
  }
1293
1313
  });
1294
1314
  try {
1295
- A(), w(), a.messages.push({
1315
+ A(), p(), a.messages.push({
1296
1316
  id: V(),
1297
1317
  role: "user",
1298
- content: l,
1318
+ content: u,
1299
1319
  created_at: new Date(N.update()).toISOString()
1300
- }), (p = (v = t.callbacks).onNewMessage) == null || p.call(v, [...a.messages], "user");
1301
- const k = await m(), E = await D([...a.messages], k);
1320
+ }), (w = (v = t.callbacks).onNewMessage) == null || w.call(v, [...a.messages], "user");
1321
+ const k = await f(), E = await D([...a.messages], k);
1302
1322
  return a.messages.push({
1303
1323
  id: V(),
1304
1324
  role: "assistant",
@@ -1323,77 +1343,77 @@ async function Et(e, t) {
1323
1343
  }), k;
1324
1344
  }
1325
1345
  },
1326
- rate(l, w, m) {
1327
- var p, _, $, B;
1328
- const D = a.messages.find((k) => k.id === l);
1346
+ rate(u, p, f) {
1347
+ var w, _, $, B;
1348
+ const D = a.messages.find((k) => k.id === u);
1329
1349
  if (a.chat) {
1330
1350
  if (!D)
1331
1351
  throw new Error("Message not found");
1332
1352
  } else
1333
1353
  throw new Error("Chat is not initialized");
1334
- const v = ((p = D.matches) == null ? void 0 : p.map((k) => [k.document_id, k.id])) ?? [];
1354
+ const v = ((w = D.matches) == null ? void 0 : w.map((k) => [k.document_id, k.id])) ?? [];
1335
1355
  return s.track("agent-rate", {
1336
- event: m ? "update" : "create",
1337
- thumb: w === 1 ? "up" : "down",
1356
+ event: f ? "update" : "create",
1357
+ thumb: p === 1 ? "up" : "down",
1338
1358
  knowledge_id: ((_ = d.knowledge) == null ? void 0 : _.id) ?? "",
1339
1359
  mode: a.chatMode,
1340
1360
  matches: v,
1341
- score: w
1342
- }), m ? u.updateRating(d.id, a.chat.id, m, {
1361
+ score: p
1362
+ }), f ? l.updateRating(d.id, a.chat.id, f, {
1343
1363
  knowledge_id: (($ = d.knowledge) == null ? void 0 : $.id) ?? "",
1344
- message_id: l,
1364
+ message_id: u,
1345
1365
  matches: v,
1346
- score: w
1347
- }) : u.createRating(d.id, a.chat.id, {
1366
+ score: p
1367
+ }) : l.createRating(d.id, a.chat.id, {
1348
1368
  knowledge_id: ((B = d.knowledge) == null ? void 0 : B.id) ?? "",
1349
- message_id: l,
1369
+ message_id: u,
1350
1370
  matches: v,
1351
- score: w
1371
+ score: p
1352
1372
  });
1353
1373
  },
1354
- deleteRate(l) {
1355
- var w;
1374
+ deleteRate(u) {
1375
+ var p;
1356
1376
  if (!a.chat)
1357
1377
  throw new Error("Chat is not initialized");
1358
1378
  return s.track("agent-rate-delete", {
1359
1379
  type: "text",
1360
- chat_id: (w = a.chat) == null ? void 0 : w.id,
1361
- id: l,
1380
+ chat_id: (p = a.chat) == null ? void 0 : p.id,
1381
+ id: u,
1362
1382
  mode: a.chatMode
1363
- }), u.deleteRating(d.id, a.chat.id, l);
1383
+ }), l.deleteRating(d.id, a.chat.id, u);
1364
1384
  },
1365
- async speak(l) {
1366
- var v, p, _;
1367
- function w() {
1368
- if (typeof l == "string") {
1385
+ async speak(u) {
1386
+ var v, w, _;
1387
+ function p() {
1388
+ if (typeof u == "string") {
1369
1389
  if (!d.presenter.voice)
1370
1390
  throw new Error("Presenter voice is not initialized");
1371
1391
  return {
1372
1392
  type: "text",
1373
1393
  provider: d.presenter.voice,
1374
- input: l,
1394
+ input: u,
1375
1395
  ssml: !1
1376
1396
  };
1377
1397
  }
1378
- if (l.type === "text" && !l.provider) {
1398
+ if (u.type === "text" && !u.provider) {
1379
1399
  if (!d.presenter.voice)
1380
1400
  throw new Error("Presenter voice is not initialized");
1381
1401
  return {
1382
1402
  type: "text",
1383
1403
  provider: d.presenter.voice,
1384
- input: l.input,
1385
- ssml: l.ssml
1404
+ input: u.input,
1405
+ ssml: u.ssml
1386
1406
  };
1387
1407
  }
1388
- return l;
1408
+ return u;
1389
1409
  }
1390
- const m = w();
1391
- if (s.track("agent-speak", m), N.update(), a.messages && m.type === "text" && (a.messages.push({
1410
+ const f = p();
1411
+ if (s.track("agent-speak", f), N.update(), a.messages && f.type === "text" && (a.messages.push({
1392
1412
  id: V(),
1393
1413
  role: "assistant",
1394
- content: m.input,
1414
+ content: f.input,
1395
1415
  created_at: new Date(N.get(!0)).toISOString()
1396
- }), (p = (v = t.callbacks).onNewMessage) == null || p.call(v, [...a.messages], "answer")), Ne(a.chatMode))
1416
+ }), (w = (v = t.callbacks).onNewMessage) == null || w.call(v, [...a.messages], "answer")), Ne(a.chatMode))
1397
1417
  return {
1398
1418
  duration: 0,
1399
1419
  video_id: "",
@@ -1402,7 +1422,7 @@ async function Et(e, t) {
1402
1422
  if (!a.streamingManager)
1403
1423
  throw new Error("Please connect to the agent first");
1404
1424
  return a.streamingManager.speak({
1405
- script: m,
1425
+ script: f,
1406
1426
  metadata: {
1407
1427
  chat_id: (_ = a.chat) == null ? void 0 : _.id,
1408
1428
  agent_id: d.id
@@ -1410,13 +1430,13 @@ async function Et(e, t) {
1410
1430
  });
1411
1431
  },
1412
1432
  async interrupt({
1413
- type: l
1433
+ type: u
1414
1434
  }) {
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];
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];
1418
1438
  s.track("agent-video-interrupt", {
1419
- type: l || "click",
1439
+ type: u || "click",
1420
1440
  stream_id: (D = a.streamingManager) == null ? void 0 : D.streamId,
1421
1441
  agent_id: d.id,
1422
1442
  owner_id: d.owner_id,
@@ -1424,14 +1444,14 @@ async function Et(e, t) {
1424
1444
  message_duration_to_interrupt: N.get(!0),
1425
1445
  chat_id: (v = a.chat) == null ? void 0 : v.id,
1426
1446
  mode: a.chatMode
1427
- }), w.interrupted = !0, (_ = (p = t.callbacks).onNewMessage) == null || _.call(p, [...a.messages], "answer"), Qe(a.streamingManager, r);
1447
+ }), p.interrupted = !0, (_ = (w = t.callbacks).onNewMessage) == null || _.call(w, [...a.messages], "answer"), Qe(a.streamingManager, r);
1428
1448
  }
1429
1449
  };
1430
1450
  }
1431
1451
  function Mt(e, t, n) {
1432
1452
  const {
1433
1453
  getById: r
1434
- } = me(t, n || Z);
1454
+ } = fe(t, n || Z);
1435
1455
  return r(e);
1436
1456
  }
1437
1457
  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 _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"})});
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"})});
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",
4
+ "version": "1.1.7",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {