@d-id/client-sdk 1.0.19-beta.95 → 1.0.19-beta.96

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,10 +1,10 @@
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 || {}), z = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(z || {}), 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 || {}), M = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(M || {}), N = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(N || {}), R = /* @__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))(R || {}), 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", D = () => Math.random().toString(16).slice(2);
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 || {}), M = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(M || {}), 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
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 = D();
7
+ let de = F();
8
8
  function X(e) {
9
9
  if (e.type === "bearer")
10
10
  return `Bearer ${e.token}`;
@@ -14,9 +14,9 @@ function X(e) {
14
14
  return `Client-Key ${e.clientKey}.${Q()}_${de}`;
15
15
  throw new Error(`Unknown auth type: ${e}`);
16
16
  }
17
- function V(e, a = L, t) {
18
- const i = async (r, n) => {
19
- const s = await fetch(a + (r != null && r.startsWith("/") ? r : `/${r}`), {
17
+ function V(e, i = L, t) {
18
+ const a = async (r, n) => {
19
+ const s = await fetch(i + (r != null && r.startsWith("/") ? r : `/${r}`), {
20
20
  ...n,
21
21
  headers: {
22
22
  ...n == null ? void 0 : n.headers,
@@ -36,27 +36,27 @@ function V(e, a = L, t) {
36
36
  };
37
37
  return {
38
38
  get(r, n) {
39
- return i(r, {
39
+ return a(r, {
40
40
  ...n,
41
41
  method: "GET"
42
42
  });
43
43
  },
44
44
  post(r, n, s) {
45
- return i(r, {
45
+ return a(r, {
46
46
  ...s,
47
47
  body: JSON.stringify(n),
48
48
  method: "POST"
49
49
  });
50
50
  },
51
51
  delete(r, n, s) {
52
- return i(r, {
52
+ return a(r, {
53
53
  ...s,
54
54
  body: JSON.stringify(n),
55
55
  method: "DELETE"
56
56
  });
57
57
  },
58
58
  patch(r, n, s) {
59
- return i(r, {
59
+ return a(r, {
60
60
  ...s,
61
61
  body: JSON.stringify(n),
62
62
  method: "PATCH"
@@ -64,96 +64,99 @@ function V(e, a = L, t) {
64
64
  }
65
65
  };
66
66
  }
67
- function Y(e, a = L, t) {
68
- const i = V(e, `${a}/agents`, t);
67
+ function Y(e, i = L, t) {
68
+ const a = V(e, `${i}/agents`, t);
69
69
  return {
70
70
  create(r, n) {
71
- return i.post("/", r, n);
71
+ return a.post("/", r, n);
72
72
  },
73
73
  getAgents(r, n) {
74
- return i.get(`/${r ? `?tag=${r}` : ""}`, n).then((s) => s ?? []);
74
+ return a.get(`/${r ? `?tag=${r}` : ""}`, n).then((s) => s ?? []);
75
75
  },
76
76
  getById(r, n) {
77
- return i.get(`/${r}`, n);
77
+ return a.get(`/${r}`, n);
78
78
  },
79
79
  delete(r, n) {
80
- return i.delete(`/${r}`, void 0, n);
80
+ return a.delete(`/${r}`, void 0, n);
81
81
  },
82
82
  update(r, n, s) {
83
- return i.patch(`/${r}`, n, s);
83
+ return a.patch(`/${r}`, n, s);
84
84
  },
85
85
  newChat(r, n) {
86
- return i.post(`/${r}/chat`, void 0, n);
86
+ return a.post(`/${r}/chat`, void 0, n);
87
87
  },
88
88
  chat(r, n, s, o) {
89
- return i.post(`/${r}/chat/${n}`, s, o);
89
+ return a.post(`/${r}/chat/${n}`, s, o);
90
+ },
91
+ getChatMode(r, n, s) {
92
+ return a.get(`/${r}/chat/${n}/mode`, s);
90
93
  },
91
94
  createRating(r, n, s, o) {
92
- return i.post(`/${r}/chat/${n}/ratings`, s, o);
95
+ return a.post(`/${r}/chat/${n}/ratings`, s, o);
93
96
  },
94
97
  updateRating(r, n, s, o, c) {
95
- return i.patch(`/${r}/chat/${n}/ratings/${s}`, o, c);
98
+ return a.patch(`/${r}/chat/${n}/ratings/${s}`, o, c);
96
99
  },
97
100
  deleteRating(r, n, s, o) {
98
- return i.delete(`/${r}/chat/${n}/ratings/${s}`, o);
101
+ return a.delete(`/${r}/chat/${n}/ratings/${s}`, o);
99
102
  }
100
103
  };
101
104
  }
102
- const ge = (e) => new Promise((a) => setTimeout(a, e));
105
+ const ge = (e) => new Promise((i) => setTimeout(i, e));
103
106
  function le(e) {
104
- return new Promise((a, t) => {
107
+ return new Promise((i, t) => {
105
108
  const {
106
- callbacks: i,
109
+ callbacks: a,
107
110
  host: r,
108
111
  auth: n
109
112
  } = e, {
110
113
  onMessage: s = null,
111
114
  onOpen: o = null,
112
115
  onClose: c = null,
113
- onError: m = null
114
- } = i || {}, y = new WebSocket(`${r}?authorization=${X(n)}`);
115
- y.onmessage = s, y.onclose = c, y.onerror = (v) => {
116
- console.error(v), m == null || m("Websocket failed to connect", v), t(v);
117
- }, y.onopen = (v) => {
118
- o == null || o(v), a(y);
116
+ onError: l = null
117
+ } = a || {}, v = new WebSocket(`${r}?authorization=${X(n)}`);
118
+ v.onmessage = s, v.onclose = c, v.onerror = (y) => {
119
+ console.error(y), l == null || l("Websocket failed to connect", y), t(y);
120
+ }, v.onopen = (y) => {
121
+ o == null || o(y), i(v);
119
122
  };
120
123
  });
121
124
  }
122
125
  async function ue(e) {
123
126
  const {
124
- retries: a = 1
127
+ retries: i = 1
125
128
  } = e;
126
129
  let t = null;
127
- for (let i = 0; (t == null ? void 0 : t.readyState) !== WebSocket.OPEN; i++)
130
+ for (let a = 0; (t == null ? void 0 : t.readyState) !== WebSocket.OPEN; a++)
128
131
  try {
129
132
  t = await le(e);
130
133
  } catch (r) {
131
- if (i === a)
134
+ if (a === i)
132
135
  throw r;
133
- await ge(i * 500);
136
+ await ge(a * 500);
134
137
  }
135
138
  return t;
136
139
  }
137
- async function j(e, a, t) {
138
- const i = 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 ue({
139
142
  auth: e,
140
- host: a,
143
+ host: i,
141
144
  callbacks: {
142
145
  onError: t == null ? void 0 : t.onError,
143
146
  onMessage: (n) => {
144
147
  const s = JSON.parse(n.data);
145
- i.forEach((o) => o(s.event, s));
148
+ a.forEach((o) => o(s.event, s));
146
149
  }
147
150
  }
148
151
  });
149
152
  return {
150
153
  socket: r,
151
154
  disconnect: () => r.close(),
152
- subscribeToEvents: (n) => i.push(n)
155
+ subscribeToEvents: (n) => a.push(n)
153
156
  };
154
157
  }
155
- function me(e, a, t, i) {
156
- const r = V(e, `${a}/agents/${t}`, i);
158
+ function me(e, i, t, a) {
159
+ const r = V(e, `${i}/agents/${t}`, a);
157
160
  return {
158
161
  createStream(n) {
159
162
  return r.post("/streams", {
@@ -193,8 +196,8 @@ function me(e, a, t, i) {
193
196
  }
194
197
  };
195
198
  }
196
- function we(e, a, t, i) {
197
- const r = V(e, `${a}/agents/${t}`, i);
199
+ function we(e, i, t, a) {
200
+ const r = V(e, `${i}/agents/${t}`, a);
198
201
  return {
199
202
  createStream(n, s) {
200
203
  return r.post("/streams", {
@@ -238,7 +241,7 @@ function we(e, a, t, i) {
238
241
  };
239
242
  }
240
243
  let Z = !1;
241
- const $ = (e, a) => Z && console.log(e, a), he = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
244
+ const A = (e, i) => Z && console.log(e, i), he = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
242
245
  function q(e) {
243
246
  switch (e) {
244
247
  case "connected":
@@ -256,27 +259,27 @@ function q(e) {
256
259
  }
257
260
  function fe() {
258
261
  let e = 0;
259
- return (a) => {
260
- for (const t of a.values())
262
+ return (i) => {
263
+ for (const t of i.values())
261
264
  if (t && t.type === "inbound-rtp" && t.kind === "video") {
262
- const i = t.bytesReceived, r = i - e > 0;
263
- return e = i, r;
265
+ const a = t.bytesReceived, r = a - e > 0;
266
+ return e = a, r;
264
267
  }
265
268
  return !1;
266
269
  };
267
270
  }
268
- function pe(e, a, t) {
271
+ function pe(e, i, t) {
269
272
  const r = Math.max(Math.ceil(10), 1);
270
273
  let n = 0, s = !1;
271
274
  const o = fe();
272
275
  return setInterval(async () => {
273
276
  const c = await e.getStats();
274
- o(c) ? (n = 0, s || (a == null || a(N.Start), s = !0)) : s && (n++, n >= r && (a == null || a(N.Stop), s = !1));
277
+ o(c) ? (n = 0, s || (i == null || i(N.Start), s = !0)) : s && (n++, n >= r && (i == null || i(N.Stop), s = !1));
275
278
  }, 100);
276
279
  }
277
- async function ve(e, a, {
280
+ async function ye(e, i, {
278
281
  debug: t = !1,
279
- callbacks: i,
282
+ callbacks: a,
280
283
  auth: r,
281
284
  analytics: n,
282
285
  baseURL: s = L
@@ -285,55 +288,55 @@ async function ve(e, a, {
285
288
  let o;
286
289
  const {
287
290
  startConnection: c,
288
- sendStreamRequest: m,
289
- close: y,
290
- createStream: v,
291
- addIceCandidate: A
292
- } = a.videoType === M.Clip ? me(r, s, e, i.onError) : we(r, s, e, i.onError), {
291
+ sendStreamRequest: l,
292
+ close: v,
293
+ createStream: y,
294
+ addIceCandidate: R
295
+ } = i.videoType === M.Clip ? me(r, s, e, a.onError) : we(r, s, e, a.onError), {
293
296
  id: _,
294
297
  offer: K,
295
- ice_servers: O,
298
+ ice_servers: P,
296
299
  session_id: I
297
- } = await v(a), h = new he({
298
- iceServers: O
300
+ } = await y(i), h = new he({
301
+ iceServers: P
299
302
  }), d = h.createDataChannel("JanusDataChannel");
300
303
  if (!I)
301
304
  throw new Error("Could not create session_id");
302
- const u = pe(h, i.onVideoStateChange);
305
+ const m = pe(h, a.onVideoStateChange);
303
306
  h.onicecandidate = (g) => {
304
- $("peerConnection.onicecandidate", g), g.candidate && g.candidate.sdpMid && g.candidate.sdpMLineIndex !== null ? A(_, {
307
+ A("peerConnection.onicecandidate", g), g.candidate && g.candidate.sdpMid && g.candidate.sdpMLineIndex !== null ? R(_, {
305
308
  candidate: g.candidate.candidate,
306
309
  sdpMid: g.candidate.sdpMid,
307
310
  sdpMLineIndex: g.candidate.sdpMLineIndex
308
- }, I) : A(_, {
311
+ }, I) : R(_, {
309
312
  candidate: null
310
313
  }, I);
311
314
  }, h.oniceconnectionstatechange = () => {
312
315
  var w;
313
- $("peerConnection.oniceconnectionstatechange => " + h.iceConnectionState);
316
+ A("peerConnection.oniceconnectionstatechange => " + h.iceConnectionState);
314
317
  const g = q(h.iceConnectionState);
315
318
  g === S.Connected ? o = setTimeout(() => {
316
319
  var f;
317
- (f = i.onConnectionStateChange) == null || f.call(i, S.Connected);
318
- }, 5e3) : (clearTimeout(o), (w = i.onConnectionStateChange) == null || w.call(i, g));
320
+ (f = a.onConnectionStateChange) == null || f.call(a, S.Connected);
321
+ }, 5e3) : (clearTimeout(o), (w = a.onConnectionStateChange) == null || w.call(a, g));
319
322
  }, h.ontrack = (g) => {
320
323
  var w;
321
- $("peerConnection.ontrack", g), (w = i.onSrcObjectReady) == null || w.call(i, g.streams[0]);
324
+ A("peerConnection.ontrack", g), (w = a.onSrcObjectReady) == null || w.call(a, g.streams[0]);
322
325
  }, d.onmessage = (g) => {
323
326
  var w;
324
327
  if (d.readyState === "open") {
325
328
  const [f, p] = g.data.split(":");
326
- f === R.StreamReady && (clearTimeout(o), (w = i.onConnectionStateChange) == null || w.call(i, S.Connected));
329
+ f === $.StreamReady && (clearTimeout(o), (w = a.onConnectionStateChange) == null || w.call(a, S.Connected));
327
330
  }
328
- }, await h.setRemoteDescription(K), $("set remote description OK");
329
- const l = await h.createAnswer();
330
- return $("create answer OK"), await h.setLocalDescription(l), $("set local description OK"), await c(_, l, I), $("start connection OK"), {
331
+ }, await h.setRemoteDescription(K), A("set remote description OK");
332
+ const u = await h.createAnswer();
333
+ return A("create answer OK"), await h.setLocalDescription(u), A("set local description OK"), await c(_, u, I), A("start connection OK"), {
331
334
  /**
332
335
  * Method to send request to server to get clip or talk depend on you payload
333
336
  * @param payload
334
337
  */
