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

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 || {}), 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 || {}), 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 || {}), y = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(y || {}), 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 || {}), 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 || {}, v = new WebSocket(`${r}?authorization=${Q(n)}`);
118
+ v.onmessage = s, v.onclose = c, v.onerror = (M) => {
119
+ console.error(M), h == null || h("Websocket failed to connect", M), t(M);
120
+ }, v.onopen = (M) => {
121
+ o == null || o(M), i(v);
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) {
@@ -164,39 +164,39 @@ function me(e, i, t, a) {
164
164
  presenter_id: n.presenter_id,
165
165
  compatibility_mode: n.compatibility_mode,
166
166
  stream_warmup: n.stream_warmup,
167
- type: v.Clip
167
+ type: y.Clip
168
168
  });
169
169
  },
170
170
  startConnection(n, s, o) {
171
171
  return r.post(`/streams/${n}/sdp`, {
172
172
  session_id: o,
173
173
  answer: s,
174
- type: v.Clip
174
+ type: y.Clip
175
175
  });
176
176
  },
177
177
  addIceCandidate(n, s, o) {
178
178
  return r.post(`/streams/${n}/ice`, {
179
179
  session_id: o,
180
180
  ...s,
181
- type: v.Clip
181
+ type: y.Clip
182
182
  });
183
183
  },
184
184
  sendStreamRequest(n, s, o) {
185
185
  return r.post(`/streams/${n}`, {
186
186
  session_id: s,
187
187
  ...o,
188
- type: v.Clip
188
+ type: y.Clip
189
189
  });
190
190
  },
191
191
  close(n, s) {
192
192
  return r.delete(`/streams/${n}`, {
193
193
  session_id: s,
194
- type: v.Clip
194
+ type: y.Clip
195
195
  });
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) {
@@ -208,41 +208,41 @@ function he(e, i, t, a) {
208
208
  compatibility_mode: n.compatibility_mode,
209
209
  stream_warmup: n.stream_warmup,
210
210
  output_resolution: n.output_resolution,
211
- type: v.Talk
211
+ type: y.Talk
212
212
  }, s);
213
213
  },
214
214
  startConnection(n, s, o, c) {
215
215
  return r.post(`/streams/${n}/sdp`, {
216
216
  session_id: o,
217
217
  answer: s,
218
- type: v.Talk
218
+ type: y.Talk
219
219
  }, c);
220
220
  },
221
221
  addIceCandidate(n, s, o, c) {
222
222
  return r.post(`/streams/${n}/ice`, {
223
223
  session_id: o,
224
224
  ...s,
225
- type: v.Talk
225
+ type: y.Talk
226
226
  }, c);
227
227
  },
228
228
  sendStreamRequest(n, s, o, c) {
229
229
  return r.post(`/streams/${n}`, {
230
230
  session_id: s,
231
231
  ...o,
232
- type: v.Talk
232
+ type: y.Talk
233
233
  }, c);
234
234
  },
235
235
  close(n, s, o) {
236
236
  return r.delete(`/streams/${n}`, {
237
237
  session_id: s,
238
- type: v.Talk
238
+ type: y.Talk
239
239
  }, o);
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 R = (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
248
  return S.Connected;
@@ -257,7 +257,7 @@ function q(e) {
257
257
  return S.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,41 +268,41 @@ 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,
291
+ sendStreamRequest: h,
292
+ close: v,
293
293
  createStream: M,
294
294
  addIceCandidate: E
295
- } = i.videoType === v.Clip ? me(r, s, e, a.onError) : he(r, s, e, a.onError), {
295
+ } = i.videoType === y.Clip ? ue(r, s, e, a.onError) : me(r, s, e, a.onError), {
296
296
  id: _,
297
297
  offer: K,
298
298
  ice_servers: P,
299
299
  session_id: I
300
- } = await M(i), f = new we({
300
+ } = await M(i), f = new he({
301
301
  iceServers: P
302
302
  }), d = f.createDataChannel("JanusDataChannel");
303
303
  if (!I)
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
307
  R("peerConnection.onicecandidate", g), g.candidate && g.candidate.sdpMid && g.candidate.sdpMLineIndex !== null ? E(_, {
308
308
  candidate: g.candidate.candidate,
@@ -312,21 +312,21 @@ async function Me(e, i, {
312
312
  candidate: null
313
313
  }, I);
314
314
  }, f.oniceconnectionstatechange = () => {
315
- var h;
315
+ var m;
316
316
  R("peerConnection.oniceconnectionstatechange => " + f.iceConnectionState);
317
- const g = q(f.iceConnectionState);
317
+ const g = j(f.iceConnectionState);
318
318
  g === S.Connected ? o = setTimeout(() => {
319
319
  var w;
320
320
  (w = a.onConnectionStateChange) == null || w.call(a, S.Connected);
321
- }, 5e3) : (clearTimeout(o), (h = a.onConnectionStateChange) == null || h.call(a, g));
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
+ R("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 === $.StreamReady && (clearTimeout(o), (m = a.onConnectionStateChange) == null || m.call(a, S.Connected));
330
330
  }
331
331
  }, await f.setRemoteDescription(K), R("set remote description OK");
332
332
  const l = await f.createAnswer();
@@ -336,28 +336,28 @@ async function Me(e, i, {
336
336
  * @param payload
337
337
  */
338
338
  speak(g) {
339
- return u(_, I, g);
339
+ return h(_, I, g);
340
340
  },
341
341
  /**
342
342
  * Method to close RTC connection
343
343
  */
344
344
  async disconnect() {
345
- var g, h, w;
345
+ var g, m, w;
346
346
  if (_) {
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) === S.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 v(_, I).catch((p) => {
356
356
  });
357
357
  } catch (p) {
358
358
  R("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, S.New), (w = a.onVideoStateChange) == null || w.call(a, N.Stop), clearInterval(u);
361
361
  }
362
362
  },
363
363
  /**
@@ -370,33 +370,32 @@ async function Me(e, i, {
370
370
  streamId: _
371
371
  };
372
372
  }
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 = {
373
+ function Me(e) {
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,7 +406,7 @@ 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
  }
@@ -429,21 +428,21 @@ function ve(e) {
429
428
  }
430
429
  };
431
430
  }
432
- const Ce = 1080;
433
- function _e(e, i) {
431
+ const ye = 1080;
432
+ function Ce(e, i) {
434
433
  if (e.presenter) {
435
- if (e.presenter.type === v.Clip)
434
+ if (e.presenter.type === y.Clip)
436
435
  return {
437
- videoType: v.Clip,
436
+ videoType: y.Clip,
438
437
  driver_id: e.presenter.driver_id,
439
438
  presenter_id: e.presenter.presenter_id,
440
439
  stream_warmup: !0
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 ? ye : void 0);
445
444
  return {
446
- videoType: v.Talk,
445
+ videoType: y.Talk,
447
446
  source_url: e.presenter.source_url,
448
447
  stream_warmup: !0,
449
448
  ...t && {
@@ -454,14 +453,14 @@ 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 v, M;
463
+ if (h === S.Connected)
465
464
  try {
466
465
  o || (o = await t.newChat(e.id), a.track("agent-chat", {
467
466
  event: "created",
@@ -475,19 +474,19 @@ function U(e, i, t, a, r) {
475
474
  console.error(E), s("Cannot create new chat");
476
475
  }
477
476
  else
478
- u === S.Fail && s(new Error("Cannot create connection"));
479
- (M = (y = i.callbacks).onConnectionStateChange) == null || M.call(y, u);
477
+ h === S.Fail && s(new Error("Cannot create connection"));
478
+ (M = (v = i.callbacks).onConnectionStateChange) == null || M.call(v, h);
480
479
  },
481
- onVideoStateChange(u) {
482
- var y, M;
483
- (M = (y = i.callbacks).onVideoStateChange) == null || M.call(y, u);
480
+ onVideoStateChange(h) {
481
+ var v, M;
482
+ (M = (v = i.callbacks).onVideoStateChange) == null || M.call(v, h);
484
483
  }
485
484
  }
486
485
  }).catch(s);
487
486
  });
488
487
  }
489
- function Se(e, i, t) {
490
- return Y(i, t || L).getById(e);
488
+ function _e(e, i, t) {
489
+ return X(i, t || L).getById(e);
491
490
  }
492
491
  function B(e) {
493
492
  let i = "";
@@ -503,88 +502,86 @@ function B(e) {
503
502
  created_at: (/* @__PURE__ */ new Date()).toISOString()
504
503
  }];
505
504
  }
506
- async function Ie(e, i) {
505
+ async function Se(e, i) {
507
506
  var P, I, f;
508
507
  const t = {
509
508
  messages: [],
510
509
  chatMode: i.mode || k.Functional
511
510
  };
512
511
  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);
512
+ 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);
514
513
  t.messages = B(c), (I = (P = i.callbacks).onNewMessage) == null || I.call(P, t.messages);
515
- const u = ye({
514
+ const h = Me({
516
515
  token: s,
517
516
  agent: c,
518
517
  ...i
519
518
  });
520
- u.track("agent-sdk", {
519
+ h.track("agent-sdk", {
521
520
  event: "loaded",
522
521
  ...ve(c)
523
522
  });
524
- const y = {
525
- onMessage: (d, m) => {
526
- var l, g, h, w;
527
- if ("content" in m) {
523
+ const v = {
524
+ onMessage: (d, u) => {
525
+ var l, g, m, w;
526
+ if ("content" in u) {
528
527
  const {
529
528
  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", {
529
+ } = u, C = t.messages[t.messages.length - 1];
530
+ (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
531
  messages: t.messages.length
533
532
  }), (g = (l = i.callbacks).onNewMessage) == null || g.call(l, t.messages);
534
533
  } else {
535
534
  if ([$.StreamVideoCreated, $.StreamVideoDone, $.StreamVideoError, $.StreamVideoRejected].includes(d)) {
536
535
  const p = d.split("/")[1];
537
- u.track("agent-video", {
538
- ...m,
536
+ h.track("agent-video", {
537
+ ...u,
539
538
  event: p
540
539
  });
541
540
  }
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
541
+ [$.StreamFailed, $.StreamVideoError, $.StreamVideoRejected].includes(d) && ((w = (m = i.callbacks).onError) == null || w.call(m, new Error(`Stream failed with event ${d}`), {
542
+ data: u
544
543
  }));
545
544
  }
546
545
  }
547
546
  };
548
547
  async function M() {
549
- var h, w, p, C, A;
550
- const d = await j(i.auth, r, y), {
551
- streamingManager: m,
548
+ var m, w, p, C, A;
549
+ const d = await J(i.auth, r, v), {
550
+ streamingManager: u,
552
551
  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;
552
+ } = await U(c, i, o, h, t.chat);
553
+ 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) && ((A = (C = i.callbacks).onNewChat) == null || A.call(C, l == null ? void 0 : l.id)), t.streamingManager = u, t.socketManager = d, t.chat = l;
555
554
  const g = t.chat.chatMode || k.Functional;
556
- _(g), u.track("agent-chat", {
555
+ _(g), h.track("agent-chat", {
557
556
  event: "connect",
558
557
  chatId: l.id,
559
558
  agentId: c.id
560
559
  });
561
560
  }
562
561
  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", {
562
+ var d, u, l, g, m;
563
+ (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
564
  event: "disconnect",
566
- chatId: (h = t.chat) == null ? void 0 : h.id,
565
+ chatId: (m = t.chat) == null ? void 0 : m.id,
567
566
  agentId: c.id
568
567
  });
569
568
  }
570
569
  async function _(d) {
571
- var m, l;
572
- d !== t.chatMode && (u.track("agent-mode-change", {
570
+ var u, l;
571
+ d !== t.chatMode && (h.track("agent-mode-change", {
573
572
  mode: d
574
- }), t.chatMode = d, t.chatMode !== k.Functional && await E(), (l = (m = i.callbacks).onModeChange) == null || l.call(m, d));
573
+ }), t.chatMode = d, t.chatMode !== k.Functional && await E(), (l = (u = i.callbacks).onModeChange) == null || l.call(u, d));
575
574
  }
576
575
  async function K() {
577
576
  if (!t.chat)
578
577
  return M();
579
578
  const {
580
579
  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", {
580
+ chat: u
581
+ } = await U(c, i, o, h, t.chat);
582
+ t.streamingManager = d, _(t.chat.chatMode || k.Functional), h.track("agent-chat", {
586
583
  event: "reconnect",
587
- chatId: m.id,
584
+ chatId: u.id,
588
585
  agentId: c.id
589
586
  });
590
587
  }
@@ -595,25 +592,25 @@ async function Ie(e, i) {
595
592
  disconnect: E,
596
593
  changeMode: _,
597
594
  async reconnect() {
598
- var h, w;
595
+ var m, w;
599
596
  if (!t.chat)
600
597
  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,
598
+ (m = t.socketManager) == null || m.disconnect(), await ((w = t.streamingManager) == null ? void 0 : w.disconnect());
599
+ const d = await J(i.auth, r, v), {
600
+ streamingManager: u,
604
601
  chat: l
605
- } = await U(c, i, o, u, t.chat);
606
- t.streamingManager = m, t.socketManager = d;
602
+ } = await U(c, i, o, h, t.chat);
603
+ t.streamingManager = u, t.socketManager = d;
607
604
  const g = t.chat.chatMode || k.Functional;
608
- _(g), u.track("agent-chat", {
605
+ _(g), h.track("agent-chat", {
609
606
  event: "reconnect",
610
607
  chatId: l.id,
611
608
  agentId: c.id
612
609
  });
613
610
  },
614
- async chat(d, m = !1) {
615
- var g, h, w, p, C, A, x, W, H;
616
- const l = F();
611
+ async chat(d) {
612
+ var l, g, m, w, p, C, A, x, W;
613
+ const u = F();
617
614
  try {
618
615
  const O = Date.now();
619
616
  if (d.length >= 800)
@@ -622,63 +619,61 @@ async function Ie(e, i) {
622
619
  throw new Error("Message cannot be empty");
623
620
  if (t.chatMode === k.Maintenance)
624
621
  throw new Error("Chat is in maintenance mode");
625
- if (![k.TextOnly, k.Playground].includes(t.chatMode)) {
626
- if (!t.streamingManager)
622
+ if (![k.TextOnly, k.Playground].includes(t.chatMode))
623
+ if (t.streamingManager) {
624
+ if (!t.chat)
625
+ throw new Error("Chat is not initialized");
626
+ } else
627
627
  throw new Error("Streaming manager is not initialized");
628
- if (!t.chat)
629
- throw new Error("Chat is not initialized");
630
- }
631
628
  t.messages.push({
632
629
  id: F(),
633
630
  role: "user",
634
631
  content: d,
635
632
  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));
633
+ }), (g = (l = i.callbacks).onNewMessage) == null || g.call(l, t.messages), t.chat || (t.chat = await o.newChat(c.id));
637
634
  const b = {
638
- id: l,
635
+ id: u,
639
636
  role: "assistant",
640
637
  content: "",
641
638
  created_at: (/* @__PURE__ */ new Date()).toISOString(),
642
639
  matches: []
643
640
  };
644
641
  t.messages.push(b);
645
- const J = t.messages.slice(0, -1);
642
+ const H = t.messages.slice(0, -1);
646
643
  let T;
647
644
  try {
648
645
  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
646
+ sessionId: (m = t.streamingManager) == null ? void 0 : m.sessionId,
647
+ streamId: (w = t.streamingManager) == null ? void 0 : w.streamId,
648
+ messages: H,
649
+ chatMode: t.chatMode
654
650
  });
655
651
  } catch (z) {
656
- if ((C = z == null ? void 0 : z.message) != null && C.includes("missing or invalid session_id"))
652
+ if ((p = z == null ? void 0 : z.message) != null && p.includes("missing or invalid session_id"))
657
653
  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
654
+ sessionId: (C = t.streamingManager) == null ? void 0 : C.sessionId,
655
+ streamId: (A = t.streamingManager) == null ? void 0 : A.streamId,
656
+ messages: H,
657
+ chatMode: t.chatMode
663
658
  });
664
659
  else
665
660
  throw z;
666
661
  }
667
- return u.track("agent-message-send", {
662
+ return h.track("agent-message-send", {
668
663
  event: "success",
669
664
  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", {
665
+ }), b.context = T.context, T.result && (b.content = T.result, b.matches = T.matches, h.track("agent-message-received", {
671
666
  latency: Date.now() - O,
672
667
  messages: t.messages.length
673
- }), (H = (W = i.callbacks).onNewMessage) == null || H.call(W, t.messages)), T;
668
+ }), (W = (x = i.callbacks).onNewMessage) == null || W.call(x, t.messages)), T;
674
669
  } catch (O) {
675
- throw t.messages[t.messages.length - 1].id === l && t.messages.pop(), u.track("agent-message-send", {
670
+ throw t.messages[t.messages.length - 1].id === u && t.messages.pop(), h.track("agent-message-send", {
676
671
  event: "error",
677
672
  messages: t.messages.length
678
673
  }), O;
679
674
  }
680
675
  },
681
- rate(d, m, l) {
676
+ rate(d, u, l) {
682
677
  var w, p, C, A;
683
678
  const g = t.messages.find((x) => x.id === d);
684
679
  if (t.chat) {
@@ -686,23 +681,23 @@ async function Ie(e, i) {
686
681
  throw new Error("Message not found");
687
682
  } else
688
683
  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", {
684
+ const m = ((w = g.matches) == null ? void 0 : w.map((x) => [x.document_id, x.id])) ?? [];
685
+ return h.track("agent-rate", {
691
686
  event: l ? "update" : "create",
692
- thumb: m === 1 ? "up" : "down",
687
+ thumb: u === 1 ? "up" : "down",
693
688
  knowledge_id: ((p = c.knowledge) == null ? void 0 : p.id) ?? "",
694
- matches: h,
695
- score: m
689
+ matches: m,
690
+ score: u
696
691
  }), l ? o.updateRating(c.id, t.chat.id, l, {
697
692
  knowledge_id: ((C = c.knowledge) == null ? void 0 : C.id) ?? "",
698
693
  message_id: d,
699
- matches: h,
700
- score: m
694
+ matches: m,
695
+ score: u
701
696
  }) : o.createRating(c.id, t.chat.id, {
702
697
  knowledge_id: ((A = c.knowledge) == null ? void 0 : A.id) ?? "",
703
698
  message_id: d,
704
- matches: h,
705
- score: m
699
+ matches: m,
700
+ score: u
706
701
  });
707
702
  },
708
703
  getChatmode() {
@@ -711,19 +706,19 @@ async function Ie(e, i) {
711
706
  return o.getChatMode(c.id, t.chat.id);
712
707
  },
713
708
  deleteRate(d) {
714
- var m;
709
+ var u;
715
710
  if (!t.chat)
716
711
  throw new Error("Chat is not initialized");
717
- return u.track("agent-rate-delete", {
712
+ return h.track("agent-rate-delete", {
718
713
  type: "text",
719
- chat_id: (m = t.chat) == null ? void 0 : m.id,
714
+ chat_id: (u = t.chat) == null ? void 0 : u.id,
720
715
  id: d
721
716
  }), o.deleteRating(c.id, t.chat.id, d);
722
717
  },
723
718
  speak(d) {
724
719
  if (!t.streamingManager)
725
720
  throw new Error("Streaming manager is not initialized");
726
- function m() {
721
+ function u() {
727
722
  if (c.presenter) {
728
723
  if (d.type === "text")
729
724
  return {
@@ -741,8 +736,8 @@ async function Ie(e, i) {
741
736
  throw new Error("Presenter is not initialized");
742
737
  throw new Error("Invalid payload");
743
738
  }
744
- const l = m();
745
- return u.track("agent-speak", l), t.streamingManager.speak({
739
+ const l = u();
740
+ return h.track("agent-speak", l), t.streamingManager.speak({
746
741
  script: l
747
742
  });
748
743
  }
@@ -752,17 +747,17 @@ export {
752
747
  k as ChatMode,
753
748
  D as ChatProgress,
754
749
  S as ConnectionState,
755
- ae as DocumentType,
756
- re as KnowledgeType,
757
- ee as PlanGroup,
758
- ie as Providers,
759
- te as RateState,
750
+ re as DocumentType,
751
+ ne as KnowledgeType,
752
+ G as PlanGroup,
753
+ ae as Providers,
754
+ ee as RateState,
760
755
  $ as StreamEvents,
761
756
  N as StreamingState,
762
- ne as Subject,
763
- G as UserPlan,
764
- v as VideoType,
765
- se as VoiceAccess,
766
- Ie as createAgentManager,
767
- Se as getAgent
757
+ te as Subject,
758
+ Z as UserPlan,
759
+ y as VideoType,
760
+ ie as VoiceAccess,
761
+ Se as createAgentManager,
762
+ _e as getAgent
768
763
  };
@@ -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,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",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=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 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 R=(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(x.Start),n=!0)):n&&(r++,r>=a&&(i==null||i(x.Stop),n=!1))},100)}async function ye(e,i,{debug:t=!1,callbacks:a,auth:r,analytics:n,baseURL:s=O}){re=t;let o;const{startConnection:c,sendStreamRequest:h,close:C,createStream:M,addIceCandidate:T}=i.videoType===v.Clip?me(r,s,e,a.onError):he(r,s,e,a.onError),{id:I,offer:W,ice_servers:z,session_id:$}=await M(i),p=new we({iceServers:z}),d=p.createDataChannel("JanusDataChannel");if(!$)throw new Error("Could not create session_id");const u=pe(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 m;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),(m=a.onConnectionStateChange)==null||m.call(a,g))},p.ontrack=g=>{var m;R("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===k.StreamReady&&(clearTimeout(o),(m=a.onConnectionStateChange)==null||m.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 h(I,$,g)},async disconnect(){var g,m,w;if(I){if(p){if(ae(p.iceConnectionState)===_.New){(g=a.onVideoStateChange)==null||g.call(a,x.Stop),clearInterval(u);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)}(m=a.onConnectionStateChange)==null||m.call(a,_.New),(w=a.onVideoStateChange)==null||w.call(a,x.Stop),clearInterval(u)}},sessionId:$,streamId:I}}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{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 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||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 Ie(e,i){var z,$,p;const t={messages:[],chatMode:i.mode||A.Functional};let a=-1;const r=i.wsURL||oe,n=i.baseURL||O,s=i.mixpanelKey||ce,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 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===L.Partial?S.content+y:y),d===L.Answer&&(a=t.messages.length)),d===L.Answer&&h.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];h.track("agent-video",{...u,event:y})}[k.StreamFailed,k.StreamVideoError,k.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,E;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=j(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)&&((E=(S=i.callbacks).onNewChat)==null||E.call(S,l==null?void 0:l.id)),t.streamingManager=u,t.socketManager=d,t.chat=l;const g=t.chat.chatMode||A.Functional;I(g),h.track("agent-chat",{event:"connect",chatId:l.id,agentId:c.id})}async function T(){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=j(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 I(d){var u,l;d!==t.chatMode&&(h.track("agent-mode-change",{mode:d}),t.chatMode=d,t.chatMode!==A.Functional&&await T(),(l=(u=i.callbacks).onModeChange)==null||l.call(u,d))}async function W(){if(!t.chat)return M();const{streamingManager:d,chat:u}=await B(c,i,o,h,t.chat);t.streamingManager=d,I(t.chat.chatMode||A.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:T,changeMode:I,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||A.Functional;I(g),h.track("agent-chat",{event:"reconnect",chatId:l.id,agentId:c.id})},async chat(d){var l,g,m,w,y,S,E,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===A.Maintenance)throw new Error("Chat is in maintenance mode");if(![A.TextOnly,A.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 W(),P=await o.chat(c.id,t.chat.id,{sessionId:(S=t.streamingManager)==null?void 0:S.sessionId,streamId:(E=t.streamingManager)==null?void 0:E.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,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 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:((E=c.knowledge)==null?void 0:E.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=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=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.98",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {