@d-id/client-sdk 1.1.0-beta.17 → 1.1.0-beta.18

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
@@ -17,7 +17,7 @@ class Z extends Error {
17
17
  this.kind = a, this.description = r, this.error = s;
18
18
  }
19
19
  }
20
- class Ce extends Z {
20
+ class De extends Z {
21
21
  constructor(t, a) {
22
22
  super({
23
23
  kind: "ChatCreationFailed",
@@ -25,7 +25,7 @@ class Ce extends Z {
25
25
  });
26
26
  }
27
27
  }
28
- class De extends Z {
28
+ class Ce extends Z {
29
29
  constructor(t) {
30
30
  super({
31
31
  kind: "ChatModeDowngraded",
@@ -51,7 +51,7 @@ class Re extends Z {
51
51
  });
52
52
  }
53
53
  }
54
- var Ee = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(Ee || {}), Se = /* @__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))(Se || {}), _e = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(_e || {}), Ie = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(Ie || {}), P = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e.OuterControl = "OuterControl", e))(P || {}), H = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(H || {}), Me = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(Me || {}), Te = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(Te || {}), je = /* @__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))(je || {}), de = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(de || {});
54
+ var Ee = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(Ee || {}), Se = /* @__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))(Se || {}), _e = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(_e || {}), Ie = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(Ie || {}), P = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e.Off = "Off", e))(P || {}), H = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(H || {}), Me = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(Me || {}), Te = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(Te || {}), je = /* @__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))(je || {}), de = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(de || {});
55
55
  const be = (e) => {
56
56
  switch (e) {
57
57
  case "clip":
@@ -66,7 +66,7 @@ var p = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(p || {}
66
66
  const Ae = 45 * 1e3, Be = "X-Playground-Chat", O = "https://api.d-id.com", Le = "wss://notifications.d-id.com", ze = "79f81a83a67430be2bc0fd61042b8faa", ue = (e) => new Promise((t) => setTimeout(t, e)), q = (e = 16) => {
67
67
  const t = new Uint8Array(e);
68
68
  return window.crypto.getRandomValues(t), Array.from(t, (a) => a.toString(16).padStart(2, "0")).join("").slice(0, 13);
69
- }, Ne = (e) => [P.TextOnly, P.Playground, P.Maintenance].includes(e), ee = (e) => e && [P.DirectPlayback, P.OuterControl].includes(e);
69
+ }, Ne = (e) => [P.TextOnly, P.Playground, P.Maintenance].includes(e), ee = (e) => e && [P.DirectPlayback, P.Off].includes(e);
70
70
  function xe(e, t) {
71
71
  let a;
72
72
  return {
@@ -304,8 +304,8 @@ function qe(e) {
304
304
  return Promise.resolve();
305
305
  const {
306
306
  audioPath: R,
307
- ...C
308
- } = j || {}, D = {
307
+ ...D
308
+ } = j || {}, C = {
309
309
  method: "POST",
310
310
  headers: {
311
311
  "Content-Type": "application/x-www-form-urlencoded"
@@ -315,7 +315,7 @@ function qe(e) {
315
315
  event: w,
316
316
  properties: {
317
317
  ...this.additionalProperties,
318
- ...C,
318
+ ...D,
319
319
  ...s,
320
320
  source: t,
321
321
  time: Date.now(),
@@ -329,26 +329,26 @@ function qe(e) {
329
329
  })
330
330
  };
331
331
  try {
332
- return await fetch(He, D).then((k) => k.json());
332
+ return await fetch(He, C).then((k) => k.json());
333
333
  } catch (k) {
334
334
  return console.error(k);
335
335
  }
336
336
  },
337
- linkTrack(w, j, R, C) {
337
+ linkTrack(w, j, R, D) {
338
338
  G[w] || (G[w] = {
339
339
  events: {},
340
340
  resolvedDependencies: []
341
- }), C.includes(R) || C.push(R);
342
- const D = G[w];
343
- if (D.events[R] = {
341
+ }), D.includes(R) || D.push(R);
342
+ const C = G[w];
343
+ if (C.events[R] = {
344
344
  props: j
345
- }, D.resolvedDependencies.push(R), C.every((L) => D.resolvedDependencies.includes(L))) {
346
- const L = C.reduce(($, u) => D.events[u] ? {
345
+ }, C.resolvedDependencies.push(R), D.every((L) => C.resolvedDependencies.includes(L))) {
346
+ const L = D.reduce(($, u) => C.events[u] ? {
347
347
  ...$,
348
- ...D.events[u].props
348
+ ...C.events[u].props
349
349
  } : $, {});
350
- this.track(w, L), D.resolvedDependencies = D.resolvedDependencies.filter(($) => !C.includes($)), C.forEach(($) => {
351
- delete D.events[$];
350
+ this.track(w, L), C.resolvedDependencies = C.resolvedDependencies.filter(($) => !D.includes($)), D.forEach(($) => {
351
+ delete C.events[$];
352
352
  });
353
353
  }
354
354
  }
@@ -508,13 +508,13 @@ function et(e, t, a, r, s) {
508
508
  if (c = c, c === l.StreamVideoCreated)
509
509
  e.linkTrack("agent-video", R, l.StreamVideoCreated, ["start"]);
510
510
  else if (w.includes(c)) {
511
- const C = c.split("/")[1];
511
+ const D = c.split("/")[1];
512
512
  j.includes(c) ? e.track("agent-video", {
513
513
  ...R,
514
- event: C
514
+ event: D
515
515
  }) : e.linkTrack("agent-video", {
516
516
  ...R,
517
- event: C
517
+ event: D
518
518
  }, c, ["done"]);
519
519
  }
520
520
  j.includes(c) && ((d = (o = a.callbacks).onError) == null || d.call(o, new Error(`Stream failed with event ${c}`), {
@@ -753,13 +753,13 @@ function ut() {
753
753
  }
754
754
  function lt(e, t, a, r, s, i = !1) {
755
755
  let c = [], n, o = 0, d = !1, l = Q.Unknown, w = Q.Unknown, j = 0, R = 0;
756
- const C = ut();
756
+ const D = ut();
757
757
  return setInterval(async () => {
758
- const D = await e.getStats(), {
758
+ const C = await e.getStats(), {
759
759
  isReceiving: k,
760
760
  avgJitterDelayInInterval: L,
761
761
  freezeCount: $
762
- } = C(D), u = it(D);
762
+ } = D(C), u = it(C);
763
763
  if (k)
764
764
  o = 0, j = $ - R, w = L < ct ? Q.Strong : L > dt && j > 1 ? Q.Weak : l, w !== l && (s == null || s(w), l = w, R += j, j = 0), d || (r == null || r(p.Start), n = c[c.length - 1], c = [], d = !0), c.push(u);
765
765
  else if (d && (o++, o >= ot)) {
@@ -864,8 +864,8 @@ async function wt(e, t, {
864
864
  startConnection: w,
865
865
  sendStreamRequest: j,
866
866
  close: R,
867
- createStream: C,
868
- addIceCandidate: D
867
+ createStream: D,
868
+ addIceCandidate: C
869
869
  } = t.videoType === de.Clip ? tt(s, i, e, r.onError) : rt(s, i, e, r.onError), {
870
870
  id: k,
871
871
  offer: L,
@@ -873,7 +873,7 @@ async function wt(e, t, {
873
873
  session_id: u,
874
874
  fluent: m,
875
875
  interrupt_enabled: v
876
- } = await C(t);
876
+ } = await D(t);
877
877
  (W = r.onStreamCreated) == null || W.call(r, {
878
878
  stream_id: k,
879
879
  session_id: u,
@@ -906,11 +906,11 @@ async function wt(e, t, {
906
906
  var h;
907
907
  B("peerConnection.onicecandidate", f);
908
908
  try {
909
- f.candidate && f.candidate.sdpMid && f.candidate.sdpMLineIndex !== null ? D(k, {
909
+ f.candidate && f.candidate.sdpMid && f.candidate.sdpMLineIndex !== null ? C(k, {
910
910
  candidate: f.candidate.candidate,
911
911
  sdpMid: f.candidate.sdpMid,
912
912
  sdpMLineIndex: f.candidate.sdpMLineIndex
913
- }, u) : D(k, {
913
+ }, u) : C(k, {
914
914
  candidate: null
915
915
  }, u);
916
916
  } catch (b) {
@@ -1036,7 +1036,7 @@ function pt(e, t) {
1036
1036
  };
1037
1037
  }
1038
1038
  function yt(e, t, a, r, s) {
1039
- s === U.Fluent ? vt(e, t, a, r, s) : Ct(e, t, a, r, s);
1039
+ s === U.Fluent ? vt(e, t, a, r, s) : Dt(e, t, a, r, s);
1040
1040
  }
1041
1041
  function vt(e, t, a, r, s) {
1042
1042
  e === p.Start ? r.track("stream-session", {
@@ -1062,7 +1062,7 @@ function kt(e, t, a, r) {
1062
1062
  "stream-type": r
1063
1063
  }, "done", [J.StreamVideoDone]));
1064
1064
  }
1065
- function Ct(e, t, a, r, s) {
1065
+ function Dt(e, t, a, r, s) {
1066
1066
  F.get() <= 0 || (e === p.Start ? r.linkTrack("agent-video", {
1067
1067
  event: "start",
1068
1068
  latency: F.get(!0),
@@ -1075,7 +1075,7 @@ function Ct(e, t, a, r, s) {
1075
1075
  ...a
1076
1076
  }, "done", [J.StreamVideoDone]));
1077
1077
  }
1078
- function Dt(e, t, a) {
1078
+ function Ct(e, t, a) {
1079
1079
  return F.reset(), new Promise(async (r, s) => {
1080
1080
  try {
1081
1081
  const i = await wt(e.id, pt(e, t), {
@@ -1109,10 +1109,10 @@ async function Rt(e, t, a, r, s) {
1109
1109
  chatMode: c
1110
1110
  } = await pe(e, a, r, t.mode, t.persistentChat, s);
1111
1111
  if (c && c !== t.mode && (t.mode = c, (d = (o = t.callbacks).onModeChange) == null || d.call(o, c), c === P.TextOnly))
1112
- return (w = (l = t.callbacks).onError) == null || w.call(l, new De(c)), {
1112
+ return (w = (l = t.callbacks).onError) == null || w.call(l, new Ce(c)), {
1113
1113
  chat: i
1114
1114
  };
1115
- const n = await Dt(e, t, r);
1115
+ const n = await Ct(e, t, r);
1116
1116
  return {
1117
1117
  chat: i,
1118
1118
  streamingManager: n
@@ -1155,22 +1155,22 @@ async function St(e, t) {
1155
1155
  delayMs: 1e3
1156
1156
  }).catch((x) => {
1157
1157
  var W, f;
1158
- throw D(P.Maintenance), (f = (W = t.callbacks).onConnectionStateChange) == null || f.call(W, T.Fail), x;
1158
+ throw C(P.Maintenance), (f = (W = t.callbacks).onConnectionStateChange) == null || f.call(W, T.Fail), x;
1159
1159
  }), [g, {
1160
1160
  streamingManager: E,
1161
1161
  chat: y
1162
1162
  }] = await Promise.all([m, v]);
1163
- y && y.id !== ((_ = n.chat) == null ? void 0 : _.id) && ((N = (I = t.callbacks).onNewChat) == null || N.call(I, y.id)), n.streamingManager = E, n.socketManager = g, n.chat = y, a = !1, D((y == null ? void 0 : y.chat_mode) ?? t.mode ?? P.Functional);
1163
+ y && y.id !== ((_ = n.chat) == null ? void 0 : _.id) && ((N = (I = t.callbacks).onNewChat) == null || N.call(I, y.id)), n.streamingManager = E, n.socketManager = g, n.chat = y, a = !1, C((y == null ? void 0 : y.chat_mode) ?? t.mode ?? P.Functional);
1164
1164
  }
1165
- async function C() {
1165
+ async function D() {
1166
1166
  var u, m, v, g;
1167
1167
  (u = n.socketManager) == null || u.disconnect(), await ((m = n.streamingManager) == null ? void 0 : m.disconnect()), r = !1, delete n.streamingManager, delete n.socketManager, (g = (v = t.callbacks).onConnectionStateChange) == null || g.call(v, T.Disconnected);
1168
1168
  }
1169
- async function D(u) {
1169
+ async function C(u) {
1170
1170
  var m, v;
1171
1171
  u !== n.chatMode && (l.track("agent-mode-change", {
1172
1172
  mode: u
1173
- }), n.chatMode = u, n.chatMode !== P.Functional && await C(), (v = (m = t.callbacks).onModeChange) == null || v.call(m, u));
1173
+ }), n.chatMode = u, n.chatMode !== P.Functional && await D(), (v = (m = t.callbacks).onModeChange) == null || v.call(m, u));
1174
1174
  }
1175
1175
  return {
1176
1176
  agent: d,
@@ -1184,7 +1184,7 @@ async function St(e, t) {
1184
1184
  },
1185
1185
  starterMessages: (($ = d.knowledge) == null ? void 0 : $.starter_message) || [],
1186
1186
  getSTTToken: () => o.getSTTToken(d.id),
1187
- changeMode: D,
1187
+ changeMode: C,
1188
1188
  enrichAnalytics: l.enrich,
1189
1189
  async connect() {
1190
1190
  var u;
@@ -1197,7 +1197,7 @@ async function St(e, t) {
1197
1197
  },
1198
1198
  async reconnect() {
1199
1199
  var u;
1200
- await C(), await R(!1), l.track("agent-chat", {
1200
+ await D(), await R(!1), l.track("agent-chat", {
1201
1201
  event: "reconnect",
1202
1202
  chatId: (u = n.chat) == null ? void 0 : u.id,
1203
1203
  agentId: d.id,
@@ -1206,7 +1206,7 @@ async function St(e, t) {
1206
1206
  },
1207
1207
  async disconnect() {
1208
1208
  var u;
1209
- await C(), l.track("agent-chat", {
1209
+ await D(), l.track("agent-chat", {
1210
1210
  event: "disconnect",
1211
1211
  chatId: (u = n.chat) == null ? void 0 : u.id,
1212
1212
  agentId: d.id,
@@ -1235,7 +1235,7 @@ async function St(e, t) {
1235
1235
  if (!n.chat) {
1236
1236
  const I = await pe(d, o, l, n.chatMode, t.persistentChat);
1237
1237
  if (!I.chat)
1238
- throw new Ce(n.chatMode, !!t.persistentChat);
1238
+ throw new De(n.chatMode, !!t.persistentChat);
1239
1239
  n.chat = I.chat, (_ = (S = t.callbacks).onNewChat) == null || _.call(S, n.chat.id);
1240
1240
  }
1241
1241
  return n.chat.id;
@@ -1261,7 +1261,7 @@ async function St(e, t) {
1261
1261
  return !((f = I == null ? void 0 : I.message) == null ? void 0 : f.includes("Stream Error")) && !N ? ((b = (h = t.callbacks).onError) == null || b.call(h, I), !1) : !0;
1262
1262
  },
1263
1263
  onRetry: async () => {
1264
- await C(), await R(!1);
1264
+ await D(), await R(!1);
1265
1265
  }
1266
1266
  });
1267
1267
  try {
@@ -1414,9 +1414,9 @@ function _t(e, t, a) {
1414
1414
  export {
1415
1415
  V as AgentActivityState,
1416
1416
  _e as AgentStatus,
1417
- Ce as ChatCreationFailed,
1417
+ De as ChatCreationFailed,
1418
1418
  P as ChatMode,
1419
- De as ChatModeDowngraded,
1419
+ Ce as ChatModeDowngraded,
1420
1420
  H as ChatProgress,
1421
1421
  T as ConnectionState,
1422
1422
  Q as ConnectivityState,
@@ -1 +1 @@
1
- (function(m,b){typeof exports=="object"&&typeof module<"u"?b(exports):typeof define=="function"&&define.amd?define(["exports"],b):(m=typeof globalThis<"u"?globalThis:m||self,b(m.index={}))})(this,function(m){"use strict";var Et=Object.defineProperty;var _t=(m,b,q)=>b in m?Et(m,b,{enumerable:!0,configurable:!0,writable:!0,value:q}):m[b]=q;var ee=(m,b,q)=>(_t(m,typeof b!="symbol"?b+"":b,q),q);class b extends Error{constructor({kind:a,description:r,error:s}){super(JSON.stringify({kind:a,description:r}));ee(this,"kind");ee(this,"description");ee(this,"error");this.kind=a,this.description=r,this.error=s}}class q extends b{constructor(t,a){super({kind:"ChatCreationFailed",description:`Failed to create ${a?"persistent":""} chat, mode: ${t}`})}}class ce extends b{constructor(t){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${t}`})}}class V extends b{constructor(a,r){super({kind:"ValidationError",description:a});ee(this,"key");this.key=r}}class de extends b{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||{}),P=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e.OuterControl="OuterControl",e))(P||{}),X=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(X||{}),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||{}),te=(e=>(e.Clip="clip",e.Talk="talk",e))(te||{});const pe=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var y=(e=>(e.Start="START",e.Stop="STOP",e))(y||{}),O=(e=>(e.Strong="STRONG",e.Weak="WEAK",e.Unknown="UNKNOWN",e))(O||{}),Y=(e=>(e.Idle="IDLE",e.Talking="TALKING",e))(Y||{}),z=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e.StreamFailed="stream/error",e.StreamReady="stream/ready",e.StreamCreated="stream/created",e.StreamInterrupt="stream/interrupt",e.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(z||{}),M=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(M||{}),H=(e=>(e.Legacy="legacy",e.Fluent="fluent",e))(H||{}),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 Ae=45*1e3,$e="X-Playground-Chat",G="https://api.d-id.com",Be="wss://notifications.d-id.com",Le="79f81a83a67430be2bc0fd61042b8faa",ke=e=>new Promise(t=>setTimeout(t,e)),Q=(e=16)=>{const t=new Uint8Array(e);return window.crypto.getRandomValues(t),Array.from(t,a=>a.toString(16).padStart(2,"0")).join("").slice(0,13)},ze=e=>[P.TextOnly,P.Playground,P.Maintenance].includes(e),re=e=>e&&[P.DirectPlayback,P.OuterControl].includes(e);function Fe(e,t){let a;return{promise:new Promise((s,i)=>{a=setTimeout(()=>i(new Error(t)),e)}),clear:()=>clearTimeout(a)}}async function ne(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:c}=Fe(a.timeout,a.timeoutErrorMessage),n=e().finally(c);return await Promise.race([n,i])}catch(i){if(r=i,!a.shouldRetryFn(i)||s>=a.limit)throw i;await ke(a.delayMs),a.onRetry(i)}throw r}function Ce(){let e=window.localStorage.getItem("did_external_key_id");if(!e){let t=Q();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let Ne=Q();function De(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}.${Ce()}_${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=G,a){const r=async(s,i)=>{const{skipErrorHandler:c,...n}=i||{},o=await Je(()=>fetch(t+(s!=null&&s.startsWith("/")?s:`/${s}`),{...n,headers:{...n.headers,Authorization:De(e),"Content-Type":"application/json"}}));if(!o.ok){let d=await o.text().catch(()=>`Failed to fetch with status ${o.status}`);const l=new Error(d);throw a&&!c&&a(l,{url:s,options:n,headers:o.headers}),l}return o.json()};return{get(s,i){return r(s,{...i,method:"GET"})},post(s,i,c){return r(s,{...c,body:JSON.stringify(i),method:"POST"})},delete(s,i,c){return r(s,{...c,body:JSON.stringify(i),method:"DELETE"})},patch(s,i,c){return r(s,{...c,body:JSON.stringify(i),method:"PATCH"})}}}function Re(e,t=G,a){const r=ae(e,`${t}/agents`,a);return{create(s,i){return r.post("/",s,i)},getAgents(s,i){return r.get(`/${s?`?tag=${s}`:""}`,i).then(c=>c??[])},getById(s,i){return r.get(`/${s}`,i)},delete(s,i){return r.delete(`/${s}`,void 0,i)},update(s,i,c){return r.patch(`/${s}`,i,c)},newChat(s,i,c){return r.post(`/${s}/chat`,i,c)},chat(s,i,c,n){return r.post(`/${s}/chat/${i}`,c,n)},createRating(s,i,c,n){return r.post(`/${s}/chat/${i}/ratings`,c,n)},updateRating(s,i,c,n,o){return r.patch(`/${s}/chat/${i}/ratings/${c}`,n,o)},deleteRating(s,i,c,n){return r.delete(`/${s}/chat/${i}/ratings/${c}`,n)},getSTTToken(s,i){return r.get(`/${s}/stt-token`,i)}}}const Se=e=>e.type==="clip"&&e.presenter_id.startsWith("v2_")?"clip_v2":e.type;function We(e){var s,i,c,n;const t=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",a=()=>{const o=navigator.platform;return o.toLowerCase().includes("win")?"Windows":o.toLowerCase().includes("mac")?"Mac OS X":o.toLowerCase().includes("linux")?"Linux":"Unknown"},r=e.presenter;return{$os:`${a()}`,isMobile:`${t()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:Se(r),agentVoice:{voiceId:(i=(s=e.presenter)==null?void 0:s.voice)==null?void 0:i.voice_id,provider:(n=(c=e.presenter)==null?void 0:c.voice)==null?void 0:n.type}}}const Ue=e=>e.reduce((t,a)=>t+a,0),Ee=e=>Ue(e)/e.length;function Ke(e,t,a){var o,d,l;const{event:r,...s}=e,{template:i}=(t==null?void 0:t.llm)||{},{language:c}=((o=t==null?void 0:t.presenter)==null?void 0:o.voice)||{};return{...s,llm:{...s.llm,template:i},script:{...s.script,provider:{...(d=s==null?void 0:s.script)==null?void 0:d.provider,language:c}},stitch:(t==null?void 0:t.presenter.type)==="talk"?(l=t==null?void 0:t.presenter)==null?void 0:l.stitch:void 0,...a}}let ie={};const He="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function xe(e){var i,c,n,o,d,l;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||Ce(),agentId:e.agent.id,agentType:Se(a),owner_id:e.agent.owner_id??"",promptVersion:(c=e.agent.llm)==null?void 0:c.prompt_version,behavior:{role:r==null?void 0:r.role,personality:r==null?void 0:r.personality,instructions:(n=e.agent.llm)==null?void 0:n.instructions},temperature:(o=e.agent.llm)==null?void 0:o.temperature,knowledgeSource:r==null?void 0:r.knowledge_source,starterQuestionsCount:(l=(d=e.agent.knowledge)==null?void 0:d.starter_message)==null?void 0:l.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:Q,enrich(p){this.additionalProperties={...this.additionalProperties,...p}},async track(p,A){if(!this.isEnabled)return Promise.resolve();const{audioPath:S,...D}=A||{},R={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:p,properties:{...this.additionalProperties,...D,...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(He,R).then(C=>C.json())}catch(C){return console.error(C)}},linkTrack(p,A,S,D){ie[p]||(ie[p]={events:{},resolvedDependencies:[]}),D.includes(S)||D.push(S);const R=ie[p];if(R.events[S]={props:A},R.resolvedDependencies.push(S),D.every(J=>R.resolvedDependencies.includes(J))){const J=D.reduce((B,u)=>R.events[u]?{...B,...R.events[u].props}:B,{});this.track(p,J),R.resolvedDependencies=R.resolvedDependencies.filter(B=>!D.includes(B)),D.forEach(B=>{delete R.events[B]})}}}}function _e(){let e=0;return{reset:()=>e=0,update:()=>e=Date.now(),get:(t=!1)=>t?Date.now()-e:e}}const N=_e(),se=_e();function Ie(e){return e===P.Playground?{headers:{[$e]:"true"}}:{}}async function Me(e,t,a,r,s=!1,i){try{return!i&&!re(r)&&(i=await t.newChat(e.id,{persist:s},Ie(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(c){try{const n=JSON.parse(c.message);if((n==null?void 0:n.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(n){console.error("Error parsing the error message:",n)}throw new Error("Cannot create new chat")}}function qe(e){return e&&e.length>0?e:[]}function Ve(e,t,a,r,s){if(!e||!t)throw new Error("Please connect to the agent first");if(!e.interruptEnabled)throw new Error("Interrupt is not enabled for this stream");if(a!==H.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!r&&!s)throw new Error("No active video to interrupt")}async function Te(e,t){const a={type:z.StreamInterrupt,videoId:t,timestamp:Date.now()};e.sendDataChannelMessage(JSON.stringify(a))}function Xe(e){return new Promise((t,a)=>{const{callbacks:r,host:s,auth:i}=e,{onMessage:c=null,onOpen:n=null,onClose:o=null,onError:d=null}=r||{},l=new WebSocket(`${s}?authorization=${De(i)}`);l.onmessage=c,l.onclose=o,l.onerror=p=>{console.error(p),d==null||d("Websocket failed to connect",p),a(p)},l.onopen=p=>{n==null||n(p),t(l)}})}async function Ye(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 Xe(e)}catch(s){if(r===t)throw s;await ke(r*500)}return a}async function Oe(e,t,a){const r=a!=null&&a.onMessage?[a.onMessage]:[],s=await Ye({auth:e,host:t,callbacks:{onError:i=>{var c;return(c=a.onError)==null?void 0:c.call(a,new de(i))},onMessage(i){const c=JSON.parse(i.data);r.forEach(n=>n(c.event,c))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:i=>r.push(i)}}function Qe(e){if(e.answer!==void 0)return e.answer;let t=0,a="";for(;t in e;)a+=e[t++];return a}function Ge(e,t,a,r,s){const i=r.messages[r.messages.length-1];if(!(e===X.Partial||e===X.Answer)||(i==null?void 0:i.role)!=="assistant")return;const{content:c,sequence:n}=t;e===X.Partial?a[n]=c:a.answer=c;const o=Qe(a);(i.content!==o||e===X.Answer)&&(i.content=o,s==null||s([...r.messages],e))}function Ze(e,t,a,r,s){let i={};return{clearQueue:()=>i={},onMessage:(c,n)=>{var o,d;if("content"in n)Ge(c,n,i,t,a.callbacks.onNewMessage),c===X.Answer&&e.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const l=z,p=[l.StreamVideoDone,l.StreamVideoError,l.StreamVideoRejected],A=[l.StreamFailed,l.StreamVideoError,l.StreamVideoRejected],S=Ke(n,r,{mode:t.chatMode});if(c=c,c===l.StreamVideoCreated)e.linkTrack("agent-video",S,l.StreamVideoCreated,["start"]);else if(p.includes(c)){const D=c.split("/")[1];A.includes(c)?e.track("agent-video",{...S,event:D}):e.linkTrack("agent-video",{...S,event:D},c,["done"])}A.includes(c)&&((d=(o=a.callbacks).onError)==null||d.call(o,new Error(`Stream failed with event ${c}`),{data:n})),n.event===l.StreamDone&&s()}}}}function et(e,t,a,r){const s=ae(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,fluent:i.fluent})},startConnection(i,c,n){return s.post(`/streams/${i}/sdp`,{session_id:n,answer:c})},addIceCandidate(i,c,n){return s.post(`/streams/${i}/ice`,{session_id:n,...c})},sendStreamRequest(i,c,n){return s.post(`/streams/${i}`,{session_id:c,...n})},close(i,c){return s.delete(`/streams/${i}`,{session_id:c})}}}function tt(e,t,a,r){const s=ae(e,`${t}/agents/${a}`,r);return{createStream(i,c){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,fluent:i.fluent},c)},startConnection(i,c,n,o){return s.post(`/streams/${i}/sdp`,{session_id:n,answer:c},o)},addIceCandidate(i,c,n,o){return s.post(`/streams/${i}/ice`,{session_id:n,...c},o)},sendStreamRequest(i,c,n,o){return s.post(`/streams/${i}`,{session_id:c,...n},o)},close(i,c,n){return s.delete(`/streams/${i}`,{session_id:c},n)}}}function rt(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,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:a}}function nt(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 at(e){let t="",a=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"&&(a=r.currentRoundTripTime),r&&r.type==="inbound-rtp"&&r.kind==="video")return{codec:t,rtt:a,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 it(e,t,a){const r=e.map((o,d)=>d===0?a?{timestamp:o.timestamp,duration:0,rtt:o.rtt,bytesReceived:o.bytesReceived-a.bytesReceived,bitrate:(o.bytesReceived-a.bytesReceived)*8/(t/1e3),packetsReceived:o.packetsReceived-a.packetsReceived,packetsLost:o.packetsLost-a.packetsLost,framesDropped:o.framesDropped-a.framesDropped,framesDecoded:o.framesDecoded-a.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-a.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-a.jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-a.jitterBufferDelay)/(o.jitterBufferEmittedCount-a.jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-a.freezeCount,freezeDuration:o.freezeDuration-a.freezeDuration}:{timestamp:o.timestamp,rtt:o.rtt,duration:0,bytesReceived:o.bytesReceived,bitrate:o.bytesReceived*8/(t/1e3),packetsReceived:o.packetsReceived,packetsLost:o.packetsLost,framesDropped:o.framesDropped,framesDecoded:o.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount,avgJitterDelayInInterval:o.jitterBufferDelay/o.jitterBufferEmittedCount,framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount,freezeDuration:o.freezeDuration}:{timestamp:o.timestamp,duration:t*d/1e3,rtt:o.rtt,bytesReceived:o.bytesReceived-e[d-1].bytesReceived,bitrate:(o.bytesReceived-e[d-1].bytesReceived)*8/(t/1e3),packetsReceived:o.packetsReceived-e[d-1].packetsReceived,packetsLost:o.packetsLost-e[d-1].packetsLost,framesDropped:o.framesDropped-e[d-1].framesDropped,framesDecoded:o.framesDecoded-e[d-1].framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-e[d-1].jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-e[d-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-e[d-1].jitterBufferDelay)/(o.jitterBufferEmittedCount-e[d-1].jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-e[d-1].freezeCount,freezeDuration:o.freezeDuration-e[d-1].freezeDuration}),s=nt(r),i=s.reduce((o,d)=>o+(d.causes.includes("low fps")?1:0),0),c=r.filter(o=>!!o.avgJitterDelayInInterval).map(o=>o.avgJitterDelayInInterval),n=r.filter(o=>!!o.rtt).map(o=>o.rtt);return{webRTCStats:{anomalies:s,minRtt:Math.min(...n),avgRtt:Ee(n),maxRtt:Math.max(...n),aggregateReport:rt(e[0],e[e.length-1],i),minJitterDelayInInterval:Math.min(...c),maxJitterDelayInInterval:Math.max(...c),avgJitterDelayInInterval:Ee(c)},codec:e[0].codec,resolution:`${e[0].frameWidth}x${e[0].frameHeight}`}}const oe=100,st=Math.max(Math.ceil(400/oe),1),ot=.25,ct=.28;function dt(){let e=0,t,a,r=0;return s=>{for(const i of s.values())if(i&&i.type==="inbound-rtp"&&i.kind==="video"){const c=i.jitterBufferDelay,n=i.jitterBufferEmittedCount;if(a&&n>a){const l=c-t,p=n-a;r=l/p}t=c,a=n;const o=i.framesDecoded,d=o-e>0;return e=o,{isReceiving:d,avgJitterDelayInInterval:r,freezeCount:i.freezeCount}}return{isReceiving:!1,avgJitterDelayInInterval:r}}}function ut(e,t,a,r,s,i=!1){let c=[],n,o=0,d=!1,l=O.Unknown,p=O.Unknown,A=0,S=0;const D=dt();return setInterval(async()=>{const R=await e.getStats(),{isReceiving:C,avgJitterDelayInInterval:J,freezeCount:B}=D(R),u=at(R);if(C)o=0,A=B-S,p=J<ot?O.Strong:J>ct&&A>1?O.Weak:l,p!==l&&(s==null||s(p),l=p,S+=A,A=0),d||(r==null||r(y.Start),n=c[c.length-1],c=[],d=!0),c.push(u);else if(d&&(o++,o>=st)){const g=it(c,oe,n);r==null||r(y.Stop,g),t()||a(),S=B,d=!1}},oe)}let je=!1;const F=(e,t)=>je&&console.log(e,t),lt=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function be(e){switch(e){case"connected":return M.Connected;case"checking":return M.Connecting;case"failed":return M.Fail;case"new":return M.New;case"closed":return M.Closed;case"disconnected":return M.Disconnected;case"completed":return M.Completed;default:return M.New}}function ft(e){const[t,a=""]=e.split(/:(.+)/);try{const r=JSON.parse(a);return F("parsed data channel message",{subject:t,data:r}),{subject:t,data:r}}catch(r){return F("Failed to parse data channel message, returning data as string",{subject:t,rawData:a,error:r}),{subject:t,data:a}}}function mt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,report:r}){e===y.Start&&t===y.Start?a==null||a(y.Start):e===y.Stop&&t===y.Stop&&(a==null||a(y.Stop,r))}function gt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:r,report:s}){e===y.Start?a==null||a(y.Start):e===y.Stop&&(a==null||a(y.Stop,s)),t===y.Start?r==null||r(Y.Talking):t===y.Stop&&(r==null||r(Y.Idle))}function Pe({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:r,streamType:s,report:i}){s===H.Legacy?mt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,report:i}):s===H.Fluent&&gt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:r,report:i})}async function ht(e,t,{debug:a=!1,callbacks:r,auth:s,baseURL:i=G,analytics:c}){var x;je=a;let n=!1,o=!1,d=y.Stop,l=y.Stop;const{startConnection:p,sendStreamRequest:A,close:S,createStream:D,addIceCandidate:R}=t.videoType===te.Clip?et(s,i,e,r.onError):tt(s,i,e,r.onError),{id:C,offer:J,ice_servers:B,session_id:u,fluent:g,interrupt_enabled:k}=await D(t);(x=r.onStreamCreated)==null||x.call(r,{stream_id:C,session_id:u,agent_id:e});const h=new lt({iceServers:B}),E=h.createDataChannel("JanusDataChannel");if(!u)throw new Error("Could not create session_id");const v=g?H.Fluent:H.Legacy;c.enrich({"stream-type":v});const j=t.stream_warmup&&!g,L=()=>n,W=()=>{var f;n=!0,o&&((f=r.onConnectionStateChange)==null||f.call(r,M.Connected))},_=ut(h,L,W,(f,w)=>Pe({statsSignal:l=f,dataChannelSignal:v===H.Legacy?d:void 0,onVideoStateChange:r.onVideoStateChange,onAgentActivityStateChange:r.onAgentActivityStateChange,report:w,streamType:v}),f=>{var w;return(w=r.onConnectivityStateChange)==null?void 0:w.call(r,f)},j);h.onicecandidate=f=>{var w;F("peerConnection.onicecandidate",f);try{f.candidate&&f.candidate.sdpMid&&f.candidate.sdpMLineIndex!==null?R(C,{candidate:f.candidate.candidate,sdpMid:f.candidate.sdpMid,sdpMLineIndex:f.candidate.sdpMLineIndex},u):R(C,{candidate:null},u)}catch($){(w=r.onError)==null||w.call(r,$,{streamId:C})}},E.onopen=()=>{o=!0,(!j||n)&&W()};function I(f){d=f===z.StreamStarted?y.Start:y.Stop,Pe({statsSignal:v===H.Legacy?l:void 0,dataChannelSignal:d,onVideoStateChange:r.onVideoStateChange,onAgentActivityStateChange:r.onAgentActivityStateChange,streamType:v})}function T(f,w){const $=typeof w=="string"?w:w==null?void 0:w.metadata;$&&c.enrich({streamMetadata:$}),c.track("agent-chat",{event:"ready"})}const U={[z.StreamStarted]:I,[z.StreamDone]:I,[z.StreamReady]:T};E.onmessage=f=>{var Z;const{subject:w,data:$}=ft(f.data);(Z=U[w])==null||Z.call(U,w,$)},h.oniceconnectionstatechange=()=>{var w;F("peerConnection.oniceconnectionstatechange => "+h.iceConnectionState);const f=be(h.iceConnectionState);f!==M.Connected&&((w=r.onConnectionStateChange)==null||w.call(r,f))},h.ontrack=f=>{var w;F("peerConnection.ontrack",f),(w=r.onSrcObjectReady)==null||w.call(r,f.streams[0])},await h.setRemoteDescription(J),F("set remote description OK");const K=await h.createAnswer();return F("create answer OK"),await h.setLocalDescription(K),F("set local description OK"),await p(C,K,u),F("start connection OK"),{speak(f){return A(C,u,f)},async disconnect(){var f;if(C){const w=be(h.iceConnectionState);if(h){if(w===M.New){clearInterval(_);return}h.close(),h.oniceconnectionstatechange=null,h.onnegotiationneeded=null,h.onicecandidate=null,h.ontrack=null}try{w===M.Connected&&await S(C,u).catch($=>{})}catch($){F("Error on close stream connection",$)}(f=r.onAgentActivityStateChange)==null||f.call(r,Y.Idle),clearInterval(_)}},sendDataChannelMessage(f){var w,$;if(!n||E.readyState!=="open"){F("Data channel is not ready for sending messages"),(w=r.onError)==null||w.call(r,new Error("Data channel is not ready for sending messages"),{streamId:C});return}try{E.send(f)}catch(Z){F("Error sending data channel message",Z),($=r.onError)==null||$.call(r,Z,{streamId:C})}},sessionId:u,streamId:C,streamType:v,interruptEnabled:k}}function wt(e,t){const{streamOptions:a}=t??{};return{videoType:pe(e.presenter.type),output_resolution:a==null?void 0:a.outputResolution,session_timeout:a==null?void 0:a.sessionTimeout,stream_warmup:a==null?void 0:a.streamWarmup,compatibility_mode:a==null?void 0:a.compatibilityMode,fluent:a==null?void 0:a.fluent}}function pt(e,t,a,r,s){s===H.Fluent?yt(e,t,a,r,s):kt(e,t,a,r,s)}function yt(e,t,a,r,s){e===y.Start?r.track("stream-session",{event:"start","stream-type":s}):e===y.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":s,...a})}function vt(e,t,a,r){N.get()<=0||(e===y.Start?a.linkTrack("agent-video",{event:"start",latency:N.get(!0),"stream-type":r},"start",[z.StreamVideoCreated]):e===y.Stop&&a.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",[z.StreamVideoDone]))}function kt(e,t,a,r,s){N.get()<=0||(e===y.Start?r.linkTrack("agent-video",{event:"start",latency:N.get(!0),"stream-type":s},"start",[z.StreamVideoCreated]):e===y.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":s,...a},"done",[z.StreamVideoDone]))}function Ct(e,t,a){return N.reset(),new Promise(async(r,s)=>{try{const i=await ht(e.id,wt(e,t),{...t,analytics:a,callbacks:{...t.callbacks,onConnectionStateChange:c=>{var n,o;(o=(n=t.callbacks).onConnectionStateChange)==null||o.call(n,c),c===M.Connected&&r(i)},onVideoStateChange:(c,n)=>{var o,d;(d=(o=t.callbacks).onVideoStateChange)==null||d.call(o,c),pt(c,e,n,a,i.streamType)},onAgentActivityStateChange:c=>{var n,o;(o=(n=t.callbacks).onAgentActivityStateChange)==null||o.call(n,c),c===Y.Talking?se.update():se.reset(),vt(c===Y.Talking?y.Start:y.Stop,e,a,i.streamType)}}})}catch(i){s(i)}})}async function Dt(e,t,a,r,s){var o,d,l,p;const{chat:i,chatMode:c}=await Me(e,a,r,t.mode,t.persistentChat,s);if(c&&c!==t.mode&&(t.mode=c,(d=(o=t.callbacks).onModeChange)==null||d.call(o,c),c===P.TextOnly))return(p=(l=t.callbacks).onError)==null||p.call(l,new ce(c)),{chat:i};const n=await Ct(e,t,r);return{chat:i,streamingManager:n}}async function Rt(e,t){var C,J,B;let a=!0,r=!1;const s=t.mixpanelKey||Le,i=t.wsURL||Be,c=t.baseURL||G,n={messages:[],chatMode:t.mode||P.Functional},o=Re(t.auth,c,t.callbacks.onError),d=await o.getById(e),l=xe({token:s,agent:d,isEnabled:t.enableAnalitics,distinctId:t.distinctId}),{onMessage:p,clearQueue:A}=Ze(l,n,t,d,()=>{var u;return(u=n.socketManager)==null?void 0:u.disconnect()});n.messages=qe(t.initialMessages),(J=(C=t.callbacks).onNewMessage)==null||J.call(C,[...n.messages],"answer"),l.track("agent-sdk",{event:"loaded",...We(d)});async function S(u){var j,L,W,_,I,T,U;(L=(j=t.callbacks).onConnectionStateChange)==null||L.call(j,M.Connecting),N.reset(),r=!1,u&&!a&&(delete n.chat,(_=(W=t.callbacks).onNewMessage)==null||_.call(W,[...n.messages],"answer"));const g=re(t.mode)?Promise.resolve(void 0):Oe(t.auth,i,{onMessage:p,onError:t.callbacks.onError}),k=ne(()=>Dt(d,t,o,l,n.chat),{limit:3,timeout:Ae,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:K=>(K==null?void 0:K.message)!=="Could not connect"&&K.status!==429,delayMs:1e3}).catch(K=>{var x,f;throw R(P.Maintenance),(f=(x=t.callbacks).onConnectionStateChange)==null||f.call(x,M.Fail),K}),[h,{streamingManager:E,chat:v}]=await Promise.all([g,k]);v&&v.id!==((I=n.chat)==null?void 0:I.id)&&((U=(T=t.callbacks).onNewChat)==null||U.call(T,v.id)),n.streamingManager=E,n.socketManager=h,n.chat=v,a=!1,R((v==null?void 0:v.chat_mode)??t.mode??P.Functional)}async function D(){var u,g,k,h;(u=n.socketManager)==null||u.disconnect(),await((g=n.streamingManager)==null?void 0:g.disconnect()),r=!1,delete n.streamingManager,delete n.socketManager,(h=(k=t.callbacks).onConnectionStateChange)==null||h.call(k,M.Disconnected)}async function R(u){var g,k;u!==n.chatMode&&(l.track("agent-mode-change",{mode:u}),n.chatMode=u,n.chatMode!==P.Functional&&await D(),(k=(g=t.callbacks).onModeChange)==null||k.call(g,u))}return{agent:d,getStreamType:()=>{var u;return(u=n.streamingManager)==null?void 0:u.streamType},getIsInterruptEnabled:()=>{var u;return((u=n.streamingManager)==null?void 0:u.interruptEnabled)??!1},starterMessages:((B=d.knowledge)==null?void 0:B.starter_message)||[],getSTTToken:()=>o.getSTTToken(d.id),changeMode:R,enrichAnalytics:l.enrich,async connect(){var u;await S(!0),l.track("agent-chat",{event:"connect",chatId:(u=n.chat)==null?void 0:u.id,agentId:d.id,mode:n.chatMode})},async reconnect(){var u;await D(),await S(!1),l.track("agent-chat",{event:"reconnect",chatId:(u=n.chat)==null?void 0:u.id,agentId:d.id,mode:n.chatMode})},async disconnect(){var u;await D(),l.track("agent-chat",{event:"disconnect",chatId:(u=n.chat)==null?void 0:u.id,agentId:d.id,mode:n.chatMode})},async chat(u){var E,v,j,L,W;const g=()=>{if(re(t.mode))throw new V(`${t.mode} is enabled, chat is disabled`);if(u.length>=800)throw new V("Message cannot be more than 800 characters");if(u.length===0)throw new V("Message cannot be empty");if(n.chatMode===P.Maintenance)throw new V("Chat is in maintenance mode");if(![P.TextOnly,P.Playground].includes(n.chatMode)){if(!n.streamingManager)throw new V("Streaming manager is not initialized");if(!n.chat)throw new V("Chat is not initialized")}},k=async()=>{var _,I;if(!n.chat){const T=await Me(d,o,l,n.chatMode,t.persistentChat);if(!T.chat)throw new q(n.chatMode,!!t.persistentChat);n.chat=T.chat,(I=(_=t.callbacks).onNewChat)==null||I.call(_,n.chat.id)}return n.chat.id},h=async(_,I)=>ne(()=>{var T,U;return o.chat(d.id,I,{chatMode:n.chatMode,streamId:(T=n.streamingManager)==null?void 0:T.streamId,sessionId:(U=n.streamingManager)==null?void 0:U.sessionId,messages:_.map(({matches:K,...x})=>x)},{...Ie(n.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:T=>{var x,f,w,$;const U=(x=T==null?void 0:T.message)==null?void 0:x.includes("missing or invalid session_id");return!((f=T==null?void 0:T.message)==null?void 0:f.includes("Stream Error"))&&!U?(($=(w=t.callbacks).onError)==null||$.call(w,T),!1):!0},onRetry:async()=>{await D(),await S(!1)}});try{A(),g(),n.messages.push({id:Q(),role:"user",content:u,created_at:new Date(N.update()).toISOString()}),(v=(E=t.callbacks).onNewMessage)==null||v.call(E,[...n.messages],"user");const _=await k(),I=await h([...n.messages],_);return n.messages.push({id:Q(),role:"assistant",content:I.result||"",created_at:new Date().toISOString(),context:I.context,matches:I.matches,videoId:I.videoId}),r&&I.videoId&&n.streamingManager&&(r=!1,n.messages[n.messages.length-1].interrupted=!0,await Te(n.streamingManager,I.videoId)),l.track("agent-message-send",{event:"success",mode:n.chatMode,messages:n.messages.length+1}),I.result&&((L=(j=t.callbacks).onNewMessage)==null||L.call(j,[...n.messages],"answer"),l.track("agent-message-received",{latency:N.get(!0),mode:n.chatMode,messages:n.messages.length})),I}catch(_){throw r=!1,((W=n.messages[n.messages.length-1])==null?void 0:W.role)==="assistant"&&n.messages.pop(),l.track("agent-message-send",{event:"error",mode:n.chatMode,messages:n.messages.length}),_}},rate(u,g,k){var v,j,L,W;const h=n.messages.find(_=>_.id===u);if(n.chat){if(!h)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const E=((v=h.matches)==null?void 0:v.map(_=>[_.document_id,_.id]))??[];return l.track("agent-rate",{event:k?"update":"create",thumb:g===1?"up":"down",knowledge_id:((j=d.knowledge)==null?void 0:j.id)??"",mode:n.chatMode,matches:E,score:g}),k?o.updateRating(d.id,n.chat.id,k,{knowledge_id:((L=d.knowledge)==null?void 0:L.id)??"",message_id:u,matches:E,score:g}):o.createRating(d.id,n.chat.id,{knowledge_id:((W=d.knowledge)==null?void 0:W.id)??"",message_id:u,matches:E,score:g})},deleteRate(u){var g;if(!n.chat)throw new Error("Chat is not initialized");return l.track("agent-rate-delete",{type:"text",chat_id:(g=n.chat)==null?void 0:g.id,id:u,mode:n.chatMode}),o.deleteRating(d.id,n.chat.id,u)},async speak(u){var E,v,j;function g(){if(typeof u=="string"){if(!d.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:d.presenter.voice,input:u,ssml:!1}}if(u.type==="text"&&!u.provider){if(!d.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:d.presenter.voice,input:u.input,ssml:u.ssml}}return u}const k=g();if(l.track("agent-speak",k),N.update(),n.messages&&k.type==="text"&&(n.messages.push({id:Q(),role:"assistant",content:k.input,created_at:new Date(N.get(!0)).toISOString()}),(v=(E=t.callbacks).onNewMessage)==null||v.call(E,[...n.messages],"answer")),ze(n.chatMode))return{duration:0,status:"success"};if(!n.streamingManager)throw new Error("Please connect to the agent first");return n.streamingManager.speak({script:k,metadata:{chat_id:(j=n.chat)==null?void 0:j.id,agent_id:d.id}})},async interrupt({type:u}){var h,E,v,j,L;const g=n.messages[n.messages.length-1],k=(g==null?void 0:g.role)==="user";if(Ve(n.streamingManager,n.chat,(h=n.streamingManager)==null?void 0:h.streamType,k,!!(g!=null&&g.videoId)),l.track("agent-video-interrupt",{type:u||"click",stream_id:(E=n.streamingManager)==null?void 0:E.streamId,agent_id:d.id,owner_id:d.owner_id,video_duration_to_interrupt:se.get(!0),message_duration_to_interrupt:N.get(!0),chat_id:(v=n.chat)==null?void 0:v.id,mode:n.chatMode,queued_interrupt:k}),k){r=!0;return}g.interrupted=!0,(L=(j=t.callbacks).onNewMessage)==null||L.call(j,[...n.messages],"answer"),Te(n.streamingManager,g.videoId)}}}function St(e,t,a){const{getById:r}=Re(t,a||G);return r(e)}m.AgentActivityState=Y,m.AgentStatus=fe,m.ChatCreationFailed=q,m.ChatMode=P,m.ChatModeDowngraded=ce,m.ChatProgress=X,m.ConnectionState=M,m.ConnectivityState=O,m.DocumentType=we,m.KnowledgeType=he,m.PlanGroup=le,m.Providers=ye,m.RateState=me,m.StreamEvents=z,m.StreamType=H,m.StreamingState=y,m.Subject=ge,m.UserPlan=ue,m.ValidationError=V,m.VideoType=te,m.VoiceAccess=ve,m.WsError=de,m.createAgentManager=Rt,m.getAgent=St,m.mapVideoType=pe,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})});
1
+ (function(m,b){typeof exports=="object"&&typeof module<"u"?b(exports):typeof define=="function"&&define.amd?define(["exports"],b):(m=typeof globalThis<"u"?globalThis:m||self,b(m.index={}))})(this,function(m){"use strict";var Et=Object.defineProperty;var _t=(m,b,q)=>b in m?Et(m,b,{enumerable:!0,configurable:!0,writable:!0,value:q}):m[b]=q;var ee=(m,b,q)=>(_t(m,typeof b!="symbol"?b+"":b,q),q);class b extends Error{constructor({kind:a,description:r,error:s}){super(JSON.stringify({kind:a,description:r}));ee(this,"kind");ee(this,"description");ee(this,"error");this.kind=a,this.description=r,this.error=s}}class q extends b{constructor(t,a){super({kind:"ChatCreationFailed",description:`Failed to create ${a?"persistent":""} chat, mode: ${t}`})}}class ce extends b{constructor(t){super({kind:"ChatModeDowngraded",description:`Chat mode downgraded to ${t}`})}}class V extends b{constructor(a,r){super({kind:"ValidationError",description:a});ee(this,"key");this.key=r}}class de extends b{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||{}),P=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e.Off="Off",e))(P||{}),X=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(X||{}),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||{}),te=(e=>(e.Clip="clip",e.Talk="talk",e))(te||{});const pe=e=>{switch(e){case"clip":return"clip";case"talk":return"talk";default:throw new Error(`Unknown video type: ${e}`)}};var y=(e=>(e.Start="START",e.Stop="STOP",e))(y||{}),O=(e=>(e.Strong="STRONG",e.Weak="WEAK",e.Unknown="UNKNOWN",e))(O||{}),Y=(e=>(e.Idle="IDLE",e.Talking="TALKING",e))(Y||{}),z=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e.StreamFailed="stream/error",e.StreamReady="stream/ready",e.StreamCreated="stream/created",e.StreamInterrupt="stream/interrupt",e.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(z||{}),M=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Closed="closed",e.Completed="completed",e.Disconnected="disconnected",e))(M||{}),H=(e=>(e.Legacy="legacy",e.Fluent="fluent",e))(H||{}),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 Ae=45*1e3,$e="X-Playground-Chat",G="https://api.d-id.com",Be="wss://notifications.d-id.com",Le="79f81a83a67430be2bc0fd61042b8faa",ke=e=>new Promise(t=>setTimeout(t,e)),Q=(e=16)=>{const t=new Uint8Array(e);return window.crypto.getRandomValues(t),Array.from(t,a=>a.toString(16).padStart(2,"0")).join("").slice(0,13)},ze=e=>[P.TextOnly,P.Playground,P.Maintenance].includes(e),re=e=>e&&[P.DirectPlayback,P.Off].includes(e);function Fe(e,t){let a;return{promise:new Promise((s,i)=>{a=setTimeout(()=>i(new Error(t)),e)}),clear:()=>clearTimeout(a)}}async function ne(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:c}=Fe(a.timeout,a.timeoutErrorMessage),n=e().finally(c);return await Promise.race([n,i])}catch(i){if(r=i,!a.shouldRetryFn(i)||s>=a.limit)throw i;await ke(a.delayMs),a.onRetry(i)}throw r}function Ce(){let e=window.localStorage.getItem("did_external_key_id");if(!e){let t=Q();window.localStorage.setItem("did_external_key_id",t),e=t}return e}let Ne=Q();function De(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}.${Ce()}_${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=G,a){const r=async(s,i)=>{const{skipErrorHandler:c,...n}=i||{},o=await Je(()=>fetch(t+(s!=null&&s.startsWith("/")?s:`/${s}`),{...n,headers:{...n.headers,Authorization:De(e),"Content-Type":"application/json"}}));if(!o.ok){let d=await o.text().catch(()=>`Failed to fetch with status ${o.status}`);const l=new Error(d);throw a&&!c&&a(l,{url:s,options:n,headers:o.headers}),l}return o.json()};return{get(s,i){return r(s,{...i,method:"GET"})},post(s,i,c){return r(s,{...c,body:JSON.stringify(i),method:"POST"})},delete(s,i,c){return r(s,{...c,body:JSON.stringify(i),method:"DELETE"})},patch(s,i,c){return r(s,{...c,body:JSON.stringify(i),method:"PATCH"})}}}function Re(e,t=G,a){const r=ae(e,`${t}/agents`,a);return{create(s,i){return r.post("/",s,i)},getAgents(s,i){return r.get(`/${s?`?tag=${s}`:""}`,i).then(c=>c??[])},getById(s,i){return r.get(`/${s}`,i)},delete(s,i){return r.delete(`/${s}`,void 0,i)},update(s,i,c){return r.patch(`/${s}`,i,c)},newChat(s,i,c){return r.post(`/${s}/chat`,i,c)},chat(s,i,c,n){return r.post(`/${s}/chat/${i}`,c,n)},createRating(s,i,c,n){return r.post(`/${s}/chat/${i}/ratings`,c,n)},updateRating(s,i,c,n,o){return r.patch(`/${s}/chat/${i}/ratings/${c}`,n,o)},deleteRating(s,i,c,n){return r.delete(`/${s}/chat/${i}/ratings/${c}`,n)},getSTTToken(s,i){return r.get(`/${s}/stt-token`,i)}}}const Se=e=>e.type==="clip"&&e.presenter_id.startsWith("v2_")?"clip_v2":e.type;function We(e){var s,i,c,n;const t=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",a=()=>{const o=navigator.platform;return o.toLowerCase().includes("win")?"Windows":o.toLowerCase().includes("mac")?"Mac OS X":o.toLowerCase().includes("linux")?"Linux":"Unknown"},r=e.presenter;return{$os:`${a()}`,isMobile:`${t()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:Se(r),agentVoice:{voiceId:(i=(s=e.presenter)==null?void 0:s.voice)==null?void 0:i.voice_id,provider:(n=(c=e.presenter)==null?void 0:c.voice)==null?void 0:n.type}}}const Ue=e=>e.reduce((t,a)=>t+a,0),Ee=e=>Ue(e)/e.length;function Ke(e,t,a){var o,d,l;const{event:r,...s}=e,{template:i}=(t==null?void 0:t.llm)||{},{language:c}=((o=t==null?void 0:t.presenter)==null?void 0:o.voice)||{};return{...s,llm:{...s.llm,template:i},script:{...s.script,provider:{...(d=s==null?void 0:s.script)==null?void 0:d.provider,language:c}},stitch:(t==null?void 0:t.presenter.type)==="talk"?(l=t==null?void 0:t.presenter)==null?void 0:l.stitch:void 0,...a}}let ie={};const He="https://api-js.mixpanel.com/track/?verbose=1&ip=1";function xe(e){var i,c,n,o,d,l;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||Ce(),agentId:e.agent.id,agentType:Se(a),owner_id:e.agent.owner_id??"",promptVersion:(c=e.agent.llm)==null?void 0:c.prompt_version,behavior:{role:r==null?void 0:r.role,personality:r==null?void 0:r.personality,instructions:(n=e.agent.llm)==null?void 0:n.instructions},temperature:(o=e.agent.llm)==null?void 0:o.temperature,knowledgeSource:r==null?void 0:r.knowledge_source,starterQuestionsCount:(l=(d=e.agent.knowledge)==null?void 0:d.starter_message)==null?void 0:l.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:Q,enrich(p){this.additionalProperties={...this.additionalProperties,...p}},async track(p,A){if(!this.isEnabled)return Promise.resolve();const{audioPath:S,...D}=A||{},R={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:p,properties:{...this.additionalProperties,...D,...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(He,R).then(C=>C.json())}catch(C){return console.error(C)}},linkTrack(p,A,S,D){ie[p]||(ie[p]={events:{},resolvedDependencies:[]}),D.includes(S)||D.push(S);const R=ie[p];if(R.events[S]={props:A},R.resolvedDependencies.push(S),D.every(J=>R.resolvedDependencies.includes(J))){const J=D.reduce((B,u)=>R.events[u]?{...B,...R.events[u].props}:B,{});this.track(p,J),R.resolvedDependencies=R.resolvedDependencies.filter(B=>!D.includes(B)),D.forEach(B=>{delete R.events[B]})}}}}function _e(){let e=0;return{reset:()=>e=0,update:()=>e=Date.now(),get:(t=!1)=>t?Date.now()-e:e}}const N=_e(),se=_e();function Ie(e){return e===P.Playground?{headers:{[$e]:"true"}}:{}}async function Me(e,t,a,r,s=!1,i){try{return!i&&!re(r)&&(i=await t.newChat(e.id,{persist:s},Ie(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(c){try{const n=JSON.parse(c.message);if((n==null?void 0:n.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(n){console.error("Error parsing the error message:",n)}throw new Error("Cannot create new chat")}}function qe(e){return e&&e.length>0?e:[]}function Ve(e,t,a,r,s){if(!e||!t)throw new Error("Please connect to the agent first");if(!e.interruptEnabled)throw new Error("Interrupt is not enabled for this stream");if(a!==H.Fluent)throw new Error("Interrupt only available for Fluent streams");if(!r&&!s)throw new Error("No active video to interrupt")}async function Te(e,t){const a={type:z.StreamInterrupt,videoId:t,timestamp:Date.now()};e.sendDataChannelMessage(JSON.stringify(a))}function Xe(e){return new Promise((t,a)=>{const{callbacks:r,host:s,auth:i}=e,{onMessage:c=null,onOpen:n=null,onClose:o=null,onError:d=null}=r||{},l=new WebSocket(`${s}?authorization=${De(i)}`);l.onmessage=c,l.onclose=o,l.onerror=p=>{console.error(p),d==null||d("Websocket failed to connect",p),a(p)},l.onopen=p=>{n==null||n(p),t(l)}})}async function Ye(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 Xe(e)}catch(s){if(r===t)throw s;await ke(r*500)}return a}async function Oe(e,t,a){const r=a!=null&&a.onMessage?[a.onMessage]:[],s=await Ye({auth:e,host:t,callbacks:{onError:i=>{var c;return(c=a.onError)==null?void 0:c.call(a,new de(i))},onMessage(i){const c=JSON.parse(i.data);r.forEach(n=>n(c.event,c))}}});return{socket:s,disconnect:()=>s.close(),subscribeToEvents:i=>r.push(i)}}function Qe(e){if(e.answer!==void 0)return e.answer;let t=0,a="";for(;t in e;)a+=e[t++];return a}function Ge(e,t,a,r,s){const i=r.messages[r.messages.length-1];if(!(e===X.Partial||e===X.Answer)||(i==null?void 0:i.role)!=="assistant")return;const{content:c,sequence:n}=t;e===X.Partial?a[n]=c:a.answer=c;const o=Qe(a);(i.content!==o||e===X.Answer)&&(i.content=o,s==null||s([...r.messages],e))}function Ze(e,t,a,r,s){let i={};return{clearQueue:()=>i={},onMessage:(c,n)=>{var o,d;if("content"in n)Ge(c,n,i,t,a.callbacks.onNewMessage),c===X.Answer&&e.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const l=z,p=[l.StreamVideoDone,l.StreamVideoError,l.StreamVideoRejected],A=[l.StreamFailed,l.StreamVideoError,l.StreamVideoRejected],S=Ke(n,r,{mode:t.chatMode});if(c=c,c===l.StreamVideoCreated)e.linkTrack("agent-video",S,l.StreamVideoCreated,["start"]);else if(p.includes(c)){const D=c.split("/")[1];A.includes(c)?e.track("agent-video",{...S,event:D}):e.linkTrack("agent-video",{...S,event:D},c,["done"])}A.includes(c)&&((d=(o=a.callbacks).onError)==null||d.call(o,new Error(`Stream failed with event ${c}`),{data:n})),n.event===l.StreamDone&&s()}}}}function et(e,t,a,r){const s=ae(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,fluent:i.fluent})},startConnection(i,c,n){return s.post(`/streams/${i}/sdp`,{session_id:n,answer:c})},addIceCandidate(i,c,n){return s.post(`/streams/${i}/ice`,{session_id:n,...c})},sendStreamRequest(i,c,n){return s.post(`/streams/${i}`,{session_id:c,...n})},close(i,c){return s.delete(`/streams/${i}`,{session_id:c})}}}function tt(e,t,a,r){const s=ae(e,`${t}/agents/${a}`,r);return{createStream(i,c){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,fluent:i.fluent},c)},startConnection(i,c,n,o){return s.post(`/streams/${i}/sdp`,{session_id:n,answer:c},o)},addIceCandidate(i,c,n,o){return s.post(`/streams/${i}/ice`,{session_id:n,...c},o)},sendStreamRequest(i,c,n,o){return s.post(`/streams/${i}`,{session_id:c,...n},o)},close(i,c,n){return s.delete(`/streams/${i}`,{session_id:c},n)}}}function rt(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,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:a}}function nt(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 at(e){let t="",a=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"&&(a=r.currentRoundTripTime),r&&r.type==="inbound-rtp"&&r.kind==="video")return{codec:t,rtt:a,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 it(e,t,a){const r=e.map((o,d)=>d===0?a?{timestamp:o.timestamp,duration:0,rtt:o.rtt,bytesReceived:o.bytesReceived-a.bytesReceived,bitrate:(o.bytesReceived-a.bytesReceived)*8/(t/1e3),packetsReceived:o.packetsReceived-a.packetsReceived,packetsLost:o.packetsLost-a.packetsLost,framesDropped:o.framesDropped-a.framesDropped,framesDecoded:o.framesDecoded-a.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-a.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-a.jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-a.jitterBufferDelay)/(o.jitterBufferEmittedCount-a.jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-a.freezeCount,freezeDuration:o.freezeDuration-a.freezeDuration}:{timestamp:o.timestamp,rtt:o.rtt,duration:0,bytesReceived:o.bytesReceived,bitrate:o.bytesReceived*8/(t/1e3),packetsReceived:o.packetsReceived,packetsLost:o.packetsLost,framesDropped:o.framesDropped,framesDecoded:o.framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount,avgJitterDelayInInterval:o.jitterBufferDelay/o.jitterBufferEmittedCount,framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount,freezeDuration:o.freezeDuration}:{timestamp:o.timestamp,duration:t*d/1e3,rtt:o.rtt,bytesReceived:o.bytesReceived-e[d-1].bytesReceived,bitrate:(o.bytesReceived-e[d-1].bytesReceived)*8/(t/1e3),packetsReceived:o.packetsReceived-e[d-1].packetsReceived,packetsLost:o.packetsLost-e[d-1].packetsLost,framesDropped:o.framesDropped-e[d-1].framesDropped,framesDecoded:o.framesDecoded-e[d-1].framesDecoded,jitter:o.jitter,jitterBufferDelay:o.jitterBufferDelay-e[d-1].jitterBufferDelay,jitterBufferEmittedCount:o.jitterBufferEmittedCount-e[d-1].jitterBufferEmittedCount,avgJitterDelayInInterval:(o.jitterBufferDelay-e[d-1].jitterBufferDelay)/(o.jitterBufferEmittedCount-e[d-1].jitterBufferEmittedCount),framesPerSecond:o.framesPerSecond,freezeCount:o.freezeCount-e[d-1].freezeCount,freezeDuration:o.freezeDuration-e[d-1].freezeDuration}),s=nt(r),i=s.reduce((o,d)=>o+(d.causes.includes("low fps")?1:0),0),c=r.filter(o=>!!o.avgJitterDelayInInterval).map(o=>o.avgJitterDelayInInterval),n=r.filter(o=>!!o.rtt).map(o=>o.rtt);return{webRTCStats:{anomalies:s,minRtt:Math.min(...n),avgRtt:Ee(n),maxRtt:Math.max(...n),aggregateReport:rt(e[0],e[e.length-1],i),minJitterDelayInInterval:Math.min(...c),maxJitterDelayInInterval:Math.max(...c),avgJitterDelayInInterval:Ee(c)},codec:e[0].codec,resolution:`${e[0].frameWidth}x${e[0].frameHeight}`}}const oe=100,st=Math.max(Math.ceil(400/oe),1),ot=.25,ct=.28;function dt(){let e=0,t,a,r=0;return s=>{for(const i of s.values())if(i&&i.type==="inbound-rtp"&&i.kind==="video"){const c=i.jitterBufferDelay,n=i.jitterBufferEmittedCount;if(a&&n>a){const l=c-t,p=n-a;r=l/p}t=c,a=n;const o=i.framesDecoded,d=o-e>0;return e=o,{isReceiving:d,avgJitterDelayInInterval:r,freezeCount:i.freezeCount}}return{isReceiving:!1,avgJitterDelayInInterval:r}}}function ut(e,t,a,r,s,i=!1){let c=[],n,o=0,d=!1,l=O.Unknown,p=O.Unknown,A=0,S=0;const D=dt();return setInterval(async()=>{const R=await e.getStats(),{isReceiving:C,avgJitterDelayInInterval:J,freezeCount:B}=D(R),u=at(R);if(C)o=0,A=B-S,p=J<ot?O.Strong:J>ct&&A>1?O.Weak:l,p!==l&&(s==null||s(p),l=p,S+=A,A=0),d||(r==null||r(y.Start),n=c[c.length-1],c=[],d=!0),c.push(u);else if(d&&(o++,o>=st)){const g=it(c,oe,n);r==null||r(y.Stop,g),t()||a(),S=B,d=!1}},oe)}let je=!1;const F=(e,t)=>je&&console.log(e,t),lt=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function be(e){switch(e){case"connected":return M.Connected;case"checking":return M.Connecting;case"failed":return M.Fail;case"new":return M.New;case"closed":return M.Closed;case"disconnected":return M.Disconnected;case"completed":return M.Completed;default:return M.New}}function ft(e){const[t,a=""]=e.split(/:(.+)/);try{const r=JSON.parse(a);return F("parsed data channel message",{subject:t,data:r}),{subject:t,data:r}}catch(r){return F("Failed to parse data channel message, returning data as string",{subject:t,rawData:a,error:r}),{subject:t,data:a}}}function mt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,report:r}){e===y.Start&&t===y.Start?a==null||a(y.Start):e===y.Stop&&t===y.Stop&&(a==null||a(y.Stop,r))}function gt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:r,report:s}){e===y.Start?a==null||a(y.Start):e===y.Stop&&(a==null||a(y.Stop,s)),t===y.Start?r==null||r(Y.Talking):t===y.Stop&&(r==null||r(Y.Idle))}function Pe({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:r,streamType:s,report:i}){s===H.Legacy?mt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,report:i}):s===H.Fluent&&gt({statsSignal:e,dataChannelSignal:t,onVideoStateChange:a,onAgentActivityStateChange:r,report:i})}async function ht(e,t,{debug:a=!1,callbacks:r,auth:s,baseURL:i=G,analytics:c}){var x;je=a;let n=!1,o=!1,d=y.Stop,l=y.Stop;const{startConnection:p,sendStreamRequest:A,close:S,createStream:D,addIceCandidate:R}=t.videoType===te.Clip?et(s,i,e,r.onError):tt(s,i,e,r.onError),{id:C,offer:J,ice_servers:B,session_id:u,fluent:g,interrupt_enabled:k}=await D(t);(x=r.onStreamCreated)==null||x.call(r,{stream_id:C,session_id:u,agent_id:e});const h=new lt({iceServers:B}),E=h.createDataChannel("JanusDataChannel");if(!u)throw new Error("Could not create session_id");const v=g?H.Fluent:H.Legacy;c.enrich({"stream-type":v});const j=t.stream_warmup&&!g,L=()=>n,W=()=>{var f;n=!0,o&&((f=r.onConnectionStateChange)==null||f.call(r,M.Connected))},_=ut(h,L,W,(f,w)=>Pe({statsSignal:l=f,dataChannelSignal:v===H.Legacy?d:void 0,onVideoStateChange:r.onVideoStateChange,onAgentActivityStateChange:r.onAgentActivityStateChange,report:w,streamType:v}),f=>{var w;return(w=r.onConnectivityStateChange)==null?void 0:w.call(r,f)},j);h.onicecandidate=f=>{var w;F("peerConnection.onicecandidate",f);try{f.candidate&&f.candidate.sdpMid&&f.candidate.sdpMLineIndex!==null?R(C,{candidate:f.candidate.candidate,sdpMid:f.candidate.sdpMid,sdpMLineIndex:f.candidate.sdpMLineIndex},u):R(C,{candidate:null},u)}catch($){(w=r.onError)==null||w.call(r,$,{streamId:C})}},E.onopen=()=>{o=!0,(!j||n)&&W()};function I(f){d=f===z.StreamStarted?y.Start:y.Stop,Pe({statsSignal:v===H.Legacy?l:void 0,dataChannelSignal:d,onVideoStateChange:r.onVideoStateChange,onAgentActivityStateChange:r.onAgentActivityStateChange,streamType:v})}function T(f,w){const $=typeof w=="string"?w:w==null?void 0:w.metadata;$&&c.enrich({streamMetadata:$}),c.track("agent-chat",{event:"ready"})}const U={[z.StreamStarted]:I,[z.StreamDone]:I,[z.StreamReady]:T};E.onmessage=f=>{var Z;const{subject:w,data:$}=ft(f.data);(Z=U[w])==null||Z.call(U,w,$)},h.oniceconnectionstatechange=()=>{var w;F("peerConnection.oniceconnectionstatechange => "+h.iceConnectionState);const f=be(h.iceConnectionState);f!==M.Connected&&((w=r.onConnectionStateChange)==null||w.call(r,f))},h.ontrack=f=>{var w;F("peerConnection.ontrack",f),(w=r.onSrcObjectReady)==null||w.call(r,f.streams[0])},await h.setRemoteDescription(J),F("set remote description OK");const K=await h.createAnswer();return F("create answer OK"),await h.setLocalDescription(K),F("set local description OK"),await p(C,K,u),F("start connection OK"),{speak(f){return A(C,u,f)},async disconnect(){var f;if(C){const w=be(h.iceConnectionState);if(h){if(w===M.New){clearInterval(_);return}h.close(),h.oniceconnectionstatechange=null,h.onnegotiationneeded=null,h.onicecandidate=null,h.ontrack=null}try{w===M.Connected&&await S(C,u).catch($=>{})}catch($){F("Error on close stream connection",$)}(f=r.onAgentActivityStateChange)==null||f.call(r,Y.Idle),clearInterval(_)}},sendDataChannelMessage(f){var w,$;if(!n||E.readyState!=="open"){F("Data channel is not ready for sending messages"),(w=r.onError)==null||w.call(r,new Error("Data channel is not ready for sending messages"),{streamId:C});return}try{E.send(f)}catch(Z){F("Error sending data channel message",Z),($=r.onError)==null||$.call(r,Z,{streamId:C})}},sessionId:u,streamId:C,streamType:v,interruptEnabled:k}}function wt(e,t){const{streamOptions:a}=t??{};return{videoType:pe(e.presenter.type),output_resolution:a==null?void 0:a.outputResolution,session_timeout:a==null?void 0:a.sessionTimeout,stream_warmup:a==null?void 0:a.streamWarmup,compatibility_mode:a==null?void 0:a.compatibilityMode,fluent:a==null?void 0:a.fluent}}function pt(e,t,a,r,s){s===H.Fluent?yt(e,t,a,r,s):kt(e,t,a,r,s)}function yt(e,t,a,r,s){e===y.Start?r.track("stream-session",{event:"start","stream-type":s}):e===y.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":s,...a})}function vt(e,t,a,r){N.get()<=0||(e===y.Start?a.linkTrack("agent-video",{event:"start",latency:N.get(!0),"stream-type":r},"start",[z.StreamVideoCreated]):e===y.Stop&&a.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",[z.StreamVideoDone]))}function kt(e,t,a,r,s){N.get()<=0||(e===y.Start?r.linkTrack("agent-video",{event:"start",latency:N.get(!0),"stream-type":s},"start",[z.StreamVideoCreated]):e===y.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":s,...a},"done",[z.StreamVideoDone]))}function Ct(e,t,a){return N.reset(),new Promise(async(r,s)=>{try{const i=await ht(e.id,wt(e,t),{...t,analytics:a,callbacks:{...t.callbacks,onConnectionStateChange:c=>{var n,o;(o=(n=t.callbacks).onConnectionStateChange)==null||o.call(n,c),c===M.Connected&&r(i)},onVideoStateChange:(c,n)=>{var o,d;(d=(o=t.callbacks).onVideoStateChange)==null||d.call(o,c),pt(c,e,n,a,i.streamType)},onAgentActivityStateChange:c=>{var n,o;(o=(n=t.callbacks).onAgentActivityStateChange)==null||o.call(n,c),c===Y.Talking?se.update():se.reset(),vt(c===Y.Talking?y.Start:y.Stop,e,a,i.streamType)}}})}catch(i){s(i)}})}async function Dt(e,t,a,r,s){var o,d,l,p;const{chat:i,chatMode:c}=await Me(e,a,r,t.mode,t.persistentChat,s);if(c&&c!==t.mode&&(t.mode=c,(d=(o=t.callbacks).onModeChange)==null||d.call(o,c),c===P.TextOnly))return(p=(l=t.callbacks).onError)==null||p.call(l,new ce(c)),{chat:i};const n=await Ct(e,t,r);return{chat:i,streamingManager:n}}async function Rt(e,t){var C,J,B;let a=!0,r=!1;const s=t.mixpanelKey||Le,i=t.wsURL||Be,c=t.baseURL||G,n={messages:[],chatMode:t.mode||P.Functional},o=Re(t.auth,c,t.callbacks.onError),d=await o.getById(e),l=xe({token:s,agent:d,isEnabled:t.enableAnalitics,distinctId:t.distinctId}),{onMessage:p,clearQueue:A}=Ze(l,n,t,d,()=>{var u;return(u=n.socketManager)==null?void 0:u.disconnect()});n.messages=qe(t.initialMessages),(J=(C=t.callbacks).onNewMessage)==null||J.call(C,[...n.messages],"answer"),l.track("agent-sdk",{event:"loaded",...We(d)});async function S(u){var j,L,W,_,I,T,U;(L=(j=t.callbacks).onConnectionStateChange)==null||L.call(j,M.Connecting),N.reset(),r=!1,u&&!a&&(delete n.chat,(_=(W=t.callbacks).onNewMessage)==null||_.call(W,[...n.messages],"answer"));const g=re(t.mode)?Promise.resolve(void 0):Oe(t.auth,i,{onMessage:p,onError:t.callbacks.onError}),k=ne(()=>Dt(d,t,o,l,n.chat),{limit:3,timeout:Ae,timeoutErrorMessage:"Timeout initializing the stream",shouldRetryFn:K=>(K==null?void 0:K.message)!=="Could not connect"&&K.status!==429,delayMs:1e3}).catch(K=>{var x,f;throw R(P.Maintenance),(f=(x=t.callbacks).onConnectionStateChange)==null||f.call(x,M.Fail),K}),[h,{streamingManager:E,chat:v}]=await Promise.all([g,k]);v&&v.id!==((I=n.chat)==null?void 0:I.id)&&((U=(T=t.callbacks).onNewChat)==null||U.call(T,v.id)),n.streamingManager=E,n.socketManager=h,n.chat=v,a=!1,R((v==null?void 0:v.chat_mode)??t.mode??P.Functional)}async function D(){var u,g,k,h;(u=n.socketManager)==null||u.disconnect(),await((g=n.streamingManager)==null?void 0:g.disconnect()),r=!1,delete n.streamingManager,delete n.socketManager,(h=(k=t.callbacks).onConnectionStateChange)==null||h.call(k,M.Disconnected)}async function R(u){var g,k;u!==n.chatMode&&(l.track("agent-mode-change",{mode:u}),n.chatMode=u,n.chatMode!==P.Functional&&await D(),(k=(g=t.callbacks).onModeChange)==null||k.call(g,u))}return{agent:d,getStreamType:()=>{var u;return(u=n.streamingManager)==null?void 0:u.streamType},getIsInterruptEnabled:()=>{var u;return((u=n.streamingManager)==null?void 0:u.interruptEnabled)??!1},starterMessages:((B=d.knowledge)==null?void 0:B.starter_message)||[],getSTTToken:()=>o.getSTTToken(d.id),changeMode:R,enrichAnalytics:l.enrich,async connect(){var u;await S(!0),l.track("agent-chat",{event:"connect",chatId:(u=n.chat)==null?void 0:u.id,agentId:d.id,mode:n.chatMode})},async reconnect(){var u;await D(),await S(!1),l.track("agent-chat",{event:"reconnect",chatId:(u=n.chat)==null?void 0:u.id,agentId:d.id,mode:n.chatMode})},async disconnect(){var u;await D(),l.track("agent-chat",{event:"disconnect",chatId:(u=n.chat)==null?void 0:u.id,agentId:d.id,mode:n.chatMode})},async chat(u){var E,v,j,L,W;const g=()=>{if(re(t.mode))throw new V(`${t.mode} is enabled, chat is disabled`);if(u.length>=800)throw new V("Message cannot be more than 800 characters");if(u.length===0)throw new V("Message cannot be empty");if(n.chatMode===P.Maintenance)throw new V("Chat is in maintenance mode");if(![P.TextOnly,P.Playground].includes(n.chatMode)){if(!n.streamingManager)throw new V("Streaming manager is not initialized");if(!n.chat)throw new V("Chat is not initialized")}},k=async()=>{var _,I;if(!n.chat){const T=await Me(d,o,l,n.chatMode,t.persistentChat);if(!T.chat)throw new q(n.chatMode,!!t.persistentChat);n.chat=T.chat,(I=(_=t.callbacks).onNewChat)==null||I.call(_,n.chat.id)}return n.chat.id},h=async(_,I)=>ne(()=>{var T,U;return o.chat(d.id,I,{chatMode:n.chatMode,streamId:(T=n.streamingManager)==null?void 0:T.streamId,sessionId:(U=n.streamingManager)==null?void 0:U.sessionId,messages:_.map(({matches:K,...x})=>x)},{...Ie(n.chatMode),skipErrorHandler:!0})},{limit:2,shouldRetryFn:T=>{var x,f,w,$;const U=(x=T==null?void 0:T.message)==null?void 0:x.includes("missing or invalid session_id");return!((f=T==null?void 0:T.message)==null?void 0:f.includes("Stream Error"))&&!U?(($=(w=t.callbacks).onError)==null||$.call(w,T),!1):!0},onRetry:async()=>{await D(),await S(!1)}});try{A(),g(),n.messages.push({id:Q(),role:"user",content:u,created_at:new Date(N.update()).toISOString()}),(v=(E=t.callbacks).onNewMessage)==null||v.call(E,[...n.messages],"user");const _=await k(),I=await h([...n.messages],_);return n.messages.push({id:Q(),role:"assistant",content:I.result||"",created_at:new Date().toISOString(),context:I.context,matches:I.matches,videoId:I.videoId}),r&&I.videoId&&n.streamingManager&&(r=!1,n.messages[n.messages.length-1].interrupted=!0,await Te(n.streamingManager,I.videoId)),l.track("agent-message-send",{event:"success",mode:n.chatMode,messages:n.messages.length+1}),I.result&&((L=(j=t.callbacks).onNewMessage)==null||L.call(j,[...n.messages],"answer"),l.track("agent-message-received",{latency:N.get(!0),mode:n.chatMode,messages:n.messages.length})),I}catch(_){throw r=!1,((W=n.messages[n.messages.length-1])==null?void 0:W.role)==="assistant"&&n.messages.pop(),l.track("agent-message-send",{event:"error",mode:n.chatMode,messages:n.messages.length}),_}},rate(u,g,k){var v,j,L,W;const h=n.messages.find(_=>_.id===u);if(n.chat){if(!h)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const E=((v=h.matches)==null?void 0:v.map(_=>[_.document_id,_.id]))??[];return l.track("agent-rate",{event:k?"update":"create",thumb:g===1?"up":"down",knowledge_id:((j=d.knowledge)==null?void 0:j.id)??"",mode:n.chatMode,matches:E,score:g}),k?o.updateRating(d.id,n.chat.id,k,{knowledge_id:((L=d.knowledge)==null?void 0:L.id)??"",message_id:u,matches:E,score:g}):o.createRating(d.id,n.chat.id,{knowledge_id:((W=d.knowledge)==null?void 0:W.id)??"",message_id:u,matches:E,score:g})},deleteRate(u){var g;if(!n.chat)throw new Error("Chat is not initialized");return l.track("agent-rate-delete",{type:"text",chat_id:(g=n.chat)==null?void 0:g.id,id:u,mode:n.chatMode}),o.deleteRating(d.id,n.chat.id,u)},async speak(u){var E,v,j;function g(){if(typeof u=="string"){if(!d.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:d.presenter.voice,input:u,ssml:!1}}if(u.type==="text"&&!u.provider){if(!d.presenter.voice)throw new Error("Presenter voice is not initialized");return{type:"text",provider:d.presenter.voice,input:u.input,ssml:u.ssml}}return u}const k=g();if(l.track("agent-speak",k),N.update(),n.messages&&k.type==="text"&&(n.messages.push({id:Q(),role:"assistant",content:k.input,created_at:new Date(N.get(!0)).toISOString()}),(v=(E=t.callbacks).onNewMessage)==null||v.call(E,[...n.messages],"answer")),ze(n.chatMode))return{duration:0,status:"success"};if(!n.streamingManager)throw new Error("Please connect to the agent first");return n.streamingManager.speak({script:k,metadata:{chat_id:(j=n.chat)==null?void 0:j.id,agent_id:d.id}})},async interrupt({type:u}){var h,E,v,j,L;const g=n.messages[n.messages.length-1],k=(g==null?void 0:g.role)==="user";if(Ve(n.streamingManager,n.chat,(h=n.streamingManager)==null?void 0:h.streamType,k,!!(g!=null&&g.videoId)),l.track("agent-video-interrupt",{type:u||"click",stream_id:(E=n.streamingManager)==null?void 0:E.streamId,agent_id:d.id,owner_id:d.owner_id,video_duration_to_interrupt:se.get(!0),message_duration_to_interrupt:N.get(!0),chat_id:(v=n.chat)==null?void 0:v.id,mode:n.chatMode,queued_interrupt:k}),k){r=!0;return}g.interrupted=!0,(L=(j=t.callbacks).onNewMessage)==null||L.call(j,[...n.messages],"answer"),Te(n.streamingManager,g.videoId)}}}function St(e,t,a){const{getById:r}=Re(t,a||G);return r(e)}m.AgentActivityState=Y,m.AgentStatus=fe,m.ChatCreationFailed=q,m.ChatMode=P,m.ChatModeDowngraded=ce,m.ChatProgress=X,m.ConnectionState=M,m.ConnectivityState=O,m.DocumentType=we,m.KnowledgeType=he,m.PlanGroup=le,m.Providers=ye,m.RateState=me,m.StreamEvents=z,m.StreamType=H,m.StreamingState=y,m.Subject=ge,m.UserPlan=ue,m.ValidationError=V,m.VideoType=te,m.VoiceAccess=ve,m.WsError=de,m.createAgentManager=Rt,m.getAgent=St,m.mapVideoType=pe,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})});
@@ -48,7 +48,7 @@ export declare enum ChatMode {
48
48
  Maintenance = "Maintenance",
49
49
  Playground = "Playground",
50
50
  DirectPlayback = "DirectPlayback",
51
- OuterControl = "OuterControl"
51
+ Off = "Off"
52
52
  }
53
53
  export interface ChatResponse {
54
54
  result?: string;
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.17",
4
+ "version": "1.1.0-beta.18",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {