@d-id/client-sdk 1.1.34 → 1.1.35-staging.170
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 +693 -683
- package/dist/index.umd.cjs +5 -5
- package/dist/src/types/entities/agents/chat.d.ts +4 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
class
|
|
1
|
+
var Ze = Object.defineProperty;
|
|
2
|
+
var et = (e, t, i) => t in e ? Ze(e, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : e[t] = i;
|
|
3
|
+
var ge = (e, t, i) => et(e, typeof t != "symbol" ? t + "" : t, i);
|
|
4
|
+
class Se extends Error {
|
|
5
5
|
constructor({ kind: i, description: n, error: s }) {
|
|
6
6
|
super(JSON.stringify({ kind: i, description: n }));
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
ge(this, "kind");
|
|
8
|
+
ge(this, "description");
|
|
9
|
+
ge(this, "error");
|
|
10
10
|
this.kind = i, this.description = n, this.error = s;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
class
|
|
13
|
+
class tt extends Se {
|
|
14
14
|
constructor(t, i) {
|
|
15
15
|
super({
|
|
16
16
|
kind: "ChatCreationFailed",
|
|
@@ -18,25 +18,25 @@ class et extends ve {
|
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
class
|
|
21
|
+
class nt extends Se {
|
|
22
22
|
constructor(t) {
|
|
23
23
|
super({ kind: "ChatModeDowngraded", description: `Chat mode downgraded to ${t}` });
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
class
|
|
26
|
+
class le extends Se {
|
|
27
27
|
constructor(i, n) {
|
|
28
28
|
super({ kind: "ValidationError", description: i });
|
|
29
|
-
|
|
29
|
+
ge(this, "key");
|
|
30
30
|
this.key = n;
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
class
|
|
33
|
+
class rt extends Se {
|
|
34
34
|
constructor(t) {
|
|
35
35
|
super({ kind: "WSError", description: t });
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
var
|
|
39
|
-
const
|
|
38
|
+
var it = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(it || {}), at = /* @__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))(at || {}), ot = /* @__PURE__ */ ((e) => (e.Created = "created", e.Started = "started", e.Done = "done", e.Error = "error", e.Rejected = "rejected", e.Ready = "ready", e))(ot || {}), st = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(st || {}), B = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e.Off = "Off", e))(B || {}), X = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Transcribe = "transcribe", e.Complete = "done", e))(X || {}), ct = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(ct || {}), dt = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(dt || {}), ut = /* @__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))(ut || {}), Ve = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e.Expressive = "expressive", e))(Ve || {});
|
|
39
|
+
const pn = (e) => {
|
|
40
40
|
switch (e) {
|
|
41
41
|
case "clip":
|
|
42
42
|
return "clip";
|
|
@@ -48,13 +48,13 @@ const hn = (e) => {
|
|
|
48
48
|
throw new Error(`Unknown video type: ${e}`);
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
|
-
var
|
|
52
|
-
const ft = 45 * 1e3,
|
|
53
|
-
},
|
|
51
|
+
var E = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(E || {}), re = /* @__PURE__ */ ((e) => (e.Strong = "STRONG", e.Weak = "WEAK", e.Unknown = "UNKNOWN", e))(re || {}), V = /* @__PURE__ */ ((e) => (e.Idle = "IDLE", e.Loading = "LOADING", e.Talking = "TALKING", e))(V || {}), L = /* @__PURE__ */ ((e) => (e.ChatAnswer = "chat/answer", e.ChatPartial = "chat/partial", e.ChatAudioTranscribed = "chat/audio-transcribed", 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))(L || {}), I = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Closed = "closed", e.Completed = "completed", e.Disconnected = "disconnected", e))(I || {}), ie = /* @__PURE__ */ ((e) => (e.Legacy = "legacy", e.Fluent = "fluent", e))(ie || {}), ke = /* @__PURE__ */ ((e) => (e.Livekit = "livekit", e))(ke || {}), lt = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.AzureOpenAi = "azure-openai", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(lt || {}), mt = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(mt || {});
|
|
52
|
+
const ft = 45 * 1e3, gt = "X-Playground-Chat", pe = "https://api.d-id.com", ht = "wss://notifications.d-id.com", pt = "79f81a83a67430be2bc0fd61042b8faa", wt = (...e) => {
|
|
53
|
+
}, We = (e) => new Promise((t) => setTimeout(t, e)), me = (e = 16) => {
|
|
54
54
|
const t = new Uint8Array(e);
|
|
55
55
|
return window.crypto.getRandomValues(t), Array.from(t, (i) => i.toString(16).padStart(2, "0")).join("").slice(0, 13);
|
|
56
|
-
},
|
|
57
|
-
function
|
|
56
|
+
}, Oe = (e) => e.type === "clip" && e.presenter_id.startsWith("v2_") ? "clip_v2" : e.type, Pe = (e) => e === Ve.Expressive, yt = (e) => [B.TextOnly, B.Playground, B.Maintenance].includes(e), He = (e) => e && [B.DirectPlayback, B.Off].includes(e);
|
|
57
|
+
function vt(e, t) {
|
|
58
58
|
let i;
|
|
59
59
|
return {
|
|
60
60
|
promise: new Promise((s, o) => {
|
|
@@ -63,7 +63,7 @@ function yt(e, t) {
|
|
|
63
63
|
clear: () => clearTimeout(i)
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
|
-
async function
|
|
66
|
+
async function Ee(e, t) {
|
|
67
67
|
const i = {
|
|
68
68
|
limit: (t == null ? void 0 : t.limit) ?? 3,
|
|
69
69
|
delayMs: (t == null ? void 0 : t.delayMs) ?? 0,
|
|
@@ -78,57 +78,57 @@ async function Me(e, t) {
|
|
|
78
78
|
try {
|
|
79
79
|
if (!i.timeout)
|
|
80
80
|
return await e();
|
|
81
|
-
const { promise: o, clear: c } =
|
|
81
|
+
const { promise: o, clear: c } = vt(i.timeout, i.timeoutErrorMessage), a = e().finally(c);
|
|
82
82
|
return await Promise.race([a, o]);
|
|
83
83
|
} catch (o) {
|
|
84
84
|
if (n = o, !i.shouldRetryFn(o) || s >= i.limit)
|
|
85
85
|
throw o;
|
|
86
|
-
await
|
|
86
|
+
await We(i.delayMs), i.onRetry(o);
|
|
87
87
|
}
|
|
88
88
|
throw n;
|
|
89
89
|
}
|
|
90
|
-
function
|
|
90
|
+
function Ie(e) {
|
|
91
91
|
if (e !== void 0)
|
|
92
92
|
return window.localStorage.setItem("did_external_key_id", e), e;
|
|
93
93
|
let t = window.localStorage.getItem("did_external_key_id");
|
|
94
94
|
if (!t) {
|
|
95
|
-
let i =
|
|
95
|
+
let i = me();
|
|
96
96
|
window.localStorage.setItem("did_external_key_id", i), t = i;
|
|
97
97
|
}
|
|
98
98
|
return t;
|
|
99
99
|
}
|
|
100
|
-
let
|
|
101
|
-
function
|
|
100
|
+
let Ct = me();
|
|
101
|
+
function qe(e, t) {
|
|
102
102
|
if (e.type === "bearer")
|
|
103
103
|
return `Bearer ${e.token}`;
|
|
104
104
|
if (e.type === "basic")
|
|
105
105
|
return `Basic ${btoa(`${e.username}:${e.password}`)}`;
|
|
106
106
|
if (e.type === "key")
|
|
107
|
-
return `Client-Key ${e.clientKey}.${
|
|
107
|
+
return `Client-Key ${e.clientKey}.${Ie(t)}_${Ct}`;
|
|
108
108
|
throw new Error(`Unknown auth type: ${e}`);
|
|
109
109
|
}
|
|
110
|
-
const
|
|
110
|
+
const St = (e) => Ee(e, {
|
|
111
111
|
limit: 3,
|
|
112
112
|
delayMs: 1e3,
|
|
113
113
|
timeout: 0,
|
|
114
114
|
shouldRetryFn: (t) => t.status === 429
|
|
115
115
|
});
|
|
116
|
-
function
|
|
116
|
+
function Le(e, t = pe, i, n) {
|
|
117
117
|
const s = async (o, c) => {
|
|
118
|
-
const { skipErrorHandler: a, ...r } = c || {}, d = await
|
|
118
|
+
const { skipErrorHandler: a, ...r } = c || {}, d = await St(
|
|
119
119
|
() => fetch(t + (o != null && o.startsWith("/") ? o : `/${o}`), {
|
|
120
120
|
...r,
|
|
121
121
|
headers: {
|
|
122
122
|
...r.headers,
|
|
123
|
-
Authorization:
|
|
123
|
+
Authorization: qe(e, n),
|
|
124
124
|
"Content-Type": "application/json"
|
|
125
125
|
}
|
|
126
126
|
})
|
|
127
127
|
);
|
|
128
128
|
if (!d.ok) {
|
|
129
|
-
let
|
|
130
|
-
const
|
|
131
|
-
throw i && !a && i(
|
|
129
|
+
let h = await d.text().catch(() => `Failed to fetch with status ${d.status}`);
|
|
130
|
+
const w = new Error(h);
|
|
131
|
+
throw i && !a && i(w, { url: o, options: r, headers: d.headers }), w;
|
|
132
132
|
}
|
|
133
133
|
return d.json();
|
|
134
134
|
};
|
|
@@ -147,8 +147,8 @@ function Pe(e, t = ge, i, n) {
|
|
|
147
147
|
}
|
|
148
148
|
};
|
|
149
149
|
}
|
|
150
|
-
function
|
|
151
|
-
const s =
|
|
150
|
+
function kt(e, t = pe, i, n) {
|
|
151
|
+
const s = Le(e, `${t}/agents`, i, n);
|
|
152
152
|
return {
|
|
153
153
|
create(o, c) {
|
|
154
154
|
return s.post("/", o, c);
|
|
@@ -185,7 +185,7 @@ function St(e, t = ge, i, n) {
|
|
|
185
185
|
}
|
|
186
186
|
};
|
|
187
187
|
}
|
|
188
|
-
function
|
|
188
|
+
function Rt(e) {
|
|
189
189
|
var s, o, c, a;
|
|
190
190
|
const t = () => /Mobi|Android/i.test(navigator.userAgent) ? "Mobile" : "Desktop", i = () => {
|
|
191
191
|
const r = navigator.platform;
|
|
@@ -196,18 +196,18 @@ function kt(e) {
|
|
|
196
196
|
isMobile: `${t() == "Mobile"}`,
|
|
197
197
|
browser: navigator.userAgent,
|
|
198
198
|
origin: window.location.origin,
|
|
199
|
-
agentType:
|
|
199
|
+
agentType: Oe(n),
|
|
200
200
|
agentVoice: {
|
|
201
201
|
voiceId: (o = (s = e.presenter) == null ? void 0 : s.voice) == null ? void 0 : o.voice_id,
|
|
202
202
|
provider: (a = (c = e.presenter) == null ? void 0 : c.voice) == null ? void 0 : a.type
|
|
203
203
|
}
|
|
204
204
|
};
|
|
205
205
|
}
|
|
206
|
-
function
|
|
206
|
+
function Dt(e) {
|
|
207
207
|
var i, n, s, o, c, a;
|
|
208
208
|
const t = (i = e.llm) == null ? void 0 : i.prompt_customization;
|
|
209
209
|
return {
|
|
210
|
-
agentType:
|
|
210
|
+
agentType: Oe(e.presenter),
|
|
211
211
|
owner_id: e.owner_id ?? "",
|
|
212
212
|
promptVersion: (n = e.llm) == null ? void 0 : n.prompt_version,
|
|
213
213
|
behavior: {
|
|
@@ -226,35 +226,35 @@ function Rt(e) {
|
|
|
226
226
|
...e.access === "public" ? { from: "agent-template" } : {}
|
|
227
227
|
};
|
|
228
228
|
}
|
|
229
|
-
const
|
|
230
|
-
function
|
|
231
|
-
var r, d,
|
|
229
|
+
const Mt = (e) => e.reduce((t, i) => t + i, 0), xe = (e) => Mt(e) / e.length;
|
|
230
|
+
function Et(e, t, i) {
|
|
231
|
+
var r, d, h;
|
|
232
232
|
const { event: n, ...s } = e, { template: o } = (t == null ? void 0 : t.llm) || {}, { language: c } = ((r = t == null ? void 0 : t.presenter) == null ? void 0 : r.voice) || {};
|
|
233
233
|
return {
|
|
234
234
|
...s,
|
|
235
235
|
llm: { ...s.llm, template: o },
|
|
236
236
|
script: { ...s.script, provider: { ...(d = s == null ? void 0 : s.script) == null ? void 0 : d.provider, language: c } },
|
|
237
|
-
stitch: (t == null ? void 0 : t.presenter.type) === "talk" ? (
|
|
237
|
+
stitch: (t == null ? void 0 : t.presenter.type) === "talk" ? (h = t == null ? void 0 : t.presenter) == null ? void 0 : h.stitch : void 0,
|
|
238
238
|
...i
|
|
239
239
|
};
|
|
240
240
|
}
|
|
241
|
-
function
|
|
241
|
+
function Fe(e) {
|
|
242
242
|
"requestIdleCallback" in window ? requestIdleCallback(e, { timeout: 2e3 }) : setTimeout(e, 0);
|
|
243
243
|
}
|
|
244
|
-
let
|
|
245
|
-
const
|
|
246
|
-
function
|
|
244
|
+
let De = {};
|
|
245
|
+
const It = "https://api-js.mixpanel.com/track/?verbose=1&ip=1";
|
|
246
|
+
function Tt(e) {
|
|
247
247
|
const t = window != null && window.hasOwnProperty("DID_AGENTS_API") ? "agents-ui" : "agents-sdk";
|
|
248
248
|
return {
|
|
249
249
|
token: e.token || "testKey",
|
|
250
|
-
distinct_id:
|
|
250
|
+
distinct_id: Ie(e.externalId),
|
|
251
251
|
agentId: e.agentId,
|
|
252
252
|
additionalProperties: {
|
|
253
|
-
id:
|
|
253
|
+
id: Ie(e.externalId),
|
|
254
254
|
...e.mixpanelAdditionalProperties || {}
|
|
255
255
|
},
|
|
256
256
|
isEnabled: e.isEnabled ?? !0,
|
|
257
|
-
getRandom:
|
|
257
|
+
getRandom: me,
|
|
258
258
|
enrich(i) {
|
|
259
259
|
this.additionalProperties = { ...this.additionalProperties, ...i };
|
|
260
260
|
},
|
|
@@ -287,18 +287,18 @@ function It(e) {
|
|
|
287
287
|
])
|
|
288
288
|
})
|
|
289
289
|
};
|
|
290
|
-
return fetch(
|
|
290
|
+
return fetch(It, {
|
|
291
291
|
...r,
|
|
292
292
|
keepalive: !0
|
|
293
293
|
}).catch((d) => console.error("Analytics tracking error:", d)), Promise.resolve();
|
|
294
294
|
},
|
|
295
295
|
linkTrack(i, n, s, o) {
|
|
296
|
-
|
|
297
|
-
const c =
|
|
296
|
+
De[i] || (De[i] = { events: {}, resolvedDependencies: [] }), o.includes(s) || o.push(s);
|
|
297
|
+
const c = De[i];
|
|
298
298
|
if (c.events[s] = { props: n }, c.resolvedDependencies.push(s), o.every(
|
|
299
299
|
(r) => c.resolvedDependencies.includes(r)
|
|
300
300
|
)) {
|
|
301
|
-
const r = o.reduce((d,
|
|
301
|
+
const r = o.reduce((d, h) => c.events[h] ? { ...d, ...c.events[h].props } : d, {});
|
|
302
302
|
this.track(i, r), c.resolvedDependencies = c.resolvedDependencies.filter(
|
|
303
303
|
(d) => !o.includes(d)
|
|
304
304
|
), o.forEach((d) => {
|
|
@@ -308,7 +308,7 @@ function It(e) {
|
|
|
308
308
|
}
|
|
309
309
|
};
|
|
310
310
|
}
|
|
311
|
-
function
|
|
311
|
+
function be() {
|
|
312
312
|
let e = 0;
|
|
313
313
|
return {
|
|
314
314
|
reset: () => e = 0,
|
|
@@ -316,22 +316,22 @@ function Le() {
|
|
|
316
316
|
get: (t = !1) => t ? Date.now() - e : e
|
|
317
317
|
};
|
|
318
318
|
}
|
|
319
|
-
const
|
|
320
|
-
function
|
|
321
|
-
return e ===
|
|
319
|
+
const ne = be(), Te = be(), ze = be();
|
|
320
|
+
function Qe(e) {
|
|
321
|
+
return e === B.Playground ? { headers: { [gt]: "true" } } : {};
|
|
322
322
|
}
|
|
323
|
-
async function
|
|
323
|
+
async function Xe(e, t, i, n, s = !1, o) {
|
|
324
324
|
try {
|
|
325
|
-
return !o && !
|
|
325
|
+
return !o && !He(n) && (o = await t.newChat(e.id, { persist: s }, Qe(n)), i.track("agent-chat", {
|
|
326
326
|
event: "created",
|
|
327
327
|
chatId: o.id,
|
|
328
328
|
mode: n
|
|
329
329
|
})), { chat: o, chatMode: (o == null ? void 0 : o.chat_mode) ?? n };
|
|
330
330
|
} catch (c) {
|
|
331
|
-
throw
|
|
331
|
+
throw _t(c) === "InsufficientCreditsError" ? new Error("InsufficientCreditsError") : new Error("Cannot create new chat");
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
|
-
const
|
|
334
|
+
const _t = (e) => {
|
|
335
335
|
try {
|
|
336
336
|
const t = JSON.parse(e.message);
|
|
337
337
|
return t == null ? void 0 : t.kind;
|
|
@@ -339,19 +339,19 @@ const Tt = (e) => {
|
|
|
339
339
|
return "UnknownError";
|
|
340
340
|
}
|
|
341
341
|
};
|
|
342
|
-
function
|
|
342
|
+
function At(e) {
|
|
343
343
|
return e && e.length > 0 ? e : [];
|
|
344
344
|
}
|
|
345
|
-
function
|
|
346
|
-
const s =
|
|
345
|
+
function Pt(e, t, i, n) {
|
|
346
|
+
const s = Le(e, `${t}/v2/agents/${i}`, n);
|
|
347
347
|
return {
|
|
348
348
|
async createStream(o) {
|
|
349
349
|
return s.post("/sessions", o);
|
|
350
350
|
}
|
|
351
351
|
};
|
|
352
352
|
}
|
|
353
|
-
const
|
|
354
|
-
function
|
|
353
|
+
const Ye = (e, t) => (i, n) => e && console.log(`[${t}] ${i}`, n ?? "");
|
|
354
|
+
function Lt(e, t, i) {
|
|
355
355
|
const n = (t.timestamp - e.timestamp) / 1e3;
|
|
356
356
|
return {
|
|
357
357
|
duration: n,
|
|
@@ -371,7 +371,7 @@ function Pt(e, t, i) {
|
|
|
371
371
|
lowFpsCount: i
|
|
372
372
|
};
|
|
373
373
|
}
|
|
374
|
-
function
|
|
374
|
+
function bt(e) {
|
|
375
375
|
return e.filter(
|
|
376
376
|
(t) => t.freezeCount > 0 || t.framesPerSecond < 21 || t.framesDropped > 0 || t.packetsLost > 0
|
|
377
377
|
).map((t) => {
|
|
@@ -382,7 +382,7 @@ function Lt(e) {
|
|
|
382
382
|
};
|
|
383
383
|
});
|
|
384
384
|
}
|
|
385
|
-
function
|
|
385
|
+
function jt(e) {
|
|
386
386
|
let t = "", i = 0;
|
|
387
387
|
for (const n of e.values()) {
|
|
388
388
|
if (n && n.type === "codec" && n.mimeType.startsWith("video") && (t = n.mimeType.split("/")[1]), n && n.type === "candidate-pair") {
|
|
@@ -412,7 +412,7 @@ function bt(e) {
|
|
|
412
412
|
}
|
|
413
413
|
return {};
|
|
414
414
|
}
|
|
415
|
-
function
|
|
415
|
+
function Ke(e, t, i) {
|
|
416
416
|
const n = e.map((r, d) => d === 0 ? i ? {
|
|
417
417
|
timestamp: r.timestamp,
|
|
418
418
|
duration: 0,
|
|
@@ -464,32 +464,32 @@ function ze(e, t, i) {
|
|
|
464
464
|
framesPerSecond: r.framesPerSecond,
|
|
465
465
|
freezeCount: r.freezeCount - e[d - 1].freezeCount,
|
|
466
466
|
freezeDuration: r.freezeDuration - e[d - 1].freezeDuration
|
|
467
|
-
}), s =
|
|
467
|
+
}), s = bt(n), o = s.reduce((r, d) => r + (d.causes.includes("low fps") ? 1 : 0), 0), c = n.filter((r) => !!r.avgJitterDelayInInterval).map((r) => r.avgJitterDelayInInterval), a = n.filter((r) => !!r.rtt).map((r) => r.rtt);
|
|
468
468
|
return {
|
|
469
469
|
webRTCStats: {
|
|
470
470
|
anomalies: s,
|
|
471
471
|
minRtt: Math.min(...a),
|
|
472
|
-
avgRtt:
|
|
472
|
+
avgRtt: xe(a),
|
|
473
473
|
maxRtt: Math.max(...a),
|
|
474
|
-
aggregateReport:
|
|
474
|
+
aggregateReport: Lt(e[0], e[e.length - 1], o),
|
|
475
475
|
minJitterDelayInInterval: Math.min(...c),
|
|
476
476
|
maxJitterDelayInInterval: Math.max(...c),
|
|
477
|
-
avgJitterDelayInInterval:
|
|
477
|
+
avgJitterDelayInInterval: xe(c)
|
|
478
478
|
},
|
|
479
479
|
codec: e[0].codec,
|
|
480
480
|
resolution: `${e[0].frameWidth}x${e[0].frameHeight}`
|
|
481
481
|
};
|
|
482
482
|
}
|
|
483
|
-
const
|
|
484
|
-
function
|
|
483
|
+
const Ce = 100, $t = Math.max(Math.ceil(400 / Ce), 1), Bt = 0.25, xt = 0.28;
|
|
484
|
+
function Ft() {
|
|
485
485
|
let e = 0, t, i, n = 0;
|
|
486
486
|
return (s) => {
|
|
487
487
|
for (const o of s.values())
|
|
488
488
|
if (o && o.type === "inbound-rtp" && o.kind === "video") {
|
|
489
489
|
const c = o.jitterBufferDelay, a = o.jitterBufferEmittedCount;
|
|
490
490
|
if (i && a > i) {
|
|
491
|
-
const
|
|
492
|
-
n =
|
|
491
|
+
const h = c - t, w = a - i;
|
|
492
|
+
n = h / w;
|
|
493
493
|
}
|
|
494
494
|
t = c, i = a;
|
|
495
495
|
const r = o.framesDecoded, d = r - e > 0;
|
|
@@ -498,32 +498,32 @@ function xt() {
|
|
|
498
498
|
return { isReceiving: !1, avgJitterDelayInInterval: n };
|
|
499
499
|
};
|
|
500
500
|
}
|
|
501
|
-
function
|
|
502
|
-
let o = null, c = [], a, r = 0, d = !1,
|
|
503
|
-
const
|
|
504
|
-
async function
|
|
501
|
+
function Ge(e, t, i, n, s) {
|
|
502
|
+
let o = null, c = [], a, r = 0, d = !1, h = re.Unknown, w = re.Unknown, u = 0, v = 0;
|
|
503
|
+
const x = Ft();
|
|
504
|
+
async function b() {
|
|
505
505
|
const C = await e();
|
|
506
506
|
if (!C)
|
|
507
507
|
return;
|
|
508
|
-
const { isReceiving:
|
|
509
|
-
if (
|
|
510
|
-
r = 0, u = S -
|
|
511
|
-
else if (d && (r++, r >=
|
|
512
|
-
const
|
|
513
|
-
n == null || n(
|
|
508
|
+
const { isReceiving: R, avgJitterDelayInInterval: F, freezeCount: S } = x(C), W = jt(C);
|
|
509
|
+
if (R)
|
|
510
|
+
r = 0, u = S - v, w = F < Bt ? re.Strong : F > xt && u > 1 ? re.Weak : h, w !== h && (s == null || s(w), h = w, v += u, u = 0), d || (n == null || n(E.Start), a = c[c.length - 1], c = [], d = !0), c.push(W);
|
|
511
|
+
else if (d && (r++, r >= $t)) {
|
|
512
|
+
const J = Ke(c, Ce, a);
|
|
513
|
+
n == null || n(E.Stop, J), t() || i(), v = S, d = !1;
|
|
514
514
|
}
|
|
515
515
|
}
|
|
516
516
|
return {
|
|
517
517
|
start: () => {
|
|
518
|
-
o || (o = setInterval(
|
|
518
|
+
o || (o = setInterval(b, Ce));
|
|
519
519
|
},
|
|
520
520
|
stop: () => {
|
|
521
521
|
o && (clearInterval(o), o = null);
|
|
522
522
|
},
|
|
523
|
-
getReport: () =>
|
|
523
|
+
getReport: () => Ke(c, Ce, a)
|
|
524
524
|
};
|
|
525
525
|
}
|
|
526
|
-
async function
|
|
526
|
+
async function Me() {
|
|
527
527
|
try {
|
|
528
528
|
return await import("./livekit-client.esm-C1GRQdZY.js");
|
|
529
529
|
} catch {
|
|
@@ -532,374 +532,375 @@ async function De() {
|
|
|
532
532
|
);
|
|
533
533
|
}
|
|
534
534
|
}
|
|
535
|
-
const
|
|
536
|
-
excellent:
|
|
537
|
-
good:
|
|
538
|
-
poor:
|
|
539
|
-
lost:
|
|
540
|
-
unknown:
|
|
541
|
-
},
|
|
535
|
+
const zt = {
|
|
536
|
+
excellent: re.Strong,
|
|
537
|
+
good: re.Strong,
|
|
538
|
+
poor: re.Weak,
|
|
539
|
+
lost: re.Unknown,
|
|
540
|
+
unknown: re.Unknown
|
|
541
|
+
}, he = JSON.stringify({
|
|
542
542
|
kind: "InternalServerError",
|
|
543
543
|
description: "Stream Error"
|
|
544
544
|
});
|
|
545
|
-
var
|
|
546
|
-
function
|
|
545
|
+
var je = /* @__PURE__ */ ((e) => (e.Chat = "lk.chat", e.Speak = "did.speak", e.Interrupt = "did.interrupt", e))(je || {});
|
|
546
|
+
function _e(e, t, i) {
|
|
547
547
|
var n, s;
|
|
548
|
-
throw t("Failed to connect to LiveKit room:", e), (n = i.onConnectionStateChange) == null || n.call(i,
|
|
548
|
+
throw t("Failed to connect to LiveKit room:", e), (n = i.onConnectionStateChange) == null || n.call(i, I.Fail), (s = i.onError) == null || s.call(i, e, { sessionId: "" }), e;
|
|
549
549
|
}
|
|
550
|
-
async function
|
|
551
|
-
var
|
|
552
|
-
const n =
|
|
553
|
-
let u = null,
|
|
554
|
-
const
|
|
555
|
-
let
|
|
550
|
+
async function Kt(e, t, i) {
|
|
551
|
+
var $e;
|
|
552
|
+
const n = Ye(i.debug || !1, "LiveKitStreamingManager"), { Room: s, RoomEvent: o, ConnectionState: c } = await Me(), { callbacks: a, auth: r, baseURL: d, analytics: h, microphoneStream: w } = i;
|
|
553
|
+
let u = null, v = !1;
|
|
554
|
+
const x = ie.Fluent;
|
|
555
|
+
let b = null, C = null, R = null, F = !1;
|
|
556
556
|
u = new s({
|
|
557
557
|
adaptiveStream: !1,
|
|
558
558
|
// Must be false to use mediaStreamTrack directly
|
|
559
559
|
dynacast: !0
|
|
560
560
|
});
|
|
561
561
|
let S = null;
|
|
562
|
-
const
|
|
563
|
-
let
|
|
564
|
-
const
|
|
565
|
-
let
|
|
562
|
+
const W = 2e4;
|
|
563
|
+
let J = V.Idle;
|
|
564
|
+
const O = Pt(r, d || pe, e, a.onError);
|
|
565
|
+
let z, ee, te;
|
|
566
566
|
try {
|
|
567
|
-
const
|
|
568
|
-
transport_provider:
|
|
567
|
+
const m = await O.createStream({
|
|
568
|
+
transport_provider: ke.Livekit,
|
|
569
569
|
chat_persist: t.chat_persist ?? !0
|
|
570
|
-
}), { id: g, session_token:
|
|
571
|
-
(
|
|
572
|
-
} catch (
|
|
573
|
-
|
|
570
|
+
}), { id: g, session_token: y, session_url: _ } = m;
|
|
571
|
+
($e = a.onStreamCreated) == null || $e.call(a, { session_id: g, stream_id: g, agent_id: e }), z = g, ee = y, te = _, await u.prepareConnection(te, ee);
|
|
572
|
+
} catch (m) {
|
|
573
|
+
_e(m, n, a);
|
|
574
574
|
}
|
|
575
|
-
if (!
|
|
575
|
+
if (!te || !ee || !z)
|
|
576
576
|
return Promise.reject(new Error("Failed to initialize LiveKit stream"));
|
|
577
|
-
u.on(o.ConnectionStateChanged,
|
|
578
|
-
function
|
|
579
|
-
var
|
|
580
|
-
g != null && g.isLocal && (
|
|
577
|
+
u.on(o.ConnectionStateChanged, D).on(o.ConnectionQualityChanged, k).on(o.ActiveSpeakersChanged, K).on(o.ParticipantConnected, P).on(o.ParticipantDisconnected, T).on(o.TrackSubscribed, N).on(o.TrackUnsubscribed, H).on(o.DataReceived, q).on(o.MediaDevicesError, j).on(o.TranscriptionReceived, l).on(o.EncryptionError, $).on(o.TrackSubscriptionFailed, Y);
|
|
578
|
+
function l(m, g) {
|
|
579
|
+
var y;
|
|
580
|
+
g != null && g.isLocal && (ne.update(), J === V.Talking && ((y = a.onInterruptDetected) == null || y.call(a, { type: "audio" }), J = V.Idle));
|
|
581
581
|
}
|
|
582
582
|
try {
|
|
583
|
-
await u.connect(
|
|
584
|
-
var
|
|
585
|
-
n("Track subscription timeout - no track subscribed within 30 seconds after connect"), S = null,
|
|
583
|
+
await u.connect(te, ee), n("LiveKit room joined successfully"), S = setTimeout(() => {
|
|
584
|
+
var m;
|
|
585
|
+
n("Track subscription timeout - no track subscribed within 30 seconds after connect"), S = null, h.track("connectivity-error", {
|
|
586
586
|
error: "Track subscription timeout",
|
|
587
|
-
sessionId:
|
|
588
|
-
}), (
|
|
589
|
-
},
|
|
590
|
-
} catch (
|
|
591
|
-
|
|
587
|
+
sessionId: z
|
|
588
|
+
}), (m = a.onError) == null || m.call(a, new Error("Track subscription timeout"), { sessionId: z }), de();
|
|
589
|
+
}, W);
|
|
590
|
+
} catch (m) {
|
|
591
|
+
_e(m, n, a);
|
|
592
592
|
}
|
|
593
|
-
|
|
594
|
-
"stream-type":
|
|
593
|
+
h.enrich({
|
|
594
|
+
"stream-type": x
|
|
595
595
|
});
|
|
596
|
-
function
|
|
597
|
-
var g,
|
|
598
|
-
switch (n("Connection state changed:",
|
|
596
|
+
function D(m) {
|
|
597
|
+
var g, y, _, A;
|
|
598
|
+
switch (n("Connection state changed:", m), m) {
|
|
599
599
|
case c.Connecting:
|
|
600
|
-
n("CALLBACK: onConnectionStateChange(Connecting)"), (g = a.onConnectionStateChange) == null || g.call(a,
|
|
600
|
+
n("CALLBACK: onConnectionStateChange(Connecting)"), (g = a.onConnectionStateChange) == null || g.call(a, I.Connecting);
|
|
601
601
|
break;
|
|
602
602
|
case c.Connected:
|
|
603
|
-
n("LiveKit room connected successfully"),
|
|
603
|
+
n("LiveKit room connected successfully"), v = !0;
|
|
604
604
|
break;
|
|
605
605
|
case c.Disconnected:
|
|
606
|
-
n("LiveKit room disconnected"),
|
|
606
|
+
n("LiveKit room disconnected"), v = !1, F = !1, (y = a.onConnectionStateChange) == null || y.call(a, I.Disconnected);
|
|
607
607
|
break;
|
|
608
608
|
case c.Reconnecting:
|
|
609
|
-
n("LiveKit room reconnecting..."), (
|
|
609
|
+
n("LiveKit room reconnecting..."), (_ = a.onConnectionStateChange) == null || _.call(a, I.Connecting);
|
|
610
610
|
break;
|
|
611
611
|
case c.SignalReconnecting:
|
|
612
|
-
n("LiveKit room signal reconnecting..."), (
|
|
612
|
+
n("LiveKit room signal reconnecting..."), (A = a.onConnectionStateChange) == null || A.call(a, I.Connecting);
|
|
613
613
|
break;
|
|
614
614
|
}
|
|
615
615
|
}
|
|
616
|
-
function
|
|
617
|
-
var
|
|
618
|
-
n("Connection quality:",
|
|
616
|
+
function k(m, g) {
|
|
617
|
+
var y;
|
|
618
|
+
n("Connection quality:", m), g != null && g.isLocal && ((y = a.onConnectivityStateChange) == null || y.call(a, zt[m]));
|
|
619
619
|
}
|
|
620
|
-
function
|
|
621
|
-
n("Active speakers changed:",
|
|
620
|
+
function K(m) {
|
|
621
|
+
n("Active speakers changed:", m);
|
|
622
622
|
}
|
|
623
|
-
function
|
|
624
|
-
n("Participant connected:",
|
|
623
|
+
function P(m) {
|
|
624
|
+
n("Participant connected:", m.identity);
|
|
625
625
|
}
|
|
626
|
-
function
|
|
627
|
-
n("Participant disconnected:",
|
|
626
|
+
function T(m) {
|
|
627
|
+
n("Participant disconnected:", m.identity), de();
|
|
628
628
|
}
|
|
629
|
-
function
|
|
630
|
-
var
|
|
631
|
-
n(`Track subscribed: ${
|
|
632
|
-
const
|
|
633
|
-
if (!
|
|
634
|
-
n(`No mediaStreamTrack available for ${
|
|
629
|
+
function N(m, g, y) {
|
|
630
|
+
var A, Q, Z, ce;
|
|
631
|
+
n(`Track subscribed: ${m.kind} from ${y.identity}`), S && (clearTimeout(S), S = null, n("Track subscription timeout cleared"));
|
|
632
|
+
const _ = m.mediaStreamTrack;
|
|
633
|
+
if (!_) {
|
|
634
|
+
n(`No mediaStreamTrack available for ${m.kind}`);
|
|
635
635
|
return;
|
|
636
636
|
}
|
|
637
|
-
|
|
638
|
-
() =>
|
|
639
|
-
() =>
|
|
640
|
-
|
|
641
|
-
(
|
|
642
|
-
n(`Video state change: ${
|
|
637
|
+
b ? (b.addTrack(_), n(`Added ${m.kind} track to shared MediaStream`)) : (b = new MediaStream([_]), n(`Created shared MediaStream with ${m.kind} track`)), m.kind === "video" && ((A = a.onStreamReady) == null || A.call(a), n("CALLBACK: onSrcObjectReady"), (Q = a.onSrcObjectReady) == null || Q.call(a, b), F || (F = !0, n("CALLBACK: onConnectionStateChange(Connected)"), (Z = a.onConnectionStateChange) == null || Z.call(a, I.Connected)), n("CALLBACK: onVideoStateChange(Start)"), (ce = a.onVideoStateChange) == null || ce.call(a, E.Start), R = Ge(
|
|
638
|
+
() => m.getRTCStatsReport(),
|
|
639
|
+
() => v,
|
|
640
|
+
wt,
|
|
641
|
+
(ve, Re) => {
|
|
642
|
+
n(`Video state change: ${ve}`);
|
|
643
643
|
}
|
|
644
|
-
),
|
|
644
|
+
), R.start());
|
|
645
645
|
}
|
|
646
|
-
function
|
|
647
|
-
var
|
|
648
|
-
if (n(`Track unsubscribed: ${
|
|
649
|
-
const
|
|
650
|
-
|
|
646
|
+
function H(m, g, y) {
|
|
647
|
+
var _;
|
|
648
|
+
if (n(`Track unsubscribed: ${m.kind} from ${y.identity}`), m.kind === "video") {
|
|
649
|
+
const A = R == null ? void 0 : R.getReport();
|
|
650
|
+
R == null || R.stop(), R = null, (_ = a.onVideoStateChange) == null || _.call(a, E.Stop, A);
|
|
651
651
|
}
|
|
652
652
|
}
|
|
653
|
-
function
|
|
654
|
-
var
|
|
655
|
-
const
|
|
656
|
-
n("Data received:",
|
|
653
|
+
function q(m, g, y, _) {
|
|
654
|
+
var Q, Z, ce, ve, Re, Be;
|
|
655
|
+
const A = new TextDecoder().decode(m);
|
|
656
|
+
n("Data received:", A);
|
|
657
657
|
try {
|
|
658
|
-
const
|
|
659
|
-
if (
|
|
660
|
-
const
|
|
661
|
-
(
|
|
662
|
-
event:
|
|
663
|
-
...
|
|
658
|
+
const U = JSON.parse(A), ue = _ || U.subject;
|
|
659
|
+
if (ue === L.ChatAnswer) {
|
|
660
|
+
const ae = X.Answer;
|
|
661
|
+
(Q = a.onMessage) == null || Q.call(a, ae, {
|
|
662
|
+
event: ae,
|
|
663
|
+
...U
|
|
664
664
|
});
|
|
665
|
-
} else if (
|
|
666
|
-
const
|
|
667
|
-
(Z = a.onMessage) == null || Z.call(a,
|
|
668
|
-
event:
|
|
669
|
-
...
|
|
665
|
+
} else if (ue === L.ChatPartial) {
|
|
666
|
+
const ae = X.Partial;
|
|
667
|
+
(Z = a.onMessage) == null || Z.call(a, ae, {
|
|
668
|
+
event: ae,
|
|
669
|
+
...U
|
|
670
670
|
});
|
|
671
|
-
} else if ([
|
|
672
|
-
|
|
673
|
-
const
|
|
674
|
-
(
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
671
|
+
} else if ([L.StreamVideoCreated, L.StreamVideoDone].includes(ue)) {
|
|
672
|
+
J = ue === L.StreamVideoCreated ? V.Talking : V.Idle, (ce = a.onAgentActivityStateChange) == null || ce.call(a, J);
|
|
673
|
+
const fe = { [(U == null ? void 0 : U.role) || (g == null ? void 0 : g.identity) || "datachannel"]: U };
|
|
674
|
+
i.debug && ((ve = U == null ? void 0 : U.metadata) != null && ve.sentiment) && (fe.sentiment = {
|
|
675
|
+
id: U.metadata.sentiment.id,
|
|
676
|
+
name: U.metadata.sentiment.sentiment
|
|
677
|
+
}), (Re = a.onMessage) == null || Re.call(a, ue, fe);
|
|
678
|
+
} else if (ue === L.ChatAudioTranscribed) {
|
|
679
|
+
const ae = X.Transcribe;
|
|
680
|
+
(Be = a.onMessage) == null || Be.call(a, ae, {
|
|
681
|
+
event: ae,
|
|
682
|
+
...U
|
|
682
683
|
}), queueMicrotask(() => {
|
|
683
|
-
var
|
|
684
|
-
(
|
|
684
|
+
var fe;
|
|
685
|
+
(fe = a.onAgentActivityStateChange) == null || fe.call(a, V.Loading);
|
|
685
686
|
});
|
|
686
687
|
}
|
|
687
|
-
} catch (
|
|
688
|
-
n("Failed to parse data channel message:",
|
|
688
|
+
} catch (U) {
|
|
689
|
+
n("Failed to parse data channel message:", U);
|
|
689
690
|
}
|
|
690
691
|
}
|
|
691
|
-
function
|
|
692
|
+
function j(m) {
|
|
692
693
|
var g;
|
|
693
|
-
n("Media devices error:",
|
|
694
|
+
n("Media devices error:", m), (g = a.onError) == null || g.call(a, new Error(he), { sessionId: z });
|
|
694
695
|
}
|
|
695
|
-
function
|
|
696
|
+
function $(m) {
|
|
696
697
|
var g;
|
|
697
|
-
n("Encryption error:",
|
|
698
|
+
n("Encryption error:", m), (g = a.onError) == null || g.call(a, new Error(he), { sessionId: z });
|
|
698
699
|
}
|
|
699
|
-
function
|
|
700
|
-
n("Track subscription failed:", { trackSid:
|
|
700
|
+
function Y(m, g, y) {
|
|
701
|
+
n("Track subscription failed:", { trackSid: m, participant: g, reason: y });
|
|
701
702
|
}
|
|
702
|
-
async function
|
|
703
|
+
async function oe(m) {
|
|
703
704
|
if (!u) return null;
|
|
704
|
-
const { Track: g } = await
|
|
705
|
-
if (
|
|
706
|
-
for (const [
|
|
707
|
-
if (
|
|
708
|
-
const Z =
|
|
709
|
-
if (Z ===
|
|
710
|
-
return
|
|
705
|
+
const { Track: g } = await Me(), y = u.localParticipant.audioTrackPublications;
|
|
706
|
+
if (y) {
|
|
707
|
+
for (const [_, A] of y)
|
|
708
|
+
if (A.source === g.Source.Microphone && A.track) {
|
|
709
|
+
const Z = A.track.mediaStreamTrack;
|
|
710
|
+
if (Z === m || Z && Z.id === m.id)
|
|
711
|
+
return A;
|
|
711
712
|
}
|
|
712
713
|
}
|
|
713
714
|
return null;
|
|
714
715
|
}
|
|
715
|
-
function m
|
|
716
|
+
function p(m) {
|
|
716
717
|
if (!C || !C.track)
|
|
717
718
|
return !1;
|
|
718
719
|
const g = C.track.mediaStreamTrack;
|
|
719
|
-
return g !==
|
|
720
|
+
return g !== m && (g == null ? void 0 : g.id) !== m.id;
|
|
720
721
|
}
|
|
721
|
-
async function
|
|
722
|
-
var
|
|
723
|
-
if (!
|
|
722
|
+
async function f(m) {
|
|
723
|
+
var Q, Z;
|
|
724
|
+
if (!v || !u)
|
|
724
725
|
throw n("Room is not connected, cannot publish microphone stream"), new Error("Room is not connected");
|
|
725
|
-
const g =
|
|
726
|
+
const g = m.getAudioTracks();
|
|
726
727
|
if (g.length === 0) {
|
|
727
728
|
n("No audio track found in the provided MediaStream");
|
|
728
729
|
return;
|
|
729
730
|
}
|
|
730
|
-
const
|
|
731
|
-
if (
|
|
731
|
+
const y = g[0], { Track: _ } = await Me(), A = await oe(y);
|
|
732
|
+
if (A) {
|
|
732
733
|
n("Microphone track is already published, skipping", {
|
|
733
|
-
trackId:
|
|
734
|
-
publishedTrackId: (Z = (
|
|
735
|
-
}), C =
|
|
734
|
+
trackId: y.id,
|
|
735
|
+
publishedTrackId: (Z = (Q = A.track) == null ? void 0 : Q.mediaStreamTrack) == null ? void 0 : Z.id
|
|
736
|
+
}), C = A;
|
|
736
737
|
return;
|
|
737
738
|
}
|
|
738
|
-
|
|
739
|
+
p(y) && (n("Unpublishing existing microphone track before publishing new one"), await M()), n("Publishing microphone track from provided MediaStream", { trackId: y.id });
|
|
739
740
|
try {
|
|
740
|
-
C = await u.localParticipant.publishTrack(
|
|
741
|
-
source:
|
|
741
|
+
C = await u.localParticipant.publishTrack(y, {
|
|
742
|
+
source: _.Source.Microphone
|
|
742
743
|
}), n("Microphone track published successfully", { trackSid: C.trackSid });
|
|
743
|
-
} catch (
|
|
744
|
-
throw n("Failed to publish microphone track:",
|
|
744
|
+
} catch (ce) {
|
|
745
|
+
throw n("Failed to publish microphone track:", ce), ce;
|
|
745
746
|
}
|
|
746
747
|
}
|
|
747
|
-
async function
|
|
748
|
+
async function M() {
|
|
748
749
|
if (!(!C || !C.track))
|
|
749
750
|
try {
|
|
750
751
|
u && (await u.localParticipant.unpublishTrack(C.track), n("Microphone track unpublished"));
|
|
751
|
-
} catch (
|
|
752
|
-
n("Error unpublishing microphone track:",
|
|
752
|
+
} catch (m) {
|
|
753
|
+
n("Error unpublishing microphone track:", m);
|
|
753
754
|
} finally {
|
|
754
755
|
C = null;
|
|
755
756
|
}
|
|
756
757
|
}
|
|
757
|
-
function
|
|
758
|
-
|
|
758
|
+
function G() {
|
|
759
|
+
b && (b.getTracks().forEach((m) => m.stop()), b = null);
|
|
759
760
|
}
|
|
760
|
-
async function
|
|
761
|
-
var
|
|
762
|
-
if (!
|
|
763
|
-
n("Room is not connected for sending messages"), (
|
|
764
|
-
sessionId:
|
|
761
|
+
async function se(m, g) {
|
|
762
|
+
var y, _;
|
|
763
|
+
if (!v || !u) {
|
|
764
|
+
n("Room is not connected for sending messages"), (y = a.onError) == null || y.call(a, new Error(he), {
|
|
765
|
+
sessionId: z
|
|
765
766
|
});
|
|
766
767
|
return;
|
|
767
768
|
}
|
|
768
769
|
try {
|
|
769
|
-
await u.localParticipant.sendText(
|
|
770
|
-
} catch (
|
|
771
|
-
n("Failed to send message:",
|
|
770
|
+
await u.localParticipant.sendText(m, { topic: g }), n("Message sent successfully:", m);
|
|
771
|
+
} catch (A) {
|
|
772
|
+
n("Failed to send message:", A), (_ = a.onError) == null || _.call(a, new Error(he), { sessionId: z });
|
|
772
773
|
}
|
|
773
774
|
}
|
|
774
|
-
async function
|
|
775
|
+
async function we(m) {
|
|
775
776
|
var g;
|
|
776
777
|
try {
|
|
777
|
-
const
|
|
778
|
-
return
|
|
779
|
-
} catch (
|
|
780
|
-
n("Failed to send data channel message:",
|
|
778
|
+
const _ = JSON.parse(m).topic;
|
|
779
|
+
return se("", _);
|
|
780
|
+
} catch (y) {
|
|
781
|
+
n("Failed to send data channel message:", y), (g = a.onError) == null || g.call(a, new Error(he), { sessionId: z });
|
|
781
782
|
}
|
|
782
783
|
}
|
|
783
|
-
function
|
|
784
|
-
return
|
|
785
|
-
|
|
784
|
+
function ye(m) {
|
|
785
|
+
return se(
|
|
786
|
+
m,
|
|
786
787
|
"lk.chat"
|
|
787
788
|
/* Chat */
|
|
788
789
|
);
|
|
789
790
|
}
|
|
790
|
-
async function
|
|
791
|
-
var
|
|
792
|
-
S && (clearTimeout(S), S = null), u && (await
|
|
791
|
+
async function de() {
|
|
792
|
+
var m, g;
|
|
793
|
+
S && (clearTimeout(S), S = null), u && (await M(), await u.disconnect()), G(), v = !1, F = !1, (m = a.onConnectionStateChange) == null || m.call(a, I.Disconnected), (g = a.onAgentActivityStateChange) == null || g.call(a, V.Idle), J = V.Idle;
|
|
793
794
|
}
|
|
794
795
|
return {
|
|
795
|
-
speak(
|
|
796
|
-
const g = typeof
|
|
797
|
-
return
|
|
796
|
+
speak(m) {
|
|
797
|
+
const g = typeof m == "string" ? m : JSON.stringify(m);
|
|
798
|
+
return se(
|
|
798
799
|
g,
|
|
799
800
|
"did.speak"
|
|
800
801
|
/* Speak */
|
|
801
802
|
);
|
|
802
803
|
},
|
|
803
|
-
disconnect:
|
|
804
|
+
disconnect: de,
|
|
804
805
|
async reconnect() {
|
|
805
|
-
var
|
|
806
|
+
var m, g;
|
|
806
807
|
if ((u == null ? void 0 : u.state) === c.Connected) {
|
|
807
808
|
n("Room is already connected");
|
|
808
809
|
return;
|
|
809
810
|
}
|
|
810
|
-
if (!u || !
|
|
811
|
+
if (!u || !te || !ee)
|
|
811
812
|
throw n("Cannot reconnect: missing room, URL or token"), new Error("Cannot reconnect: session not available");
|
|
812
|
-
n("Reconnecting to LiveKit room, state:", u.state),
|
|
813
|
+
n("Reconnecting to LiveKit room, state:", u.state), F = !1, (m = a.onConnectionStateChange) == null || m.call(a, I.Connecting);
|
|
813
814
|
try {
|
|
814
|
-
if (await u.connect(
|
|
815
|
-
if (n("Waiting for agent to join..."), !await new Promise((
|
|
816
|
-
const
|
|
817
|
-
u == null || u.off(o.ParticipantConnected,
|
|
818
|
-
}, 5e3),
|
|
819
|
-
clearTimeout(
|
|
815
|
+
if (await u.connect(te, ee), n("Room reconnected"), v = !0, u.remoteParticipants.size === 0) {
|
|
816
|
+
if (n("Waiting for agent to join..."), !await new Promise((_) => {
|
|
817
|
+
const A = setTimeout(() => {
|
|
818
|
+
u == null || u.off(o.ParticipantConnected, Q), _(!1);
|
|
819
|
+
}, 5e3), Q = () => {
|
|
820
|
+
clearTimeout(A), u == null || u.off(o.ParticipantConnected, Q), _(!0);
|
|
820
821
|
};
|
|
821
|
-
u == null || u.on(o.ParticipantConnected,
|
|
822
|
+
u == null || u.on(o.ParticipantConnected, Q);
|
|
822
823
|
}))
|
|
823
824
|
throw n("Agent did not join within timeout"), await u.disconnect(), new Error("Agent did not rejoin the room");
|
|
824
825
|
n("Agent joined");
|
|
825
826
|
}
|
|
826
|
-
} catch (
|
|
827
|
-
throw n("Failed to reconnect:",
|
|
827
|
+
} catch (y) {
|
|
828
|
+
throw n("Failed to reconnect:", y), (g = a.onConnectionStateChange) == null || g.call(a, I.Fail), y;
|
|
828
829
|
}
|
|
829
830
|
},
|
|
830
|
-
sendDataChannelMessage:
|
|
831
|
-
sendTextMessage:
|
|
832
|
-
publishMicrophoneStream:
|
|
833
|
-
unpublishMicrophoneStream:
|
|
834
|
-
sessionId:
|
|
835
|
-
streamId:
|
|
836
|
-
streamType:
|
|
831
|
+
sendDataChannelMessage: we,
|
|
832
|
+
sendTextMessage: ye,
|
|
833
|
+
publishMicrophoneStream: f,
|
|
834
|
+
unpublishMicrophoneStream: M,
|
|
835
|
+
sessionId: z,
|
|
836
|
+
streamId: z,
|
|
837
|
+
streamType: x,
|
|
837
838
|
interruptAvailable: !0,
|
|
838
839
|
triggersAvailable: !1
|
|
839
840
|
};
|
|
840
841
|
}
|
|
841
842
|
const Nt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
842
843
|
__proto__: null,
|
|
843
|
-
DataChannelTopic:
|
|
844
|
-
createLiveKitStreamingManager:
|
|
845
|
-
handleInitError:
|
|
844
|
+
DataChannelTopic: je,
|
|
845
|
+
createLiveKitStreamingManager: Kt,
|
|
846
|
+
handleInitError: _e
|
|
846
847
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
847
|
-
function
|
|
848
|
+
function Jt(e, t, i) {
|
|
848
849
|
if (!e)
|
|
849
850
|
throw new Error("Please connect to the agent first");
|
|
850
851
|
if (!e.interruptAvailable)
|
|
851
852
|
throw new Error("Interrupt is not enabled for this stream");
|
|
852
|
-
if (t !==
|
|
853
|
+
if (t !== ie.Fluent)
|
|
853
854
|
throw new Error("Interrupt only available for Fluent streams");
|
|
854
855
|
if (!i)
|
|
855
856
|
throw new Error("No active video to interrupt");
|
|
856
857
|
}
|
|
857
|
-
async function
|
|
858
|
+
async function Ut(e, t) {
|
|
858
859
|
const i = {
|
|
859
|
-
type:
|
|
860
|
+
type: L.StreamInterrupt,
|
|
860
861
|
videoId: t,
|
|
861
862
|
timestamp: Date.now()
|
|
862
863
|
};
|
|
863
864
|
e.sendDataChannelMessage(JSON.stringify(i));
|
|
864
865
|
}
|
|
865
|
-
async function
|
|
866
|
+
async function Vt(e) {
|
|
866
867
|
const t = {
|
|
867
|
-
topic:
|
|
868
|
+
topic: je.Interrupt
|
|
868
869
|
};
|
|
869
870
|
e.sendDataChannelMessage(JSON.stringify(t));
|
|
870
871
|
}
|
|
871
|
-
function
|
|
872
|
+
function Wt(e) {
|
|
872
873
|
return new Promise((t, i) => {
|
|
873
|
-
const { callbacks: n, host: s, auth: o, externalId: c } = e, { onMessage: a = null, onOpen: r = null, onClose: d = null, onError:
|
|
874
|
-
|
|
875
|
-
console.error(u),
|
|
876
|
-
},
|
|
877
|
-
r == null || r(u), t(
|
|
874
|
+
const { callbacks: n, host: s, auth: o, externalId: c } = e, { onMessage: a = null, onOpen: r = null, onClose: d = null, onError: h = null } = n || {}, w = new WebSocket(`${s}?authorization=${encodeURIComponent(qe(o, c))}`);
|
|
875
|
+
w.onmessage = a, w.onclose = d, w.onerror = (u) => {
|
|
876
|
+
console.error(u), h == null || h("Websocket failed to connect", u), i(u);
|
|
877
|
+
}, w.onopen = (u) => {
|
|
878
|
+
r == null || r(u), t(w);
|
|
878
879
|
};
|
|
879
880
|
});
|
|
880
881
|
}
|
|
881
|
-
async function
|
|
882
|
+
async function Ot(e) {
|
|
882
883
|
const { retries: t = 1 } = e;
|
|
883
884
|
let i = null;
|
|
884
885
|
for (let n = 0; (i == null ? void 0 : i.readyState) !== WebSocket.OPEN; n++)
|
|
885
886
|
try {
|
|
886
|
-
i = await
|
|
887
|
+
i = await Wt(e);
|
|
887
888
|
} catch (s) {
|
|
888
889
|
if (n === t)
|
|
889
890
|
throw s;
|
|
890
|
-
await
|
|
891
|
+
await We(n * 500);
|
|
891
892
|
}
|
|
892
893
|
return i;
|
|
893
894
|
}
|
|
894
|
-
async function
|
|
895
|
-
const s = i != null && i.onMessage ? [i.onMessage] : [], o = await
|
|
895
|
+
async function Ht(e, t, i, n) {
|
|
896
|
+
const s = i != null && i.onMessage ? [i.onMessage] : [], o = await Ot({
|
|
896
897
|
auth: e,
|
|
897
898
|
host: t,
|
|
898
899
|
externalId: n,
|
|
899
900
|
callbacks: {
|
|
900
901
|
onError: (c) => {
|
|
901
902
|
var a;
|
|
902
|
-
return (a = i.onError) == null ? void 0 : a.call(i, new
|
|
903
|
+
return (a = i.onError) == null ? void 0 : a.call(i, new rt(c));
|
|
903
904
|
},
|
|
904
905
|
onMessage(c) {
|
|
905
906
|
const a = JSON.parse(c.data);
|
|
@@ -913,7 +914,7 @@ async function Ot(e, t, i, n) {
|
|
|
913
914
|
subscribeToEvents: (c) => s.push(c)
|
|
914
915
|
};
|
|
915
916
|
}
|
|
916
|
-
function
|
|
917
|
+
function qt(e) {
|
|
917
918
|
if (e.answer !== void 0)
|
|
918
919
|
return e.answer;
|
|
919
920
|
let t = 0, i = "";
|
|
@@ -921,7 +922,7 @@ function Ht(e) {
|
|
|
921
922
|
i += e[t++];
|
|
922
923
|
return i;
|
|
923
924
|
}
|
|
924
|
-
function
|
|
925
|
+
function Qt(e, t, i) {
|
|
925
926
|
if (!e.content)
|
|
926
927
|
return;
|
|
927
928
|
const n = t.messages[t.messages.length - 1];
|
|
@@ -935,17 +936,17 @@ function qt(e, t, i) {
|
|
|
935
936
|
};
|
|
936
937
|
t.messages.push(s), i == null || i([...t.messages], "user");
|
|
937
938
|
}
|
|
938
|
-
function
|
|
939
|
-
if (e ===
|
|
940
|
-
|
|
939
|
+
function Xt(e, t, i, n, s) {
|
|
940
|
+
if (e === X.Transcribe && t.content) {
|
|
941
|
+
Qt(t, n, s);
|
|
941
942
|
return;
|
|
942
943
|
}
|
|
943
|
-
if (!(e ===
|
|
944
|
+
if (!(e === X.Partial || e === X.Answer))
|
|
944
945
|
return;
|
|
945
946
|
const o = n.messages[n.messages.length - 1];
|
|
946
947
|
let c;
|
|
947
948
|
if (o != null && o.transcribed && o.role === "user")
|
|
948
|
-
e ===
|
|
949
|
+
e === X.Answer && t.content, c = {
|
|
949
950
|
id: t.id || `assistant-${Date.now()}`,
|
|
950
951
|
role: t.role || "assistant",
|
|
951
952
|
content: t.content || "",
|
|
@@ -956,41 +957,48 @@ function Qt(e, t, i, n, s) {
|
|
|
956
957
|
else
|
|
957
958
|
return;
|
|
958
959
|
const { content: a, sequence: r } = t;
|
|
959
|
-
e ===
|
|
960
|
-
const d =
|
|
961
|
-
(c.content !== d || e ===
|
|
960
|
+
e === X.Partial ? i[r] = a : i.answer = a;
|
|
961
|
+
const d = qt(i);
|
|
962
|
+
(c.content !== d || e === X.Answer) && (c.content = d, s == null || s([...n.messages], e));
|
|
962
963
|
}
|
|
963
|
-
function
|
|
964
|
+
function Yt(e, t, i, n, s) {
|
|
964
965
|
let o = {};
|
|
965
|
-
const c = () => o = {}
|
|
966
|
-
|
|
967
|
-
|
|
966
|
+
const c = () => o = {};
|
|
967
|
+
let a = "answer";
|
|
968
|
+
const r = (d, h) => {
|
|
969
|
+
var w, u;
|
|
970
|
+
h === "user" && c(), a = h, (u = (w = i.callbacks).onNewMessage) == null || u.call(w, d, h);
|
|
968
971
|
};
|
|
969
972
|
return {
|
|
970
973
|
clearQueue: c,
|
|
971
|
-
onMessage: (
|
|
972
|
-
var w,
|
|
973
|
-
if ("content" in
|
|
974
|
-
const
|
|
975
|
-
|
|
974
|
+
onMessage: (d, h) => {
|
|
975
|
+
var w, u;
|
|
976
|
+
if ("content" in h) {
|
|
977
|
+
const v = d === L.ChatAnswer ? X.Answer : d === L.ChatAudioTranscribed ? X.Transcribe : d;
|
|
978
|
+
Xt(v, h, o, t, r), v === X.Answer && e.track("agent-message-received", {
|
|
976
979
|
messages: t.messages.length,
|
|
977
980
|
mode: t.chatMode
|
|
978
981
|
});
|
|
979
982
|
} else {
|
|
980
|
-
const
|
|
981
|
-
if (
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
983
|
+
const v = L, x = [v.StreamVideoDone, v.StreamVideoError, v.StreamVideoRejected], b = [v.StreamFailed, v.StreamVideoError, v.StreamVideoRejected], C = Et(h, n, { mode: t.chatMode });
|
|
984
|
+
if (d = d, d === v.StreamVideoCreated && (e.linkTrack("agent-video", C, v.StreamVideoCreated, ["start"]), h.sentiment)) {
|
|
985
|
+
const R = t.messages[t.messages.length - 1];
|
|
986
|
+
if ((R == null ? void 0 : R.role) === "assistant") {
|
|
987
|
+
const F = { ...R, sentiment: h.sentiment };
|
|
988
|
+
t.messages[t.messages.length - 1] = F, r == null || r([...t.messages], a);
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
if (x.includes(d)) {
|
|
992
|
+
const R = d.split("/")[1];
|
|
993
|
+
b.includes(d) ? e.track("agent-video", { ...C, event: R }) : e.linkTrack("agent-video", { ...C, event: R }, d, ["done"]);
|
|
986
994
|
}
|
|
987
|
-
|
|
995
|
+
b.includes(d) && ((u = (w = i.callbacks).onError) == null || u.call(w, new Error(`Stream failed with event ${d}`), { data: h })), h.event === v.StreamDone && s();
|
|
988
996
|
}
|
|
989
997
|
}
|
|
990
998
|
};
|
|
991
999
|
}
|
|
992
|
-
function
|
|
993
|
-
const s =
|
|
1000
|
+
function Gt(e, t, i, n) {
|
|
1001
|
+
const s = Le(e, `${t}/agents/${i}`, n);
|
|
994
1002
|
return {
|
|
995
1003
|
createStream(o, c) {
|
|
996
1004
|
return s.post("/streams", o, { signal: c });
|
|
@@ -1026,28 +1034,28 @@ function Yt(e, t, i, n) {
|
|
|
1026
1034
|
}
|
|
1027
1035
|
};
|
|
1028
1036
|
}
|
|
1029
|
-
const
|
|
1037
|
+
const Zt = (window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection).bind(window);
|
|
1030
1038
|
function Ne(e) {
|
|
1031
1039
|
switch (e) {
|
|
1032
1040
|
case "connected":
|
|
1033
|
-
return
|
|
1041
|
+
return I.Connected;
|
|
1034
1042
|
case "checking":
|
|
1035
|
-
return
|
|
1043
|
+
return I.Connecting;
|
|
1036
1044
|
case "failed":
|
|
1037
|
-
return
|
|
1045
|
+
return I.Fail;
|
|
1038
1046
|
case "new":
|
|
1039
|
-
return
|
|
1047
|
+
return I.New;
|
|
1040
1048
|
case "closed":
|
|
1041
|
-
return
|
|
1049
|
+
return I.Closed;
|
|
1042
1050
|
case "disconnected":
|
|
1043
|
-
return
|
|
1051
|
+
return I.Disconnected;
|
|
1044
1052
|
case "completed":
|
|
1045
|
-
return
|
|
1053
|
+
return I.Completed;
|
|
1046
1054
|
default:
|
|
1047
|
-
return
|
|
1055
|
+
return I.New;
|
|
1048
1056
|
}
|
|
1049
1057
|
}
|
|
1050
|
-
const
|
|
1058
|
+
const en = (e) => (t) => {
|
|
1051
1059
|
const [i, n = ""] = t.split(/:(.+)/);
|
|
1052
1060
|
try {
|
|
1053
1061
|
const s = JSON.parse(n);
|
|
@@ -1056,16 +1064,16 @@ const Zt = (e) => (t) => {
|
|
|
1056
1064
|
return e("Failed to parse data channel message, returning data as string", { subject: i, rawData: n, error: s }), { subject: i, data: n };
|
|
1057
1065
|
}
|
|
1058
1066
|
};
|
|
1059
|
-
function
|
|
1067
|
+
function tn({
|
|
1060
1068
|
statsSignal: e,
|
|
1061
1069
|
dataChannelSignal: t,
|
|
1062
1070
|
onVideoStateChange: i,
|
|
1063
1071
|
report: n,
|
|
1064
1072
|
log: s
|
|
1065
1073
|
}) {
|
|
1066
|
-
e ===
|
|
1074
|
+
e === E.Start && t === E.Start ? (s("CALLBACK: onVideoStateChange(Start)"), i == null || i(E.Start)) : e === E.Stop && t === E.Stop && (s("CALLBACK: onVideoStateChange(Stop)"), i == null || i(E.Stop, n));
|
|
1067
1075
|
}
|
|
1068
|
-
function
|
|
1076
|
+
function nn({
|
|
1069
1077
|
statsSignal: e,
|
|
1070
1078
|
dataChannelSignal: t,
|
|
1071
1079
|
onVideoStateChange: i,
|
|
@@ -1073,9 +1081,9 @@ function tn({
|
|
|
1073
1081
|
report: s,
|
|
1074
1082
|
log: o
|
|
1075
1083
|
}) {
|
|
1076
|
-
e ===
|
|
1084
|
+
e === E.Start ? (o("CALLBACK: onVideoStateChange(Start)"), i == null || i(E.Start)) : e === E.Stop && (o("CALLBACK: onVideoStateChange(Stop)"), i == null || i(E.Stop, s)), t === E.Start ? n == null || n(V.Talking) : t === E.Stop && (n == null || n(V.Idle));
|
|
1077
1085
|
}
|
|
1078
|
-
function
|
|
1086
|
+
function Je({
|
|
1079
1087
|
statsSignal: e,
|
|
1080
1088
|
dataChannelSignal: t,
|
|
1081
1089
|
onVideoStateChange: i,
|
|
@@ -1084,7 +1092,7 @@ function Ke({
|
|
|
1084
1092
|
report: o,
|
|
1085
1093
|
log: c
|
|
1086
1094
|
}) {
|
|
1087
|
-
s ===
|
|
1095
|
+
s === ie.Legacy ? tn({ statsSignal: e, dataChannelSignal: t, onVideoStateChange: i, report: o, log: c }) : s === ie.Fluent && nn({
|
|
1088
1096
|
statsSignal: e,
|
|
1089
1097
|
dataChannelSignal: t,
|
|
1090
1098
|
onVideoStateChange: i,
|
|
@@ -1093,188 +1101,188 @@ function Ke({
|
|
|
1093
1101
|
log: c
|
|
1094
1102
|
});
|
|
1095
1103
|
}
|
|
1096
|
-
async function
|
|
1097
|
-
var
|
|
1098
|
-
const r =
|
|
1099
|
-
let
|
|
1100
|
-
const { startConnection:
|
|
1104
|
+
async function rn(e, t, { debug: i = !1, callbacks: n, auth: s, baseURL: o = pe, analytics: c }, a) {
|
|
1105
|
+
var oe;
|
|
1106
|
+
const r = Ye(i, "WebRTCStreamingManager"), d = en(r);
|
|
1107
|
+
let h = !1, w = !1, u = E.Stop, v = E.Stop;
|
|
1108
|
+
const { startConnection: x, sendStreamRequest: b, close: C, createStream: R, addIceCandidate: F } = Gt(
|
|
1101
1109
|
s,
|
|
1102
1110
|
o,
|
|
1103
1111
|
e,
|
|
1104
1112
|
n.onError
|
|
1105
1113
|
), {
|
|
1106
1114
|
id: S,
|
|
1107
|
-
offer:
|
|
1108
|
-
ice_servers:
|
|
1109
|
-
session_id:
|
|
1110
|
-
fluent:
|
|
1115
|
+
offer: W,
|
|
1116
|
+
ice_servers: J,
|
|
1117
|
+
session_id: O,
|
|
1118
|
+
fluent: z,
|
|
1111
1119
|
interrupt_enabled: ee,
|
|
1112
|
-
triggers_enabled:
|
|
1113
|
-
} = await
|
|
1114
|
-
(
|
|
1115
|
-
const
|
|
1116
|
-
if (!
|
|
1120
|
+
triggers_enabled: te
|
|
1121
|
+
} = await R(t, a);
|
|
1122
|
+
(oe = n.onStreamCreated) == null || oe.call(n, { stream_id: S, session_id: O, agent_id: e });
|
|
1123
|
+
const l = new Zt({ iceServers: J }), D = l.createDataChannel("JanusDataChannel");
|
|
1124
|
+
if (!O)
|
|
1117
1125
|
throw new Error("Could not create session_id");
|
|
1118
|
-
const
|
|
1126
|
+
const k = z ? ie.Fluent : ie.Legacy;
|
|
1119
1127
|
c.enrich({
|
|
1120
|
-
"stream-type":
|
|
1128
|
+
"stream-type": k
|
|
1121
1129
|
});
|
|
1122
|
-
const
|
|
1123
|
-
var
|
|
1124
|
-
|
|
1125
|
-
},
|
|
1126
|
-
() =>
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
(
|
|
1130
|
-
statsSignal:
|
|
1131
|
-
dataChannelSignal:
|
|
1130
|
+
const K = t.stream_warmup && !z, P = () => h, T = () => {
|
|
1131
|
+
var p;
|
|
1132
|
+
h = !0, w && (r("CALLBACK: onConnectionStateChange(Connected)"), (p = n.onConnectionStateChange) == null || p.call(n, I.Connected));
|
|
1133
|
+
}, N = Ge(
|
|
1134
|
+
() => l.getStats(),
|
|
1135
|
+
P,
|
|
1136
|
+
T,
|
|
1137
|
+
(p, f) => Je({
|
|
1138
|
+
statsSignal: v = p,
|
|
1139
|
+
dataChannelSignal: k === ie.Legacy ? u : void 0,
|
|
1132
1140
|
onVideoStateChange: n.onVideoStateChange,
|
|
1133
1141
|
onAgentActivityStateChange: n.onAgentActivityStateChange,
|
|
1134
|
-
report:
|
|
1135
|
-
streamType:
|
|
1142
|
+
report: f,
|
|
1143
|
+
streamType: k,
|
|
1136
1144
|
log: r
|
|
1137
1145
|
}),
|
|
1138
|
-
(
|
|
1139
|
-
var
|
|
1140
|
-
return (
|
|
1146
|
+
(p) => {
|
|
1147
|
+
var f;
|
|
1148
|
+
return (f = n.onConnectivityStateChange) == null ? void 0 : f.call(n, p);
|
|
1141
1149
|
}
|
|
1142
1150
|
);
|
|
1143
|
-
|
|
1144
|
-
var
|
|
1145
|
-
r("peerConnection.onicecandidate",
|
|
1151
|
+
N.start(), l.onicecandidate = (p) => {
|
|
1152
|
+
var f;
|
|
1153
|
+
r("peerConnection.onicecandidate", p);
|
|
1146
1154
|
try {
|
|
1147
|
-
|
|
1155
|
+
p.candidate && p.candidate.sdpMid && p.candidate.sdpMLineIndex !== null ? F(
|
|
1148
1156
|
S,
|
|
1149
1157
|
{
|
|
1150
|
-
candidate:
|
|
1151
|
-
sdpMid:
|
|
1152
|
-
sdpMLineIndex:
|
|
1158
|
+
candidate: p.candidate.candidate,
|
|
1159
|
+
sdpMid: p.candidate.sdpMid,
|
|
1160
|
+
sdpMLineIndex: p.candidate.sdpMLineIndex
|
|
1153
1161
|
},
|
|
1154
|
-
|
|
1162
|
+
O,
|
|
1155
1163
|
a
|
|
1156
|
-
) :
|
|
1157
|
-
} catch (
|
|
1158
|
-
(
|
|
1164
|
+
) : F(S, { candidate: null }, O, a);
|
|
1165
|
+
} catch (M) {
|
|
1166
|
+
(f = n.onError) == null || f.call(n, M, { streamId: S });
|
|
1159
1167
|
}
|
|
1160
|
-
},
|
|
1161
|
-
|
|
1168
|
+
}, D.onopen = () => {
|
|
1169
|
+
w = !0, (!K || h) && T();
|
|
1162
1170
|
};
|
|
1163
|
-
const
|
|
1164
|
-
var
|
|
1165
|
-
(
|
|
1171
|
+
const H = (p) => {
|
|
1172
|
+
var f;
|
|
1173
|
+
(f = n.onVideoIdChange) == null || f.call(n, p);
|
|
1166
1174
|
};
|
|
1167
|
-
function
|
|
1168
|
-
if (
|
|
1169
|
-
const
|
|
1170
|
-
|
|
1175
|
+
function q(p, f) {
|
|
1176
|
+
if (p === L.StreamStarted && typeof f == "object" && "metadata" in f) {
|
|
1177
|
+
const M = f.metadata;
|
|
1178
|
+
H(M.videoId);
|
|
1171
1179
|
}
|
|
1172
|
-
|
|
1173
|
-
statsSignal:
|
|
1180
|
+
p === L.StreamDone && H(null), u = p === L.StreamStarted ? E.Start : E.Stop, Je({
|
|
1181
|
+
statsSignal: k === ie.Legacy ? v : void 0,
|
|
1174
1182
|
dataChannelSignal: u,
|
|
1175
1183
|
onVideoStateChange: n.onVideoStateChange,
|
|
1176
1184
|
onAgentActivityStateChange: n.onAgentActivityStateChange,
|
|
1177
|
-
streamType:
|
|
1185
|
+
streamType: k,
|
|
1178
1186
|
log: r
|
|
1179
1187
|
});
|
|
1180
1188
|
}
|
|
1181
|
-
function
|
|
1182
|
-
var
|
|
1183
|
-
const
|
|
1184
|
-
|
|
1189
|
+
function j(p, f) {
|
|
1190
|
+
var G;
|
|
1191
|
+
const M = typeof f == "string" ? f : f == null ? void 0 : f.metadata;
|
|
1192
|
+
M && c.enrich({ streamMetadata: M }), (G = n.onStreamReady) == null || G.call(n);
|
|
1185
1193
|
}
|
|
1186
|
-
const
|
|
1187
|
-
[
|
|
1188
|
-
[
|
|
1189
|
-
[
|
|
1194
|
+
const $ = {
|
|
1195
|
+
[L.StreamStarted]: q,
|
|
1196
|
+
[L.StreamDone]: q,
|
|
1197
|
+
[L.StreamReady]: j
|
|
1190
1198
|
};
|
|
1191
|
-
|
|
1192
|
-
var
|
|
1193
|
-
const { subject:
|
|
1194
|
-
(
|
|
1195
|
-
},
|
|
1196
|
-
var
|
|
1197
|
-
r("peerConnection.oniceconnectionstatechange => " +
|
|
1198
|
-
const
|
|
1199
|
-
|
|
1200
|
-
},
|
|
1201
|
-
var
|
|
1202
|
-
r("peerConnection.ontrack",
|
|
1203
|
-
}, await
|
|
1204
|
-
const
|
|
1205
|
-
return r("create answer OK"), await
|
|
1199
|
+
D.onmessage = (p) => {
|
|
1200
|
+
var G;
|
|
1201
|
+
const { subject: f, data: M } = d(p.data);
|
|
1202
|
+
(G = $[f]) == null || G.call($, f, M);
|
|
1203
|
+
}, l.oniceconnectionstatechange = () => {
|
|
1204
|
+
var f;
|
|
1205
|
+
r("peerConnection.oniceconnectionstatechange => " + l.iceConnectionState);
|
|
1206
|
+
const p = Ne(l.iceConnectionState);
|
|
1207
|
+
p !== I.Connected && ((f = n.onConnectionStateChange) == null || f.call(n, p));
|
|
1208
|
+
}, l.ontrack = (p) => {
|
|
1209
|
+
var f;
|
|
1210
|
+
r("peerConnection.ontrack", p), r("CALLBACK: onSrcObjectReady"), (f = n.onSrcObjectReady) == null || f.call(n, p.streams[0]);
|
|
1211
|
+
}, await l.setRemoteDescription(W), r("set remote description OK");
|
|
1212
|
+
const Y = await l.createAnswer();
|
|
1213
|
+
return r("create answer OK"), await l.setLocalDescription(Y), r("set local description OK"), await x(S, Y, O, a), r("start connection OK"), {
|
|
1206
1214
|
/**
|
|
1207
1215
|
* Method to send request to server to get clip or talk depend on you payload
|
|
1208
1216
|
* @param payload
|
|
1209
1217
|
*/
|
|
1210
|
-
speak(
|
|
1211
|
-
return
|
|
1218
|
+
speak(p) {
|
|
1219
|
+
return b(S, O, p);
|
|
1212
1220
|
},
|
|
1213
1221
|
/**
|
|
1214
1222
|
* Method to close RTC connection
|
|
1215
1223
|
*/
|
|
1216
1224
|
async disconnect() {
|
|
1217
|
-
var
|
|
1225
|
+
var p;
|
|
1218
1226
|
if (S) {
|
|
1219
|
-
const
|
|
1220
|
-
if (
|
|
1221
|
-
if (
|
|
1222
|
-
|
|
1227
|
+
const f = Ne(l.iceConnectionState);
|
|
1228
|
+
if (l) {
|
|
1229
|
+
if (f === I.New) {
|
|
1230
|
+
N.stop();
|
|
1223
1231
|
return;
|
|
1224
1232
|
}
|
|
1225
|
-
|
|
1233
|
+
l.close(), l.oniceconnectionstatechange = null, l.onnegotiationneeded = null, l.onicecandidate = null, l.ontrack = null;
|
|
1226
1234
|
}
|
|
1227
1235
|
try {
|
|
1228
|
-
|
|
1236
|
+
f === I.Connected && await C(S, O).catch((M) => {
|
|
1229
1237
|
});
|
|
1230
|
-
} catch (
|
|
1231
|
-
r("Error on close stream connection",
|
|
1238
|
+
} catch (M) {
|
|
1239
|
+
r("Error on close stream connection", M);
|
|
1232
1240
|
}
|
|
1233
|
-
(
|
|
1241
|
+
(p = n.onAgentActivityStateChange) == null || p.call(n, V.Idle), N.stop();
|
|
1234
1242
|
}
|
|
1235
1243
|
},
|
|
1236
1244
|
/**
|
|
1237
1245
|
* Method to send data channel messages to the server
|
|
1238
1246
|
*/
|
|
1239
|
-
sendDataChannelMessage(
|
|
1240
|
-
var
|
|
1241
|
-
if (!
|
|
1242
|
-
r("Data channel is not ready for sending messages"), (
|
|
1247
|
+
sendDataChannelMessage(p) {
|
|
1248
|
+
var f, M;
|
|
1249
|
+
if (!h || D.readyState !== "open") {
|
|
1250
|
+
r("Data channel is not ready for sending messages"), (f = n.onError) == null || f.call(n, new Error("Data channel is not ready for sending messages"), {
|
|
1243
1251
|
streamId: S
|
|
1244
1252
|
});
|
|
1245
1253
|
return;
|
|
1246
1254
|
}
|
|
1247
1255
|
try {
|
|
1248
|
-
|
|
1249
|
-
} catch (
|
|
1250
|
-
r("Error sending data channel message",
|
|
1256
|
+
D.send(p);
|
|
1257
|
+
} catch (G) {
|
|
1258
|
+
r("Error sending data channel message", G), (M = n.onError) == null || M.call(n, G, { streamId: S });
|
|
1251
1259
|
}
|
|
1252
1260
|
},
|
|
1253
1261
|
/**
|
|
1254
1262
|
* Session identifier information, should be returned in the body of all streaming requests
|
|
1255
1263
|
*/
|
|
1256
|
-
sessionId:
|
|
1264
|
+
sessionId: O,
|
|
1257
1265
|
/**
|
|
1258
1266
|
* Id of current RTC stream
|
|
1259
1267
|
*/
|
|
1260
1268
|
streamId: S,
|
|
1261
|
-
streamType:
|
|
1269
|
+
streamType: k,
|
|
1262
1270
|
interruptAvailable: ee ?? !1,
|
|
1263
|
-
triggersAvailable:
|
|
1271
|
+
triggersAvailable: te ?? !1
|
|
1264
1272
|
};
|
|
1265
1273
|
}
|
|
1266
|
-
var
|
|
1267
|
-
async function
|
|
1274
|
+
var Ae = /* @__PURE__ */ ((e) => (e.V1 = "v1", e.V2 = "v2", e))(Ae || {});
|
|
1275
|
+
async function an(e, t, i, n) {
|
|
1268
1276
|
const s = e.id;
|
|
1269
1277
|
switch (t.version) {
|
|
1270
1278
|
case "v1": {
|
|
1271
1279
|
const { version: o, ...c } = t;
|
|
1272
|
-
return
|
|
1280
|
+
return rn(s, c, i, n);
|
|
1273
1281
|
}
|
|
1274
1282
|
case "v2": {
|
|
1275
1283
|
const { version: o, ...c } = t;
|
|
1276
1284
|
switch (c.transport_provider) {
|
|
1277
|
-
case
|
|
1285
|
+
case ke.Livekit:
|
|
1278
1286
|
const { createLiveKitStreamingManager: a } = await Promise.resolve().then(() => Nt);
|
|
1279
1287
|
return a(s, c, i);
|
|
1280
1288
|
default:
|
|
@@ -1285,13 +1293,13 @@ async function rn(e, t, i, n) {
|
|
|
1285
1293
|
throw new Error(`Invalid stream version: ${t.version}`);
|
|
1286
1294
|
}
|
|
1287
1295
|
}
|
|
1288
|
-
const
|
|
1289
|
-
function
|
|
1296
|
+
const on = "cht";
|
|
1297
|
+
function sn() {
|
|
1290
1298
|
return {
|
|
1291
|
-
transport_provider:
|
|
1299
|
+
transport_provider: ke.Livekit
|
|
1292
1300
|
};
|
|
1293
1301
|
}
|
|
1294
|
-
function
|
|
1302
|
+
function cn(e) {
|
|
1295
1303
|
var s, o;
|
|
1296
1304
|
const { streamOptions: t } = e ?? {}, i = ((s = e == null ? void 0 : e.mixpanelAdditionalProperties) == null ? void 0 : s.plan) !== void 0 ? {
|
|
1297
1305
|
plan: (o = e.mixpanelAdditionalProperties) == null ? void 0 : o.plan
|
|
@@ -1304,14 +1312,14 @@ function sn(e) {
|
|
|
1304
1312
|
fluent: t == null ? void 0 : t.fluent
|
|
1305
1313
|
}, ...i && { end_user_data: i } };
|
|
1306
1314
|
}
|
|
1307
|
-
function
|
|
1308
|
-
return
|
|
1309
|
-
}
|
|
1310
|
-
function dn(e, t, i, n, s) {
|
|
1311
|
-
s === ae.Fluent ? un(e, t, i, n, s) : fn(e, t, i, n, s);
|
|
1315
|
+
function dn(e, t) {
|
|
1316
|
+
return Pe(e.presenter.type) ? { version: Ae.V2, ...sn() } : { version: Ae.V1, ...cn(t) };
|
|
1312
1317
|
}
|
|
1313
1318
|
function un(e, t, i, n, s) {
|
|
1314
|
-
|
|
1319
|
+
s === ie.Fluent ? ln(e, t, i, n, s) : fn(e, t, i, n, s);
|
|
1320
|
+
}
|
|
1321
|
+
function ln(e, t, i, n, s) {
|
|
1322
|
+
e === E.Start ? n.track("stream-session", { event: "start", "stream-type": s }) : e === E.Stop && n.track("stream-session", {
|
|
1315
1323
|
event: "stop",
|
|
1316
1324
|
is_greenscreen: t.presenter.type === "clip" && t.presenter.is_greenscreen,
|
|
1317
1325
|
background: t.presenter.type === "clip" && t.presenter.background,
|
|
@@ -1319,13 +1327,13 @@ function un(e, t, i, n, s) {
|
|
|
1319
1327
|
...i
|
|
1320
1328
|
});
|
|
1321
1329
|
}
|
|
1322
|
-
function
|
|
1323
|
-
|
|
1330
|
+
function mn(e, t, i, n) {
|
|
1331
|
+
ne.get() <= 0 || (e === E.Start ? i.linkTrack(
|
|
1324
1332
|
"agent-video",
|
|
1325
|
-
{ event: "start", latency:
|
|
1333
|
+
{ event: "start", latency: ne.get(!0), "stream-type": n },
|
|
1326
1334
|
"start",
|
|
1327
|
-
[
|
|
1328
|
-
) : e ===
|
|
1335
|
+
[L.StreamVideoCreated]
|
|
1336
|
+
) : e === E.Stop && i.linkTrack(
|
|
1329
1337
|
"agent-video",
|
|
1330
1338
|
{
|
|
1331
1339
|
event: "stop",
|
|
@@ -1334,16 +1342,16 @@ function ln(e, t, i, n) {
|
|
|
1334
1342
|
"stream-type": n
|
|
1335
1343
|
},
|
|
1336
1344
|
"done",
|
|
1337
|
-
[
|
|
1345
|
+
[L.StreamVideoDone]
|
|
1338
1346
|
));
|
|
1339
1347
|
}
|
|
1340
1348
|
function fn(e, t, i, n, s) {
|
|
1341
|
-
|
|
1349
|
+
ne.get() <= 0 || (e === E.Start ? n.linkTrack(
|
|
1342
1350
|
"agent-video",
|
|
1343
|
-
{ event: "start", latency:
|
|
1351
|
+
{ event: "start", latency: ne.get(!0), "stream-type": s },
|
|
1344
1352
|
"start",
|
|
1345
|
-
[
|
|
1346
|
-
) : e ===
|
|
1353
|
+
[L.StreamVideoCreated]
|
|
1354
|
+
) : e === E.Stop && n.linkTrack(
|
|
1347
1355
|
"agent-video",
|
|
1348
1356
|
{
|
|
1349
1357
|
event: "stop",
|
|
@@ -1353,17 +1361,17 @@ function fn(e, t, i, n, s) {
|
|
|
1353
1361
|
...i
|
|
1354
1362
|
},
|
|
1355
1363
|
"done",
|
|
1356
|
-
[
|
|
1364
|
+
[L.StreamVideoDone]
|
|
1357
1365
|
));
|
|
1358
1366
|
}
|
|
1359
|
-
function
|
|
1360
|
-
return
|
|
1367
|
+
function Ue(e, t, i, n) {
|
|
1368
|
+
return ne.reset(), ze.update(), new Promise(async (s, o) => {
|
|
1361
1369
|
try {
|
|
1362
1370
|
let c, a = !1;
|
|
1363
|
-
const r =
|
|
1371
|
+
const r = dn(e, t);
|
|
1364
1372
|
i.enrich({
|
|
1365
1373
|
"stream-version": r.version.toString()
|
|
1366
|
-
}), c = await
|
|
1374
|
+
}), c = await an(
|
|
1367
1375
|
e,
|
|
1368
1376
|
r,
|
|
1369
1377
|
{
|
|
@@ -1372,30 +1380,30 @@ function Je(e, t, i, n) {
|
|
|
1372
1380
|
callbacks: {
|
|
1373
1381
|
...t.callbacks,
|
|
1374
1382
|
onConnectionStateChange: (d) => {
|
|
1375
|
-
var
|
|
1376
|
-
(
|
|
1383
|
+
var h, w;
|
|
1384
|
+
(w = (h = t.callbacks).onConnectionStateChange) == null || w.call(h, d), d === I.Connected && (c ? s(c) : a = !0);
|
|
1377
1385
|
},
|
|
1378
|
-
onVideoStateChange: (d,
|
|
1379
|
-
var
|
|
1380
|
-
(u = (
|
|
1386
|
+
onVideoStateChange: (d, h) => {
|
|
1387
|
+
var w, u;
|
|
1388
|
+
(u = (w = t.callbacks).onVideoStateChange) == null || u.call(w, d), un(
|
|
1381
1389
|
d,
|
|
1382
1390
|
e,
|
|
1383
|
-
|
|
1391
|
+
h,
|
|
1384
1392
|
i,
|
|
1385
1393
|
c.streamType
|
|
1386
1394
|
);
|
|
1387
1395
|
},
|
|
1388
1396
|
onAgentActivityStateChange: (d) => {
|
|
1389
|
-
var
|
|
1390
|
-
(
|
|
1391
|
-
d ===
|
|
1397
|
+
var h, w;
|
|
1398
|
+
(w = (h = t.callbacks).onAgentActivityStateChange) == null || w.call(h, d), d === V.Talking ? Te.update() : Te.reset(), mn(
|
|
1399
|
+
d === V.Talking ? E.Start : E.Stop,
|
|
1392
1400
|
e,
|
|
1393
1401
|
i,
|
|
1394
1402
|
c.streamType
|
|
1395
1403
|
);
|
|
1396
1404
|
},
|
|
1397
1405
|
onStreamReady: () => {
|
|
1398
|
-
const d =
|
|
1406
|
+
const d = ze.get(!0);
|
|
1399
1407
|
i.track("agent-chat", { event: "ready", latency: d });
|
|
1400
1408
|
}
|
|
1401
1409
|
}
|
|
@@ -1407,99 +1415,101 @@ function Je(e, t, i, n) {
|
|
|
1407
1415
|
}
|
|
1408
1416
|
});
|
|
1409
1417
|
}
|
|
1410
|
-
async function
|
|
1411
|
-
var
|
|
1418
|
+
async function gn(e, t, i, n, s) {
|
|
1419
|
+
var h, w, u, v;
|
|
1412
1420
|
const o = async () => {
|
|
1413
|
-
if (
|
|
1414
|
-
const
|
|
1421
|
+
if (Pe(e.presenter.type)) {
|
|
1422
|
+
const x = await Ue(e, t, n), b = `${on}_${x.sessionId}`, C = (/* @__PURE__ */ new Date()).toISOString();
|
|
1415
1423
|
return { chatResult: {
|
|
1416
|
-
chatMode:
|
|
1424
|
+
chatMode: B.Functional,
|
|
1417
1425
|
chat: {
|
|
1418
|
-
id:
|
|
1426
|
+
id: b,
|
|
1419
1427
|
agent_id: e.id,
|
|
1420
1428
|
owner_id: e.owner_id ?? "",
|
|
1421
1429
|
created: C,
|
|
1422
1430
|
modified: C,
|
|
1423
1431
|
agent_id__created_at: C,
|
|
1424
1432
|
agent_id__modified_at: C,
|
|
1425
|
-
chat_mode:
|
|
1433
|
+
chat_mode: B.Functional,
|
|
1426
1434
|
messages: []
|
|
1427
1435
|
}
|
|
1428
|
-
}, streamingManager:
|
|
1436
|
+
}, streamingManager: x };
|
|
1429
1437
|
} else {
|
|
1430
|
-
const
|
|
1438
|
+
const x = new AbortController(), b = x.signal;
|
|
1431
1439
|
let C;
|
|
1432
1440
|
try {
|
|
1433
|
-
const
|
|
1441
|
+
const R = Xe(
|
|
1434
1442
|
e,
|
|
1435
1443
|
i,
|
|
1436
1444
|
n,
|
|
1437
1445
|
t.mode,
|
|
1438
1446
|
t.persistentChat,
|
|
1439
1447
|
s
|
|
1440
|
-
),
|
|
1441
|
-
return { chatResult: S, streamingManager:
|
|
1442
|
-
} catch (
|
|
1443
|
-
throw
|
|
1444
|
-
}),
|
|
1448
|
+
), F = Ue(e, t, n, b).then((J) => (C = J, J)), [S, W] = await Promise.all([R, F]);
|
|
1449
|
+
return { chatResult: S, streamingManager: W };
|
|
1450
|
+
} catch (R) {
|
|
1451
|
+
throw x.abort(), C && await C.disconnect().catch(() => {
|
|
1452
|
+
}), R;
|
|
1445
1453
|
}
|
|
1446
1454
|
}
|
|
1447
1455
|
}, { chatResult: c, streamingManager: a } = await o(), { chat: r, chatMode: d } = c;
|
|
1448
|
-
return d && t.mode !== void 0 && d !== t.mode && (t.mode = d, (
|
|
1456
|
+
return d && t.mode !== void 0 && d !== t.mode && (t.mode = d, (w = (h = t.callbacks).onModeChange) == null || w.call(h, d), d !== B.Functional) ? ((v = (u = t.callbacks).onError) == null || v.call(u, new nt(d)), a == null || a.disconnect(), { chat: r }) : { chat: r, streamingManager: a };
|
|
1449
1457
|
}
|
|
1450
|
-
async function
|
|
1451
|
-
var
|
|
1458
|
+
async function wn(e, t) {
|
|
1459
|
+
var O, z, ee, te;
|
|
1452
1460
|
let i = !0, n = null;
|
|
1453
|
-
const s = t.mixpanelKey ||
|
|
1461
|
+
const s = t.mixpanelKey || pt, o = t.wsURL || ht, c = t.baseURL || pe, a = t.mode || B.Functional, r = {
|
|
1454
1462
|
messages: [],
|
|
1455
1463
|
chatMode: a
|
|
1456
|
-
}, d =
|
|
1464
|
+
}, d = Tt({
|
|
1457
1465
|
token: s,
|
|
1458
1466
|
agentId: e,
|
|
1459
1467
|
isEnabled: t.enableAnalitics,
|
|
1460
1468
|
externalId: t.externalId,
|
|
1461
1469
|
mixpanelAdditionalProperties: t.mixpanelAdditionalProperties
|
|
1462
|
-
}),
|
|
1463
|
-
|
|
1464
|
-
d.track("agent-sdk", { event: "init" },
|
|
1470
|
+
}), h = Date.now();
|
|
1471
|
+
Fe(() => {
|
|
1472
|
+
d.track("agent-sdk", { event: "init" }, h);
|
|
1465
1473
|
});
|
|
1466
|
-
const
|
|
1467
|
-
|
|
1468
|
-
const
|
|
1474
|
+
const w = kt(t.auth, c, t.callbacks.onError, t.externalId), u = await w.getById(e);
|
|
1475
|
+
t.debug = t.debug || ((O = u == null ? void 0 : u.advanced_settings) == null ? void 0 : O.ui_debug_mode);
|
|
1476
|
+
const v = Pe(u.presenter.type);
|
|
1477
|
+
d.enrich(Dt(u));
|
|
1478
|
+
const { onMessage: x, clearQueue: b } = Yt(
|
|
1469
1479
|
d,
|
|
1470
1480
|
r,
|
|
1471
1481
|
t,
|
|
1472
1482
|
u,
|
|
1473
1483
|
() => {
|
|
1474
|
-
var
|
|
1475
|
-
return (
|
|
1484
|
+
var l;
|
|
1485
|
+
return (l = r.socketManager) == null ? void 0 : l.disconnect();
|
|
1476
1486
|
}
|
|
1477
1487
|
);
|
|
1478
|
-
r.messages =
|
|
1479
|
-
const C = (
|
|
1480
|
-
n =
|
|
1481
|
-
},
|
|
1482
|
-
var
|
|
1483
|
-
const
|
|
1488
|
+
r.messages = At(t.initialMessages), (ee = (z = t.callbacks).onNewMessage) == null || ee.call(z, [...r.messages], "answer");
|
|
1489
|
+
const C = (l) => {
|
|
1490
|
+
n = l;
|
|
1491
|
+
}, R = ({ type: l }) => {
|
|
1492
|
+
var k, K, P;
|
|
1493
|
+
const D = r.messages[r.messages.length - 1];
|
|
1484
1494
|
d.track("agent-video-interrupt", {
|
|
1485
|
-
type:
|
|
1486
|
-
video_duration_to_interrupt:
|
|
1487
|
-
message_duration_to_interrupt:
|
|
1488
|
-
}),
|
|
1489
|
-
},
|
|
1490
|
-
|
|
1491
|
-
d.track("agent-sdk", { event: "loaded", ...
|
|
1495
|
+
type: l || "click",
|
|
1496
|
+
video_duration_to_interrupt: Te.get(!0),
|
|
1497
|
+
message_duration_to_interrupt: ne.get(!0)
|
|
1498
|
+
}), D.interrupted = !0, (K = (k = t.callbacks).onNewMessage) == null || K.call(k, [...r.messages], "answer"), v ? Vt(r.streamingManager) : (Jt(r.streamingManager, (P = r.streamingManager) == null ? void 0 : P.streamType, n), Ut(r.streamingManager, n));
|
|
1499
|
+
}, F = Date.now();
|
|
1500
|
+
Fe(() => {
|
|
1501
|
+
d.track("agent-sdk", { event: "loaded", ...Rt(u) }, F);
|
|
1492
1502
|
});
|
|
1493
|
-
async function S(
|
|
1494
|
-
var
|
|
1495
|
-
(
|
|
1496
|
-
const
|
|
1503
|
+
async function S(l) {
|
|
1504
|
+
var N, H, q, j, $, Y, oe;
|
|
1505
|
+
(H = (N = t.callbacks).onConnectionStateChange) == null || H.call(N, I.Connecting), ne.reset(), l && !i && (delete r.chat, (j = (q = t.callbacks).onNewMessage) == null || j.call(q, [...r.messages], "answer"));
|
|
1506
|
+
const D = a === B.DirectPlayback || v ? Promise.resolve(void 0) : Ht(
|
|
1497
1507
|
t.auth,
|
|
1498
1508
|
o,
|
|
1499
|
-
{ onMessage:
|
|
1509
|
+
{ onMessage: x, onError: t.callbacks.onError },
|
|
1500
1510
|
t.externalId
|
|
1501
|
-
),
|
|
1502
|
-
() =>
|
|
1511
|
+
), k = Ee(
|
|
1512
|
+
() => gn(
|
|
1503
1513
|
u,
|
|
1504
1514
|
{
|
|
1505
1515
|
...t,
|
|
@@ -1507,11 +1517,11 @@ async function pn(e, t) {
|
|
|
1507
1517
|
callbacks: {
|
|
1508
1518
|
...t.callbacks,
|
|
1509
1519
|
onVideoIdChange: C,
|
|
1510
|
-
onMessage:
|
|
1511
|
-
onInterruptDetected:
|
|
1520
|
+
onMessage: x,
|
|
1521
|
+
onInterruptDetected: R
|
|
1512
1522
|
}
|
|
1513
1523
|
},
|
|
1514
|
-
|
|
1524
|
+
w,
|
|
1515
1525
|
d,
|
|
1516
1526
|
r.chat
|
|
1517
1527
|
),
|
|
@@ -1519,44 +1529,44 @@ async function pn(e, t) {
|
|
|
1519
1529
|
limit: 3,
|
|
1520
1530
|
timeout: ft,
|
|
1521
1531
|
timeoutErrorMessage: "Timeout initializing the stream",
|
|
1522
|
-
shouldRetryFn: (
|
|
1532
|
+
shouldRetryFn: (p) => (p == null ? void 0 : p.message) !== "Could not connect" && p.status !== 429 && (p == null ? void 0 : p.message) !== "InsufficientCreditsError",
|
|
1523
1533
|
delayMs: 1e3
|
|
1524
1534
|
}
|
|
1525
|
-
).catch((
|
|
1526
|
-
var
|
|
1527
|
-
throw
|
|
1528
|
-
}), [
|
|
1529
|
-
|
|
1530
|
-
chatId:
|
|
1531
|
-
streamId:
|
|
1535
|
+
).catch((p) => {
|
|
1536
|
+
var f, M;
|
|
1537
|
+
throw J(B.Maintenance), (M = (f = t.callbacks).onConnectionStateChange) == null || M.call(f, I.Fail), p;
|
|
1538
|
+
}), [K, { streamingManager: P, chat: T }] = await Promise.all([D, k]);
|
|
1539
|
+
T && T.id !== (($ = r.chat) == null ? void 0 : $.id) && ((oe = (Y = t.callbacks).onNewChat) == null || oe.call(Y, T.id)), r.streamingManager = P, r.socketManager = K, r.chat = T, i = !1, d.enrich({
|
|
1540
|
+
chatId: T == null ? void 0 : T.id,
|
|
1541
|
+
streamId: P == null ? void 0 : P.streamId,
|
|
1532
1542
|
mode: r.chatMode
|
|
1533
|
-
}),
|
|
1543
|
+
}), J((T == null ? void 0 : T.chat_mode) ?? a);
|
|
1534
1544
|
}
|
|
1535
|
-
async function
|
|
1536
|
-
var
|
|
1537
|
-
(
|
|
1545
|
+
async function W() {
|
|
1546
|
+
var l, D, k, K;
|
|
1547
|
+
(l = r.socketManager) == null || l.disconnect(), await ((D = r.streamingManager) == null ? void 0 : D.disconnect()), delete r.streamingManager, delete r.socketManager, (K = (k = t.callbacks).onConnectionStateChange) == null || K.call(k, I.Disconnected);
|
|
1538
1548
|
}
|
|
1539
|
-
async function
|
|
1540
|
-
var
|
|
1541
|
-
|
|
1549
|
+
async function J(l) {
|
|
1550
|
+
var D, k;
|
|
1551
|
+
l !== r.chatMode && (d.track("agent-mode-change", { mode: l }), r.chatMode = l, r.chatMode !== B.Functional && await W(), (k = (D = t.callbacks).onModeChange) == null || k.call(D, l));
|
|
1542
1552
|
}
|
|
1543
1553
|
return {
|
|
1544
1554
|
agent: u,
|
|
1545
1555
|
getStreamType: () => {
|
|
1546
|
-
var
|
|
1547
|
-
return (
|
|
1556
|
+
var l;
|
|
1557
|
+
return (l = r.streamingManager) == null ? void 0 : l.streamType;
|
|
1548
1558
|
},
|
|
1549
1559
|
getIsInterruptAvailable: () => {
|
|
1550
|
-
var
|
|
1551
|
-
return ((
|
|
1560
|
+
var l;
|
|
1561
|
+
return ((l = r.streamingManager) == null ? void 0 : l.interruptAvailable) ?? !1;
|
|
1552
1562
|
},
|
|
1553
1563
|
getIsTriggersAvailable: () => {
|
|
1554
|
-
var
|
|
1555
|
-
return ((
|
|
1564
|
+
var l;
|
|
1565
|
+
return ((l = r.streamingManager) == null ? void 0 : l.triggersAvailable) ?? !1;
|
|
1556
1566
|
},
|
|
1557
|
-
starterMessages: ((
|
|
1558
|
-
getSTTToken: () =>
|
|
1559
|
-
changeMode:
|
|
1567
|
+
starterMessages: ((te = u.knowledge) == null ? void 0 : te.starter_message) || [],
|
|
1568
|
+
getSTTToken: () => w.getSTTToken(u.id),
|
|
1569
|
+
changeMode: J,
|
|
1560
1570
|
enrichAnalytics: d.enrich,
|
|
1561
1571
|
async connect() {
|
|
1562
1572
|
await S(!0), d.track("agent-chat", {
|
|
@@ -1565,198 +1575,198 @@ async function pn(e, t) {
|
|
|
1565
1575
|
});
|
|
1566
1576
|
},
|
|
1567
1577
|
async reconnect() {
|
|
1568
|
-
const
|
|
1569
|
-
if (
|
|
1578
|
+
const l = r.streamingManager;
|
|
1579
|
+
if (v && (l != null && l.reconnect)) {
|
|
1570
1580
|
try {
|
|
1571
|
-
await
|
|
1581
|
+
await l.reconnect(), d.track("agent-chat", {
|
|
1572
1582
|
event: "reconnect",
|
|
1573
1583
|
mode: r.chatMode
|
|
1574
1584
|
});
|
|
1575
1585
|
} catch {
|
|
1576
|
-
await
|
|
1586
|
+
await W(), await S(!1);
|
|
1577
1587
|
}
|
|
1578
1588
|
return;
|
|
1579
1589
|
}
|
|
1580
|
-
await
|
|
1590
|
+
await W(), await S(!1), d.track("agent-chat", {
|
|
1581
1591
|
event: "reconnect",
|
|
1582
1592
|
mode: r.chatMode
|
|
1583
1593
|
});
|
|
1584
1594
|
},
|
|
1585
1595
|
async disconnect() {
|
|
1586
|
-
await
|
|
1596
|
+
await W(), d.track("agent-chat", {
|
|
1587
1597
|
event: "disconnect",
|
|
1588
1598
|
mode: r.chatMode
|
|
1589
1599
|
});
|
|
1590
1600
|
},
|
|
1591
|
-
async publishMicrophoneStream(
|
|
1592
|
-
var
|
|
1593
|
-
if (!((
|
|
1601
|
+
async publishMicrophoneStream(l) {
|
|
1602
|
+
var D;
|
|
1603
|
+
if (!((D = r.streamingManager) != null && D.publishMicrophoneStream))
|
|
1594
1604
|
throw new Error("publishMicrophoneStream is not available for this streaming manager");
|
|
1595
|
-
return r.streamingManager.publishMicrophoneStream(
|
|
1605
|
+
return r.streamingManager.publishMicrophoneStream(l);
|
|
1596
1606
|
},
|
|
1597
1607
|
async unpublishMicrophoneStream() {
|
|
1598
|
-
var
|
|
1599
|
-
if (!((
|
|
1608
|
+
var l;
|
|
1609
|
+
if (!((l = r.streamingManager) != null && l.unpublishMicrophoneStream))
|
|
1600
1610
|
throw new Error("unpublishMicrophoneStream is not available for this streaming manager");
|
|
1601
1611
|
return r.streamingManager.unpublishMicrophoneStream();
|
|
1602
1612
|
},
|
|
1603
|
-
async chat(
|
|
1604
|
-
var
|
|
1605
|
-
const
|
|
1606
|
-
if (
|
|
1607
|
-
throw new
|
|
1608
|
-
if (
|
|
1609
|
-
throw new
|
|
1610
|
-
if (
|
|
1611
|
-
throw new
|
|
1612
|
-
if (r.chatMode ===
|
|
1613
|
-
throw new
|
|
1614
|
-
if (![
|
|
1613
|
+
async chat(l) {
|
|
1614
|
+
var P, T, N, H, q;
|
|
1615
|
+
const D = () => {
|
|
1616
|
+
if (He(a))
|
|
1617
|
+
throw new le(`${a} is enabled, chat is disabled`);
|
|
1618
|
+
if (l.length >= 800)
|
|
1619
|
+
throw new le("Message cannot be more than 800 characters");
|
|
1620
|
+
if (l.length === 0)
|
|
1621
|
+
throw new le("Message cannot be empty");
|
|
1622
|
+
if (r.chatMode === B.Maintenance)
|
|
1623
|
+
throw new le("Chat is in maintenance mode");
|
|
1624
|
+
if (![B.TextOnly, B.Playground].includes(r.chatMode)) {
|
|
1615
1625
|
if (!r.streamingManager)
|
|
1616
|
-
throw new
|
|
1626
|
+
throw new le("Streaming manager is not initialized");
|
|
1617
1627
|
if (!r.chat)
|
|
1618
|
-
throw new
|
|
1628
|
+
throw new le("Chat is not initialized");
|
|
1619
1629
|
}
|
|
1620
|
-
},
|
|
1621
|
-
var
|
|
1630
|
+
}, k = async () => {
|
|
1631
|
+
var j, $;
|
|
1622
1632
|
if (!r.chat) {
|
|
1623
|
-
const
|
|
1633
|
+
const Y = await Xe(
|
|
1624
1634
|
u,
|
|
1625
|
-
|
|
1635
|
+
w,
|
|
1626
1636
|
d,
|
|
1627
1637
|
r.chatMode,
|
|
1628
1638
|
t.persistentChat
|
|
1629
1639
|
);
|
|
1630
|
-
if (!
|
|
1631
|
-
throw new
|
|
1632
|
-
r.chat =
|
|
1640
|
+
if (!Y.chat)
|
|
1641
|
+
throw new tt(r.chatMode, !!t.persistentChat);
|
|
1642
|
+
r.chat = Y.chat, ($ = (j = t.callbacks).onNewChat) == null || $.call(j, r.chat.id);
|
|
1633
1643
|
}
|
|
1634
1644
|
return r.chat.id;
|
|
1635
|
-
},
|
|
1636
|
-
const
|
|
1637
|
-
return
|
|
1638
|
-
var
|
|
1639
|
-
return await ((
|
|
1645
|
+
}, K = async (j, $) => {
|
|
1646
|
+
const Y = r.chatMode === B.Playground;
|
|
1647
|
+
return Ee(v && !Y ? async () => {
|
|
1648
|
+
var f, M;
|
|
1649
|
+
return await ((M = (f = r.streamingManager) == null ? void 0 : f.sendTextMessage) == null ? void 0 : M.call(f, l)), Promise.resolve({});
|
|
1640
1650
|
} : async () => {
|
|
1641
|
-
var
|
|
1642
|
-
return
|
|
1651
|
+
var f, M;
|
|
1652
|
+
return w.chat(
|
|
1643
1653
|
u.id,
|
|
1644
|
-
|
|
1654
|
+
$,
|
|
1645
1655
|
{
|
|
1646
1656
|
chatMode: r.chatMode,
|
|
1647
|
-
streamId: (
|
|
1648
|
-
sessionId: (
|
|
1649
|
-
messages:
|
|
1657
|
+
streamId: (f = r.streamingManager) == null ? void 0 : f.streamId,
|
|
1658
|
+
sessionId: (M = r.streamingManager) == null ? void 0 : M.sessionId,
|
|
1659
|
+
messages: j.map(({ matches: G, ...se }) => se)
|
|
1650
1660
|
},
|
|
1651
1661
|
{
|
|
1652
|
-
...
|
|
1662
|
+
...Qe(r.chatMode),
|
|
1653
1663
|
skipErrorHandler: !0
|
|
1654
1664
|
}
|
|
1655
1665
|
);
|
|
1656
1666
|
}, {
|
|
1657
1667
|
limit: 2,
|
|
1658
|
-
shouldRetryFn: (
|
|
1659
|
-
var
|
|
1660
|
-
const
|
|
1661
|
-
return !((
|
|
1668
|
+
shouldRetryFn: (f) => {
|
|
1669
|
+
var se, we, ye, de;
|
|
1670
|
+
const M = (se = f == null ? void 0 : f.message) == null ? void 0 : se.includes("missing or invalid session_id");
|
|
1671
|
+
return !((we = f == null ? void 0 : f.message) == null ? void 0 : we.includes("Stream Error")) && !M ? ((de = (ye = t.callbacks).onError) == null || de.call(ye, f), !1) : !0;
|
|
1662
1672
|
},
|
|
1663
1673
|
onRetry: async () => {
|
|
1664
|
-
await
|
|
1674
|
+
await W(), await S(!1);
|
|
1665
1675
|
}
|
|
1666
1676
|
});
|
|
1667
1677
|
};
|
|
1668
1678
|
try {
|
|
1669
|
-
|
|
1670
|
-
id:
|
|
1679
|
+
b(), D(), r.messages.push({
|
|
1680
|
+
id: me(),
|
|
1671
1681
|
role: "user",
|
|
1672
|
-
content:
|
|
1673
|
-
created_at: new Date(
|
|
1674
|
-
}), (
|
|
1675
|
-
const
|
|
1682
|
+
content: l,
|
|
1683
|
+
created_at: new Date(ne.update()).toISOString()
|
|
1684
|
+
}), (T = (P = t.callbacks).onNewMessage) == null || T.call(P, [...r.messages], "user");
|
|
1685
|
+
const j = await k(), $ = await K([...r.messages], j);
|
|
1676
1686
|
return r.messages.push({
|
|
1677
|
-
id:
|
|
1687
|
+
id: me(),
|
|
1678
1688
|
role: "assistant",
|
|
1679
|
-
content:
|
|
1689
|
+
content: $.result || "",
|
|
1680
1690
|
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
1681
|
-
context:
|
|
1682
|
-
matches:
|
|
1691
|
+
context: $.context,
|
|
1692
|
+
matches: $.matches
|
|
1683
1693
|
}), d.track("agent-message-send", {
|
|
1684
1694
|
event: "success",
|
|
1685
1695
|
messages: r.messages.length + 1
|
|
1686
|
-
}),
|
|
1687
|
-
latency:
|
|
1696
|
+
}), $.result && ((H = (N = t.callbacks).onNewMessage) == null || H.call(N, [...r.messages], "answer"), d.track("agent-message-received", {
|
|
1697
|
+
latency: ne.get(!0),
|
|
1688
1698
|
messages: r.messages.length
|
|
1689
|
-
})),
|
|
1690
|
-
} catch (
|
|
1691
|
-
throw ((
|
|
1699
|
+
})), $;
|
|
1700
|
+
} catch (j) {
|
|
1701
|
+
throw ((q = r.messages[r.messages.length - 1]) == null ? void 0 : q.role) === "assistant" && r.messages.pop(), d.track("agent-message-send", {
|
|
1692
1702
|
event: "error",
|
|
1693
1703
|
messages: r.messages.length
|
|
1694
|
-
}),
|
|
1704
|
+
}), j;
|
|
1695
1705
|
}
|
|
1696
1706
|
},
|
|
1697
|
-
rate(
|
|
1698
|
-
var
|
|
1699
|
-
const
|
|
1707
|
+
rate(l, D, k) {
|
|
1708
|
+
var T, N, H, q;
|
|
1709
|
+
const K = r.messages.find((j) => j.id === l);
|
|
1700
1710
|
if (r.chat) {
|
|
1701
|
-
if (!
|
|
1711
|
+
if (!K)
|
|
1702
1712
|
throw new Error("Message not found");
|
|
1703
1713
|
} else throw new Error("Chat is not initialized");
|
|
1704
|
-
const
|
|
1714
|
+
const P = ((T = K.matches) == null ? void 0 : T.map((j) => [j.document_id, j.id])) ?? [];
|
|
1705
1715
|
return d.track("agent-rate", {
|
|
1706
|
-
event:
|
|
1707
|
-
thumb:
|
|
1708
|
-
knowledge_id: ((
|
|
1709
|
-
matches:
|
|
1710
|
-
score:
|
|
1711
|
-
}),
|
|
1712
|
-
knowledge_id: ((
|
|
1713
|
-
message_id:
|
|
1714
|
-
matches:
|
|
1715
|
-
score:
|
|
1716
|
-
}) :
|
|
1717
|
-
knowledge_id: ((
|
|
1718
|
-
message_id:
|
|
1719
|
-
matches:
|
|
1720
|
-
score:
|
|
1716
|
+
event: k ? "update" : "create",
|
|
1717
|
+
thumb: D === 1 ? "up" : "down",
|
|
1718
|
+
knowledge_id: ((N = u.knowledge) == null ? void 0 : N.id) ?? "",
|
|
1719
|
+
matches: P,
|
|
1720
|
+
score: D
|
|
1721
|
+
}), k ? w.updateRating(u.id, r.chat.id, k, {
|
|
1722
|
+
knowledge_id: ((H = u.knowledge) == null ? void 0 : H.id) ?? "",
|
|
1723
|
+
message_id: l,
|
|
1724
|
+
matches: P,
|
|
1725
|
+
score: D
|
|
1726
|
+
}) : w.createRating(u.id, r.chat.id, {
|
|
1727
|
+
knowledge_id: ((q = u.knowledge) == null ? void 0 : q.id) ?? "",
|
|
1728
|
+
message_id: l,
|
|
1729
|
+
matches: P,
|
|
1730
|
+
score: D
|
|
1721
1731
|
});
|
|
1722
1732
|
},
|
|
1723
|
-
deleteRate(
|
|
1733
|
+
deleteRate(l) {
|
|
1724
1734
|
if (!r.chat)
|
|
1725
1735
|
throw new Error("Chat is not initialized");
|
|
1726
|
-
return d.track("agent-rate-delete", { type: "text" }),
|
|
1736
|
+
return d.track("agent-rate-delete", { type: "text" }), w.deleteRating(u.id, r.chat.id, l);
|
|
1727
1737
|
},
|
|
1728
|
-
async speak(
|
|
1729
|
-
var
|
|
1730
|
-
function
|
|
1731
|
-
if (typeof
|
|
1738
|
+
async speak(l) {
|
|
1739
|
+
var P, T, N;
|
|
1740
|
+
function D() {
|
|
1741
|
+
if (typeof l == "string") {
|
|
1732
1742
|
if (!u.presenter.voice)
|
|
1733
1743
|
throw new Error("Presenter voice is not initialized");
|
|
1734
1744
|
return {
|
|
1735
1745
|
type: "text",
|
|
1736
1746
|
provider: u.presenter.voice,
|
|
1737
|
-
input:
|
|
1747
|
+
input: l,
|
|
1738
1748
|
ssml: !1
|
|
1739
1749
|
};
|
|
1740
1750
|
}
|
|
1741
|
-
if (
|
|
1751
|
+
if (l.type === "text" && !l.provider) {
|
|
1742
1752
|
if (!u.presenter.voice)
|
|
1743
1753
|
throw new Error("Presenter voice is not initialized");
|
|
1744
1754
|
return {
|
|
1745
1755
|
type: "text",
|
|
1746
1756
|
provider: u.presenter.voice,
|
|
1747
|
-
input:
|
|
1748
|
-
ssml:
|
|
1757
|
+
input: l.input,
|
|
1758
|
+
ssml: l.ssml
|
|
1749
1759
|
};
|
|
1750
1760
|
}
|
|
1751
|
-
return
|
|
1761
|
+
return l;
|
|
1752
1762
|
}
|
|
1753
|
-
const
|
|
1754
|
-
if (d.track("agent-speak",
|
|
1755
|
-
id:
|
|
1763
|
+
const k = D();
|
|
1764
|
+
if (d.track("agent-speak", k), ne.update(), r.messages && k.type === "text" && (r.messages.push({
|
|
1765
|
+
id: me(),
|
|
1756
1766
|
role: "assistant",
|
|
1757
|
-
content:
|
|
1767
|
+
content: k.input,
|
|
1758
1768
|
created_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
1759
|
-
}), (
|
|
1769
|
+
}), (T = (P = t.callbacks).onNewMessage) == null || T.call(P, [...r.messages], "answer")), yt(r.chatMode))
|
|
1760
1770
|
return {
|
|
1761
1771
|
duration: 0,
|
|
1762
1772
|
video_id: "",
|
|
@@ -1765,37 +1775,37 @@ async function pn(e, t) {
|
|
|
1765
1775
|
if (!r.streamingManager)
|
|
1766
1776
|
throw new Error("Please connect to the agent first");
|
|
1767
1777
|
return r.streamingManager.speak({
|
|
1768
|
-
script:
|
|
1769
|
-
metadata: { chat_id: (
|
|
1778
|
+
script: k,
|
|
1779
|
+
metadata: { chat_id: (N = r.chat) == null ? void 0 : N.id, agent_id: u.id }
|
|
1770
1780
|
});
|
|
1771
1781
|
},
|
|
1772
|
-
interrupt:
|
|
1782
|
+
interrupt: R
|
|
1773
1783
|
};
|
|
1774
1784
|
}
|
|
1775
1785
|
export {
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1786
|
+
V as AgentActivityState,
|
|
1787
|
+
ot as AgentStatus,
|
|
1788
|
+
tt as ChatCreationFailed,
|
|
1789
|
+
B as ChatMode,
|
|
1790
|
+
nt as ChatModeDowngraded,
|
|
1791
|
+
X as ChatProgress,
|
|
1792
|
+
I as ConnectionState,
|
|
1793
|
+
re as ConnectivityState,
|
|
1794
|
+
ut as DocumentType,
|
|
1795
|
+
dt as KnowledgeType,
|
|
1796
|
+
at as PlanGroup,
|
|
1797
|
+
lt as Providers,
|
|
1798
|
+
st as RateState,
|
|
1799
|
+
L as StreamEvents,
|
|
1800
|
+
ie as StreamType,
|
|
1801
|
+
E as StreamingState,
|
|
1802
|
+
ct as Subject,
|
|
1803
|
+
ke as TransportProvider,
|
|
1804
|
+
it as UserPlan,
|
|
1805
|
+
le as ValidationError,
|
|
1806
|
+
Ve as VideoType,
|
|
1807
|
+
mt as VoiceAccess,
|
|
1808
|
+
rt as WsError,
|
|
1809
|
+
wn as createAgentManager,
|
|
1810
|
+
pn as mapVideoType
|
|
1801
1811
|
};
|