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