335
338
  speak(g) {
336
- return m(_, I, g);
339
+ return l(_, I, g);
337
340
  },
338
341
  /**
339
342
  * Method to close RTC connection
@@ -343,18 +346,18 @@ async function ve(e, a, {
343
346
  if (_) {
344
347
  if (h) {
345
348
  if (q(h.iceConnectionState) === S.New) {
346
- (g = i.onVideoStateChange) == null || g.call(i, N.Stop), clearInterval(u);
349
+ (g = a.onVideoStateChange) == null || g.call(a, N.Stop), clearInterval(m);
347
350
  return;
348
351
  }
349
352
  h.close(), h.oniceconnectionstatechange = null, h.onnegotiationneeded = null, h.onicecandidate = null, h.ontrack = null;
350
353
  }
351
354
  try {
352
- await y(_, I).catch((p) => {
355
+ await v(_, I).catch((p) => {
353
356
  });
354
357
  } catch (p) {
355
- $("Error on close stream connection", p);
358
+ A("Error on close stream connection", p);
356
359
  }
357
- (w = i.onConnectionStateChange) == null || w.call(i, S.New), (f = i.onVideoStateChange) == null || f.call(i, N.Stop), clearInterval(u);
360
+ (w = a.onConnectionStateChange) == null || w.call(a, S.New), (f = a.onVideoStateChange) == null || f.call(a, N.Stop), clearInterval(m);
358
361
  }
359
362
  },
360
363
  /**
@@ -367,8 +370,9 @@ async function ve(e, a, {
367
370
  streamId: _
368
371
  };
369
372
  }
370
- function ye(e) {
371
- const a = {
373
+ function ve(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 = {
372
376
  token: e.token || "testKey",
373
377
  distinct_id: e.distinctId || Q(),
374
378
  isEnabled: e.isEnabled ?? !0,
@@ -378,20 +382,21 @@ function ye(e) {
378
382
  return {
379
383
  ...a,
380
384
  getRandom: () => Math.random().toString(16).slice(2),
381
- track(t, i) {
385
+ track(s, o) {
382
386
  if (!this.isEnabled)
383
387
  return Promise.reject("MixPanel analytics is disabled on creation");
384
- const r = {
388
+ const c = {
385
389
  method: "POST",
386
390
  headers: {
387
391
  "Content-Type": "application/x-www-form-urlencoded"
388
392
  },
389
393
  body: new URLSearchParams({
390
394
  data: JSON.stringify([{
391
- event: t,
395
+ event: s,
392
396
  properties: {
393
- ...i,
397
+ ...o,
394
398
  ...a,
399
+ source: t,
395
400
  time: Date.now(),
396
401
  $insert_id: this.getRandom(),
397
402
  origin: window.location.href,
@@ -402,22 +407,22 @@ function ye(e) {
402
407
  }])
403
408
  })
404
409
  };
405
- return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1", r).then((n) => n.json()).catch((n) => console.error(n));
410
+ return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1", c).then((l) => l.json()).catch((l) => console.error(l));
406
411
  }
407
412
  };
408
413
  }
409
414
  function Me(e) {
410
- var i, r, n, s, o;
411
- const a = () => /Mobi|Android/i.test(navigator.userAgent) ? "Mobile" : "Desktop";
415
+ var a, r, n, s, o;
416
+ const i = () => /Mobi|Android/i.test(navigator.userAgent) ? "Mobile" : "Desktop";
412
417
  return {
413
418
  $os: `${(() => {
414
419
  const c = navigator.platform;
415
420
  return c.toLowerCase().includes("win") ? "Windows" : c.toLowerCase().includes("mac") ? "Mac OS X" : c.toLowerCase().includes("linux") ? "Linux" : "Unknown";
416
421
  })()}`,
417
- isMobile: `${a() == "Mobile"}`,
422
+ isMobile: `${i() == "Mobile"}`,
418
423
  browser: navigator.userAgent,
419
424
  origin: window.location.origin,
420
- agentType: (i = e.presenter) == null ? void 0 : i.type,
425
+ agentType: (a = e.presenter) == null ? void 0 : a.type,
421
426
  agentVoice: {
422
427
  voiceId: (n = (r = e.presenter) == null ? void 0 : r.voice) == null ? void 0 : n.voice_id,
423
428
  provider: (o = (s = e.presenter) == null ? void 0 : s.voice) == null ? void 0 : o.type
@@ -425,7 +430,7 @@ function Me(e) {
425
430
  };
426
431
  }
427
432
  const Ce = 1080;
428
- function _e(e, a) {
433
+ function _e(e, i) {
429
434
  if (e.presenter) {
430
435
  if (e.presenter.type === M.Clip)
431
436
  return {
@@ -436,7 +441,7 @@ function _e(e, a) {
436
441
  };
437
442
  } else
438
443
  throw new Error("Presenter is not initialized");
439
- const t = a || (e.presenter.stitch ? Ce : void 0);
444
+ const t = i || (e.presenter.stitch ? Ce : void 0);
440
445
  return {
441
446
  videoType: M.Talk,
442
447
  source_url: e.presenter.source_url,
@@ -446,19 +451,19 @@ function _e(e, a) {
446
451
  }
447
452
  };
448
453
  }
449
- function U(e, a, t, i, r) {
454
+ function U(e, i, t, a, r) {
450
455
  return new Promise(async (n, s) => {
451
456
  let o = r;
452
- const c = await ve(e.id, _e(e, a.outputResolution), {
453
- ...a,
454
- analytics: i,
457
+ const c = await ye(e.id, _e(e, i.outputResolution), {
458
+ ...i,
459
+ analytics: a,
455
460
  callbacks: {
456
- ...a.callbacks,
457
- onConnectionStateChange: async (m) => {
458
- var y, v;
459
- if (m === S.Connected)
461
+ ...i.callbacks,
462
+ onConnectionStateChange: async (l) => {
463
+ var v, y;
464
+ if (l === S.Connected)
460
465
  try {
461
- o || (o = await t.newChat(e.id), i.track("agent-chat", {
466
+ o || (o = await t.newChat(e.id), a.track("agent-chat", {
462
467
  event: "created",
463
468
  chat_id: o.id,
464
469
  agent_id: e.id
@@ -466,145 +471,145 @@ function U(e, a, t, i, r) {
466
471
  chat: o,
467
472
  streamingManager: c
468
473
  });
469
- } catch (A) {
470
- console.error(A), s("Cannot create new chat");
474
+ } catch (R) {
475
+ console.error(R), s("Cannot create new chat");
471
476
  }
472
477
  else
473
- m === S.Fail && s(new Error("Cannot create connection"));
474
- (v = (y = a.callbacks).onConnectionStateChange) == null || v.call(y, m);
478
+ l === S.Fail && s(new Error("Cannot create connection"));
479
+ (y = (v = i.callbacks).onConnectionStateChange) == null || y.call(v, l);
475
480
  },
476
- onVideoStateChange(m) {
477
- var y, v;
478
- (v = (y = a.callbacks).onVideoStateChange) == null || v.call(y, m);
481
+ onVideoStateChange(l) {
482
+ var v, y;
483
+ (y = (v = i.callbacks).onVideoStateChange) == null || y.call(v, l);
479
484
  }
480
485
  }
481
486
  }).catch(s);
482
487
  });
483
488
  }
484
- function Se(e, a, t) {
485
- return Y(a, t || L).getById(e);
489
+ function Se(e, i, t) {
490
+ return Y(i, t || L).getById(e);
486
491
  }
487
492
  function B(e) {
488
- let a = "";
493
+ let i = "";
489
494
  if (e.greetings && e.greetings.length > 0) {
490
495
  const t = Math.floor(Math.random() * e.greetings.length);
491
- a = e.greetings[t];
496
+ i = e.greetings[t];
492
497
  } else
493
- a = `Hi! I'm ${e.preview_name || "My Agent"}. How can I help you?`;
498
+ i = `Hi! I'm ${e.preview_name || "My Agent"}. How can I help you?`;
494
499
  return [{
495
- content: a,
496
- id: D(),
500
+ content: i,
501
+ id: F(),
497
502
  role: "assistant",
498
503
  created_at: (/* @__PURE__ */ new Date()).toISOString()
499
504
  }];
500
505
  }
501
- async function Ie(e, a) {
502
- var O, I, h;
506
+ async function Ie(e, i) {
507
+ var P, I, h;
503
508
  const t = {
504
509
  messages: [],
505
- chatMode: a.mode || k.Functional
510
+ chatMode: i.mode || k.Functional
506
511
  };
507
- let i = -1;
508
- const r = a.wsURL || oe, n = a.baseURL || L, s = a.mixpanelKey || ce, o = Y(a.auth, n, a.callbacks.onError), c = await o.getById(e);
509
- t.messages = B(c), (I = (O = a.callbacks).onNewMessage) == null || I.call(O, t.messages);
510
- const m = ye({
512
+ 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 l = ve({
511
516
  token: s,
512
517
  agent: c,
513
- ...a
518
+ ...i
514
519
  });
515
- m.track("agent-sdk", {
520
+ l.track("agent-sdk", {
516
521
  event: "loaded",
517
522
  ...Me(c)
518
523
  });
519
- const y = {
520
- onMessage: (d, u) => {
521
- var l, g, w, f;
522
- if ("content" in u) {
524
+ const v = {
525
+ onMessage: (d, m) => {
526
+ var u, g, w, f;
527
+ if ("content" in m) {
523
528
  const {
524
529
  content: p
525
- } = u, C = t.messages[t.messages.length - 1];
526
- (C == null ? void 0 : C.role) === "assistant" && (i < t.messages.length && (C.content = d === z.Partial ? C.content + p : p), d === z.Answer && (i = t.messages.length)), d === z.Answer && m.track("agent-message-received", {
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 && l.track("agent-message-received", {
527
532
  messages: t.messages.length
528
- }), (g = (l = a.callbacks).onNewMessage) == null || g.call(l, t.messages);
533
+ }), (g = (u = i.callbacks).onNewMessage) == null || g.call(u, t.messages);
529
534
  } else {
530
- if ([R.StreamVideoCreated, R.StreamVideoDone, R.StreamVideoError, R.StreamVideoRejected].includes(d)) {
535
+ if ([$.StreamVideoCreated, $.StreamVideoDone, $.StreamVideoError, $.StreamVideoRejected].includes(d)) {
531
536
  const p = d.split("/")[1];
532
- m.track("agent-video", {
533
- ...u,
537
+ l.track("agent-video", {
538
+ ...m,
534
539
  event: p
535
540
  });
536
541
  }
537
- [R.StreamFailed, R.StreamVideoError, R.StreamVideoRejected].includes(d) && ((f = (w = a.callbacks).onError) == null || f.call(w, new Error(`Stream failed with event ${d}`), {
538
- data: u
542
+ [$.StreamFailed, $.StreamVideoError, $.StreamVideoRejected].includes(d) && ((f = (w = i.callbacks).onError) == null || f.call(w, new Error(`Stream failed with event ${d}`), {
543
+ data: m
539
544
  }));
540
545
  }
541
546
  }
542
547
  };
543
- async function v() {
548
+ async function y() {
544
549
  var g, w, f, p, C;
545
- const d = await j(a.auth, r, y), {
546
- streamingManager: u,
547
- chat: l
548
- } = await U(c, a, o, m, t.chat);
549
- i = -1, t.messages.length === 0 && (t.messages = B(c), (w = (g = a.callbacks).onNewMessage) == null || w.call(g, t.messages)), l != null && l.id && l.id !== ((f = t.chat) == null ? void 0 : f.id) && ((C = (p = a.callbacks).onNewChat) == null || C.call(p, l == null ? void 0 : l.id)), t.streamingManager = u, t.socketManager = d, t.chat = l, _(k.Functional), m.track("agent-chat", {
550
+ const d = await j(i.auth, r, v), {
551
+ streamingManager: m,
552
+ chat: u
553
+ } = await U(c, i, o, l, t.chat);
554
+ a = -1, t.messages.length === 0 && (t.messages = B(c), (w = (g = i.callbacks).onNewMessage) == null || w.call(g, t.messages)), u != null && u.id && u.id !== ((f = t.chat) == null ? void 0 : f.id) && ((C = (p = i.callbacks).onNewChat) == null || C.call(p, u == null ? void 0 : u.id)), t.streamingManager = m, t.socketManager = d, t.chat = u, _(k.Functional), l.track("agent-chat", {
550
555
  event: "connect",
551
- chatId: l.id,
556
+ chatId: u.id,
552
557
  agentId: c.id
553
558
  });
554
559
  }
555
- async function A() {
556
- var d, u, l, g, w;
557
- (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 = a.callbacks).onNewMessage) == null || g.call(l, t.messages), m.track("agent-chat", {
560
+ async function R() {
561
+ var d, m, u, g, w;
562
+ (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 = (u = i.callbacks).onNewMessage) == null || g.call(u, t.messages), l.track("agent-chat", {
558
563
  event: "disconnect",
559
564
  chatId: (w = t.chat) == null ? void 0 : w.id,
560
565
  agentId: c.id
561
566
  });
562
567
  }
563
568
  async function _(d) {
564
- var u, l;
565
- d !== t.chatMode && (m.track("agent-mode-change", {
569
+ var m, u;
570
+ d !== t.chatMode && (l.track("agent-mode-change", {
566
571
  mode: d
567
- }), t.chatMode = d, t.chatMode !== k.Functional && await A(), (l = (u = a.callbacks).onModeChange) == null || l.call(u, d));
572
+ }), t.chatMode = d, t.chatMode !== k.Functional && await R(), (u = (m = i.callbacks).onModeChange) == null || u.call(m, d));
568
573
  }
569
574
  async function K() {
570
575
  if (!t.chat)
571
- return v();
576
+ return y();
572
577
  const {
573
578
  streamingManager: d,
574
- chat: u
575
- } = await U(c, a, o, m, t.chat);
576
- t.streamingManager = d, _(k.Functional), m.track("agent-chat", {
579
+ chat: m
580
+ } = await U(c, i, o, l, t.chat);
581
+ t.streamingManager = d, _(k.Functional), l.track("agent-chat", {
577
582
  event: "reconnect",
578
- chatId: u.id,
583
+ chatId: m.id,
579
584
  agentId: c.id
580
585
  });
581
586
  }
582
587
  return {
583
588
  agent: c,
584
589
  starterMessages: ((h = c.knowledge) == null ? void 0 : h.starter_message) || [],
585
- connect: v,
586
- disconnect: A,
590
+ connect: y,
591
+ disconnect: R,
587
592
  changeMode: _,
588
593
  async reconnect() {
589
594
  var g, w;
590
595
  if (!t.chat)
591
- return v();
596
+ return y();
592
597
  (g = t.socketManager) == null || g.disconnect(), await ((w = t.streamingManager) == null ? void 0 : w.disconnect());
593
- const d = await j(a.auth, r, y), {
594
- streamingManager: u,
595
- chat: l
596
- } = await U(c, a, o, m, t.chat);
597
- t.streamingManager = u, t.socketManager = d, _(k.Functional), m.track("agent-chat", {
598
+ const d = await j(i.auth, r, v), {
599
+ streamingManager: m,
600
+ chat: u
601
+ } = await U(c, i, o, l, t.chat);
602
+ t.streamingManager = m, t.socketManager = d, _(k.Functional), l.track("agent-chat", {
598
603
  event: "reconnect",
599
- chatId: l.id,
604
+ chatId: u.id,
600
605
  agentId: c.id
601
606
  });
602
607
  },
603
- async chat(d, u = !1) {
608
+ async chat(d, m = !1) {
604
609
  var g, w, f, p, C, T, E, W, H;
605
- const l = D();
610
+ const u = F();
606
611
  try {
607
- const P = Date.now();
612
+ const O = Date.now();
608
613
  if (d.length >= 800)
609
614
  throw new Error("Message cannot be more than 800 characters");
610
615
  if (d.length === 0)
@@ -618,13 +623,13 @@ async function Ie(e, a) {
618
623
  throw new Error("Chat is not initialized");
619
624
  }
620
625
  t.messages.push({
621
- id: D(),
626
+ id: F(),
622
627
  role: "user",
623
628
  content: d,
624
- created_at: new Date(P).toISOString()
625
- }), (w = (g = a.callbacks).onNewMessage) == null || w.call(g, t.messages), t.chat || (t.chat = await o.newChat(c.id));
629
+ created_at: new Date(O).toISOString()
630
+ }), (w = (g = i.callbacks).onNewMessage) == null || w.call(g, t.messages), t.chat || (t.chat = await o.newChat(c.id));
626
631
  const b = {
627
- id: l,
632
+ id: u,
628
633
  role: "assistant",
629
634
  content: "",
630
635
  created_at: (/* @__PURE__ */ new Date()).toISOString(),
@@ -639,35 +644,35 @@ async function Ie(e, a) {
639
644
  streamId: (p = t.streamingManager) == null ? void 0 : p.streamId,
640
645
  messages: J,
641
646
  chatMode: t.chatMode,
642
- append_chat: u
647
+ append_chat: m
643
648
  });
644
- } catch (F) {
645
- if ((C = F == null ? void 0 : F.message) != null && C.includes("missing or invalid session_id"))
649
+ } catch (z) {
650
+ if ((C = z == null ? void 0 : z.message) != null && C.includes("missing or invalid session_id"))
646
651
  console.log("Invalid stream, try reconnect with new stream id"), await K(), x = await o.chat(c.id, t.chat.id, {
647
652
  sessionId: (T = t.streamingManager) == null ? void 0 : T.sessionId,
648
653
  streamId: (E = t.streamingManager) == null ? void 0 : E.streamId,
649
654
  messages: J,
650
655
  chatMode: t.chatMode,
651
- append_chat: u
656
+ append_chat: m
652
657
  });
653
658
  else
654
- throw F;
659
+ throw z;
655
660
  }
656
- return m.track("agent-message-send", {
661
+ return l.track("agent-message-send", {
657
662
  event: "success",
658
663
  messages: t.messages.length + 1
659
- }), b.context = x.context, x.result && (b.content = x.result, b.matches = x.matches, m.track("agent-message-received", {
660
- latency: Date.now() - P,
664
+ }), b.context = x.context, x.result && (b.content = x.result, b.matches = x.matches, l.track("agent-message-received", {
665
+ latency: Date.now() - O,
661
666
  messages: t.messages.length
662
- }), (H = (W = a.callbacks).onNewMessage) == null || H.call(W, t.messages)), x;
663
- } catch (P) {
664
- throw t.messages[t.messages.length - 1].id === l && t.messages.pop(), m.track("agent-message-send", {
667
+ }), (H = (W = i.callbacks).onNewMessage) == null || H.call(W, t.messages)), x;
668
+ } catch (O) {
669
+ throw t.messages[t.messages.length - 1].id === u && t.messages.pop(), l.track("agent-message-send", {
665
670
  event: "error",
666
671
  messages: t.messages.length
667
- }), P;
672
+ }), O;
668
673
  }
669
674
  },
670
- rate(d, u, l) {
675
+ rate(d, m, u) {
671
676
  var f, p, C, T;
672
677
  const g = t.messages.find((E) => E.id === d);
673
678
  if (t.chat) {
@@ -676,38 +681,43 @@ async function Ie(e, a) {
676
681
  } else
677
682
  throw new Error("Chat is not initialized");
678
683
  const w = ((f = g.matches) == null ? void 0 : f.map((E) => [E.document_id, E.id])) ?? [];
679
- return m.track("agent-rate", {
680
- event: l ? "update" : "create",
681
- thumb: u === 1 ? "up" : "down",
684
+ return l.track("agent-rate", {
685
+ event: u ? "update" : "create",
686
+ thumb: m === 1 ? "up" : "down",
682
687
  knowledge_id: ((p = c.knowledge) == null ? void 0 : p.id) ?? "",
683
688
  matches: w,
684
- score: u
685
- }), l ? o.updateRating(c.id, t.chat.id, l, {
689
+ score: m
690
+ }), u ? o.updateRating(c.id, t.chat.id, u, {
686
691
  knowledge_id: ((C = c.knowledge) == null ? void 0 : C.id) ?? "",
687
692
  message_id: d,
688
693
  matches: w,
689
- score: u
694
+ score: m
690
695
  }) : o.createRating(c.id, t.chat.id, {
691
696
  knowledge_id: ((T = c.knowledge) == null ? void 0 : T.id) ?? "",
692
697
  message_id: d,
693
698
  matches: w,
694
- score: u
699
+ score: m
695
700
  });
696
701
  },
702
+ getChatmode() {
703
+ if (!t.chat)
704
+ throw new Error("Chat is not initialized");
705
+ return o.getChatMode(c.id, t.chat.id);
706
+ },
697
707
  deleteRate(d) {
698
- var u;
708
+ var m;
699
709
  if (!t.chat)
700
710
  throw new Error("Chat is not initialized");
701
- return m.track("agent-rate-delete", {
711
+ return l.track("agent-rate-delete", {
702
712
  type: "text",
703
- chat_id: (u = t.chat) == null ? void 0 : u.id,
713
+ chat_id: (m = t.chat) == null ? void 0 : m.id,
704
714
  id: d
705
715
  }), o.deleteRating(c.id, t.chat.id, d);
706
716
  },
707
717
  speak(d) {
708
718
  if (!t.streamingManager)
709
719
  throw new Error("Streaming manager is not initialized");
710
- function u() {
720
+ function m() {
711
721
  if (c.presenter) {
712
722
  if (d.type === "text")
713
723
  return {
@@ -725,23 +735,23 @@ async function Ie(e, a) {
725
735
  throw new Error("Presenter is not initialized");
726
736
  throw new Error("Invalid payload");
727
737
  }
728
- const l = u();
729
- return m.track("agent-speak", l), t.streamingManager.speak({
730
- script: l
738
+ const u = m();
739
+ return l.track("agent-speak", u), t.streamingManager.speak({
740
+ script: u
731
741
  });
732
742
  }
733
743
  };
734
744
  }
735
745
  export {
736
746
  k as ChatMode,
737
- z as ChatProgress,
747
+ D as ChatProgress,
738
748
  S as ConnectionState,
739
749
  ae as DocumentType,
740
750
  re as KnowledgeType,
741
751
  ee as PlanGroup,
742
752
  ie as Providers,
743
753
  te as RateState,
744
- R as StreamEvents,
754
+ $ as StreamEvents,
745
755
  N as StreamingState,
746
756
  ne as Subject,
747
757
  G as UserPlan,
@@ -1 +1 @@
1
- (function(h,P){typeof exports=="object"&&typeof module<"u"?P(exports):typeof define=="function"&&define.amd?define(["exports"],P):(h=typeof globalThis<"u"?globalThis:h||self,P(h.index={}))})(this,function(h){"use strict";var P=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(P||{}),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||{}),x=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(x||{}),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||{}),M=(e=>(e.Clip="clip",e.Talk="talk",e))(M||{}),b=(e=>(e.Start="START",e.Stop="STOP",e))(b||{}),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 L="https://api.d-id.com",ce="wss://notifications.d-id.com",de="79f81a83a67430be2bc0fd61042b8faa",F=()=>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=F();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,a=L,t){const i=async(r,n)=>{const s=await fetch(a+(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 i(r,{...n,method:"GET"})},post(r,n,s){return i(r,{...s,body:JSON.stringify(n),method:"POST"})},delete(r,n,s){return i(r,{...s,body:JSON.stringify(n),method:"DELETE"})},patch(r,n,s){return i(r,{...s,body:JSON.stringify(n),method:"PATCH"})}}}function te(e,a=L,t){const i=V(e,`${a}/agents`,t);return{create(r,n){return i.post("/",r,n)},getAgents(r,n){return i.get(`/${r?`?tag=${r}`:""}`,n).then(s=>s??[])},getById(r,n){return i.get(`/${r}`,n)},delete(r,n){return i.delete(`/${r}`,void 0,n)},update(r,n,s){return i.patch(`/${r}`,n,s)},newChat(r,n){return i.post(`/${r}/chat`,void 0,n)},chat(r,n,s,o){return i.post(`/${r}/chat/${n}`,s,o)},createRating(r,n,s,o){return i.post(`/${r}/chat/${n}/ratings`,s,o)},updateRating(r,n,s,o,c){return i.patch(`/${r}/chat/${n}/ratings/${s}`,o,c)},deleteRating(r,n,s,o){return i.delete(`/${r}/chat/${n}/ratings/${s}`,o)}}}const le=e=>new Promise(a=>setTimeout(a,e));function ue(e){return new Promise((a,t)=>{const{callbacks:i,host:r,auth:n}=e,{onMessage:s=null,onOpen:o=null,onClose:c=null,onError:m=null}=i||{},C=new WebSocket(`${r}?authorization=${ee(n)}`);C.onmessage=s,C.onclose=c,C.onerror=v=>{console.error(v),m==null||m("Websocket failed to connect",v),t(v)},C.onopen=v=>{o==null||o(v),a(C)}})}async function me(e){const{retries:a=1}=e;let t=null;for(let i=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;i++)try{t=await ue(e)}catch(r){if(i===a)throw r;await le(i*500)}return t}async function ne(e,a,t){const i=t!=null&&t.onMessage?[t.onMessage]:[],r=await me({auth:e,host:a,callbacks:{onError:t==null?void 0:t.onError,onMessage:n=>{const s=JSON.parse(n.data);i.forEach(o=>o(s.event,s))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:n=>i.push(n)}}function we(e,a,t,i){const r=V(e,`${a}/agents/${t}`,i);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:M.Clip})},startConnection(n,s,o){return r.post(`/streams/${n}/sdp`,{session_id:o,answer:s,type:M.Clip})},addIceCandidate(n,s,o){return r.post(`/streams/${n}/ice`,{session_id:o,...s,type:M.Clip})},sendStreamRequest(n,s,o){return r.post(`/streams/${n}`,{session_id:s,...o,type:M.Clip})},close(n,s){return r.delete(`/streams/${n}`,{session_id:s,type:M.Clip})}}}function he(e,a,t,i){const r=V(e,`${a}/agents/${t}`,i);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:M.Talk},s)},startConnection(n,s,o,c){return r.post(`/streams/${n}/sdp`,{session_id:o,answer:s,type:M.Talk},c)},addIceCandidate(n,s,o,c){return r.post(`/streams/${n}/ice`,{session_id:o,...s,type:M.Talk},c)},sendStreamRequest(n,s,o,c){return r.post(`/streams/${n}`,{session_id:s,...o,type:M.Talk},c)},close(n,s,o){return r.delete(`/streams/${n}`,{session_id:s,type:M.Talk},o)}}}let re=!1;const $=(e,a)=>re&&console.log(e,a),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 a=>{for(const t of a.values())if(t&&t.type==="inbound-rtp"&&t.kind==="video"){const i=t.bytesReceived,r=i-e>0;return e=i,r}return!1}}function ye(e,a,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||(a==null||a(b.Start),s=!0)):s&&(n++,n>=r&&(a==null||a(b.Stop),s=!1))},100)}async function ve(e,a,{debug:t=!1,callbacks:i,auth:r,analytics:n,baseURL:s=L}){re=t;let o;const{startConnection:c,sendStreamRequest:m,close:C,createStream:v,addIceCandidate:E}=a.videoType===M.Clip?we(r,s,e,i.onError):he(r,s,e,i.onError),{id:I,offer:W,ice_servers:z,session_id:R}=await v(a),f=new fe({iceServers:z}),d=f.createDataChannel("JanusDataChannel");if(!R)throw new Error("Could not create session_id");const u=ye(f,i.onVideoStateChange);f.onicecandidate=g=>{$("peerConnection.onicecandidate",g),g.candidate&&g.candidate.sdpMid&&g.candidate.sdpMLineIndex!==null?E(I,{candidate:g.candidate.candidate,sdpMid:g.candidate.sdpMid,sdpMLineIndex:g.candidate.sdpMLineIndex},R):E(I,{candidate:null},R)},f.oniceconnectionstatechange=()=>{var w;$("peerConnection.oniceconnectionstatechange => "+f.iceConnectionState);const g=ae(f.iceConnectionState);g===_.Connected?o=setTimeout(()=>{var p;(p=i.onConnectionStateChange)==null||p.call(i,_.Connected)},5e3):(clearTimeout(o),(w=i.onConnectionStateChange)==null||w.call(i,g))},f.ontrack=g=>{var w;$("peerConnection.ontrack",g),(w=i.onSrcObjectReady)==null||w.call(i,g.streams[0])},d.onmessage=g=>{var w;if(d.readyState==="open"){const[p,y]=g.data.split(":");p===k.StreamReady&&(clearTimeout(o),(w=i.onConnectionStateChange)==null||w.call(i,_.Connected))}},await f.setRemoteDescription(W),$("set remote description OK");const l=await f.createAnswer();return $("create answer OK"),await f.setLocalDescription(l),$("set local description OK"),await c(I,l,R),$("start connection OK"),{speak(g){return m(I,R,g)},async disconnect(){var g,w,p;if(I){if(f){if(ae(f.iceConnectionState)===_.New){(g=i.onVideoStateChange)==null||g.call(i,b.Stop),clearInterval(u);return}f.close(),f.oniceconnectionstatechange=null,f.onnegotiationneeded=null,f.onicecandidate=null,f.ontrack=null}try{await C(I,R).catch(y=>{})}catch(y){$("Error on close stream connection",y)}(w=i.onConnectionStateChange)==null||w.call(i,_.New),(p=i.onVideoStateChange)==null||p.call(i,b.Stop),clearInterval(u)}},sessionId:R,streamId:I}}function Me(e){const 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(t,i){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const r={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...i,...a,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",r).then(n=>n.json()).catch(n=>console.error(n))}}}function Ce(e){var i,r,n,s,o;const a=()=>/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:`${a()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(i=e.presenter)==null?void 0:i.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,a){if(e.presenter){if(e.presenter.type===M.Clip)return{videoType:M.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=a||(e.presenter.stitch?Se:void 0);return{videoType:M.Talk,source_url:e.presenter.source_url,stream_warmup:!0,...t&&{output_resolution:t}}}function B(e,a,t,i,r){return new Promise(async(n,s)=>{let o=r;const c=await ve(e.id,_e(e,a.outputResolution),{...a,analytics:i,callbacks:{...a.callbacks,onConnectionStateChange:async m=>{var C,v;if(m===_.Connected)try{o||(o=await t.newChat(e.id),i.track("agent-chat",{event:"created",chat_id:o.id,agent_id:e.id})),c&&n({chat:o,streamingManager:c})}catch(E){console.error(E),s("Cannot create new chat")}else m===_.Fail&&s(new Error("Cannot create connection"));(v=(C=a.callbacks).onConnectionStateChange)==null||v.call(C,m)},onVideoStateChange(m){var C,v;(v=(C=a.callbacks).onVideoStateChange)==null||v.call(C,m)}}}).catch(s)})}function Ie(e,a,t){return te(a,t||L).getById(e)}function j(e){let a="";if(e.greetings&&e.greetings.length>0){const t=Math.floor(Math.random()*e.greetings.length);a=e.greetings[t]}else a=`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`;return[{content:a,id:F(),role:"assistant",created_at:new Date().toISOString()}]}async function Ae(e,a){var z,R,f;const t={messages:[],chatMode:a.mode||A.Functional};let i=-1;const r=a.wsURL||ce,n=a.baseURL||L,s=a.mixpanelKey||de,o=te(a.auth,n,a.callbacks.onError),c=await o.getById(e);t.messages=j(c),(R=(z=a.callbacks).onNewMessage)==null||R.call(z,t.messages);const m=Me({token:s,agent:c,...a});m.track("agent-sdk",{event:"loaded",...Ce(c)});const C={onMessage:(d,u)=>{var l,g,w,p;if("content"in u){const{content:y}=u,S=t.messages[t.messages.length-1];(S==null?void 0:S.role)==="assistant"&&(i<t.messages.length&&(S.content=d===x.Partial?S.content+y:y),d===x.Answer&&(i=t.messages.length)),d===x.Answer&&m.track("agent-message-received",{messages:t.messages.length}),(g=(l=a.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];m.track("agent-video",{...u,event:y})}[k.StreamFailed,k.StreamVideoError,k.StreamVideoRejected].includes(d)&&((p=(w=a.callbacks).onError)==null||p.call(w,new Error(`Stream failed with event ${d}`),{data:u}))}}};async function v(){var g,w,p,y,S;const d=await ne(a.auth,r,C),{streamingManager:u,chat:l}=await B(c,a,o,m,t.chat);i=-1,t.messages.length===0&&(t.messages=j(c),(w=(g=a.callbacks).onNewMessage)==null||w.call(g,t.messages)),l!=null&&l.id&&l.id!==((p=t.chat)==null?void 0:p.id)&&((S=(y=a.callbacks).onNewChat)==null||S.call(y,l==null?void 0:l.id)),t.streamingManager=u,t.socketManager=d,t.chat=l,I(A.Functional),m.track("agent-chat",{event:"connect",chatId:l.id,agentId:c.id})}async function E(){var d,u,l,g,w;(d=t.socketManager)==null||d.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,t.messages=j(c),(g=(l=a.callbacks).onNewMessage)==null||g.call(l,t.messages),m.track("agent-chat",{event:"disconnect",chatId:(w=t.chat)==null?void 0:w.id,agentId:c.id})}async function I(d){var u,l;d!==t.chatMode&&(m.track("agent-mode-change",{mode:d}),t.chatMode=d,t.chatMode!==A.Functional&&await E(),(l=(u=a.callbacks).onModeChange)==null||l.call(u,d))}async function W(){if(!t.chat)return v();const{streamingManager:d,chat:u}=await B(c,a,o,m,t.chat);t.streamingManager=d,I(A.Functional),m.track("agent-chat",{event:"reconnect",chatId:u.id,agentId:c.id})}return{agent:c,starterMessages:((f=c.knowledge)==null?void 0:f.starter_message)||[],connect:v,disconnect:E,changeMode:I,async reconnect(){var g,w;if(!t.chat)return v();(g=t.socketManager)==null||g.disconnect(),await((w=t.streamingManager)==null?void 0:w.disconnect());const d=await ne(a.auth,r,C),{streamingManager:u,chat:l}=await B(c,a,o,m,t.chat);t.streamingManager=u,t.socketManager=d,I(A.Functional),m.track("agent-chat",{event:"reconnect",chatId:l.id,agentId:c.id})},async chat(d,u=!1){var g,w,p,y,S,O,T,ie,se;const l=F();try{const D=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:F(),role:"user",content:d,created_at:new Date(D).toISOString()}),(w=(g=a.callbacks).onNewMessage)==null||w.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 N;try{N=await o.chat(c.id,t.chat.id,{sessionId:(p=t.streamingManager)==null?void 0:p.sessionId,streamId:(y=t.streamingManager)==null?void 0:y.streamId,messages:oe,chatMode:t.chatMode,append_chat:u})}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(),N=await o.chat(c.id,t.chat.id,{sessionId:(O=t.streamingManager)==null?void 0:O.sessionId,streamId:(T=t.streamingManager)==null?void 0:T.streamId,messages:oe,chatMode:t.chatMode,append_chat:u});else throw U}return m.track("agent-message-send",{event:"success",messages:t.messages.length+1}),K.context=N.context,N.result&&(K.content=N.result,K.matches=N.matches,m.track("agent-message-received",{latency:Date.now()-D,messages:t.messages.length}),(se=(ie=a.callbacks).onNewMessage)==null||se.call(ie,t.messages)),N}catch(D){throw t.messages[t.messages.length-1].id===l&&t.messages.pop(),m.track("agent-message-send",{event:"error",messages:t.messages.length}),D}},rate(d,u,l){var p,y,S,O;const g=t.messages.find(T=>T.id===d);if(t.chat){if(!g)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const w=((p=g.matches)==null?void 0:p.map(T=>[T.document_id,T.id]))??[];return m.track("agent-rate",{event:l?"update":"create",thumb:u===1?"up":"down",knowledge_id:((y=c.knowledge)==null?void 0:y.id)??"",matches:w,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:w,score:u}):o.createRating(c.id,t.chat.id,{knowledge_id:((O=c.knowledge)==null?void 0:O.id)??"",message_id:d,matches:w,score:u})},deleteRate(d){var u;if(!t.chat)throw new Error("Chat is not initialized");return m.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 m.track("agent-speak",l),t.streamingManager.speak({script:l})}}}h.ChatMode=A,h.ChatProgress=x,h.ConnectionState=_,h.DocumentType=X,h.KnowledgeType=Q,h.PlanGroup=H,h.Providers=Y,h.RateState=J,h.StreamEvents=k,h.StreamingState=b,h.Subject=q,h.UserPlan=P,h.VideoType=M,h.VoiceAccess=Z,h.createAgentManager=Ae,h.getAgent=Ie,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
1
+ (function(h,P){typeof exports=="object"&&typeof module<"u"?P(exports):typeof define=="function"&&define.amd?define(["exports"],P):(h=typeof globalThis<"u"?globalThis:h||self,P(h.index={}))})(this,function(h){"use strict";var P=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(P||{}),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||{}),x=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(x||{}),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||{}),M=(e=>(e.Clip="clip",e.Talk="talk",e))(M||{}),b=(e=>(e.Start="START",e.Stop="STOP",e))(b||{}),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 L="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=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 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:l=null}=a||{},C=new WebSocket(`${r}?authorization=${ee(n)}`);C.onmessage=s,C.onclose=c,C.onerror=v=>{console.error(v),l==null||l("Websocket failed to connect",v),t(v)},C.onopen=v=>{o==null||o(v),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 we(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:M.Clip})},startConnection(n,s,o){return r.post(`/streams/${n}/sdp`,{session_id:o,answer:s,type:M.Clip})},addIceCandidate(n,s,o){return r.post(`/streams/${n}/ice`,{session_id:o,...s,type:M.Clip})},sendStreamRequest(n,s,o){return r.post(`/streams/${n}`,{session_id:s,...o,type:M.Clip})},close(n,s){return r.delete(`/streams/${n}`,{session_id:s,type:M.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:M.Talk},s)},startConnection(n,s,o,c){return r.post(`/streams/${n}/sdp`,{session_id:o,answer:s,type:M.Talk},c)},addIceCandidate(n,s,o,c){return r.post(`/streams/${n}/ice`,{session_id:o,...s,type:M.Talk},c)},sendStreamRequest(n,s,o,c){return r.post(`/streams/${n}`,{session_id:s,...o,type:M.Talk},c)},close(n,s,o){return r.delete(`/streams/${n}`,{session_id:s,type:M.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(b.Start),s=!0)):s&&(n++,n>=r&&(i==null||i(b.Stop),s=!1))},100)}async function ve(e,i,{debug:t=!1,callbacks:a,auth:r,analytics:n,baseURL:s=L}){re=t;let o;const{startConnection:c,sendStreamRequest:l,close:C,createStream:v,addIceCandidate:E}=i.videoType===M.Clip?we(r,s,e,a.onError):he(r,s,e,a.onError),{id:I,offer:W,ice_servers:z,session_id:$}=await v(i),f=new fe({iceServers:z}),d=f.createDataChannel("JanusDataChannel");if(!$)throw new Error("Could not create session_id");const m=ye(f,a.onVideoStateChange);f.onicecandidate=g=>{R("peerConnection.onicecandidate",g),g.candidate&&g.candidate.sdpMid&&g.candidate.sdpMLineIndex!==null?E(I,{candidate:g.candidate.candidate,sdpMid:g.candidate.sdpMid,sdpMLineIndex:g.candidate.sdpMLineIndex},$):E(I,{candidate:null},$)},f.oniceconnectionstatechange=()=>{var w;R("peerConnection.oniceconnectionstatechange => "+f.iceConnectionState);const g=ae(f.iceConnectionState);g===_.Connected?o=setTimeout(()=>{var p;(p=a.onConnectionStateChange)==null||p.call(a,_.Connected)},5e3):(clearTimeout(o),(w=a.onConnectionStateChange)==null||w.call(a,g))},f.ontrack=g=>{var w;R("peerConnection.ontrack",g),(w=a.onSrcObjectReady)==null||w.call(a,g.streams[0])},d.onmessage=g=>{var w;if(d.readyState==="open"){const[p,y]=g.data.split(":");p===k.StreamReady&&(clearTimeout(o),(w=a.onConnectionStateChange)==null||w.call(a,_.Connected))}},await f.setRemoteDescription(W),R("set remote description OK");const u=await f.createAnswer();return R("create answer OK"),await f.setLocalDescription(u),R("set local description OK"),await c(I,u,$),R("start connection OK"),{speak(g){return l(I,$,g)},async disconnect(){var g,w,p;if(I){if(f){if(ae(f.iceConnectionState)===_.New){(g=a.onVideoStateChange)==null||g.call(a,b.Stop),clearInterval(m);return}f.close(),f.oniceconnectionstatechange=null,f.onnegotiationneeded=null,f.onicecandidate=null,f.ontrack=null}try{await C(I,$).catch(y=>{})}catch(y){R("Error on close stream connection",y)}(w=a.onConnectionStateChange)==null||w.call(a,_.New),(p=a.onVideoStateChange)==null||p.call(a,b.Stop),clearInterval(m)}},sessionId:$,streamId:I}}function Me(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(l=>l.json()).catch(l=>console.error(l))}}}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===M.Clip)return{videoType:M.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:M.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 ve(e.id,_e(e,i.outputResolution),{...i,analytics:a,callbacks:{...i.callbacks,onConnectionStateChange:async l=>{var C,v;if(l===_.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(E){console.error(E),s("Cannot create new chat")}else l===_.Fail&&s(new Error("Cannot create connection"));(v=(C=i.callbacks).onConnectionStateChange)==null||v.call(C,l)},onVideoStateChange(l){var C,v;(v=(C=i.callbacks).onVideoStateChange)==null||v.call(C,l)}}}).catch(s)})}function Ie(e,i,t){return te(i,t||L).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,$,f;const t={messages:[],chatMode:i.mode||A.Functional};let a=-1;const r=i.wsURL||ce,n=i.baseURL||L,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 l=Me({token:s,agent:c,...i});l.track("agent-sdk",{event:"loaded",...Ce(c)});const C={onMessage:(d,m)=>{var u,g,w,p;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===x.Partial?S.content+y:y),d===x.Answer&&(a=t.messages.length)),d===x.Answer&&l.track("agent-message-received",{messages:t.messages.length}),(g=(u=i.callbacks).onNewMessage)==null||g.call(u,t.messages)}else{if([k.StreamVideoCreated,k.StreamVideoDone,k.StreamVideoError,k.StreamVideoRejected].includes(d)){const y=d.split("/")[1];l.track("agent-video",{...m,event:y})}[k.StreamFailed,k.StreamVideoError,k.StreamVideoRejected].includes(d)&&((p=(w=i.callbacks).onError)==null||p.call(w,new Error(`Stream failed with event ${d}`),{data:m}))}}};async function v(){var g,w,p,y,S;const d=await ne(i.auth,r,C),{streamingManager:m,chat:u}=await B(c,i,o,l,t.chat);a=-1,t.messages.length===0&&(t.messages=j(c),(w=(g=i.callbacks).onNewMessage)==null||w.call(g,t.messages)),u!=null&&u.id&&u.id!==((p=t.chat)==null?void 0:p.id)&&((S=(y=i.callbacks).onNewChat)==null||S.call(y,u==null?void 0:u.id)),t.streamingManager=m,t.socketManager=d,t.chat=u,I(A.Functional),l.track("agent-chat",{event:"connect",chatId:u.id,agentId:c.id})}async function E(){var d,m,u,g,w;(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=(u=i.callbacks).onNewMessage)==null||g.call(u,t.messages),l.track("agent-chat",{event:"disconnect",chatId:(w=t.chat)==null?void 0:w.id,agentId:c.id})}async function I(d){var m,u;d!==t.chatMode&&(l.track("agent-mode-change",{mode:d}),t.chatMode=d,t.chatMode!==A.Functional&&await E(),(u=(m=i.callbacks).onModeChange)==null||u.call(m,d))}async function W(){if(!t.chat)return v();const{streamingManager:d,chat:m}=await B(c,i,o,l,t.chat);t.streamingManager=d,I(A.Functional),l.track("agent-chat",{event:"reconnect",chatId:m.id,agentId:c.id})}return{agent:c,starterMessages:((f=c.knowledge)==null?void 0:f.starter_message)||[],connect:v,disconnect:E,changeMode:I,async reconnect(){var g,w;if(!t.chat)return v();(g=t.socketManager)==null||g.disconnect(),await((w=t.streamingManager)==null?void 0:w.disconnect());const d=await ne(i.auth,r,C),{streamingManager:m,chat:u}=await B(c,i,o,l,t.chat);t.streamingManager=m,t.socketManager=d,I(A.Functional),l.track("agent-chat",{event:"reconnect",chatId:u.id,agentId:c.id})},async chat(d,m=!1){var g,w,p,y,S,O,T,ie,se;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===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()}),(w=(g=i.callbacks).onNewMessage)==null||w.call(g,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 oe=t.messages.slice(0,-1);let N;try{N=await o.chat(c.id,t.chat.id,{sessionId:(p=t.streamingManager)==null?void 0:p.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(),N=await o.chat(c.id,t.chat.id,{sessionId:(O=t.streamingManager)==null?void 0:O.sessionId,streamId:(T=t.streamingManager)==null?void 0:T.streamId,messages:oe,chatMode:t.chatMode,append_chat:m});else throw U}return l.track("agent-message-send",{event:"success",messages:t.messages.length+1}),K.context=N.context,N.result&&(K.content=N.result,K.matches=N.matches,l.track("agent-message-received",{latency:Date.now()-F,messages:t.messages.length}),(se=(ie=i.callbacks).onNewMessage)==null||se.call(ie,t.messages)),N}catch(F){throw t.messages[t.messages.length-1].id===u&&t.messages.pop(),l.track("agent-message-send",{event:"error",messages:t.messages.length}),F}},rate(d,m,u){var p,y,S,O;const g=t.messages.find(T=>T.id===d);if(t.chat){if(!g)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const w=((p=g.matches)==null?void 0:p.map(T=>[T.document_id,T.id]))??[];return l.track("agent-rate",{event:u?"update":"create",thumb:m===1?"up":"down",knowledge_id:((y=c.knowledge)==null?void 0:y.id)??"",matches:w,score:m}),u?o.updateRating(c.id,t.chat.id,u,{knowledge_id:((S=c.knowledge)==null?void 0:S.id)??"",message_id:d,matches:w,score:m}):o.createRating(c.id,t.chat.id,{knowledge_id:((O=c.knowledge)==null?void 0:O.id)??"",message_id:d,matches:w,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 l.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 u=m();return l.track("agent-speak",u),t.streamingManager.speak({script:u})}}}h.ChatMode=A,h.ChatProgress=x,h.ConnectionState=_,h.DocumentType=X,h.KnowledgeType=Q,h.PlanGroup=H,h.Providers=Y,h.RateState=J,h.StreamEvents=k,h.StreamingState=b,h.Subject=q,h.UserPlan=P,h.VideoType=M,h.VoiceAccess=Z,h.createAgentManager=Ae,h.getAgent=Ie,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
@@ -1,4 +1,4 @@
1
- import { Agent, AgentPayload, Auth, Chat, ChatPayload, ChatResponse, RatingEntity, RatingPayload } from '../types/index';
1
+ import { Agent, AgentPayload, Auth, Chat, ChatMode, ChatPayload, ChatResponse, RatingEntity, RatingPayload } from '../types/index';
2
2
  export declare function createAgentsApi(auth: Auth, host?: string, onError?: (error: Error, errorData: object) => void): {
3
3
  create(payload: AgentPayload, options?: RequestInit): Promise<Agent>;
4
4
  getAgents(tag?: string, options?: RequestInit): Promise<Agent[]>;
@@ -7,6 +7,9 @@ export declare function createAgentsApi(auth: Auth, host?: string, onError?: (er
7
7
  update(id: string, payload: AgentPayload, options?: RequestInit): Promise<Agent>;
8
8
  newChat(agentId: string, options?: RequestInit): Promise<Chat>;
9
9
  chat(agentId: string, chatId: string, payload: ChatPayload, options?: RequestInit): Promise<ChatResponse>;
10
+ getChatMode(agentId: string, chatId: string, options?: RequestInit): Promise<{
11
+ chatMode: ChatMode;
12
+ }>;
10
13
  createRating(agentId: string, chatId: string, payload: RatingPayload, options?: RequestInit): Promise<RatingEntity>;
11
14
  updateRating(agentId: string, chatId: string, ratingId: string, payload: Partial<RatingPayload>, options?: RequestInit): Promise<RatingEntity>;
12
15
  deleteRating(agentId: string, chatId: string, ratingId: string, options?: RequestInit): Promise<RatingEntity>;
@@ -141,5 +141,11 @@ export interface AgentManager {
141
141
  * @param mode - ChatMode
142
142
  */
143
143
  changeMode(mode: ChatMode): void;
144
+ /**
145
+ * Method to fetch the mode of the chat, dependend on the credit and chat history checks
146
+ */
147
+ getChatmode: () => Promise<{
148
+ chatMode: string;
149
+ }>;
144
150
  }
145
151
  export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@d-id/client-sdk",
3
3
  "private": false,
4
- "version": "1.0.19-beta.95",
4
+ "version": "1.0.19-beta.96",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {
@@ -44,4 +44,4 @@
44
44
  "vite": "^5.1.4",
45
45
  "vite-plugin-dts": "^3.7.3"
46
46
  }
47
- }
47
+ }