@d-id/client-sdk 1.0.19-beta.97 → 1.0.19-beta.99

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,17 +1,17 @@
1
- var G = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(G || {}), ee = /* @__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))(ee || {}), te = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(te || {}), k = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e))(k || {}), D = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(D || {}), ne = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(ne || {}), re = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(re || {}), ae = /* @__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))(ae || {}), v = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(v || {}), N = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(N || {}), $ = /* @__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))($ || {}), 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 || {}), ie = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(ie || {}), se = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(se || {});
2
- const L = "https://api.d-id.com", oe = "wss://notifications.d-id.com", ce = "79f81a83a67430be2bc0fd61042b8faa", F = () => Math.random().toString(16).slice(2);
3
- function Q() {
1
+ var Z = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(Z || {}), G = /* @__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))(G || {}), ee = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(ee || {}), $ = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e))($ || {}), D = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(D || {}), te = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(te || {}), ne = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(ne || {}), re = /* @__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))(re || {}), v = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(v || {}), N = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(N || {}), A = /* @__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))(A || {}), I = /* @__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))(I || {}), ae = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(ae || {}), ie = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(ie || {});
2
+ const L = "https://api.d-id.com", se = "wss://notifications.d-id.com", oe = "79f81a83a67430be2bc0fd61042b8faa", F = () => Math.random().toString(16).slice(2);
3
+ function q() {
4
4
  let e = window.localStorage.getItem("did_external_key_id");
5
5
  return e || (e = Math.random().toString(16).slice(2), window.localStorage.setItem("did_external_key_id", e)), e;
6
6
  }
7
- let de = F();
8
- function X(e) {
7
+ let ce = F();
8
+ function Q(e) {
9
9
  if (e.type === "bearer")
10
10
  return `Bearer ${e.token}`;
11
11
  if (e.type === "basic")
12
12
  return `Basic ${btoa(`${e.username}:${e.password}`)}`;
13
13
  if (e.type === "key")
14
- return `Client-Key ${e.clientKey}.${Q()}_${de}`;
14
+ return `Client-Key ${e.clientKey}.${q()}_${ce}`;
15
15
  throw new Error(`Unknown auth type: ${e}`);
16
16
  }
17
17
  function V(e, i = L, t) {
@@ -20,7 +20,7 @@ function V(e, i = L, t) {
20
20
  ...n,
21
21
  headers: {
22
22
  ...n == null ? void 0 : n.headers,
23
- Authorization: X(e),
23
+ Authorization: Q(e),
24
24
  "Content-Type": "application/json"
25
25
  }
26
26
  });
@@ -64,7 +64,7 @@ function V(e, i = L, t) {
64
64
  }
65
65
  };
66
66
  }
67
- function Y(e, i = L, t) {
67
+ function X(e, i = L, t) {
68
68
  const a = V(e, `${i}/agents`, t);
69
69
  return {
70
70
  create(r, n) {
@@ -102,8 +102,8 @@ function Y(e, i = L, t) {
102
102
  }
103
103
  };
104
104
  }
105
- const ge = (e) => new Promise((i) => setTimeout(i, e));
106
- function le(e) {
105
+ const de = (e) => new Promise((i) => setTimeout(i, e));
106
+ function ge(e) {
107
107
  return new Promise((i, t) => {
108
108
  const {
109
109
  callbacks: a,
@@ -113,32 +113,32 @@ function le(e) {
113
113
  onMessage: s = null,
114
114
  onOpen: o = null,
115
115
  onClose: c = null,
116
- onError: u = null
117
- } = a || {}, y = new WebSocket(`${r}?authorization=${X(n)}`);
118
- y.onmessage = s, y.onclose = c, y.onerror = (M) => {
119
- console.error(M), u == null || u("Websocket failed to connect", M), t(M);
120
- }, y.onopen = (M) => {
121
- o == null || o(M), i(y);
116
+ onError: h = null
117
+ } = a || {}, M = new WebSocket(`${r}?authorization=${Q(n)}`);
118
+ M.onmessage = s, M.onclose = c, M.onerror = (y) => {
119
+ console.error(y), h == null || h("Websocket failed to connect", y), t(y);
120
+ }, M.onopen = (y) => {
121
+ o == null || o(y), i(M);
122
122
  };
123
123
  });
124
124
  }
125
- async function ue(e) {
125
+ async function le(e) {
126
126
  const {
127
127
  retries: i = 1
128
128
  } = e;
129
129
  let t = null;
130
130
  for (let a = 0; (t == null ? void 0 : t.readyState) !== WebSocket.OPEN; a++)
131
131
  try {
132
- t = await le(e);
132
+ t = await ge(e);
133
133
  } catch (r) {
134
134
  if (a === i)
135
135
  throw r;
136
- await ge(a * 500);
136
+ await de(a * 500);
137
137
  }
138
138
  return t;
139
139
  }
140
- async function j(e, i, t) {
141
- const a = t != null && t.onMessage ? [t.onMessage] : [], r = await ue({
140
+ async function J(e, i, t) {
141
+ const a = t != null && t.onMessage ? [t.onMessage] : [], r = await le({
142
142
  auth: e,
143
143
  host: i,
144
144
  callbacks: {
@@ -155,7 +155,7 @@ async function j(e, i, t) {
155
155
  subscribeToEvents: (n) => a.push(n)
156
156
  };
157
157
  }
158
- function me(e, i, t, a) {
158
+ function ue(e, i, t, a) {
159
159
  const r = V(e, `${i}/agents/${t}`, a);
160
160
  return {
161
161
  createStream(n) {
@@ -196,7 +196,7 @@ function me(e, i, t, a) {
196
196
  }
197
197
  };
198
198
  }
199
- function he(e, i, t, a) {
199
+ function me(e, i, t, a) {
200
200
  const r = V(e, `${i}/agents/${t}`, a);
201
201
  return {
202
202
  createStream(n, s) {
@@ -240,24 +240,24 @@ function he(e, i, t, a) {
240
240
  }
241
241
  };
242
242
  }
243
- let Z = !1;
244
- const R = (e, i) => Z && console.log(e, i), we = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
245
- function q(e) {
243
+ let Y = !1;
244
+ const E = (e, i) => Y && console.log(e, i), he = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
245
+ function j(e) {
246
246
  switch (e) {
247
247
  case "connected":
248
- return S.Connected;
248
+ return I.Connected;
249
249
  case "checking":
250
- return S.Connecting;
250
+ return I.Connecting;
251
251
  case "failed":
252
- return S.Fail;
252
+ return I.Fail;
253
253
  case "new":
254
254
  case "closed":
255
255
  case "disconnected":
256
256
  default:
257
- return S.New;
257
+ return I.New;
258
258
  }
259
259
  }
260
- function fe() {
260
+ function we() {
261
261
  let e = 0;
262
262
  return (i) => {
263
263
  for (const t of i.values())
@@ -268,135 +268,134 @@ function fe() {
268
268
  return !1;
269
269
  };
270
270
  }
271
- function pe(e, i, t) {
272
- const r = Math.max(Math.ceil(10), 1);
273
- let n = 0, s = !1;
274
- const o = fe();
271
+ function fe(e, i) {
272
+ const a = Math.max(Math.ceil(10), 1);
273
+ let r = 0, n = !1;
274
+ const s = we();
275
275
  return setInterval(async () => {
276
- const c = await e.getStats();
277
- o(c) ? (n = 0, s || (i == null || i(N.Start), s = !0)) : s && (n++, n >= r && (i == null || i(N.Stop), s = !1));
276
+ const o = await e.getStats();
277
+ s(o) ? (r = 0, n || (i == null || i(N.Start), n = !0)) : n && (r++, r >= a && (i == null || i(N.Stop), n = !1));
278
278
  }, 100);
279
279
  }
280
- async function Me(e, i, {
280
+ async function pe(e, i, {
281
281
  debug: t = !1,
282
282
  callbacks: a,
283
283
  auth: r,
284
284
  analytics: n,
285
285
  baseURL: s = L
286
286
  }) {
287
- Z = t;
287
+ Y = t;
288
288
  let o;
289
289
  const {
290
290
  startConnection: c,
291
- sendStreamRequest: u,
292
- close: y,
293
- createStream: M,
294
- addIceCandidate: E
295
- } = i.videoType === v.Clip ? me(r, s, e, a.onError) : he(r, s, e, a.onError), {
296
- id: _,
291
+ sendStreamRequest: h,
292
+ close: M,
293
+ createStream: y,
294
+ addIceCandidate: _
295
+ } = i.videoType === v.Clip ? ue(r, s, e, a.onError) : me(r, s, e, a.onError), {
296
+ id: S,
297
297
  offer: K,
298
- ice_servers: P,
299
- session_id: I
300
- } = await M(i), f = new we({
301
- iceServers: P
298
+ ice_servers: O,
299
+ session_id: k
300
+ } = await y(i), f = new he({
301
+ iceServers: O
302
302
  }), d = f.createDataChannel("JanusDataChannel");
303
- if (!I)
303
+ if (!k)
304
304
  throw new Error("Could not create session_id");
305
- const m = pe(f, a.onVideoStateChange);
305
+ const u = fe(f, a.onVideoStateChange);
306
306
  f.onicecandidate = (g) => {
307
- R("peerConnection.onicecandidate", g), g.candidate && g.candidate.sdpMid && g.candidate.sdpMLineIndex !== null ? E(_, {
307
+ E("peerConnection.onicecandidate", g), g.candidate && g.candidate.sdpMid && g.candidate.sdpMLineIndex !== null ? _(S, {
308
308
  candidate: g.candidate.candidate,
309
309
  sdpMid: g.candidate.sdpMid,
310
310
  sdpMLineIndex: g.candidate.sdpMLineIndex
311
- }, I) : E(_, {
311
+ }, k) : _(S, {
312
312
  candidate: null
313
- }, I);
313
+ }, k);
314
314
  }, f.oniceconnectionstatechange = () => {
315
- var h;
316
- R("peerConnection.oniceconnectionstatechange => " + f.iceConnectionState);
317
- const g = q(f.iceConnectionState);
318
- g === S.Connected ? o = setTimeout(() => {
315
+ var m;
316
+ E("peerConnection.oniceconnectionstatechange => " + f.iceConnectionState);
317
+ const g = j(f.iceConnectionState);
318
+ g === I.Connected ? o = setTimeout(() => {
319
319
  var w;
320
- (w = a.onConnectionStateChange) == null || w.call(a, S.Connected);
321
- }, 5e3) : (clearTimeout(o), (h = a.onConnectionStateChange) == null || h.call(a, g));
320
+ (w = a.onConnectionStateChange) == null || w.call(a, I.Connected);
321
+ }, 5e3) : (clearTimeout(o), (m = a.onConnectionStateChange) == null || m.call(a, g));
322
322
  }, f.ontrack = (g) => {
323
- var h;
324
- R("peerConnection.ontrack", g), (h = a.onSrcObjectReady) == null || h.call(a, g.streams[0]);
323
+ var m;
324
+ E("peerConnection.ontrack", g), (m = a.onSrcObjectReady) == null || m.call(a, g.streams[0]);
325
325
  }, d.onmessage = (g) => {
326
- var h;
326
+ var m;
327
327
  if (d.readyState === "open") {
328
328
  const [w, p] = g.data.split(":");
329
- w === $.StreamReady && (clearTimeout(o), (h = a.onConnectionStateChange) == null || h.call(a, S.Connected));
329
+ w === A.StreamReady && (clearTimeout(o), (m = a.onConnectionStateChange) == null || m.call(a, I.Connected));
330
330
  }
331
- }, await f.setRemoteDescription(K), R("set remote description OK");
331
+ }, await f.setRemoteDescription(K), E("set remote description OK");
332
332
  const l = await f.createAnswer();
333
- return R("create answer OK"), await f.setLocalDescription(l), R("set local description OK"), await c(_, l, I), R("start connection OK"), {
333
+ return E("create answer OK"), await f.setLocalDescription(l), E("set local description OK"), await c(S, l, k), E("start connection OK"), {
334
334
  /**
335
335
  * Method to send request to server to get clip or talk depend on you payload
336
336
  * @param payload
337
337
  */
338
338
  speak(g) {
339
- return u(_, I, g);
339
+ return h(S, k, g);
340
340
  },
341
341
  /**
342
342
  * Method to close RTC connection
343
343
  */
344
344
  async disconnect() {
345
- var g, h, w;
346
- if (_) {
345
+ var g, m, w;
346
+ if (S) {
347
347
  if (f) {
348
- if (q(f.iceConnectionState) === S.New) {
349
- (g = a.onVideoStateChange) == null || g.call(a, N.Stop), clearInterval(m);
348
+ if (j(f.iceConnectionState) === I.New) {
349
+ (g = a.onVideoStateChange) == null || g.call(a, N.Stop), clearInterval(u);
350
350
  return;
351
351
  }
352
352
  f.close(), f.oniceconnectionstatechange = null, f.onnegotiationneeded = null, f.onicecandidate = null, f.ontrack = null;
353
353
  }
354
354
  try {
355
- await y(_, I).catch((p) => {
355
+ await M(S, k).catch((p) => {
356
356
  });
357
357
  } catch (p) {
358
- R("Error on close stream connection", p);
358
+ E("Error on close stream connection", p);
359
359
  }
360
- (h = a.onConnectionStateChange) == null || h.call(a, S.New), (w = a.onVideoStateChange) == null || w.call(a, N.Stop), clearInterval(m);
360
+ (m = a.onConnectionStateChange) == null || m.call(a, I.New), (w = a.onVideoStateChange) == null || w.call(a, N.Stop), clearInterval(u);
361
361
  }
362
362
  },
363
363
  /**
364
364
  * Session identifier information, should be returned in the body of all streaming requests
365
365
  */
366
- sessionId: I,
366
+ sessionId: k,
367
367
  /**
368
368
  * Id of current RTC stream
369
369
  */
370
- streamId: _
370
+ streamId: S
371
371
  };
372
372
  }
373
373
  function ye(e) {
374
- var r, n;
375
- const t = ((r = window == null ? void 0 : window.location) == null ? void 0 : r.hostname) === "studio.d-id.com" || ((n = window == null ? void 0 : window.location) == null ? void 0 : n.hostname) === "studio-staging.d-id.com" ? "studio" : window != null && window.hasOwnProperty("DID_AGENTS_API") ? "agents-ui" : "agents-sdk", a = {
374
+ const i = window != null && window.hasOwnProperty("DID_AGENTS_API") ? "agents-ui" : "agents-sdk", t = {
376
375
  token: e.token || "testKey",
377
- distinct_id: e.distinctId || Q(),
376
+ distinct_id: e.distinctId || q(),
378
377
  isEnabled: e.isEnabled ?? !0,
379
378
  agentId: e.agent.id,
380
379
  owner_id: e.agent.owner_id ?? ""
381
380
  };
382
381
  return {
383
- ...a,
382
+ ...t,
384
383
  getRandom: () => Math.random().toString(16).slice(2),
385
- track(s, o) {
384
+ track(a, r) {
386
385
  if (!this.isEnabled)
387
386
  return Promise.reject("MixPanel analytics is disabled on creation");
388
- const c = {
387
+ const n = {
389
388
  method: "POST",
390
389
  headers: {
391
390
  "Content-Type": "application/x-www-form-urlencoded"
392
391
  },
393
392
  body: new URLSearchParams({
394
393
  data: JSON.stringify([{
395
- event: s,
394
+ event: a,
396
395
  properties: {
397
- ...o,
398
- ...a,
399
- source: t,
396
+ ...r,
397
+ ...t,
398
+ source: i,
400
399
  time: Date.now(),
401
400
  $insert_id: this.getRandom(),
402
401
  origin: window.location.href,
@@ -407,11 +406,11 @@ function ye(e) {
407
406
  }])
408
407
  })
409
408
  };
410
- return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1", c).then((u) => u.json()).catch((u) => console.error(u));
409
+ return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1", n).then((s) => s.json()).catch((s) => console.error(s));
411
410
  }
412
411
  };
413
412
  }
414
- function ve(e) {
413
+ function Me(e) {
415
414
  var a, r, n, s, o;
416
415
  const i = () => /Mobi|Android/i.test(navigator.userAgent) ? "Mobile" : "Desktop";
417
416
  return {
@@ -429,8 +428,8 @@ function ve(e) {
429
428
  }
430
429
  };
431
430
  }
432
- const Ce = 1080;
433
- function _e(e, i) {
431
+ const ve = 1080;
432
+ function Ce(e, i) {
434
433
  if (e.presenter) {
435
434
  if (e.presenter.type === v.Clip)
436
435
  return {
@@ -441,7 +440,7 @@ function _e(e, i) {
441
440
  };
442
441
  } else
443
442
  throw new Error("Presenter is not initialized");
444
- const t = i || (e.presenter.stitch ? Ce : void 0);
443
+ const t = i || (e.presenter.stitch ? ve : void 0);
445
444
  return {
446
445
  videoType: v.Talk,
447
446
  source_url: e.presenter.source_url,
@@ -454,40 +453,44 @@ function _e(e, i) {
454
453
  function U(e, i, t, a, r) {
455
454
  return new Promise(async (n, s) => {
456
455
  let o = r;
457
- const c = await Me(e.id, _e(e, i.outputResolution), {
456
+ const c = await pe(e.id, Ce(e, i.outputResolution), {
458
457
  ...i,
459
458
  analytics: a,
460
459
  callbacks: {
461
460
  ...i.callbacks,
462
- onConnectionStateChange: async (u) => {
463
- var y, M;
464
- if (u === S.Connected)
461
+ onConnectionStateChange: async (h) => {
462
+ var M, y;
463
+ if (h === I.Connected)
465
464
  try {
466
- o || (o = await t.newChat(e.id), a.track("agent-chat", {
467
- event: "created",
468
- chat_id: o.id,
469
- agent_id: e.id
470
- })), c && n({
471
- chat: o,
472
- streamingManager: c
473
- });
474
- } catch (E) {
475
- console.error(E), s("Cannot create new chat");
465
+ try {
466
+ o || (o = await t.newChat(e.id), a.track("agent-chat", {
467
+ event: "created",
468
+ chat_id: o.id,
469
+ agent_id: e.id
470
+ })), c && n({
471
+ chat: o,
472
+ streamingManager: c
473
+ });
474
+ } catch (_) {
475
+ console.error(_), (_ == null ? void 0 : _.kind) === "InsufficientCreditsError" && (i.mode, $.TextOnly), s("Cannot create new chat");
476
+ }
477
+ } catch (_) {
478
+ console.error(_), s("Cannot create new chat");
476
479
  }
477
480
  else
478
- u === S.Fail && s(new Error("Cannot create connection"));
479
- (M = (y = i.callbacks).onConnectionStateChange) == null || M.call(y, u);
481
+ h === I.Fail && s(new Error("Cannot create connection"));
482
+ (y = (M = i.callbacks).onConnectionStateChange) == null || y.call(M, h);
480
483
  },
481
- onVideoStateChange(u) {
482
- var y, M;
483
- (M = (y = i.callbacks).onVideoStateChange) == null || M.call(y, u);
484
+ onVideoStateChange(h) {
485
+ var M, y;
486
+ (y = (M = i.callbacks).onVideoStateChange) == null || y.call(M, h);
484
487
  }
485
488
  }
486
489
  }).catch(s);
487
490
  });
488
491
  }
489
- function Se(e, i, t) {
490
- return Y(i, t || L).getById(e);
492
+ function _e(e, i, t) {
493
+ return X(i, t || L).getById(e);
491
494
  }
492
495
  function B(e) {
493
496
  let i = "";
@@ -503,206 +506,202 @@ function B(e) {
503
506
  created_at: (/* @__PURE__ */ new Date()).toISOString()
504
507
  }];
505
508
  }
506
- async function Ie(e, i) {
507
- var P, I, f;
509
+ async function Se(e, i) {
510
+ var O, k, f;
508
511
  const t = {
509
512
  messages: [],
510
- chatMode: i.mode || k.Functional
513
+ chatMode: i.mode || $.Functional
511
514
  };
512
515
  let a = -1;
513
- const r = i.wsURL || oe, n = i.baseURL || L, s = i.mixpanelKey || ce, o = Y(i.auth, n, i.callbacks.onError), c = await o.getById(e);
514
- t.messages = B(c), (I = (P = i.callbacks).onNewMessage) == null || I.call(P, t.messages);
515
- const u = ye({
516
+ const r = i.wsURL || se, n = i.baseURL || L, s = i.mixpanelKey || oe, o = X(i.auth, n, i.callbacks.onError), c = await o.getById(e);
517
+ t.messages = B(c), (k = (O = i.callbacks).onNewMessage) == null || k.call(O, t.messages);
518
+ const h = ye({
516
519
  token: s,
517
520
  agent: c,
518
521
  ...i
519
522
  });
520
- u.track("agent-sdk", {
523
+ h.track("agent-sdk", {
521
524
  event: "loaded",
522
- ...ve(c)
525
+ ...Me(c)
523
526
  });
524
- const y = {
525
- onMessage: (d, m) => {
526
- var l, g, h, w;
527
- if ("content" in m) {
527
+ const M = {
528
+ onMessage: (d, u) => {
529
+ var l, g, m, w;
530
+ if ("content" in u) {
528
531
  const {
529
532
  content: p
530
- } = m, C = t.messages[t.messages.length - 1];
531
- (C == null ? void 0 : C.role) === "assistant" && (a < t.messages.length && (C.content = d === D.Partial ? C.content + p : p), d === D.Answer && (a = t.messages.length)), d === D.Answer && u.track("agent-message-received", {
533
+ } = u, C = t.messages[t.messages.length - 1];
534
+ (C == null ? void 0 : C.role) === "assistant" && (a < t.messages.length && (C.content = d === D.Partial ? C.content + p : p), d === D.Answer && (a = t.messages.length)), d === D.Answer && h.track("agent-message-received", {
532
535
  messages: t.messages.length
533
536
  }), (g = (l = i.callbacks).onNewMessage) == null || g.call(l, t.messages);
534
537
  } else {
535
- if ([$.StreamVideoCreated, $.StreamVideoDone, $.StreamVideoError, $.StreamVideoRejected].includes(d)) {
538
+ if ([A.StreamVideoCreated, A.StreamVideoDone, A.StreamVideoError, A.StreamVideoRejected].includes(d)) {
536
539
  const p = d.split("/")[1];
537
- u.track("agent-video", {
538
- ...m,
540
+ h.track("agent-video", {
541
+ ...u,
539
542
  event: p
540
543
  });
541
544
  }
542
- [$.StreamFailed, $.StreamVideoError, $.StreamVideoRejected].includes(d) && ((w = (h = i.callbacks).onError) == null || w.call(h, new Error(`Stream failed with event ${d}`), {
543
- data: m
545
+ [A.StreamFailed, A.StreamVideoError, A.StreamVideoRejected].includes(d) && ((w = (m = i.callbacks).onError) == null || w.call(m, new Error(`Stream failed with event ${d}`), {
546
+ data: u
544
547
  }));
545
548
  }
546
549
  }
547
550
  };
548
- async function M() {
549
- var h, w, p, C, A;
550
- const d = await j(i.auth, r, y), {
551
- streamingManager: m,
551
+ async function y() {
552
+ var m, w, p, C, R;
553
+ const d = await J(i.auth, r, M), {
554
+ streamingManager: u,
552
555
  chat: l
553
- } = await U(c, i, o, u, t.chat);
554
- a = -1, t.messages.length === 0 && (t.messages = B(c), (w = (h = i.callbacks).onNewMessage) == null || w.call(h, t.messages)), l != null && l.id && l.id !== ((p = t.chat) == null ? void 0 : p.id) && ((A = (C = i.callbacks).onNewChat) == null || A.call(C, l == null ? void 0 : l.id)), t.streamingManager = m, t.socketManager = d, t.chat = l;
555
- const g = t.chat.chatMode || k.Functional;
556
- _(g), u.track("agent-chat", {
556
+ } = await U(c, i, o, h, t.chat);
557
+ a = -1, t.messages.length === 0 && (t.messages = B(c), (w = (m = i.callbacks).onNewMessage) == null || w.call(m, t.messages)), l != null && l.id && l.id !== ((p = t.chat) == null ? void 0 : p.id) && ((R = (C = i.callbacks).onNewChat) == null || R.call(C, l == null ? void 0 : l.id)), t.streamingManager = u, t.socketManager = d, t.chat = l;
558
+ const g = t.chat.chatMode || $.Functional;
559
+ S(g), h.track("agent-chat", {
557
560
  event: "connect",
558
561
  chatId: l.id,
559
562
  agentId: c.id
560
563
  });
561
564
  }
562
- async function E() {
563
- var d, m, l, g, h;
564
- (d = t.socketManager) == null || d.disconnect(), await ((m = t.streamingManager) == null ? void 0 : m.disconnect()), delete t.streamingManager, delete t.socketManager, t.messages = B(c), (g = (l = i.callbacks).onNewMessage) == null || g.call(l, t.messages), u.track("agent-chat", {
565
+ async function _() {
566
+ var d, u, l, g, m;
567
+ (d = t.socketManager) == null || d.disconnect(), await ((u = t.streamingManager) == null ? void 0 : u.disconnect()), delete t.streamingManager, delete t.socketManager, t.messages = B(c), (g = (l = i.callbacks).onNewMessage) == null || g.call(l, t.messages), h.track("agent-chat", {
565
568
  event: "disconnect",
566
- chatId: (h = t.chat) == null ? void 0 : h.id,
569
+ chatId: (m = t.chat) == null ? void 0 : m.id,
567
570
  agentId: c.id
568
571
  });
569
572
  }
570
- async function _(d) {
571
- var m, l;
572
- d !== t.chatMode && (u.track("agent-mode-change", {
573
+ async function S(d) {
574
+ var u, l;
575
+ d !== t.chatMode && (h.track("agent-mode-change", {
573
576
  mode: d
574
- }), t.chatMode = d, t.chatMode !== k.Functional && await E(), (l = (m = i.callbacks).onModeChange) == null || l.call(m, d));
577
+ }), t.chatMode = d, t.chatMode !== $.Functional && await _(), (l = (u = i.callbacks).onModeChange) == null || l.call(u, d));
575
578
  }
576
579
  async function K() {
577
580
  if (!t.chat)
578
- return M();
581
+ return y();
579
582
  const {
580
583
  streamingManager: d,
581
- chat: m
582
- } = await U(c, i, o, u, t.chat);
583
- t.streamingManager = d;
584
- const l = t.chat.chatMode || k.Functional;
585
- _(l), u.track("agent-chat", {
584
+ chat: u
585
+ } = await U(c, i, o, h, t.chat);
586
+ t.streamingManager = d, S(t.chat.chatMode || $.Functional), h.track("agent-chat", {
586
587
  event: "reconnect",
587
- chatId: m.id,
588
+ chatId: u.id,
588
589
  agentId: c.id
589
590
  });
590
591
  }
591
592
  return {
592
593
  agent: c,
593
594
  starterMessages: ((f = c.knowledge) == null ? void 0 : f.starter_message) || [],
594
- connect: M,
595
- disconnect: E,
596
- changeMode: _,
595
+ connect: y,
596
+ disconnect: _,
597
+ changeMode: S,
597
598
  async reconnect() {
598
- var h, w;
599
+ var m, w;
599
600
  if (!t.chat)
600
- return M();
601
- (h = t.socketManager) == null || h.disconnect(), await ((w = t.streamingManager) == null ? void 0 : w.disconnect());
602
- const d = await j(i.auth, r, y), {
603
- streamingManager: m,
601
+ return y();
602
+ (m = t.socketManager) == null || m.disconnect(), await ((w = t.streamingManager) == null ? void 0 : w.disconnect());
603
+ const d = await J(i.auth, r, M), {
604
+ streamingManager: u,
604
605
  chat: l
605
- } = await U(c, i, o, u, t.chat);
606
- t.streamingManager = m, t.socketManager = d;
607
- const g = t.chat.chatMode || k.Functional;
608
- _(g), u.track("agent-chat", {
606
+ } = await U(c, i, o, h, t.chat);
607
+ t.streamingManager = u, t.socketManager = d;
608
+ const g = t.chat.chatMode || $.Functional;
609
+ S(g), h.track("agent-chat", {
609
610
  event: "reconnect",
610
611
  chatId: l.id,
611
612
  agentId: c.id
612
613
  });
613
614
  },
614
- async chat(d, m = !1) {
615
- var g, h, w, p, C, A, x, W, H;
616
- const l = F();
615
+ async chat(d) {
616
+ var l, g, m, w, p, C, R, x, W;
617
+ const u = F();
617
618
  try {
618
- const O = Date.now();
619
+ const P = Date.now();
619
620
  if (d.length >= 800)
620
621
  throw new Error("Message cannot be more than 800 characters");
621
622
  if (d.length === 0)
622
623
  throw new Error("Message cannot be empty");
623
- if (t.chatMode === k.Maintenance)
624
+ if (t.chatMode === $.Maintenance)
624
625
  throw new Error("Chat is in maintenance mode");
625
- if (![k.TextOnly, k.Playground].includes(t.chatMode)) {
626
- if (!t.streamingManager)
626
+ if (![$.TextOnly, $.Playground].includes(t.chatMode))
627
+ if (t.streamingManager) {
628
+ if (!t.chat)
629
+ throw new Error("Chat is not initialized");
630
+ } else
627
631
  throw new Error("Streaming manager is not initialized");
628
- if (!t.chat)
629
- throw new Error("Chat is not initialized");
630
- }
631
632
  t.messages.push({
632
633
  id: F(),
633
634
  role: "user",
634
635
  content: d,
635
- created_at: new Date(O).toISOString()
636
- }), (h = (g = i.callbacks).onNewMessage) == null || h.call(g, t.messages), t.chat || (t.chat = await o.newChat(c.id));
636
+ created_at: new Date(P).toISOString()
637
+ }), (g = (l = i.callbacks).onNewMessage) == null || g.call(l, t.messages), t.chat || (t.chat = await o.newChat(c.id));
637
638
  const b = {
638
- id: l,
639
+ id: u,
639
640
  role: "assistant",
640
641
  content: "",
641
642
  created_at: (/* @__PURE__ */ new Date()).toISOString(),
642
643
  matches: []
643
644
  };
644
645
  t.messages.push(b);
645
- const J = t.messages.slice(0, -1);
646
+ const H = t.messages.slice(0, -1);
646
647
  let T;
647
648
  try {
648
649
  T = await o.chat(c.id, t.chat.id, {
649
- sessionId: (w = t.streamingManager) == null ? void 0 : w.sessionId,
650
- streamId: (p = t.streamingManager) == null ? void 0 : p.streamId,
651
- messages: J,
652
- chatMode: t.chatMode,
653
- append_chat: m
650
+ sessionId: (m = t.streamingManager) == null ? void 0 : m.sessionId,
651
+ streamId: (w = t.streamingManager) == null ? void 0 : w.streamId,
652
+ messages: H,
653
+ chatMode: t.chatMode
654
654
  });
655
655
  } catch (z) {
656
- if ((C = z == null ? void 0 : z.message) != null && C.includes("missing or invalid session_id"))
656
+ if ((p = z == null ? void 0 : z.message) != null && p.includes("missing or invalid session_id"))
657
657
  console.log("Invalid stream, try reconnect with new stream id"), await K(), T = await o.chat(c.id, t.chat.id, {
658
- sessionId: (A = t.streamingManager) == null ? void 0 : A.sessionId,
659
- streamId: (x = t.streamingManager) == null ? void 0 : x.streamId,
660
- messages: J,
661
- chatMode: t.chatMode,
662
- append_chat: m
658
+ sessionId: (C = t.streamingManager) == null ? void 0 : C.sessionId,
659
+ streamId: (R = t.streamingManager) == null ? void 0 : R.streamId,
660
+ messages: H,
661
+ chatMode: t.chatMode
663
662
  });
664
663
  else
665
664
  throw z;
666
665
  }
667
- return u.track("agent-message-send", {
666
+ return h.track("agent-message-send", {
668
667
  event: "success",
669
668
  messages: t.messages.length + 1
670
- }), b.context = T.context, T.result && (b.content = T.result, b.matches = T.matches, u.track("agent-message-received", {
671
- latency: Date.now() - O,
669
+ }), b.context = T.context, T.result && (b.content = T.result, b.matches = T.matches, h.track("agent-message-received", {
670
+ latency: Date.now() - P,
672
671
  messages: t.messages.length
673
- }), (H = (W = i.callbacks).onNewMessage) == null || H.call(W, t.messages)), T;
674
- } catch (O) {
675
- throw t.messages[t.messages.length - 1].id === l && t.messages.pop(), u.track("agent-message-send", {
672
+ }), (W = (x = i.callbacks).onNewMessage) == null || W.call(x, t.messages)), T;
673
+ } catch (P) {
674
+ throw t.messages[t.messages.length - 1].id === u && t.messages.pop(), h.track("agent-message-send", {
676
675
  event: "error",
677
676
  messages: t.messages.length
678
- }), O;
677
+ }), P;
679
678
  }
680
679
  },
681
- rate(d, m, l) {
682
- var w, p, C, A;
680
+ rate(d, u, l) {
681
+ var w, p, C, R;
683
682
  const g = t.messages.find((x) => x.id === d);
684
683
  if (t.chat) {
685
684
  if (!g)
686
685
  throw new Error("Message not found");
687
686
  } else
688
687
  throw new Error("Chat is not initialized");
689
- const h = ((w = g.matches) == null ? void 0 : w.map((x) => [x.document_id, x.id])) ?? [];
690
- return u.track("agent-rate", {
688
+ const m = ((w = g.matches) == null ? void 0 : w.map((x) => [x.document_id, x.id])) ?? [];
689
+ return h.track("agent-rate", {
691
690
  event: l ? "update" : "create",
692
- thumb: m === 1 ? "up" : "down",
691
+ thumb: u === 1 ? "up" : "down",
693
692
  knowledge_id: ((p = c.knowledge) == null ? void 0 : p.id) ?? "",
694
- matches: h,
695
- score: m
693
+ matches: m,
694
+ score: u
696
695
  }), l ? o.updateRating(c.id, t.chat.id, l, {
697
696
  knowledge_id: ((C = c.knowledge) == null ? void 0 : C.id) ?? "",
698
697
  message_id: d,
699
- matches: h,
700
- score: m
698
+ matches: m,
699
+ score: u
701
700
  }) : o.createRating(c.id, t.chat.id, {
702
- knowledge_id: ((A = c.knowledge) == null ? void 0 : A.id) ?? "",
701
+ knowledge_id: ((R = c.knowledge) == null ? void 0 : R.id) ?? "",
703
702
  message_id: d,
704
- matches: h,
705
- score: m
703
+ matches: m,
704
+ score: u
706
705
  });
707
706
  },
708
707
  getChatmode() {
@@ -711,19 +710,19 @@ async function Ie(e, i) {
711
710
  return o.getChatMode(c.id, t.chat.id);
712
711
  },
713
712
  deleteRate(d) {
714
- var m;
713
+ var u;
715
714
  if (!t.chat)
716
715
  throw new Error("Chat is not initialized");
717
- return u.track("agent-rate-delete", {
716
+ return h.track("agent-rate-delete", {
718
717
  type: "text",
719
- chat_id: (m = t.chat) == null ? void 0 : m.id,
718
+ chat_id: (u = t.chat) == null ? void 0 : u.id,
720
719
  id: d
721
720
  }), o.deleteRating(c.id, t.chat.id, d);
722
721
  },
723
722
  speak(d) {
724
723
  if (!t.streamingManager)
725
724
  throw new Error("Streaming manager is not initialized");
726
- function m() {
725
+ function u() {
727
726
  if (c.presenter) {
728
727
  if (d.type === "text")
729
728
  return {
@@ -741,28 +740,28 @@ async function Ie(e, i) {
741
740
  throw new Error("Presenter is not initialized");
742
741
  throw new Error("Invalid payload");
743
742
  }
744
- const l = m();
745
- return u.track("agent-speak", l), t.streamingManager.speak({
743
+ const l = u();
744
+ return h.track("agent-speak", l), t.streamingManager.speak({
746
745
  script: l
747
746
  });
748
747
  }
749
748
  };
750
749
  }
751
750
  export {
752
- k as ChatMode,
751
+ $ as ChatMode,
753
752
  D as ChatProgress,
754
- S as ConnectionState,
755
- ae as DocumentType,
756
- re as KnowledgeType,
757
- ee as PlanGroup,
758
- ie as Providers,
759
- te as RateState,
760
- $ as StreamEvents,
753
+ I as ConnectionState,
754
+ re as DocumentType,
755
+ ne as KnowledgeType,
756
+ G as PlanGroup,
757
+ ae as Providers,
758
+ ee as RateState,
759
+ A as StreamEvents,
761
760
  N as StreamingState,
762
- ne as Subject,
763
- G as UserPlan,
761
+ te as Subject,
762
+ Z as UserPlan,
764
763
  v as VideoType,
765
- se as VoiceAccess,
766
- Ie as createAgentManager,
767
- Se as getAgent
764
+ ie as VoiceAccess,
765
+ Se as createAgentManager,
766
+ _e as getAgent
768
767
  };
@@ -1 +1 @@
1
- (function(f,b){typeof exports=="object"&&typeof module<"u"?b(exports):typeof define=="function"&&define.amd?define(["exports"],b):(f=typeof globalThis<"u"?globalThis:f||self,b(f.index={}))})(this,function(f){"use strict";var b=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(b||{}),H=(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))(H||{}),J=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(J||{}),A=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e))(A||{}),L=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(L||{}),q=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(q||{}),Q=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(Q||{}),X=(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))(X||{}),v=(e=>(e.Clip="clip",e.Talk="talk",e))(v||{}),x=(e=>(e.Start="START",e.Stop="STOP",e))(x||{}),k=(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))(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))(_||{}),Y=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(Y||{}),Z=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(Z||{});const O="https://api.d-id.com",ce="wss://notifications.d-id.com",de="79f81a83a67430be2bc0fd61042b8faa",D=()=>Math.random().toString(16).slice(2);function G(){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 ge=D();function ee(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}.${G()}_${ge}`;throw new Error(`Unknown auth type: ${e}`)}function V(e,i=O,t){const a=async(r,n)=>{const s=await fetch(i+(r!=null&&r.startsWith("/")?r:`/${r}`),{...n,headers:{...n==null?void 0:n.headers,Authorization:ee(e),"Content-Type":"application/json"}});if(!s.ok){let o=await s.text().catch(()=>"Failed to fetch");throw t&&t(new Error(o),{url:r,options:n,headers:s.headers}),new Error(o)}return s.json()};return{get(r,n){return a(r,{...n,method:"GET"})},post(r,n,s){return a(r,{...s,body:JSON.stringify(n),method:"POST"})},delete(r,n,s){return a(r,{...s,body:JSON.stringify(n),method:"DELETE"})},patch(r,n,s){return a(r,{...s,body:JSON.stringify(n),method:"PATCH"})}}}function te(e,i=O,t){const a=V(e,`${i}/agents`,t);return{create(r,n){return a.post("/",r,n)},getAgents(r,n){return a.get(`/${r?`?tag=${r}`:""}`,n).then(s=>s??[])},getById(r,n){return a.get(`/${r}`,n)},delete(r,n){return a.delete(`/${r}`,void 0,n)},update(r,n,s){return a.patch(`/${r}`,n,s)},newChat(r,n){return a.post(`/${r}/chat`,void 0,n)},chat(r,n,s,o){return a.post(`/${r}/chat/${n}`,s,o)},getChatMode(r,n,s){return a.get(`/${r}/chat/${n}/mode`,s)},createRating(r,n,s,o){return a.post(`/${r}/chat/${n}/ratings`,s,o)},updateRating(r,n,s,o,c){return a.patch(`/${r}/chat/${n}/ratings/${s}`,o,c)},deleteRating(r,n,s,o){return a.delete(`/${r}/chat/${n}/ratings/${s}`,o)}}}const le=e=>new Promise(i=>setTimeout(i,e));function ue(e){return new Promise((i,t)=>{const{callbacks:a,host:r,auth:n}=e,{onMessage:s=null,onOpen:o=null,onClose:c=null,onError:u=null}=a||{},C=new WebSocket(`${r}?authorization=${ee(n)}`);C.onmessage=s,C.onclose=c,C.onerror=M=>{console.error(M),u==null||u("Websocket failed to connect",M),t(M)},C.onopen=M=>{o==null||o(M),i(C)}})}async function me(e){const{retries:i=1}=e;let t=null;for(let a=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;a++)try{t=await ue(e)}catch(r){if(a===i)throw r;await le(a*500)}return t}async function ne(e,i,t){const a=t!=null&&t.onMessage?[t.onMessage]:[],r=await me({auth:e,host:i,callbacks:{onError:t==null?void 0:t.onError,onMessage:n=>{const s=JSON.parse(n.data);a.forEach(o=>o(s.event,s))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:n=>a.push(n)}}function he(e,i,t,a){const r=V(e,`${i}/agents/${t}`,a);return{createStream(n){return r.post("/streams",{driver_id:n.driver_id,presenter_id:n.presenter_id,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,type:v.Clip})},startConnection(n,s,o){return r.post(`/streams/${n}/sdp`,{session_id:o,answer:s,type:v.Clip})},addIceCandidate(n,s,o){return r.post(`/streams/${n}/ice`,{session_id:o,...s,type:v.Clip})},sendStreamRequest(n,s,o){return r.post(`/streams/${n}`,{session_id:s,...o,type:v.Clip})},close(n,s){return r.delete(`/streams/${n}`,{session_id:s,type:v.Clip})}}}function we(e,i,t,a){const r=V(e,`${i}/agents/${t}`,a);return{createStream(n,s){return r.post("/streams",{source_url:n.source_url,driver_url:n.driver_url,face:n.face,config:n.config,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,output_resolution:n.output_resolution,type:v.Talk},s)},startConnection(n,s,o,c){return r.post(`/streams/${n}/sdp`,{session_id:o,answer:s,type:v.Talk},c)},addIceCandidate(n,s,o,c){return r.post(`/streams/${n}/ice`,{session_id:o,...s,type:v.Talk},c)},sendStreamRequest(n,s,o,c){return r.post(`/streams/${n}`,{session_id:s,...o,type:v.Talk},c)},close(n,s,o){return r.delete(`/streams/${n}`,{session_id:s,type:v.Talk},o)}}}let re=!1;const R=(e,i)=>re&&console.log(e,i),fe=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ae(e){switch(e){case"connected":return _.Connected;case"checking":return _.Connecting;case"failed":return _.Fail;case"new":case"closed":case"disconnected":default:return _.New}}function pe(){let e=0;return i=>{for(const t of i.values())if(t&&t.type==="inbound-rtp"&&t.kind==="video"){const a=t.bytesReceived,r=a-e>0;return e=a,r}return!1}}function ye(e,i,t){const r=Math.max(Math.ceil(10),1);let n=0,s=!1;const o=pe();return setInterval(async()=>{const c=await e.getStats();o(c)?(n=0,s||(i==null||i(x.Start),s=!0)):s&&(n++,n>=r&&(i==null||i(x.Stop),s=!1))},100)}async function Me(e,i,{debug:t=!1,callbacks:a,auth:r,analytics:n,baseURL:s=O}){re=t;let o;const{startConnection:c,sendStreamRequest:u,close:C,createStream:M,addIceCandidate:T}=i.videoType===v.Clip?he(r,s,e,a.onError):we(r,s,e,a.onError),{id:I,offer:W,ice_servers:z,session_id:$}=await M(i),p=new fe({iceServers:z}),d=p.createDataChannel("JanusDataChannel");if(!$)throw new Error("Could not create session_id");const m=ye(p,a.onVideoStateChange);p.onicecandidate=g=>{R("peerConnection.onicecandidate",g),g.candidate&&g.candidate.sdpMid&&g.candidate.sdpMLineIndex!==null?T(I,{candidate:g.candidate.candidate,sdpMid:g.candidate.sdpMid,sdpMLineIndex:g.candidate.sdpMLineIndex},$):T(I,{candidate:null},$)},p.oniceconnectionstatechange=()=>{var h;R("peerConnection.oniceconnectionstatechange => "+p.iceConnectionState);const g=ae(p.iceConnectionState);g===_.Connected?o=setTimeout(()=>{var w;(w=a.onConnectionStateChange)==null||w.call(a,_.Connected)},5e3):(clearTimeout(o),(h=a.onConnectionStateChange)==null||h.call(a,g))},p.ontrack=g=>{var h;R("peerConnection.ontrack",g),(h=a.onSrcObjectReady)==null||h.call(a,g.streams[0])},d.onmessage=g=>{var h;if(d.readyState==="open"){const[w,y]=g.data.split(":");w===k.StreamReady&&(clearTimeout(o),(h=a.onConnectionStateChange)==null||h.call(a,_.Connected))}},await p.setRemoteDescription(W),R("set remote description OK");const l=await p.createAnswer();return R("create answer OK"),await p.setLocalDescription(l),R("set local description OK"),await c(I,l,$),R("start connection OK"),{speak(g){return u(I,$,g)},async disconnect(){var g,h,w;if(I){if(p){if(ae(p.iceConnectionState)===_.New){(g=a.onVideoStateChange)==null||g.call(a,x.Stop),clearInterval(m);return}p.close(),p.oniceconnectionstatechange=null,p.onnegotiationneeded=null,p.onicecandidate=null,p.ontrack=null}try{await C(I,$).catch(y=>{})}catch(y){R("Error on close stream connection",y)}(h=a.onConnectionStateChange)==null||h.call(a,_.New),(w=a.onVideoStateChange)==null||w.call(a,x.Stop),clearInterval(m)}},sessionId:$,streamId:I}}function ve(e){var r,n;const t=((r=window==null?void 0:window.location)==null?void 0:r.hostname)==="studio.d-id.com"||((n=window==null?void 0:window.location)==null?void 0:n.hostname)==="studio-staging.d-id.com"?"studio":window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",a={token:e.token||"testKey",distinct_id:e.distinctId||G(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...a,getRandom:()=>Math.random().toString(16).slice(2),track(s,o){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const c={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:s,properties:{...o,...a,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}}])})};return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1",c).then(u=>u.json()).catch(u=>console.error(u))}}}function Ce(e){var a,r,n,s,o;const i=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const c=navigator.platform;return c.toLowerCase().includes("win")?"Windows":c.toLowerCase().includes("mac")?"Mac OS X":c.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${i()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(a=e.presenter)==null?void 0:a.type,agentVoice:{voiceId:(n=(r=e.presenter)==null?void 0:r.voice)==null?void 0:n.voice_id,provider:(o=(s=e.presenter)==null?void 0:s.voice)==null?void 0:o.type}}}const Se=1080;function _e(e,i){if(e.presenter){if(e.presenter.type===v.Clip)return{videoType:v.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");const t=i||(e.presenter.stitch?Se:void 0);return{videoType:v.Talk,source_url:e.presenter.source_url,stream_warmup:!0,...t&&{output_resolution:t}}}function B(e,i,t,a,r){return new Promise(async(n,s)=>{let o=r;const c=await Me(e.id,_e(e,i.outputResolution),{...i,analytics:a,callbacks:{...i.callbacks,onConnectionStateChange:async u=>{var C,M;if(u===_.Connected)try{o||(o=await t.newChat(e.id),a.track("agent-chat",{event:"created",chat_id:o.id,agent_id:e.id})),c&&n({chat:o,streamingManager:c})}catch(T){console.error(T),s("Cannot create new chat")}else u===_.Fail&&s(new Error("Cannot create connection"));(M=(C=i.callbacks).onConnectionStateChange)==null||M.call(C,u)},onVideoStateChange(u){var C,M;(M=(C=i.callbacks).onVideoStateChange)==null||M.call(C,u)}}}).catch(s)})}function Ie(e,i,t){return te(i,t||O).getById(e)}function j(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||"My Agent"}. How can I help you?`;return[{content:i,id:D(),role:"assistant",created_at:new Date().toISOString()}]}async function Ae(e,i){var z,$,p;const t={messages:[],chatMode:i.mode||A.Functional};let a=-1;const r=i.wsURL||ce,n=i.baseURL||O,s=i.mixpanelKey||de,o=te(i.auth,n,i.callbacks.onError),c=await o.getById(e);t.messages=j(c),($=(z=i.callbacks).onNewMessage)==null||$.call(z,t.messages);const u=ve({token:s,agent:c,...i});u.track("agent-sdk",{event:"loaded",...Ce(c)});const C={onMessage:(d,m)=>{var l,g,h,w;if("content"in m){const{content:y}=m,S=t.messages[t.messages.length-1];(S==null?void 0:S.role)==="assistant"&&(a<t.messages.length&&(S.content=d===L.Partial?S.content+y:y),d===L.Answer&&(a=t.messages.length)),d===L.Answer&&u.track("agent-message-received",{messages:t.messages.length}),(g=(l=i.callbacks).onNewMessage)==null||g.call(l,t.messages)}else{if([k.StreamVideoCreated,k.StreamVideoDone,k.StreamVideoError,k.StreamVideoRejected].includes(d)){const y=d.split("/")[1];u.track("agent-video",{...m,event:y})}[k.StreamFailed,k.StreamVideoError,k.StreamVideoRejected].includes(d)&&((w=(h=i.callbacks).onError)==null||w.call(h,new Error(`Stream failed with event ${d}`),{data:m}))}}};async function M(){var h,w,y,S,E;const d=await ne(i.auth,r,C),{streamingManager:m,chat:l}=await B(c,i,o,u,t.chat);a=-1,t.messages.length===0&&(t.messages=j(c),(w=(h=i.callbacks).onNewMessage)==null||w.call(h,t.messages)),l!=null&&l.id&&l.id!==((y=t.chat)==null?void 0:y.id)&&((E=(S=i.callbacks).onNewChat)==null||E.call(S,l==null?void 0:l.id)),t.streamingManager=m,t.socketManager=d,t.chat=l;const g=t.chat.chatMode||A.Functional;I(g),u.track("agent-chat",{event:"connect",chatId:l.id,agentId:c.id})}async function T(){var d,m,l,g,h;(d=t.socketManager)==null||d.disconnect(),await((m=t.streamingManager)==null?void 0:m.disconnect()),delete t.streamingManager,delete t.socketManager,t.messages=j(c),(g=(l=i.callbacks).onNewMessage)==null||g.call(l,t.messages),u.track("agent-chat",{event:"disconnect",chatId:(h=t.chat)==null?void 0:h.id,agentId:c.id})}async function I(d){var m,l;d!==t.chatMode&&(u.track("agent-mode-change",{mode:d}),t.chatMode=d,t.chatMode!==A.Functional&&await T(),(l=(m=i.callbacks).onModeChange)==null||l.call(m,d))}async function W(){if(!t.chat)return M();const{streamingManager:d,chat:m}=await B(c,i,o,u,t.chat);t.streamingManager=d;const l=t.chat.chatMode||A.Functional;I(l),u.track("agent-chat",{event:"reconnect",chatId:m.id,agentId:c.id})}return{agent:c,starterMessages:((p=c.knowledge)==null?void 0:p.starter_message)||[],connect:M,disconnect:T,changeMode:I,async reconnect(){var h,w;if(!t.chat)return M();(h=t.socketManager)==null||h.disconnect(),await((w=t.streamingManager)==null?void 0:w.disconnect());const d=await ne(i.auth,r,C),{streamingManager:m,chat:l}=await B(c,i,o,u,t.chat);t.streamingManager=m,t.socketManager=d;const g=t.chat.chatMode||A.Functional;I(g),u.track("agent-chat",{event:"reconnect",chatId:l.id,agentId:c.id})},async chat(d,m=!1){var g,h,w,y,S,E,N,ie,se;const l=D();try{const F=Date.now();if(d.length>=800)throw new Error("Message cannot be more than 800 characters");if(d.length===0)throw new Error("Message cannot be empty");if(t.chatMode===A.Maintenance)throw new Error("Chat is in maintenance mode");if(![A.TextOnly,A.Playground].includes(t.chatMode)){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");if(!t.chat)throw new Error("Chat is not initialized")}t.messages.push({id:D(),role:"user",content:d,created_at:new Date(F).toISOString()}),(h=(g=i.callbacks).onNewMessage)==null||h.call(g,t.messages),t.chat||(t.chat=await o.newChat(c.id));const K={id:l,role:"assistant",content:"",created_at:new Date().toISOString(),matches:[]};t.messages.push(K);const oe=t.messages.slice(0,-1);let P;try{P=await o.chat(c.id,t.chat.id,{sessionId:(w=t.streamingManager)==null?void 0:w.sessionId,streamId:(y=t.streamingManager)==null?void 0:y.streamId,messages:oe,chatMode:t.chatMode,append_chat:m})}catch(U){if((S=U==null?void 0:U.message)!=null&&S.includes("missing or invalid session_id"))console.log("Invalid stream, try reconnect with new stream id"),await W(),P=await o.chat(c.id,t.chat.id,{sessionId:(E=t.streamingManager)==null?void 0:E.sessionId,streamId:(N=t.streamingManager)==null?void 0:N.streamId,messages:oe,chatMode:t.chatMode,append_chat:m});else throw U}return u.track("agent-message-send",{event:"success",messages:t.messages.length+1}),K.context=P.context,P.result&&(K.content=P.result,K.matches=P.matches,u.track("agent-message-received",{latency:Date.now()-F,messages:t.messages.length}),(se=(ie=i.callbacks).onNewMessage)==null||se.call(ie,t.messages)),P}catch(F){throw t.messages[t.messages.length-1].id===l&&t.messages.pop(),u.track("agent-message-send",{event:"error",messages:t.messages.length}),F}},rate(d,m,l){var w,y,S,E;const g=t.messages.find(N=>N.id===d);if(t.chat){if(!g)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const h=((w=g.matches)==null?void 0:w.map(N=>[N.document_id,N.id]))??[];return u.track("agent-rate",{event:l?"update":"create",thumb:m===1?"up":"down",knowledge_id:((y=c.knowledge)==null?void 0:y.id)??"",matches:h,score:m}),l?o.updateRating(c.id,t.chat.id,l,{knowledge_id:((S=c.knowledge)==null?void 0:S.id)??"",message_id:d,matches:h,score:m}):o.createRating(c.id,t.chat.id,{knowledge_id:((E=c.knowledge)==null?void 0:E.id)??"",message_id:d,matches:h,score:m})},getChatmode(){if(!t.chat)throw new Error("Chat is not initialized");return o.getChatMode(c.id,t.chat.id)},deleteRate(d){var m;if(!t.chat)throw new Error("Chat is not initialized");return u.track("agent-rate-delete",{type:"text",chat_id:(m=t.chat)==null?void 0:m.id,id:d}),o.deleteRating(c.id,t.chat.id,d)},speak(d){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function m(){if(c.presenter){if(d.type==="text")return{type:"text",provider:d.provider?d.provider:c.presenter.voice,input:d.input,ssml:d.ssml||!1};if(d.type==="audio")return{type:"audio",audio_url:d.audio_url}}else throw new Error("Presenter is not initialized");throw new Error("Invalid payload")}const l=m();return u.track("agent-speak",l),t.streamingManager.speak({script:l})}}}f.ChatMode=A,f.ChatProgress=L,f.ConnectionState=_,f.DocumentType=X,f.KnowledgeType=Q,f.PlanGroup=H,f.Providers=Y,f.RateState=J,f.StreamEvents=k,f.StreamingState=x,f.Subject=q,f.UserPlan=b,f.VideoType=v,f.VoiceAccess=Z,f.createAgentManager=Ae,f.getAgent=Ie,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
1
+ (function(f,x){typeof exports=="object"&&typeof module<"u"?x(exports):typeof define=="function"&&define.amd?define(["exports"],x):(f=typeof globalThis<"u"?globalThis:f||self,x(f.index={}))})(this,function(f){"use strict";var x=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(x||{}),H=(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))(H||{}),J=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(J||{}),k=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e))(k||{}),b=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(b||{}),q=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(q||{}),Q=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(Q||{}),X=(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))(X||{}),v=(e=>(e.Clip="clip",e.Talk="talk",e))(v||{}),O=(e=>(e.Start="START",e.Stop="STOP",e))(O||{}),$=(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))($||{}),_=(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))(_||{}),Y=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(Y||{}),Z=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(Z||{});const L="https://api.d-id.com",oe="wss://notifications.d-id.com",ce="79f81a83a67430be2bc0fd61042b8faa",D=()=>Math.random().toString(16).slice(2);function G(){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 de=D();function ee(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}.${G()}_${de}`;throw new Error(`Unknown auth type: ${e}`)}function V(e,i=L,t){const a=async(r,n)=>{const s=await fetch(i+(r!=null&&r.startsWith("/")?r:`/${r}`),{...n,headers:{...n==null?void 0:n.headers,Authorization:ee(e),"Content-Type":"application/json"}});if(!s.ok){let o=await s.text().catch(()=>"Failed to fetch");throw t&&t(new Error(o),{url:r,options:n,headers:s.headers}),new Error(o)}return s.json()};return{get(r,n){return a(r,{...n,method:"GET"})},post(r,n,s){return a(r,{...s,body:JSON.stringify(n),method:"POST"})},delete(r,n,s){return a(r,{...s,body:JSON.stringify(n),method:"DELETE"})},patch(r,n,s){return a(r,{...s,body:JSON.stringify(n),method:"PATCH"})}}}function te(e,i=L,t){const a=V(e,`${i}/agents`,t);return{create(r,n){return a.post("/",r,n)},getAgents(r,n){return a.get(`/${r?`?tag=${r}`:""}`,n).then(s=>s??[])},getById(r,n){return a.get(`/${r}`,n)},delete(r,n){return a.delete(`/${r}`,void 0,n)},update(r,n,s){return a.patch(`/${r}`,n,s)},newChat(r,n){return a.post(`/${r}/chat`,void 0,n)},chat(r,n,s,o){return a.post(`/${r}/chat/${n}`,s,o)},getChatMode(r,n,s){return a.get(`/${r}/chat/${n}/mode`,s)},createRating(r,n,s,o){return a.post(`/${r}/chat/${n}/ratings`,s,o)},updateRating(r,n,s,o,c){return a.patch(`/${r}/chat/${n}/ratings/${s}`,o,c)},deleteRating(r,n,s,o){return a.delete(`/${r}/chat/${n}/ratings/${s}`,o)}}}const ge=e=>new Promise(i=>setTimeout(i,e));function le(e){return new Promise((i,t)=>{const{callbacks:a,host:r,auth:n}=e,{onMessage:s=null,onOpen:o=null,onClose:c=null,onError:h=null}=a||{},C=new WebSocket(`${r}?authorization=${ee(n)}`);C.onmessage=s,C.onclose=c,C.onerror=M=>{console.error(M),h==null||h("Websocket failed to connect",M),t(M)},C.onopen=M=>{o==null||o(M),i(C)}})}async function ue(e){const{retries:i=1}=e;let t=null;for(let a=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;a++)try{t=await le(e)}catch(r){if(a===i)throw r;await ge(a*500)}return t}async function ne(e,i,t){const a=t!=null&&t.onMessage?[t.onMessage]:[],r=await ue({auth:e,host:i,callbacks:{onError:t==null?void 0:t.onError,onMessage:n=>{const s=JSON.parse(n.data);a.forEach(o=>o(s.event,s))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:n=>a.push(n)}}function me(e,i,t,a){const r=V(e,`${i}/agents/${t}`,a);return{createStream(n){return r.post("/streams",{driver_id:n.driver_id,presenter_id:n.presenter_id,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,type:v.Clip})},startConnection(n,s,o){return r.post(`/streams/${n}/sdp`,{session_id:o,answer:s,type:v.Clip})},addIceCandidate(n,s,o){return r.post(`/streams/${n}/ice`,{session_id:o,...s,type:v.Clip})},sendStreamRequest(n,s,o){return r.post(`/streams/${n}`,{session_id:s,...o,type:v.Clip})},close(n,s){return r.delete(`/streams/${n}`,{session_id:s,type:v.Clip})}}}function he(e,i,t,a){const r=V(e,`${i}/agents/${t}`,a);return{createStream(n,s){return r.post("/streams",{source_url:n.source_url,driver_url:n.driver_url,face:n.face,config:n.config,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,output_resolution:n.output_resolution,type:v.Talk},s)},startConnection(n,s,o,c){return r.post(`/streams/${n}/sdp`,{session_id:o,answer:s,type:v.Talk},c)},addIceCandidate(n,s,o,c){return r.post(`/streams/${n}/ice`,{session_id:o,...s,type:v.Talk},c)},sendStreamRequest(n,s,o,c){return r.post(`/streams/${n}`,{session_id:s,...o,type:v.Talk},c)},close(n,s,o){return r.delete(`/streams/${n}`,{session_id:s,type:v.Talk},o)}}}let re=!1;const E=(e,i)=>re&&console.log(e,i),we=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ae(e){switch(e){case"connected":return _.Connected;case"checking":return _.Connecting;case"failed":return _.Fail;case"new":case"closed":case"disconnected":default:return _.New}}function fe(){let e=0;return i=>{for(const t of i.values())if(t&&t.type==="inbound-rtp"&&t.kind==="video"){const a=t.bytesReceived,r=a-e>0;return e=a,r}return!1}}function pe(e,i){const a=Math.max(Math.ceil(10),1);let r=0,n=!1;const s=fe();return setInterval(async()=>{const o=await e.getStats();s(o)?(r=0,n||(i==null||i(O.Start),n=!0)):n&&(r++,r>=a&&(i==null||i(O.Stop),n=!1))},100)}async function ye(e,i,{debug:t=!1,callbacks:a,auth:r,analytics:n,baseURL:s=L}){re=t;let o;const{startConnection:c,sendStreamRequest:h,close:C,createStream:M,addIceCandidate:I}=i.videoType===v.Clip?me(r,s,e,a.onError):he(r,s,e,a.onError),{id:A,offer:j,ice_servers:z,session_id:R}=await M(i),p=new we({iceServers:z}),d=p.createDataChannel("JanusDataChannel");if(!R)throw new Error("Could not create session_id");const u=pe(p,a.onVideoStateChange);p.onicecandidate=g=>{E("peerConnection.onicecandidate",g),g.candidate&&g.candidate.sdpMid&&g.candidate.sdpMLineIndex!==null?I(A,{candidate:g.candidate.candidate,sdpMid:g.candidate.sdpMid,sdpMLineIndex:g.candidate.sdpMLineIndex},R):I(A,{candidate:null},R)},p.oniceconnectionstatechange=()=>{var m;E("peerConnection.oniceconnectionstatechange => "+p.iceConnectionState);const g=ae(p.iceConnectionState);g===_.Connected?o=setTimeout(()=>{var w;(w=a.onConnectionStateChange)==null||w.call(a,_.Connected)},5e3):(clearTimeout(o),(m=a.onConnectionStateChange)==null||m.call(a,g))},p.ontrack=g=>{var m;E("peerConnection.ontrack",g),(m=a.onSrcObjectReady)==null||m.call(a,g.streams[0])},d.onmessage=g=>{var m;if(d.readyState==="open"){const[w,y]=g.data.split(":");w===$.StreamReady&&(clearTimeout(o),(m=a.onConnectionStateChange)==null||m.call(a,_.Connected))}},await p.setRemoteDescription(j),E("set remote description OK");const l=await p.createAnswer();return E("create answer OK"),await p.setLocalDescription(l),E("set local description OK"),await c(A,l,R),E("start connection OK"),{speak(g){return h(A,R,g)},async disconnect(){var g,m,w;if(A){if(p){if(ae(p.iceConnectionState)===_.New){(g=a.onVideoStateChange)==null||g.call(a,O.Stop),clearInterval(u);return}p.close(),p.oniceconnectionstatechange=null,p.onnegotiationneeded=null,p.onicecandidate=null,p.ontrack=null}try{await C(A,R).catch(y=>{})}catch(y){E("Error on close stream connection",y)}(m=a.onConnectionStateChange)==null||m.call(a,_.New),(w=a.onVideoStateChange)==null||w.call(a,O.Stop),clearInterval(u)}},sessionId:R,streamId:A}}function Me(e){const i=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",t={token:e.token||"testKey",distinct_id:e.distinctId||G(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...t,getRandom:()=>Math.random().toString(16).slice(2),track(a,r){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const n={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:a,properties:{...r,...t,source: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",n).then(s=>s.json()).catch(s=>console.error(s))}}}function ve(e){var a,r,n,s,o;const i=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const c=navigator.platform;return c.toLowerCase().includes("win")?"Windows":c.toLowerCase().includes("mac")?"Mac OS X":c.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${i()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(a=e.presenter)==null?void 0:a.type,agentVoice:{voiceId:(n=(r=e.presenter)==null?void 0:r.voice)==null?void 0:n.voice_id,provider:(o=(s=e.presenter)==null?void 0:s.voice)==null?void 0:o.type}}}const Ce=1080;function Se(e,i){if(e.presenter){if(e.presenter.type===v.Clip)return{videoType:v.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");const t=i||(e.presenter.stitch?Ce:void 0);return{videoType:v.Talk,source_url:e.presenter.source_url,stream_warmup:!0,...t&&{output_resolution:t}}}function B(e,i,t,a,r){return new Promise(async(n,s)=>{let o=r;const c=await ye(e.id,Se(e,i.outputResolution),{...i,analytics:a,callbacks:{...i.callbacks,onConnectionStateChange:async h=>{var C,M;if(h===_.Connected)try{try{o||(o=await t.newChat(e.id),a.track("agent-chat",{event:"created",chat_id:o.id,agent_id:e.id})),c&&n({chat:o,streamingManager:c})}catch(I){console.error(I),(I==null?void 0:I.kind)==="InsufficientCreditsError"&&(i.mode,k.TextOnly),s("Cannot create new chat")}}catch(I){console.error(I),s("Cannot create new chat")}else h===_.Fail&&s(new Error("Cannot create connection"));(M=(C=i.callbacks).onConnectionStateChange)==null||M.call(C,h)},onVideoStateChange(h){var C,M;(M=(C=i.callbacks).onVideoStateChange)==null||M.call(C,h)}}}).catch(s)})}function _e(e,i,t){return te(i,t||L).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||"My Agent"}. How can I help you?`;return[{content:i,id:D(),role:"assistant",created_at:new Date().toISOString()}]}async function Ie(e,i){var z,R,p;const t={messages:[],chatMode:i.mode||k.Functional};let a=-1;const r=i.wsURL||oe,n=i.baseURL||L,s=i.mixpanelKey||ce,o=te(i.auth,n,i.callbacks.onError),c=await o.getById(e);t.messages=W(c),(R=(z=i.callbacks).onNewMessage)==null||R.call(z,t.messages);const h=Me({token:s,agent:c,...i});h.track("agent-sdk",{event:"loaded",...ve(c)});const C={onMessage:(d,u)=>{var l,g,m,w;if("content"in u){const{content:y}=u,S=t.messages[t.messages.length-1];(S==null?void 0:S.role)==="assistant"&&(a<t.messages.length&&(S.content=d===b.Partial?S.content+y:y),d===b.Answer&&(a=t.messages.length)),d===b.Answer&&h.track("agent-message-received",{messages:t.messages.length}),(g=(l=i.callbacks).onNewMessage)==null||g.call(l,t.messages)}else{if([$.StreamVideoCreated,$.StreamVideoDone,$.StreamVideoError,$.StreamVideoRejected].includes(d)){const y=d.split("/")[1];h.track("agent-video",{...u,event:y})}[$.StreamFailed,$.StreamVideoError,$.StreamVideoRejected].includes(d)&&((w=(m=i.callbacks).onError)==null||w.call(m,new Error(`Stream failed with event ${d}`),{data:u}))}}};async function M(){var m,w,y,S,T;const d=await ne(i.auth,r,C),{streamingManager:u,chat:l}=await B(c,i,o,h,t.chat);a=-1,t.messages.length===0&&(t.messages=W(c),(w=(m=i.callbacks).onNewMessage)==null||w.call(m,t.messages)),l!=null&&l.id&&l.id!==((y=t.chat)==null?void 0:y.id)&&((T=(S=i.callbacks).onNewChat)==null||T.call(S,l==null?void 0:l.id)),t.streamingManager=u,t.socketManager=d,t.chat=l;const g=t.chat.chatMode||k.Functional;A(g),h.track("agent-chat",{event:"connect",chatId:l.id,agentId:c.id})}async function I(){var d,u,l,g,m;(d=t.socketManager)==null||d.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,t.messages=W(c),(g=(l=i.callbacks).onNewMessage)==null||g.call(l,t.messages),h.track("agent-chat",{event:"disconnect",chatId:(m=t.chat)==null?void 0:m.id,agentId:c.id})}async function A(d){var u,l;d!==t.chatMode&&(h.track("agent-mode-change",{mode:d}),t.chatMode=d,t.chatMode!==k.Functional&&await I(),(l=(u=i.callbacks).onModeChange)==null||l.call(u,d))}async function j(){if(!t.chat)return M();const{streamingManager:d,chat:u}=await B(c,i,o,h,t.chat);t.streamingManager=d,A(t.chat.chatMode||k.Functional),h.track("agent-chat",{event:"reconnect",chatId:u.id,agentId:c.id})}return{agent:c,starterMessages:((p=c.knowledge)==null?void 0:p.starter_message)||[],connect:M,disconnect:I,changeMode:A,async reconnect(){var m,w;if(!t.chat)return M();(m=t.socketManager)==null||m.disconnect(),await((w=t.streamingManager)==null?void 0:w.disconnect());const d=await ne(i.auth,r,C),{streamingManager:u,chat:l}=await B(c,i,o,h,t.chat);t.streamingManager=u,t.socketManager=d;const g=t.chat.chatMode||k.Functional;A(g),h.track("agent-chat",{event:"reconnect",chatId:l.id,agentId:c.id})},async chat(d){var l,g,m,w,y,S,T,N,ie;const u=D();try{const F=Date.now();if(d.length>=800)throw new Error("Message cannot be more than 800 characters");if(d.length===0)throw new Error("Message cannot be empty");if(t.chatMode===k.Maintenance)throw new Error("Chat is in maintenance mode");if(![k.TextOnly,k.Playground].includes(t.chatMode))if(t.streamingManager){if(!t.chat)throw new Error("Chat is not initialized")}else throw new Error("Streaming manager is not initialized");t.messages.push({id:D(),role:"user",content:d,created_at:new Date(F).toISOString()}),(g=(l=i.callbacks).onNewMessage)==null||g.call(l,t.messages),t.chat||(t.chat=await o.newChat(c.id));const K={id:u,role:"assistant",content:"",created_at:new Date().toISOString(),matches:[]};t.messages.push(K);const se=t.messages.slice(0,-1);let P;try{P=await o.chat(c.id,t.chat.id,{sessionId:(m=t.streamingManager)==null?void 0:m.sessionId,streamId:(w=t.streamingManager)==null?void 0:w.streamId,messages:se,chatMode:t.chatMode})}catch(U){if((y=U==null?void 0:U.message)!=null&&y.includes("missing or invalid session_id"))console.log("Invalid stream, try reconnect with new stream id"),await j(),P=await o.chat(c.id,t.chat.id,{sessionId:(S=t.streamingManager)==null?void 0:S.sessionId,streamId:(T=t.streamingManager)==null?void 0:T.streamId,messages:se,chatMode:t.chatMode});else throw U}return h.track("agent-message-send",{event:"success",messages:t.messages.length+1}),K.context=P.context,P.result&&(K.content=P.result,K.matches=P.matches,h.track("agent-message-received",{latency:Date.now()-F,messages:t.messages.length}),(ie=(N=i.callbacks).onNewMessage)==null||ie.call(N,t.messages)),P}catch(F){throw t.messages[t.messages.length-1].id===u&&t.messages.pop(),h.track("agent-message-send",{event:"error",messages:t.messages.length}),F}},rate(d,u,l){var w,y,S,T;const g=t.messages.find(N=>N.id===d);if(t.chat){if(!g)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const m=((w=g.matches)==null?void 0:w.map(N=>[N.document_id,N.id]))??[];return h.track("agent-rate",{event:l?"update":"create",thumb:u===1?"up":"down",knowledge_id:((y=c.knowledge)==null?void 0:y.id)??"",matches:m,score:u}),l?o.updateRating(c.id,t.chat.id,l,{knowledge_id:((S=c.knowledge)==null?void 0:S.id)??"",message_id:d,matches:m,score:u}):o.createRating(c.id,t.chat.id,{knowledge_id:((T=c.knowledge)==null?void 0:T.id)??"",message_id:d,matches:m,score:u})},getChatmode(){if(!t.chat)throw new Error("Chat is not initialized");return o.getChatMode(c.id,t.chat.id)},deleteRate(d){var u;if(!t.chat)throw new Error("Chat is not initialized");return h.track("agent-rate-delete",{type:"text",chat_id:(u=t.chat)==null?void 0:u.id,id:d}),o.deleteRating(c.id,t.chat.id,d)},speak(d){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function u(){if(c.presenter){if(d.type==="text")return{type:"text",provider:d.provider?d.provider:c.presenter.voice,input:d.input,ssml:d.ssml||!1};if(d.type==="audio")return{type:"audio",audio_url:d.audio_url}}else throw new Error("Presenter is not initialized");throw new Error("Invalid payload")}const l=u();return h.track("agent-speak",l),t.streamingManager.speak({script:l})}}}f.ChatMode=k,f.ChatProgress=b,f.ConnectionState=_,f.DocumentType=X,f.KnowledgeType=Q,f.PlanGroup=H,f.Providers=Y,f.RateState=J,f.StreamEvents=$,f.StreamingState=O,f.Subject=q,f.UserPlan=x,f.VideoType=v,f.VoiceAccess=Z,f.createAgentManager=Ie,f.getAgent=_e,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
@@ -28,7 +28,6 @@ export interface Message {
28
28
  }
29
29
  export interface ChatPayload {
30
30
  messages: Message[];
31
- append_chat?: boolean;
32
31
  streamId?: string;
33
32
  sessionId?: string;
34
33
  chatMode?: ChatMode;
@@ -116,9 +116,8 @@ export interface AgentManager {
116
116
  /**
117
117
  * Method to send a chat message to existing chat with the agent
118
118
  * @param messages
119
- * @param append_chat: when true, append to existing agent chat, rather than creating a new one.
120
119
  */
121
- chat: (userMessage: string, append_chat?: boolean) => Promise<ChatResponse>;
120
+ chat: (userMessage: string) => Promise<ChatResponse>;
122
121
  /**
123
122
  * Method to rate the answer in chat
124
123
  * @param score: 1 | -1 - score of the answer. 1 for positive, -1 for negative
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.97",
4
+ "version": "1.0.19-beta.99",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {