@d-id/client-sdk 1.0.19-beta.77 → 1.0.19-beta.79

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
@@ -1,4 +1,4 @@
1
- var U = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(U || {}), B = /* @__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))(B || {}), J = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(J || {}), E = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e))(E || {}), x = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(x || {}), q = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(q || {}), V = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(V || {}), Q = /* @__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))(Q || {}), C = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(C || {}), N = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(N || {}), I = /* @__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))(I || {}), M = /* @__PURE__ */ ((e) => (e[e.New = 0] = "New", e[e.Fail = 1] = "Fail", e[e.Connected = 2] = "Connected", e[e.Connecting = 3] = "Connecting", e[e.Terminating = 4] = "Terminating", e))(M || {}), X = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(X || {}), Y = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(Y || {});
1
+ var U = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(U || {}), B = /* @__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))(B || {}), J = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(J || {}), E = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e))(E || {}), x = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(x || {}), q = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(q || {}), V = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(V || {}), Q = /* @__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))(Q || {}), C = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(C || {}), N = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(N || {}), I = /* @__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))(I || {}), S = /* @__PURE__ */ ((e) => (e[e.New = 0] = "New", e[e.Fail = 1] = "Fail", e[e.Connected = 2] = "Connected", e[e.Connecting = 3] = "Connecting", e[e.Terminating = 4] = "Terminating", e))(S || {}), X = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(X || {}), Y = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(Y || {});
2
2
  const T = "https://api.d-id.com", Z = "wss://notifications.d-id.com", G = "79f81a83a67430be2bc0fd61042b8faa", P = () => Math.random().toString(16).slice(2);
3
3
  function D() {
4
4
  let e = window.localStorage.getItem("did_external_key_id");
@@ -107,11 +107,11 @@ function ne(e) {
107
107
  onOpen: d = null,
108
108
  onClose: g = null,
109
109
  onError: l = null
110
- } = n || {}, f = new WebSocket(`${a}?authorization=${H(i)}`);
111
- f.onmessage = o, f.onclose = g, f.onerror = (p) => {
112
- console.error(p), l == null || l("Websocket failed to connect", p), t(p);
113
- }, f.onopen = (p) => {
114
- d == null || d(p), r(f);
110
+ } = n || {}, h = new WebSocket(`${a}?authorization=${H(i)}`);
111
+ h.onmessage = o, h.onclose = g, h.onerror = (f) => {
112
+ console.error(f), l == null || l("Websocket failed to connect", f), t(f);
113
+ }, h.onopen = (f) => {
114
+ d == null || d(f), r(h);
115
115
  };
116
116
  });
117
117
  }
