@d-id/client-sdk 1.0.19-beta.110 → 1.0.19-beta.111
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 +21 -21
- package/dist/index.umd.cjs +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var G = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(G || {}), ee = /* @__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))(ee || {}), te = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(te || {}), k = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e))(k || {}),
|
|
1
|
+
var G = /* @__PURE__ */ ((e) => (e.TRIAL = "trial", e.BASIC = "basic", e.ENTERPRISE = "enterprise", e.LITE = "lite", e.ADVANCED = "advanced", e))(G || {}), ee = /* @__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))(ee || {}), te = /* @__PURE__ */ ((e) => (e.Unrated = "Unrated", e.Positive = "Positive", e.Negative = "Negative", e))(te || {}), k = /* @__PURE__ */ ((e) => (e.Functional = "Functional", e.TextOnly = "TextOnly", e.Maintenance = "Maintenance", e.Playground = "Playground", e.DirectPlayback = "DirectPlayback", e))(k || {}), b = /* @__PURE__ */ ((e) => (e.Embed = "embed", e.Query = "query", e.Partial = "partial", e.Answer = "answer", e.Complete = "done", e))(b || {}), ne = /* @__PURE__ */ ((e) => (e.KnowledgeProcessing = "knowledge/processing", e.KnowledgeIndexing = "knowledge/indexing", e.KnowledgeFailed = "knowledge/error", e.KnowledgeDone = "knowledge/done", e))(ne || {}), re = /* @__PURE__ */ ((e) => (e.Knowledge = "knowledge", e.Document = "document", e.Record = "record", e))(re || {}), ae = /* @__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))(ae || {}), v = /* @__PURE__ */ ((e) => (e.Clip = "clip", e.Talk = "talk", e))(v || {}), N = /* @__PURE__ */ ((e) => (e.Start = "START", e.Stop = "STOP", e))(N || {}), U = /* @__PURE__ */ ((e) => (e.ChatAnswer = "chat/answer", e.ChatPartial = "chat/partial", e.StreamDone = "stream/done", e.StreamStarted = "stream/started", e.StreamFailed = "stream/error", e.StreamReady = "stream/ready", e.StreamCreated = "stream/created", e.StreamVideoCreated = "stream-video/started", e.StreamVideoDone = "stream-video/done", e.StreamVideoError = "stream-video/error", e.StreamVideoRejected = "stream-video/rejected", e))(U || {}), I = /* @__PURE__ */ ((e) => (e.New = "new", e.Fail = "fail", e.Connected = "connected", e.Connecting = "connecting", e.Terminating = "terminating", e))(I || {}), ie = /* @__PURE__ */ ((e) => (e.Amazon = "amazon", e.Microsoft = "microsoft", e.Afflorithmics = "afflorithmics", e.Elevenlabs = "elevenlabs", e))(ie || {}), se = /* @__PURE__ */ ((e) => (e.Public = "public", e.Premium = "premium", e.Private = "private", e))(se || {});
|
|
2
2
|
const z = "https://api.d-id.com", oe = "wss://notifications.d-id.com", ce = "79f81a83a67430be2bc0fd61042b8faa", F = () => Math.random().toString(16).slice(2);
|
|
3
3
|
function J() {
|
|
4
4
|
let e = window.localStorage.getItem("did_external_key_id");
|
|
@@ -274,7 +274,7 @@ function ve(e, r) {
|
|
|
274
274
|
const i = ye();
|
|
275
275
|
return setInterval(async () => {
|
|
276
276
|
const o = await e.getStats();
|
|
277
|
-
i(o) ? (t = 0, n || (r == null || r(
|
|
277
|
+
i(o) ? (t = 0, n || (r == null || r(N.Start), n = !0)) : n && (t++, t >= a && (r == null || r(N.Stop), n = !1));
|
|
278
278
|
}, 100);
|
|
279
279
|
}
|
|
280
280
|
async function Ce(e, r, {
|
|
@@ -294,7 +294,7 @@ async function Ce(e, r, {
|
|
|
294
294
|
addIceCandidate: T
|
|
295
295
|
} = r.videoType === v.Clip ? he(t, i, e, a.onError) : fe(t, i, e, a.onError), {
|
|
296
296
|
id: S,
|
|
297
|
-
offer:
|
|
297
|
+
offer: O,
|
|
298
298
|
ice_servers: K,
|
|
299
299
|
session_id: R
|
|
300
300
|
} = await C(r), p = new pe({
|
|
@@ -328,7 +328,7 @@ async function Ce(e, r, {
|
|
|
328
328
|
const [w, f] = u.data.split(":");
|
|
329
329
|
w === U.StreamReady && (clearTimeout(o), (h = a.onConnectionStateChange) == null || h.call(a, I.Connected));
|
|
330
330
|
}
|
|
331
|
-
}, await p.setRemoteDescription(
|
|
331
|
+
}, await p.setRemoteDescription(O), A("set remote description OK");
|
|
332
332
|
const y = await p.createAnswer();
|
|
333
333
|
return A("create answer OK"), await p.setLocalDescription(y), A("set local description OK"), await g(S, y, R), A("start connection OK"), {
|
|
334
334
|
/**
|
|
@@ -346,7 +346,7 @@ async function Ce(e, r, {
|
|
|
346
346
|
if (S) {
|
|
347
347
|
if (p) {
|
|
348
348
|
if (W(p.iceConnectionState) === I.New) {
|
|
349
|
-
(u = a.onVideoStateChange) == null || u.call(a,
|
|
349
|
+
(u = a.onVideoStateChange) == null || u.call(a, N.Stop), clearInterval(m);
|
|
350
350
|
return;
|
|
351
351
|
}
|
|
352
352
|
p.close(), p.oniceconnectionstatechange = null, p.onnegotiationneeded = null, p.onicecandidate = null, p.ontrack = null;
|
|
@@ -357,7 +357,7 @@ async function Ce(e, r, {
|
|
|
357
357
|
} catch (f) {
|
|
358
358
|
A("Error on close stream connection", f);
|
|
359
359
|
}
|
|
360
|
-
(h = a.onConnectionStateChange) == null || h.call(a, I.New), (w = a.onVideoStateChange) == null || w.call(a,
|
|
360
|
+
(h = a.onConnectionStateChange) == null || h.call(a, I.New), (w = a.onVideoStateChange) == null || w.call(a, N.Stop), clearInterval(m);
|
|
361
361
|
}
|
|
362
362
|
},
|
|
363
363
|
/**
|
|
@@ -550,7 +550,7 @@ function Re(e, r, s, a, t) {
|
|
|
550
550
|
},
|
|
551
551
|
onVideoStateChange(g) {
|
|
552
552
|
var d, l;
|
|
553
|
-
(l = (d = r.callbacks).onVideoStateChange) == null || l.call(d, g), D > 0 && g ===
|
|
553
|
+
(l = (d = r.callbacks).onVideoStateChange) == null || l.call(d, g), D > 0 && g === N.Start && a.linkTrack("agent-video", {
|
|
554
554
|
event: "start",
|
|
555
555
|
latency: Date.now() - D
|
|
556
556
|
}, "start", [U.StreamVideoCreated]);
|
|
@@ -582,7 +582,7 @@ function Ee(e) {
|
|
|
582
582
|
return s;
|
|
583
583
|
}
|
|
584
584
|
function Ae(e, r, s, a, t) {
|
|
585
|
-
if (!(e ===
|
|
585
|
+
if (!(e === b.Partial || e === b.Answer))
|
|
586
586
|
return;
|
|
587
587
|
const n = a.messages[a.messages.length - 1];
|
|
588
588
|
if ((n == null ? void 0 : n.role) !== "assistant")
|
|
@@ -591,9 +591,9 @@ function Ae(e, r, s, a, t) {
|
|
|
591
591
|
content: i,
|
|
592
592
|
sequence: o
|
|
593
593
|
} = r;
|
|
594
|
-
e ===
|
|
594
|
+
e === b.Partial ? s[o] = i : s.answer = i;
|
|
595
595
|
const g = Ee(s);
|
|
596
|
-
n.content !== g && (n.content = g, t == null || t(a.messages, e));
|
|
596
|
+
(n.content !== g || e === b.Answer) && (n.content = g, t == null || t(a.messages, e));
|
|
597
597
|
}
|
|
598
598
|
async function $e(e, r) {
|
|
599
599
|
var K, R, p;
|
|
@@ -616,7 +616,7 @@ async function $e(e, r) {
|
|
|
616
616
|
onMessage: (c, m) => {
|
|
617
617
|
var y, u, h, w;
|
|
618
618
|
if ("content" in m)
|
|
619
|
-
Ae(c, m, s, t, r.callbacks.onNewMessage), c ===
|
|
619
|
+
Ae(c, m, s, t, r.callbacks.onNewMessage), c === b.Answer && l.track("agent-message-received", {
|
|
620
620
|
messages: t.messages.length,
|
|
621
621
|
mode: t.chatMode
|
|
622
622
|
});
|
|
@@ -643,18 +643,18 @@ async function $e(e, r) {
|
|
|
643
643
|
var f, E, _, M, $;
|
|
644
644
|
D = 0, c && !a && (delete t.chat, t.messages = q(d), (E = (f = r.callbacks).onNewMessage) == null || E.call(f, t.messages, "answer"));
|
|
645
645
|
const m = r.mode === k.DirectPlayback ? Promise.resolve(void 0) : me(r.auth, i, C), y = Re(d, r, g, l, t.chat).catch((P) => {
|
|
646
|
-
throw
|
|
646
|
+
throw O(k.Maintenance), P;
|
|
647
647
|
}), [u, {
|
|
648
648
|
streamingManager: h,
|
|
649
649
|
chat: w
|
|
650
650
|
}] = await Promise.all([m, y]);
|
|
651
|
-
w && w.id !== ((_ = t.chat) == null ? void 0 : _.id) && (($ = (M = r.callbacks).onNewChat) == null || $.call(M, w.id)), t.streamingManager = h, t.socketManager = u, t.chat = w, a = !1,
|
|
651
|
+
w && w.id !== ((_ = t.chat) == null ? void 0 : _.id) && (($ = (M = r.callbacks).onNewChat) == null || $.call(M, w.id)), t.streamingManager = h, t.socketManager = u, t.chat = w, a = !1, O((w == null ? void 0 : w.chat_mode) ?? r.mode ?? k.Functional);
|
|
652
652
|
}
|
|
653
653
|
async function S() {
|
|
654
654
|
var c, m;
|
|
655
655
|
(c = t.socketManager) == null || c.disconnect(), await ((m = t.streamingManager) == null ? void 0 : m.disconnect()), delete t.streamingManager, delete t.socketManager;
|
|
656
656
|
}
|
|
657
|
-
async function
|
|
657
|
+
async function O(c) {
|
|
658
658
|
var m, y;
|
|
659
659
|
c !== t.chatMode && (l.track("agent-mode-change", {
|
|
660
660
|
mode: c
|
|
@@ -663,7 +663,7 @@ async function $e(e, r) {
|
|
|
663
663
|
return {
|
|
664
664
|
agent: d,
|
|
665
665
|
starterMessages: ((p = d.knowledge) == null ? void 0 : p.starter_message) || [],
|
|
666
|
-
changeMode:
|
|
666
|
+
changeMode: O,
|
|
667
667
|
async connect() {
|
|
668
668
|
var c;
|
|
669
669
|
await T(!0), l.track("agent-chat", {
|
|
@@ -725,16 +725,16 @@ async function $e(e, r) {
|
|
|
725
725
|
}, M = [...t.messages];
|
|
726
726
|
t.messages.push(_);
|
|
727
727
|
const $ = (x) => {
|
|
728
|
-
var
|
|
728
|
+
var L, H;
|
|
729
729
|
return g.chat(d.id, x, {
|
|
730
|
-
sessionId: (
|
|
730
|
+
sessionId: (L = t.streamingManager) == null ? void 0 : L.sessionId,
|
|
731
731
|
streamId: (H = t.streamingManager) == null ? void 0 : H.streamId,
|
|
732
732
|
chatMode: t.chatMode,
|
|
733
733
|
messages: M
|
|
734
734
|
}, Z(t.chatMode));
|
|
735
735
|
}, P = await $(t.chat.id).catch(async (x) => {
|
|
736
|
-
var
|
|
737
|
-
if (!((
|
|
736
|
+
var L;
|
|
737
|
+
if (!((L = x == null ? void 0 : x.message) != null && L.includes("missing or invalid session_id")))
|
|
738
738
|
throw x;
|
|
739
739
|
return await S(), await T(!1), $(t.chat.id);
|
|
740
740
|
});
|
|
@@ -825,7 +825,7 @@ function Pe(e, r, s) {
|
|
|
825
825
|
}
|
|
826
826
|
export {
|
|
827
827
|
k as ChatMode,
|
|
828
|
-
|
|
828
|
+
b as ChatProgress,
|
|
829
829
|
I as ConnectionState,
|
|
830
830
|
ae as DocumentType,
|
|
831
831
|
re as KnowledgeType,
|
|
@@ -833,7 +833,7 @@ export {
|
|
|
833
833
|
ie as Providers,
|
|
834
834
|
te as RateState,
|
|
835
835
|
U as StreamEvents,
|
|
836
|
-
|
|
836
|
+
N as StreamingState,
|
|
837
837
|
ne as Subject,
|
|
838
838
|
G as UserPlan,
|
|
839
839
|
v as VideoType,
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(p,N){typeof exports=="object"&&typeof module<"u"?N(exports):typeof define=="function"&&define.amd?define(["exports"],N):(p=typeof globalThis<"u"?globalThis:p||self,N(p.index={}))})(this,function(p){"use strict";var N=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(N||{}),W=(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))(W||{}),q=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(q||{}),M=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e))(M||{}),O=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(O||{}),J=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(J||{}),X=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(X||{}),Y=(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))(Y||{}),C=(e=>(e.Clip="clip",e.Talk="talk",e))(C||{}),P=(e=>(e.Start="START",e.Stop="STOP",e))(P||{}),z=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e.StreamFailed="stream/error",e.StreamReady="stream/ready",e.StreamCreated="stream/created",e.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(z||{}),k=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Terminating="terminating",e))(k||{}),Z=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(Z||{}),G=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(G||{});const K="https://api.d-id.com",ce="wss://notifications.d-id.com",de="79f81a83a67430be2bc0fd61042b8faa",F=()=>Math.random().toString(16).slice(2);function Q(){let e=window.localStorage.getItem("did_external_key_id");return e||(e=Math.random().toString(16).slice(2),window.localStorage.setItem("did_external_key_id",e)),e}let le=F();function ee(e){if(e.type==="bearer")return`Bearer ${e.token}`;if(e.type==="basic")return`Basic ${btoa(`${e.username}:${e.password}`)}`;if(e.type==="key")return`Client-Key ${e.clientKey}.${Q()}_${le}`;throw new Error(`Unknown auth type: ${e}`)}function B(e,r=K,s){const i=async(t,n)=>{const a=await fetch(r+(t!=null&&t.startsWith("/")?t:`/${t}`),{...n,headers:{...n==null?void 0:n.headers,Authorization:ee(e),"Content-Type":"application/json"}});if(!a.ok){let o=await a.text().catch(()=>"Failed to fetch");throw s&&s(new Error(o),{url:t,options:n,headers:a.headers}),new Error(o)}return a.json()};return{get(t,n){return i(t,{...n,method:"GET"})},post(t,n,a){return i(t,{...a,body:JSON.stringify(n),method:"POST"})},delete(t,n,a){return i(t,{...a,body:JSON.stringify(n),method:"DELETE"})},patch(t,n,a){return i(t,{...a,body:JSON.stringify(n),method:"PATCH"})}}}function te(e,r=K,s){const i=B(e,`${r}/agents`,s);return{create(t,n){return i.post("/",t,n)},getAgents(t,n){return i.get(`/${t?`?tag=${t}`:""}`,n).then(a=>a??[])},getById(t,n){return i.get(`/${t}`,n)},delete(t,n){return i.delete(`/${t}`,void 0,n)},update(t,n,a){return i.patch(`/${t}`,n,a)},newChat(t,n){return i.post(`/${t}/chat`,void 0,n)},chat(t,n,a,o){return i.post(`/${t}/chat/${n}`,a,o)},createRating(t,n,a,o){return i.post(`/${t}/chat/${n}/ratings`,a,o)},updateRating(t,n,a,o,g){return i.patch(`/${t}/chat/${n}/ratings/${a}`,o,g)},deleteRating(t,n,a,o){return i.delete(`/${t}/chat/${n}/ratings/${a}`,o)}}}const ge=e=>new Promise(r=>setTimeout(r,e));function ue(e){return new Promise((r,s)=>{const{callbacks:i,host:t,auth:n}=e,{onMessage:a=null,onOpen:o=null,onClose:g=null,onError:d=null}=i||{},l=new WebSocket(`${t}?authorization=${ee(n)}`);l.onmessage=a,l.onclose=g,l.onerror=S=>{console.error(S),d==null||d("Websocket failed to connect",S),s(S)},l.onopen=S=>{o==null||o(S),r(l)}})}async function me(e){const{retries:r=1}=e;let s=null;for(let i=0;(s==null?void 0:s.readyState)!==WebSocket.OPEN;i++)try{s=await ue(e)}catch(t){if(i===r)throw t;await ge(i*500)}return s}async function he(e,r,s){const i=s!=null&&s.onMessage?[s.onMessage]:[],t=await me({auth:e,host:r,callbacks:{onError:s==null?void 0:s.onError,onMessage:n=>{const a=JSON.parse(n.data);i.forEach(o=>o(a.event,a))}}});return{socket:t,disconnect:()=>t.close(),subscribeToEvents:n=>i.push(n)}}const we="X-Playground-Chat";function fe(e,r,s,i){const t=B(e,`${r}/agents/${s}`,i);return{createStream(n){return t.post("/streams",{driver_id:n.driver_id,presenter_id:n.presenter_id,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,session_timeout:n.session_timeout,type:C.Clip})},startConnection(n,a,o){return t.post(`/streams/${n}/sdp`,{session_id:o,answer:a,type:C.Clip})},addIceCandidate(n,a,o){return t.post(`/streams/${n}/ice`,{session_id:o,...a,type:C.Clip})},sendStreamRequest(n,a,o){return t.post(`/streams/${n}`,{session_id:a,...o,type:C.Clip})},close(n,a){return t.delete(`/streams/${n}`,{session_id:a,type:C.Clip})}}}function pe(e,r,s,i){const t=B(e,`${r}/agents/${s}`,i);return{createStream(n,a){return t.post("/streams",{source_url:n.source_url,driver_url:n.driver_url,face:n.face,config:n.config,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,output_resolution:n.output_resolution,session_timeout:n.session_timeout,type:C.Talk},a)},startConnection(n,a,o,g){return t.post(`/streams/${n}/sdp`,{session_id:o,answer:a,type:C.Talk},g)},addIceCandidate(n,a,o,g){return t.post(`/streams/${n}/ice`,{session_id:o,...a,type:C.Talk},g)},sendStreamRequest(n,a,o,g){return t.post(`/streams/${n}`,{session_id:a,...o,type:C.Talk},g)},close(n,a,o){return t.delete(`/streams/${n}`,{session_id:a,type:C.Talk},o)}}}let ne=!1;const $=(e,r)=>ne&&console.log(e,r),ye=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function re(e){switch(e){case"connected":return k.Connected;case"checking":return k.Connecting;case"failed":return k.Fail;case"new":case"closed":case"disconnected":default:return k.New}}function ve(){let e=0;return r=>{for(const s of r.values())if(s&&s.type==="inbound-rtp"&&s.kind==="video"){const i=s.bytesReceived,t=i-e>0;return e=i,t}return!1}}function Ce(e,r){const i=Math.max(Math.ceil(10),1);let t=0,n=!1;const a=ve();return setInterval(async()=>{const o=await e.getStats();a(o)?(t=0,n||(r==null||r(P.Start),n=!0)):n&&(t++,t>=i&&(r==null||r(P.Stop),n=!1))},100)}async function Se(e,r,{debug:s=!1,callbacks:i,auth:t,analytics:n,baseURL:a=K}){ne=s;let o;const{startConnection:g,sendStreamRequest:d,close:l,createStream:S,addIceCandidate:L}=r.videoType===C.Clip?fe(t,a,e,i.onError):pe(t,a,e,i.onError),{id:R,offer:U,ice_servers:j,session_id:A}=await S(r),y=new ye({iceServers:j}),c=y.createDataChannel("JanusDataChannel");if(!A)throw new Error("Could not create session_id");const m=Ce(y,i.onVideoStateChange);y.onicecandidate=u=>{$("peerConnection.onicecandidate",u),u.candidate&&u.candidate.sdpMid&&u.candidate.sdpMLineIndex!==null?L(R,{candidate:u.candidate.candidate,sdpMid:u.candidate.sdpMid,sdpMLineIndex:u.candidate.sdpMLineIndex},A):L(R,{candidate:null},A)},y.oniceconnectionstatechange=()=>{var w;$("peerConnection.oniceconnectionstatechange => "+y.iceConnectionState);const u=re(y.iceConnectionState);u===k.Connected?o=setTimeout(()=>{var h;(h=i.onConnectionStateChange)==null||h.call(i,k.Connected)},5e3):(clearTimeout(o),(w=i.onConnectionStateChange)==null||w.call(i,u))},y.ontrack=u=>{var w;$("peerConnection.ontrack",u),(w=i.onSrcObjectReady)==null||w.call(i,u.streams[0])},c.onmessage=u=>{var w;if(c.readyState==="open"){const[h,f]=u.data.split(":");h===z.StreamReady&&(clearTimeout(o),(w=i.onConnectionStateChange)==null||w.call(i,k.Connected))}},await y.setRemoteDescription(U),$("set remote description OK");const v=await y.createAnswer();return $("create answer OK"),await y.setLocalDescription(v),$("set local description OK"),await g(R,v,A),$("start connection OK"),{speak(u){return d(R,A,u)},async disconnect(){var u,w,h;if(R){if(y){if(re(y.iceConnectionState)===k.New){(u=i.onVideoStateChange)==null||u.call(i,P.Stop),clearInterval(m);return}y.close(),y.oniceconnectionstatechange=null,y.onnegotiationneeded=null,y.onicecandidate=null,y.ontrack=null}try{await l(R,A).catch(f=>{})}catch(f){$("Error on close stream connection",f)}(w=i.onConnectionStateChange)==null||w.call(i,k.New),(h=i.onVideoStateChange)==null||h.call(i,P.Stop),clearInterval(m)}},sessionId:A,streamId:R}}let H={};function _e(e){const r=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",s={token:e.token||"testKey",distinct_id:e.distinctId||Q(),agentId:e.agent.id,agentType:e.agent.presenter.type,owner_id:e.agent.owner_id??""};return{...s,isEnabled:e.isEnabled??!0,getRandom:()=>Math.random().toString(16).slice(2),track(i,t){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const{audioPath:n,...a}=t||{},o={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:i,properties:{...a,...s,source:r,time:Date.now(),$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerWidth,"Screen Width":window.screen.width||window.innerHeight,"User Agent":navigator.userAgent}}])})};return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1",o).then(g=>g.json()).catch(g=>console.error(g))},linkTrack(i,t,n,a){H[i]||(H[i]={events:{},resolvedDependencies:[]}),a.includes(n)||a.push(n);const o=H[i];if(o.events[n]={props:t},o.resolvedDependencies.push(n),a.every(d=>o.resolvedDependencies.includes(d))){const d=a.reduce((l,S)=>o.events[S]?{...l,...o.events[S].props}:l,{});this.track(i,d),o.resolvedDependencies=o.resolvedDependencies.filter(l=>!a.includes(l)),a.forEach(l=>{delete o.events[l]})}}}}function Me(e){var i,t,n,a,o;const r=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const g=navigator.platform;return g.toLowerCase().includes("win")?"Windows":g.toLowerCase().includes("mac")?"Mac OS X":g.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${r()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(i=e.presenter)==null?void 0:i.type,agentVoice:{voiceId:(n=(t=e.presenter)==null?void 0:t.voice)==null?void 0:n.voice_id,provider:(o=(a=e.presenter)==null?void 0:a.voice)==null?void 0:o.type}}}function ke(e,r,s){var d,l;const{event:i,...t}=e,{template:n}=(r==null?void 0:r.llm)||{},{language:a}=((d=r==null?void 0:r.presenter)==null?void 0:d.voice)||{},{stitch:o}=(r==null?void 0:r.presenter)||{};return{...t,llm:{...t.llm,template:n},script:{...t.script,provider:{...(l=t==null?void 0:t.script)==null?void 0:l.provider,language:a}},stitch:o,...s}}const Re=1080;let T=0;function Ie(e,r){var s,i,t;if(e.presenter){if(e.presenter.type===C.Clip)return{videoType:C.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");return{videoType:C.Talk,source_url:e.presenter.source_url,session_timeout:(s=r==null?void 0:r.streamOptions)==null?void 0:s.session_timeout,stream_warmup:((i=r==null?void 0:r.streamOptions)==null?void 0:i.stream_warmup)??!0,compatibility_mode:(t=r==null?void 0:r.streamOptions)==null?void 0:t.compatibility_mode,output_resolution:(r==null?void 0:r.outputResolution)||(e.presenter.stitch?Re:void 0)}}function ie(e){return e===M.Playground?{headers:{[we]:"true"}}:{}}async function ae(e,r,s,i){try{const t=await r.newChat(e,ie(i));return s.track("agent-chat",{event:"created",chat_id:t.id,agent_id:e,mode:i}),t}catch(t){try{console.error(t);const n=JSON.parse(t.message);if((n==null?void 0:n.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(n){console.error("Error parsing the error message:",n)}throw new Error("Cannot create new chat")}}function Ae(e,r,s,i,t){return new Promise(async(n,a)=>{T=0;const o=await Se(e.id,Ie(e,r),{...r,analytics:i,callbacks:{...r.callbacks,onConnectionStateChange:async g=>{var d,l;g===k.Connected&&(!t&&r.mode!==M.DirectPlayback&&(t=await ae(e.id,s,i,r.mode).catch(S=>{a(S)})),o?n({chat:t,streamingManager:o}):t&&a(new Error("Something went wrong while initializing the manager"))),(l=(d=r.callbacks).onConnectionStateChange)==null||l.call(d,g)},onVideoStateChange(g){var d,l;(l=(d=r.callbacks).onVideoStateChange)==null||l.call(d,g),T>0&&g===P.Start&&i.linkTrack("agent-video",{event:"start",latency:Date.now()-T},"start",[z.StreamVideoCreated])}}}).catch(a)})}function se(e){let r="";if(e.greetings&&e.greetings.length>0){const s=Math.floor(Math.random()*e.greetings.length);r=e.greetings[s]}else r=`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`;return[{content:r,id:F(),role:"assistant",created_at:new Date().toISOString()}]}function Ee(e){if(e.answer!==void 0)return e.answer;let r=0,s="";for(;r in e;)s+=e[r],r++;return s}function $e(e,r,s,i,t){if(!(e===O.Partial||e===O.Answer))return;const n=i.messages[i.messages.length-1];if((n==null?void 0:n.role)!=="assistant")return;const{content:a,sequence:o}=r;e===O.Partial?s[o]=a:s.answer=a;const g=Ee(s);n.content!==g&&(n.content=g,t==null||t(i.messages,e))}async function Pe(e,r){var j,A,y;let s={},i=!0;const t={messages:[],chatMode:r.mode||M.Functional},n=r.baseURL||K,a=r.wsURL||ce,o=r.mixpanelKey||de,g=te(r.auth,n,r.callbacks.onError),d=await g.getById(e);t.messages=se(d),(A=(j=r.callbacks).onNewMessage)==null||A.call(j,t.messages,"answer");const l=_e({token:o,agent:d,...r});l.track("agent-sdk",{event:"loaded",...Me(d)});const S={onMessage:(c,m)=>{var v,u,w,h;if("content"in m)$e(c,m,s,t,r.callbacks.onNewMessage),c===O.Answer&&l.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const f=z,E=[f.StreamVideoDone,f.StreamVideoError,f.StreamVideoRejected],_=[f.StreamFailed,f.StreamVideoError,f.StreamVideoRejected],I=ke(m,d,{mode:t.chatMode});if(c=c,c===f.StreamVideoCreated)l.linkTrack("agent-video",I,f.StreamVideoCreated,["start"]);else if(E.includes(c)){const D=c.split("/")[1];l.track("agent-video",{...I,event:D})}_.includes(c)&&((u=(v=r.callbacks).onError)==null||u.call(v,new Error(`Stream failed with event ${c}`),{data:m})),m.event===f.StreamDone&&((h=(w=r.callbacks).onConnectionStateChange)==null||h.call(w,k.New))}}};async function L(c){var f,E,_,I,D;T=0,c&&!i&&(delete t.chat,t.messages=se(d),(E=(f=r.callbacks).onNewMessage)==null||E.call(f,t.messages,"answer"));const m=r.mode===M.DirectPlayback?Promise.resolve(void 0):he(r.auth,a,S),v=Ae(d,r,g,l,t.chat).catch(b=>{throw U(M.Maintenance),b}),[u,{streamingManager:w,chat:h}]=await Promise.all([m,v]);h&&h.id!==((_=t.chat)==null?void 0:_.id)&&((D=(I=r.callbacks).onNewChat)==null||D.call(I,h.id)),t.streamingManager=w,t.socketManager=u,t.chat=h,i=!1,U((h==null?void 0:h.chat_mode)??r.mode??M.Functional)}async function R(){var c,m;(c=t.socketManager)==null||c.disconnect(),await((m=t.streamingManager)==null?void 0:m.disconnect()),delete t.streamingManager,delete t.socketManager}async function U(c){var m,v;c!==t.chatMode&&(l.track("agent-mode-change",{mode:c}),t.chatMode=c,t.chatMode!==M.Functional&&await R(),(v=(m=r.callbacks).onModeChange)==null||v.call(m,c))}return{agent:d,starterMessages:((y=d.knowledge)==null?void 0:y.starter_message)||[],changeMode:U,async connect(){var c;await L(!0),l.track("agent-chat",{event:"connect",chatId:(c=t.chat)==null?void 0:c.id,agentId:d.id,mode:t.chatMode})},async reconnect(){var c;await R(),await L(!1),l.track("agent-chat",{event:"reconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:d.id,mode:t.chatMode})},async disconnect(){var c;await R(),l.track("agent-chat",{event:"disconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:d.id,mode:t.chatMode})},async chat(c){var v,u,w,h,f,E;const m=F();s={};try{if(T=Date.now(),r.mode===M.DirectPlayback)throw new Error("Direct playback is enabled, chat is disabled");if(c.length>=800)throw new Error("Message cannot be more than 800 characters");if(c.length===0)throw new Error("Message cannot be empty");if(t.chatMode===M.Maintenance)throw new Error("Chat is in maintenance mode");if(![M.TextOnly,M.Playground].includes(t.chatMode))if(t.streamingManager){if(!t.chat)throw new Error("Chat is not initialized")}else throw new Error("Streaming manager is not initialized");t.chat||(t.chat=await ae(d.id,g,l,t.chatMode),(u=(v=r.callbacks).onNewChat)==null||u.call(v,t.chat.id)),t.messages.push({id:F(),role:"user",content:c,created_at:new Date(T).toISOString()}),(h=(w=r.callbacks).onNewMessage)==null||h.call(w,t.messages,"user");const _={id:m,role:"assistant",content:"",created_at:new Date().toISOString(),matches:[]},I=[...t.messages];t.messages.push(_);const D=x=>{var V,oe;return g.chat(d.id,x,{sessionId:(V=t.streamingManager)==null?void 0:V.sessionId,streamId:(oe=t.streamingManager)==null?void 0:oe.streamId,chatMode:t.chatMode,messages:I},ie(t.chatMode))},b=await D(t.chat.id).catch(async x=>{var V;if(!((V=x==null?void 0:x.message)!=null&&V.includes("missing or invalid session_id")))throw x;return await R(),await L(!1),D(t.chat.id)});return l.track("agent-message-send",{event:"success",mode:t.chatMode,messages:t.messages.length+1}),_.context=b.context,_.matches=b.matches,b.result&&(_.content=b.result,l.track("agent-message-received",{latency:Date.now()-T,mode:t.chatMode,messages:t.messages.length}),(E=(f=r.callbacks).onNewMessage)==null||E.call(f,t.messages,"answer")),b}catch(_){throw t.messages[t.messages.length-1].id===m&&t.messages.pop(),l.track("agent-message-send",{event:"error",mode:t.chatMode,messages:t.messages.length}),_}},rate(c,m,v){var h,f,E,_;const u=t.messages.find(I=>I.id===c);if(t.chat){if(!u)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const w=((h=u.matches)==null?void 0:h.map(I=>[I.document_id,I.id]))??[];return l.track("agent-rate",{event:v?"update":"create",thumb:m===1?"up":"down",knowledge_id:((f=d.knowledge)==null?void 0:f.id)??"",mode:t.chatMode,matches:w,score:m}),v?g.updateRating(d.id,t.chat.id,v,{knowledge_id:((E=d.knowledge)==null?void 0:E.id)??"",message_id:c,matches:w,score:m}):g.createRating(d.id,t.chat.id,{knowledge_id:((_=d.knowledge)==null?void 0:_.id)??"",message_id:c,matches:w,score:m})},deleteRate(c){var m;if(!t.chat)throw new Error("Chat is not initialized");return l.track("agent-rate-delete",{type:"text",chat_id:(m=t.chat)==null?void 0:m.id,id:c,mode:t.chatMode}),g.deleteRating(d.id,t.chat.id,c)},speak(c){if(!t.streamingManager)throw new Error("Please connect to the agent first");function m(){if(typeof c=="string"){if(!d.presenter)throw new Error("Presenter is not initialized");return{type:"text",provider:d.presenter.voice,input:c,ssml:!1}}return c}const v=m();return l.track("agent-speak",v),t.streamingManager.speak({script:v})}}}function Te(e,r,s){const{getById:i}=te(r,s||K);return i(e)}p.ChatMode=M,p.ChatProgress=O,p.ConnectionState=k,p.DocumentType=Y,p.KnowledgeType=X,p.PlanGroup=W,p.Providers=Z,p.RateState=q,p.StreamEvents=z,p.StreamingState=P,p.Subject=J,p.UserPlan=N,p.VideoType=C,p.VoiceAccess=G,p.createAgentManager=Pe,p.getAgent=Te,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(p,O){typeof exports=="object"&&typeof module<"u"?O(exports):typeof define=="function"&&define.amd?define(["exports"],O):(p=typeof globalThis<"u"?globalThis:p||self,O(p.index={}))})(this,function(p){"use strict";var O=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(O||{}),W=(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))(W||{}),q=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(q||{}),M=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e.DirectPlayback="DirectPlayback",e))(M||{}),P=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(P||{}),J=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(J||{}),X=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(X||{}),Y=(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))(Y||{}),C=(e=>(e.Clip="clip",e.Talk="talk",e))(C||{}),T=(e=>(e.Start="START",e.Stop="STOP",e))(T||{}),z=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e.StreamFailed="stream/error",e.StreamReady="stream/ready",e.StreamCreated="stream/created",e.StreamVideoCreated="stream-video/started",e.StreamVideoDone="stream-video/done",e.StreamVideoError="stream-video/error",e.StreamVideoRejected="stream-video/rejected",e))(z||{}),k=(e=>(e.New="new",e.Fail="fail",e.Connected="connected",e.Connecting="connecting",e.Terminating="terminating",e))(k||{}),Z=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(Z||{}),G=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(G||{});const K="https://api.d-id.com",ce="wss://notifications.d-id.com",de="79f81a83a67430be2bc0fd61042b8faa",F=()=>Math.random().toString(16).slice(2);function Q(){let e=window.localStorage.getItem("did_external_key_id");return e||(e=Math.random().toString(16).slice(2),window.localStorage.setItem("did_external_key_id",e)),e}let le=F();function ee(e){if(e.type==="bearer")return`Bearer ${e.token}`;if(e.type==="basic")return`Basic ${btoa(`${e.username}:${e.password}`)}`;if(e.type==="key")return`Client-Key ${e.clientKey}.${Q()}_${le}`;throw new Error(`Unknown auth type: ${e}`)}function B(e,r=K,s){const i=async(t,n)=>{const a=await fetch(r+(t!=null&&t.startsWith("/")?t:`/${t}`),{...n,headers:{...n==null?void 0:n.headers,Authorization:ee(e),"Content-Type":"application/json"}});if(!a.ok){let o=await a.text().catch(()=>"Failed to fetch");throw s&&s(new Error(o),{url:t,options:n,headers:a.headers}),new Error(o)}return a.json()};return{get(t,n){return i(t,{...n,method:"GET"})},post(t,n,a){return i(t,{...a,body:JSON.stringify(n),method:"POST"})},delete(t,n,a){return i(t,{...a,body:JSON.stringify(n),method:"DELETE"})},patch(t,n,a){return i(t,{...a,body:JSON.stringify(n),method:"PATCH"})}}}function te(e,r=K,s){const i=B(e,`${r}/agents`,s);return{create(t,n){return i.post("/",t,n)},getAgents(t,n){return i.get(`/${t?`?tag=${t}`:""}`,n).then(a=>a??[])},getById(t,n){return i.get(`/${t}`,n)},delete(t,n){return i.delete(`/${t}`,void 0,n)},update(t,n,a){return i.patch(`/${t}`,n,a)},newChat(t,n){return i.post(`/${t}/chat`,void 0,n)},chat(t,n,a,o){return i.post(`/${t}/chat/${n}`,a,o)},createRating(t,n,a,o){return i.post(`/${t}/chat/${n}/ratings`,a,o)},updateRating(t,n,a,o,g){return i.patch(`/${t}/chat/${n}/ratings/${a}`,o,g)},deleteRating(t,n,a,o){return i.delete(`/${t}/chat/${n}/ratings/${a}`,o)}}}const ge=e=>new Promise(r=>setTimeout(r,e));function ue(e){return new Promise((r,s)=>{const{callbacks:i,host:t,auth:n}=e,{onMessage:a=null,onOpen:o=null,onClose:g=null,onError:d=null}=i||{},l=new WebSocket(`${t}?authorization=${ee(n)}`);l.onmessage=a,l.onclose=g,l.onerror=S=>{console.error(S),d==null||d("Websocket failed to connect",S),s(S)},l.onopen=S=>{o==null||o(S),r(l)}})}async function me(e){const{retries:r=1}=e;let s=null;for(let i=0;(s==null?void 0:s.readyState)!==WebSocket.OPEN;i++)try{s=await ue(e)}catch(t){if(i===r)throw t;await ge(i*500)}return s}async function he(e,r,s){const i=s!=null&&s.onMessage?[s.onMessage]:[],t=await me({auth:e,host:r,callbacks:{onError:s==null?void 0:s.onError,onMessage:n=>{const a=JSON.parse(n.data);i.forEach(o=>o(a.event,a))}}});return{socket:t,disconnect:()=>t.close(),subscribeToEvents:n=>i.push(n)}}const we="X-Playground-Chat";function fe(e,r,s,i){const t=B(e,`${r}/agents/${s}`,i);return{createStream(n){return t.post("/streams",{driver_id:n.driver_id,presenter_id:n.presenter_id,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,session_timeout:n.session_timeout,type:C.Clip})},startConnection(n,a,o){return t.post(`/streams/${n}/sdp`,{session_id:o,answer:a,type:C.Clip})},addIceCandidate(n,a,o){return t.post(`/streams/${n}/ice`,{session_id:o,...a,type:C.Clip})},sendStreamRequest(n,a,o){return t.post(`/streams/${n}`,{session_id:a,...o,type:C.Clip})},close(n,a){return t.delete(`/streams/${n}`,{session_id:a,type:C.Clip})}}}function pe(e,r,s,i){const t=B(e,`${r}/agents/${s}`,i);return{createStream(n,a){return t.post("/streams",{source_url:n.source_url,driver_url:n.driver_url,face:n.face,config:n.config,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,output_resolution:n.output_resolution,session_timeout:n.session_timeout,type:C.Talk},a)},startConnection(n,a,o,g){return t.post(`/streams/${n}/sdp`,{session_id:o,answer:a,type:C.Talk},g)},addIceCandidate(n,a,o,g){return t.post(`/streams/${n}/ice`,{session_id:o,...a,type:C.Talk},g)},sendStreamRequest(n,a,o,g){return t.post(`/streams/${n}`,{session_id:a,...o,type:C.Talk},g)},close(n,a,o){return t.delete(`/streams/${n}`,{session_id:a,type:C.Talk},o)}}}let ne=!1;const $=(e,r)=>ne&&console.log(e,r),ye=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function re(e){switch(e){case"connected":return k.Connected;case"checking":return k.Connecting;case"failed":return k.Fail;case"new":case"closed":case"disconnected":default:return k.New}}function ve(){let e=0;return r=>{for(const s of r.values())if(s&&s.type==="inbound-rtp"&&s.kind==="video"){const i=s.bytesReceived,t=i-e>0;return e=i,t}return!1}}function Ce(e,r){const i=Math.max(Math.ceil(10),1);let t=0,n=!1;const a=ve();return setInterval(async()=>{const o=await e.getStats();a(o)?(t=0,n||(r==null||r(T.Start),n=!0)):n&&(t++,t>=i&&(r==null||r(T.Stop),n=!1))},100)}async function Se(e,r,{debug:s=!1,callbacks:i,auth:t,analytics:n,baseURL:a=K}){ne=s;let o;const{startConnection:g,sendStreamRequest:d,close:l,createStream:S,addIceCandidate:L}=r.videoType===C.Clip?fe(t,a,e,i.onError):pe(t,a,e,i.onError),{id:R,offer:U,ice_servers:j,session_id:I}=await S(r),y=new ye({iceServers:j}),c=y.createDataChannel("JanusDataChannel");if(!I)throw new Error("Could not create session_id");const m=Ce(y,i.onVideoStateChange);y.onicecandidate=u=>{$("peerConnection.onicecandidate",u),u.candidate&&u.candidate.sdpMid&&u.candidate.sdpMLineIndex!==null?L(R,{candidate:u.candidate.candidate,sdpMid:u.candidate.sdpMid,sdpMLineIndex:u.candidate.sdpMLineIndex},I):L(R,{candidate:null},I)},y.oniceconnectionstatechange=()=>{var w;$("peerConnection.oniceconnectionstatechange => "+y.iceConnectionState);const u=re(y.iceConnectionState);u===k.Connected?o=setTimeout(()=>{var h;(h=i.onConnectionStateChange)==null||h.call(i,k.Connected)},5e3):(clearTimeout(o),(w=i.onConnectionStateChange)==null||w.call(i,u))},y.ontrack=u=>{var w;$("peerConnection.ontrack",u),(w=i.onSrcObjectReady)==null||w.call(i,u.streams[0])},c.onmessage=u=>{var w;if(c.readyState==="open"){const[h,f]=u.data.split(":");h===z.StreamReady&&(clearTimeout(o),(w=i.onConnectionStateChange)==null||w.call(i,k.Connected))}},await y.setRemoteDescription(U),$("set remote description OK");const v=await y.createAnswer();return $("create answer OK"),await y.setLocalDescription(v),$("set local description OK"),await g(R,v,I),$("start connection OK"),{speak(u){return d(R,I,u)},async disconnect(){var u,w,h;if(R){if(y){if(re(y.iceConnectionState)===k.New){(u=i.onVideoStateChange)==null||u.call(i,T.Stop),clearInterval(m);return}y.close(),y.oniceconnectionstatechange=null,y.onnegotiationneeded=null,y.onicecandidate=null,y.ontrack=null}try{await l(R,I).catch(f=>{})}catch(f){$("Error on close stream connection",f)}(w=i.onConnectionStateChange)==null||w.call(i,k.New),(h=i.onVideoStateChange)==null||h.call(i,T.Stop),clearInterval(m)}},sessionId:I,streamId:R}}let H={};function _e(e){const r=window!=null&&window.hasOwnProperty("DID_AGENTS_API")?"agents-ui":"agents-sdk",s={token:e.token||"testKey",distinct_id:e.distinctId||Q(),agentId:e.agent.id,agentType:e.agent.presenter.type,owner_id:e.agent.owner_id??""};return{...s,isEnabled:e.isEnabled??!0,getRandom:()=>Math.random().toString(16).slice(2),track(i,t){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const{audioPath:n,...a}=t||{},o={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:i,properties:{...a,...s,source:r,time:Date.now(),$insert_id:this.getRandom(),origin:window.location.href,"Screen Height":window.screen.height||window.innerWidth,"Screen Width":window.screen.width||window.innerHeight,"User Agent":navigator.userAgent}}])})};return fetch("https://api-js.mixpanel.com/track/?verbose=1&ip=1",o).then(g=>g.json()).catch(g=>console.error(g))},linkTrack(i,t,n,a){H[i]||(H[i]={events:{},resolvedDependencies:[]}),a.includes(n)||a.push(n);const o=H[i];if(o.events[n]={props:t},o.resolvedDependencies.push(n),a.every(d=>o.resolvedDependencies.includes(d))){const d=a.reduce((l,S)=>o.events[S]?{...l,...o.events[S].props}:l,{});this.track(i,d),o.resolvedDependencies=o.resolvedDependencies.filter(l=>!a.includes(l)),a.forEach(l=>{delete o.events[l]})}}}}function Me(e){var i,t,n,a,o;const r=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const g=navigator.platform;return g.toLowerCase().includes("win")?"Windows":g.toLowerCase().includes("mac")?"Mac OS X":g.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${r()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(i=e.presenter)==null?void 0:i.type,agentVoice:{voiceId:(n=(t=e.presenter)==null?void 0:t.voice)==null?void 0:n.voice_id,provider:(o=(a=e.presenter)==null?void 0:a.voice)==null?void 0:o.type}}}function ke(e,r,s){var d,l;const{event:i,...t}=e,{template:n}=(r==null?void 0:r.llm)||{},{language:a}=((d=r==null?void 0:r.presenter)==null?void 0:d.voice)||{},{stitch:o}=(r==null?void 0:r.presenter)||{};return{...t,llm:{...t.llm,template:n},script:{...t.script,provider:{...(l=t==null?void 0:t.script)==null?void 0:l.provider,language:a}},stitch:o,...s}}const Re=1080;let D=0;function Ae(e,r){var s,i,t;if(e.presenter){if(e.presenter.type===C.Clip)return{videoType:C.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");return{videoType:C.Talk,source_url:e.presenter.source_url,session_timeout:(s=r==null?void 0:r.streamOptions)==null?void 0:s.session_timeout,stream_warmup:((i=r==null?void 0:r.streamOptions)==null?void 0:i.stream_warmup)??!0,compatibility_mode:(t=r==null?void 0:r.streamOptions)==null?void 0:t.compatibility_mode,output_resolution:(r==null?void 0:r.outputResolution)||(e.presenter.stitch?Re:void 0)}}function ie(e){return e===M.Playground?{headers:{[we]:"true"}}:{}}async function ae(e,r,s,i){try{const t=await r.newChat(e,ie(i));return s.track("agent-chat",{event:"created",chat_id:t.id,agent_id:e,mode:i}),t}catch(t){try{console.error(t);const n=JSON.parse(t.message);if((n==null?void 0:n.kind)==="InsufficientCreditsError")throw new Error("InsufficientCreditsError")}catch(n){console.error("Error parsing the error message:",n)}throw new Error("Cannot create new chat")}}function Ie(e,r,s,i,t){return new Promise(async(n,a)=>{D=0;const o=await Se(e.id,Ae(e,r),{...r,analytics:i,callbacks:{...r.callbacks,onConnectionStateChange:async g=>{var d,l;g===k.Connected&&(!t&&r.mode!==M.DirectPlayback&&(t=await ae(e.id,s,i,r.mode).catch(S=>{a(S)})),o?n({chat:t,streamingManager:o}):t&&a(new Error("Something went wrong while initializing the manager"))),(l=(d=r.callbacks).onConnectionStateChange)==null||l.call(d,g)},onVideoStateChange(g){var d,l;(l=(d=r.callbacks).onVideoStateChange)==null||l.call(d,g),D>0&&g===T.Start&&i.linkTrack("agent-video",{event:"start",latency:Date.now()-D},"start",[z.StreamVideoCreated])}}}).catch(a)})}function se(e){let r="";if(e.greetings&&e.greetings.length>0){const s=Math.floor(Math.random()*e.greetings.length);r=e.greetings[s]}else r=`Hi! I'm ${e.preview_name||"My Agent"}. How can I help you?`;return[{content:r,id:F(),role:"assistant",created_at:new Date().toISOString()}]}function Ee(e){if(e.answer!==void 0)return e.answer;let r=0,s="";for(;r in e;)s+=e[r],r++;return s}function $e(e,r,s,i,t){if(!(e===P.Partial||e===P.Answer))return;const n=i.messages[i.messages.length-1];if((n==null?void 0:n.role)!=="assistant")return;const{content:a,sequence:o}=r;e===P.Partial?s[o]=a:s.answer=a;const g=Ee(s);(n.content!==g||e===P.Answer)&&(n.content=g,t==null||t(i.messages,e))}async function Pe(e,r){var j,I,y;let s={},i=!0;const t={messages:[],chatMode:r.mode||M.Functional},n=r.baseURL||K,a=r.wsURL||ce,o=r.mixpanelKey||de,g=te(r.auth,n,r.callbacks.onError),d=await g.getById(e);t.messages=se(d),(I=(j=r.callbacks).onNewMessage)==null||I.call(j,t.messages,"answer");const l=_e({token:o,agent:d,...r});l.track("agent-sdk",{event:"loaded",...Me(d)});const S={onMessage:(c,m)=>{var v,u,w,h;if("content"in m)$e(c,m,s,t,r.callbacks.onNewMessage),c===P.Answer&&l.track("agent-message-received",{messages:t.messages.length,mode:t.chatMode});else{const f=z,E=[f.StreamVideoDone,f.StreamVideoError,f.StreamVideoRejected],_=[f.StreamFailed,f.StreamVideoError,f.StreamVideoRejected],A=ke(m,d,{mode:t.chatMode});if(c=c,c===f.StreamVideoCreated)l.linkTrack("agent-video",A,f.StreamVideoCreated,["start"]);else if(E.includes(c)){const b=c.split("/")[1];l.track("agent-video",{...A,event:b})}_.includes(c)&&((u=(v=r.callbacks).onError)==null||u.call(v,new Error(`Stream failed with event ${c}`),{data:m})),m.event===f.StreamDone&&((h=(w=r.callbacks).onConnectionStateChange)==null||h.call(w,k.New))}}};async function L(c){var f,E,_,A,b;D=0,c&&!i&&(delete t.chat,t.messages=se(d),(E=(f=r.callbacks).onNewMessage)==null||E.call(f,t.messages,"answer"));const m=r.mode===M.DirectPlayback?Promise.resolve(void 0):he(r.auth,a,S),v=Ie(d,r,g,l,t.chat).catch(N=>{throw U(M.Maintenance),N}),[u,{streamingManager:w,chat:h}]=await Promise.all([m,v]);h&&h.id!==((_=t.chat)==null?void 0:_.id)&&((b=(A=r.callbacks).onNewChat)==null||b.call(A,h.id)),t.streamingManager=w,t.socketManager=u,t.chat=h,i=!1,U((h==null?void 0:h.chat_mode)??r.mode??M.Functional)}async function R(){var c,m;(c=t.socketManager)==null||c.disconnect(),await((m=t.streamingManager)==null?void 0:m.disconnect()),delete t.streamingManager,delete t.socketManager}async function U(c){var m,v;c!==t.chatMode&&(l.track("agent-mode-change",{mode:c}),t.chatMode=c,t.chatMode!==M.Functional&&await R(),(v=(m=r.callbacks).onModeChange)==null||v.call(m,c))}return{agent:d,starterMessages:((y=d.knowledge)==null?void 0:y.starter_message)||[],changeMode:U,async connect(){var c;await L(!0),l.track("agent-chat",{event:"connect",chatId:(c=t.chat)==null?void 0:c.id,agentId:d.id,mode:t.chatMode})},async reconnect(){var c;await R(),await L(!1),l.track("agent-chat",{event:"reconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:d.id,mode:t.chatMode})},async disconnect(){var c;await R(),l.track("agent-chat",{event:"disconnect",chatId:(c=t.chat)==null?void 0:c.id,agentId:d.id,mode:t.chatMode})},async chat(c){var v,u,w,h,f,E;const m=F();s={};try{if(D=Date.now(),r.mode===M.DirectPlayback)throw new Error("Direct playback is enabled, chat is disabled");if(c.length>=800)throw new Error("Message cannot be more than 800 characters");if(c.length===0)throw new Error("Message cannot be empty");if(t.chatMode===M.Maintenance)throw new Error("Chat is in maintenance mode");if(![M.TextOnly,M.Playground].includes(t.chatMode))if(t.streamingManager){if(!t.chat)throw new Error("Chat is not initialized")}else throw new Error("Streaming manager is not initialized");t.chat||(t.chat=await ae(d.id,g,l,t.chatMode),(u=(v=r.callbacks).onNewChat)==null||u.call(v,t.chat.id)),t.messages.push({id:F(),role:"user",content:c,created_at:new Date(D).toISOString()}),(h=(w=r.callbacks).onNewMessage)==null||h.call(w,t.messages,"user");const _={id:m,role:"assistant",content:"",created_at:new Date().toISOString(),matches:[]},A=[...t.messages];t.messages.push(_);const b=x=>{var V,oe;return g.chat(d.id,x,{sessionId:(V=t.streamingManager)==null?void 0:V.sessionId,streamId:(oe=t.streamingManager)==null?void 0:oe.streamId,chatMode:t.chatMode,messages:A},ie(t.chatMode))},N=await b(t.chat.id).catch(async x=>{var V;if(!((V=x==null?void 0:x.message)!=null&&V.includes("missing or invalid session_id")))throw x;return await R(),await L(!1),b(t.chat.id)});return l.track("agent-message-send",{event:"success",mode:t.chatMode,messages:t.messages.length+1}),_.context=N.context,_.matches=N.matches,N.result&&(_.content=N.result,l.track("agent-message-received",{latency:Date.now()-D,mode:t.chatMode,messages:t.messages.length}),(E=(f=r.callbacks).onNewMessage)==null||E.call(f,t.messages,"answer")),N}catch(_){throw t.messages[t.messages.length-1].id===m&&t.messages.pop(),l.track("agent-message-send",{event:"error",mode:t.chatMode,messages:t.messages.length}),_}},rate(c,m,v){var h,f,E,_;const u=t.messages.find(A=>A.id===c);if(t.chat){if(!u)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const w=((h=u.matches)==null?void 0:h.map(A=>[A.document_id,A.id]))??[];return l.track("agent-rate",{event:v?"update":"create",thumb:m===1?"up":"down",knowledge_id:((f=d.knowledge)==null?void 0:f.id)??"",mode:t.chatMode,matches:w,score:m}),v?g.updateRating(d.id,t.chat.id,v,{knowledge_id:((E=d.knowledge)==null?void 0:E.id)??"",message_id:c,matches:w,score:m}):g.createRating(d.id,t.chat.id,{knowledge_id:((_=d.knowledge)==null?void 0:_.id)??"",message_id:c,matches:w,score:m})},deleteRate(c){var m;if(!t.chat)throw new Error("Chat is not initialized");return l.track("agent-rate-delete",{type:"text",chat_id:(m=t.chat)==null?void 0:m.id,id:c,mode:t.chatMode}),g.deleteRating(d.id,t.chat.id,c)},speak(c){if(!t.streamingManager)throw new Error("Please connect to the agent first");function m(){if(typeof c=="string"){if(!d.presenter)throw new Error("Presenter is not initialized");return{type:"text",provider:d.presenter.voice,input:c,ssml:!1}}return c}const v=m();return l.track("agent-speak",v),t.streamingManager.speak({script:v})}}}function Te(e,r,s){const{getById:i}=te(r,s||K);return i(e)}p.ChatMode=M,p.ChatProgress=P,p.ConnectionState=k,p.DocumentType=Y,p.KnowledgeType=X,p.PlanGroup=W,p.Providers=Z,p.RateState=q,p.StreamEvents=z,p.StreamingState=T,p.Subject=J,p.UserPlan=O,p.VideoType=C,p.VoiceAccess=G,p.createAgentManager=Pe,p.getAgent=Te,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})});
|