@d-id/client-sdk 1.1.19 → 1.1.20-staging.89
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-DKb-cXkg.js → index-DcoRNuxp.js} +433 -427
- package/dist/index.js +1 -1
- package/dist/index.umd.cjs +6 -6
- package/dist/{livekit-manager-D7QkEucf.js → livekit-manager-CNKaXUpT.js} +1 -1
- package/dist/src/services/analytics/mixpanel.d.ts +1 -1
- package/dist/src/utils/defer.d.ts +7 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var Q = (e, t, a) =>
|
|
1
|
+
var Se = Object.defineProperty;
|
|
2
|
+
var Ie = (e, t, a) => t in e ? Se(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a;
|
|
3
|
+
var Q = (e, t, a) => Ie(e, typeof t != "symbol" ? t + "" : t, a);
|
|
4
4
|
class ee extends Error {
|
|
5
5
|
constructor({ kind: a, description: r, error: o }) {
|
|
6
6
|
super(JSON.stringify({ kind: a, description: r }));
|
|
@@ -10,7 +10,7 @@ class ee extends Error {
|
|
|
10
10
|
this.kind = a, this.description = r, this.error = o;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
class
|
|
13
|
+
class Ee extends ee {
|
|
14
14
|
constructor(t, a) {
|
|
15
15
|
super({
|
|
16
16
|
kind: "ChatCreationFailed",
|
|
@@ -18,25 +18,25 @@ class Ie extends ee {
|
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
class
|
|
21
|
+
class Me extends ee {
|
|
22
22
|
constructor(t) {
|
|
23
23
|
super({ kind: "ChatModeDowngraded", description: `Chat mode downgraded to ${t}` });
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
class
|
|
26
|
+
class V extends ee {
|
|
27
27
|
constructor(a, r) {
|
|
28
28
|
super({ kind: "ValidationError", description: a });
|
|
29
29
|
Q(this, "key");
|
|
30
30
|
this.key = r;
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
class
|
|
33
|
+
class _e extends ee {
|
|
34
34
|
constructor(t) {
|
|
35
35
|
super({ kind: "WSError", description: t });
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
var
|
|
39
|
-
const
|
|
38
|
+
var Te = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(Te || {}), Ae = /* @__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))(Ae || {}), Pe = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(Pe || {}), be = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(be || {}), T = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e.Off = "Off", e))(T || {}), q = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(q || {}), je = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(je || {}), Le = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(Le || {}), xe = /* @__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))(xe || {}), we = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e.Expressive = "expressive", e))(we || {});
|
|
39
|
+
const Lt = (e) => {
|
|
40
40
|
switch (e) {
|
|
41
41
|
case "clip":
|
|
42
42
|
return "clip";
|
|
@@ -48,12 +48,12 @@ const bt = (e) => {
|
|
|
48
48
|
throw new Error(`Unknown video type: ${e}`);
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
|
-
var w = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(w || {}), Z = /* @__PURE__ */ ((e) => (e.Strong = "STRONG", e.Weak = "WEAK", e.Unknown = "UNKNOWN", e))(Z || {}),
|
|
52
|
-
const
|
|
51
|
+
var w = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(w || {}), Z = /* @__PURE__ */ ((e) => (e.Strong = "STRONG", e.Weak = "WEAK", e.Unknown = "UNKNOWN", e))(Z || {}), X = /* @__PURE__ */ ((e) => (e.Idle = "IDLE", e.Talking = "TALKING", e))(X || {}), b = /* @__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.StreamInterrupt = "stream/interrupt", e.StreamVideoCreated = "stream-video/started", e.StreamVideoDone = "stream-video/done", e.StreamVideoError = "stream-video/error", e.StreamVideoRejected = "stream-video/rejected", e))(b || {}), M = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Closed = "closed", e.Completed = "completed", e.Disconnected = "disconnected", e))(M || {}), J = /* @__PURE__ */ ((e) => (e.Legacy = "legacy", e.Fluent = "fluent", e))(J || {}), de = /* @__PURE__ */ ((e) => (e.Livekit = "livekit", e))(de || {}), Be = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.AzureOpenAi = "azure-openai", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(Be || {}), $e = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))($e || {});
|
|
52
|
+
const ze = 45 * 1e3, Fe = "X-Playground-Chat", te = "https://api.d-id.com", Ne = "wss://notifications.d-id.com", Je = "79f81a83a67430be2bc0fd61042b8faa", pe = (e) => new Promise((t) => setTimeout(t, e)), O = (e = 16) => {
|
|
53
53
|
const t = new Uint8Array(e);
|
|
54
54
|
return window.crypto.getRandomValues(t), Array.from(t, (a) => a.toString(16).padStart(2, "0")).join("").slice(0, 13);
|
|
55
|
-
},
|
|
56
|
-
function
|
|
55
|
+
}, ve = (e) => e.type === "clip" && e.presenter_id.startsWith("v2_") ? "clip_v2" : e.type, le = (e) => e === we.Expressive, We = (e) => [T.TextOnly, T.Playground, T.Maintenance].includes(e), ye = (e) => e && [T.DirectPlayback, T.Off].includes(e);
|
|
56
|
+
function Ue(e, t) {
|
|
57
57
|
let a;
|
|
58
58
|
return {
|
|
59
59
|
promise: new Promise((o, i) => {
|
|
@@ -77,12 +77,12 @@ async function ne(e, t) {
|
|
|
77
77
|
try {
|
|
78
78
|
if (!a.timeout)
|
|
79
79
|
return await e();
|
|
80
|
-
const { promise: i, clear: c } =
|
|
80
|
+
const { promise: i, clear: c } = Ue(a.timeout, a.timeoutErrorMessage), n = e().finally(c);
|
|
81
81
|
return await Promise.race([n, i]);
|
|
82
82
|
} catch (i) {
|
|
83
83
|
if (r = i, !a.shouldRetryFn(i) || o >= a.limit)
|
|
84
84
|
throw i;
|
|
85
|
-
await
|
|
85
|
+
await pe(a.delayMs), a.onRetry(i);
|
|
86
86
|
}
|
|
87
87
|
throw r;
|
|
88
88
|
}
|
|
@@ -91,43 +91,43 @@ function ae(e) {
|
|
|
91
91
|
return window.localStorage.setItem("did_external_key_id", e), e;
|
|
92
92
|
let t = window.localStorage.getItem("did_external_key_id");
|
|
93
93
|
if (!t) {
|
|
94
|
-
let a =
|
|
94
|
+
let a = O();
|
|
95
95
|
window.localStorage.setItem("did_external_key_id", a), t = a;
|
|
96
96
|
}
|
|
97
97
|
return t;
|
|
98
98
|
}
|
|
99
|
-
let
|
|
100
|
-
function
|
|
99
|
+
let Ke = O();
|
|
100
|
+
function ke(e, t) {
|
|
101
101
|
if (e.type === "bearer")
|
|
102
102
|
return `Bearer ${e.token}`;
|
|
103
103
|
if (e.type === "basic")
|
|
104
104
|
return `Basic ${btoa(`${e.username}:${e.password}`)}`;
|
|
105
105
|
if (e.type === "key")
|
|
106
|
-
return `Client-Key ${e.clientKey}.${ae(t)}_${
|
|
106
|
+
return `Client-Key ${e.clientKey}.${ae(t)}_${Ke}`;
|
|
107
107
|
throw new Error(`Unknown auth type: ${e}`);
|
|
108
108
|
}
|
|
109
|
-
const
|
|
109
|
+
const He = (e) => ne(e, {
|
|
110
110
|
limit: 3,
|
|
111
111
|
delayMs: 1e3,
|
|
112
112
|
timeout: 0,
|
|
113
113
|
shouldRetryFn: (t) => t.status === 429
|
|
114
114
|
});
|
|
115
|
-
function
|
|
115
|
+
function Ce(e, t = te, a, r) {
|
|
116
116
|
const o = async (i, c) => {
|
|
117
|
-
const { skipErrorHandler: n, ...s } = c || {}, d = await
|
|
117
|
+
const { skipErrorHandler: n, ...s } = c || {}, d = await He(
|
|
118
118
|
() => fetch(t + (i != null && i.startsWith("/") ? i : `/${i}`), {
|
|
119
119
|
...s,
|
|
120
120
|
headers: {
|
|
121
121
|
...s.headers,
|
|
122
|
-
Authorization:
|
|
122
|
+
Authorization: ke(e, r),
|
|
123
123
|
"Content-Type": "application/json"
|
|
124
124
|
}
|
|
125
125
|
})
|
|
126
126
|
);
|
|
127
127
|
if (!d.ok) {
|
|
128
128
|
let l = await d.text().catch(() => `Failed to fetch with status ${d.status}`);
|
|
129
|
-
const
|
|
130
|
-
throw a && !n && a(
|
|
129
|
+
const u = new Error(l);
|
|
130
|
+
throw a && !n && a(u, { url: i, options: s, headers: d.headers }), u;
|
|
131
131
|
}
|
|
132
132
|
return d.json();
|
|
133
133
|
};
|
|
@@ -146,8 +146,8 @@ function ke(e, t = te, a, r) {
|
|
|
146
146
|
}
|
|
147
147
|
};
|
|
148
148
|
}
|
|
149
|
-
function
|
|
150
|
-
const o =
|
|
149
|
+
function Ve(e, t = te, a, r) {
|
|
150
|
+
const o = Ce(e, `${t}/agents`, a, r);
|
|
151
151
|
return {
|
|
152
152
|
create(i, c) {
|
|
153
153
|
return o.post("/", i, c);
|
|
@@ -184,7 +184,7 @@ function He(e, t = te, a, r) {
|
|
|
184
184
|
}
|
|
185
185
|
};
|
|
186
186
|
}
|
|
187
|
-
function
|
|
187
|
+
function qe(e) {
|
|
188
188
|
var o, i, c, n;
|
|
189
189
|
const t = () => /Mobi|Android/i.test(navigator.userAgent) ? "Mobile" : "Desktop", a = () => {
|
|
190
190
|
const s = navigator.platform;
|
|
@@ -195,18 +195,18 @@ function Ve(e) {
|
|
|
195
195
|
isMobile: `${t() == "Mobile"}`,
|
|
196
196
|
browser: navigator.userAgent,
|
|
197
197
|
origin: window.location.origin,
|
|
198
|
-
agentType:
|
|
198
|
+
agentType: ve(r),
|
|
199
199
|
agentVoice: {
|
|
200
200
|
voiceId: (i = (o = e.presenter) == null ? void 0 : o.voice) == null ? void 0 : i.voice_id,
|
|
201
201
|
provider: (n = (c = e.presenter) == null ? void 0 : c.voice) == null ? void 0 : n.type
|
|
202
202
|
}
|
|
203
203
|
};
|
|
204
204
|
}
|
|
205
|
-
function
|
|
205
|
+
function Oe(e) {
|
|
206
206
|
var a, r, o, i, c, n;
|
|
207
207
|
const t = (a = e.llm) == null ? void 0 : a.prompt_customization;
|
|
208
208
|
return {
|
|
209
|
-
agentType:
|
|
209
|
+
agentType: ve(e.presenter),
|
|
210
210
|
owner_id: e.owner_id ?? "",
|
|
211
211
|
promptVersion: (r = e.llm) == null ? void 0 : r.prompt_version,
|
|
212
212
|
behavior: {
|
|
@@ -225,8 +225,8 @@ function qe(e) {
|
|
|
225
225
|
...e.access === "public" ? { from: "agent-template" } : {}
|
|
226
226
|
};
|
|
227
227
|
}
|
|
228
|
-
const
|
|
229
|
-
function
|
|
228
|
+
const Xe = (e) => e.reduce((t, a) => t + a, 0), ue = (e) => Xe(e) / e.length;
|
|
229
|
+
function Ye(e, t, a) {
|
|
230
230
|
var s, d, l;
|
|
231
231
|
const { event: r, ...o } = e, { template: i } = (t == null ? void 0 : t.llm) || {}, { language: c } = ((s = t == null ? void 0 : t.presenter) == null ? void 0 : s.voice) || {};
|
|
232
232
|
return {
|
|
@@ -237,9 +237,12 @@ function Xe(e, t, a) {
|
|
|
237
237
|
...a
|
|
238
238
|
};
|
|
239
239
|
}
|
|
240
|
+
function fe(e) {
|
|
241
|
+
"requestIdleCallback" in window ? requestIdleCallback(e, { timeout: 2e3 }) : setTimeout(e, 0);
|
|
242
|
+
}
|
|
240
243
|
let re = {};
|
|
241
|
-
const
|
|
242
|
-
function
|
|
244
|
+
const Qe = "https://api-js.mixpanel.com/track/?verbose=1&ip=1";
|
|
245
|
+
function Ze(e) {
|
|
243
246
|
const t = window != null && window.hasOwnProperty("DID_AGENTS_API") ? "agents-ui" : "agents-sdk";
|
|
244
247
|
return {
|
|
245
248
|
token: e.token || "testKey",
|
|
@@ -250,14 +253,14 @@ function Qe(e) {
|
|
|
250
253
|
...e.mixpanelAdditionalProperties || {}
|
|
251
254
|
},
|
|
252
255
|
isEnabled: e.isEnabled ?? !0,
|
|
253
|
-
getRandom:
|
|
256
|
+
getRandom: O,
|
|
254
257
|
enrich(a) {
|
|
255
258
|
this.additionalProperties = { ...this.additionalProperties, ...a };
|
|
256
259
|
},
|
|
257
|
-
async track(a, r) {
|
|
260
|
+
async track(a, r, o) {
|
|
258
261
|
if (!this.isEnabled)
|
|
259
262
|
return Promise.resolve();
|
|
260
|
-
const { audioPath:
|
|
263
|
+
const { audioPath: i, ...c } = r || {}, n = o || Date.now(), s = {
|
|
261
264
|
method: "POST",
|
|
262
265
|
headers: {
|
|
263
266
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
@@ -268,11 +271,11 @@ function Qe(e) {
|
|
|
268
271
|
event: a,
|
|
269
272
|
properties: {
|
|
270
273
|
...this.additionalProperties,
|
|
271
|
-
...
|
|
274
|
+
...c,
|
|
272
275
|
agentId: this.agentId,
|
|
273
276
|
source: t,
|
|
274
277
|
token: this.token,
|
|
275
|
-
time:
|
|
278
|
+
time: n,
|
|
276
279
|
$insert_id: this.getRandom(),
|
|
277
280
|
origin: window.location.href,
|
|
278
281
|
"Screen Height": window.screen.height || window.innerWidth,
|
|
@@ -283,11 +286,10 @@ function Qe(e) {
|
|
|
283
286
|
])
|
|
284
287
|
})
|
|
285
288
|
};
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
}
|
|
289
|
+
return fetch(Qe, {
|
|
290
|
+
...s,
|
|
291
|
+
keepalive: !0
|
|
292
|
+
}).catch((d) => console.error("Analytics tracking error:", d)), Promise.resolve();
|
|
291
293
|
},
|
|
292
294
|
linkTrack(a, r, o, i) {
|
|
293
295
|
re[a] || (re[a] = { events: {}, resolvedDependencies: [] }), i.includes(o) || i.push(o);
|
|
@@ -305,7 +307,7 @@ function Qe(e) {
|
|
|
305
307
|
}
|
|
306
308
|
};
|
|
307
309
|
}
|
|
308
|
-
function
|
|
310
|
+
function De() {
|
|
309
311
|
let e = 0;
|
|
310
312
|
return {
|
|
311
313
|
reset: () => e = 0,
|
|
@@ -313,13 +315,13 @@ function Re() {
|
|
|
313
315
|
get: (t = !1) => t ? Date.now() - e : e
|
|
314
316
|
};
|
|
315
317
|
}
|
|
316
|
-
const N =
|
|
317
|
-
function
|
|
318
|
-
return e ===
|
|
318
|
+
const N = De(), ie = De();
|
|
319
|
+
function Re(e) {
|
|
320
|
+
return e === T.Playground ? { headers: { [Fe]: "true" } } : {};
|
|
319
321
|
}
|
|
320
322
|
async function se(e, t, a, r, o = !1, i) {
|
|
321
323
|
try {
|
|
322
|
-
return !i && !
|
|
324
|
+
return !i && !ye(r) && (i = await t.newChat(e.id, { persist: o }, Re(r)), a.track("agent-chat", {
|
|
323
325
|
event: "created",
|
|
324
326
|
chatId: i.id,
|
|
325
327
|
mode: r
|
|
@@ -335,59 +337,59 @@ async function se(e, t, a, r, o = !1, i) {
|
|
|
335
337
|
throw new Error("Cannot create new chat");
|
|
336
338
|
}
|
|
337
339
|
}
|
|
338
|
-
function
|
|
340
|
+
function Ge(e) {
|
|
339
341
|
return e && e.length > 0 ? e : [];
|
|
340
342
|
}
|
|
341
|
-
function
|
|
343
|
+
function et(e, t, a) {
|
|
342
344
|
if (!e)
|
|
343
345
|
throw new Error("Please connect to the agent first");
|
|
344
346
|
if (!e.interruptAvailable)
|
|
345
347
|
throw new Error("Interrupt is not enabled for this stream");
|
|
346
|
-
if (t !==
|
|
348
|
+
if (t !== J.Fluent)
|
|
347
349
|
throw new Error("Interrupt only available for Fluent streams");
|
|
348
350
|
if (!a)
|
|
349
351
|
throw new Error("No active video to interrupt");
|
|
350
352
|
}
|
|
351
|
-
async function
|
|
353
|
+
async function tt(e, t) {
|
|
352
354
|
const a = {
|
|
353
|
-
type:
|
|
355
|
+
type: b.StreamInterrupt,
|
|
354
356
|
videoId: t,
|
|
355
357
|
timestamp: Date.now()
|
|
356
358
|
};
|
|
357
359
|
e.sendDataChannelMessage(JSON.stringify(a));
|
|
358
360
|
}
|
|
359
|
-
function
|
|
361
|
+
function rt(e) {
|
|
360
362
|
return new Promise((t, a) => {
|
|
361
|
-
const { callbacks: r, host: o, auth: i, externalId: c } = e, { onMessage: n = null, onOpen: s = null, onClose: d = null, onError: l = null } = r || {},
|
|
362
|
-
|
|
363
|
+
const { callbacks: r, host: o, auth: i, externalId: c } = e, { onMessage: n = null, onOpen: s = null, onClose: d = null, onError: l = null } = r || {}, u = new WebSocket(`${o}?authorization=${encodeURIComponent(ke(i, c))}`);
|
|
364
|
+
u.onmessage = n, u.onclose = d, u.onerror = (y) => {
|
|
363
365
|
console.error(y), l == null || l("Websocket failed to connect", y), a(y);
|
|
364
|
-
},
|
|
365
|
-
s == null || s(y), t(
|
|
366
|
+
}, u.onopen = (y) => {
|
|
367
|
+
s == null || s(y), t(u);
|
|
366
368
|
};
|
|
367
369
|
});
|
|
368
370
|
}
|
|
369
|
-
async function
|
|
371
|
+
async function nt(e) {
|
|
370
372
|
const { retries: t = 1 } = e;
|
|
371
373
|
let a = null;
|
|
372
374
|
for (let r = 0; (a == null ? void 0 : a.readyState) !== WebSocket.OPEN; r++)
|
|
373
375
|
try {
|
|
374
|
-
a = await
|
|
376
|
+
a = await rt(e);
|
|
375
377
|
} catch (o) {
|
|
376
378
|
if (r === t)
|
|
377
379
|
throw o;
|
|
378
|
-
await
|
|
380
|
+
await pe(r * 500);
|
|
379
381
|
}
|
|
380
382
|
return a;
|
|
381
383
|
}
|
|
382
|
-
async function
|
|
383
|
-
const o = a != null && a.onMessage ? [a.onMessage] : [], i = await
|
|
384
|
+
async function at(e, t, a, r) {
|
|
385
|
+
const o = a != null && a.onMessage ? [a.onMessage] : [], i = await nt({
|
|
384
386
|
auth: e,
|
|
385
387
|
host: t,
|
|
386
388
|
externalId: r,
|
|
387
389
|
callbacks: {
|
|
388
390
|
onError: (c) => {
|
|
389
391
|
var n;
|
|
390
|
-
return (n = a.onError) == null ? void 0 : n.call(a, new
|
|
392
|
+
return (n = a.onError) == null ? void 0 : n.call(a, new _e(c));
|
|
391
393
|
},
|
|
392
394
|
onMessage(c) {
|
|
393
395
|
const n = JSON.parse(c.data);
|
|
@@ -401,7 +403,7 @@ async function nt(e, t, a, r) {
|
|
|
401
403
|
subscribeToEvents: (c) => o.push(c)
|
|
402
404
|
};
|
|
403
405
|
}
|
|
404
|
-
function
|
|
406
|
+
function it(e) {
|
|
405
407
|
if (e.answer !== void 0)
|
|
406
408
|
return e.answer;
|
|
407
409
|
let t = 0, a = "";
|
|
@@ -409,41 +411,41 @@ function at(e) {
|
|
|
409
411
|
a += e[t++];
|
|
410
412
|
return a;
|
|
411
413
|
}
|
|
412
|
-
function
|
|
414
|
+
function st(e, t, a, r, o) {
|
|
413
415
|
const i = r.messages[r.messages.length - 1];
|
|
414
|
-
if (!(e ===
|
|
416
|
+
if (!(e === q.Partial || e === q.Answer) || (i == null ? void 0 : i.role) !== "assistant")
|
|
415
417
|
return;
|
|
416
418
|
const { content: c, sequence: n } = t;
|
|
417
|
-
e ===
|
|
418
|
-
const s =
|
|
419
|
-
(i.content !== s || e ===
|
|
419
|
+
e === q.Partial ? a[n] = c : a.answer = c;
|
|
420
|
+
const s = it(a);
|
|
421
|
+
(i.content !== s || e === q.Answer) && (i.content = s, o == null || o([...r.messages], e));
|
|
420
422
|
}
|
|
421
|
-
function
|
|
423
|
+
function ot(e, t, a, r, o) {
|
|
422
424
|
let i = {};
|
|
423
425
|
return {
|
|
424
426
|
clearQueue: () => i = {},
|
|
425
427
|
onMessage: (c, n) => {
|
|
426
428
|
var s, d;
|
|
427
429
|
if ("content" in n)
|
|
428
|
-
|
|
430
|
+
st(c, n, i, t, a.callbacks.onNewMessage), c === q.Answer && e.track("agent-message-received", {
|
|
429
431
|
messages: t.messages.length,
|
|
430
432
|
mode: t.chatMode
|
|
431
433
|
});
|
|
432
434
|
else {
|
|
433
|
-
const l =
|
|
435
|
+
const l = b, u = [l.StreamVideoDone, l.StreamVideoError, l.StreamVideoRejected], y = [l.StreamFailed, l.StreamVideoError, l.StreamVideoRejected], A = Ye(n, r, { mode: t.chatMode });
|
|
434
436
|
if (c = c, c === l.StreamVideoCreated)
|
|
435
|
-
e.linkTrack("agent-video",
|
|
436
|
-
else if (
|
|
437
|
-
const
|
|
438
|
-
y.includes(c) ? e.track("agent-video", { ...
|
|
437
|
+
e.linkTrack("agent-video", A, l.StreamVideoCreated, ["start"]);
|
|
438
|
+
else if (u.includes(c)) {
|
|
439
|
+
const j = c.split("/")[1];
|
|
440
|
+
y.includes(c) ? e.track("agent-video", { ...A, event: j }) : e.linkTrack("agent-video", { ...A, event: j }, c, ["done"]);
|
|
439
441
|
}
|
|
440
442
|
y.includes(c) && ((d = (s = a.callbacks).onError) == null || d.call(s, new Error(`Stream failed with event ${c}`), { data: n })), n.event === l.StreamDone && o();
|
|
441
443
|
}
|
|
442
444
|
}
|
|
443
445
|
};
|
|
444
446
|
}
|
|
445
|
-
function
|
|
446
|
-
const o =
|
|
447
|
+
function ct(e, t, a, r) {
|
|
448
|
+
const o = Ce(e, `${t}/agents/${a}`, r);
|
|
447
449
|
return {
|
|
448
450
|
createStream(i) {
|
|
449
451
|
return o.post("/streams", i);
|
|
@@ -471,8 +473,8 @@ function ot(e, t, a, r) {
|
|
|
471
473
|
}
|
|
472
474
|
};
|
|
473
475
|
}
|
|
474
|
-
const
|
|
475
|
-
function
|
|
476
|
+
const dt = (e, t) => (a, r) => e && console.log(`[${t}] ${a}`, r ?? "");
|
|
477
|
+
function lt(e, t, a) {
|
|
476
478
|
const r = (t.timestamp - e.timestamp) / 1e3;
|
|
477
479
|
return {
|
|
478
480
|
duration: r,
|
|
@@ -492,7 +494,7 @@ function dt(e, t, a) {
|
|
|
492
494
|
lowFpsCount: a
|
|
493
495
|
};
|
|
494
496
|
}
|
|
495
|
-
function
|
|
497
|
+
function ut(e) {
|
|
496
498
|
return e.filter(
|
|
497
499
|
(t) => t.freezeCount > 0 || t.framesPerSecond < 21 || t.framesDropped > 0 || t.packetsLost > 0
|
|
498
500
|
).map((t) => {
|
|
@@ -503,7 +505,7 @@ function lt(e) {
|
|
|
503
505
|
};
|
|
504
506
|
});
|
|
505
507
|
}
|
|
506
|
-
function
|
|
508
|
+
function ft(e) {
|
|
507
509
|
let t = "", a = 0;
|
|
508
510
|
for (const r of e.values()) {
|
|
509
511
|
if (r && r.type === "codec" && r.mimeType.startsWith("video") && (t = r.mimeType.split("/")[1]), r && r.type === "candidate-pair") {
|
|
@@ -533,7 +535,7 @@ function ut(e) {
|
|
|
533
535
|
}
|
|
534
536
|
return {};
|
|
535
537
|
}
|
|
536
|
-
function
|
|
538
|
+
function mt(e, t, a) {
|
|
537
539
|
const r = e.map((s, d) => d === 0 ? a ? {
|
|
538
540
|
timestamp: s.timestamp,
|
|
539
541
|
duration: 0,
|
|
@@ -585,14 +587,14 @@ function ft(e, t, a) {
|
|
|
585
587
|
framesPerSecond: s.framesPerSecond,
|
|
586
588
|
freezeCount: s.freezeCount - e[d - 1].freezeCount,
|
|
587
589
|
freezeDuration: s.freezeDuration - e[d - 1].freezeDuration
|
|
588
|
-
}), o =
|
|
590
|
+
}), o = ut(r), i = o.reduce((s, d) => s + (d.causes.includes("low fps") ? 1 : 0), 0), c = r.filter((s) => !!s.avgJitterDelayInInterval).map((s) => s.avgJitterDelayInInterval), n = r.filter((s) => !!s.rtt).map((s) => s.rtt);
|
|
589
591
|
return {
|
|
590
592
|
webRTCStats: {
|
|
591
593
|
anomalies: o,
|
|
592
594
|
minRtt: Math.min(...n),
|
|
593
595
|
avgRtt: ue(n),
|
|
594
596
|
maxRtt: Math.max(...n),
|
|
595
|
-
aggregateReport:
|
|
597
|
+
aggregateReport: lt(e[0], e[e.length - 1], i),
|
|
596
598
|
minJitterDelayInInterval: Math.min(...c),
|
|
597
599
|
maxJitterDelayInInterval: Math.max(...c),
|
|
598
600
|
avgJitterDelayInInterval: ue(c)
|
|
@@ -601,16 +603,16 @@ function ft(e, t, a) {
|
|
|
601
603
|
resolution: `${e[0].frameWidth}x${e[0].frameHeight}`
|
|
602
604
|
};
|
|
603
605
|
}
|
|
604
|
-
const oe = 100,
|
|
605
|
-
function
|
|
606
|
+
const oe = 100, gt = Math.max(Math.ceil(400 / oe), 1), ht = 0.25, wt = 0.28;
|
|
607
|
+
function pt() {
|
|
606
608
|
let e = 0, t, a, r = 0;
|
|
607
609
|
return (o) => {
|
|
608
610
|
for (const i of o.values())
|
|
609
611
|
if (i && i.type === "inbound-rtp" && i.kind === "video") {
|
|
610
612
|
const c = i.jitterBufferDelay, n = i.jitterBufferEmittedCount;
|
|
611
613
|
if (a && n > a) {
|
|
612
|
-
const l = c - t,
|
|
613
|
-
r = l /
|
|
614
|
+
const l = c - t, u = n - a;
|
|
615
|
+
r = l / u;
|
|
614
616
|
}
|
|
615
617
|
t = c, a = n;
|
|
616
618
|
const s = i.framesDecoded, d = s - e > 0;
|
|
@@ -619,41 +621,41 @@ function wt() {
|
|
|
619
621
|
return { isReceiving: !1, avgJitterDelayInInterval: r };
|
|
620
622
|
};
|
|
621
623
|
}
|
|
622
|
-
function
|
|
623
|
-
let i = [], c, n = 0, s = !1, d = Z.Unknown, l = Z.Unknown,
|
|
624
|
-
const
|
|
624
|
+
function vt(e, t, a, r, o) {
|
|
625
|
+
let i = [], c, n = 0, s = !1, d = Z.Unknown, l = Z.Unknown, u = 0, y = 0;
|
|
626
|
+
const A = pt();
|
|
625
627
|
return setInterval(async () => {
|
|
626
|
-
const
|
|
627
|
-
if (
|
|
628
|
-
n = 0,
|
|
629
|
-
else if (s && (n++, n >=
|
|
630
|
-
const K =
|
|
631
|
-
r == null || r(w.Stop, K), t() || a(), y =
|
|
628
|
+
const j = await e.getStats(), { isReceiving: z, avgJitterDelayInInterval: F, freezeCount: L } = A(j), C = ft(j);
|
|
629
|
+
if (z)
|
|
630
|
+
n = 0, u = L - y, l = F < ht ? Z.Strong : F > wt && u > 1 ? Z.Weak : d, l !== d && (o == null || o(l), d = l, y += u, u = 0), s || (r == null || r(w.Start), c = i[i.length - 1], i = [], s = !0), i.push(C);
|
|
631
|
+
else if (s && (n++, n >= gt)) {
|
|
632
|
+
const K = mt(i, oe, c);
|
|
633
|
+
r == null || r(w.Stop, K), t() || a(), y = L, s = !1;
|
|
632
634
|
}
|
|
633
635
|
}, oe);
|
|
634
636
|
}
|
|
635
|
-
const
|
|
636
|
-
function
|
|
637
|
+
const yt = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
|
|
638
|
+
function me(e) {
|
|
637
639
|
switch (e) {
|
|
638
640
|
case "connected":
|
|
639
|
-
return
|
|
641
|
+
return M.Connected;
|
|
640
642
|
case "checking":
|
|
641
|
-
return
|
|
643
|
+
return M.Connecting;
|
|
642
644
|
case "failed":
|
|
643
|
-
return
|
|
645
|
+
return M.Fail;
|
|
644
646
|
case "new":
|
|
645
|
-
return
|
|
647
|
+
return M.New;
|
|
646
648
|
case "closed":
|
|
647
|
-
return
|
|
649
|
+
return M.Closed;
|
|
648
650
|
case "disconnected":
|
|
649
|
-
return
|
|
651
|
+
return M.Disconnected;
|
|
650
652
|
case "completed":
|
|
651
|
-
return
|
|
653
|
+
return M.Completed;
|
|
652
654
|
default:
|
|
653
|
-
return
|
|
655
|
+
return M.New;
|
|
654
656
|
}
|
|
655
657
|
}
|
|
656
|
-
const
|
|
658
|
+
const kt = (e) => (t) => {
|
|
657
659
|
const [a, r = ""] = t.split(/:(.+)/);
|
|
658
660
|
try {
|
|
659
661
|
const o = JSON.parse(r);
|
|
@@ -662,7 +664,7 @@ const yt = (e) => (t) => {
|
|
|
662
664
|
return e("Failed to parse data channel message, returning data as string", { subject: a, rawData: r, error: o }), { subject: a, data: r };
|
|
663
665
|
}
|
|
664
666
|
};
|
|
665
|
-
function
|
|
667
|
+
function Ct({
|
|
666
668
|
statsSignal: e,
|
|
667
669
|
dataChannelSignal: t,
|
|
668
670
|
onVideoStateChange: a,
|
|
@@ -670,16 +672,16 @@ function kt({
|
|
|
670
672
|
}) {
|
|
671
673
|
e === w.Start && t === w.Start ? a == null || a(w.Start) : e === w.Stop && t === w.Stop && (a == null || a(w.Stop, r));
|
|
672
674
|
}
|
|
673
|
-
function
|
|
675
|
+
function Dt({
|
|
674
676
|
statsSignal: e,
|
|
675
677
|
dataChannelSignal: t,
|
|
676
678
|
onVideoStateChange: a,
|
|
677
679
|
onAgentActivityStateChange: r,
|
|
678
680
|
report: o
|
|
679
681
|
}) {
|
|
680
|
-
e === w.Start ? a == null || a(w.Start) : e === w.Stop && (a == null || a(w.Stop, o)), t === w.Start ? r == null || r(
|
|
682
|
+
e === w.Start ? a == null || a(w.Start) : e === w.Stop && (a == null || a(w.Stop, o)), t === w.Start ? r == null || r(X.Talking) : t === w.Stop && (r == null || r(X.Idle));
|
|
681
683
|
}
|
|
682
|
-
function
|
|
684
|
+
function ge({
|
|
683
685
|
statsSignal: e,
|
|
684
686
|
dataChannelSignal: t,
|
|
685
687
|
onVideoStateChange: a,
|
|
@@ -687,7 +689,7 @@ function me({
|
|
|
687
689
|
streamType: o,
|
|
688
690
|
report: i
|
|
689
691
|
}) {
|
|
690
|
-
o ===
|
|
692
|
+
o === J.Legacy ? Ct({ statsSignal: e, dataChannelSignal: t, onVideoStateChange: a, report: i }) : o === J.Fluent && Dt({
|
|
691
693
|
statsSignal: e,
|
|
692
694
|
dataChannelSignal: t,
|
|
693
695
|
onVideoStateChange: a,
|
|
@@ -695,185 +697,185 @@ function me({
|
|
|
695
697
|
report: i
|
|
696
698
|
});
|
|
697
699
|
}
|
|
698
|
-
async function
|
|
699
|
-
var
|
|
700
|
-
const n =
|
|
701
|
-
let d = !1, l = !1,
|
|
702
|
-
const { startConnection:
|
|
700
|
+
async function Rt(e, t, { debug: a = !1, callbacks: r, auth: o, baseURL: i = te, analytics: c }) {
|
|
701
|
+
var H;
|
|
702
|
+
const n = dt(a, "WebRTCStreamingManager"), s = kt(n);
|
|
703
|
+
let d = !1, l = !1, u = w.Stop, y = w.Stop;
|
|
704
|
+
const { startConnection: A, sendStreamRequest: j, close: z, createStream: F, addIceCandidate: L } = ct(
|
|
703
705
|
o,
|
|
704
706
|
i,
|
|
705
707
|
e,
|
|
706
708
|
r.onError
|
|
707
709
|
), {
|
|
708
|
-
id:
|
|
710
|
+
id: C,
|
|
709
711
|
offer: K,
|
|
710
712
|
ice_servers: G,
|
|
711
|
-
session_id:
|
|
712
|
-
fluent:
|
|
713
|
-
interrupt_enabled:
|
|
714
|
-
triggers_enabled:
|
|
715
|
-
} = await
|
|
716
|
-
(
|
|
717
|
-
const g = new
|
|
718
|
-
if (!
|
|
713
|
+
session_id: x,
|
|
714
|
+
fluent: Y,
|
|
715
|
+
interrupt_enabled: f,
|
|
716
|
+
triggers_enabled: D
|
|
717
|
+
} = await F(t);
|
|
718
|
+
(H = r.onStreamCreated) == null || H.call(r, { stream_id: C, session_id: x, agent_id: e });
|
|
719
|
+
const g = new yt({ iceServers: G }), S = g.createDataChannel("JanusDataChannel");
|
|
720
|
+
if (!x)
|
|
719
721
|
throw new Error("Could not create session_id");
|
|
720
|
-
const
|
|
722
|
+
const p = Y ? J.Fluent : J.Legacy;
|
|
721
723
|
c.enrich({
|
|
722
|
-
"stream-type":
|
|
724
|
+
"stream-type": p
|
|
723
725
|
});
|
|
724
|
-
const
|
|
725
|
-
var
|
|
726
|
-
d = !0, l && ((
|
|
727
|
-
},
|
|
726
|
+
const k = t.stream_warmup && !Y, P = () => d, B = () => {
|
|
727
|
+
var m;
|
|
728
|
+
d = !0, l && ((m = r.onConnectionStateChange) == null || m.call(r, M.Connected));
|
|
729
|
+
}, $ = vt(
|
|
728
730
|
g,
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
(
|
|
732
|
-
statsSignal: y =
|
|
733
|
-
dataChannelSignal:
|
|
731
|
+
P,
|
|
732
|
+
B,
|
|
733
|
+
(m, h) => ge({
|
|
734
|
+
statsSignal: y = m,
|
|
735
|
+
dataChannelSignal: p === J.Legacy ? u : void 0,
|
|
734
736
|
onVideoStateChange: r.onVideoStateChange,
|
|
735
737
|
onAgentActivityStateChange: r.onAgentActivityStateChange,
|
|
736
|
-
report:
|
|
737
|
-
streamType:
|
|
738
|
+
report: h,
|
|
739
|
+
streamType: p
|
|
738
740
|
}),
|
|
739
|
-
(
|
|
740
|
-
var
|
|
741
|
-
return (
|
|
741
|
+
(m) => {
|
|
742
|
+
var h;
|
|
743
|
+
return (h = r.onConnectivityStateChange) == null ? void 0 : h.call(r, m);
|
|
742
744
|
}
|
|
743
745
|
);
|
|
744
|
-
g.onicecandidate = (
|
|
745
|
-
var
|
|
746
|
-
n("peerConnection.onicecandidate",
|
|
746
|
+
g.onicecandidate = (m) => {
|
|
747
|
+
var h;
|
|
748
|
+
n("peerConnection.onicecandidate", m);
|
|
747
749
|
try {
|
|
748
|
-
|
|
749
|
-
|
|
750
|
+
m.candidate && m.candidate.sdpMid && m.candidate.sdpMLineIndex !== null ? L(
|
|
751
|
+
C,
|
|
750
752
|
{
|
|
751
|
-
candidate:
|
|
752
|
-
sdpMid:
|
|
753
|
-
sdpMLineIndex:
|
|
753
|
+
candidate: m.candidate.candidate,
|
|
754
|
+
sdpMid: m.candidate.sdpMid,
|
|
755
|
+
sdpMLineIndex: m.candidate.sdpMLineIndex
|
|
754
756
|
},
|
|
755
|
-
|
|
756
|
-
) :
|
|
757
|
-
} catch (
|
|
758
|
-
(
|
|
757
|
+
x
|
|
758
|
+
) : L(C, { candidate: null }, x);
|
|
759
|
+
} catch (E) {
|
|
760
|
+
(h = r.onError) == null || h.call(r, E, { streamId: C });
|
|
759
761
|
}
|
|
760
|
-
},
|
|
761
|
-
l = !0, (
|
|
762
|
+
}, S.onopen = () => {
|
|
763
|
+
l = !0, (!k || d) && B();
|
|
762
764
|
};
|
|
763
|
-
const
|
|
764
|
-
var
|
|
765
|
-
(
|
|
765
|
+
const R = (m) => {
|
|
766
|
+
var h;
|
|
767
|
+
(h = r.onVideoIdChange) == null || h.call(r, m);
|
|
766
768
|
};
|
|
767
|
-
function
|
|
768
|
-
if (
|
|
769
|
-
const
|
|
770
|
-
|
|
769
|
+
function _(m, h) {
|
|
770
|
+
if (m === b.StreamStarted && typeof h == "object" && "metadata" in h) {
|
|
771
|
+
const E = h.metadata;
|
|
772
|
+
R(E.videoId);
|
|
771
773
|
}
|
|
772
|
-
|
|
773
|
-
statsSignal:
|
|
774
|
-
dataChannelSignal:
|
|
774
|
+
m === b.StreamDone && R(null), u = m === b.StreamStarted ? w.Start : w.Stop, ge({
|
|
775
|
+
statsSignal: p === J.Legacy ? y : void 0,
|
|
776
|
+
dataChannelSignal: u,
|
|
775
777
|
onVideoStateChange: r.onVideoStateChange,
|
|
776
778
|
onAgentActivityStateChange: r.onAgentActivityStateChange,
|
|
777
|
-
streamType:
|
|
779
|
+
streamType: p
|
|
778
780
|
});
|
|
779
781
|
}
|
|
780
|
-
function
|
|
781
|
-
const
|
|
782
|
-
|
|
782
|
+
function W(m, h) {
|
|
783
|
+
const E = typeof h == "string" ? h : h == null ? void 0 : h.metadata;
|
|
784
|
+
E && c.enrich({ streamMetadata: E }), c.track("agent-chat", { event: "ready" });
|
|
783
785
|
}
|
|
784
|
-
const
|
|
785
|
-
[
|
|
786
|
-
[
|
|
787
|
-
[
|
|
786
|
+
const v = {
|
|
787
|
+
[b.StreamStarted]: _,
|
|
788
|
+
[b.StreamDone]: _,
|
|
789
|
+
[b.StreamReady]: W
|
|
788
790
|
};
|
|
789
|
-
|
|
790
|
-
var
|
|
791
|
-
const { subject:
|
|
792
|
-
(
|
|
791
|
+
S.onmessage = (m) => {
|
|
792
|
+
var U;
|
|
793
|
+
const { subject: h, data: E } = s(m.data);
|
|
794
|
+
(U = v[h]) == null || U.call(v, h, E);
|
|
793
795
|
}, g.oniceconnectionstatechange = () => {
|
|
794
|
-
var
|
|
796
|
+
var h;
|
|
795
797
|
n("peerConnection.oniceconnectionstatechange => " + g.iceConnectionState);
|
|
796
|
-
const
|
|
797
|
-
|
|
798
|
-
}, g.ontrack = (
|
|
799
|
-
var
|
|
800
|
-
n("peerConnection.ontrack",
|
|
798
|
+
const m = me(g.iceConnectionState);
|
|
799
|
+
m !== M.Connected && ((h = r.onConnectionStateChange) == null || h.call(r, m));
|
|
800
|
+
}, g.ontrack = (m) => {
|
|
801
|
+
var h;
|
|
802
|
+
n("peerConnection.ontrack", m), (h = r.onSrcObjectReady) == null || h.call(r, m.streams[0]);
|
|
801
803
|
}, await g.setRemoteDescription(K), n("set remote description OK");
|
|
802
|
-
const
|
|
803
|
-
return n("create answer OK"), await g.setLocalDescription(
|
|
804
|
+
const I = await g.createAnswer();
|
|
805
|
+
return n("create answer OK"), await g.setLocalDescription(I), n("set local description OK"), await A(C, I, x), n("start connection OK"), {
|
|
804
806
|
/**
|
|
805
807
|
* Method to send request to server to get clip or talk depend on you payload
|
|
806
808
|
* @param payload
|
|
807
809
|
*/
|
|
808
|
-
speak(
|
|
809
|
-
return
|
|
810
|
+
speak(m) {
|
|
811
|
+
return j(C, x, m);
|
|
810
812
|
},
|
|
811
813
|
/**
|
|
812
814
|
* Method to close RTC connection
|
|
813
815
|
*/
|
|
814
816
|
async disconnect() {
|
|
815
|
-
var
|
|
816
|
-
if (
|
|
817
|
-
const
|
|
817
|
+
var m;
|
|
818
|
+
if (C) {
|
|
819
|
+
const h = me(g.iceConnectionState);
|
|
818
820
|
if (g) {
|
|
819
|
-
if (
|
|
820
|
-
clearInterval(
|
|
821
|
+
if (h === M.New) {
|
|
822
|
+
clearInterval($);
|
|
821
823
|
return;
|
|
822
824
|
}
|
|
823
825
|
g.close(), g.oniceconnectionstatechange = null, g.onnegotiationneeded = null, g.onicecandidate = null, g.ontrack = null;
|
|
824
826
|
}
|
|
825
827
|
try {
|
|
826
|
-
|
|
828
|
+
h === M.Connected && await z(C, x).catch((E) => {
|
|
827
829
|
});
|
|
828
|
-
} catch (
|
|
829
|
-
n("Error on close stream connection",
|
|
830
|
+
} catch (E) {
|
|
831
|
+
n("Error on close stream connection", E);
|
|
830
832
|
}
|
|
831
|
-
(
|
|
833
|
+
(m = r.onAgentActivityStateChange) == null || m.call(r, X.Idle), clearInterval($);
|
|
832
834
|
}
|
|
833
835
|
},
|
|
834
836
|
/**
|
|
835
837
|
* Method to send data channel messages to the server
|
|
836
838
|
*/
|
|
837
|
-
sendDataChannelMessage(
|
|
838
|
-
var
|
|
839
|
-
if (!d ||
|
|
840
|
-
n("Data channel is not ready for sending messages"), (
|
|
841
|
-
streamId:
|
|
839
|
+
sendDataChannelMessage(m) {
|
|
840
|
+
var h, E;
|
|
841
|
+
if (!d || S.readyState !== "open") {
|
|
842
|
+
n("Data channel is not ready for sending messages"), (h = r.onError) == null || h.call(r, new Error("Data channel is not ready for sending messages"), {
|
|
843
|
+
streamId: C
|
|
842
844
|
});
|
|
843
845
|
return;
|
|
844
846
|
}
|
|
845
847
|
try {
|
|
846
|
-
|
|
847
|
-
} catch (
|
|
848
|
-
n("Error sending data channel message",
|
|
848
|
+
S.send(m);
|
|
849
|
+
} catch (U) {
|
|
850
|
+
n("Error sending data channel message", U), (E = r.onError) == null || E.call(r, U, { streamId: C });
|
|
849
851
|
}
|
|
850
852
|
},
|
|
851
853
|
/**
|
|
852
854
|
* Session identifier information, should be returned in the body of all streaming requests
|
|
853
855
|
*/
|
|
854
|
-
sessionId:
|
|
856
|
+
sessionId: x,
|
|
855
857
|
/**
|
|
856
858
|
* Id of current RTC stream
|
|
857
859
|
*/
|
|
858
|
-
streamId:
|
|
859
|
-
streamType:
|
|
860
|
-
interruptAvailable:
|
|
861
|
-
triggersAvailable:
|
|
860
|
+
streamId: C,
|
|
861
|
+
streamType: p,
|
|
862
|
+
interruptAvailable: f ?? !1,
|
|
863
|
+
triggersAvailable: D ?? !1
|
|
862
864
|
};
|
|
863
865
|
}
|
|
864
866
|
var ce = /* @__PURE__ */ ((e) => (e.V1 = "v1", e.V2 = "v2", e))(ce || {});
|
|
865
|
-
async function
|
|
867
|
+
async function St(e, t, a) {
|
|
866
868
|
const r = e.id;
|
|
867
869
|
switch (t.version) {
|
|
868
870
|
case "v1": {
|
|
869
871
|
const { version: o, ...i } = t;
|
|
870
|
-
return
|
|
872
|
+
return Rt(r, i, a);
|
|
871
873
|
}
|
|
872
874
|
case "v2": {
|
|
873
875
|
const { version: o, ...i } = t;
|
|
874
876
|
switch (i.transport_provider) {
|
|
875
877
|
case de.Livekit:
|
|
876
|
-
const { createLiveKitStreamingManager: c } = await import("./livekit-manager-
|
|
878
|
+
const { createLiveKitStreamingManager: c } = await import("./livekit-manager-CNKaXUpT.js");
|
|
877
879
|
return c(r, i, a);
|
|
878
880
|
default:
|
|
879
881
|
throw new Error(`Unsupported transport provider: ${i.transport_provider}`);
|
|
@@ -883,13 +885,13 @@ async function Dt(e, t, a) {
|
|
|
883
885
|
throw new Error(`Invalid stream version: ${t.version}`);
|
|
884
886
|
}
|
|
885
887
|
}
|
|
886
|
-
function
|
|
888
|
+
function It(e) {
|
|
887
889
|
return {
|
|
888
890
|
transport_provider: de.Livekit,
|
|
889
891
|
chat_id: e == null ? void 0 : e.chatId
|
|
890
892
|
};
|
|
891
893
|
}
|
|
892
|
-
function
|
|
894
|
+
function Et(e) {
|
|
893
895
|
var o, i;
|
|
894
896
|
const { streamOptions: t } = e ?? {}, a = ((o = e == null ? void 0 : e.mixpanelAdditionalProperties) == null ? void 0 : o.plan) !== void 0 ? {
|
|
895
897
|
plan: (i = e.mixpanelAdditionalProperties) == null ? void 0 : i.plan
|
|
@@ -902,13 +904,13 @@ function It(e) {
|
|
|
902
904
|
fluent: t == null ? void 0 : t.fluent
|
|
903
905
|
}, ...a && { end_user_data: a } };
|
|
904
906
|
}
|
|
905
|
-
function
|
|
906
|
-
return le(e.presenter.type) ? { version: ce.V2, ...
|
|
907
|
-
}
|
|
908
|
-
function Mt(e, t, a, r, o) {
|
|
909
|
-
o === W.Fluent ? _t(e, t, a, r, o) : At(e, t, a, r, o);
|
|
907
|
+
function Mt(e, t) {
|
|
908
|
+
return le(e.presenter.type) ? { version: ce.V2, ...It(t) } : { version: ce.V1, ...Et(t) };
|
|
910
909
|
}
|
|
911
910
|
function _t(e, t, a, r, o) {
|
|
911
|
+
o === J.Fluent ? Tt(e, t, a, r, o) : Pt(e, t, a, r, o);
|
|
912
|
+
}
|
|
913
|
+
function Tt(e, t, a, r, o) {
|
|
912
914
|
e === w.Start ? r.track("stream-session", { event: "start", "stream-type": o }) : e === w.Stop && r.track("stream-session", {
|
|
913
915
|
event: "stop",
|
|
914
916
|
is_greenscreen: t.presenter.type === "clip" && t.presenter.is_greenscreen,
|
|
@@ -917,12 +919,12 @@ function _t(e, t, a, r, o) {
|
|
|
917
919
|
...a
|
|
918
920
|
});
|
|
919
921
|
}
|
|
920
|
-
function
|
|
922
|
+
function At(e, t, a, r) {
|
|
921
923
|
N.get() <= 0 || (e === w.Start ? a.linkTrack(
|
|
922
924
|
"agent-video",
|
|
923
925
|
{ event: "start", latency: N.get(!0), "stream-type": r },
|
|
924
926
|
"start",
|
|
925
|
-
[
|
|
927
|
+
[b.StreamVideoCreated]
|
|
926
928
|
) : e === w.Stop && a.linkTrack(
|
|
927
929
|
"agent-video",
|
|
928
930
|
{
|
|
@@ -932,15 +934,15 @@ function Tt(e, t, a, r) {
|
|
|
932
934
|
"stream-type": r
|
|
933
935
|
},
|
|
934
936
|
"done",
|
|
935
|
-
[
|
|
937
|
+
[b.StreamVideoDone]
|
|
936
938
|
));
|
|
937
939
|
}
|
|
938
|
-
function
|
|
940
|
+
function Pt(e, t, a, r, o) {
|
|
939
941
|
N.get() <= 0 || (e === w.Start ? r.linkTrack(
|
|
940
942
|
"agent-video",
|
|
941
943
|
{ event: "start", latency: N.get(!0), "stream-type": o },
|
|
942
944
|
"start",
|
|
943
|
-
[
|
|
945
|
+
[b.StreamVideoCreated]
|
|
944
946
|
) : e === w.Stop && r.linkTrack(
|
|
945
947
|
"agent-video",
|
|
946
948
|
{
|
|
@@ -951,25 +953,25 @@ function At(e, t, a, r, o) {
|
|
|
951
953
|
...a
|
|
952
954
|
},
|
|
953
955
|
"done",
|
|
954
|
-
[
|
|
956
|
+
[b.StreamVideoDone]
|
|
955
957
|
));
|
|
956
958
|
}
|
|
957
|
-
function
|
|
959
|
+
function he(e, t, a) {
|
|
958
960
|
return N.reset(), new Promise(async (r, o) => {
|
|
959
961
|
try {
|
|
960
962
|
let i, c = !1;
|
|
961
|
-
i = await
|
|
963
|
+
i = await St(e, Mt(e, t), {
|
|
962
964
|
...t,
|
|
963
965
|
analytics: a,
|
|
964
966
|
callbacks: {
|
|
965
967
|
...t.callbacks,
|
|
966
968
|
onConnectionStateChange: (n) => {
|
|
967
969
|
var s, d;
|
|
968
|
-
(d = (s = t.callbacks).onConnectionStateChange) == null || d.call(s, n), n ===
|
|
970
|
+
(d = (s = t.callbacks).onConnectionStateChange) == null || d.call(s, n), n === M.Connected && (i ? r(i) : c = !0);
|
|
969
971
|
},
|
|
970
972
|
onVideoStateChange: (n, s) => {
|
|
971
973
|
var d, l;
|
|
972
|
-
(l = (d = t.callbacks).onVideoStateChange) == null || l.call(d, n),
|
|
974
|
+
(l = (d = t.callbacks).onVideoStateChange) == null || l.call(d, n), _t(
|
|
973
975
|
n,
|
|
974
976
|
e,
|
|
975
977
|
s,
|
|
@@ -979,8 +981,8 @@ function ge(e, t, a) {
|
|
|
979
981
|
},
|
|
980
982
|
onAgentActivityStateChange: (n) => {
|
|
981
983
|
var s, d;
|
|
982
|
-
(d = (s = t.callbacks).onAgentActivityStateChange) == null || d.call(s, n), n ===
|
|
983
|
-
n ===
|
|
984
|
+
(d = (s = t.callbacks).onAgentActivityStateChange) == null || d.call(s, n), n === X.Talking ? ie.update() : ie.reset(), At(
|
|
985
|
+
n === X.Talking ? w.Start : w.Stop,
|
|
984
986
|
e,
|
|
985
987
|
a,
|
|
986
988
|
i.streamType
|
|
@@ -993,304 +995,308 @@ function ge(e, t, a) {
|
|
|
993
995
|
}
|
|
994
996
|
});
|
|
995
997
|
}
|
|
996
|
-
async function
|
|
997
|
-
var l,
|
|
998
|
+
async function bt(e, t, a, r, o) {
|
|
999
|
+
var l, u, y, A;
|
|
998
1000
|
const i = async () => {
|
|
999
|
-
var
|
|
1001
|
+
var j;
|
|
1000
1002
|
if (le(e.presenter.type)) {
|
|
1001
|
-
const
|
|
1003
|
+
const z = await se(
|
|
1002
1004
|
e,
|
|
1003
1005
|
a,
|
|
1004
1006
|
r,
|
|
1005
1007
|
t.mode,
|
|
1006
1008
|
t.persistentChat,
|
|
1007
1009
|
o
|
|
1008
|
-
),
|
|
1010
|
+
), F = await he(
|
|
1009
1011
|
e,
|
|
1010
|
-
{ ...t, chatId: (
|
|
1012
|
+
{ ...t, chatId: (j = z.chat) == null ? void 0 : j.id },
|
|
1011
1013
|
r
|
|
1012
1014
|
);
|
|
1013
|
-
return { chatResult:
|
|
1015
|
+
return { chatResult: z, streamingManager: F };
|
|
1014
1016
|
} else {
|
|
1015
|
-
const
|
|
1017
|
+
const z = se(
|
|
1016
1018
|
e,
|
|
1017
1019
|
a,
|
|
1018
1020
|
r,
|
|
1019
1021
|
t.mode,
|
|
1020
1022
|
t.persistentChat,
|
|
1021
1023
|
o
|
|
1022
|
-
),
|
|
1023
|
-
return { chatResult:
|
|
1024
|
+
), F = he(e, t, r), [L, C] = await Promise.all([z, F]);
|
|
1025
|
+
return { chatResult: L, streamingManager: C };
|
|
1024
1026
|
}
|
|
1025
1027
|
}, { chatResult: c, streamingManager: n } = await i(), { chat: s, chatMode: d } = c;
|
|
1026
|
-
return d && d !== t.mode && (t.mode = d, (
|
|
1028
|
+
return d && d !== t.mode && (t.mode = d, (u = (l = t.callbacks).onModeChange) == null || u.call(l, d), d !== T.Functional) ? ((A = (y = t.callbacks).onError) == null || A.call(y, new Me(d)), n == null || n.disconnect(), { chat: s }) : { chat: s, streamingManager: n };
|
|
1027
1029
|
}
|
|
1028
|
-
async function
|
|
1029
|
-
var
|
|
1030
|
+
async function xt(e, t) {
|
|
1031
|
+
var G, x, Y;
|
|
1030
1032
|
let a = !0, r = null;
|
|
1031
|
-
const o = t.mixpanelKey ||
|
|
1033
|
+
const o = t.mixpanelKey || Je, i = t.wsURL || Ne, c = t.baseURL || te, n = {
|
|
1032
1034
|
messages: [],
|
|
1033
|
-
chatMode: t.mode ||
|
|
1034
|
-
}, s =
|
|
1035
|
+
chatMode: t.mode || T.Functional
|
|
1036
|
+
}, s = Ze({
|
|
1035
1037
|
token: o,
|
|
1036
1038
|
agentId: e,
|
|
1037
1039
|
isEnabled: t.enableAnalitics,
|
|
1038
1040
|
externalId: t.externalId,
|
|
1039
1041
|
mixpanelAdditionalProperties: t.mixpanelAdditionalProperties
|
|
1042
|
+
}), d = Date.now();
|
|
1043
|
+
fe(() => {
|
|
1044
|
+
s.track("agent-sdk", { event: "init" }, d);
|
|
1040
1045
|
});
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
const { onMessage: y, clearQueue: b } = st(
|
|
1046
|
+
const l = Ve(t.auth, c, t.callbacks.onError, t.externalId), u = await l.getById(e), y = le(u.presenter.type);
|
|
1047
|
+
s.enrich(Oe(u));
|
|
1048
|
+
const { onMessage: A, clearQueue: j } = ot(
|
|
1045
1049
|
s,
|
|
1046
1050
|
n,
|
|
1047
1051
|
t,
|
|
1048
|
-
|
|
1052
|
+
u,
|
|
1049
1053
|
() => {
|
|
1050
|
-
var
|
|
1051
|
-
return (
|
|
1054
|
+
var f;
|
|
1055
|
+
return (f = n.socketManager) == null ? void 0 : f.disconnect();
|
|
1052
1056
|
}
|
|
1053
1057
|
);
|
|
1054
|
-
n.messages =
|
|
1055
|
-
const
|
|
1056
|
-
r =
|
|
1057
|
-
};
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1058
|
+
n.messages = Ge(t.initialMessages), (x = (G = t.callbacks).onNewMessage) == null || x.call(G, [...n.messages], "answer");
|
|
1059
|
+
const z = (f) => {
|
|
1060
|
+
r = f;
|
|
1061
|
+
}, F = Date.now();
|
|
1062
|
+
fe(() => {
|
|
1063
|
+
s.track("agent-sdk", { event: "loaded", ...qe(u) }, F);
|
|
1064
|
+
});
|
|
1065
|
+
async function L(f) {
|
|
1066
|
+
var P, B, $, R, _, W, v;
|
|
1067
|
+
(B = (P = t.callbacks).onConnectionStateChange) == null || B.call(P, M.Connecting), N.reset(), f && !a && (delete n.chat, (R = ($ = t.callbacks).onNewMessage) == null || R.call($, [...n.messages], "answer"));
|
|
1068
|
+
const D = t.mode === T.DirectPlayback || y ? Promise.resolve(void 0) : at(
|
|
1063
1069
|
t.auth,
|
|
1064
1070
|
i,
|
|
1065
|
-
{ onMessage:
|
|
1071
|
+
{ onMessage: A, onError: t.callbacks.onError },
|
|
1066
1072
|
t.externalId
|
|
1067
|
-
),
|
|
1068
|
-
() =>
|
|
1069
|
-
|
|
1073
|
+
), g = ne(
|
|
1074
|
+
() => bt(
|
|
1075
|
+
u,
|
|
1070
1076
|
{
|
|
1071
1077
|
...t,
|
|
1072
|
-
callbacks: { ...t.callbacks, onVideoIdChange:
|
|
1078
|
+
callbacks: { ...t.callbacks, onVideoIdChange: z, onMessage: A }
|
|
1073
1079
|
},
|
|
1074
|
-
|
|
1080
|
+
l,
|
|
1075
1081
|
s,
|
|
1076
1082
|
n.chat
|
|
1077
1083
|
),
|
|
1078
1084
|
{
|
|
1079
1085
|
limit: 3,
|
|
1080
|
-
timeout:
|
|
1086
|
+
timeout: ze,
|
|
1081
1087
|
timeoutErrorMessage: "Timeout initializing the stream",
|
|
1082
1088
|
// Retry on all errors except for connection errors and rate limit errors, these are already handled in client level.
|
|
1083
|
-
shouldRetryFn: (
|
|
1089
|
+
shouldRetryFn: (I) => (I == null ? void 0 : I.message) !== "Could not connect" && I.status !== 429,
|
|
1084
1090
|
delayMs: 1e3
|
|
1085
1091
|
}
|
|
1086
|
-
).catch((
|
|
1087
|
-
var
|
|
1088
|
-
throw
|
|
1089
|
-
}), [
|
|
1090
|
-
|
|
1091
|
-
chatId:
|
|
1092
|
-
streamId:
|
|
1092
|
+
).catch((I) => {
|
|
1093
|
+
var H, m;
|
|
1094
|
+
throw K(T.Maintenance), (m = (H = t.callbacks).onConnectionStateChange) == null || m.call(H, M.Fail), I;
|
|
1095
|
+
}), [S, { streamingManager: p, chat: k }] = await Promise.all([D, g]);
|
|
1096
|
+
k && k.id !== ((_ = n.chat) == null ? void 0 : _.id) && ((v = (W = t.callbacks).onNewChat) == null || v.call(W, k.id)), n.streamingManager = p, n.socketManager = S, n.chat = k, a = !1, s.enrich({
|
|
1097
|
+
chatId: k == null ? void 0 : k.id,
|
|
1098
|
+
streamId: p == null ? void 0 : p.streamId,
|
|
1093
1099
|
mode: n.chatMode
|
|
1094
|
-
}),
|
|
1100
|
+
}), K((k == null ? void 0 : k.chat_mode) ?? t.mode ?? T.Functional);
|
|
1095
1101
|
}
|
|
1096
|
-
async function
|
|
1097
|
-
var
|
|
1098
|
-
(
|
|
1102
|
+
async function C() {
|
|
1103
|
+
var f, D, g, S;
|
|
1104
|
+
(f = n.socketManager) == null || f.disconnect(), await ((D = n.streamingManager) == null ? void 0 : D.disconnect()), delete n.streamingManager, delete n.socketManager, (S = (g = t.callbacks).onConnectionStateChange) == null || S.call(g, M.Disconnected);
|
|
1099
1105
|
}
|
|
1100
|
-
async function
|
|
1101
|
-
var
|
|
1102
|
-
|
|
1106
|
+
async function K(f) {
|
|
1107
|
+
var D, g;
|
|
1108
|
+
f !== n.chatMode && (s.track("agent-mode-change", { mode: f }), n.chatMode = f, n.chatMode !== T.Functional && await C(), (g = (D = t.callbacks).onModeChange) == null || g.call(D, f));
|
|
1103
1109
|
}
|
|
1104
1110
|
return {
|
|
1105
|
-
agent:
|
|
1111
|
+
agent: u,
|
|
1106
1112
|
getStreamType: () => {
|
|
1107
|
-
var
|
|
1108
|
-
return (
|
|
1113
|
+
var f;
|
|
1114
|
+
return (f = n.streamingManager) == null ? void 0 : f.streamType;
|
|
1109
1115
|
},
|
|
1110
1116
|
getIsInterruptAvailable: () => {
|
|
1111
|
-
var
|
|
1112
|
-
return ((
|
|
1117
|
+
var f;
|
|
1118
|
+
return ((f = n.streamingManager) == null ? void 0 : f.interruptAvailable) ?? !1;
|
|
1113
1119
|
},
|
|
1114
1120
|
getIsTriggersAvailable: () => {
|
|
1115
|
-
var
|
|
1116
|
-
return ((
|
|
1121
|
+
var f;
|
|
1122
|
+
return ((f = n.streamingManager) == null ? void 0 : f.triggersAvailable) ?? !1;
|
|
1117
1123
|
},
|
|
1118
|
-
starterMessages: ((
|
|
1119
|
-
getSTTToken: () =>
|
|
1120
|
-
changeMode:
|
|
1124
|
+
starterMessages: ((Y = u.knowledge) == null ? void 0 : Y.starter_message) || [],
|
|
1125
|
+
getSTTToken: () => l.getSTTToken(u.id),
|
|
1126
|
+
changeMode: K,
|
|
1121
1127
|
enrichAnalytics: s.enrich,
|
|
1122
1128
|
async connect() {
|
|
1123
|
-
await
|
|
1129
|
+
await L(!0), s.track("agent-chat", {
|
|
1124
1130
|
event: "connect",
|
|
1125
1131
|
mode: n.chatMode
|
|
1126
1132
|
});
|
|
1127
1133
|
},
|
|
1128
1134
|
async reconnect() {
|
|
1129
|
-
await
|
|
1135
|
+
await C(), await L(!1), s.track("agent-chat", {
|
|
1130
1136
|
event: "reconnect",
|
|
1131
1137
|
mode: n.chatMode
|
|
1132
1138
|
});
|
|
1133
1139
|
},
|
|
1134
1140
|
async disconnect() {
|
|
1135
|
-
await
|
|
1141
|
+
await C(), s.track("agent-chat", {
|
|
1136
1142
|
event: "disconnect",
|
|
1137
1143
|
mode: n.chatMode
|
|
1138
1144
|
});
|
|
1139
1145
|
},
|
|
1140
|
-
async chat(
|
|
1141
|
-
var
|
|
1142
|
-
const
|
|
1143
|
-
if (
|
|
1144
|
-
throw new
|
|
1145
|
-
if (
|
|
1146
|
-
throw new
|
|
1147
|
-
if (
|
|
1148
|
-
throw new
|
|
1149
|
-
if (n.chatMode ===
|
|
1150
|
-
throw new
|
|
1151
|
-
if (![
|
|
1146
|
+
async chat(f) {
|
|
1147
|
+
var p, k, P, B, $;
|
|
1148
|
+
const D = () => {
|
|
1149
|
+
if (ye(t.mode))
|
|
1150
|
+
throw new V(`${t.mode} is enabled, chat is disabled`);
|
|
1151
|
+
if (f.length >= 800)
|
|
1152
|
+
throw new V("Message cannot be more than 800 characters");
|
|
1153
|
+
if (f.length === 0)
|
|
1154
|
+
throw new V("Message cannot be empty");
|
|
1155
|
+
if (n.chatMode === T.Maintenance)
|
|
1156
|
+
throw new V("Chat is in maintenance mode");
|
|
1157
|
+
if (![T.TextOnly, T.Playground].includes(n.chatMode)) {
|
|
1152
1158
|
if (!n.streamingManager)
|
|
1153
|
-
throw new
|
|
1159
|
+
throw new V("Streaming manager is not initialized");
|
|
1154
1160
|
if (!n.chat)
|
|
1155
|
-
throw new
|
|
1161
|
+
throw new V("Chat is not initialized");
|
|
1156
1162
|
}
|
|
1157
|
-
},
|
|
1158
|
-
var
|
|
1163
|
+
}, g = async () => {
|
|
1164
|
+
var R, _;
|
|
1159
1165
|
if (!n.chat) {
|
|
1160
|
-
const
|
|
1166
|
+
const W = await se(
|
|
1167
|
+
u,
|
|
1161
1168
|
l,
|
|
1162
|
-
d,
|
|
1163
1169
|
s,
|
|
1164
1170
|
n.chatMode,
|
|
1165
1171
|
t.persistentChat
|
|
1166
1172
|
);
|
|
1167
|
-
if (!
|
|
1168
|
-
throw new
|
|
1169
|
-
n.chat =
|
|
1173
|
+
if (!W.chat)
|
|
1174
|
+
throw new Ee(n.chatMode, !!t.persistentChat);
|
|
1175
|
+
n.chat = W.chat, (_ = (R = t.callbacks).onNewChat) == null || _.call(R, n.chat.id);
|
|
1170
1176
|
}
|
|
1171
1177
|
return n.chat.id;
|
|
1172
|
-
},
|
|
1173
|
-
var
|
|
1174
|
-
return await ((
|
|
1178
|
+
}, S = async (R, _) => ne(y ? async () => {
|
|
1179
|
+
var v, I;
|
|
1180
|
+
return await ((I = (v = n.streamingManager) == null ? void 0 : v.sendTextMessage) == null ? void 0 : I.call(v, f)), Promise.resolve({});
|
|
1175
1181
|
} : async () => {
|
|
1176
|
-
var
|
|
1177
|
-
return
|
|
1178
|
-
|
|
1179
|
-
|
|
1182
|
+
var v, I;
|
|
1183
|
+
return l.chat(
|
|
1184
|
+
u.id,
|
|
1185
|
+
_,
|
|
1180
1186
|
{
|
|
1181
1187
|
chatMode: n.chatMode,
|
|
1182
|
-
streamId: (
|
|
1183
|
-
sessionId: (
|
|
1184
|
-
messages:
|
|
1188
|
+
streamId: (v = n.streamingManager) == null ? void 0 : v.streamId,
|
|
1189
|
+
sessionId: (I = n.streamingManager) == null ? void 0 : I.sessionId,
|
|
1190
|
+
messages: R.map(({ matches: H, ...m }) => m)
|
|
1185
1191
|
},
|
|
1186
1192
|
{
|
|
1187
|
-
...
|
|
1193
|
+
...Re(n.chatMode),
|
|
1188
1194
|
skipErrorHandler: !0
|
|
1189
1195
|
}
|
|
1190
1196
|
);
|
|
1191
1197
|
}, {
|
|
1192
1198
|
limit: 2,
|
|
1193
|
-
shouldRetryFn: (
|
|
1194
|
-
var
|
|
1195
|
-
const
|
|
1196
|
-
return !((
|
|
1199
|
+
shouldRetryFn: (v) => {
|
|
1200
|
+
var m, h, E, U;
|
|
1201
|
+
const I = (m = v == null ? void 0 : v.message) == null ? void 0 : m.includes("missing or invalid session_id");
|
|
1202
|
+
return !((h = v == null ? void 0 : v.message) == null ? void 0 : h.includes("Stream Error")) && !I ? ((U = (E = t.callbacks).onError) == null || U.call(E, v), !1) : !0;
|
|
1197
1203
|
},
|
|
1198
1204
|
onRetry: async () => {
|
|
1199
|
-
await
|
|
1205
|
+
await C(), await L(!1);
|
|
1200
1206
|
}
|
|
1201
1207
|
});
|
|
1202
1208
|
try {
|
|
1203
|
-
|
|
1204
|
-
id:
|
|
1209
|
+
j(), D(), n.messages.push({
|
|
1210
|
+
id: O(),
|
|
1205
1211
|
role: "user",
|
|
1206
|
-
content:
|
|
1212
|
+
content: f,
|
|
1207
1213
|
created_at: new Date(N.update()).toISOString()
|
|
1208
|
-
}), (
|
|
1209
|
-
const
|
|
1214
|
+
}), (k = (p = t.callbacks).onNewMessage) == null || k.call(p, [...n.messages], "user");
|
|
1215
|
+
const R = await g(), _ = await S([...n.messages], R);
|
|
1210
1216
|
return n.messages.push({
|
|
1211
|
-
id:
|
|
1217
|
+
id: O(),
|
|
1212
1218
|
role: "assistant",
|
|
1213
|
-
content:
|
|
1219
|
+
content: _.result || "",
|
|
1214
1220
|
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
1215
|
-
context:
|
|
1216
|
-
matches:
|
|
1221
|
+
context: _.context,
|
|
1222
|
+
matches: _.matches
|
|
1217
1223
|
}), s.track("agent-message-send", {
|
|
1218
1224
|
event: "success",
|
|
1219
1225
|
messages: n.messages.length + 1
|
|
1220
|
-
}),
|
|
1226
|
+
}), _.result && ((B = (P = t.callbacks).onNewMessage) == null || B.call(P, [...n.messages], "answer"), s.track("agent-message-received", {
|
|
1221
1227
|
latency: N.get(!0),
|
|
1222
1228
|
messages: n.messages.length
|
|
1223
|
-
})),
|
|
1224
|
-
} catch (
|
|
1225
|
-
throw ((
|
|
1229
|
+
})), _;
|
|
1230
|
+
} catch (R) {
|
|
1231
|
+
throw (($ = n.messages[n.messages.length - 1]) == null ? void 0 : $.role) === "assistant" && n.messages.pop(), s.track("agent-message-send", {
|
|
1226
1232
|
event: "error",
|
|
1227
1233
|
messages: n.messages.length
|
|
1228
|
-
}),
|
|
1234
|
+
}), R;
|
|
1229
1235
|
}
|
|
1230
1236
|
},
|
|
1231
|
-
rate(
|
|
1232
|
-
var
|
|
1233
|
-
const
|
|
1237
|
+
rate(f, D, g) {
|
|
1238
|
+
var k, P, B, $;
|
|
1239
|
+
const S = n.messages.find((R) => R.id === f);
|
|
1234
1240
|
if (n.chat) {
|
|
1235
|
-
if (!
|
|
1241
|
+
if (!S)
|
|
1236
1242
|
throw new Error("Message not found");
|
|
1237
1243
|
} else throw new Error("Chat is not initialized");
|
|
1238
|
-
const
|
|
1244
|
+
const p = ((k = S.matches) == null ? void 0 : k.map((R) => [R.document_id, R.id])) ?? [];
|
|
1239
1245
|
return s.track("agent-rate", {
|
|
1240
|
-
event:
|
|
1241
|
-
thumb:
|
|
1242
|
-
knowledge_id: ((
|
|
1243
|
-
matches:
|
|
1244
|
-
score:
|
|
1245
|
-
}),
|
|
1246
|
-
knowledge_id: ((
|
|
1247
|
-
message_id:
|
|
1248
|
-
matches:
|
|
1249
|
-
score:
|
|
1250
|
-
}) :
|
|
1251
|
-
knowledge_id: ((
|
|
1252
|
-
message_id:
|
|
1253
|
-
matches:
|
|
1254
|
-
score:
|
|
1246
|
+
event: g ? "update" : "create",
|
|
1247
|
+
thumb: D === 1 ? "up" : "down",
|
|
1248
|
+
knowledge_id: ((P = u.knowledge) == null ? void 0 : P.id) ?? "",
|
|
1249
|
+
matches: p,
|
|
1250
|
+
score: D
|
|
1251
|
+
}), g ? l.updateRating(u.id, n.chat.id, g, {
|
|
1252
|
+
knowledge_id: ((B = u.knowledge) == null ? void 0 : B.id) ?? "",
|
|
1253
|
+
message_id: f,
|
|
1254
|
+
matches: p,
|
|
1255
|
+
score: D
|
|
1256
|
+
}) : l.createRating(u.id, n.chat.id, {
|
|
1257
|
+
knowledge_id: (($ = u.knowledge) == null ? void 0 : $.id) ?? "",
|
|
1258
|
+
message_id: f,
|
|
1259
|
+
matches: p,
|
|
1260
|
+
score: D
|
|
1255
1261
|
});
|
|
1256
1262
|
},
|
|
1257
|
-
deleteRate(
|
|
1263
|
+
deleteRate(f) {
|
|
1258
1264
|
if (!n.chat)
|
|
1259
1265
|
throw new Error("Chat is not initialized");
|
|
1260
|
-
return s.track("agent-rate-delete", { type: "text" }),
|
|
1266
|
+
return s.track("agent-rate-delete", { type: "text" }), l.deleteRating(u.id, n.chat.id, f);
|
|
1261
1267
|
},
|
|
1262
|
-
async speak(
|
|
1263
|
-
var
|
|
1264
|
-
function
|
|
1265
|
-
if (typeof
|
|
1266
|
-
if (!
|
|
1268
|
+
async speak(f) {
|
|
1269
|
+
var p, k, P;
|
|
1270
|
+
function D() {
|
|
1271
|
+
if (typeof f == "string") {
|
|
1272
|
+
if (!u.presenter.voice)
|
|
1267
1273
|
throw new Error("Presenter voice is not initialized");
|
|
1268
1274
|
return {
|
|
1269
1275
|
type: "text",
|
|
1270
|
-
provider:
|
|
1271
|
-
input:
|
|
1276
|
+
provider: u.presenter.voice,
|
|
1277
|
+
input: f,
|
|
1272
1278
|
ssml: !1
|
|
1273
1279
|
};
|
|
1274
1280
|
}
|
|
1275
|
-
if (
|
|
1276
|
-
if (!
|
|
1281
|
+
if (f.type === "text" && !f.provider) {
|
|
1282
|
+
if (!u.presenter.voice)
|
|
1277
1283
|
throw new Error("Presenter voice is not initialized");
|
|
1278
1284
|
return {
|
|
1279
1285
|
type: "text",
|
|
1280
|
-
provider:
|
|
1281
|
-
input:
|
|
1282
|
-
ssml:
|
|
1286
|
+
provider: u.presenter.voice,
|
|
1287
|
+
input: f.input,
|
|
1288
|
+
ssml: f.ssml
|
|
1283
1289
|
};
|
|
1284
1290
|
}
|
|
1285
|
-
return
|
|
1291
|
+
return f;
|
|
1286
1292
|
}
|
|
1287
|
-
const
|
|
1288
|
-
if (s.track("agent-speak",
|
|
1289
|
-
id:
|
|
1293
|
+
const g = D();
|
|
1294
|
+
if (s.track("agent-speak", g), N.update(), n.messages && g.type === "text" && (n.messages.push({
|
|
1295
|
+
id: O(),
|
|
1290
1296
|
role: "assistant",
|
|
1291
|
-
content:
|
|
1297
|
+
content: g.input,
|
|
1292
1298
|
created_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
1293
|
-
}), (
|
|
1299
|
+
}), (k = (p = t.callbacks).onNewMessage) == null || k.call(p, [...n.messages], "answer")), We(n.chatMode))
|
|
1294
1300
|
return {
|
|
1295
1301
|
duration: 0,
|
|
1296
1302
|
video_id: "",
|
|
@@ -1299,49 +1305,49 @@ async function Lt(e, t) {
|
|
|
1299
1305
|
if (!n.streamingManager)
|
|
1300
1306
|
throw new Error("Please connect to the agent first");
|
|
1301
1307
|
return n.streamingManager.speak({
|
|
1302
|
-
script:
|
|
1303
|
-
metadata: { chat_id: (
|
|
1308
|
+
script: g,
|
|
1309
|
+
metadata: { chat_id: (P = n.chat) == null ? void 0 : P.id, agent_id: u.id }
|
|
1304
1310
|
});
|
|
1305
1311
|
},
|
|
1306
|
-
async interrupt({ type:
|
|
1307
|
-
var
|
|
1308
|
-
|
|
1309
|
-
const
|
|
1312
|
+
async interrupt({ type: f }) {
|
|
1313
|
+
var g, S, p;
|
|
1314
|
+
et(n.streamingManager, (g = n.streamingManager) == null ? void 0 : g.streamType, r);
|
|
1315
|
+
const D = n.messages[n.messages.length - 1];
|
|
1310
1316
|
s.track("agent-video-interrupt", {
|
|
1311
|
-
type:
|
|
1317
|
+
type: f || "click",
|
|
1312
1318
|
video_duration_to_interrupt: ie.get(!0),
|
|
1313
1319
|
message_duration_to_interrupt: N.get(!0)
|
|
1314
|
-
}),
|
|
1320
|
+
}), D.interrupted = !0, (p = (S = t.callbacks).onNewMessage) == null || p.call(S, [...n.messages], "answer"), tt(n.streamingManager, r);
|
|
1315
1321
|
}
|
|
1316
1322
|
};
|
|
1317
1323
|
}
|
|
1318
1324
|
export {
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1325
|
+
X as A,
|
|
1326
|
+
M as C,
|
|
1327
|
+
xe as D,
|
|
1328
|
+
Le as K,
|
|
1329
|
+
Ae as P,
|
|
1330
|
+
be as R,
|
|
1331
|
+
J as S,
|
|
1326
1332
|
de as T,
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1333
|
+
Te as U,
|
|
1334
|
+
V,
|
|
1335
|
+
_e as W,
|
|
1336
|
+
dt as a,
|
|
1331
1337
|
Z as b,
|
|
1332
|
-
|
|
1338
|
+
Ce as c,
|
|
1333
1339
|
te as d,
|
|
1334
1340
|
w as e,
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1341
|
+
b as f,
|
|
1342
|
+
q as g,
|
|
1343
|
+
Ee as h,
|
|
1344
|
+
Me as i,
|
|
1345
|
+
xt as j,
|
|
1346
|
+
Pe as k,
|
|
1347
|
+
T as l,
|
|
1348
|
+
je as m,
|
|
1349
|
+
we as n,
|
|
1350
|
+
Lt as o,
|
|
1351
|
+
Be as p,
|
|
1352
|
+
$e as q
|
|
1347
1353
|
};
|