@@ -269,16 +269,16 @@ const A = (e, r) => j && console.log(e, r), oe = (window.RTCPeerConnection || wi
269
269
  function ce(e) {
270
270
  switch (e) {
271
271
  case "connected":
272
- return M.Connected;
272
+ return S.Connected;
273
273
  case "checking":
274
- return M.Connecting;
274
+ return S.Connecting;
275
275
  case "failed":
276
- return M.Fail;
276
+ return S.Fail;
277
277
  case "new":
278
278
  case "closed":
279
279
  case "disconnected":
280
280
  default:
281
- return M.New;
281
+ return S.New;
282
282
  }
283
283
  }
284
284
  function de(e, r) {
@@ -288,16 +288,16 @@ function de(e, r) {
288
288
  g.forEach((l) => {
289
289
  if (l.type === "inbound-rtp" && l.kind === "video") {
290
290
  if (a = t.length - 1, l && t[a]) {
291
- const f = l.bytesReceived, p = t[a].bytesReceived, k = o;
292
- let y;
293
- if (o = f - p > 0, i = o ? 0 : ++i, k !== o)
291
+ const h = l.bytesReceived, f = t[a].bytesReceived, k = o;
292
+ let v;
293
+ if (o = h - f > 0, i = o ? 0 : ++i, k !== o)
294
294
  if (o)
295
- n = t.length, r == null || r(N.Start, y);
295
+ n = t.length, r == null || r(N.Start, v);
296
296
  else {
297
297
  const L = t.slice(n), b = n === 0 ? void 0 : t[n - 1];
298
- y = se(L, b), y = y.sort((S, s) => s.packetsLost - S.packetsLost).slice(0, 5);
298
+ v = se(L, b), v = v.sort((M, s) => s.packetsLost - M.packetsLost).slice(0, 5);
299
299
  }
300
- !o && i === 3 && (r == null || r(N.Stop, y));
300
+ !o && i === 3 && (r == null || r(N.Stop, v));
301
301
  }
302
302
  t.push(l);
303
303
  }
@@ -317,76 +317,71 @@ async function ge(e, r, {
317
317
  const {
318
318
  startConnection: g,
319
319
  sendStreamRequest: l,
320
- close: f,
321
- createStream: p,
320
+ close: h,
321
+ createStream: f,
322
322
  addIceCandidate: k
323
323
  } = r.videoType === C.Clip ? re(a, o, e) : ie(a, o, e), {
324
- id: y,
324
+ id: v,
325
325
  offer: L,
326
326
  ice_servers: b,
327
- session_id: S
328
- } = await p(r), s = new oe({
327
+ session_id: M
328
+ } = await f(r), s = new oe({
329
329
  iceServers: b
330
330
  }), u = s.createDataChannel("JanusDataChannel");
331
- if (!S)
331
+ if (!M)
332
332
  throw new Error("Could not create session_id");
333
333
  const m = de(s, n.onVideoStateChange);
334
334
  s.onicecandidate = (c) => {
335
- A("peerConnection.onicecandidate", c), c.candidate && c.candidate.sdpMid && c.candidate.sdpMLineIndex !== null ? k(y, {
335
+ A("peerConnection.onicecandidate", c), c.candidate && c.candidate.sdpMid && c.candidate.sdpMLineIndex !== null ? k(v, {
336
336
  candidate: c.candidate.candidate,
337
337
  sdpMid: c.candidate.sdpMid,
338
338
  sdpMLineIndex: c.candidate.sdpMLineIndex
339
- }, S) : k(y, {
339
+ }, M) : k(v, {
340
340
  candidate: null
341
- }, S);
341
+ }, M);
342
342
  }, s.oniceconnectionstatechange = () => {
343
- var h;
343
+ var w;
344
344
  A("peerConnection.oniceconnectionstatechange => " + s.iceConnectionState);
345
345
  const c = ce(s.iceConnectionState);
346
- c === M.Connected ? (i.track("agent-chat-loaded"), d = setTimeout(() => {
347
- var w;
348
- (w = n.onConnectionStateChange) == null || w.call(n, M.Connected);
349
- }, 5e3)) : (clearTimeout(d), (h = n.onConnectionStateChange) == null || h.call(n, c));
346
+ c === S.Connected ? d = setTimeout(() => {
347
+ var y;
348
+ (y = n.onConnectionStateChange) == null || y.call(n, S.Connected);
349
+ }, 5e3) : (clearTimeout(d), (w = n.onConnectionStateChange) == null || w.call(n, c));
350
350
  }, s.ontrack = (c) => {
351
- var h;
352
- A("peerConnection.ontrack", c), (h = n.onSrcObjectReady) == null || h.call(n, c.streams[0]);
351
+ var w;
352
+ A("peerConnection.ontrack", c), (w = n.onSrcObjectReady) == null || w.call(n, c.streams[0]);
353
353
  }, u.onmessage = (c) => {
354
- var h;
354
+ var w;
355
355
  if (u.readyState === "open") {
356
- const [w, _] = c.data.split(":");
357
- w === I.StreamVideoCreated || I.StreamVideoDone || I.StreamVideoError || I.StreamVideoRejected ? i.track("agent-video", {
358
- event: w,
359
- ...c
360
- }) : w === I.StreamFailed || w === I.StreamDone ? clearInterval(m) : w === I.StreamReady ? (clearTimeout(d), (h = n.onConnectionStateChange) == null || h.call(n, M.Connected)) : w === I.StreamCreated && i.track("agent-video", {
361
- event: "created"
362
- });
356
+ const [y, _] = c.data.split(":");
357
+ y === I.StreamFailed || y === I.StreamDone ? clearInterval(m) : y === I.StreamReady && (clearTimeout(d), (w = n.onConnectionStateChange) == null || w.call(n, S.Connected));
363
358
  }
364
359
  }, await s.setRemoteDescription(L), A("set remote description OK");
365
- const v = await s.createAnswer();
366
- return A("create answer OK"), await s.setLocalDescription(v), A("set local description OK"), await g(y, v, S), A("start connection OK"), {
360
+ const p = await s.createAnswer();
361
+ return A("create answer OK"), await s.setLocalDescription(p), A("set local description OK"), await g(v, p, M), A("start connection OK"), {
367
362
  /**
368
363
  * Method to send request to server to get clip or talk depend on you payload
369
364
  * @param payload
370
365
  */
371
366
  speak(c) {
372
- return l(y, S, c);
367
+ return l(v, M, c);
373
368
  },
374
369
  /**
375
370
  * Method to close RTC connection
376
371
  */
377
372
  async disconnect() {
378
- var c, h;
379
- y && (s && (s.close(), s.oniceconnectionstatechange = null, s.onnegotiationneeded = null, s.onicecandidate = null, s.ontrack = null), await f(y, S).catch((w) => {
380
- }), (c = n.onConnectionStateChange) == null || c.call(n, M.New), (h = n.onVideoStateChange) == null || h.call(n, N.Stop), clearInterval(m));
373
+ var c, w;
374
+ v && (s && (s.close(), s.oniceconnectionstatechange = null, s.onnegotiationneeded = null, s.onicecandidate = null, s.ontrack = null), await h(v, M).catch((y) => {
375
+ }), (c = n.onConnectionStateChange) == null || c.call(n, S.New), (w = n.onVideoStateChange) == null || w.call(n, N.Stop), clearInterval(m));
381
376
  },
382
377
  /**
383
378
  * Session identifier information, should be returned in the body of all streaming requests
384
379
  */
385
- sessionId: S,
380
+ sessionId: M,
386
381
  /**
387
382
  * Id of current RTC stream
388
383
  */
389
- streamId: y
384
+ streamId: v
390
385
  };
391
386
  }
392
387
  function le(e) {
@@ -471,8 +466,8 @@ function z(e, r, t, n, a) {
471
466
  callbacks: {
472
467
  ...r.callbacks,
473
468
  onConnectionStateChange: async (l) => {
474
- var f, p;
475
- if (l === M.Connected)
469
+ var h, f;
470
+ if (l === S.Connected)
476
471
  try {
477
472
  d || (d = await t.newChat(e.id), n.track("agent-chat", {
478
473
  event: "created",
@@ -486,22 +481,22 @@ function z(e, r, t, n, a) {
486
481
  console.error(k), o("Cannot create new chat");
487
482
  }
488
483
  else
489
- l === M.Fail && o(new Error("Cannot create connection"));
490
- (p = (f = r.callbacks).onConnectionStateChange) == null || p.call(f, l);
484
+ l === S.Fail && o(new Error("Cannot create connection"));
485
+ (f = (h = r.callbacks).onConnectionStateChange) == null || f.call(h, l);
491
486
  },
492
- onVideoStateChange(l, f) {
493
- var p, k;
487
+ onVideoStateChange(l, h) {
488
+ var f, k;
494
489
  n.track("agent-video", {
495
490
  event: l,
496
- rtc_stats: f ?? []
497
- }), (k = (p = r.callbacks).onVideoStateChange) == null || k.call(p, l, f);
491
+ rtc_stats: h ?? []
492
+ }), (k = (f = r.callbacks).onVideoStateChange) == null || k.call(f, l, h);
498
493
  }
499
494
  },
500
495
  analytics: n
501
496
  }).catch(o);
502
497
  });
503
498
  }
504
- function he(e, r, t) {
499
+ function we(e, r, t) {
505
500
  return K(r, t || T).getById(e);
506
501
  }
507
502
  function O(e) {
@@ -518,8 +513,8 @@ function O(e) {
518
513
  created_at: (/* @__PURE__ */ new Date()).toISOString()
519
514
  }];
520
515
  }
521
- async function we(e, r) {
522
- var L, b, S;
516
+ async function he(e, r) {
517
+ var L, b, M;
523
518
  const t = {
524
519
  messages: [],
525
520
  chatMode: r.mode || E.Functional
@@ -536,40 +531,46 @@ async function we(e, r) {
536
531
  event: "loaded",
537
532
  ...me(g)
538
533
  });
539
- const f = {
534
+ const h = {
540
535
  onMessage: (s, u) => {
541
- var m, v;
536
+ var m, p;
542
537
  if ("content" in u) {
543
538
  const {
544
539
  content: c
545
- } = u, h = t.messages[t.messages.length - 1];
546
- (h == null ? void 0 : h.role) === "assistant" && (n < t.messages.length && (h.content = s === x.Partial ? h.content + c : c), s === x.Answer && (n = t.messages.length)), s === x.Complete && l.track("agent-message-received", {
540
+ } = u, w = t.messages[t.messages.length - 1];
541
+ (w == null ? void 0 : w.role) === "assistant" && (n < t.messages.length && (w.content = s === x.Partial ? w.content + c : c), s === x.Answer && (n = t.messages.length)), s === x.Complete && l.track("agent-message-received", {
547
542
  messages: t.messages.length
548
- }), (v = (m = r.callbacks).onNewMessage) == null || v.call(m, t.messages);
543
+ }), (p = (m = r.callbacks).onNewMessage) == null || p.call(m, t.messages);
544
+ } else if ([I.StreamVideoCreated, I.StreamVideoDone, I.StreamVideoError, I.StreamVideoRejected].includes(s)) {
545
+ const c = s.split("/")[1];
546
+ l.track("agent-video", {
547
+ ...u,
548
+ event: c
549
+ });
549
550
  }
550
551
  }
551
552
  };
552
- async function p() {
553
- var v, c, h, w, _;
554
- const s = await W(r.auth, a, f), {
553
+ async function f() {
554
+ var p, c, w, y, _;
555
+ const s = await W(r.auth, a, h), {
555
556
  streamingManager: u,
556
557
  chat: m
557
558
  } = await z(g, r, d, l, t.chat);
558
- n = -1, t.messages = O(g), (c = (v = r.callbacks).onNewMessage) == null || c.call(v, t.messages), m != null && m.id && m.id !== ((h = t.chat) == null ? void 0 : h.id) && ((_ = (w = r.callbacks).onNewChat) == null || _.call(w, m == null ? void 0 : m.id)), t.streamingManager = u, t.socketManager = s, t.chat = m, y(E.Functional), l.track("agent-chat", {
559
+ n = -1, t.messages = O(g), (c = (p = r.callbacks).onNewMessage) == null || c.call(p, t.messages), m != null && m.id && m.id !== ((w = t.chat) == null ? void 0 : w.id) && ((_ = (y = r.callbacks).onNewChat) == null || _.call(y, m == null ? void 0 : m.id)), t.streamingManager = u, t.socketManager = s, t.chat = m, v(E.Functional), l.track("agent-chat", {
559
560
  event: "connect",
560
561
  chatId: m.id,
561
562
  agentId: g.id
562
563
  });
563
564
  }
564
565
  async function k() {
565
- var s, u, m, v, c;
566
- (s = t.socketManager) == null || s.disconnect(), await ((u = t.streamingManager) == null ? void 0 : u.disconnect()), delete t.streamingManager, delete t.socketManager, t.messages = O(g), (v = (m = r.callbacks).onNewMessage) == null || v.call(m, t.messages), l.track("agent-chat", {
566
+ var s, u, m, p, c;
567
+ (s = t.socketManager) == null || s.disconnect(), await ((u = t.streamingManager) == null ? void 0 : u.disconnect()), delete t.streamingManager, delete t.socketManager, t.messages = O(g), (p = (m = r.callbacks).onNewMessage) == null || p.call(m, t.messages), l.track("agent-chat", {
567
568
  event: "disconnect",
568
569
  chatId: (c = t.chat) == null ? void 0 : c.id,
569
570
  agentId: g.id
570
571
  });
571
572
  }
572
- async function y(s) {
573
+ async function v(s) {
573
574
  var u, m;
574
575
  s !== t.chatMode && (l.track("agent-mode-change", {
575
576
  mode: s
@@ -577,25 +578,25 @@ async function we(e, r) {
577
578
  }
578
579
  return {
579
580
  agent: g,
580
- starterMessages: ((S = g.knowledge) == null ? void 0 : S.starter_message) || [],
581
- connect: p,
581
+ starterMessages: ((M = g.knowledge) == null ? void 0 : M.starter_message) || [],
582
+ connect: f,
582
583
  disconnect: k,
583
- changeMode: y,
584
+ changeMode: v,
584
585
  async reconnect() {
585
586
  if (!t.chat)
586
- return p();
587
- const s = await W(r.auth, a, f), {
587
+ return f();
588
+ const s = await W(r.auth, a, h), {
588
589
  streamingManager: u,
589
590
  chat: m
590
591
  } = await z(g, r, d, l, t.chat);
591
- t.streamingManager = u, t.socketManager = s, y(E.Functional), l.track("agent-chat", {
592
+ t.streamingManager = u, t.socketManager = s, v(E.Functional), l.track("agent-chat", {
592
593
  event: "reconnect",
593
594
  chatId: m.id,
594
595
  agentId: g.id
595
596
  });
596
597
  },
597
598
  async chat(s, u = !1) {
598
- var m, v, c, h, w, _;
599
+ var m, p, c, w, y, _;
599
600
  try {
600
601
  if (s.length >= 800)
601
602
  throw new Error("Message cannot be more than 800 characters");
@@ -605,7 +606,7 @@ async function we(e, r) {
605
606
  role: "user",
606
607
  content: s,
607
608
  created_at: new Date($).toISOString()
608
- }), (v = (m = r.callbacks).onNewMessage) == null || v.call(m, t.messages), s.length === 0)
609
+ }), (p = (m = r.callbacks).onNewMessage) == null || p.call(m, t.messages), s.length === 0)
609
610
  throw new Error("Message cannot be empty");
610
611
  if (t.chatMode === E.Maintenance)
611
612
  throw new Error("Chat is in maintenance mode");
@@ -618,7 +619,7 @@ async function we(e, r) {
618
619
  t.chat || (t.chat = await d.newChat(g.id));
619
620
  const R = await d.chat(g.id, t.chat.id, {
620
621
  sessionId: (c = t.streamingManager) == null ? void 0 : c.sessionId,
621
- streamId: (h = t.streamingManager) == null ? void 0 : h.streamId,
622
+ streamId: (w = t.streamingManager) == null ? void 0 : w.streamId,
622
623
  messages: t.messages,
623
624
  chatMode: t.chatMode,
624
625
  append_chat: u
@@ -635,7 +636,7 @@ async function we(e, r) {
635
636
  }), R.result && l.track("agent-message-received", {
636
637
  latency: Date.now() - $,
637
638
  messages: t.messages.length
638
- }), (_ = (w = r.callbacks).onNewMessage) == null || _.call(w, t.messages), R;
639
+ }), (_ = (y = r.callbacks).onNewMessage) == null || _.call(y, t.messages), R;
639
640
  } catch ($) {
640
641
  throw l.track("agent-message-send", {
641
642
  event: "error",
@@ -644,18 +645,18 @@ async function we(e, r) {
644
645
  }
645
646
  },
646
647
  rate(s, u, m) {
647
- var h, w, _, $;
648
- const v = t.messages.find((R) => R.id === s);
648
+ var w, y, _, $;
649
+ const p = t.messages.find((R) => R.id === s);
649
650
  if (t.chat) {
650
- if (!v)
651
+ if (!p)
651
652
  throw new Error("Message not found");
652
653
  } else
653
654
  throw new Error("Chat is not initialized");
654
- const c = ((h = v.matches) == null ? void 0 : h.map((R) => [R.document_id, R.id])) ?? [];
655
+ const c = ((w = p.matches) == null ? void 0 : w.map((R) => [R.document_id, R.id])) ?? [];
655
656
  return l.track("agent-rate", {
656
657
  event: m ? "update" : "create",
657
658
  thumb: u === 1 ? "up" : "down",
658
- knowledge_id: ((w = g.knowledge) == null ? void 0 : w.id) ?? "",
659
+ knowledge_id: ((y = g.knowledge) == null ? void 0 : y.id) ?? "",
659
660
  matches: c,
660
661
  score: u
661
662
  }), m ? d.updateRating(g.id, t.chat.id, m, {
@@ -711,7 +712,7 @@ async function we(e, r) {
711
712
  export {
712
713
  E as ChatMode,
713
714
  x as ChatProgress,
714
- M as ConnectionState,
715
+ S as ConnectionState,
715
716
  Q as DocumentType,
716
717
  V as KnowledgeType,
717
718
  B as PlanGroup,
@@ -723,6 +724,6 @@ export {
723
724
  U as UserPlan,
724
725
  C as VideoType,
725
726
  Y as VoiceAccess,
726
- we as createAgentManager,
727
- he as getAgent
727
+ he as createAgentManager,
728
+ we as getAgent
728
729
  };
@@ -1 +1 @@
1
- (function(w,b){typeof exports=="object"&&typeof module<"u"?b(exports):typeof define=="function"&&define.amd?define(["exports"],b):(w=typeof globalThis<"u"?globalThis:w||self,b(w.index={}))})(this,function(w){"use strict";var b=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(b||{}),j=(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))(j||{}),z=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(z||{}),$=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))($||{}),N=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(N||{}),H=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(H||{}),x=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(x||{}),U=(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))(U||{}),S=(e=>(e.Clip="clip",e.Talk="talk",e))(S||{}),O=(e=>(e.Start="START",e.Stop="STOP",e))(O||{}),R=(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))(R||{}),k=(e=>(e[e.New=0]="New",e[e.Fail=1]="Fail",e[e.Connected=2]="Connected",e[e.Connecting=3]="Connecting",e[e.Terminating=4]="Terminating",e))(k||{}),B=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(B||{}),J=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(J||{});const F="https://api.d-id.com",G="wss://notifications.d-id.com",ee="79f81a83a67430be2bc0fd61042b8faa",D=()=>Math.random().toString(16).slice(2);function V(){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 te=D();function q(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}.${V()}_${te}`;throw new Error(`Unknown auth type: ${e}`)}function K(e,i=F){const t=async(n,a)=>{const r=await fetch(i+(n!=null&&n.startsWith("/")?n:`/${n}`),{...a,headers:{...a==null?void 0:a.headers,Authorization:q(e),"Content-Type":"application/json"}});if(!r.ok){let o=await r.text().catch(()=>"Failed to fetch");throw new Error(o)}return r.json()};return{get(n,a){return t(n,{...a,method:"GET"})},post(n,a,r){return t(n,{...r,body:JSON.stringify(a),method:"POST"})},delete(n,a,r){return t(n,{...r,body:JSON.stringify(a),method:"DELETE"})},patch(n,a,r){return t(n,{...r,body:JSON.stringify(a),method:"PATCH"})}}}function Q(e,i=F){const t=K(e,`${i}/agents`);return{create(n,a){return t.post("/",n,a)},getAgents(n,a){return t.get(`/${n?`?tag=${n}`:""}`,a).then(r=>r??[])},getById(n,a){return t.get(`/${n}`,a)},delete(n,a){return t.delete(`/${n}`,void 0,a)},update(n,a,r){return t.patch(`/${n}`,a,r)},newChat(n,a){return t.post(`/${n}/chat`,void 0,a)},chat(n,a,r,o){return t.post(`/${n}/chat/${a}`,r,o)},createRating(n,a,r,o){return t.post(`/${n}/chat/${a}/ratings`,r,o)},updateRating(n,a,r,o,d){return t.patch(`/${n}/chat/${a}/ratings/${r}`,o,d)},deleteRating(n,a,r,o){return t.delete(`/${n}/chat/${a}/ratings/${r}`,o)}}}const ne=e=>new Promise(i=>setTimeout(i,e));function ae(e){return new Promise((i,t)=>{const{callbacks:n,host:a,auth:r}=e,{onMessage:o=null,onOpen:d=null,onClose:g=null,onError:l=null}=n||{},p=new WebSocket(`${a}?authorization=${q(r)}`);p.onmessage=o,p.onclose=g,p.onerror=v=>{console.error(v),l==null||l("Websocket failed to connect",v),t(v)},p.onopen=v=>{d==null||d(v),i(p)}})}async function ie(e){const{retries:i=1}=e;let t=null;for(let n=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;n++)try{t=await ae(e)}catch(a){if(n===i)throw a;await ne(n*500)}return t}async function X(e,i,t){const n=t!=null&&t.onMessage?[t.onMessage]:[],a=await ie({auth:e,host:i,callbacks:{onError:t==null?void 0:t.onError,onMessage:r=>{const o=JSON.parse(r.data);n.forEach(d=>d(o.event,o))}}});return{socket:a,disconnect:()=>a.close(),subscribeToEvents:r=>n.push(r)}}function re(e,i,t){const n=K(e,`${i}/agents/${t}`);return{createStream(a){return n.post("/streams",{driver_id:a.driver_id,presenter_id:a.presenter_id,compatibility_mode:a.compatibility_mode,stream_warmup:a.stream_warmup,type:S.Clip})},startConnection(a,r,o){return n.post(`/streams/${a}/sdp`,{session_id:o,answer:r,type:S.Clip})},addIceCandidate(a,r,o){return n.post(`/streams/${a}/ice`,{session_id:o,...r,type:S.Clip})},sendStreamRequest(a,r,o){return n.post(`/streams/${a}`,{session_id:r,...o,type:S.Clip})},close(a,r){return n.delete(`/streams/${a}`,{session_id:r,type:S.Clip})}}}function se(e,i,t){const n=K(e,`${i}/agents/${t}`);return{createStream(a,r){return n.post("/streams",{source_url:a.source_url,driver_url:a.driver_url,face:a.face,config:a.config,stream_warmup:a.stream_warmup,type:S.Talk},r)},startConnection(a,r,o,d){return n.post(`/streams/${a}/sdp`,{session_id:o,answer:r,type:S.Talk},d)},addIceCandidate(a,r,o,d){return n.post(`/streams/${a}/ice`,{session_id:o,...r,type:S.Talk},d)},sendStreamRequest(a,r,o,d){return n.post(`/streams/${a}`,{session_id:r,...o,type:S.Talk},d)},close(a,r,o){return n.delete(`/streams/${a}`,{session_id:r,type:S.Talk},o)}}}function oe(e,i){return e.map((t,n)=>n===0?i?{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-i.bytesReceived,packetsReceived:t.packetsReceived-i.packetsReceived,packetsLost:t.packetsLost-i.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived,packetsReceived:t.packetsReceived,packetsLost:t.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-e[n-1].bytesReceived,packetsReceived:t.packetsReceived-e[n-1].packetsReceived,packetsLost:t.packetsLost-e[n-1].packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond})}let Y=!1;const E=(e,i)=>Y&&console.log(e,i),ce=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function de(e){switch(e){case"connected":return k.Connected;case"checking":return k.Connecting;case"failed":return k.Fail;case"new":case"closed":case"disconnected":default:return k.New}}function ge(e,i){let t=[],n=0,a=0,r=0,o;return setInterval(()=>{e.getStats().then(g=>{g.forEach(l=>{if(l.type==="inbound-rtp"&&l.kind==="video"){if(a=t.length-1,l&&t[a]){const p=l.bytesReceived,v=t[a].bytesReceived,M=o;let C;if(o=p-v>0,r=o?0:++r,M!==o)if(o)n=t.length,i==null||i(O.Start,C);else{const L=t.slice(n),P=n===0?void 0:t[n-1];C=oe(L,P),C=C.sort((_,s)=>s.packetsLost-_.packetsLost).slice(0,5)}!o&&r===3&&(i==null||i(O.Stop,C))}t.push(l)}})})},500)}async function le(e,i,{debug:t=!1,callbacks:n,auth:a,analytics:r,baseURL:o=F}){Y=t;let d;const{startConnection:g,sendStreamRequest:l,close:p,createStream:v,addIceCandidate:M}=i.videoType===S.Clip?re(a,o,e):se(a,o,e),{id:C,offer:L,ice_servers:P,session_id:_}=await v(i),s=new ce({iceServers:P}),u=s.createDataChannel("JanusDataChannel");if(!_)throw new Error("Could not create session_id");const m=ge(s,n.onVideoStateChange);s.onicecandidate=c=>{E("peerConnection.onicecandidate",c),c.candidate&&c.candidate.sdpMid&&c.candidate.sdpMLineIndex!==null?M(C,{candidate:c.candidate.candidate,sdpMid:c.candidate.sdpMid,sdpMLineIndex:c.candidate.sdpMLineIndex},_):M(C,{candidate:null},_)},s.oniceconnectionstatechange=()=>{var h;E("peerConnection.oniceconnectionstatechange => "+s.iceConnectionState);const c=de(s.iceConnectionState);c===k.Connected?(r.track("agent-chat-loaded"),d=setTimeout(()=>{var f;(f=n.onConnectionStateChange)==null||f.call(n,k.Connected)},5e3)):(clearTimeout(d),(h=n.onConnectionStateChange)==null||h.call(n,c))},s.ontrack=c=>{var h;E("peerConnection.ontrack",c),(h=n.onSrcObjectReady)==null||h.call(n,c.streams[0])},u.onmessage=c=>{var h;if(u.readyState==="open"){const[f,I]=c.data.split(":");f===R.StreamVideoCreated||R.StreamVideoDone||R.StreamVideoError||R.StreamVideoRejected?r.track("agent-video",{event:f,...c}):f===R.StreamFailed||f===R.StreamDone?clearInterval(m):f===R.StreamReady?(clearTimeout(d),(h=n.onConnectionStateChange)==null||h.call(n,k.Connected)):f===R.StreamCreated&&r.track("agent-video",{event:"created"})}},await s.setRemoteDescription(L),E("set remote description OK");const y=await s.createAnswer();return E("create answer OK"),await s.setLocalDescription(y),E("set local description OK"),await g(C,y,_),E("start connection OK"),{speak(c){return l(C,_,c)},async disconnect(){var c,h;C&&(s&&(s.close(),s.oniceconnectionstatechange=null,s.onnegotiationneeded=null,s.onicecandidate=null,s.ontrack=null),await p(C,_).catch(f=>{}),(c=n.onConnectionStateChange)==null||c.call(n,k.New),(h=n.onVideoStateChange)==null||h.call(n,O.Stop),clearInterval(m))},sessionId:_,streamId:C}}function me(e){const i={token:e.token||"testKey",distinct_id:e.distinctId||V(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...i,getRandom:()=>Math.random().toString(16).slice(2),track(t,n){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const a={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...n,...i,time:Date.now(),$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerWidth,"Screen Width":window.screen.width||window.innerHeight,"User Agent":navigator.userAgent}}])})};return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1",a).then(r=>r.json()).catch(r=>console.error(r))}}}function ue(e){var n,a,r,o,d;const i=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const g=navigator.platform;return g.toLowerCase().includes("win")?"Windows":g.toLowerCase().includes("mac")?"Mac OS X":g.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${i()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(n=e.presenter)==null?void 0:n.type,agentVoice:{voiceId:(r=(a=e.presenter)==null?void 0:a.voice)==null?void 0:r.voice_id,provider:(d=(o=e.presenter)==null?void 0:o.voice)==null?void 0:d.type}}}function he(e){if(e.presenter){if(e.presenter.type===S.Clip)return{videoType:S.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");return{videoType:S.Talk,source_url:e.presenter.source_url,stream_warmup:!0}}function Z(e,i,t,n,a){return new Promise(async(r,o)=>{let d=a;const g=await le(e.id,he(e),{...i,callbacks:{...i.callbacks,onConnectionStateChange:async l=>{var p,v;if(l===k.Connected)try{d||(d=await t.newChat(e.id),n.track("agent-chat",{event:"created",chat_id:d.id,agent_id:e.id})),g&&r({chat:d,streamingManager:g})}catch(M){console.error(M),o("Cannot create new chat")}else l===k.Fail&&o(new Error("Cannot create connection"));(v=(p=i.callbacks).onConnectionStateChange)==null||v.call(p,l)},onVideoStateChange(l,p){var v,M;n.track("agent-video",{event:l,rtc_stats:p??[]}),(M=(v=i.callbacks).onVideoStateChange)==null||M.call(v,l,p)}},analytics:n}).catch(o)})}function we(e,i,t){return Q(i,t||F).getById(e)}function W(e){let i="";if(e.greetings&&e.greetings.length>0){const t=Math.floor(Math.random()*e.greetings.length);i=e.greetings[t]}else i=`Hi! I'm ${e.preview_name}, welcome to agents. How can I help you?`;return[{content:i,id:D(),role:"assistant",created_at:new Date().toISOString()}]}async function fe(e,i){var L,P,_;const t={messages:[],chatMode:i.mode||$.Functional};let n=-1;const a=i.wsURL||G,r=i.baseURL||F,o=i.mixpanelKey||ee,d=Q(i.auth,r),g=await d.getById(e);t.messages=W(g),(P=(L=i.callbacks).onNewMessage)==null||P.call(L,t.messages);const l=me({token:o,agent:g,...i});l.track("agent-sdk",{event:"loaded",...ue(g)});const p={onMessage:(s,u)=>{var m,y;if("content"in u){const{content:c}=u,h=t.messages[t.messages.length-1];(h==null?void 0:h.role)==="assistant"&&(n<t.messages.length&&(h.content=s===N.Partial?h.content+c:c),s===N.Answer&&(n=t.messages.length)),s===N.Complete&&l.track("agent-message-received",{messages:t.messages.length}),(y=(m=i.callbacks).onNewMessage)==null||y.call(m,t.messages)}}};async function v(){var y,c,h,f,I;const s=await X(i.auth,a,p),{streamingManager:u,chat:m}=await Z(g,i,d,l,t.chat);n=-1,t.messages=W(g),(c=(y=i.callbacks).onNewMessage)==null||c.call(y,t.messages),m!=null&&m.id&&m.id!==((h=t.chat)==null?void 0:h.id)&&((I=(f=i.callbacks).onNewChat)==null||I.call(f,m==null?void 0:m.id)),t.streamingManager=u,t.socketManager=s,t.chat=m,C($.Functional),l.track("agent-chat",{event:"connect",chatId:m.id,agentId:g.id})}async function M(){var s,u,m,y,c;(s=t.socketManager)==null||s.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,t.messages=W(g),(y=(m=i.callbacks).onNewMessage)==null||y.call(m,t.messages),l.track("agent-chat",{event:"disconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id})}async function C(s){var u,m;s!==t.chatMode&&(l.track("agent-mode-change",{mode:s}),t.chatMode=s,t.chatMode!==$.Functional&&await M(),(m=(u=i.callbacks).onModeChange)==null||m.call(u,s))}return{agent:g,starterMessages:((_=g.knowledge)==null?void 0:_.starter_message)||[],connect:v,disconnect:M,changeMode:C,async reconnect(){if(!t.chat)return v();const s=await X(i.auth,a,p),{streamingManager:u,chat:m}=await Z(g,i,d,l,t.chat);t.streamingManager=u,t.socketManager=s,C($.Functional),l.track("agent-chat",{event:"reconnect",chatId:m.id,agentId:g.id})},async chat(s,u=!1){var m,y,c,h,f,I;try{if(s.length>=800)throw new Error("Message cannot be more than 800 characters");const T=Date.now();if(t.messages.push({id:D(),role:"user",content:s,created_at:new Date(T).toISOString()}),(y=(m=i.callbacks).onNewMessage)==null||y.call(m,t.messages),s.length===0)throw new Error("Message cannot be empty");if(t.chatMode===$.Maintenance)throw new Error("Chat is in maintenance mode");if(t.chatMode!==$.TextOnly){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");if(!t.chat)throw new Error("Chat is not initialized")}else t.chat||(t.chat=await d.newChat(g.id));const A=await d.chat(g.id,t.chat.id,{sessionId:(c=t.streamingManager)==null?void 0:c.sessionId,streamId:(h=t.streamingManager)==null?void 0:h.streamId,messages:t.messages,chatMode:t.chatMode,append_chat:u});return l.track("agent-message-send",{event:"success",messages:t.messages.length+1}),t.messages.push({id:D(),role:"assistant",content:A.result??"",created_at:new Date().toISOString(),matches:A.matches}),A.result&&l.track("agent-message-received",{latency:Date.now()-T,messages:t.messages.length}),(I=(f=i.callbacks).onNewMessage)==null||I.call(f,t.messages),A}catch(T){throw l.track("agent-message-send",{event:"error",messages:t.messages.length}),T}},rate(s,u,m){var h,f,I,T;const y=t.messages.find(A=>A.id===s);if(t.chat){if(!y)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const c=((h=y.matches)==null?void 0:h.map(A=>[A.document_id,A.id]))??[];return l.track("agent-rate",{event:m?"update":"create",thumb:u===1?"up":"down",knowledge_id:((f=g.knowledge)==null?void 0:f.id)??"",matches:c,score:u}),m?d.updateRating(g.id,t.chat.id,m,{knowledge_id:((I=g.knowledge)==null?void 0:I.id)??"",message_id:s,matches:c,score:u}):d.createRating(g.id,t.chat.id,{knowledge_id:((T=g.knowledge)==null?void 0:T.id)??"",message_id:s,matches:c,score:u})},deleteRate(s){var u;if(!t.chat)throw new Error("Chat is not initialized");return l.track("agent-rate-delete",{type:"text",chat_id:(u=t.chat)==null?void 0:u.id,id:s}),d.deleteRating(g.id,t.chat.id,s)},speak(s){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function u(){if(g.presenter){if(s.type==="text")return{type:"text",provider:s.provider?s.provider:g.presenter.voice,input:s.input,ssml:s.ssml||!1};if(s.type==="audio")return{type:"audio",audio_url:s.audio_url}}else throw new Error("Presenter is not initialized");throw new Error("Invalid payload")}const m=u();return l.track("agent-speak",m),t.streamingManager.speak({script:m})}}}w.ChatMode=$,w.ChatProgress=N,w.ConnectionState=k,w.DocumentType=U,w.KnowledgeType=x,w.PlanGroup=j,w.Providers=B,w.RateState=z,w.StreamEvents=R,w.StreamingState=O,w.Subject=H,w.UserPlan=b,w.VideoType=S,w.VoiceAccess=J,w.createAgentManager=fe,w.getAgent=we,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
1
+ (function(w,b){typeof exports=="object"&&typeof module<"u"?b(exports):typeof define=="function"&&define.amd?define(["exports"],b):(w=typeof globalThis<"u"?globalThis:w||self,b(w.index={}))})(this,function(w){"use strict";var b=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(b||{}),j=(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))(j||{}),z=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(z||{}),$=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))($||{}),N=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(N||{}),H=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(H||{}),x=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(x||{}),U=(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))(U||{}),C=(e=>(e.Clip="clip",e.Talk="talk",e))(C||{}),O=(e=>(e.Start="START",e.Stop="STOP",e))(O||{}),R=(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))(R||{}),k=(e=>(e[e.New=0]="New",e[e.Fail=1]="Fail",e[e.Connected=2]="Connected",e[e.Connecting=3]="Connecting",e[e.Terminating=4]="Terminating",e))(k||{}),B=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(B||{}),J=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(J||{});const F="https://api.d-id.com",G="wss://notifications.d-id.com",ee="79f81a83a67430be2bc0fd61042b8faa",D=()=>Math.random().toString(16).slice(2);function V(){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 te=D();function q(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}.${V()}_${te}`;throw new Error(`Unknown auth type: ${e}`)}function K(e,i=F){const t=async(n,a)=>{const r=await fetch(i+(n!=null&&n.startsWith("/")?n:`/${n}`),{...a,headers:{...a==null?void 0:a.headers,Authorization:q(e),"Content-Type":"application/json"}});if(!r.ok){let o=await r.text().catch(()=>"Failed to fetch");throw new Error(o)}return r.json()};return{get(n,a){return t(n,{...a,method:"GET"})},post(n,a,r){return t(n,{...r,body:JSON.stringify(a),method:"POST"})},delete(n,a,r){return t(n,{...r,body:JSON.stringify(a),method:"DELETE"})},patch(n,a,r){return t(n,{...r,body:JSON.stringify(a),method:"PATCH"})}}}function Q(e,i=F){const t=K(e,`${i}/agents`);return{create(n,a){return t.post("/",n,a)},getAgents(n,a){return t.get(`/${n?`?tag=${n}`:""}`,a).then(r=>r??[])},getById(n,a){return t.get(`/${n}`,a)},delete(n,a){return t.delete(`/${n}`,void 0,a)},update(n,a,r){return t.patch(`/${n}`,a,r)},newChat(n,a){return t.post(`/${n}/chat`,void 0,a)},chat(n,a,r,o){return t.post(`/${n}/chat/${a}`,r,o)},createRating(n,a,r,o){return t.post(`/${n}/chat/${a}/ratings`,r,o)},updateRating(n,a,r,o,d){return t.patch(`/${n}/chat/${a}/ratings/${r}`,o,d)},deleteRating(n,a,r,o){return t.delete(`/${n}/chat/${a}/ratings/${r}`,o)}}}const ne=e=>new Promise(i=>setTimeout(i,e));function ae(e){return new Promise((i,t)=>{const{callbacks:n,host:a,auth:r}=e,{onMessage:o=null,onOpen:d=null,onClose:g=null,onError:l=null}=n||{},f=new WebSocket(`${a}?authorization=${q(r)}`);f.onmessage=o,f.onclose=g,f.onerror=p=>{console.error(p),l==null||l("Websocket failed to connect",p),t(p)},f.onopen=p=>{d==null||d(p),i(f)}})}async function ie(e){const{retries:i=1}=e;let t=null;for(let n=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;n++)try{t=await ae(e)}catch(a){if(n===i)throw a;await ne(n*500)}return t}async function X(e,i,t){const n=t!=null&&t.onMessage?[t.onMessage]:[],a=await ie({auth:e,host:i,callbacks:{onError:t==null?void 0:t.onError,onMessage:r=>{const o=JSON.parse(r.data);n.forEach(d=>d(o.event,o))}}});return{socket:a,disconnect:()=>a.close(),subscribeToEvents:r=>n.push(r)}}function re(e,i,t){const n=K(e,`${i}/agents/${t}`);return{createStream(a){return n.post("/streams",{driver_id:a.driver_id,presenter_id:a.presenter_id,compatibility_mode:a.compatibility_mode,stream_warmup:a.stream_warmup,type:C.Clip})},startConnection(a,r,o){return n.post(`/streams/${a}/sdp`,{session_id:o,answer:r,type:C.Clip})},addIceCandidate(a,r,o){return n.post(`/streams/${a}/ice`,{session_id:o,...r,type:C.Clip})},sendStreamRequest(a,r,o){return n.post(`/streams/${a}`,{session_id:r,...o,type:C.Clip})},close(a,r){return n.delete(`/streams/${a}`,{session_id:r,type:C.Clip})}}}function se(e,i,t){const n=K(e,`${i}/agents/${t}`);return{createStream(a,r){return n.post("/streams",{source_url:a.source_url,driver_url:a.driver_url,face:a.face,config:a.config,stream_warmup:a.stream_warmup,type:C.Talk},r)},startConnection(a,r,o,d){return n.post(`/streams/${a}/sdp`,{session_id:o,answer:r,type:C.Talk},d)},addIceCandidate(a,r,o,d){return n.post(`/streams/${a}/ice`,{session_id:o,...r,type:C.Talk},d)},sendStreamRequest(a,r,o,d){return n.post(`/streams/${a}`,{session_id:r,...o,type:C.Talk},d)},close(a,r,o){return n.delete(`/streams/${a}`,{session_id:r,type:C.Talk},o)}}}function oe(e,i){return e.map((t,n)=>n===0?i?{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-i.bytesReceived,packetsReceived:t.packetsReceived-i.packetsReceived,packetsLost:t.packetsLost-i.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived,packetsReceived:t.packetsReceived,packetsLost:t.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-e[n-1].bytesReceived,packetsReceived:t.packetsReceived-e[n-1].packetsReceived,packetsLost:t.packetsLost-e[n-1].packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond})}let Y=!1;const E=(e,i)=>Y&&console.log(e,i),ce=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function de(e){switch(e){case"connected":return k.Connected;case"checking":return k.Connecting;case"failed":return k.Fail;case"new":case"closed":case"disconnected":default:return k.New}}function ge(e,i){let t=[],n=0,a=0,r=0,o;return setInterval(()=>{e.getStats().then(g=>{g.forEach(l=>{if(l.type==="inbound-rtp"&&l.kind==="video"){if(a=t.length-1,l&&t[a]){const f=l.bytesReceived,p=t[a].bytesReceived,M=o;let y;if(o=f-p>0,r=o?0:++r,M!==o)if(o)n=t.length,i==null||i(O.Start,y);else{const L=t.slice(n),P=n===0?void 0:t[n-1];y=oe(L,P),y=y.sort((_,s)=>s.packetsLost-_.packetsLost).slice(0,5)}!o&&r===3&&(i==null||i(O.Stop,y))}t.push(l)}})})},500)}async function le(e,i,{debug:t=!1,callbacks:n,auth:a,analytics:r,baseURL:o=F}){Y=t;let d;const{startConnection:g,sendStreamRequest:l,close:f,createStream:p,addIceCandidate:M}=i.videoType===C.Clip?re(a,o,e):se(a,o,e),{id:y,offer:L,ice_servers:P,session_id:_}=await p(i),s=new ce({iceServers:P}),u=s.createDataChannel("JanusDataChannel");if(!_)throw new Error("Could not create session_id");const m=ge(s,n.onVideoStateChange);s.onicecandidate=c=>{E("peerConnection.onicecandidate",c),c.candidate&&c.candidate.sdpMid&&c.candidate.sdpMLineIndex!==null?M(y,{candidate:c.candidate.candidate,sdpMid:c.candidate.sdpMid,sdpMLineIndex:c.candidate.sdpMLineIndex},_):M(y,{candidate:null},_)},s.oniceconnectionstatechange=()=>{var h;E("peerConnection.oniceconnectionstatechange => "+s.iceConnectionState);const c=de(s.iceConnectionState);c===k.Connected?d=setTimeout(()=>{var S;(S=n.onConnectionStateChange)==null||S.call(n,k.Connected)},5e3):(clearTimeout(d),(h=n.onConnectionStateChange)==null||h.call(n,c))},s.ontrack=c=>{var h;E("peerConnection.ontrack",c),(h=n.onSrcObjectReady)==null||h.call(n,c.streams[0])},u.onmessage=c=>{var h;if(u.readyState==="open"){const[S,I]=c.data.split(":");S===R.StreamFailed||S===R.StreamDone?clearInterval(m):S===R.StreamReady&&(clearTimeout(d),(h=n.onConnectionStateChange)==null||h.call(n,k.Connected))}},await s.setRemoteDescription(L),E("set remote description OK");const v=await s.createAnswer();return E("create answer OK"),await s.setLocalDescription(v),E("set local description OK"),await g(y,v,_),E("start connection OK"),{speak(c){return l(y,_,c)},async disconnect(){var c,h;y&&(s&&(s.close(),s.oniceconnectionstatechange=null,s.onnegotiationneeded=null,s.onicecandidate=null,s.ontrack=null),await f(y,_).catch(S=>{}),(c=n.onConnectionStateChange)==null||c.call(n,k.New),(h=n.onVideoStateChange)==null||h.call(n,O.Stop),clearInterval(m))},sessionId:_,streamId:y}}function me(e){const i={token:e.token||"testKey",distinct_id:e.distinctId||V(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...i,getRandom:()=>Math.random().toString(16).slice(2),track(t,n){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const a={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...n,...i,time:Date.now(),$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerWidth,"Screen Width":window.screen.width||window.innerHeight,"User Agent":navigator.userAgent}}])})};return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1",a).then(r=>r.json()).catch(r=>console.error(r))}}}function ue(e){var n,a,r,o,d;const i=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const g=navigator.platform;return g.toLowerCase().includes("win")?"Windows":g.toLowerCase().includes("mac")?"Mac OS X":g.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${i()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(n=e.presenter)==null?void 0:n.type,agentVoice:{voiceId:(r=(a=e.presenter)==null?void 0:a.voice)==null?void 0:r.voice_id,provider:(d=(o=e.presenter)==null?void 0:o.voice)==null?void 0:d.type}}}function he(e){if(e.presenter){if(e.presenter.type===C.Clip)return{videoType:C.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");return{videoType:C.Talk,source_url:e.presenter.source_url,stream_warmup:!0}}function Z(e,i,t,n,a){return new Promise(async(r,o)=>{let d=a;const g=await le(e.id,he(e),{...i,callbacks:{...i.callbacks,onConnectionStateChange:async l=>{var f,p;if(l===k.Connected)try{d||(d=await t.newChat(e.id),n.track("agent-chat",{event:"created",chat_id:d.id,agent_id:e.id})),g&&r({chat:d,streamingManager:g})}catch(M){console.error(M),o("Cannot create new chat")}else l===k.Fail&&o(new Error("Cannot create connection"));(p=(f=i.callbacks).onConnectionStateChange)==null||p.call(f,l)},onVideoStateChange(l,f){var p,M;n.track("agent-video",{event:l,rtc_stats:f??[]}),(M=(p=i.callbacks).onVideoStateChange)==null||M.call(p,l,f)}},analytics:n}).catch(o)})}function we(e,i,t){return Q(i,t||F).getById(e)}function W(e){let i="";if(e.greetings&&e.greetings.length>0){const t=Math.floor(Math.random()*e.greetings.length);i=e.greetings[t]}else i=`Hi! I'm ${e.preview_name}, welcome to agents. How can I help you?`;return[{content:i,id:D(),role:"assistant",created_at:new Date().toISOString()}]}async function fe(e,i){var L,P,_;const t={messages:[],chatMode:i.mode||$.Functional};let n=-1;const a=i.wsURL||G,r=i.baseURL||F,o=i.mixpanelKey||ee,d=Q(i.auth,r),g=await d.getById(e);t.messages=W(g),(P=(L=i.callbacks).onNewMessage)==null||P.call(L,t.messages);const l=me({token:o,agent:g,...i});l.track("agent-sdk",{event:"loaded",...ue(g)});const f={onMessage:(s,u)=>{var m,v;if("content"in u){const{content:c}=u,h=t.messages[t.messages.length-1];(h==null?void 0:h.role)==="assistant"&&(n<t.messages.length&&(h.content=s===N.Partial?h.content+c:c),s===N.Answer&&(n=t.messages.length)),s===N.Complete&&l.track("agent-message-received",{messages:t.messages.length}),(v=(m=i.callbacks).onNewMessage)==null||v.call(m,t.messages)}else if([R.StreamVideoCreated,R.StreamVideoDone,R.StreamVideoError,R.StreamVideoRejected].includes(s)){const c=s.split("/")[1];l.track("agent-video",{...u,event:c})}}};async function p(){var v,c,h,S,I;const s=await X(i.auth,a,f),{streamingManager:u,chat:m}=await Z(g,i,d,l,t.chat);n=-1,t.messages=W(g),(c=(v=i.callbacks).onNewMessage)==null||c.call(v,t.messages),m!=null&&m.id&&m.id!==((h=t.chat)==null?void 0:h.id)&&((I=(S=i.callbacks).onNewChat)==null||I.call(S,m==null?void 0:m.id)),t.streamingManager=u,t.socketManager=s,t.chat=m,y($.Functional),l.track("agent-chat",{event:"connect",chatId:m.id,agentId:g.id})}async function M(){var s,u,m,v,c;(s=t.socketManager)==null||s.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,t.messages=W(g),(v=(m=i.callbacks).onNewMessage)==null||v.call(m,t.messages),l.track("agent-chat",{event:"disconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:g.id})}async function y(s){var u,m;s!==t.chatMode&&(l.track("agent-mode-change",{mode:s}),t.chatMode=s,t.chatMode!==$.Functional&&await M(),(m=(u=i.callbacks).onModeChange)==null||m.call(u,s))}return{agent:g,starterMessages:((_=g.knowledge)==null?void 0:_.starter_message)||[],connect:p,disconnect:M,changeMode:y,async reconnect(){if(!t.chat)return p();const s=await X(i.auth,a,f),{streamingManager:u,chat:m}=await Z(g,i,d,l,t.chat);t.streamingManager=u,t.socketManager=s,y($.Functional),l.track("agent-chat",{event:"reconnect",chatId:m.id,agentId:g.id})},async chat(s,u=!1){var m,v,c,h,S,I;try{if(s.length>=800)throw new Error("Message cannot be more than 800 characters");const T=Date.now();if(t.messages.push({id:D(),role:"user",content:s,created_at:new Date(T).toISOString()}),(v=(m=i.callbacks).onNewMessage)==null||v.call(m,t.messages),s.length===0)throw new Error("Message cannot be empty");if(t.chatMode===$.Maintenance)throw new Error("Chat is in maintenance mode");if(t.chatMode!==$.TextOnly){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");if(!t.chat)throw new Error("Chat is not initialized")}else t.chat||(t.chat=await d.newChat(g.id));const A=await d.chat(g.id,t.chat.id,{sessionId:(c=t.streamingManager)==null?void 0:c.sessionId,streamId:(h=t.streamingManager)==null?void 0:h.streamId,messages:t.messages,chatMode:t.chatMode,append_chat:u});return l.track("agent-message-send",{event:"success",messages:t.messages.length+1}),t.messages.push({id:D(),role:"assistant",content:A.result??"",created_at:new Date().toISOString(),matches:A.matches}),A.result&&l.track("agent-message-received",{latency:Date.now()-T,messages:t.messages.length}),(I=(S=i.callbacks).onNewMessage)==null||I.call(S,t.messages),A}catch(T){throw l.track("agent-message-send",{event:"error",messages:t.messages.length}),T}},rate(s,u,m){var h,S,I,T;const v=t.messages.find(A=>A.id===s);if(t.chat){if(!v)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const c=((h=v.matches)==null?void 0:h.map(A=>[A.document_id,A.id]))??[];return l.track("agent-rate",{event:m?"update":"create",thumb:u===1?"up":"down",knowledge_id:((S=g.knowledge)==null?void 0:S.id)??"",matches:c,score:u}),m?d.updateRating(g.id,t.chat.id,m,{knowledge_id:((I=g.knowledge)==null?void 0:I.id)??"",message_id:s,matches:c,score:u}):d.createRating(g.id,t.chat.id,{knowledge_id:((T=g.knowledge)==null?void 0:T.id)??"",message_id:s,matches:c,score:u})},deleteRate(s){var u;if(!t.chat)throw new Error("Chat is not initialized");return l.track("agent-rate-delete",{type:"text",chat_id:(u=t.chat)==null?void 0:u.id,id:s}),d.deleteRating(g.id,t.chat.id,s)},speak(s){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function u(){if(g.presenter){if(s.type==="text")return{type:"text",provider:s.provider?s.provider:g.presenter.voice,input:s.input,ssml:s.ssml||!1};if(s.type==="audio")return{type:"audio",audio_url:s.audio_url}}else throw new Error("Presenter is not initialized");throw new Error("Invalid payload")}const m=u();return l.track("agent-speak",m),t.streamingManager.speak({script:m})}}}w.ChatMode=$,w.ChatProgress=N,w.ConnectionState=k,w.DocumentType=U,w.KnowledgeType=x,w.PlanGroup=j,w.Providers=B,w.RateState=z,w.StreamEvents=R,w.StreamingState=O,w.Subject=H,w.UserPlan=b,w.VideoType=C,w.VoiceAccess=J,w.createAgentManager=fe,w.getAgent=we,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
@@ -1,6 +1,6 @@
1
1
  import { SupportedStreamScipt } from '../../StreamScript';
2
2
  import { Auth } from '../../auth';
3
- import { ConnectionState, SendStreamPayloadResponse, StreamingState } from '../../stream';
3
+ import { ConnectionState, SendStreamPayloadResponse, StreamEvents, StreamingState } from '../../stream';
4
4
  import { Agent } from './agent';
5
5
  import { ChatMode, ChatResponse, Message, RatingEntity } from './chat';
6
6
  /**
@@ -28,7 +28,7 @@ export declare enum ChatProgress {
28
28
  */
29
29
  Complete = "done"
30
30
  }
31
- export type ChatProgressCallback = (progress: ChatProgress, data: any) => void;
31
+ export type ChatProgressCallback = (progress: ChatProgress | StreamEvents, data: any) => void;
32
32
  export type ConnectionStateChangeCallback = (state: ConnectionState) => void;
33
33
  export type VideoStateChangeCallback = (state: StreamingState, data: any) => void;
34
34
  interface ManagerCallbacks {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@d-id/client-sdk",
3
3
  "private": false,
4
- "version": "1.0.19-beta.77",
4
+ "version": "1.0.19-beta.79",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {