@d-id/client-sdk 1.0.19-beta.67 → 1.0.19-beta.69

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,32 +1,32 @@
1
- var j = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(j || {}), V = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(V || {}), P = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(P || {}), M = /* @__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))(M || {}), _ = /* @__PURE__ */ ((e) => (e[e.New = 0] = "New", e[e.Fail = 1] = "Fail", e[e.Connected = 2] = "Connected", e[e.Connecting = 3] = "Connecting", e[e.Terminating = 4] = "Terminating", e))(_ || {}), q = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(q || {}), J = /* @__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))(J || {}), Q = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(Q || {}), X = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e))(X || {}), E = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(E || {}), Y = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(Y || {}), Z = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(Z || {}), G = /* @__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))(G || {}), x = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(x || {});
2
- const $ = "https://api.d-id.com", ee = "wss://notifications.d-id.com", te = "79f81a83a67430be2bc0fd61042b8faa", N = () => Math.random().toString(16).slice(2);
3
- function z() {
1
+ var F = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(F || {}), U = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(U || {}), E = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(E || {}), I = /* @__PURE__ */ ((e) => (e.ChatAnswer = "chat/answer", e.ChatPartial = "chat/partial", e.StreamDone = "stream/done", e.StreamStarted = "stream/started", e.StreamFailed = "stream/error", e.StreamReady = "stream/ready", e.StreamCreated = "stream/created", e.StreamVideoCreated = "stream-video/started", e.StreamVideoDone = "stream-video/done", e.StreamVideoError = "stream-video/error", e.StreamVideoRejected = "stream-video/rejected", e))(I || {}), k = /* @__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))(k || {}), j = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(j || {}), V = /* @__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))(V || {}), q = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(q || {}), J = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e))(J || {}), K = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(K || {}), Q = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(Q || {}), X = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(X || {}), Y = /* @__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))(Y || {}), L = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(L || {});
2
+ const $ = "https://api.d-id.com", Z = "wss://notifications.d-id.com", G = "79f81a83a67430be2bc0fd61042b8faa", N = () => Math.random().toString(16).slice(2);
3
+ function W() {
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 ne = N();
8
- function B(e) {
7
+ let ee = N();
8
+ function H(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}.${z()}_${ne}`;
14
+ return `Client-Key ${e.clientKey}.${W()}_${ee}`;
15
15
  throw new Error(`Unknown auth type: ${e}`);
16
16
  }
17
- function K(e, a = $) {
17
+ function x(e, a = $) {
18
18
  const t = async (n, r) => {
19
19
  const i = await fetch(a + (n != null && n.startsWith("/") ? n : `/${n}`), {
20
20
  ...r,
21
21
  headers: {
22
22
  ...r == null ? void 0 : r.headers,
23
- Authorization: B(e),
23
+ Authorization: H(e),
24
24
  "Content-Type": "application/json"
25
25
  }
26
26
  });
27
27
  if (!i.ok) {
28
- let m = await i.text().catch(() => "Failed to fetch");
29
- throw new Error(m);
28
+ let u = await i.text().catch(() => "Failed to fetch");
29
+ throw new Error(u);
30
30
  }
31
31
  return i.json();
32
32
  };
@@ -60,8 +60,8 @@ function K(e, a = $) {
60
60
  }
61
61
  };
62
62
  }
63
- function F(e, a = $) {
64
- const t = K(e, `${a}/agents`);
63
+ function z(e, a = $) {
64
+ const t = x(e, `${a}/agents`);
65
65
  return {
66
66
  create(n, r) {
67
67
  return t.post("/", n, r);
@@ -81,13 +81,13 @@ function F(e, a = $) {
81
81
  newChat(n, r) {
82
82
  return t.post(`/${n}/chat`, void 0, r);
83
83
  },
84
- chat(n, r, i, m) {
85
- return t.post(`/${n}/chat/${r}`, i, m);
84
+ chat(n, r, i, u) {
85
+ return t.post(`/${n}/chat/${r}`, i, u);
86
86
  }
87
87
  };
88
88
  }
89
- function re(e, a = $) {
90
- const t = K(e, `${a}/knowledge`);
89
+ function te(e, a = $) {
90
+ const t = x(e, `${a}/knowledge`);
91
91
  return {
92
92
  createKnowledge(n, r) {
93
93
  return t.post("/", n, r);
@@ -123,8 +123,8 @@ function re(e, a = $) {
123
123
  }
124
124
  };
125
125
  }
126
- function ie(e, a = $) {
127
- const t = K(e, `${a}/chats/ratings`);
126
+ function ne(e, a = $) {
127
+ const t = x(e, `${a}/chats/ratings`);
128
128
  return {
129
129
  create(n, r) {
130
130
  return t.post("/", n, r);
@@ -140,50 +140,50 @@ function ie(e, a = $) {
140
140
  }
141
141
  };
142
142
  }
143
- const ae = (e) => new Promise((a) => setTimeout(a, e));
144
- function se(e) {
143
+ const re = (e) => new Promise((a) => setTimeout(a, e));
144
+ function ie(e) {
145
145
  return new Promise((a, t) => {
146
146
  const {
147
147
  callbacks: n,
148
148
  host: r,
149
149
  auth: i
150
150
  } = e, {
151
- onMessage: m = null,
152
- onOpen: p = null,
153
- onClose: k = null,
154
- onError: d = null
155
- } = n || {}, S = new WebSocket(`${r}?authorization=${B(i)}`);
156
- S.onmessage = m, S.onclose = k, S.onerror = (g) => {
157
- console.error(g), d == null || d("Websocket failed to connect", g), t(g);
158
- }, S.onopen = (g) => {
159
- p == null || p(g), a(S);
151
+ onMessage: u = null,
152
+ onOpen: f = null,
153
+ onClose: v = null,
154
+ onError: S = null
155
+ } = n || {}, o = new WebSocket(`${r}?authorization=${H(i)}`);
156
+ o.onmessage = u, o.onclose = v, o.onerror = (p) => {
157
+ console.error(p), S == null || S("Websocket failed to connect", p), t(p);
158
+ }, o.onopen = (p) => {
159
+ f == null || f(p), a(o);
160
160
  };
161
161
  });
162
162
  }
163
- async function oe(e) {
163
+ async function ae(e) {
164
164
  const {
165
165
  retries: a = 1
166
166
  } = e;
167
167
  let t = null;
168
168
  for (let n = 0; (t == null ? void 0 : t.readyState) !== WebSocket.OPEN; n++)
169
169
  try {
170
- t = await se(e);
170
+ t = await ie(e);
171
171
  } catch (r) {
172
172
  if (n === a)
173
173
  throw r;
174
- await ae(n * 500);
174
+ await re(n * 500);
175
175
  }
176
176
  return t;
177
177
  }
178
- async function W(e, a, t) {
179
- const n = t != null && t.onMessage ? [t.onMessage] : [], r = await oe({
178
+ async function O(e, a, t) {
179
+ const n = t != null && t.onMessage ? [t.onMessage] : [], r = await ae({
180
180
  auth: e,
181
181
  host: a,
182
182
  callbacks: {
183
183
  onError: t == null ? void 0 : t.onError,
184
184
  onMessage: (i) => {
185
- const m = JSON.parse(i.data);
186
- n.forEach((p) => p(m.event, m));
185
+ const u = JSON.parse(i.data);
186
+ n.forEach((f) => f(u.event, u));
187
187
  }
188
188
  }
189
189
  });
@@ -193,14 +193,15 @@ async function W(e, a, t) {
193
193
  subscribeToEvents: (i) => n.push(i)
194
194
  };
195
195
  }
196
- function de(e, a) {
197
- const t = K(e, a);
196
+ function se(e, a) {
197
+ const t = x(e, a);
198
198
  return {
199
199
  createStream(n) {
200
200
  return t.post("/clips/streams", {
201
201
  driver_id: n.driver_id,
202
202
  presenter_id: n.presenter_id,
203
- compatibility_mode: n.compatibility_mode
203
+ compatibility_mode: n.compatibility_mode,
204
+ stream_warmup: n.stream_warmup
204
205
  });
205
206
  },
206
207
  startConnection(n, r, i) {
@@ -228,34 +229,35 @@ function de(e, a) {
228
229
  }
229
230
  };
230
231
  }
231
- function ce(e, a) {
232
- const t = K(e, a);
232
+ function oe(e, a) {
233
+ const t = x(e, a);
233
234
  return {
234
235
  createStream(n, r) {
235
236
  return t.post("/talks/streams", {
236
237
  source_url: n.source_url,
237
238
  driver_url: n.driver_url,
238
239
  face: n.face,
239
- config: n.config
240
+ config: n.config,
241
+ stream_warmup: n.stream_warmup
240
242
  }, r);
241
243
  },
242
- startConnection(n, r, i, m) {
244
+ startConnection(n, r, i, u) {
243
245
  return t.post(`/talks/streams/${n}/sdp`, {
244
246
  session_id: i,
245
247
  answer: r
246
- }, m);
248
+ }, u);
247
249
  },
248
- addIceCandidate(n, r, i, m) {
250
+ addIceCandidate(n, r, i, u) {
249
251
  return t.post(`/talks/streams/${n}/ice`, {
250
252
  session_id: i,
251
253
  ...r
252
- }, m);
254
+ }, u);
253
255
  },
254
- sendStreamRequest(n, r, i, m) {
256
+ sendStreamRequest(n, r, i, u) {
255
257
  return t.post(`/talks/streams/${n}`, {
256
258
  session_id: r,
257
259
  ...i
258
- }, m);
260
+ }, u);
259
261
  },
260
262
  close(n, r, i) {
261
263
  return t.delete(`/talks/streams/${n}`, {
@@ -264,7 +266,7 @@ function ce(e, a) {
264
266
  }
265
267
  };
266
268
  }
267
- function ge(e, a) {
269
+ function de(e, a) {
268
270
  return e.map((t, n) => n === 0 ? a ? {
269
271
  index: n,
270
272
  timestamp: t.timestamp,
@@ -297,154 +299,154 @@ function ge(e, a) {
297
299
  framesPerSecond: t.framesPerSecond
298
300
  });
299
301
  }
300
- let U = !1;
301
- const R = (e, a) => U && console.log(e, a), me = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
302
- function ue(e) {
302
+ let B = !1;
303
+ const R = (e, a) => B && console.log(e, a), ce = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
304
+ function ge(e) {
303
305
  switch (e) {
304
306
  case "connected":
305
- return _.Connected;
307
+ return k.Connected;
306
308
  case "checking":
307
- return _.Connecting;
309
+ return k.Connecting;
308
310
  case "failed":
309
- return _.Fail;
311
+ return k.Fail;
310
312
  case "new":
311
313
  case "closed":
312
314
  case "disconnected":
313
315
  default:
314
- return _.New;
316
+ return k.New;
315
317
  }
316
318
  }
317
- function le(e, a) {
319
+ function me(e, a) {
318
320
  let t = [], n = 0, r = 0, i;
319
321
  return setInterval(() => {
320
- e.getStats().then((p) => {
321
- p.forEach((k) => {
322
- if (k.type === "inbound-rtp" && k.kind === "video") {
323
- if (r = t.length - 1, k && t[r]) {
324
- const d = k.bytesReceived, S = t[r].bytesReceived;
325
- let g = i;
326
- i = d - S > 0;
327
- let w;
328
- if (g !== i) {
322
+ e.getStats().then((f) => {
323
+ f.forEach((v) => {
324
+ if (v.type === "inbound-rtp" && v.kind === "video") {
325
+ if (r = t.length - 1, v && t[r]) {
326
+ const S = v.bytesReceived, o = t[r].bytesReceived;
327
+ let p = i;
328
+ i = S - o > 0;
329
+ let d;
330
+ if (p !== i) {
329
331
  if (i)
330
332
  n = t.length;
331
333
  else {
332
334
  const A = t.slice(n), y = n === 0 ? void 0 : t[n - 1];
333
- w = ge(A, y), w = w.sort((c, o) => o.packetsLost - c.packetsLost).slice(0, 5);
335
+ d = de(A, y), d = d.sort((_, h) => h.packetsLost - _.packetsLost).slice(0, 5);
334
336
  }
335
- a == null || a(i ? P.Start : P.Stop, w);
337
+ a == null || a(i ? E.Start : E.Stop, d);
336
338
  }
337
339
  }
338
- t.push(k);
340
+ t.push(v);
339
341
  }
340
342
  });
341
343
  });
342
344
  }, 500);
343
345
  }
344
- async function we(e, {
346
+ async function ue(e, {
345
347
  debug: a = !1,
346
348
  callbacks: t,
347
349
  auth: n,
348
350
  analytics: r,
349
351
  baseURL: i = $
350
352
  }) {
351
- U = a;
352
- let m;
353
+ B = a;
354
+ let u;
353
355
  const {
354
- startConnection: p,
355
- sendStreamRequest: k,
356
- close: d,
357
- createStream: S,
358
- addIceCandidate: g
359
- } = e.videoType === x.Clip ? de(n, i) : ce(n, i), {
360
- id: w,
356
+ startConnection: f,
357
+ sendStreamRequest: v,
358
+ close: S,
359
+ createStream: o,
360
+ addIceCandidate: p
361
+ } = e.videoType === L.Clip ? se(n, i) : oe(n, i), {
362
+ id: d,
361
363
  offer: A,
362
364
  ice_servers: y,
363
- session_id: c
364
- } = await S(e), o = new me({
365
+ session_id: _
366
+ } = await o(e), h = new ce({
365
367
  iceServers: y
366
- }), u = o.createDataChannel("JanusDataChannel");
367
- if (!c)
368
+ }), c = h.createDataChannel("JanusDataChannel");
369
+ if (!_)
368
370
  throw new Error("Could not create session_id");
369
- const v = le(o, t.onVideoStateChange);
370
- o.onicecandidate = (s) => {
371
- R("peerConnection.onicecandidate", s), s.candidate && s.candidate.sdpMid && s.candidate.sdpMLineIndex !== null ? g(w, {
371
+ const l = me(h, t.onVideoStateChange);
372
+ h.onicecandidate = (s) => {
373
+ R("peerConnection.onicecandidate", s), s.candidate && s.candidate.sdpMid && s.candidate.sdpMLineIndex !== null ? p(d, {
372
374
  candidate: s.candidate.candidate,
373
375
  sdpMid: s.candidate.sdpMid,
374
376
  sdpMLineIndex: s.candidate.sdpMLineIndex
375
- }, c) : g(w, {
377
+ }, _) : p(d, {
376
378
  candidate: null
377
- }, c);
378
- }, o.oniceconnectionstatechange = () => {
379
- var f;
380
- R("peerConnection.oniceconnectionstatechange => " + o.iceConnectionState);
381
- const s = ue(o.iceConnectionState);
382
- s === _.Connected ? m = setTimeout(() => {
383
- var C;
384
- (C = t.onConnectionStateChange) == null || C.call(t, _.Connected);
385
- }, 5e3) : (clearTimeout(m), (f = t.onConnectionStateChange) == null || f.call(t, s));
386
- }, o.ontrack = (s) => {
387
- var f;
388
- R("peerConnection.ontrack", s), (f = t.onSrcObjectReady) == null || f.call(t, s.streams[0]);
389
- }, u.onmessage = (s) => {
390
- var f, C;
391
- if (u.readyState === "open") {
392
- const [l, I] = s.data.split(":");
393
- l === M.StreamStarted ? r == null || r.track("agent-video", {
379
+ }, _);
380
+ }, h.oniceconnectionstatechange = () => {
381
+ var m;
382
+ R("peerConnection.oniceconnectionstatechange => " + h.iceConnectionState);
383
+ const s = ge(h.iceConnectionState);
384
+ s === k.Connected ? u = setTimeout(() => {
385
+ var w;
386
+ (w = t.onConnectionStateChange) == null || w.call(t, k.Connected);
387
+ }, 5e3) : (clearTimeout(u), (m = t.onConnectionStateChange) == null || m.call(t, s));
388
+ }, h.ontrack = (s) => {
389
+ var m;
390
+ R("peerConnection.ontrack", s), (m = t.onSrcObjectReady) == null || m.call(t, s.streams[0]);
391
+ }, c.onmessage = (s) => {
392
+ var m, w;
393
+ if (c.readyState === "open") {
394
+ const [C, M] = s.data.split(":");
395
+ C === I.StreamStarted ? r == null || r.track("agent-video", {
394
396
  event: "start",
395
397
  ...s
396
- }) : l === M.StreamDone ? r == null || r.track("agent-video", {
398
+ }) : C === I.StreamDone ? r == null || r.track("agent-video", {
397
399
  event: "stop",
398
400
  ...s
399
- }) : l === M.StreamFailed ? ((f = t.onVideoStateChange) == null || f.call(t, P.Stop, {
400
- event: l,
401
- data: I
402
- }), clearInterval(v)) : l === M.StreamReady ? (clearTimeout(m), (C = t.onConnectionStateChange) == null || C.call(t, _.Connected)) : l === M.StreamCreated ? r == null || r.track("agent-video", {
401
+ }) : C === I.StreamFailed ? ((m = t.onVideoStateChange) == null || m.call(t, E.Stop, {
402
+ event: C,
403
+ data: M
404
+ }), clearInterval(l)) : C === I.StreamReady ? (clearTimeout(u), (w = t.onConnectionStateChange) == null || w.call(t, k.Connected)) : C === I.StreamCreated ? r == null || r.track("agent-video", {
403
405
  event: "created",
404
406
  ...s
405
- }) : l === M.StreamVideoCreated ? r == null || r.track("agent-video", {
407
+ }) : C === I.StreamVideoCreated ? r == null || r.track("agent-video", {
406
408
  event: "video-created",
407
409
  ...s
408
- }) : l === M.StreamVideoDone ? r == null || r.track("agent-video", {
410
+ }) : C === I.StreamVideoDone ? r == null || r.track("agent-video", {
409
411
  event: "video-done",
410
412
  ...s
411
- }) : l === M.StreamVideoError && (r == null || r.track("agent-video", {
413
+ }) : C === I.StreamVideoError && (r == null || r.track("agent-video", {
412
414
  event: "video-error",
413
415
  ...s
414
416
  }));
415
417
  }
416
- }, await o.setRemoteDescription(A), R("set remote description OK");
417
- const h = await o.createAnswer();
418
- return R("create answer OK"), await o.setLocalDescription(h), R("set local description OK"), await p(w, h, c), R("start connection OK"), {
418
+ }, await h.setRemoteDescription(A), R("set remote description OK");
419
+ const g = await h.createAnswer();
420
+ return R("create answer OK"), await h.setLocalDescription(g), R("set local description OK"), await f(d, g, _), R("start connection OK"), {
419
421
  /**
420
422
  * Method to send request to server to get clip or talk depend on you payload
421
423
  * @param payload
422
424
  */
