@d-id/client-sdk 1.0.19-beta.96 → 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 || {}), 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
- 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: 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);
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: M.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: M.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: M.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: M.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: M.Clip
194
+ type: y.Clip
195
195
  });
196
196
  }
197
197
  };
198
198
  }
199
- function we(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 we(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: M.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: M.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: M.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: M.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: M.Talk
238
+ type: y.Talk
239
239
  }, o);
240
240
  }
241
241
  };
242
242
  }
243
- let Z = !1;
244
- const A = (e, i) => Z && console.log(e, i), he = (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,96 +268,96 @@ 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 ye(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: l,
291
+ sendStreamRequest: h,
292
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
+ createStream: M,
294
+ addIceCandidate: E
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 y(i), h = new he({
300
+ } = await M(i), f = new he({
301
301
  iceServers: P
302
- }), d = h.createDataChannel("JanusDataChannel");
302
+ }), d = f.createDataChannel("JanusDataChannel");
303
303
  if (!I)
304
304
  throw new Error("Could not create session_id");
305
- const m = pe(h, a.onVideoStateChange);
306
- h.onicecandidate = (g) => {
307
- A("peerConnection.onicecandidate", g), g.candidate && g.candidate.sdpMid && g.candidate.sdpMLineIndex !== null ? R(_, {
305
+ const u = fe(f, a.onVideoStateChange);
306
+ f.onicecandidate = (g) => {
307
+ R("peerConnection.onicecandidate", g), g.candidate && g.candidate.sdpMid && g.candidate.sdpMLineIndex !== null ? E(_, {
308
308
  candidate: g.candidate.candidate,
309
309
  sdpMid: g.candidate.sdpMid,
310
310
  sdpMLineIndex: g.candidate.sdpMLineIndex
311
- }, I) : R(_, {
311
+ }, I) : E(_, {
312
312
  candidate: null
313
313
  }, I);
314
- }, h.oniceconnectionstatechange = () => {
315
- var w;
316
- A("peerConnection.oniceconnectionstatechange => " + h.iceConnectionState);
317
- const g = q(h.iceConnectionState);
314
+ }, f.oniceconnectionstatechange = () => {
315
+ var m;
316
+ R("peerConnection.oniceconnectionstatechange => " + f.iceConnectionState);
317
+ const g = j(f.iceConnectionState);
318
318
  g === S.Connected ? o = setTimeout(() => {
319
- var f;
320
- (f = a.onConnectionStateChange) == null || f.call(a, S.Connected);
321
- }, 5e3) : (clearTimeout(o), (w = a.onConnectionStateChange) == null || w.call(a, g));
322
- }, h.ontrack = (g) => {
323
- var w;
324
- A("peerConnection.ontrack", g), (w = a.onSrcObjectReady) == null || w.call(a, g.streams[0]);
319
+ var w;
320
+ (w = a.onConnectionStateChange) == null || w.call(a, S.Connected);
321
+ }, 5e3) : (clearTimeout(o), (m = a.onConnectionStateChange) == null || m.call(a, g));
322
+ }, f.ontrack = (g) => {
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 w;
326
+ var m;
327
327
  if (d.readyState === "open") {
328
- const [f, p] = g.data.split(":");
329
- f === $.StreamReady && (clearTimeout(o), (w = a.onConnectionStateChange) == null || w.call(a, S.Connected));
328
+ const [w, p] = g.data.split(":");
329
+ w === $.StreamReady && (clearTimeout(o), (m = a.onConnectionStateChange) == null || m.call(a, S.Connected));
330
330
  }
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
+ }, await f.setRemoteDescription(K), R("set remote description OK");
332
+ const l = await f.createAnswer();
333
+ return R("create answer OK"), await f.setLocalDescription(l), R("set local description OK"), await c(_, l, I), R("start connection OK"), {
334
334
  /**
335
335
  * Method to send request to server to get clip or talk depend on you payload
336
336
  * @param payload
337
337
  */
338
338
  speak(g) {
339
- return l(_, 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, w, f;
345
+ var g, m, w;
346
346
  if (_) {
347
- if (h) {
348
- if (q(h.iceConnectionState) === S.New) {
349
- (g = a.onVideoStateChange) == null || g.call(a, N.Stop), clearInterval(m);
347
+ if (f) {
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
- h.close(), h.oniceconnectionstatechange = null, h.onnegotiationneeded = null, h.onicecandidate = null, h.ontrack = null;
352
+ f.close(), f.oniceconnectionstatechange = null, f.onnegotiationneeded = null, f.onicecandidate = null, f.ontrack = null;
353
353
  }
354
354
  try {
355
355
  await v(_, I).catch((p) => {
356
356
  });
357
357
  } catch (p) {
358
- A("Error on close stream connection", p);
358
+ R("Error on close stream connection", p);
359
359
  }
360
- (w = a.onConnectionStateChange) == null || w.call(a, S.New), (f = a.onVideoStateChange) == null || f.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 ye(e, i, {
370
370
  streamId: _
371
371
  };
372
372
  }
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 = {
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,11 +406,11 @@ function ve(e) {
407
406
  }])
408
407
  })
409
408
  };
410
- return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1", c).then((l) => l.json()).catch((l) => console.error(l));
409
+ return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1", n).then((s) => s.json()).catch((s) => console.error(s));
411
410
  }
412
411
  };
413
412
  }
414
- function Me(e) {
413
+ function ve(e) {
415
414
  var a, r, n, s, o;
416
415
  const i = () => /Mobi|Android/i.test(navigator.userAgent) ? "Mobile" : "Desktop";
417
416
  return {
@@ -429,21 +428,21 @@ function Me(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 === M.Clip)
434
+ if (e.presenter.type === y.Clip)
436
435
  return {
437
- videoType: M.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: M.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 ye(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 (l) => {
463
- var v, y;
464
- if (l === 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",
@@ -471,23 +470,23 @@ function U(e, i, t, a, r) {
471
470
  chat: o,
472
471
  streamingManager: c
473
472
  });
474
- } catch (R) {
475
- console.error(R), s("Cannot create new chat");
473
+ } catch (E) {
474
+ console.error(E), s("Cannot create new chat");
476
475
  }
477
476
  else
478
- l === S.Fail && s(new Error("Cannot create connection"));
479
- (y = (v = i.callbacks).onConnectionStateChange) == null || y.call(v, l);
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(l) {
482
- var v, y;
483
- (y = (v = i.callbacks).onVideoStateChange) == null || y.call(v, l);
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,110 +502,114 @@ function B(e) {
503
502
  created_at: (/* @__PURE__ */ new Date()).toISOString()
504
503
  }];
505
504
  }
506
- async function Ie(e, i) {
507
- var P, I, h;
505
+ async function Se(e, i) {
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 l = ve({
514
+ const h = Me({
516
515
  token: s,
517
516
  agent: c,
518
517
  ...i
519
518
  });
520
- l.track("agent-sdk", {
519
+ h.track("agent-sdk", {
521
520
  event: "loaded",
522
- ...Me(c)
521
+ ...ve(c)
523
522
  });
524
523
  const v = {
525
- onMessage: (d, m) => {
526
- var u, g, w, f;
527
- if ("content" in m) {
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 && l.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
- }), (g = (u = i.callbacks).onNewMessage) == null || g.call(u, t.messages);
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
- l.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) && ((f = (w = i.callbacks).onError) == null || f.call(w, 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
- async function y() {
549
- var g, w, f, p, C;
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", {
547
+ async function M() {
548
+ var m, w, p, C, A;
549
+ const d = await J(i.auth, r, v), {
550
+ streamingManager: u,
551
+ 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;
554
+ const g = t.chat.chatMode || k.Functional;
555
+ _(g), h.track("agent-chat", {
555
556
  event: "connect",
556
- chatId: u.id,
557
+ chatId: l.id,
557
558
  agentId: c.id
558
559
  });
559
560
  }
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", {
561
+ async function E() {
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", {
563
564
  event: "disconnect",
564
- chatId: (w = t.chat) == null ? void 0 : w.id,
565
+ chatId: (m = t.chat) == null ? void 0 : m.id,
565
566
  agentId: c.id
566
567
  });
567
568
  }
568
569
  async function _(d) {
569
- var m, u;
570
- d !== t.chatMode && (l.track("agent-mode-change", {
570
+ var u, l;
571
+ d !== t.chatMode && (h.track("agent-mode-change", {
571
572
  mode: d
572
- }), t.chatMode = d, t.chatMode !== k.Functional && await R(), (u = (m = i.callbacks).onModeChange) == null || u.call(m, d));
573
+ }), t.chatMode = d, t.chatMode !== k.Functional && await E(), (l = (u = i.callbacks).onModeChange) == null || l.call(u, d));
573
574
  }
574
575
  async function K() {
575
576
  if (!t.chat)
576
- return y();
577
+ return M();
577
578
  const {
578
579
  streamingManager: d,
579
- chat: m
580
- } = await U(c, i, o, l, t.chat);
581
- t.streamingManager = d, _(k.Functional), l.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", {
582
583
  event: "reconnect",
583
- chatId: m.id,
584
+ chatId: u.id,
584
585
  agentId: c.id
585
586
  });
586
587
  }
587
588
  return {
588
589
  agent: c,
589
- starterMessages: ((h = c.knowledge) == null ? void 0 : h.starter_message) || [],
590
- connect: y,
591
- disconnect: R,
590
+ starterMessages: ((f = c.knowledge) == null ? void 0 : f.starter_message) || [],
591
+ connect: M,
592
+ disconnect: E,
592
593
  changeMode: _,
593
594
  async reconnect() {
594
- var g, w;
595
+ var m, w;
595
596
  if (!t.chat)
596
- return y();
597
- (g = t.socketManager) == null || g.disconnect(), await ((w = t.streamingManager) == null ? void 0 : w.disconnect());
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", {
597
+ return 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,
601
+ chat: l
602
+ } = await U(c, i, o, h, t.chat);
603
+ t.streamingManager = u, t.socketManager = d;
604
+ const g = t.chat.chatMode || k.Functional;
605
+ _(g), h.track("agent-chat", {
603
606
  event: "reconnect",
604
- chatId: u.id,
607
+ chatId: l.id,
605
608
  agentId: c.id
606
609
  });
607
610
  },
608
- async chat(d, m = !1) {
609
- var g, w, f, p, C, T, E, W, H;
611
+ async chat(d) {
612
+ var l, g, m, w, p, C, A, x, W;
610
613
  const u = F();
611
614
  try {
612
615
  const O = Date.now();
@@ -616,18 +619,18 @@ async function Ie(e, i) {
616
619
  throw new Error("Message cannot be empty");
617
620
  if (t.chatMode === k.Maintenance)
618
621
  throw new Error("Chat is in maintenance mode");
619
- if (![k.TextOnly, k.Playground].includes(t.chatMode)) {
620
- 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
621
627
  throw new Error("Streaming manager is not initialized");
622
- if (!t.chat)
623
- throw new Error("Chat is not initialized");
624
- }
625
628
  t.messages.push({
626
629
  id: F(),
627
630
  role: "user",
628
631
  content: d,
629
632
  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));
633
+ }), (g = (l = i.callbacks).onNewMessage) == null || g.call(l, t.messages), t.chat || (t.chat = await o.newChat(c.id));
631
634
  const b = {
632
635
  id: u,
633
636
  role: "assistant",
@@ -636,67 +639,65 @@ async function Ie(e, i) {
636
639
  matches: []
637
640
  };
638
641
  t.messages.push(b);
639
- const J = t.messages.slice(0, -1);
640
- let x;
642
+ const H = t.messages.slice(0, -1);
643
+ let T;
641
644
  try {
642
- x = await o.chat(c.id, t.chat.id, {
643
- sessionId: (f = t.streamingManager) == null ? void 0 : f.sessionId,
644
- streamId: (p = t.streamingManager) == null ? void 0 : p.streamId,
645
- messages: J,
646
- chatMode: t.chatMode,
647
- append_chat: m
645
+ T = await o.chat(c.id, t.chat.id, {
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
648
650
  });
649
651
  } catch (z) {
650
- if ((C = z == null ? void 0 : z.message) != null && C.includes("missing or invalid session_id"))
651
- console.log("Invalid stream, try reconnect with new stream id"), await K(), x = await o.chat(c.id, t.chat.id, {
652
- sessionId: (T = t.streamingManager) == null ? void 0 : T.sessionId,
653
- streamId: (E = t.streamingManager) == null ? void 0 : E.streamId,
654
- messages: J,
655
- chatMode: t.chatMode,
656
- append_chat: m
652
+ if ((p = z == null ? void 0 : z.message) != null && p.includes("missing or invalid session_id"))
653
+ console.log("Invalid stream, try reconnect with new stream id"), await K(), T = await o.chat(c.id, t.chat.id, {
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
657
658
  });
658
659
  else
659
660
  throw z;
660
661
  }
661
- return l.track("agent-message-send", {
662
+ return h.track("agent-message-send", {
662
663
  event: "success",
663
664
  messages: t.messages.length + 1
664
- }), b.context = x.context, x.result && (b.content = x.result, b.matches = x.matches, l.track("agent-message-received", {
665
+ }), b.context = T.context, T.result && (b.content = T.result, b.matches = T.matches, h.track("agent-message-received", {
665
666
  latency: Date.now() - O,
666
667
  messages: t.messages.length
667
- }), (H = (W = i.callbacks).onNewMessage) == null || H.call(W, t.messages)), x;
668
+ }), (W = (x = i.callbacks).onNewMessage) == null || W.call(x, t.messages)), T;
668
669
  } catch (O) {
669
- throw t.messages[t.messages.length - 1].id === u && t.messages.pop(), l.track("agent-message-send", {
670
+ throw t.messages[t.messages.length - 1].id === u && t.messages.pop(), h.track("agent-message-send", {
670
671
  event: "error",
671
672
  messages: t.messages.length
672
673
  }), O;
673
674
  }
674
675
  },
675
- rate(d, m, u) {
676
- var f, p, C, T;
677
- const g = t.messages.find((E) => E.id === d);
676
+ rate(d, u, l) {
677
+ var w, p, C, A;
678
+ const g = t.messages.find((x) => x.id === d);
678
679
  if (t.chat) {
679
680
  if (!g)
680
681
  throw new Error("Message not found");
681
682
  } else
682
683
  throw new Error("Chat is not initialized");
683
- const w = ((f = g.matches) == null ? void 0 : f.map((E) => [E.document_id, E.id])) ?? [];
684
- return l.track("agent-rate", {
685
- event: u ? "update" : "create",
686
- thumb: m === 1 ? "up" : "down",
684
+ const m = ((w = g.matches) == null ? void 0 : w.map((x) => [x.document_id, x.id])) ?? [];
685
+ return h.track("agent-rate", {
686
+ event: l ? "update" : "create",
687
+ thumb: u === 1 ? "up" : "down",
687
688
  knowledge_id: ((p = c.knowledge) == null ? void 0 : p.id) ?? "",
688
- matches: w,
689
- score: m
690
- }), u ? o.updateRating(c.id, t.chat.id, u, {
689
+ matches: m,
690
+ score: u
691
+ }), l ? o.updateRating(c.id, t.chat.id, l, {
691
692
  knowledge_id: ((C = c.knowledge) == null ? void 0 : C.id) ?? "",
692
693
  message_id: d,
693
- matches: w,
694
- score: m
694
+ matches: m,
695
+ score: u
695
696
  }) : o.createRating(c.id, t.chat.id, {
696
- knowledge_id: ((T = c.knowledge) == null ? void 0 : T.id) ?? "",
697
+ knowledge_id: ((A = c.knowledge) == null ? void 0 : A.id) ?? "",
697
698
  message_id: d,
698
- matches: w,
699
- score: m
699
+ matches: m,
700
+ score: u
700
701
  });
701
702
  },
702
703
  getChatmode() {
@@ -705,19 +706,19 @@ async function Ie(e, i) {
705
706
  return o.getChatMode(c.id, t.chat.id);
706
707
  },
707
708
  deleteRate(d) {
708
- var m;
709
+ var u;
709
710
  if (!t.chat)
710
711
  throw new Error("Chat is not initialized");
711
- return l.track("agent-rate-delete", {
712
+ return h.track("agent-rate-delete", {
712
713
  type: "text",
713
- chat_id: (m = t.chat) == null ? void 0 : m.id,
714
+ chat_id: (u = t.chat) == null ? void 0 : u.id,
714
715
  id: d
715
716
  }), o.deleteRating(c.id, t.chat.id, d);
716
717
  },
717
718
  speak(d) {
718
719
  if (!t.streamingManager)
719
720
  throw new Error("Streaming manager is not initialized");
720
- function m() {
721
+ function u() {
721
722
  if (c.presenter) {
722
723
  if (d.type === "text")
723
724
  return {
@@ -735,9 +736,9 @@ async function Ie(e, i) {
735
736
  throw new Error("Presenter is not initialized");
736
737
  throw new Error("Invalid payload");
737
738
  }
738
- const u = m();
739
- return l.track("agent-speak", u), t.streamingManager.speak({
740
- script: u
739
+ const l = u();
740
+ return h.track("agent-speak", l), t.streamingManager.speak({
741
+ script: l
741
742
  });
742
743
  }
743
744
  };
@@ -746,17 +747,17 @@ export {
746
747
  k as ChatMode,
747
748
  D as ChatProgress,
748
749
  S as ConnectionState,
749
- ae as DocumentType,
750
- re as KnowledgeType,
751
- ee as PlanGroup,
752
- ie as Providers,
753
- te as RateState,
750
+ re as DocumentType,
751
+ ne as KnowledgeType,
752
+ G as PlanGroup,
753
+ ae as Providers,
754
+ ee as RateState,
754
755
  $ as StreamEvents,
755
756
  N as StreamingState,
756
- ne as Subject,
757
- G as UserPlan,
758
- M as VideoType,
759
- se as VoiceAccess,
760
- Ie as createAgentManager,
761
- 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
762
763
  };
@@ -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",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
+ (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;
@@ -63,4 +62,5 @@ export interface Chat {
63
62
  messages: Message[];
64
63
  agent_id__created_at: string;
65
64
  agent_id__modified_at: string;
65
+ chatMode?: ChatMode;
66
66
  }
@@ -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.96",
4
+ "version": "1.0.19-beta.98",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {