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