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