423
425
  speak(s) {
424
- return k(w, c, s);
426
+ return v(d, _, s);
425
427
  },
426
428
  /**
427
429
  * Method to close RTC connection
428
430
  */
429
431
  async disconnect() {
430
- var s, f;
431
- w && (o && (o.close(), o.oniceconnectionstatechange = null, o.onnegotiationneeded = null, o.onicecandidate = null, o.ontrack = null), await d(w, c).catch((C) => {
432
- }), (s = t.onConnectionStateChange) == null || s.call(t, _.New), (f = t.onVideoStateChange) == null || f.call(t, P.Stop), clearInterval(v));
432
+ var s, m;
433
+ d && (h && (h.close(), h.oniceconnectionstatechange = null, h.onnegotiationneeded = null, h.onicecandidate = null, h.ontrack = null), await S(d, _).catch((w) => {
434
+ }), (s = t.onConnectionStateChange) == null || s.call(t, k.New), (m = t.onVideoStateChange) == null || m.call(t, E.Stop), clearInterval(l));
433
435
  },
434
436
  /**
435
437
  * Session identifier information, should be returned in the body of all streaming requests
436
438
  */
437
- sessionId: c,
439
+ sessionId: _,
438
440
  /**
439
441
  * Id of current RTC stream
440
442
  */
441
- streamId: w
443
+ streamId: d
442
444
  };
443
445
  }
444
- function he(e) {
446
+ function le(e) {
445
447
  const a = {
446
448
  mixPanelKey: e.mixPanelKey || "testKey",
447
- distinct_id: e.distinctId || z(),
449
+ distinct_id: e.distinctId || W(),
448
450
  isEnabled: e.isEnabled ?? !0,
449
451
  agentId: e.agent.id,
450
452
  owner_id: e.agent.owner_id ?? ""
@@ -480,7 +482,7 @@ function he(e) {
480
482
  }
481
483
  };
482
484
  }
483
- function fe(e) {
485
+ function we(e) {
484
486
  var n, r;
485
487
  const a = () => /Mobi|Android/i.test(navigator.userAgent) ? "Mobile" : "Desktop";
486
488
  return {
@@ -498,59 +500,61 @@ function fe(e) {
498
500
  }
499
501
  };
500
502
  }
501
- function pe(e, a) {
503
+ function he(e, a) {
502
504
  var t;
503
505
  return (t = e.knowledge) != null && t.id ? a.getKnowledge(e.knowledge.id).then((n) => (n == null ? void 0 : n.starter_message) || []) : [];
504
506
  }
505
- function ve(e) {
506
- return e.presenter.type === x.Clip ? {
507
- videoType: x.Clip,
507
+ function fe(e) {
508
+ return e.presenter.type === L.Clip ? {
509
+ videoType: L.Clip,
508
510
  driver_id: e.presenter.driver_id,
509
- presenter_id: e.presenter.presenter_id
511
+ presenter_id: e.presenter.presenter_id,
512
+ stream_warmup: !0
510
513
  } : {
511
- videoType: x.Talk,
512
- source_url: e.presenter.source_url
514
+ videoType: L.Talk,
515
+ source_url: e.presenter.source_url,
516
+ stream_warmup: !0
513
517
  };
514
518
  }
515
- function H(e, a, t, n, r) {
516
- return new Promise(async (i, m) => {
517
- let p = r;
518
- const k = await we(ve(e), {
519
+ function D(e, a, t, n, r) {
520
+ return new Promise(async (i, u) => {
521
+ let f = r;
522
+ const v = await ue(fe(e), {
519
523
  ...a,
520
524
  callbacks: {
521
525
  ...a.callbacks,
522
- onConnectionStateChange: async (d) => {
523
- var S, g;
524
- if (d === _.Connected)
526
+ onConnectionStateChange: async (S) => {
527
+ var o, p;
528
+ if (S === k.Connected)
525
529
  try {
526
- p || (p = await t.newChat(e.id), n.track("agent-chat", {
530
+ f || (f = await t.newChat(e.id), n.track("agent-chat", {
527
531
  event: "created",
528
- chat_id: p.id,
532
+ chat_id: f.id,
529
533
  agent_id: e.id
530
- })), k && i({
531
- chat: p,
532
- streamingManager: k
534
+ })), v && i({
535
+ chat: f,
536
+ streamingManager: v
533
537
  });
534
- } catch (w) {
535
- console.error(w), m("Cannot create new chat");
538
+ } catch (d) {
539
+ console.error(d), u("Cannot create new chat");
536
540
  }
537
541
  else
538
- d === _.Fail && m(new Error("Cannot create connection"));
539
- (g = (S = a.callbacks).onConnectionStateChange) == null || g.call(S, d);
542
+ S === k.Fail && u(new Error("Cannot create connection"));
543
+ (p = (o = a.callbacks).onConnectionStateChange) == null || p.call(o, S);
540
544
  },
541
- onVideoStateChange(d, S) {
542
- var g, w;
545
+ onVideoStateChange(S, o) {
546
+ var p, d;
543
547
  n.track("agent-video", {
544
- event: d,
545
- rtc_stats: S ?? []
546
- }), (w = (g = a.callbacks).onVideoStateChange) == null || w.call(g, d, S);
548
+ event: S,
549
+ rtc_stats: o ?? []
550
+ }), (d = (p = a.callbacks).onVideoStateChange) == null || d.call(p, S, o);
547
551
  }
548
552
  }
549
- }).catch(m);
553
+ }).catch(u);
550
554
  });
551
555
  }
552
- function Se(e, a, t) {
553
- return F(a, t || $).getById(e);
556
+ function pe(e, a, t) {
557
+ return z(a, t || $).getById(e);
554
558
  }
555
559
  function T(e) {
556
560
  let a = "";
@@ -566,86 +570,77 @@ function T(e) {
566
570
  created_at: (/* @__PURE__ */ new Date()).toISOString()
567
571
  }];
568
572
  }
569
- async function Ce(e, a) {
570
- var A, y;
573
+ async function ve(e, a) {
574
+ var _, h;
571
575
  const t = {
572
576
  messages: []
573
- }, n = a.wsURL || ee, r = a.baseURL || $, i = a.mixpanelKey || te, m = F(a.auth, r), p = ie(a.auth, r), k = re(a.auth, r), d = await m.getById(e), S = await pe(d, k);
574
- t.messages = T(d), (y = (A = a.callbacks).onNewMessage) == null || y.call(A, t.messages);
575
- const g = he({
576
- mixPanelKey: i,
577
- agent: d,
577
+ };
578
+ let n = -1;
579
+ const r = a.wsURL || Z, i = a.baseURL || $, u = a.mixpanelKey || G, f = z(a.auth, i), v = ne(a.auth, i), S = te(a.auth, i), o = await f.getById(e), p = await he(o, S);
580
+ t.messages = T(o), (h = (_ = a.callbacks).onNewMessage) == null || h.call(_, t.messages);
581
+ const d = le({
582
+ mixPanelKey: u,
583
+ agent: o,
578
584
  ...a
579
585
  });
580
- g.track("agent-sdk", {
586
+ d.track("agent-sdk", {
581
587
  event: "loaded",
582
- ...fe(d)
588
+ ...we(o)
583
589
  });
584
- async function w() {
585
- var v, h, s, f, C;
586
- const c = await W(a.auth, n, {
587
- onMessage: (l, I) => {
588
- var b, O;
589
- if ("content" in I) {
590
- const {
591
- content: D
592
- } = I, L = t.messages[t.messages.length - 1];
593
- (L == null ? void 0 : L.role) === "assistant" && (L.content = l === E.Partial ? L.content + D : D), l === E.Complete && g.track("agent-message-received", {
594
- messages: t.messages.length
595
- }), (O = (b = a.callbacks).onNewMessage) == null || O.call(b, t.messages);
596
- }
590
+ const A = {
591
+ onMessage: (c, l) => {
592
+ var g, s;
593
+ if ("content" in l) {
594
+ const {
595
+ content: m
596
+ } = l, w = t.messages[t.messages.length - 1];
597
+ (w == null ? void 0 : w.role) === "assistant" && (n < t.messages.length && (w.content = c === K.Partial ? w.content + m : m), c === K.Answer && (n = t.messages.length)), c === K.Complete && d.track("agent-message-received", {
598
+ messages: t.messages.length
599
+ }), (s = (g = a.callbacks).onNewMessage) == null || s.call(g, t.messages);
597
600
  }
598
- }), {
599
- streamingManager: o,
600
- chat: u
601
- } = await H(d, a, m, g, t.chat);
602
- t.messages = T(d), (h = (v = a.callbacks).onNewMessage) == null || h.call(v, t.messages), u != null && u.id && u.id !== ((s = t.chat) == null ? void 0 : s.id) && ((C = (f = a.callbacks).onNewChat) == null || C.call(f, u == null ? void 0 : u.id)), t.streamingManager = o, t.socketManager = c, t.chat = u, g.track("agent-chat", {
601
+ }
602
+ };
603
+ async function y() {
604
+ var s, m, w, C, M;
605
+ const c = await O(a.auth, r, A), {
606
+ streamingManager: l,
607
+ chat: g
608
+ } = await D(o, a, f, d, t.chat);
609
+ n = -1, t.messages = T(o), (m = (s = a.callbacks).onNewMessage) == null || m.call(s, t.messages), g != null && g.id && g.id !== ((w = t.chat) == null ? void 0 : w.id) && ((M = (C = a.callbacks).onNewChat) == null || M.call(C, g == null ? void 0 : g.id)), t.streamingManager = l, t.socketManager = c, t.chat = g, d.track("agent-chat", {
603
610
  event: "connect",
604
- chatId: u.id,
605
- agentId: d.id
611
+ chatId: g.id,
612
+ agentId: o.id
606
613
  });
607
614
  }
608
615
  return {
609
- agent: d,
610
- starterMessages: S,
611
- connect: w,
616
+ agent: o,
617
+ starterMessages: p,
618
+ connect: y,
612
619
  async reconnect() {
613
620
  if (!t.chat)
614
- return w();
615
- const c = await W(a.auth, n, {
616
- onMessage: (v, h) => {
617
- var s, f;
618
- if ("content" in h) {
619
- const {
620
- content: C
621
- } = h, l = t.messages[t.messages.length - 1];
622
- (l == null ? void 0 : l.role) === "assistant" && (l.content = v === E.Partial ? l.content + C : C), v === E.Complete && g.track("agent-message-received", {
623
- messages: t.messages.length
624
- }), (f = (s = a.callbacks).onNewMessage) == null || f.call(s, t.messages);
625
- }
626
- }
627
- }), {
628
- streamingManager: o,
629
- chat: u
630
- } = await H(d, a, m, g, t.chat);
631
- t.streamingManager = o, t.socketManager = c, g.track("agent-chat", {
621
+ return y();
622
+ const c = await O(a.auth, r, A), {
623
+ streamingManager: l,
624
+ chat: g
625
+ } = await D(o, a, f, d, t.chat);
626
+ t.streamingManager = l, t.socketManager = c, d.track("agent-chat", {
632
627
  event: "reconnect",
633
- chatId: u.id,
634
- agentId: d.id
628
+ chatId: g.id,
629
+ agentId: o.id
635
630
  });
636
631
  },
637
632
  async disconnect() {
638
- var c, o, u, v, h;
639
- (c = t.socketManager) == null || c.disconnect(), await ((o = t.streamingManager) == null ? void 0 : o.disconnect()), t.messages = T(d), (v = (u = a.callbacks).onNewMessage) == null || v.call(u, t.messages), g.track("agent-chat", {
633
+ var c, l, g, s, m;
634
+ (c = t.socketManager) == null || c.disconnect(), await ((l = t.streamingManager) == null ? void 0 : l.disconnect()), t.messages = T(o), (s = (g = a.callbacks).onNewMessage) == null || s.call(g, t.messages), d.track("agent-chat", {
640
635
  event: "disconnect",
641
- chatId: (h = t.chat) == null ? void 0 : h.id,
642
- agentId: d.id
636
+ chatId: (m = t.chat) == null ? void 0 : m.id,
637
+ agentId: o.id
643
638
  });
644
639
  },
645
- async chat(c, o = !1) {
646
- var u, v;
640
+ async chat(c, l = !1) {
641
+ var g, s;
647
642
  try {
648
- const h = Date.now();
643
+ const m = Date.now();
649
644
  if (c.length === 0)
650
645
  throw new Error("Message cannot be empty");
651
646
  if (!t.chat)
@@ -656,81 +651,81 @@ async function Ce(e, a) {
656
651
  id: N(),
657
652
  role: "user",
658
653
  content: c,
659
- created_at: new Date(h).toISOString()
654
+ created_at: new Date(m).toISOString()
660
655
  });
661
- const s = await m.chat(d.id, t.chat.id, {
656
+ const w = await f.chat(o.id, t.chat.id, {
662
657
  sessionId: t.streamingManager.sessionId,
663
658
  streamId: t.streamingManager.streamId,
664
659
  messages: t.messages,
665
- append_chat: o
660
+ append_chat: l
666
661
  });
667
- return g.track("agent-message-send", {
662
+ return d.track("agent-message-send", {
668
663
  event: "success",
669
664
  messages: t.messages.length + 1
670
665
  }), t.messages.push({
671
666
  id: N(),
672
667
  role: "assistant",
673
- content: s.result ?? "",
668
+ content: w.result ?? "",
674
669
  created_at: (/* @__PURE__ */ new Date()).toISOString(),
675
- matches: s.matches
676
- }), s.result && g.track("agent-message-received", {
677
- latency: Date.now() - h,
670
+ matches: w.matches
671
+ }), w.result && d.track("agent-message-received", {
672
+ latency: Date.now() - m,
678
673
  messages: t.messages.length
679
- }), (v = (u = a.callbacks).onNewMessage) == null || v.call(u, t.messages), s;
680
- } catch (h) {
681
- throw g.track("agent-message-send", {
674
+ }), (s = (g = a.callbacks).onNewMessage) == null || s.call(g, t.messages), w;
675
+ } catch (m) {
676
+ throw d.track("agent-message-send", {
682
677
  event: "error",
683
678
  messages: t.messages.length
684
- }), h;
679
+ }), m;
685
680
  }
686
681
  },
687
- rate(c, o, u) {
688
- var s, f, C, l;
689
- const v = t.messages.find((I) => I.id === c);
682
+ rate(c, l, g) {
683
+ var w, C, M, b;
684
+ const s = t.messages.find((P) => P.id === c);
690
685
  if (t.chat) {
691
- if (!v)
686
+ if (!s)
692
687
  throw new Error("Message not found");
693
688
  } else
694
689
  throw new Error("Chat is not initialized");
695
- const h = ((s = v.matches) == null ? void 0 : s.map((I) => [I.document_id, I.id])) ?? [];
696
- return g.track("agent-rate", {
697
- event: u ? "update" : "create",
698
- thumb: o === 1 ? "up" : "down",
699
- knowledge_id: ((f = d.knowledge) == null ? void 0 : f.id) ?? "",
700
- matches: h,
701
- score: o
702
- }), u ? p.update(u, {
703
- agent_id: d.id,
704
- knowledge_id: ((C = d.knowledge) == null ? void 0 : C.id) ?? "",
690
+ const m = ((w = s.matches) == null ? void 0 : w.map((P) => [P.document_id, P.id])) ?? [];
691
+ return d.track("agent-rate", {
692
+ event: g ? "update" : "create",
693
+ thumb: l === 1 ? "up" : "down",
694
+ knowledge_id: ((C = o.knowledge) == null ? void 0 : C.id) ?? "",
695
+ matches: m,
696
+ score: l
697
+ }), g ? v.update(g, {
698
+ agent_id: o.id,
699
+ knowledge_id: ((M = o.knowledge) == null ? void 0 : M.id) ?? "",
705
700
  chat_id: t.chat.id,
706
701
  message_id: c,
707
- matches: h,
708
- score: o
709
- }) : p.create({
710
- agent_id: d.id,
711
- knowledge_id: ((l = d.knowledge) == null ? void 0 : l.id) ?? "",
702
+ matches: m,
703
+ score: l
704
+ }) : v.create({
705
+ agent_id: o.id,
706
+ knowledge_id: ((b = o.knowledge) == null ? void 0 : b.id) ?? "",
712
707
  chat_id: t.chat.id,
713
708
  message_id: c,
714
- matches: h,
715
- score: o
709
+ matches: m,
710
+ score: l
716
711
  });
717
712
  },
718
713
  deleteRate(c) {
719
- var o;
720
- return g.track("agent-rate-delete", {
714
+ var l;
715
+ return d.track("agent-rate-delete", {
721
716
  type: "text",
722
- chat_id: (o = t.chat) == null ? void 0 : o.id,
717
+ chat_id: (l = t.chat) == null ? void 0 : l.id,
723
718
  id: c
724
- }), p.delete(c);
719
+ }), v.delete(c);
725
720
  },
726
721
  speak(c) {
727
722
  if (!t.streamingManager)
728
723
  throw new Error("Streaming manager is not initialized");
729
- function o() {
724
+ function l() {
730
725
  if (c.type === "text")
731
726
  return {
732
727
  type: "text",
733
- provider: c.provider ? c.provider : d.presenter.voice,
728
+ provider: c.provider ? c.provider : o.presenter.voice,
734
729
  input: c.input,
735
730
  ssml: c.ssml || !1
736
731
  };
@@ -741,23 +736,23 @@ async function Ce(e, a) {
741
736
  };
742
737
  throw new Error("Invalid payload");
743
738
  }
744
- const u = o();
745
- return g.track("agent-speak", u), t.streamingManager.speak({
746
- script: u
739
+ const g = l();
740
+ return d.track("agent-speak", g), t.streamingManager.speak({
741
+ script: g
747
742
  });
748
743
  }
749
744
  };
750
745
  }
751
746
  export {
752
- X as ChatMode,
753
- G as DocumentType,
754
- Z as KnowledgeType,
755
- J as PlanGroup,
756
- j as Providers,
757
- Q as RateState,
758
- Y as Subject,
759
- q as UserPlan,
760
- V as VoiceAccess,
761
- Ce as createAgentManager,
762
- Se as getAgent
747
+ J as ChatMode,
748
+ Y as DocumentType,
749
+ X as KnowledgeType,
750
+ V as PlanGroup,
751
+ F as Providers,
752
+ q as RateState,
753
+ Q as Subject,
754
+ j as UserPlan,
755
+ U as VoiceAccess,
756
+ ve as createAgentManager,
757
+ pe as getAgent
763
758
  };
@@ -1 +1 @@
1
- (function(C,A){typeof exports=="object"&&typeof module<"u"?A(exports):typeof define=="function"&&define.amd?define(["exports"],A):(C=typeof globalThis<"u"?globalThis:C||self,A(C.index={}))})(this,function(C){"use strict";var A=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(A||{}),D=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(D||{}),P=(e=>(e.Start="START",e.Stop="STOP",e))(P||{}),R=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e.StreamFailed="stream/error",e.StreamReady="stream/ready",e.StreamCreated="stream/created",e.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(R||{}),M=(e=>(e[e.New=0]="New",e[e.Fail=1]="Fail",e[e.Connected=2]="Connected",e[e.Connecting=3]="Connecting",e[e.Terminating=4]="Terminating",e))(M||{}),W=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(W||{}),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||{}),U=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))(U||{}),T=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(T||{}),z=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(z||{}),B=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(B||{}),F=(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))(F||{}),K=(e=>(e.Clip="clip",e.Talk="talk",e))(K||{});const y="https://api.d-id.com",te="wss://notifications.d-id.com",ne="79f81a83a67430be2bc0fd61042b8faa",O=()=>Math.random().toString(16).slice(2);function V(){let e=window.localStorage.getItem("did_external_key_id");return e||(e=Math.random().toString(16).slice(2),window.localStorage.setItem("did_external_key_id",e)),e}let re=O();function q(e){if(e.type==="bearer")return`Bearer ${e.token}`;if(e.type==="basic")return`Basic ${btoa(`${e.username}:${e.password}`)}`;if(e.type==="key")return`Client-Key ${e.clientKey}.${V()}_${re}`;throw new Error(`Unknown auth type: ${e}`)}function b(e,a=y){const t=async(n,r)=>{const i=await fetch(a+(n!=null&&n.startsWith("/")?n:`/${n}`),{...r,headers:{...r==null?void 0:r.headers,Authorization:q(e),"Content-Type":"application/json"}});if(!i.ok){let u=await i.text().catch(()=>"Failed to fetch");throw new Error(u)}return i.json()};return{get(n,r){return t(n,{...r,method:"GET"})},post(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"POST"})},delete(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"DELETE"})},patch(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"PATCH"})}}}function J(e,a=y){const t=b(e,`${a}/agents`);return{create(n,r){return t.post("/",n,r)},getAgents(n,r){return t.get(`/${n?`?tag=${n}`:""}`,r).then(i=>i??[])},getById(n,r){return t.get(`/${n}`,r)},delete(n,r){return t.delete(`/${n}`,void 0,r)},update(n,r,i){return t.patch(`/${n}`,r,i)},newChat(n,r){return t.post(`/${n}/chat`,void 0,r)},chat(n,r,i,u){return t.post(`/${n}/chat/${r}`,i,u)}}}function ie(e,a=y){const t=b(e,`${a}/knowledge`);return{createKnowledge(n,r){return t.post("/",n,r)},getKnowledgeBase(n){return t.get("/",n)},getKnowledge(n,r){return t.get(`/${n}`,r)},deleteKnowledge(n,r){return t.delete(`/${n}`,void 0,r)},createDocument(n,r,i){return t.post(`/${n}/documents`,r,i)},deleteDocument(n,r,i){return t.delete(`/${n}/documents/${r}`,void 0,i)},getDocuments(n,r){return t.get(`/${n}/documents`,r)},getDocument(n,r,i){return t.get(`/${n}/documents/${r}`,i)},getRecords(n,r,i){return t.get(`/${n}/documents/${r}/records`,i)},query(n,r,i){return t.post(`/${n}/query`,{query:r},i)}}}function ae(e,a=y){const t=b(e,`${a}/chats/ratings`);return{create(n,r){return t.post("/",n,r)},getByKnowledge(n,r){return t.get(`/${n}`,r).then(i=>i??[])},update(n,r,i){return t.patch(`/${n}`,r,i)},delete(n,r){return t.delete(`/${n}`,r)}}}const se=e=>new Promise(a=>setTimeout(a,e));function oe(e){return new Promise((a,t)=>{const{callbacks:n,host:r,auth:i}=e,{onMessage:u=null,onOpen:v=null,onClose:_=null,onError:d=null}=n||{},S=new WebSocket(`${r}?authorization=${q(i)}`);S.onmessage=u,S.onclose=_,S.onerror=g=>{console.error(g),d==null||d("Websocket failed to connect",g),t(g)},S.onopen=g=>{v==null||v(g),a(S)}})}async function de(e){const{retries:a=1}=e;let t=null;for(let n=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;n++)try{t=await oe(e)}catch(r){if(n===a)throw r;await se(n*500)}return t}async function Q(e,a,t){const n=t!=null&&t.onMessage?[t.onMessage]:[],r=await de({auth:e,host:a,callbacks:{onError:t==null?void 0:t.onError,onMessage:i=>{const u=JSON.parse(i.data);n.forEach(v=>v(u.event,u))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:i=>n.push(i)}}function ce(e,a){const t=b(e,a);return{createStream(n){return t.post("/clips/streams",{driver_id:n.driver_id,presenter_id:n.presenter_id,compatibility_mode:n.compatibility_mode})},startConnection(n,r,i){return t.post(`/clips/streams/${n}/sdp`,{session_id:i,answer:r})},addIceCandidate(n,r,i){return t.post(`/clips/streams/${n}/ice`,{session_id:i,...r})},sendStreamRequest(n,r,i){return t.post(`/clips/streams/${n}`,{session_id:r,...i})},close(n,r){return t.delete(`/clips/streams/${n}`,{session_id:r})}}}function ge(e,a){const t=b(e,a);return{createStream(n,r){return t.post("/talks/streams",{source_url:n.source_url,driver_url:n.driver_url,face:n.face,config:n.config},r)},startConnection(n,r,i,u){return t.post(`/talks/streams/${n}/sdp`,{session_id:i,answer:r},u)},addIceCandidate(n,r,i,u){return t.post(`/talks/streams/${n}/ice`,{session_id:i,...r},u)},sendStreamRequest(n,r,i,u){return t.post(`/talks/streams/${n}`,{session_id:r,...i},u)},close(n,r,i){return t.delete(`/talks/streams/${n}`,{session_id:r},i)}}}function ue(e,a){return e.map((t,n)=>n===0?a?{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-a.bytesReceived,packetsReceived:t.packetsReceived-a.packetsReceived,packetsLost:t.packetsLost-a.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived,packetsReceived:t.packetsReceived,packetsLost:t.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-e[n-1].bytesReceived,packetsReceived:t.packetsReceived-e[n-1].packetsReceived,packetsLost:t.packetsLost-e[n-1].packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond})}let X=!1;const $=(e,a)=>X&&console.log(e,a),me=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function le(e){switch(e){case"connected":return M.Connected;case"checking":return M.Connecting;case"failed":return M.Fail;case"new":case"closed":case"disconnected":default:return M.New}}function he(e,a){let t=[],n=0,r=0,i;return setInterval(()=>{e.getStats().then(v=>{v.forEach(_=>{if(_.type==="inbound-rtp"&&_.kind==="video"){if(r=t.length-1,_&&t[r]){const d=_.bytesReceived,S=t[r].bytesReceived;let g=i;i=d-S>0;let h;if(g!==i){if(i)n=t.length;else{const L=t.slice(n),E=n===0?void 0:t[n-1];h=ue(L,E),h=h.sort((c,o)=>o.packetsLost-c.packetsLost).slice(0,5)}a==null||a(i?P.Start:P.Stop,h)}}t.push(_)}})})},500)}async function we(e,{debug:a=!1,callbacks:t,auth:n,analytics:r,baseURL:i=y}){X=a;let u;const{startConnection:v,sendStreamRequest:_,close:d,createStream:S,addIceCandidate:g}=e.videoType===K.Clip?ce(n,i):ge(n,i),{id:h,offer:L,ice_servers:E,session_id:c}=await S(e),o=new me({iceServers:E}),m=o.createDataChannel("JanusDataChannel");if(!c)throw new Error("Could not create session_id");const p=he(o,t.onVideoStateChange);o.onicecandidate=s=>{$("peerConnection.onicecandidate",s),s.candidate&&s.candidate.sdpMid&&s.candidate.sdpMLineIndex!==null?g(h,{candidate:s.candidate.candidate,sdpMid:s.candidate.sdpMid,sdpMLineIndex:s.candidate.sdpMLineIndex},c):g(h,{candidate:null},c)},o.oniceconnectionstatechange=()=>{var f;$("peerConnection.oniceconnectionstatechange => "+o.iceConnectionState);const s=le(o.iceConnectionState);s===M.Connected?u=setTimeout(()=>{var k;(k=t.onConnectionStateChange)==null||k.call(t,M.Connected)},5e3):(clearTimeout(u),(f=t.onConnectionStateChange)==null||f.call(t,s))},o.ontrack=s=>{var f;$("peerConnection.ontrack",s),(f=t.onSrcObjectReady)==null||f.call(t,s.streams[0])},m.onmessage=s=>{var f,k;if(m.readyState==="open"){const[l,I]=s.data.split(":");l===R.StreamStarted?r==null||r.track("agent-video",{event:"start",...s}):l===R.StreamDone?r==null||r.track("agent-video",{event:"stop",...s}):l===R.StreamFailed?((f=t.onVideoStateChange)==null||f.call(t,P.Stop,{event:l,data:I}),clearInterval(p)):l===R.StreamReady?(clearTimeout(u),(k=t.onConnectionStateChange)==null||k.call(t,M.Connected)):l===R.StreamCreated?r==null||r.track("agent-video",{event:"created",...s}):l===R.StreamVideoCreated?r==null||r.track("agent-video",{event:"video-created",...s}):l===R.StreamVideoDone?r==null||r.track("agent-video",{event:"video-done",...s}):l===R.StreamVideoError&&(r==null||r.track("agent-video",{event:"video-error",...s}))}},await o.setRemoteDescription(L),$("set remote description OK");const w=await o.createAnswer();return $("create answer OK"),await o.setLocalDescription(w),$("set local description OK"),await v(h,w,c),$("start connection OK"),{speak(s){return _(h,c,s)},async disconnect(){var s,f;h&&(o&&(o.close(),o.oniceconnectionstatechange=null,o.onnegotiationneeded=null,o.onicecandidate=null,o.ontrack=null),await d(h,c).catch(k=>{}),(s=t.onConnectionStateChange)==null||s.call(t,M.New),(f=t.onVideoStateChange)==null||f.call(t,P.Stop),clearInterval(p))},sessionId:c,streamId:h}}function fe(e){const a={mixPanelKey:e.mixPanelKey||"testKey",distinct_id:e.distinctId||V(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...a,getRandom:()=>Math.random().toString(16).slice(2),track(t,n){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const r={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...n,...a,time:Date.now(),$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerWidth,"Screen Width":window.screen.width||window.innerHeight,"User Agent":navigator.userAgent}}])})};return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1",r).then(i=>i.json()).catch(i=>console.error(i))}}}function ve(e){var n,r;const a=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const i=navigator.platform;return i.toLowerCase().includes("win")?"Windows":i.toLowerCase().includes("mac")?"Mac OS X":i.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${a()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:e.presenter.type,agentVoice:{voiceId:(n=e.presenter.voice)==null?void 0:n.voice_id,provider:(r=e.presenter.voice)==null?void 0:r.type}}}function pe(e,a){var t;return(t=e.knowledge)!=null&&t.id?a.getKnowledge(e.knowledge.id).then(n=>(n==null?void 0:n.starter_message)||[]):[]}function Se(e){return e.presenter.type===K.Clip?{videoType:K.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id}:{videoType:K.Talk,source_url:e.presenter.source_url}}function Y(e,a,t,n,r){return new Promise(async(i,u)=>{let v=r;const _=await we(Se(e),{...a,callbacks:{...a.callbacks,onConnectionStateChange:async d=>{var S,g;if(d===M.Connected)try{v||(v=await t.newChat(e.id),n.track("agent-chat",{event:"created",chat_id:v.id,agent_id:e.id})),_&&i({chat:v,streamingManager:_})}catch(h){console.error(h),u("Cannot create new chat")}else d===M.Fail&&u(new Error("Cannot create connection"));(g=(S=a.callbacks).onConnectionStateChange)==null||g.call(S,d)},onVideoStateChange(d,S){var g,h;n.track("agent-video",{event:d,rtc_stats:S??[]}),(h=(g=a.callbacks).onVideoStateChange)==null||h.call(g,d,S)}}}).catch(u)})}function Ce(e,a,t){return J(a,t||y).getById(e)}function x(e){let a="";if(e.greetings&&e.greetings.length>0){const t=Math.floor(Math.random()*e.greetings.length);a=e.greetings[t]}else a=`Hi! I'm ${e.preview_name}, welcome to agents. How can I help you?`;return[{content:a,id:O(),role:"assistant",created_at:new Date().toISOString()}]}async function ke(e,a){var L,E;const t={messages:[]},n=a.wsURL||te,r=a.baseURL||y,i=a.mixpanelKey||ne,u=J(a.auth,r),v=ae(a.auth,r),_=ie(a.auth,r),d=await u.getById(e),S=await pe(d,_);t.messages=x(d),(E=(L=a.callbacks).onNewMessage)==null||E.call(L,t.messages);const g=fe({mixPanelKey:i,agent:d,...a});g.track("agent-sdk",{event:"loaded",...ve(d)});async function h(){var p,w,s,f,k;const c=await Q(a.auth,n,{onMessage:(l,I)=>{var Z,G;if("content"in I){const{content:ee}=I,N=t.messages[t.messages.length-1];(N==null?void 0:N.role)==="assistant"&&(N.content=l===T.Partial?N.content+ee:ee),l===T.Complete&&g.track("agent-message-received",{messages:t.messages.length}),(G=(Z=a.callbacks).onNewMessage)==null||G.call(Z,t.messages)}}}),{streamingManager:o,chat:m}=await Y(d,a,u,g,t.chat);t.messages=x(d),(w=(p=a.callbacks).onNewMessage)==null||w.call(p,t.messages),m!=null&&m.id&&m.id!==((s=t.chat)==null?void 0:s.id)&&((k=(f=a.callbacks).onNewChat)==null||k.call(f,m==null?void 0:m.id)),t.streamingManager=o,t.socketManager=c,t.chat=m,g.track("agent-chat",{event:"connect",chatId:m.id,agentId:d.id})}return{agent:d,starterMessages:S,connect:h,async reconnect(){if(!t.chat)return h();const c=await Q(a.auth,n,{onMessage:(p,w)=>{var s,f;if("content"in w){const{content:k}=w,l=t.messages[t.messages.length-1];(l==null?void 0:l.role)==="assistant"&&(l.content=p===T.Partial?l.content+k:k),p===T.Complete&&g.track("agent-message-received",{messages:t.messages.length}),(f=(s=a.callbacks).onNewMessage)==null||f.call(s,t.messages)}}}),{streamingManager:o,chat:m}=await Y(d,a,u,g,t.chat);t.streamingManager=o,t.socketManager=c,g.track("agent-chat",{event:"reconnect",chatId:m.id,agentId:d.id})},async disconnect(){var c,o,m,p,w;(c=t.socketManager)==null||c.disconnect(),await((o=t.streamingManager)==null?void 0:o.disconnect()),t.messages=x(d),(p=(m=a.callbacks).onNewMessage)==null||p.call(m,t.messages),g.track("agent-chat",{event:"disconnect",chatId:(w=t.chat)==null?void 0:w.id,agentId:d.id})},async chat(c,o=!1){var m,p;try{const w=Date.now();if(c.length===0)throw new Error("Message cannot be empty");if(!t.chat)throw new Error("Chat is not initialized");if(!t.streamingManager)throw new Error("Streaming manager is not initialized");t.messages.push({id:O(),role:"user",content:c,created_at:new Date(w).toISOString()});const s=await u.chat(d.id,t.chat.id,{sessionId:t.streamingManager.sessionId,streamId:t.streamingManager.streamId,messages:t.messages,append_chat:o});return g.track("agent-message-send",{event:"success",messages:t.messages.length+1}),t.messages.push({id:O(),role:"assistant",content:s.result??"",created_at:new Date().toISOString(),matches:s.matches}),s.result&&g.track("agent-message-received",{latency:Date.now()-w,messages:t.messages.length}),(p=(m=a.callbacks).onNewMessage)==null||p.call(m,t.messages),s}catch(w){throw g.track("agent-message-send",{event:"error",messages:t.messages.length}),w}},rate(c,o,m){var s,f,k,l;const p=t.messages.find(I=>I.id===c);if(t.chat){if(!p)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const w=((s=p.matches)==null?void 0:s.map(I=>[I.document_id,I.id]))??[];return g.track("agent-rate",{event:m?"update":"create",thumb:o===1?"up":"down",knowledge_id:((f=d.knowledge)==null?void 0:f.id)??"",matches:w,score:o}),m?v.update(m,{agent_id:d.id,knowledge_id:((k=d.knowledge)==null?void 0:k.id)??"",chat_id:t.chat.id,message_id:c,matches:w,score:o}):v.create({agent_id:d.id,knowledge_id:((l=d.knowledge)==null?void 0:l.id)??"",chat_id:t.chat.id,message_id:c,matches:w,score:o})},deleteRate(c){var o;return g.track("agent-rate-delete",{type:"text",chat_id:(o=t.chat)==null?void 0:o.id,id:c}),v.delete(c)},speak(c){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function o(){if(c.type==="text")return{type:"text",provider:c.provider?c.provider:d.presenter.voice,input:c.input,ssml:c.ssml||!1};if(c.type==="audio")return{type:"audio",audio_url:c.audio_url};throw new Error("Invalid payload")}const m=o();return g.track("agent-speak",m),t.streamingManager.speak({script:m})}}}C.ChatMode=U,C.DocumentType=F,C.KnowledgeType=B,C.PlanGroup=H,C.Providers=A,C.RateState=j,C.Subject=z,C.UserPlan=W,C.VoiceAccess=D,C.createAgentManager=ke,C.getAgent=Ce,Object.defineProperty(C,Symbol.toStringTag,{value:"Module"})});
1
+ (function(v,$){typeof exports=="object"&&typeof module<"u"?$(exports):typeof define=="function"&&define.amd?define(["exports"],$):(v=typeof globalThis<"u"?globalThis:v||self,$(v.index={}))})(this,function(v){"use strict";var $=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))($||{}),D=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(D||{}),P=(e=>(e.Start="START",e.Stop="STOP",e))(P||{}),I=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e.StreamFailed="stream/error",e.StreamReady="stream/ready",e.StreamCreated="stream/created",e.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(I||{}),M=(e=>(e[e.New=0]="New",e[e.Fail=1]="Fail",e[e.Connected=2]="Connected",e[e.Connecting=3]="Connecting",e[e.Terminating=4]="Terminating",e))(M||{}),W=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(W||{}),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||{}),U=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))(U||{}),b=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(b||{}),z=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(z||{}),B=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(B||{}),F=(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))(F||{}),T=(e=>(e.Clip="clip",e.Talk="talk",e))(T||{});const R="https://api.d-id.com",G="wss://notifications.d-id.com",ee="79f81a83a67430be2bc0fd61042b8faa",N=()=>Math.random().toString(16).slice(2);function V(){let e=window.localStorage.getItem("did_external_key_id");return e||(e=Math.random().toString(16).slice(2),window.localStorage.setItem("did_external_key_id",e)),e}let te=N();function q(e){if(e.type==="bearer")return`Bearer ${e.token}`;if(e.type==="basic")return`Basic ${btoa(`${e.username}:${e.password}`)}`;if(e.type==="key")return`Client-Key ${e.clientKey}.${V()}_${te}`;throw new Error(`Unknown auth type: ${e}`)}function K(e,a=R){const t=async(n,r)=>{const i=await fetch(a+(n!=null&&n.startsWith("/")?n:`/${n}`),{...r,headers:{...r==null?void 0:r.headers,Authorization:q(e),"Content-Type":"application/json"}});if(!i.ok){let m=await i.text().catch(()=>"Failed to fetch");throw new Error(m)}return i.json()};return{get(n,r){return t(n,{...r,method:"GET"})},post(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"POST"})},delete(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"DELETE"})},patch(n,r,i){return t(n,{...i,body:JSON.stringify(r),method:"PATCH"})}}}function J(e,a=R){const t=K(e,`${a}/agents`);return{create(n,r){return t.post("/",n,r)},getAgents(n,r){return t.get(`/${n?`?tag=${n}`:""}`,r).then(i=>i??[])},getById(n,r){return t.get(`/${n}`,r)},delete(n,r){return t.delete(`/${n}`,void 0,r)},update(n,r,i){return t.patch(`/${n}`,r,i)},newChat(n,r){return t.post(`/${n}/chat`,void 0,r)},chat(n,r,i,m){return t.post(`/${n}/chat/${r}`,i,m)}}}function ne(e,a=R){const t=K(e,`${a}/knowledge`);return{createKnowledge(n,r){return t.post("/",n,r)},getKnowledgeBase(n){return t.get("/",n)},getKnowledge(n,r){return t.get(`/${n}`,r)},deleteKnowledge(n,r){return t.delete(`/${n}`,void 0,r)},createDocument(n,r,i){return t.post(`/${n}/documents`,r,i)},deleteDocument(n,r,i){return t.delete(`/${n}/documents/${r}`,void 0,i)},getDocuments(n,r){return t.get(`/${n}/documents`,r)},getDocument(n,r,i){return t.get(`/${n}/documents/${r}`,i)},getRecords(n,r,i){return t.get(`/${n}/documents/${r}/records`,i)},query(n,r,i){return t.post(`/${n}/query`,{query:r},i)}}}function re(e,a=R){const t=K(e,`${a}/chats/ratings`);return{create(n,r){return t.post("/",n,r)},getByKnowledge(n,r){return t.get(`/${n}`,r).then(i=>i??[])},update(n,r,i){return t.patch(`/${n}`,r,i)},delete(n,r){return t.delete(`/${n}`,r)}}}const ie=e=>new Promise(a=>setTimeout(a,e));function ae(e){return new Promise((a,t)=>{const{callbacks:n,host:r,auth:i}=e,{onMessage:m=null,onOpen:f=null,onClose:S=null,onError:C=null}=n||{},o=new WebSocket(`${r}?authorization=${q(i)}`);o.onmessage=m,o.onclose=S,o.onerror=p=>{console.error(p),C==null||C("Websocket failed to connect",p),t(p)},o.onopen=p=>{f==null||f(p),a(o)}})}async function se(e){const{retries:a=1}=e;let t=null;for(let n=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;n++)try{t=await ae(e)}catch(r){if(n===a)throw r;await ie(n*500)}return t}async function Q(e,a,t){const n=t!=null&&t.onMessage?[t.onMessage]:[],r=await se({auth:e,host:a,callbacks:{onError:t==null?void 0:t.onError,onMessage:i=>{const m=JSON.parse(i.data);n.forEach(f=>f(m.event,m))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:i=>n.push(i)}}function oe(e,a){const t=K(e,a);return{createStream(n){return t.post("/clips/streams",{driver_id:n.driver_id,presenter_id:n.presenter_id,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup})},startConnection(n,r,i){return t.post(`/clips/streams/${n}/sdp`,{session_id:i,answer:r})},addIceCandidate(n,r,i){return t.post(`/clips/streams/${n}/ice`,{session_id:i,...r})},sendStreamRequest(n,r,i){return t.post(`/clips/streams/${n}`,{session_id:r,...i})},close(n,r){return t.delete(`/clips/streams/${n}`,{session_id:r})}}}function de(e,a){const t=K(e,a);return{createStream(n,r){return t.post("/talks/streams",{source_url:n.source_url,driver_url:n.driver_url,face:n.face,config:n.config,stream_warmup:n.stream_warmup},r)},startConnection(n,r,i,m){return t.post(`/talks/streams/${n}/sdp`,{session_id:i,answer:r},m)},addIceCandidate(n,r,i,m){return t.post(`/talks/streams/${n}/ice`,{session_id:i,...r},m)},sendStreamRequest(n,r,i,m){return t.post(`/talks/streams/${n}`,{session_id:r,...i},m)},close(n,r,i){return t.delete(`/talks/streams/${n}`,{session_id:r},i)}}}function ce(e,a){return e.map((t,n)=>n===0?a?{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-a.bytesReceived,packetsReceived:t.packetsReceived-a.packetsReceived,packetsLost:t.packetsLost-a.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived,packetsReceived:t.packetsReceived,packetsLost:t.packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond}:{index:n,timestamp:t.timestamp,bytesReceived:t.bytesReceived-e[n-1].bytesReceived,packetsReceived:t.packetsReceived-e[n-1].packetsReceived,packetsLost:t.packetsLost-e[n-1].packetsLost,jitter:t.jitter,frameWidth:t.frameWidth,frameHeight:t.frameHeight,framesPerSecond:t.framesPerSecond})}let X=!1;const y=(e,a)=>X&&console.log(e,a),ge=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ue(e){switch(e){case"connected":return M.Connected;case"checking":return M.Connecting;case"failed":return M.Fail;case"new":case"closed":case"disconnected":default:return M.New}}function me(e,a){let t=[],n=0,r=0,i;return setInterval(()=>{e.getStats().then(f=>{f.forEach(S=>{if(S.type==="inbound-rtp"&&S.kind==="video"){if(r=t.length-1,S&&t[r]){const C=S.bytesReceived,o=t[r].bytesReceived;let p=i;i=C-o>0;let d;if(p!==i){if(i)n=t.length;else{const L=t.slice(n),E=n===0?void 0:t[n-1];d=ce(L,E),d=d.sort((k,h)=>h.packetsLost-k.packetsLost).slice(0,5)}a==null||a(i?P.Start:P.Stop,d)}}t.push(S)}})})},500)}async function le(e,{debug:a=!1,callbacks:t,auth:n,analytics:r,baseURL:i=R}){X=a;let m;const{startConnection:f,sendStreamRequest:S,close:C,createStream:o,addIceCandidate:p}=e.videoType===T.Clip?oe(n,i):de(n,i),{id:d,offer:L,ice_servers:E,session_id:k}=await o(e),h=new ge({iceServers:E}),c=h.createDataChannel("JanusDataChannel");if(!k)throw new Error("Could not create session_id");const l=me(h,t.onVideoStateChange);h.onicecandidate=s=>{y("peerConnection.onicecandidate",s),s.candidate&&s.candidate.sdpMid&&s.candidate.sdpMLineIndex!==null?p(d,{candidate:s.candidate.candidate,sdpMid:s.candidate.sdpMid,sdpMLineIndex:s.candidate.sdpMLineIndex},k):p(d,{candidate:null},k)},h.oniceconnectionstatechange=()=>{var u;y("peerConnection.oniceconnectionstatechange => "+h.iceConnectionState);const s=ue(h.iceConnectionState);s===M.Connected?m=setTimeout(()=>{var w;(w=t.onConnectionStateChange)==null||w.call(t,M.Connected)},5e3):(clearTimeout(m),(u=t.onConnectionStateChange)==null||u.call(t,s))},h.ontrack=s=>{var u;y("peerConnection.ontrack",s),(u=t.onSrcObjectReady)==null||u.call(t,s.streams[0])},c.onmessage=s=>{var u,w;if(c.readyState==="open"){const[_,A]=s.data.split(":");_===I.StreamStarted?r==null||r.track("agent-video",{event:"start",...s}):_===I.StreamDone?r==null||r.track("agent-video",{event:"stop",...s}):_===I.StreamFailed?((u=t.onVideoStateChange)==null||u.call(t,P.Stop,{event:_,data:A}),clearInterval(l)):_===I.StreamReady?(clearTimeout(m),(w=t.onConnectionStateChange)==null||w.call(t,M.Connected)):_===I.StreamCreated?r==null||r.track("agent-video",{event:"created",...s}):_===I.StreamVideoCreated?r==null||r.track("agent-video",{event:"video-created",...s}):_===I.StreamVideoDone?r==null||r.track("agent-video",{event:"video-done",...s}):_===I.StreamVideoError&&(r==null||r.track("agent-video",{event:"video-error",...s}))}},await h.setRemoteDescription(L),y("set remote description OK");const g=await h.createAnswer();return y("create answer OK"),await h.setLocalDescription(g),y("set local description OK"),await f(d,g,k),y("start connection OK"),{speak(s){return S(d,k,s)},async disconnect(){var s,u;d&&(h&&(h.close(),h.oniceconnectionstatechange=null,h.onnegotiationneeded=null,h.onicecandidate=null,h.ontrack=null),await C(d,k).catch(w=>{}),(s=t.onConnectionStateChange)==null||s.call(t,M.New),(u=t.onVideoStateChange)==null||u.call(t,P.Stop),clearInterval(l))},sessionId:k,streamId:d}}function we(e){const a={mixPanelKey:e.mixPanelKey||"testKey",distinct_id:e.distinctId||V(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...a,getRandom:()=>Math.random().toString(16).slice(2),track(t,n){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const r={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...n,...a,time:Date.now(),$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerWidth,"Screen Width":window.screen.width||window.innerHeight,"User Agent":navigator.userAgent}}])})};return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1",r).then(i=>i.json()).catch(i=>console.error(i))}}}function he(e){var n,r;const a=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const i=navigator.platform;return i.toLowerCase().includes("win")?"Windows":i.toLowerCase().includes("mac")?"Mac OS X":i.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${a()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:e.presenter.type,agentVoice:{voiceId:(n=e.presenter.voice)==null?void 0:n.voice_id,provider:(r=e.presenter.voice)==null?void 0:r.type}}}function fe(e,a){var t;return(t=e.knowledge)!=null&&t.id?a.getKnowledge(e.knowledge.id).then(n=>(n==null?void 0:n.starter_message)||[]):[]}function pe(e){return e.presenter.type===T.Clip?{videoType:T.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}:{videoType:T.Talk,source_url:e.presenter.source_url,stream_warmup:!0}}function Y(e,a,t,n,r){return new Promise(async(i,m)=>{let f=r;const S=await le(pe(e),{...a,callbacks:{...a.callbacks,onConnectionStateChange:async C=>{var o,p;if(C===M.Connected)try{f||(f=await t.newChat(e.id),n.track("agent-chat",{event:"created",chat_id:f.id,agent_id:e.id})),S&&i({chat:f,streamingManager:S})}catch(d){console.error(d),m("Cannot create new chat")}else C===M.Fail&&m(new Error("Cannot create connection"));(p=(o=a.callbacks).onConnectionStateChange)==null||p.call(o,C)},onVideoStateChange(C,o){var p,d;n.track("agent-video",{event:C,rtc_stats:o??[]}),(d=(p=a.callbacks).onVideoStateChange)==null||d.call(p,C,o)}}}).catch(m)})}function ve(e,a,t){return J(a,t||R).getById(e)}function O(e){let a="";if(e.greetings&&e.greetings.length>0){const t=Math.floor(Math.random()*e.greetings.length);a=e.greetings[t]}else a=`Hi! I'm ${e.preview_name}, welcome to agents. How can I help you?`;return[{content:a,id:N(),role:"assistant",created_at:new Date().toISOString()}]}async function Se(e,a){var k,h;const t={messages:[]};let n=-1;const r=a.wsURL||G,i=a.baseURL||R,m=a.mixpanelKey||ee,f=J(a.auth,i),S=re(a.auth,i),C=ne(a.auth,i),o=await f.getById(e),p=await fe(o,C);t.messages=O(o),(h=(k=a.callbacks).onNewMessage)==null||h.call(k,t.messages);const d=we({mixPanelKey:m,agent:o,...a});d.track("agent-sdk",{event:"loaded",...he(o)});const L={onMessage:(c,l)=>{var g,s;if("content"in l){const{content:u}=l,w=t.messages[t.messages.length-1];(w==null?void 0:w.role)==="assistant"&&(n<t.messages.length&&(w.content=c===b.Partial?w.content+u:u),c===b.Answer&&(n=t.messages.length)),c===b.Complete&&d.track("agent-message-received",{messages:t.messages.length}),(s=(g=a.callbacks).onNewMessage)==null||s.call(g,t.messages)}}};async function E(){var s,u,w,_,A;const c=await Q(a.auth,r,L),{streamingManager:l,chat:g}=await Y(o,a,f,d,t.chat);n=-1,t.messages=O(o),(u=(s=a.callbacks).onNewMessage)==null||u.call(s,t.messages),g!=null&&g.id&&g.id!==((w=t.chat)==null?void 0:w.id)&&((A=(_=a.callbacks).onNewChat)==null||A.call(_,g==null?void 0:g.id)),t.streamingManager=l,t.socketManager=c,t.chat=g,d.track("agent-chat",{event:"connect",chatId:g.id,agentId:o.id})}return{agent:o,starterMessages:p,connect:E,async reconnect(){if(!t.chat)return E();const c=await Q(a.auth,r,L),{streamingManager:l,chat:g}=await Y(o,a,f,d,t.chat);t.streamingManager=l,t.socketManager=c,d.track("agent-chat",{event:"reconnect",chatId:g.id,agentId:o.id})},async disconnect(){var c,l,g,s,u;(c=t.socketManager)==null||c.disconnect(),await((l=t.streamingManager)==null?void 0:l.disconnect()),t.messages=O(o),(s=(g=a.callbacks).onNewMessage)==null||s.call(g,t.messages),d.track("agent-chat",{event:"disconnect",chatId:(u=t.chat)==null?void 0:u.id,agentId:o.id})},async chat(c,l=!1){var g,s;try{const u=Date.now();if(c.length===0)throw new Error("Message cannot be empty");if(!t.chat)throw new Error("Chat is not initialized");if(!t.streamingManager)throw new Error("Streaming manager is not initialized");t.messages.push({id:N(),role:"user",content:c,created_at:new Date(u).toISOString()});const w=await f.chat(o.id,t.chat.id,{sessionId:t.streamingManager.sessionId,streamId:t.streamingManager.streamId,messages:t.messages,append_chat:l});return d.track("agent-message-send",{event:"success",messages:t.messages.length+1}),t.messages.push({id:N(),role:"assistant",content:w.result??"",created_at:new Date().toISOString(),matches:w.matches}),w.result&&d.track("agent-message-received",{latency:Date.now()-u,messages:t.messages.length}),(s=(g=a.callbacks).onNewMessage)==null||s.call(g,t.messages),w}catch(u){throw d.track("agent-message-send",{event:"error",messages:t.messages.length}),u}},rate(c,l,g){var w,_,A,Z;const s=t.messages.find(x=>x.id===c);if(t.chat){if(!s)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const u=((w=s.matches)==null?void 0:w.map(x=>[x.document_id,x.id]))??[];return d.track("agent-rate",{event:g?"update":"create",thumb:l===1?"up":"down",knowledge_id:((_=o.knowledge)==null?void 0:_.id)??"",matches:u,score:l}),g?S.update(g,{agent_id:o.id,knowledge_id:((A=o.knowledge)==null?void 0:A.id)??"",chat_id:t.chat.id,message_id:c,matches:u,score:l}):S.create({agent_id:o.id,knowledge_id:((Z=o.knowledge)==null?void 0:Z.id)??"",chat_id:t.chat.id,message_id:c,matches:u,score:l})},deleteRate(c){var l;return d.track("agent-rate-delete",{type:"text",chat_id:(l=t.chat)==null?void 0:l.id,id:c}),S.delete(c)},speak(c){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function l(){if(c.type==="text")return{type:"text",provider:c.provider?c.provider:o.presenter.voice,input:c.input,ssml:c.ssml||!1};if(c.type==="audio")return{type:"audio",audio_url:c.audio_url};throw new Error("Invalid payload")}const g=l();return d.track("agent-speak",g),t.streamingManager.speak({script:g})}}}v.ChatMode=U,v.DocumentType=F,v.KnowledgeType=B,v.PlanGroup=H,v.Providers=$,v.RateState=j,v.Subject=z,v.UserPlan=W,v.VoiceAccess=D,v.createAgentManager=Se,v.getAgent=ve,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"})});
@@ -38,7 +38,6 @@ export interface Agent {
38
38
  preview_thumbnail?: string;
39
39
  preview_url?: string;
40
40
  owner_id?: string;
41
- source_url?: string;
42
41
  }
43
42
  export type AgentPayload = Omit<Agent, 'type' | 'created_at' | 'modified_at' | 'id' | 'owner_id' | 'metadata' | 'idle_video_url'>;
44
43
  export interface AgentsAPI {
@@ -43,6 +43,12 @@ export interface CreateClipStreamRequest {
43
43
  * @default auto
44
44
  */
45
45
  compatibility_mode?: CompatibilityMode;
46
+ /**
47
+ * Whether to stream wamrup video on the connection.
48
+ * If set to true, will stream a warmup video when connection is established.
49
+ * At the end of the warmup video, a message containing "stream/ready" will be sent on the data channel.
50
+ */
51
+ stream_warmup?: boolean;
46
52
  }
47
53
  export interface SendClipStreamPayload extends StickyRequest {
48
54
  script: StreamScript;
@@ -20,6 +20,7 @@ export interface CreateTalkStreamRequest {
20
20
  align_expand_factor?: number;
21
21
  stitch?: boolean;
22
22
  };
23
+ stream_warmup?: boolean;
23
24
  }
24
25
  export interface SendTalkStreamPayload {
25
26
  script: StreamScript;
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.67",
4
+ "version": "1.0.19-beta.69",
5
5
  "type": "module",
6
6
  "description": "d-id client sdk",
7
7
  "repository": {