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