@d-id/client-sdk 1.1.0-beta.1 → 1.1.0-beta.2

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
@@ -33,7 +33,7 @@ class ge extends J {
33
33
  });
34
34
  }
35
35
  }
36
- class B extends J {
36
+ class F extends J {
37
37
  constructor(a, n) {
38
38
  super({
39
39
  kind: "ValidationError",
@@ -51,8 +51,8 @@ class he extends J {
51
51
  });
52
52
  }
53
53
  }
54
- var we = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(we || {}), pe = /* @__PURE__ */ ((e) => (e.TRIAL = "deid-trial", e.PRO = "deid-pro", e.ENTERPRISE = "deid-enterprise", e.LITE = "deid-lite", e.ADVANCED = "deid-advanced", e.BUILD = "deid-api-build", e.LAUNCH = "deid-api-launch", e.SCALE = "deid-api-scale", e))(pe || {}), ye = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(ye || {}), ve = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(ve || {}), b = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e))(b || {}), F = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(F || {}), ke = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(ke || {}), Re = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(Re || {}), Ce = /* @__PURE__ */ ((e) => (e.Pdf = "pdf", e.Text = "text", e.Html = "html", e.Word = "word", e.Json = "json", e.Markdown = "markdown", e.Csv = "csv", e.Excel = "excel", e.Powerpoint = "powerpoint", e.Archive = "archive", e.Image = "image", e.Audio = "audio", e.Video = "video", e))(Ce || {}), ne = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(ne || {});
55
- const Se = (e) => {
54
+ var we = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(we || {}), pe = /* @__PURE__ */ ((e) => (e.TRIAL = "deid-trial", e.PRO = "deid-pro", e.ENTERPRISE = "deid-enterprise", e.LITE = "deid-lite", e.ADVANCED = "deid-advanced", e.BUILD = "deid-api-build", e.LAUNCH = "deid-api-launch", e.SCALE = "deid-api-scale", e))(pe || {}), ye = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(ye || {}), ke = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(ke || {}), I = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e))(I || {}), B = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(B || {}), ve = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(ve || {}), Re = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(Re || {}), Ce = /* @__PURE__ */ ((e) => (e.Pdf = "pdf", e.Text = "text", e.Html = "html", e.Word = "word", e.Json = "json", e.Markdown = "markdown", e.Csv = "csv", e.Excel = "excel", e.Powerpoint = "powerpoint", e.Archive = "archive", e.Image = "image", e.Audio = "audio", e.Video = "video", e))(Ce || {}), ne = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(ne || {});
55
+ const De = (e) => {
56
56
  switch (e) {
57
57
  case "clip":
58
58
  return "clip";
@@ -62,7 +62,7 @@ const Se = (e) => {
62
62
  throw new Error(`Unknown video type: ${e}`);
63
63
  }
64
64
  };
65
- var D = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(D || {}), U = /* @__PURE__ */ ((e) => (e.ChatAnswer = "chat/answer", e.ChatPartial = "chat/partial", e.StreamDone = "stream/done", e.StreamStarted = "stream/started", e.StreamFailed = "stream/error", e.StreamReady = "stream/ready", e.StreamCreated = "stream/created", e.StreamVideoCreated = "stream-video/started", e.StreamVideoDone = "stream-video/done", e.StreamVideoError = "stream-video/error", e.StreamVideoRejected = "stream-video/rejected", e))(U || {}), S = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Closed = "closed", e.Completed = "completed", e.Disconnected = "disconnected", e))(S || {}), De = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(De || {}), _e = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(_e || {});
65
+ var S = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(S || {}), U = /* @__PURE__ */ ((e) => (e.ChatAnswer = "chat/answer", e.ChatPartial = "chat/partial", e.StreamDone = "stream/done", e.StreamStarted = "stream/started", e.StreamFailed = "stream/error", e.StreamReady = "stream/ready", e.StreamCreated = "stream/created", e.StreamVideoCreated = "stream-video/started", e.StreamVideoDone = "stream-video/done", e.StreamVideoError = "stream-video/error", e.StreamVideoRejected = "stream-video/rejected", e))(U || {}), D = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Closed = "closed", e.Completed = "completed", e.Disconnected = "disconnected", e))(D || {}), Se = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(Se || {}), _e = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(_e || {});
66
66
  const Me = 45 * 1e3, Ee = "X-Playground-Chat", K = "https://api.d-id.com", be = "wss://notifications.d-id.com", Ie = "79f81a83a67430be2bc0fd61042b8faa", ae = (e) => new Promise((t) => setTimeout(t, e)), q = () => Math.random().toString(16).slice(2);
67
67
  function Pe(e, t) {
68
68
  let a;
@@ -302,7 +302,7 @@ function je(e) {
302
302
  const {
303
303
  audioPath: h,
304
304
  ...y
305
- } = R || {}, v = {
305
+ } = R || {}, k = {
306
306
  method: "POST",
307
307
  headers: {
308
308
  "Content-Type": "application/x-www-form-urlencoded"
@@ -326,7 +326,7 @@ function je(e) {
326
326
  })
327
327
  };
328
328
  try {
329
- return await fetch(Le, v).then((C) => C.json());
329
+ return await fetch(Le, k).then((C) => C.json());
330
330
  } catch (C) {
331
331
  return console.error(C);
332
332
  }
@@ -336,16 +336,16 @@ function je(e) {
336
336
  events: {},
337
337
  resolvedDependencies: []
338
338
  }), y.includes(h) || y.push(h);
339
- const v = V[g];
340
- if (v.events[h] = {
339
+ const k = V[g];
340
+ if (k.events[h] = {
341
341
  props: R
342
- }, v.resolvedDependencies.push(h), y.every((A) => v.resolvedDependencies.includes(A))) {
343
- const A = y.reduce((I, l) => v.events[l] ? {
344
- ...I,
345
- ...v.events[l].props
346
- } : I, {});
347
- this.track(g, A), v.resolvedDependencies = v.resolvedDependencies.filter((I) => !y.includes(I)), y.forEach((I) => {
348
- delete v.events[I];
342
+ }, k.resolvedDependencies.push(h), y.every((A) => k.resolvedDependencies.includes(A))) {
343
+ const A = y.reduce((P, l) => k.events[l] ? {
344
+ ...P,
345
+ ...k.events[l].props
346
+ } : P, {});
347
+ this.track(g, A), k.resolvedDependencies = k.resolvedDependencies.filter((P) => !y.includes(P)), y.forEach((P) => {
348
+ delete k.events[P];
349
349
  });
350
350
  }
351
351
  }
@@ -361,7 +361,7 @@ function xe() {
361
361
  }
362
362
  const N = xe();
363
363
  function ce(e) {
364
- return e === b.Playground ? {
364
+ return e === I.Playground ? {
365
365
  headers: {
366
366
  [Ee]: "true"
367
367
  }
@@ -369,7 +369,7 @@ function ce(e) {
369
369
  }
370
370
  async function de(e, t, a, n, s = !1, i) {
371
371
  try {
372
- return !i && n !== b.DirectPlayback && (i = await t.newChat(e.id, {
372
+ return !i && n !== I.DirectPlayback && (i = await t.newChat(e.id, {
373
373
  persist: s
374
374
  }, ce(n)), a.track("agent-chat", {
375
375
  event: "created",
@@ -404,7 +404,7 @@ function ee(e, t) {
404
404
  created_at: (/* @__PURE__ */ new Date()).toISOString()
405
405
  }];
406
406
  }
407
- function Be(e) {
407
+ function Fe(e) {
408
408
  return new Promise((t, a) => {
409
409
  const {
410
410
  callbacks: n,
@@ -423,14 +423,14 @@ function Be(e) {
423
423
  };
424
424
  });
425
425
  }
426
- async function Fe(e) {
426
+ async function Be(e) {
427
427
  const {
428
428
  retries: t = 1
429
429
  } = e;
430
430
  let a = null;
431
431
  for (let n = 0; (a == null ? void 0 : a.readyState) !== WebSocket.OPEN; n++)
432
432
  try {
433
- a = await Be(e);
433
+ a = await Fe(e);
434
434
  } catch (s) {
435
435
  if (n === t)
436
436
  throw s;
@@ -439,7 +439,7 @@ async function Fe(e) {
439
439
  return a;
440
440
  }
441
441
  async function We(e, t, a) {
442
- const n = a != null && a.onMessage ? [a.onMessage] : [], s = await Fe({
442
+ const n = a != null && a.onMessage ? [a.onMessage] : [], s = await Be({
443
443
  auth: e,
444
444
  host: t,
445
445
  callbacks: {
@@ -469,15 +469,15 @@ function He(e) {
469
469
  }
470
470
  function Ke(e, t, a, n, s) {
471
471
  const i = n.messages[n.messages.length - 1];
472
- if (!(e === F.Partial || e === F.Answer) || (i == null ? void 0 : i.role) !== "assistant")
472
+ if (!(e === B.Partial || e === B.Answer) || (i == null ? void 0 : i.role) !== "assistant")
473
473
  return;
474
474
  const {
475
475
  content: r,
476
476
  sequence: o
477
477
  } = t;
478
- e === F.Partial ? a[o] = r : a.answer = r;
478
+ e === B.Partial ? a[o] = r : a.answer = r;
479
479
  const c = He(a);
480
- (i.content !== c || e === F.Answer) && (i.content = c, s == null || s([...n.messages], e));
480
+ (i.content !== c || e === B.Answer) && (i.content = c, s == null || s([...n.messages], e));
481
481
  }
482
482
  function Ue(e, t, a, n, s) {
483
483
  let i = {};
@@ -486,7 +486,7 @@ function Ue(e, t, a, n, s) {
486
486
  onMessage: (r, o) => {
487
487
  var c, u;
488
488
  if ("content" in o)
489
- Ke(r, o, i, t, a.callbacks.onNewMessage), r === F.Answer && e.track("agent-message-received", {
489
+ Ke(r, o, i, t, a.callbacks.onNewMessage), r === B.Answer && e.track("agent-message-received", {
490
490
  messages: t.messages.length,
491
491
  mode: t.chatMode
492
492
  });
@@ -695,13 +695,13 @@ function Qe(e, t, a) {
695
695
  resolution: `${e[0].frameWidth}x${e[0].frameHeight}`
696
696
  };
697
697
  }
698
- const Y = 200, Ze = Math.max(Math.ceil(400 / Y), 1);
698
+ const Y = 100, Ze = Math.max(Math.ceil(400 / Y), 1);
699
699
  function Ge() {
700
700
  let e = 0;
701
701
  return (t) => {
702
702
  for (const a of t.values())
703
703
  if (a && a.type === "inbound-rtp" && a.kind === "video") {
704
- const n = a.bytesReceived, s = n - e > 0;
704
+ const n = a.framesDecoded, s = n - e > 0;
705
705
  return e = n, s;
706
706
  }
707
707
  return !1;
@@ -712,12 +712,12 @@ function Oe(e, t, a, n, s = !1, i = !1) {
712
712
  let o = [], c, u = 0, d = !1, g = 0;
713
713
  const R = Ge();
714
714
  return setInterval(async () => {
715
- const h = await e.getStats(), y = R(h), v = Ye(h);
715
+ const h = await e.getStats(), y = R(h), k = Ye(h);
716
716
  if (y)
717
- u = 0, d || (n == null || n(D.Start), i && g >= r && !t() && a(), c = o[o.length - 1], o = [], g++, d = !0), o.push(v);
717
+ u = 0, d || (n == null || n(S.Start), i && g >= r && !t() && a(), c = o[o.length - 1], o = [], g++, d = !0), o.push(k);
718
718
  else if (d && (u++, u >= Ze)) {
719
719
  const C = Qe(o, Y, c);
720
- n == null || n(D.Stop, C), !i && !t() && a(), d = !1;
720
+ n == null || n(S.Stop, C), !i && !t() && a(), d = !1;
721
721
  }
722
722
  }, Y);
723
723
  }
@@ -726,25 +726,25 @@ const L = (e, t) => le && console.log(e, t), et = (window.RTCPeerConnection || w
726
726
  function te(e) {
727
727
  switch (e) {
728
728
  case "connected":
729
- return S.Connected;
729
+ return D.Connected;
730
730
  case "checking":
731
- return S.Connecting;
731
+ return D.Connecting;
732
732
  case "failed":
733
- return S.Fail;
733
+ return D.Fail;
734
734
  case "new":
735
- return S.New;
735
+ return D.New;
736
736
  case "closed":
737
- return S.Closed;
737
+ return D.Closed;
738
738
  case "disconnected":
739
- return S.Disconnected;
739
+ return D.Disconnected;
740
740
  case "completed":
741
- return S.Completed;
741
+ return D.Completed;
742
742
  default:
743
- return S.New;
743
+ return D.New;
744
744
  }
745
745
  }
746
746
  function re(e, t, a, n) {
747
- e === D.Start && t === D.Start ? a == null || a(D.Start) : e === D.Stop && t === D.Stop && (a == null || a(D.Stop, n));
747
+ e === S.Start && t === S.Start ? a == null || a(S.Start) : e === S.Stop && t === S.Stop && (a == null || a(S.Stop, n));
748
748
  }
749
749
  async function tt(e, t, {
750
750
  debug: a = !1,
@@ -754,36 +754,36 @@ async function tt(e, t, {
754
754
  warmup: r
755
755
  }) {
756
756
  le = a;
757
- let o = !1, c = !1, u = D.Stop, d = D.Stop;
757
+ let o = !1, c = !1, u = S.Stop, d = S.Stop;
758
758
  const {
759
759
  startConnection: g,
760
760
  sendStreamRequest: R,
761
761
  close: h,
762
762
  createStream: y,
763
- addIceCandidate: v
763
+ addIceCandidate: k
764
764
  } = t.videoType === ne.Clip ? qe(s, i, e, n.onError) : Je(s, i, e, n.onError), {
765
765
  id: C,
766
766
  offer: A,
767
- ice_servers: I,
767
+ ice_servers: P,
768
768
  session_id: l
769
769
  } = await y(t), m = new et({
770
- iceServers: I
771
- }), k = m.createDataChannel("JanusDataChannel");
770
+ iceServers: P
771
+ }), v = m.createDataChannel("JanusDataChannel");
772
772
  if (!l)
773
773
  throw new Error("Could not create session_id");
774
- const P = () => o, T = () => {
774
+ const b = () => o, T = () => {
775
775
  var f;
776
- o = !0, c && ((f = n.onConnectionStateChange) == null || f.call(n, S.Connected));
777
- }, _ = Oe(m, P, T, (f, w) => re(d = f, u, n.onVideoStateChange, w), r, !!t.stream_greeting);
776
+ o = !0, c && ((f = n.onConnectionStateChange) == null || f.call(n, D.Connected));
777
+ }, _ = Oe(m, b, T, (f, w) => re(d = f, u, n.onVideoStateChange, w), r, !!t.stream_greeting);
778
778
  m.onicecandidate = (f) => {
779
779
  var w;
780
780
  L("peerConnection.onicecandidate", f);
781
781
  try {
782
- f.candidate && f.candidate.sdpMid && f.candidate.sdpMLineIndex !== null ? v(C, {
782
+ f.candidate && f.candidate.sdpMid && f.candidate.sdpMLineIndex !== null ? k(C, {
783
783
  candidate: f.candidate.candidate,
784
784
  sdpMid: f.candidate.sdpMid,
785
785
  sdpMLineIndex: f.candidate.sdpMLineIndex
786
- }, l) : v(C, {
786
+ }, l) : k(C, {
787
787
  candidate: null
788
788
  }, l);
789
789
  } catch (p) {
@@ -791,15 +791,15 @@ async function tt(e, t, {
791
791
  streamId: C
792
792
  });
793
793
  }
794
- }, k.onopen = () => {
794
+ }, v.onopen = () => {
795
795
  c = !0, (!t.stream_warmup && !t.stream_greeting || o) && T();
796
- }, k.onmessage = (f) => {
797
- f.data === "stream/started" ? u = D.Start : f.data === "stream/done" && (u = D.Stop), re(d, u, n.onVideoStateChange);
796
+ }, v.onmessage = (f) => {
797
+ f.data === "stream/started" ? u = S.Start : f.data === "stream/done" && (u = S.Stop), re(d, u, n.onVideoStateChange);
798
798
  }, m.oniceconnectionstatechange = () => {
799
799
  var w;
800
800
  L("peerConnection.oniceconnectionstatechange => " + m.iceConnectionState);
801
801
  const f = te(m.iceConnectionState);
802
- f !== S.Connected && ((w = n.onConnectionStateChange) == null || w.call(n, f));
802
+ f !== D.Connected && ((w = n.onConnectionStateChange) == null || w.call(n, f));
803
803
  }, m.ontrack = (f) => {
804
804
  var w;
805
805
  L("peerConnection.ontrack", f), (w = n.onSrcObjectReady) == null || w.call(n, f.streams[0]);
@@ -821,19 +821,19 @@ async function tt(e, t, {
821
821
  if (C) {
822
822
  const p = te(m.iceConnectionState);
823
823
  if (m) {
824
- if (p === S.New) {
825
- (f = n.onVideoStateChange) == null || f.call(n, D.Stop), clearInterval(_);
824
+ if (p === D.New) {
825
+ (f = n.onVideoStateChange) == null || f.call(n, S.Stop), clearInterval(_);
826
826
  return;
827
827
  }
828
828
  m.close(), m.oniceconnectionstatechange = null, m.onnegotiationneeded = null, m.onicecandidate = null, m.ontrack = null;
829
829
  }
830
830
  try {
831
- p === S.Connected && await h(C, l).catch((M) => {
831
+ p === D.Connected && await h(C, l).catch((M) => {
832
832
  });
833
833
  } catch (M) {
834
834
  L("Error on close stream connection", M);
835
835
  }
836
- (w = n.onVideoStateChange) == null || w.call(n, D.Stop), clearInterval(_);
836
+ (w = n.onVideoStateChange) == null || w.call(n, S.Stop), clearInterval(_);
837
837
  }
838
838
  },
839
839
  /**
@@ -852,7 +852,7 @@ function rt(e, t, a) {
852
852
  streamOptions: n
853
853
  } = t ?? {};
854
854
  return {
855
- videoType: Se(e.presenter.type),
855
+ videoType: De(e.presenter.type),
856
856
  output_resolution: n == null ? void 0 : n.outputResolution,
857
857
  session_timeout: n == null ? void 0 : n.sessionTimeout,
858
858
  stream_warmup: n == null ? void 0 : n.streamWarmup,
@@ -861,10 +861,10 @@ function rt(e, t, a) {
861
861
  };
862
862
  }
863
863
  function nt(e, t, a, n) {
864
- N.get() > 0 && (e === D.Start ? n.linkTrack("agent-video", {
864
+ N.get() > 0 && (e === S.Start ? n.linkTrack("agent-video", {
865
865
  event: "start",
866
866
  latency: N.get(!0)
867
- }, "start", [U.StreamVideoCreated]) : e === D.Stop && n.linkTrack("agent-video", {
867
+ }, "start", [U.StreamVideoCreated]) : e === S.Stop && n.linkTrack("agent-video", {
868
868
  event: "stop",
869
869
  is_greenscreen: t.presenter.type === "clip" && t.presenter.is_greenscreen,
870
870
  background: t.presenter.type === "clip" && t.presenter.background,
@@ -883,7 +883,7 @@ function at(e, t, a, n) {
883
883
  ...t.callbacks,
884
884
  onConnectionStateChange: (c) => {
885
885
  var u, d;
886
- (d = (u = t.callbacks).onConnectionStateChange) == null || d.call(u, c), c === S.Connected && s(o);
886
+ (d = (u = t.callbacks).onConnectionStateChange) == null || d.call(u, c), c === D.Connected && s(o);
887
887
  },
888
888
  onVideoStateChange: (c, u) => {
889
889
  var d, g;
@@ -902,7 +902,7 @@ async function it(e, t, a, n, s, i) {
902
902
  chat: r,
903
903
  chatMode: o
904
904
  } = await de(e, a, n, t.mode, t.persistentChat, s);
905
- if (o && o !== t.mode && (t.mode = o, (d = (u = t.callbacks).onModeChange) == null || d.call(u, o), o === b.TextOnly))
905
+ if (o && o !== t.mode && (t.mode = o, (d = (u = t.callbacks).onModeChange) == null || d.call(u, o), o === I.TextOnly))
906
906
  return (R = (g = t.callbacks).onError) == null || R.call(g, new ge(o)), {
907
907
  chat: r
908
908
  };
@@ -913,11 +913,11 @@ async function it(e, t, a, n, s, i) {
913
913
  };
914
914
  }
915
915
  async function ot(e, t) {
916
- var C, A, I;
916
+ var C, A, P;
917
917
  let a = !0;
918
918
  const n = t.mixpanelKey || Ie, s = t.wsURL || be, i = t.baseURL || K, r = {
919
919
  messages: [],
920
- chatMode: t.mode || b.Functional
920
+ chatMode: t.mode || I.Functional
921
921
  }, o = oe(t.auth, i, t.callbacks.onError), c = await o.getById(e), u = Ne(c), d = je({
922
922
  token: n,
923
923
  agent: c,
@@ -936,11 +936,11 @@ async function ot(e, t) {
936
936
  });
937
937
  async function h(l) {
938
938
  var $, f, w, p, M, E, j;
939
- (f = ($ = t.callbacks).onConnectionStateChange) == null || f.call($, S.Connecting), N.reset(), l && !a && (delete r.chat, r.messages = ee(u), (p = (w = t.callbacks).onNewMessage) == null || p.call(w, [...r.messages], "answer"));
940
- const m = t.mode === b.DirectPlayback ? Promise.resolve(void 0) : We(t.auth, s, {
939
+ (f = ($ = t.callbacks).onConnectionStateChange) == null || f.call($, D.Connecting), N.reset(), l && !a && (delete r.chat, r.messages = ee(u), (p = (w = t.callbacks).onNewMessage) == null || p.call(w, [...r.messages], "answer"));
940
+ const m = t.mode === I.DirectPlayback ? Promise.resolve(void 0) : We(t.auth, s, {
941
941
  onMessage: g,
942
942
  onError: t.callbacks.onError
943
- }), k = X(() => it(c, t, o, d, r.chat, l ? u : void 0), {
943
+ }), v = X(() => it(c, t, o, d, r.chat, l ? u : void 0), {
944
944
  limit: 3,
945
945
  timeout: Me,
946
946
  timeoutErrorMessage: "Timeout initializing the stream",
@@ -949,28 +949,28 @@ async function ot(e, t) {
949
949
  delayMs: 1e3
950
950
  }).catch((z) => {
951
951
  var x, W;
952
- throw v(b.Maintenance), (W = (x = t.callbacks).onConnectionStateChange) == null || W.call(x, S.Fail), z;
953
- }), [P, {
952
+ throw k(I.Maintenance), (W = (x = t.callbacks).onConnectionStateChange) == null || W.call(x, D.Fail), z;
953
+ }), [b, {
954
954
  streamingManager: T,
955
955
  chat: _
956
- }] = await Promise.all([m, k]);
957
- _ && _.id !== ((M = r.chat) == null ? void 0 : M.id) && ((j = (E = t.callbacks).onNewChat) == null || j.call(E, _.id)), r.streamingManager = T, r.socketManager = P, r.chat = _, a = !1, v((_ == null ? void 0 : _.chat_mode) ?? t.mode ?? b.Functional);
956
+ }] = await Promise.all([m, v]);
957
+ _ && _.id !== ((M = r.chat) == null ? void 0 : M.id) && ((j = (E = t.callbacks).onNewChat) == null || j.call(E, _.id)), r.streamingManager = T, r.socketManager = b, r.chat = _, a = !1, k((_ == null ? void 0 : _.chat_mode) ?? t.mode ?? I.Functional);
958
958
  }
959
959
  async function y() {
960
- var l, m, k, P;
961
- (l = r.socketManager) == null || l.disconnect(), await ((m = r.streamingManager) == null ? void 0 : m.disconnect()), delete r.streamingManager, delete r.socketManager, (P = (k = t.callbacks).onConnectionStateChange) == null || P.call(k, S.Disconnected);
960
+ var l, m, v, b;
961
+ (l = r.socketManager) == null || l.disconnect(), await ((m = r.streamingManager) == null ? void 0 : m.disconnect()), delete r.streamingManager, delete r.socketManager, (b = (v = t.callbacks).onConnectionStateChange) == null || b.call(v, D.Disconnected);
962
962
  }
963
- async function v(l) {
964
- var m, k;
963
+ async function k(l) {
964
+ var m, v;
965
965
  l !== r.chatMode && (d.track("agent-mode-change", {
966
966
  mode: l
967
- }), r.chatMode = l, r.chatMode !== b.Functional && await y(), (k = (m = t.callbacks).onModeChange) == null || k.call(m, l));
967
+ }), r.chatMode = l, r.chatMode !== I.Functional && await y(), (v = (m = t.callbacks).onModeChange) == null || v.call(m, l));
968
968
  }
969
969
  return {
970
970
  agent: c,
971
- starterMessages: ((I = c.knowledge) == null ? void 0 : I.starter_message) || [],
971
+ starterMessages: ((P = c.knowledge) == null ? void 0 : P.starter_message) || [],
972
972
  getSTTToken: () => o.getSTTToken(c.id),
973
- changeMode: v,
973
+ changeMode: k,
974
974
  enrichAnalytics: d.enrich,
975
975
  async connect() {
976
976
  var l;
@@ -1002,21 +1002,21 @@ async function ot(e, t) {
1002
1002
  async chat(l) {
1003
1003
  var T, _, $, f, w;
1004
1004
  const m = () => {
1005
- if (t.mode === b.DirectPlayback)
1006
- throw new B("Direct playback is enabled, chat is disabled");
1005
+ if (t.mode === I.DirectPlayback)
1006
+ throw new F("Direct playback is enabled, chat is disabled");
1007
1007
  if (l.length >= 800)
1008
- throw new B("Message cannot be more than 800 characters");
1008
+ throw new F("Message cannot be more than 800 characters");
1009
1009
  if (l.length === 0)
1010
- throw new B("Message cannot be empty");
1011
- if (r.chatMode === b.Maintenance)
1012
- throw new B("Chat is in maintenance mode");
1013
- if (![b.TextOnly, b.Playground].includes(r.chatMode)) {
1010
+ throw new F("Message cannot be empty");
1011
+ if (r.chatMode === I.Maintenance)
1012
+ throw new F("Chat is in maintenance mode");
1013
+ if (![I.TextOnly, I.Playground].includes(r.chatMode)) {
1014
1014
  if (!r.streamingManager)
1015
- throw new B("Streaming manager is not initialized");
1015
+ throw new F("Streaming manager is not initialized");
1016
1016
  if (!r.chat)
1017
- throw new B("Chat is not initialized");
1017
+ throw new F("Chat is not initialized");
1018
1018
  }
1019
- }, k = async () => {
1019
+ }, v = async () => {
1020
1020
  var p, M;
1021
1021
  if (!r.chat) {
1022
1022
  const E = await de(c, o, d, r.chatMode, t.persistentChat);
@@ -1025,7 +1025,7 @@ async function ot(e, t) {
1025
1025
  r.chat = E.chat, (M = (p = t.callbacks).onNewChat) == null || M.call(p, r.chat.id);
1026
1026
  }
1027
1027
  return r.chat.id;
1028
- }, P = async (p, M) => X(() => {
1028
+ }, b = async (p, M) => X(() => {
1029
1029
  var E, j;
1030
1030
  return o.chat(c.id, M, {
1031
1031
  chatMode: r.chatMode,
@@ -1057,7 +1057,7 @@ async function ot(e, t) {
1057
1057
  content: l,
1058
1058
  created_at: new Date(N.update()).toISOString()
1059
1059
  }), (_ = (T = t.callbacks).onNewMessage) == null || _.call(T, [...r.messages], "user");
1060
- const p = await k(), M = await P([...r.messages], p);
1060
+ const p = await v(), M = await b([...r.messages], p);
1061
1061
  return r.messages.push({
1062
1062
  id: q(),
1063
1063
  role: "assistant",
@@ -1082,23 +1082,23 @@ async function ot(e, t) {
1082
1082
  }), p;
1083
1083
  }
1084
1084
  },
1085
- rate(l, m, k) {
1085
+ rate(l, m, v) {
1086
1086
  var _, $, f, w;
1087
- const P = r.messages.find((p) => p.id === l);
1087
+ const b = r.messages.find((p) => p.id === l);
1088
1088
  if (r.chat) {
1089
- if (!P)
1089
+ if (!b)
1090
1090
  throw new Error("Message not found");
1091
1091
  } else
1092
1092
  throw new Error("Chat is not initialized");
1093
- const T = ((_ = P.matches) == null ? void 0 : _.map((p) => [p.document_id, p.id])) ?? [];
1093
+ const T = ((_ = b.matches) == null ? void 0 : _.map((p) => [p.document_id, p.id])) ?? [];
1094
1094
  return d.track("agent-rate", {
1095
- event: k ? "update" : "create",
1095
+ event: v ? "update" : "create",
1096
1096
  thumb: m === 1 ? "up" : "down",
1097
1097
  knowledge_id: (($ = c.knowledge) == null ? void 0 : $.id) ?? "",
1098
1098
  mode: r.chatMode,
1099
1099
  matches: T,
1100
1100
  score: m
1101
- }), k ? o.updateRating(c.id, r.chat.id, k, {
1101
+ }), v ? o.updateRating(c.id, r.chat.id, v, {
1102
1102
  knowledge_id: ((f = c.knowledge) == null ? void 0 : f.id) ?? "",
1103
1103
  message_id: l,
1104
1104
  matches: T,
@@ -1122,6 +1122,7 @@ async function ot(e, t) {
1122
1122
  }), o.deleteRating(c.id, r.chat.id, l);
1123
1123
  },
1124
1124
  speak(l) {
1125
+ var b;
1125
1126
  if (!r.streamingManager)
1126
1127
  throw new Error("Please connect to the agent first");
1127
1128
  function m() {
@@ -1147,9 +1148,13 @@ async function ot(e, t) {
1147
1148
  }
1148
1149
  return l;
1149
1150
  }
1150
- const k = m();
1151
- return d.track("agent-speak", k), N.update(), r.streamingManager.speak({
1152
- script: k
1151
+ const v = m();
1152
+ return d.track("agent-speak", v), N.update(), r.streamingManager.speak({
1153
+ script: v,
1154
+ metadata: {
1155
+ chat_id: (b = r.chat) == null ? void 0 : b.id,
1156
+ agent_id: c.id
1157
+ }
1153
1158
  });
1154
1159
  }
1155
1160
  };
@@ -1163,24 +1168,24 @@ function ct(e, t, a) {
1163
1168
  export {
1164
1169
  ye as AgentStatus,
1165
1170
  fe as ChatCreationFailed,
1166
- b as ChatMode,
1171
+ I as ChatMode,
1167
1172
  ge as ChatModeDowngraded,
1168
- F as ChatProgress,
1169
- S as ConnectionState,
1173
+ B as ChatProgress,
1174
+ D as ConnectionState,
1170
1175
  Ce as DocumentType,
1171
1176
  Re as KnowledgeType,
1172
1177
  pe as PlanGroup,
1173
- De as Providers,
1174
- ve as RateState,
1178
+ Se as Providers,
1179
+ ke as RateState,
1175
1180
  U as StreamEvents,
1176
- D as StreamingState,
1177
- ke as Subject,
1181
+ S as StreamingState,
1182
+ ve as Subject,
1178
1183
  we as UserPlan,
1179
- B as ValidationError,
1184
+ F as ValidationError,
1180
1185
  ne as VideoType,
1181
1186
  _e as VoiceAccess,
1182
1187
  he as WsError,
1183
1188
  ot as createAgentManager,
1184
1189
  ct as getAgent,
1185
- Se as mapVideoType
1190
+ De as mapVideoType
1186
1191
  };
@@ -1 +1 @@
1
- (function(h,_){typeof exports=="object"&&typeof module<"u"?_(exports):typeof define=="function"&&define.amd?define(["exports"],_):(h=typeof globalThis<"u"?globalThis:h||self,_(h.index={}))})(this,function(h){"use strict";var ot=Object.defineProperty;var ct=(h,_,z)=>_ in h?ot(h,_,{enumerable:!0,configurable:!0,writable:!0,value:z}):h[_]=z;var J=(h,_,z)=>(ct(h,typeof _!="symbol"?_+"":_,z),z);class _ extends Error{constructor({kind:a,description:r,error:s}){super(JSON.stringify({kind:a,description:r}));J(this,"kind");J(this,"description");J(this,"error");this.kind=a,this.description=r,this.error=s}}class z extends _{constructor(t,a){super({kind:"ChatCreationFailed",description:`Failed to create ${a?"persistent":""} chat, mode: ${t}`})}}class te extends _{constructor(t){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${t}`})}}class F extends _{constructor(a,r){super({kind:"ValidationError",description:a});J(this,"key");this.key=r}}class ne extends _{constructor(t){super({kind:"WSError",description:t})}}var re=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(re||{}),ae=(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))(ae||{}),ie=(e=>(e.Created="created",e.Started="started",e.Done="done",e.Error="error",e.Rejected="rejected",e.Ready="ready",e))(ie||{}),se=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(se||{}),P=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e))(P||{}),W=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(W||{}),oe=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(oe||{}),ce=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(ce||{}),de=(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))(de||{}),Y=(e=>(e.Clip="clip",e.Talk="talk",e))(Y||{});const le=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var R=(e=>(e.Start="START",e.Stop="STOP",e))(R||{}),V=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e.StreamFailed="stream/error",e.StreamReady="stream/ready",e.StreamCreated="stream/created",e.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(V||{}),S=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(S||{}),me=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(me||{}),ue=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(ue||{});const Me=45*1e3,_e="X-Playground-Chat",x="https://api.d-id.com",Ee="wss://notifications.d-id.com",be="79f81a83a67430be2bc0fd61042b8faa",fe=e=>new Promise(t=>setTimeout(t,e)),X=()=>Math.random().toString(16).slice(2);function Te(e,t){let a;return{promise:new Promise((s,i)=>{a=setTimeout(()=>i(new Error(t)),e)}),clear:()=>clearTimeout(a)}}async function Q(e,t){const a={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 s=1;s<=a.limit;s++)try{if(!a.timeout)return await e();const{promise:i,clear:n}=Te(a.timeout,a.timeoutErrorMessage),o=e().finally(n);return await Promise.race([o,i])}catch(i){if(r=i,!a.shouldRetryFn(i)||s>=a.limit)throw i;await fe(a.delayMs),a.onRetry(i)}throw r}function ge(){let e=window.localStorage.getItem("did_external_key_id");return e||(e=Math.random().toString(16).slice(2),window.localStorage.setItem("did_external_key_id",e)),e}let Pe=X();function he(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}.${ge()}_${Pe}`;throw new Error(`Unknown auth type: ${e}`)}const Ie=e=>Q(e,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:t=>t.status===429});function Z(e,t=x,a){const r=async(s,i)=>{const{skipErrorHandler:n,...o}=i||{},c=await Ie(()=>fetch(t+(s!=null&&s.startsWith("/")?s:`/${s}`),{...o,headers:{...o.headers,Authorization:he(e),"Content-Type":"application/json"}}));if(!c.ok){let u=await c.text().catch(()=>`Failed to fetch with status ${c.status}`);const d=new Error(u);throw a&&!n&&a(d,{url:s,options:o,headers:c.headers}),d}return c.json()};return{get(s,i){return r(s,{...i,method:"GET"})},post(s,i,n){return r(s,{...n,body:JSON.stringify(i),method:"POST"})},delete(s,i,n){return r(s,{...n,body:JSON.stringify(i),method:"DELETE"})},patch(s,i,n){return r(s,{...n,body:JSON.stringify(i),method:"PATCH"})}}}function we(e,t=x,a){const r=Z(e,`${t}/agents`,a);return{create(s,i){return r.post("/",s,i)},getAgents(s,i){return r.get(`/${s?`?tag=${s}`:""}`,i).then(n=>n??[])},getById(s,i){return r.get(`/${s}`,i)},delete(s,i){return r.delete(`/${s}`,void 0,i)},update(s,i,n){return r.patch(`/${s}`,i,n)},newChat(s,i,n){return r.post(`/${s}/chat`,i,n)},chat(s,i,n,o){return r.post(`/${s}/chat/${i}`,n,o)},createRating(s,i,n,o){return r.post(`/${s}/chat/${i}/ratings`,n,o)},updateRating(s,i,n,o,c){return r.patch(`/${s}/chat/${i}/ratings/${n}`,o,c)},deleteRating(s,i,n,o){return r.delete(`/${s}/chat/${i}/ratings/${n}`,o)},getSTTToken(s,i){return r.get(`/${s}/stt-token`,i)}}}const G=e=>e.type==="clip"&&e.presenter_id.startsWith("v2_")?"clip_v2":e.type;function Ae(e){var s,i,n,o;const t=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",a=()=>{const c=navigator.platform;return c.toLowerCase().includes("win")?"Windows":c.toLowerCase().includes("mac")?"Mac OS X":c.toLowerCase().includes("linux")?"Linux":"Unknown"},r=e.presenter;return{$os:`${a()}`,isMobile:`${t()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:G(r),agentVoice:{voiceId:(i=(s=e.presenter)==null?void 0:s.voice)==null?void 0:i.voice_id,provider:(o=(n=e.presenter)==null?void 0:n.voice)==null?void 0:o.type}}}function $e(e,t,a){var c,u,d;const{event:r,...s}=e,{template:i}=(t==null?void 0:t.llm)||{},{language:n}=((c=t==null?void 0:t.presenter)==null?void 0:c.voice)||{};return{...s,llm:{...s.llm,template:i},script:{...s.script,provider:{...(u=s==null?void 0:s.script)==null?void 0:u.provider,language:n}},stitch:(t==null?void 0:t.presenter.type)==="talk"?(d=t==null?void 0:t.presenter)==null?void 0:d.stitch:void 0,...a}}let O={};const je="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function ze(e){var i,n,o,c,u,d;const t=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",a=e.agent.presenter,r=(i=e.agent.llm)==null?void 0:i.prompt_customization,s={token:e.token||"testKey",distinct_id:e.distinctId||ge(),agentId:e.agent.id,agentType:G(a),owner_id:e.agent.owner_id??"",promptVersion:(n=e.agent.llm)==null?void 0:n.prompt_version,behavior:{role:r==null?void 0:r.role,personality:r==null?void 0:r.personality,instructions:(o=e.agent.llm)==null?void 0:o.instructions},temperature:(c=e.agent.llm)==null?void 0:c.temperature,knowledgeSource:r==null?void 0:r.knowledge_source,starterQuestionsCount:(d=(u=e.agent.knowledge)==null?void 0:u.starter_message)==null?void 0:d.length,topicsToAvoid:r==null?void 0:r.topics_to_avoid,maxResponseLength:r==null?void 0:r.max_response_length};return{...s,additionalProperties:{},isEnabled:e.isEnabled??!0,getRandom:()=>Math.random().toString(16).slice(2),enrich(g){const D={};if(g&&typeof g!="object")throw new Error("properties must be a flat json object");for(let w in g)(typeof g[w]=="string"||typeof g[w]=="number")&&(D[w]=g[w]);this.additionalProperties={...this.additionalProperties,...D}},async track(g,D){if(!this.isEnabled)return Promise.resolve();const{audioPath:w,...v}=D||{},k={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:g,properties:{...this.additionalProperties,...v,...s,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(je,k).then(M=>M.json())}catch(M){return console.error(M)}},linkTrack(g,D,w,v){O[g]||(O[g]={events:{},resolvedDependencies:[]}),v.includes(w)||v.push(w);const k=O[g];if(k.events[w]={props:D},k.resolvedDependencies.push(w),v.every(N=>k.resolvedDependencies.includes(N))){const N=v.reduce((I,l)=>k.events[l]?{...I,...k.events[l].props}:I,{});this.track(g,N),k.resolvedDependencies=k.resolvedDependencies.filter(I=>!v.includes(I)),v.forEach(I=>{delete k.events[I]})}}}}function Le(){let e=0;return{reset:()=>e=0,update:()=>e=Date.now(),get:(t=!1)=>t?Date.now()-e:e}}const H=Le();function pe(e){return e===P.Playground?{headers:{[_e]:"true"}}:{}}async function ye(e,t,a,r,s=!1,i){try{return!i&&r!==P.DirectPlayback&&(i=await t.newChat(e.id,{persist:s},pe(r)),a.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(n){try{const o=JSON.parse(n.message);if((o==null?void 0:o.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(o){console.error("Error parsing the error message:",o)}throw new Error("Cannot create new chat")}}function Ne(e){var a;const t=((a=e.greetings)==null?void 0:a.filter(r=>r.length>0))??[];return t.length>0?t[Math.floor(Math.random()*t.length)]:`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`}function ve(e,t){return t&&t.length>0?t:[{content:e,id:X(),role:"assistant",created_at:new Date().toISOString()}]}function Be(e){return new Promise((t,a)=>{const{callbacks:r,host:s,auth:i}=e,{onMessage:n=null,onOpen:o=null,onClose:c=null,onError:u=null}=r||{},d=new WebSocket(`${s}?authorization=${he(i)}`);d.onmessage=n,d.onclose=c,d.onerror=g=>{console.error(g),u==null||u("Websocket failed to connect",g),a(g)},d.onopen=g=>{o==null||o(g),t(d)}})}async function Fe(e){const{retries:t=1}=e;let a=null;for(let r=0;(a==null?void 0:a.readyState)!==WebSocket.OPEN;r++)try{a=await Be(e)}catch(s){if(r===t)throw s;await fe(r*500)}return a}async function We(e,t,a){const r=a!=null&&a.onMessage?[a.onMessage]:[],s=await Fe({auth:e,host:t,callbacks:{onError:i=>{var n;return(n=a.onError)==null?void 0:n.call(a,new ne(i))},onMessage(i){const n=JSON.parse(i.data);r.forEach(o=>o(n.event,n))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:i=>r.push(i)}}function He(e){if(e.answer!==void 0)return e.answer;let t=0,a="";for(;t in e;)a+=e[t++];return a}function Ke(e,t,a,r,s){const i=r.messages[r.messages.length-1];if(!(e===W.Partial||e===W.Answer)||(i==null?void 0:i.role)!=="assistant")return;const{content:n,sequence:o}=t;e===W.Partial?a[o]=n:a.answer=n;const c=He(a);(i.content!==c||e===W.Answer)&&(i.content=c,s==null||s([...r.messages],e))}function Ue(e,t,a,r,s){let i={};return{clearQueue:()=>i={},onMessage:(n,o)=>{var c,u;if("content"in o)Ke(n,o,i,t,a.callbacks.onNewMessage),n===W.Answer&&e.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const d=V,g=[d.StreamVideoDone,d.StreamVideoError,d.StreamVideoRejected],D=[d.StreamFailed,d.StreamVideoError,d.StreamVideoRejected],w=$e(o,r,{mode:t.chatMode});if(n=n,n===d.StreamVideoCreated)e.linkTrack("agent-video",w,d.StreamVideoCreated,["start"]);else if(g.includes(n)){const v=n.split("/")[1];D.includes(n)?e.track("agent-video",{...w,event:v}):e.linkTrack("agent-video",{...w,event:v},n,["done"])}D.includes(n)&&((u=(c=a.callbacks).onError)==null||u.call(c,new Error(`Stream failed with event ${n}`),{data:o})),o.event===d.StreamDone&&s()}}}}function Ve(e,t,a,r){const s=Z(e,`${t}/agents/${a}`,r);return{createStream(i){return s.post("/streams",{output_resolution:i.output_resolution,compatibility_mode:i.compatibility_mode,stream_warmup:i.stream_warmup,session_timeout:i.session_timeout,stream_greeting:i.stream_greeting})},startConnection(i,n,o){return s.post(`/streams/${i}/sdp`,{session_id:o,answer:n})},addIceCandidate(i,n,o){return s.post(`/streams/${i}/ice`,{session_id:o,...n})},sendStreamRequest(i,n,o){return s.post(`/streams/${i}`,{session_id:n,...o})},close(i,n){return s.delete(`/streams/${i}`,{session_id:n})}}}function xe(e,t,a,r){const s=Z(e,`${t}/agents/${a}`,r);return{createStream(i,n){return s.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,stream_greeting:i.stream_greeting},n)},startConnection(i,n,o,c){return s.post(`/streams/${i}/sdp`,{session_id:o,answer:n},c)},addIceCandidate(i,n,o,c){return s.post(`/streams/${i}/ice`,{session_id:o,...n},c)},sendStreamRequest(i,n,o,c){return s.post(`/streams/${i}`,{session_id:n,...o},c)},close(i,n,o){return s.delete(`/streams/${i}`,{session_id:n},o)}}}function qe(e,t,a){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,jitterBufferDelay:(t.jitterBufferDelay-e.jitterBufferDelay)/r,framesPerSecond:t.framesPerSecond,freezeCount:t.freezeCount-e.freezeCount,freezeDuration:t.freezeDuration-e.freezeDuration,lowFpsCount:a}}function Je(e){return e.filter(t=>t.freezeCount>0||t.framesPerSecond<21||t.framesDropped>0||t.packetsLost>0).map(t=>{const{timestamp:a,...r}=t,s=[];return t.freezeCount>0&&s.push("freeze"),t.framesPerSecond<21&&s.push("low fps"),t.framesDropped>0&&s.push("frames dropped"),t.packetsLost>0&&s.push("packet loss"),{...r,causes:s}})}function Xe(e){let t="";for(const a of e.values())if(a&&a.type==="codec"&&a.mimeType.startsWith("video")&&(t=a.mimeType.split("/")[1]),a&&a.type==="inbound-rtp"&&a.kind==="video")return{codec:t,timestamp:a.timestamp,bytesReceived:a.bytesReceived,packetsReceived:a.packetsReceived,packetsLost:a.packetsLost,framesDropped:a.framesDropped,framesDecoded:a.framesDecoded,jitter:a.jitter,jitterBufferDelay:a.jitterBufferDelay,frameWidth:a.frameWidth,frameHeight:a.frameHeight,framesPerSecond:a.framesPerSecond,freezeCount:a.freezeCount,freezeDuration:a.totalFreezesDuration};return{}}function Ye(e,t,a){const r=e.map((n,o)=>o===0?a?{timestamp:n.timestamp,duration:0,bytesReceived:n.bytesReceived-a.bytesReceived,bitrate:(n.bytesReceived-a.bytesReceived)*8/(t/1e3),packetsReceived:n.packetsReceived-a.packetsReceived,packetsLost:n.packetsLost-a.packetsLost,framesDropped:n.framesDropped-a.framesDropped,framesDecoded:n.framesDecoded-a.framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay-a.jitterBufferDelay,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount-a.freezeCount,freezeDuration:n.freezeDuration-a.freezeDuration}:{timestamp:n.timestamp,duration:0,bytesReceived:n.bytesReceived,bitrate:n.bytesReceived*8/(t/1e3),packetsReceived:n.packetsReceived,packetsLost:n.packetsLost,framesDropped:n.framesDropped,framesDecoded:n.framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount,freezeDuration:n.freezeDuration}:{timestamp:n.timestamp,duration:t*o/1e3,bytesReceived:n.bytesReceived-e[o-1].bytesReceived,bitrate:(n.bytesReceived-e[o-1].bytesReceived)*8/(t/1e3),packetsReceived:n.packetsReceived-e[o-1].packetsReceived,packetsLost:n.packetsLost-e[o-1].packetsLost,framesDropped:n.framesDropped-e[o-1].framesDropped,framesDecoded:n.framesDecoded-e[o-1].framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay-e[o-1].jitterBufferDelay,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount-e[o-1].freezeCount,freezeDuration:n.freezeDuration-e[o-1].freezeDuration}),s=Je(r),i=s.reduce((n,o)=>n+(o.causes.includes("low fps")?1:0),0);return{webRTCStats:{anomalies:s,aggregateReport:qe(e[0],e[e.length-1],i)},codec:e[0].codec,resolution:`${e[0].frameWidth}x${e[0].frameHeight}`}}const ee=200,Qe=Math.max(Math.ceil(400/ee),1);function Ze(){let e=0;return t=>{for(const a of t.values())if(a&&a.type==="inbound-rtp"&&a.kind==="video"){const r=a.bytesReceived,s=r-e>0;return e=r,s}return!1}}function Ge(e,t,a,r,s=!1,i=!1){const n=s?1:0;let o=[],c,u=0,d=!1,g=0;const D=Ze();return setInterval(async()=>{const w=await e.getStats(),v=D(w),k=Xe(w);if(v)u=0,d||(r==null||r(R.Start),i&&g>=n&&!t()&&a(),c=o[o.length-1],o=[],g++,d=!0),o.push(k);else if(d&&(u++,u>=Qe)){const M=Ye(o,ee,c);r==null||r(R.Stop,M),!i&&!t()&&a(),d=!1}},ee)}let ke=!1;const L=(e,t)=>ke&&console.log(e,t),Oe=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function Ce(e){switch(e){case"connected":return S.Connected;case"checking":return S.Connecting;case"failed":return S.Fail;case"new":return S.New;case"closed":return S.Closed;case"disconnected":return S.Disconnected;case"completed":return S.Completed;default:return S.New}}function Re(e,t,a,r){e===R.Start&&t===R.Start?a==null||a(R.Start):e===R.Stop&&t===R.Stop&&(a==null||a(R.Stop,r))}async function et(e,t,{debug:a=!1,callbacks:r,auth:s,baseURL:i=x,warmup:n}){ke=a;let o=!1,c=!1,u=R.Stop,d=R.Stop;const{startConnection:g,sendStreamRequest:D,close:w,createStream:v,addIceCandidate:k}=t.videoType===Y.Clip?Ve(s,i,e,r.onError):xe(s,i,e,r.onError),{id:M,offer:N,ice_servers:I,session_id:l}=await v(t),m=new Oe({iceServers:I}),C=m.createDataChannel("JanusDataChannel");if(!l)throw new Error("Could not create session_id");const A=()=>o,$=()=>{var f;o=!0,c&&((f=r.onConnectionStateChange)==null||f.call(r,S.Connected))},E=Ge(m,A,$,(f,p)=>Re(d=f,u,r.onVideoStateChange,p),n,!!t.stream_greeting);m.onicecandidate=f=>{var p;L("peerConnection.onicecandidate",f);try{f.candidate&&f.candidate.sdpMid&&f.candidate.sdpMLineIndex!==null?k(M,{candidate:f.candidate.candidate,sdpMid:f.candidate.sdpMid,sdpMLineIndex:f.candidate.sdpMLineIndex},l):k(M,{candidate:null},l)}catch(y){(p=r.onError)==null||p.call(r,y,{streamId:M})}},C.onopen=()=>{c=!0,(!t.stream_warmup&&!t.stream_greeting||o)&&$()},C.onmessage=f=>{f.data==="stream/started"?u=R.Start:f.data==="stream/done"&&(u=R.Stop),Re(d,u,r.onVideoStateChange)},m.oniceconnectionstatechange=()=>{var p;L("peerConnection.oniceconnectionstatechange => "+m.iceConnectionState);const f=Ce(m.iceConnectionState);f!==S.Connected&&((p=r.onConnectionStateChange)==null||p.call(r,f))},m.ontrack=f=>{var p;L("peerConnection.ontrack",f),(p=r.onSrcObjectReady)==null||p.call(r,f.streams[0])},await m.setRemoteDescription(N),L("set remote description OK");const j=await m.createAnswer();return L("create answer OK"),await m.setLocalDescription(j),L("set local description OK"),await g(M,j,l),L("start connection OK"),{speak(f){return D(M,l,f)},async disconnect(){var f,p;if(M){const y=Ce(m.iceConnectionState);if(m){if(y===S.New){(f=r.onVideoStateChange)==null||f.call(r,R.Stop),clearInterval(E);return}m.close(),m.oniceconnectionstatechange=null,m.onnegotiationneeded=null,m.onicecandidate=null,m.ontrack=null}try{y===S.Connected&&await w(M,l).catch(b=>{})}catch(b){L("Error on close stream connection",b)}(p=r.onVideoStateChange)==null||p.call(r,R.Stop),clearInterval(E)}},sessionId:l,streamId:M}}function tt(e,t,a){var s;const{streamOptions:r}=t??{};return{videoType:le(e.presenter.type),output_resolution:r==null?void 0:r.outputResolution,session_timeout:r==null?void 0:r.sessionTimeout,stream_warmup:r==null?void 0:r.streamWarmup,compatibility_mode:r==null?void 0:r.compatibilityMode,stream_greeting:G(e.presenter)!=="clip"&&((s=t==null?void 0:t.streamOptions)!=null&&s.streamGreeting)?a:void 0}}function nt(e,t,a,r){H.get()>0&&(e===R.Start?r.linkTrack("agent-video",{event:"start",latency:H.get(!0)},"start",[V.StreamVideoCreated]):e===R.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,...a},"done",[V.StreamVideoDone]))}function rt(e,t,a,r){return H.reset(),new Promise(async(s,i)=>{var n;try{const o=await et(e.id,tt(e,t,r),{...t,analytics:a,warmup:(n=t.streamOptions)==null?void 0:n.streamWarmup,callbacks:{...t.callbacks,onConnectionStateChange:c=>{var u,d;(d=(u=t.callbacks).onConnectionStateChange)==null||d.call(u,c),c===S.Connected&&s(o)},onVideoStateChange:(c,u)=>{var d,g;(g=(d=t.callbacks).onVideoStateChange)==null||g.call(d,c),nt(c,e,u,a)}}})}catch(o){i(o)}})}async function at(e,t,a,r,s,i){var u,d,g,D;const{chat:n,chatMode:o}=await ye(e,a,r,t.mode,t.persistentChat,s);if(o&&o!==t.mode&&(t.mode=o,(d=(u=t.callbacks).onModeChange)==null||d.call(u,o),o===P.TextOnly))return(D=(g=t.callbacks).onError)==null||D.call(g,new te(o)),{chat:n};const c=await rt(e,t,r,i);return{chat:n,streamingManager:c}}async function it(e,t){var M,N,I;let a=!0;const r=t.mixpanelKey||be,s=t.wsURL||Ee,i=t.baseURL||x,n={messages:[],chatMode:t.mode||P.Functional},o=we(t.auth,i,t.callbacks.onError),c=await o.getById(e),u=Ne(c),d=ze({token:r,agent:c,isEnabled:t.enableAnalitics,distinctId:t.distinctId}),{onMessage:g,clearQueue:D}=Ue(d,n,t,c,()=>{var l;return(l=n.socketManager)==null?void 0:l.disconnect()});n.messages=ve(u,t.initialMessages),(N=(M=t.callbacks).onNewMessage)==null||N.call(M,[...n.messages],"answer"),d.track("agent-sdk",{event:"loaded",...Ae(c)});async function w(l){var j,f,p,y,b,T,K;(f=(j=t.callbacks).onConnectionStateChange)==null||f.call(j,S.Connecting),H.reset(),l&&!a&&(delete n.chat,n.messages=ve(u),(y=(p=t.callbacks).onNewMessage)==null||y.call(p,[...n.messages],"answer"));const m=t.mode===P.DirectPlayback?Promise.resolve(void 0):We(t.auth,s,{onMessage:g,onError:t.callbacks.onError}),C=Q(()=>at(c,t,o,d,n.chat,l?u:void 0),{limit:3,timeout:Me,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:B=>(B==null?void 0:B.message)!=="Could not connect"&&B.status!==429,delayMs:1e3}).catch(B=>{var U,q;throw k(P.Maintenance),(q=(U=t.callbacks).onConnectionStateChange)==null||q.call(U,S.Fail),B}),[A,{streamingManager:$,chat:E}]=await Promise.all([m,C]);E&&E.id!==((b=n.chat)==null?void 0:b.id)&&((K=(T=t.callbacks).onNewChat)==null||K.call(T,E.id)),n.streamingManager=$,n.socketManager=A,n.chat=E,a=!1,k((E==null?void 0:E.chat_mode)??t.mode??P.Functional)}async function v(){var l,m,C,A;(l=n.socketManager)==null||l.disconnect(),await((m=n.streamingManager)==null?void 0:m.disconnect()),delete n.streamingManager,delete n.socketManager,(A=(C=t.callbacks).onConnectionStateChange)==null||A.call(C,S.Disconnected)}async function k(l){var m,C;l!==n.chatMode&&(d.track("agent-mode-change",{mode:l}),n.chatMode=l,n.chatMode!==P.Functional&&await v(),(C=(m=t.callbacks).onModeChange)==null||C.call(m,l))}return{agent:c,starterMessages:((I=c.knowledge)==null?void 0:I.starter_message)||[],getSTTToken:()=>o.getSTTToken(c.id),changeMode:k,enrichAnalytics:d.enrich,async connect(){var l;await w(!0),d.track("agent-chat",{event:"connect",chatId:(l=n.chat)==null?void 0:l.id,agentId:c.id,mode:n.chatMode})},async reconnect(){var l;await v(),await w(!1),d.track("agent-chat",{event:"reconnect",chatId:(l=n.chat)==null?void 0:l.id,agentId:c.id,mode:n.chatMode})},async disconnect(){var l;await v(),d.track("agent-chat",{event:"disconnect",chatId:(l=n.chat)==null?void 0:l.id,agentId:c.id,mode:n.chatMode})},async chat(l){var $,E,j,f,p;const m=()=>{if(t.mode===P.DirectPlayback)throw new F("Direct playback is enabled, chat is disabled");if(l.length>=800)throw new F("Message cannot be more than 800 characters");if(l.length===0)throw new F("Message cannot be empty");if(n.chatMode===P.Maintenance)throw new F("Chat is in maintenance mode");if(![P.TextOnly,P.Playground].includes(n.chatMode)){if(!n.streamingManager)throw new F("Streaming manager is not initialized");if(!n.chat)throw new F("Chat is not initialized")}},C=async()=>{var y,b;if(!n.chat){const T=await ye(c,o,d,n.chatMode,t.persistentChat);if(!T.chat)throw new z(n.chatMode,!!t.persistentChat);n.chat=T.chat,(b=(y=t.callbacks).onNewChat)==null||b.call(y,n.chat.id)}return n.chat.id},A=async(y,b)=>Q(()=>{var T,K;return o.chat(c.id,b,{chatMode:n.chatMode,streamId:(T=n.streamingManager)==null?void 0:T.streamId,sessionId:(K=n.streamingManager)==null?void 0:K.sessionId,messages:y.map(({matches:B,...U})=>U)},{...pe(n.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:T=>{var U,q,Se,De;const K=(U=T==null?void 0:T.message)==null?void 0:U.includes("missing or invalid session_id");return!((q=T==null?void 0:T.message)==null?void 0:q.includes("Stream Error"))&&!K?((De=(Se=t.callbacks).onError)==null||De.call(Se,T),!1):!0},onRetry:async()=>{await v(),await w(!1)}});try{D(),m(),n.messages.push({id:X(),role:"user",content:l,created_at:new Date(H.update()).toISOString()}),(E=($=t.callbacks).onNewMessage)==null||E.call($,[...n.messages],"user");const y=await C(),b=await A([...n.messages],y);return n.messages.push({id:X(),role:"assistant",content:b.result||"",created_at:new Date().toISOString(),context:b.context,matches:b.matches}),d.track("agent-message-send",{event:"success",mode:n.chatMode,messages:n.messages.length+1}),b.result&&((f=(j=t.callbacks).onNewMessage)==null||f.call(j,[...n.messages],"answer"),d.track("agent-message-received",{latency:H.get(!0),mode:n.chatMode,messages:n.messages.length})),b}catch(y){throw((p=n.messages[n.messages.length-1])==null?void 0:p.role)==="assistant"&&n.messages.pop(),d.track("agent-message-send",{event:"error",mode:n.chatMode,messages:n.messages.length}),y}},rate(l,m,C){var E,j,f,p;const A=n.messages.find(y=>y.id===l);if(n.chat){if(!A)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const $=((E=A.matches)==null?void 0:E.map(y=>[y.document_id,y.id]))??[];return d.track("agent-rate",{event:C?"update":"create",thumb:m===1?"up":"down",knowledge_id:((j=c.knowledge)==null?void 0:j.id)??"",mode:n.chatMode,matches:$,score:m}),C?o.updateRating(c.id,n.chat.id,C,{knowledge_id:((f=c.knowledge)==null?void 0:f.id)??"",message_id:l,matches:$,score:m}):o.createRating(c.id,n.chat.id,{knowledge_id:((p=c.knowledge)==null?void 0:p.id)??"",message_id:l,matches:$,score:m})},deleteRate(l){var m;if(!n.chat)throw new Error("Chat is not initialized");return d.track("agent-rate-delete",{type:"text",chat_id:(m=n.chat)==null?void 0:m.id,id:l,mode:n.chatMode}),o.deleteRating(c.id,n.chat.id,l)},speak(l){if(!n.streamingManager)throw new Error("Please connect to the agent first");function m(){if(typeof l=="string"){if(!c.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:c.presenter.voice,input:l,ssml:!1}}if(l.type==="text"&&!l.provider){if(!c.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:c.presenter.voice,input:l.input,ssml:l.ssml}}return l}const C=m();return d.track("agent-speak",C),H.update(),n.streamingManager.speak({script:C})}}}function st(e,t,a){const{getById:r}=we(t,a||x);return r(e)}h.AgentStatus=ie,h.ChatCreationFailed=z,h.ChatMode=P,h.ChatModeDowngraded=te,h.ChatProgress=W,h.ConnectionState=S,h.DocumentType=de,h.KnowledgeType=ce,h.PlanGroup=ae,h.Providers=me,h.RateState=se,h.StreamEvents=V,h.StreamingState=R,h.Subject=oe,h.UserPlan=re,h.ValidationError=F,h.VideoType=Y,h.VoiceAccess=ue,h.WsError=ne,h.createAgentManager=it,h.getAgent=st,h.mapVideoType=le,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
1
+ (function(h,_){typeof exports=="object"&&typeof module<"u"?_(exports):typeof define=="function"&&define.amd?define(["exports"],_):(h=typeof globalThis<"u"?globalThis:h||self,_(h.index={}))})(this,function(h){"use strict";var ot=Object.defineProperty;var ct=(h,_,z)=>_ in h?ot(h,_,{enumerable:!0,configurable:!0,writable:!0,value:z}):h[_]=z;var J=(h,_,z)=>(ct(h,typeof _!="symbol"?_+"":_,z),z);class _ extends Error{constructor({kind:a,description:r,error:s}){super(JSON.stringify({kind:a,description:r}));J(this,"kind");J(this,"description");J(this,"error");this.kind=a,this.description=r,this.error=s}}class z extends _{constructor(t,a){super({kind:"ChatCreationFailed",description:`Failed to create ${a?"persistent":""} chat, mode: ${t}`})}}class te extends _{constructor(t){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${t}`})}}class B extends _{constructor(a,r){super({kind:"ValidationError",description:a});J(this,"key");this.key=r}}class ne extends _{constructor(t){super({kind:"WSError",description:t})}}var re=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(re||{}),ae=(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))(ae||{}),ie=(e=>(e.Created="created",e.Started="started",e.Done="done",e.Error="error",e.Rejected="rejected",e.Ready="ready",e))(ie||{}),se=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(se||{}),P=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e))(P||{}),W=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(W||{}),oe=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(oe||{}),ce=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(ce||{}),de=(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))(de||{}),Y=(e=>(e.Clip="clip",e.Talk="talk",e))(Y||{});const le=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var R=(e=>(e.Start="START",e.Stop="STOP",e))(R||{}),V=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e.StreamFailed="stream/error",e.StreamReady="stream/ready",e.StreamCreated="stream/created",e.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(V||{}),S=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(S||{}),me=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(me||{}),ue=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(ue||{});const Me=45*1e3,_e="X-Playground-Chat",x="https://api.d-id.com",Ee="wss://notifications.d-id.com",be="79f81a83a67430be2bc0fd61042b8faa",fe=e=>new Promise(t=>setTimeout(t,e)),X=()=>Math.random().toString(16).slice(2);function Te(e,t){let a;return{promise:new Promise((s,i)=>{a=setTimeout(()=>i(new Error(t)),e)}),clear:()=>clearTimeout(a)}}async function Q(e,t){const a={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 s=1;s<=a.limit;s++)try{if(!a.timeout)return await e();const{promise:i,clear:n}=Te(a.timeout,a.timeoutErrorMessage),o=e().finally(n);return await Promise.race([o,i])}catch(i){if(r=i,!a.shouldRetryFn(i)||s>=a.limit)throw i;await fe(a.delayMs),a.onRetry(i)}throw r}function ge(){let e=window.localStorage.getItem("did_external_key_id");return e||(e=Math.random().toString(16).slice(2),window.localStorage.setItem("did_external_key_id",e)),e}let Pe=X();function he(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}.${ge()}_${Pe}`;throw new Error(`Unknown auth type: ${e}`)}const Ie=e=>Q(e,{limit:3,delayMs:1e3,timeout:0,shouldRetryFn:t=>t.status===429});function Z(e,t=x,a){const r=async(s,i)=>{const{skipErrorHandler:n,...o}=i||{},c=await Ie(()=>fetch(t+(s!=null&&s.startsWith("/")?s:`/${s}`),{...o,headers:{...o.headers,Authorization:he(e),"Content-Type":"application/json"}}));if(!c.ok){let u=await c.text().catch(()=>`Failed to fetch with status ${c.status}`);const d=new Error(u);throw a&&!n&&a(d,{url:s,options:o,headers:c.headers}),d}return c.json()};return{get(s,i){return r(s,{...i,method:"GET"})},post(s,i,n){return r(s,{...n,body:JSON.stringify(i),method:"POST"})},delete(s,i,n){return r(s,{...n,body:JSON.stringify(i),method:"DELETE"})},patch(s,i,n){return r(s,{...n,body:JSON.stringify(i),method:"PATCH"})}}}function we(e,t=x,a){const r=Z(e,`${t}/agents`,a);return{create(s,i){return r.post("/",s,i)},getAgents(s,i){return r.get(`/${s?`?tag=${s}`:""}`,i).then(n=>n??[])},getById(s,i){return r.get(`/${s}`,i)},delete(s,i){return r.delete(`/${s}`,void 0,i)},update(s,i,n){return r.patch(`/${s}`,i,n)},newChat(s,i,n){return r.post(`/${s}/chat`,i,n)},chat(s,i,n,o){return r.post(`/${s}/chat/${i}`,n,o)},createRating(s,i,n,o){return r.post(`/${s}/chat/${i}/ratings`,n,o)},updateRating(s,i,n,o,c){return r.patch(`/${s}/chat/${i}/ratings/${n}`,o,c)},deleteRating(s,i,n,o){return r.delete(`/${s}/chat/${i}/ratings/${n}`,o)},getSTTToken(s,i){return r.get(`/${s}/stt-token`,i)}}}const G=e=>e.type==="clip"&&e.presenter_id.startsWith("v2_")?"clip_v2":e.type;function Ae(e){var s,i,n,o;const t=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",a=()=>{const c=navigator.platform;return c.toLowerCase().includes("win")?"Windows":c.toLowerCase().includes("mac")?"Mac OS X":c.toLowerCase().includes("linux")?"Linux":"Unknown"},r=e.presenter;return{$os:`${a()}`,isMobile:`${t()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:G(r),agentVoice:{voiceId:(i=(s=e.presenter)==null?void 0:s.voice)==null?void 0:i.voice_id,provider:(o=(n=e.presenter)==null?void 0:n.voice)==null?void 0:o.type}}}function $e(e,t,a){var c,u,d;const{event:r,...s}=e,{template:i}=(t==null?void 0:t.llm)||{},{language:n}=((c=t==null?void 0:t.presenter)==null?void 0:c.voice)||{};return{...s,llm:{...s.llm,template:i},script:{...s.script,provider:{...(u=s==null?void 0:s.script)==null?void 0:u.provider,language:n}},stitch:(t==null?void 0:t.presenter.type)==="talk"?(d=t==null?void 0:t.presenter)==null?void 0:d.stitch:void 0,...a}}let O={};const je="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function ze(e){var i,n,o,c,u,d;const t=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",a=e.agent.presenter,r=(i=e.agent.llm)==null?void 0:i.prompt_customization,s={token:e.token||"testKey",distinct_id:e.distinctId||ge(),agentId:e.agent.id,agentType:G(a),owner_id:e.agent.owner_id??"",promptVersion:(n=e.agent.llm)==null?void 0:n.prompt_version,behavior:{role:r==null?void 0:r.role,personality:r==null?void 0:r.personality,instructions:(o=e.agent.llm)==null?void 0:o.instructions},temperature:(c=e.agent.llm)==null?void 0:c.temperature,knowledgeSource:r==null?void 0:r.knowledge_source,starterQuestionsCount:(d=(u=e.agent.knowledge)==null?void 0:u.starter_message)==null?void 0:d.length,topicsToAvoid:r==null?void 0:r.topics_to_avoid,maxResponseLength:r==null?void 0:r.max_response_length};return{...s,additionalProperties:{},isEnabled:e.isEnabled??!0,getRandom:()=>Math.random().toString(16).slice(2),enrich(g){const D={};if(g&&typeof g!="object")throw new Error("properties must be a flat json object");for(let w in g)(typeof g[w]=="string"||typeof g[w]=="number")&&(D[w]=g[w]);this.additionalProperties={...this.additionalProperties,...D}},async track(g,D){if(!this.isEnabled)return Promise.resolve();const{audioPath:w,...v}=D||{},k={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:g,properties:{...this.additionalProperties,...v,...s,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(je,k).then(M=>M.json())}catch(M){return console.error(M)}},linkTrack(g,D,w,v){O[g]||(O[g]={events:{},resolvedDependencies:[]}),v.includes(w)||v.push(w);const k=O[g];if(k.events[w]={props:D},k.resolvedDependencies.push(w),v.every(N=>k.resolvedDependencies.includes(N))){const N=v.reduce((A,l)=>k.events[l]?{...A,...k.events[l].props}:A,{});this.track(g,N),k.resolvedDependencies=k.resolvedDependencies.filter(A=>!v.includes(A)),v.forEach(A=>{delete k.events[A]})}}}}function Le(){let e=0;return{reset:()=>e=0,update:()=>e=Date.now(),get:(t=!1)=>t?Date.now()-e:e}}const H=Le();function pe(e){return e===P.Playground?{headers:{[_e]:"true"}}:{}}async function ye(e,t,a,r,s=!1,i){try{return!i&&r!==P.DirectPlayback&&(i=await t.newChat(e.id,{persist:s},pe(r)),a.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(n){try{const o=JSON.parse(n.message);if((o==null?void 0:o.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(o){console.error("Error parsing the error message:",o)}throw new Error("Cannot create new chat")}}function Ne(e){var a;const t=((a=e.greetings)==null?void 0:a.filter(r=>r.length>0))??[];return t.length>0?t[Math.floor(Math.random()*t.length)]:`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`}function ve(e,t){return t&&t.length>0?t:[{content:e,id:X(),role:"assistant",created_at:new Date().toISOString()}]}function Fe(e){return new Promise((t,a)=>{const{callbacks:r,host:s,auth:i}=e,{onMessage:n=null,onOpen:o=null,onClose:c=null,onError:u=null}=r||{},d=new WebSocket(`${s}?authorization=${he(i)}`);d.onmessage=n,d.onclose=c,d.onerror=g=>{console.error(g),u==null||u("Websocket failed to connect",g),a(g)},d.onopen=g=>{o==null||o(g),t(d)}})}async function Be(e){const{retries:t=1}=e;let a=null;for(let r=0;(a==null?void 0:a.readyState)!==WebSocket.OPEN;r++)try{a=await Fe(e)}catch(s){if(r===t)throw s;await fe(r*500)}return a}async function We(e,t,a){const r=a!=null&&a.onMessage?[a.onMessage]:[],s=await Be({auth:e,host:t,callbacks:{onError:i=>{var n;return(n=a.onError)==null?void 0:n.call(a,new ne(i))},onMessage(i){const n=JSON.parse(i.data);r.forEach(o=>o(n.event,n))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:i=>r.push(i)}}function He(e){if(e.answer!==void 0)return e.answer;let t=0,a="";for(;t in e;)a+=e[t++];return a}function Ke(e,t,a,r,s){const i=r.messages[r.messages.length-1];if(!(e===W.Partial||e===W.Answer)||(i==null?void 0:i.role)!=="assistant")return;const{content:n,sequence:o}=t;e===W.Partial?a[o]=n:a.answer=n;const c=He(a);(i.content!==c||e===W.Answer)&&(i.content=c,s==null||s([...r.messages],e))}function Ue(e,t,a,r,s){let i={};return{clearQueue:()=>i={},onMessage:(n,o)=>{var c,u;if("content"in o)Ke(n,o,i,t,a.callbacks.onNewMessage),n===W.Answer&&e.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const d=V,g=[d.StreamVideoDone,d.StreamVideoError,d.StreamVideoRejected],D=[d.StreamFailed,d.StreamVideoError,d.StreamVideoRejected],w=$e(o,r,{mode:t.chatMode});if(n=n,n===d.StreamVideoCreated)e.linkTrack("agent-video",w,d.StreamVideoCreated,["start"]);else if(g.includes(n)){const v=n.split("/")[1];D.includes(n)?e.track("agent-video",{...w,event:v}):e.linkTrack("agent-video",{...w,event:v},n,["done"])}D.includes(n)&&((u=(c=a.callbacks).onError)==null||u.call(c,new Error(`Stream failed with event ${n}`),{data:o})),o.event===d.StreamDone&&s()}}}}function Ve(e,t,a,r){const s=Z(e,`${t}/agents/${a}`,r);return{createStream(i){return s.post("/streams",{output_resolution:i.output_resolution,compatibility_mode:i.compatibility_mode,stream_warmup:i.stream_warmup,session_timeout:i.session_timeout,stream_greeting:i.stream_greeting})},startConnection(i,n,o){return s.post(`/streams/${i}/sdp`,{session_id:o,answer:n})},addIceCandidate(i,n,o){return s.post(`/streams/${i}/ice`,{session_id:o,...n})},sendStreamRequest(i,n,o){return s.post(`/streams/${i}`,{session_id:n,...o})},close(i,n){return s.delete(`/streams/${i}`,{session_id:n})}}}function xe(e,t,a,r){const s=Z(e,`${t}/agents/${a}`,r);return{createStream(i,n){return s.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,stream_greeting:i.stream_greeting},n)},startConnection(i,n,o,c){return s.post(`/streams/${i}/sdp`,{session_id:o,answer:n},c)},addIceCandidate(i,n,o,c){return s.post(`/streams/${i}/ice`,{session_id:o,...n},c)},sendStreamRequest(i,n,o,c){return s.post(`/streams/${i}`,{session_id:n,...o},c)},close(i,n,o){return s.delete(`/streams/${i}`,{session_id:n},o)}}}function qe(e,t,a){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,jitterBufferDelay:(t.jitterBufferDelay-e.jitterBufferDelay)/r,framesPerSecond:t.framesPerSecond,freezeCount:t.freezeCount-e.freezeCount,freezeDuration:t.freezeDuration-e.freezeDuration,lowFpsCount:a}}function Je(e){return e.filter(t=>t.freezeCount>0||t.framesPerSecond<21||t.framesDropped>0||t.packetsLost>0).map(t=>{const{timestamp:a,...r}=t,s=[];return t.freezeCount>0&&s.push("freeze"),t.framesPerSecond<21&&s.push("low fps"),t.framesDropped>0&&s.push("frames dropped"),t.packetsLost>0&&s.push("packet loss"),{...r,causes:s}})}function Xe(e){let t="";for(const a of e.values())if(a&&a.type==="codec"&&a.mimeType.startsWith("video")&&(t=a.mimeType.split("/")[1]),a&&a.type==="inbound-rtp"&&a.kind==="video")return{codec:t,timestamp:a.timestamp,bytesReceived:a.bytesReceived,packetsReceived:a.packetsReceived,packetsLost:a.packetsLost,framesDropped:a.framesDropped,framesDecoded:a.framesDecoded,jitter:a.jitter,jitterBufferDelay:a.jitterBufferDelay,frameWidth:a.frameWidth,frameHeight:a.frameHeight,framesPerSecond:a.framesPerSecond,freezeCount:a.freezeCount,freezeDuration:a.totalFreezesDuration};return{}}function Ye(e,t,a){const r=e.map((n,o)=>o===0?a?{timestamp:n.timestamp,duration:0,bytesReceived:n.bytesReceived-a.bytesReceived,bitrate:(n.bytesReceived-a.bytesReceived)*8/(t/1e3),packetsReceived:n.packetsReceived-a.packetsReceived,packetsLost:n.packetsLost-a.packetsLost,framesDropped:n.framesDropped-a.framesDropped,framesDecoded:n.framesDecoded-a.framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay-a.jitterBufferDelay,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount-a.freezeCount,freezeDuration:n.freezeDuration-a.freezeDuration}:{timestamp:n.timestamp,duration:0,bytesReceived:n.bytesReceived,bitrate:n.bytesReceived*8/(t/1e3),packetsReceived:n.packetsReceived,packetsLost:n.packetsLost,framesDropped:n.framesDropped,framesDecoded:n.framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount,freezeDuration:n.freezeDuration}:{timestamp:n.timestamp,duration:t*o/1e3,bytesReceived:n.bytesReceived-e[o-1].bytesReceived,bitrate:(n.bytesReceived-e[o-1].bytesReceived)*8/(t/1e3),packetsReceived:n.packetsReceived-e[o-1].packetsReceived,packetsLost:n.packetsLost-e[o-1].packetsLost,framesDropped:n.framesDropped-e[o-1].framesDropped,framesDecoded:n.framesDecoded-e[o-1].framesDecoded,jitter:n.jitter,jitterBufferDelay:n.jitterBufferDelay-e[o-1].jitterBufferDelay,framesPerSecond:n.framesPerSecond,freezeCount:n.freezeCount-e[o-1].freezeCount,freezeDuration:n.freezeDuration-e[o-1].freezeDuration}),s=Je(r),i=s.reduce((n,o)=>n+(o.causes.includes("low fps")?1:0),0);return{webRTCStats:{anomalies:s,aggregateReport:qe(e[0],e[e.length-1],i)},codec:e[0].codec,resolution:`${e[0].frameWidth}x${e[0].frameHeight}`}}const ee=100,Qe=Math.max(Math.ceil(400/ee),1);function Ze(){let e=0;return t=>{for(const a of t.values())if(a&&a.type==="inbound-rtp"&&a.kind==="video"){const r=a.framesDecoded,s=r-e>0;return e=r,s}return!1}}function Ge(e,t,a,r,s=!1,i=!1){const n=s?1:0;let o=[],c,u=0,d=!1,g=0;const D=Ze();return setInterval(async()=>{const w=await e.getStats(),v=D(w),k=Xe(w);if(v)u=0,d||(r==null||r(R.Start),i&&g>=n&&!t()&&a(),c=o[o.length-1],o=[],g++,d=!0),o.push(k);else if(d&&(u++,u>=Qe)){const M=Ye(o,ee,c);r==null||r(R.Stop,M),!i&&!t()&&a(),d=!1}},ee)}let ke=!1;const L=(e,t)=>ke&&console.log(e,t),Oe=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function Ce(e){switch(e){case"connected":return S.Connected;case"checking":return S.Connecting;case"failed":return S.Fail;case"new":return S.New;case"closed":return S.Closed;case"disconnected":return S.Disconnected;case"completed":return S.Completed;default:return S.New}}function Re(e,t,a,r){e===R.Start&&t===R.Start?a==null||a(R.Start):e===R.Stop&&t===R.Stop&&(a==null||a(R.Stop,r))}async function et(e,t,{debug:a=!1,callbacks:r,auth:s,baseURL:i=x,warmup:n}){ke=a;let o=!1,c=!1,u=R.Stop,d=R.Stop;const{startConnection:g,sendStreamRequest:D,close:w,createStream:v,addIceCandidate:k}=t.videoType===Y.Clip?Ve(s,i,e,r.onError):xe(s,i,e,r.onError),{id:M,offer:N,ice_servers:A,session_id:l}=await v(t),m=new Oe({iceServers:A}),C=m.createDataChannel("JanusDataChannel");if(!l)throw new Error("Could not create session_id");const I=()=>o,$=()=>{var f;o=!0,c&&((f=r.onConnectionStateChange)==null||f.call(r,S.Connected))},E=Ge(m,I,$,(f,p)=>Re(d=f,u,r.onVideoStateChange,p),n,!!t.stream_greeting);m.onicecandidate=f=>{var p;L("peerConnection.onicecandidate",f);try{f.candidate&&f.candidate.sdpMid&&f.candidate.sdpMLineIndex!==null?k(M,{candidate:f.candidate.candidate,sdpMid:f.candidate.sdpMid,sdpMLineIndex:f.candidate.sdpMLineIndex},l):k(M,{candidate:null},l)}catch(y){(p=r.onError)==null||p.call(r,y,{streamId:M})}},C.onopen=()=>{c=!0,(!t.stream_warmup&&!t.stream_greeting||o)&&$()},C.onmessage=f=>{f.data==="stream/started"?u=R.Start:f.data==="stream/done"&&(u=R.Stop),Re(d,u,r.onVideoStateChange)},m.oniceconnectionstatechange=()=>{var p;L("peerConnection.oniceconnectionstatechange => "+m.iceConnectionState);const f=Ce(m.iceConnectionState);f!==S.Connected&&((p=r.onConnectionStateChange)==null||p.call(r,f))},m.ontrack=f=>{var p;L("peerConnection.ontrack",f),(p=r.onSrcObjectReady)==null||p.call(r,f.streams[0])},await m.setRemoteDescription(N),L("set remote description OK");const j=await m.createAnswer();return L("create answer OK"),await m.setLocalDescription(j),L("set local description OK"),await g(M,j,l),L("start connection OK"),{speak(f){return D(M,l,f)},async disconnect(){var f,p;if(M){const y=Ce(m.iceConnectionState);if(m){if(y===S.New){(f=r.onVideoStateChange)==null||f.call(r,R.Stop),clearInterval(E);return}m.close(),m.oniceconnectionstatechange=null,m.onnegotiationneeded=null,m.onicecandidate=null,m.ontrack=null}try{y===S.Connected&&await w(M,l).catch(b=>{})}catch(b){L("Error on close stream connection",b)}(p=r.onVideoStateChange)==null||p.call(r,R.Stop),clearInterval(E)}},sessionId:l,streamId:M}}function tt(e,t,a){var s;const{streamOptions:r}=t??{};return{videoType:le(e.presenter.type),output_resolution:r==null?void 0:r.outputResolution,session_timeout:r==null?void 0:r.sessionTimeout,stream_warmup:r==null?void 0:r.streamWarmup,compatibility_mode:r==null?void 0:r.compatibilityMode,stream_greeting:G(e.presenter)!=="clip"&&((s=t==null?void 0:t.streamOptions)!=null&&s.streamGreeting)?a:void 0}}function nt(e,t,a,r){H.get()>0&&(e===R.Start?r.linkTrack("agent-video",{event:"start",latency:H.get(!0)},"start",[V.StreamVideoCreated]):e===R.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,...a},"done",[V.StreamVideoDone]))}function rt(e,t,a,r){return H.reset(),new Promise(async(s,i)=>{var n;try{const o=await et(e.id,tt(e,t,r),{...t,analytics:a,warmup:(n=t.streamOptions)==null?void 0:n.streamWarmup,callbacks:{...t.callbacks,onConnectionStateChange:c=>{var u,d;(d=(u=t.callbacks).onConnectionStateChange)==null||d.call(u,c),c===S.Connected&&s(o)},onVideoStateChange:(c,u)=>{var d,g;(g=(d=t.callbacks).onVideoStateChange)==null||g.call(d,c),nt(c,e,u,a)}}})}catch(o){i(o)}})}async function at(e,t,a,r,s,i){var u,d,g,D;const{chat:n,chatMode:o}=await ye(e,a,r,t.mode,t.persistentChat,s);if(o&&o!==t.mode&&(t.mode=o,(d=(u=t.callbacks).onModeChange)==null||d.call(u,o),o===P.TextOnly))return(D=(g=t.callbacks).onError)==null||D.call(g,new te(o)),{chat:n};const c=await rt(e,t,r,i);return{chat:n,streamingManager:c}}async function it(e,t){var M,N,A;let a=!0;const r=t.mixpanelKey||be,s=t.wsURL||Ee,i=t.baseURL||x,n={messages:[],chatMode:t.mode||P.Functional},o=we(t.auth,i,t.callbacks.onError),c=await o.getById(e),u=Ne(c),d=ze({token:r,agent:c,isEnabled:t.enableAnalitics,distinctId:t.distinctId}),{onMessage:g,clearQueue:D}=Ue(d,n,t,c,()=>{var l;return(l=n.socketManager)==null?void 0:l.disconnect()});n.messages=ve(u,t.initialMessages),(N=(M=t.callbacks).onNewMessage)==null||N.call(M,[...n.messages],"answer"),d.track("agent-sdk",{event:"loaded",...Ae(c)});async function w(l){var j,f,p,y,b,T,K;(f=(j=t.callbacks).onConnectionStateChange)==null||f.call(j,S.Connecting),H.reset(),l&&!a&&(delete n.chat,n.messages=ve(u),(y=(p=t.callbacks).onNewMessage)==null||y.call(p,[...n.messages],"answer"));const m=t.mode===P.DirectPlayback?Promise.resolve(void 0):We(t.auth,s,{onMessage:g,onError:t.callbacks.onError}),C=Q(()=>at(c,t,o,d,n.chat,l?u:void 0),{limit:3,timeout:Me,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:F=>(F==null?void 0:F.message)!=="Could not connect"&&F.status!==429,delayMs:1e3}).catch(F=>{var U,q;throw k(P.Maintenance),(q=(U=t.callbacks).onConnectionStateChange)==null||q.call(U,S.Fail),F}),[I,{streamingManager:$,chat:E}]=await Promise.all([m,C]);E&&E.id!==((b=n.chat)==null?void 0:b.id)&&((K=(T=t.callbacks).onNewChat)==null||K.call(T,E.id)),n.streamingManager=$,n.socketManager=I,n.chat=E,a=!1,k((E==null?void 0:E.chat_mode)??t.mode??P.Functional)}async function v(){var l,m,C,I;(l=n.socketManager)==null||l.disconnect(),await((m=n.streamingManager)==null?void 0:m.disconnect()),delete n.streamingManager,delete n.socketManager,(I=(C=t.callbacks).onConnectionStateChange)==null||I.call(C,S.Disconnected)}async function k(l){var m,C;l!==n.chatMode&&(d.track("agent-mode-change",{mode:l}),n.chatMode=l,n.chatMode!==P.Functional&&await v(),(C=(m=t.callbacks).onModeChange)==null||C.call(m,l))}return{agent:c,starterMessages:((A=c.knowledge)==null?void 0:A.starter_message)||[],getSTTToken:()=>o.getSTTToken(c.id),changeMode:k,enrichAnalytics:d.enrich,async connect(){var l;await w(!0),d.track("agent-chat",{event:"connect",chatId:(l=n.chat)==null?void 0:l.id,agentId:c.id,mode:n.chatMode})},async reconnect(){var l;await v(),await w(!1),d.track("agent-chat",{event:"reconnect",chatId:(l=n.chat)==null?void 0:l.id,agentId:c.id,mode:n.chatMode})},async disconnect(){var l;await v(),d.track("agent-chat",{event:"disconnect",chatId:(l=n.chat)==null?void 0:l.id,agentId:c.id,mode:n.chatMode})},async chat(l){var $,E,j,f,p;const m=()=>{if(t.mode===P.DirectPlayback)throw new B("Direct playback is enabled, chat is disabled");if(l.length>=800)throw new B("Message cannot be more than 800 characters");if(l.length===0)throw new B("Message cannot be empty");if(n.chatMode===P.Maintenance)throw new B("Chat is in maintenance mode");if(![P.TextOnly,P.Playground].includes(n.chatMode)){if(!n.streamingManager)throw new B("Streaming manager is not initialized");if(!n.chat)throw new B("Chat is not initialized")}},C=async()=>{var y,b;if(!n.chat){const T=await ye(c,o,d,n.chatMode,t.persistentChat);if(!T.chat)throw new z(n.chatMode,!!t.persistentChat);n.chat=T.chat,(b=(y=t.callbacks).onNewChat)==null||b.call(y,n.chat.id)}return n.chat.id},I=async(y,b)=>Q(()=>{var T,K;return o.chat(c.id,b,{chatMode:n.chatMode,streamId:(T=n.streamingManager)==null?void 0:T.streamId,sessionId:(K=n.streamingManager)==null?void 0:K.sessionId,messages:y.map(({matches:F,...U})=>U)},{...pe(n.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:T=>{var U,q,Se,De;const K=(U=T==null?void 0:T.message)==null?void 0:U.includes("missing or invalid session_id");return!((q=T==null?void 0:T.message)==null?void 0:q.includes("Stream Error"))&&!K?((De=(Se=t.callbacks).onError)==null||De.call(Se,T),!1):!0},onRetry:async()=>{await v(),await w(!1)}});try{D(),m(),n.messages.push({id:X(),role:"user",content:l,created_at:new Date(H.update()).toISOString()}),(E=($=t.callbacks).onNewMessage)==null||E.call($,[...n.messages],"user");const y=await C(),b=await I([...n.messages],y);return n.messages.push({id:X(),role:"assistant",content:b.result||"",created_at:new Date().toISOString(),context:b.context,matches:b.matches}),d.track("agent-message-send",{event:"success",mode:n.chatMode,messages:n.messages.length+1}),b.result&&((f=(j=t.callbacks).onNewMessage)==null||f.call(j,[...n.messages],"answer"),d.track("agent-message-received",{latency:H.get(!0),mode:n.chatMode,messages:n.messages.length})),b}catch(y){throw((p=n.messages[n.messages.length-1])==null?void 0:p.role)==="assistant"&&n.messages.pop(),d.track("agent-message-send",{event:"error",mode:n.chatMode,messages:n.messages.length}),y}},rate(l,m,C){var E,j,f,p;const I=n.messages.find(y=>y.id===l);if(n.chat){if(!I)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const $=((E=I.matches)==null?void 0:E.map(y=>[y.document_id,y.id]))??[];return d.track("agent-rate",{event:C?"update":"create",thumb:m===1?"up":"down",knowledge_id:((j=c.knowledge)==null?void 0:j.id)??"",mode:n.chatMode,matches:$,score:m}),C?o.updateRating(c.id,n.chat.id,C,{knowledge_id:((f=c.knowledge)==null?void 0:f.id)??"",message_id:l,matches:$,score:m}):o.createRating(c.id,n.chat.id,{knowledge_id:((p=c.knowledge)==null?void 0:p.id)??"",message_id:l,matches:$,score:m})},deleteRate(l){var m;if(!n.chat)throw new Error("Chat is not initialized");return d.track("agent-rate-delete",{type:"text",chat_id:(m=n.chat)==null?void 0:m.id,id:l,mode:n.chatMode}),o.deleteRating(c.id,n.chat.id,l)},speak(l){var I;if(!n.streamingManager)throw new Error("Please connect to the agent first");function m(){if(typeof l=="string"){if(!c.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:c.presenter.voice,input:l,ssml:!1}}if(l.type==="text"&&!l.provider){if(!c.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:c.presenter.voice,input:l.input,ssml:l.ssml}}return l}const C=m();return d.track("agent-speak",C),H.update(),n.streamingManager.speak({script:C,metadata:{chat_id:(I=n.chat)==null?void 0:I.id,agent_id:c.id}})}}}function st(e,t,a){const{getById:r}=we(t,a||x);return r(e)}h.AgentStatus=ie,h.ChatCreationFailed=z,h.ChatMode=P,h.ChatModeDowngraded=te,h.ChatProgress=W,h.ConnectionState=S,h.DocumentType=de,h.KnowledgeType=ce,h.PlanGroup=ae,h.Providers=me,h.RateState=se,h.StreamEvents=V,h.StreamingState=R,h.Subject=oe,h.UserPlan=re,h.ValidationError=B,h.VideoType=Y,h.VoiceAccess=ue,h.WsError=ne,h.createAgentManager=it,h.getAgent=st,h.mapVideoType=le,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
@@ -117,5 +117,6 @@ export interface SendClipStreamPayload extends StickyRequest {
117
117
  * @example "https://path.to.directory/"
118
118
  */
119
119
  raw_result_url?: string;
120
+ metadata: Record<string, any>;
120
121
  }
121
122
  export {};
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.0-beta.1",
4
+ "version": "1.1.0-beta.2",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {