@d-id/client-sdk 1.0.19-beta.52 → 1.0.19-beta.54
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
CHANGED
|
@@ -308,15 +308,15 @@ function re(e, a) {
|
|
|
308
308
|
const w = o.bytesReceived, l = n[r].bytesReceived;
|
|
309
309
|
let m = i;
|
|
310
310
|
i = w - l > 0;
|
|
311
|
-
let
|
|
311
|
+
let S;
|
|
312
312
|
if (m !== i) {
|
|
313
313
|
if (i)
|
|
314
314
|
t = n.length;
|
|
315
315
|
else {
|
|
316
316
|
const f = n.slice(t), u = t === 0 ? void 0 : n[t - 1];
|
|
317
|
-
|
|
317
|
+
S = te(f, u), S = S.sort((s, h) => h.packetsLost - s.packetsLost).slice(0, 5);
|
|
318
318
|
}
|
|
319
|
-
a == null || a(i ? A.Start : A.Stop,
|
|
319
|
+
a == null || a(i ? A.Start : A.Stop, S);
|
|
320
320
|
}
|
|
321
321
|
}
|
|
322
322
|
n.push(o);
|
|
@@ -341,14 +341,14 @@ async function ie(e, {
|
|
|
341
341
|
} = e.videoType === I.Clip ? G(t, r) : ee(t, r), {
|
|
342
342
|
id: l,
|
|
343
343
|
offer: m,
|
|
344
|
-
ice_servers:
|
|
344
|
+
ice_servers: S,
|
|
345
345
|
session_id: f
|
|
346
346
|
} = await o(e), u = new ne({
|
|
347
|
-
iceServers:
|
|
347
|
+
iceServers: S
|
|
348
348
|
}), s = u.createDataChannel("JanusDataChannel");
|
|
349
349
|
if (!f)
|
|
350
350
|
throw new Error("Could not create session_id");
|
|
351
|
-
const
|
|
351
|
+
const h = re(u, n.onVideoStateChange);
|
|
352
352
|
u.onicecandidate = (c) => {
|
|
353
353
|
y("peerConnection.onicecandidate", c), c.candidate && c.candidate.sdpMid && c.candidate.sdpMLineIndex !== null && w(l, {
|
|
354
354
|
candidate: c.candidate.candidate,
|
|
@@ -364,11 +364,11 @@ async function ie(e, {
|
|
|
364
364
|
}, s.onmessage = (c) => {
|
|
365
365
|
var p, _;
|
|
366
366
|
if (s.readyState === "open") {
|
|
367
|
-
const [
|
|
368
|
-
|
|
369
|
-
event:
|
|
367
|
+
const [v, $] = c.data.split(":");
|
|
368
|
+
v === E.StreamStarted ? console.log("StreamStarted", v, $) : v === E.StreamDone ? console.log("StreamDone") : v === E.StreamFailed ? ((p = n.onVideoStateChange) == null || p.call(n, A.Stop, {
|
|
369
|
+
event: v,
|
|
370
370
|
data: $
|
|
371
|
-
}), clearInterval(
|
|
371
|
+
}), clearInterval(h), console.log("StreamFailed")) : (_ = n.onMessage) == null || _.call(n, v, decodeURIComponent($));
|
|
372
372
|
}
|
|
373
373
|
}, await u.setRemoteDescription(m), y("set remote description OK");
|
|
374
374
|
const C = await u.createAnswer();
|
|
@@ -386,7 +386,7 @@ async function ie(e, {
|
|
|
386
386
|
async disconnect() {
|
|
387
387
|
var c, p;
|
|
388
388
|
l && (u && (u.close(), u.oniceconnectionstatechange = null, u.onnegotiationneeded = null, u.onicecandidate = null, u.ontrack = null), await g(l, f).catch((_) => {
|
|
389
|
-
}), (c = n.onConnectionStateChange) == null || c.call(n, "closed"), (p = n.onVideoStateChange) == null || p.call(n, A.Stop), clearInterval(
|
|
389
|
+
}), (c = n.onConnectionStateChange) == null || c.call(n, "closed"), (p = n.onVideoStateChange) == null || p.call(n, A.Stop), clearInterval(h));
|
|
390
390
|
},
|
|
391
391
|
/**
|
|
392
392
|
* Session identifier information, should be returned in the body of all streaming requests
|
|
@@ -449,11 +449,11 @@ async function de(e, a) {
|
|
|
449
449
|
chat: l,
|
|
450
450
|
streamingManager: m
|
|
451
451
|
} = await L(o, a, i);
|
|
452
|
-
const
|
|
452
|
+
const S = await ae(o, g);
|
|
453
453
|
return {
|
|
454
454
|
agent: o,
|
|
455
455
|
chatId: l.id,
|
|
456
|
-
starterMessages:
|
|
456
|
+
starterMessages: S,
|
|
457
457
|
async reconnect() {
|
|
458
458
|
const {
|
|
459
459
|
streamingManager: s
|
|
@@ -463,20 +463,21 @@ async function de(e, a) {
|
|
|
463
463
|
disconnect() {
|
|
464
464
|
return r.abort(), w.disconnect(), m.disconnect();
|
|
465
465
|
},
|
|
466
|
-
chat(s) {
|
|
466
|
+
chat(s, h = !1) {
|
|
467
467
|
if (s.length === 0)
|
|
468
468
|
throw new Error("Messages cannot be empty");
|
|
469
469
|
return s[s.length - 1].created_at = (/* @__PURE__ */ new Date()).toISOString(), s[s.length - 1].role || (s[s.length - 1].role = "user"), i.chat(o.id, l.id, {
|
|
470
470
|
sessionId: m.sessionId,
|
|
471
471
|
streamId: m.streamId,
|
|
472
|
-
messages: s
|
|
472
|
+
messages: s,
|
|
473
|
+
append_chat: h
|
|
473
474
|
}, {
|
|
474
475
|
signal: r.signal
|
|
475
476
|
});
|
|
476
477
|
},
|
|
477
|
-
rate(s,
|
|
478
|
-
var p, _,
|
|
479
|
-
const c = ((p =
|
|
478
|
+
rate(s, h, C) {
|
|
479
|
+
var p, _, v;
|
|
480
|
+
const c = ((p = h.matches) == null ? void 0 : p.map(($) => [$.document_id, $.id])) ?? [];
|
|
480
481
|
return C ? d.update(C, {
|
|
481
482
|
agent_id: o.id,
|
|
482
483
|
knowledge_id: ((_ = o.knowledge) == null ? void 0 : _.id) ?? "",
|
|
@@ -485,7 +486,7 @@ async function de(e, a) {
|
|
|
485
486
|
matches: c
|
|
486
487
|
}) : d.create({
|
|
487
488
|
agent_id: o.id,
|
|
488
|
-
knowledge_id: ((
|
|
489
|
+
knowledge_id: ((v = o.knowledge) == null ? void 0 : v.id) ?? "",
|
|
489
490
|
chat_id: l.id,
|
|
490
491
|
score: s,
|
|
491
492
|
matches: c
|
|
@@ -495,7 +496,7 @@ async function de(e, a) {
|
|
|
495
496
|
return d.delete(s);
|
|
496
497
|
},
|
|
497
498
|
speak(s) {
|
|
498
|
-
function
|
|
499
|
+
function h() {
|
|
499
500
|
if (s.type === "text") {
|
|
500
501
|
let C = o.presenter.voice;
|
|
501
502
|
return s.provider && (C = s.provider), {
|
|
@@ -512,7 +513,7 @@ async function de(e, a) {
|
|
|
512
513
|
throw new Error("Invalid payload");
|
|
513
514
|
}
|
|
514
515
|
return m.speak({
|
|
515
|
-
script:
|
|
516
|
+
script: h()
|
|
516
517
|
});
|
|
517
518
|
}
|
|
518
519
|
};
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(g,$){typeof exports=="object"&&typeof module<"u"?$(exports):typeof define=="function"&&define.amd?define(["exports"],$):(g=typeof globalThis<"u"?globalThis:g||self,$(g.index={}))})(this,function(g){"use strict";var $=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))($||{}),P=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(P||{}),k=(e=>(e.Start="START",e.Stop="STOP",e))(k||{}),M=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e.StreamFailed="stream/error",e))(M||{}),b=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(b||{}),K=(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))(K||{}),T=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(T||{}),O=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))(O||{}),N=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(N||{}),B=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(B||{}),D=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(D||{}),W=(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))(W||{}),E=(e=>(e.Clip="clip",e.Talk="talk",e))(E||{});const R="https://api.d-id.com",q="wss://notifications.d-id.com",z=()=>Math.random().toString(16).slice(2);function J(){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 x=z();function H(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}.${J()}_${x}`;throw new Error(`Unknown auth type: ${e}`)}function L(e,a=R){const n=async(t,r)=>{const i=await fetch(a+(t!=null&&t.startsWith("/")?t:`/${t}`),{...r,headers:{...r==null?void 0:r.headers,Authorization:H(e),"Content-Type":"application/json"}});if(!i.ok){let d=await i.text().catch(()=>"Failed to fetch");throw new Error(d)}return i.json()};return{get(t,r){return n(t,{...r,method:"GET"})},post(t,r,i){return n(t,{...i,body:JSON.stringify(r),method:"POST"})},delete(t,r,i){return n(t,{...i,body:JSON.stringify(r),method:"DELETE"})},patch(t,r,i){return n(t,{...i,body:JSON.stringify(r),method:"PATCH"})}}}function j(e,a=R){const n=L(e,`${a}/agents`);return{create(t,r){return n.post("/",t,r)},getAgents(t,r){return n.get(`/${t?`?tag=${t}`:""}`,r).then(i=>i??[])},getById(t,r){return n.get(`/${t}`,r)},delete(t,r){return n.delete(`/${t}`,void 0,r)},update(t,r,i){return n.patch(`/${t}`,r,i)},newChat(t,r){return n.post(`/${t}/chat`,void 0,r)},chat(t,r,i,d){return n.post(`/${t}/chat/${r}`,i,d)}}}function Q(e,a=R){const n=L(e,`${a}/knowledge`);return{createKnowledge(t,r){return n.post("/",t,r)},getKnowledgeBase(t){return n.get("/",t)},getKnowledge(t,r){return n.get(`/${t}`,r)},deleteKnowledge(t,r){return n.delete(`/${t}`,void 0,r)},createDocument(t,r,i){return n.post(`/${t}/documents`,r,i)},deleteDocument(t,r,i){return n.delete(`/${t}/documents/${r}`,void 0,i)},getDocuments(t,r){return n.get(`/${t}/documents`,r)},getDocument(t,r,i){return n.get(`/${t}/documents/${r}`,i)},getRecords(t,r,i){return n.get(`/${t}/documents/${r}/records`,i)},query(t,r,i){return n.post(`/${t}/query`,{query:r},i)}}}function V(e,a=R){const n=L(e,`${a}/chats/ratings`);return{create(t,r){return n.post("/",t,r)},getByKnowledge(t,r){return n.get(`/${t}`,r).then(i=>i??[])},update(t,r,i){return n.patch(`/${t}`,r,i)},delete(t,r){return n.delete(`/${t}`,r)}}}const X=e=>new Promise(a=>setTimeout(a,e));function Y(e){return new Promise((a,n)=>{const{callbacks:t,host:r,auth:i}=e,{onMessage:d=null,onOpen:m=null,onClose:o=null,onError:h=null}=t||{},l=new WebSocket(`${r}?authorization=${H(i)}`);l.onmessage=d,l.onclose=o,l.onerror=f=>{console.error(f),h==null||h(f),n(f)},l.onopen=f=>{m==null||m(f),a(l)}})}async function Z(e){const{retries:a=1}=e;let n=null;for(let t=0;(n==null?void 0:n.readyState)!==WebSocket.OPEN;t++)try{n=await Y(e)}catch(r){if(t===a)throw r;await X(t*500)}return n}async function G(e,a,n){const t=n?[n]:[],r=await Z({auth:e,host:a,callbacks:{onMessage:i=>{const d=JSON.parse(i.data);t.forEach(m=>m(d.event,d))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:i=>t.push(i)}}function ee(e,a){const n=L(e,a);return{createStream(t){return n.post("/clips/streams",{driver_id:t.driver_id,presenter_id:t.presenter_id,compatibility_mode:t.compatibility_mode})},startConnection(t,r,i){return n.post(`/clips/streams/${t}/sdp`,{session_id:i,answer:r})},addIceCandidate(t,r,i){return n.post(`/clips/streams/${t}/ice`,{session_id:i,...r})},sendStreamRequest(t,r,i){return n.post(`/clips/streams/${t}`,{session_id:r,...i})},close(t,r){return n.delete(`/clips/streams/${t}`,{session_id:r})}}}function te(e,a){const n=L(e,a);return{createStream(t,r){return n.post("/talks/streams",{source_url:t.source_url,driver_url:t.driver_url,face:t.face,config:t.config},r)},startConnection(t,r,i,d){return n.post(`/talks/streams/${t}/sdp`,{session_id:i,answer:r},d)},addIceCandidate(t,r,i,d){return n.post(`/talks/streams/${t}/ice`,{session_id:i,...r},d)},sendStreamRequest(t,r,i,d){return n.post(`/talks/streams/${t}`,{session_id:r,...i},d)},close(t,r,i){return n.delete(`/talks/streams/${t}`,{session_id:r},i)}}}function ne(e,a){return e.map((n,t)=>t===0?a?{index:t,timestamp:n.timestamp,bytesReceived:n.bytesReceived-a.bytesReceived,packetsReceived:n.packetsReceived-a.packetsReceived,packetsLost:n.packetsLost-a.packetsLost,jitter:n.jitter,frameWidth:n.frameWidth,frameHeight:n.frameHeight,framesPerSecond:n.framesPerSecond}:{index:t,timestamp:n.timestamp,bytesReceived:n.bytesReceived,packetsReceived:n.packetsReceived,packetsLost:n.packetsLost,jitter:n.jitter,frameWidth:n.frameWidth,frameHeight:n.frameHeight,framesPerSecond:n.framesPerSecond}:{index:t,timestamp:n.timestamp,bytesReceived:n.bytesReceived-e[t-1].bytesReceived,packetsReceived:n.packetsReceived-e[t-1].packetsReceived,packetsLost:n.packetsLost-e[t-1].packetsLost,jitter:n.jitter,frameWidth:n.frameWidth,frameHeight:n.frameHeight,framesPerSecond:n.framesPerSecond})}let F=!1;const _=(e,a)=>F&&console.log(e,a),re=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ie(e,a){let n=[],t=0,r=0,i;return setInterval(()=>{e.getStats().then(m=>{m.forEach(o=>{if(o.type==="inbound-rtp"&&o.kind==="video"){if(r=n.length-1,o&&n[r]){const h=o.bytesReceived,l=n[r].bytesReceived;let f=i;i=h-l>0;let S;if(f!==i){if(i)t=n.length;else{const w=n.slice(t),u=t===0?void 0:n[t-1];S=ne(w,u),S=S.sort((s,y)=>y.packetsLost-s.packetsLost).slice(0,5)}a==null||a(i?k.Start:k.Stop,S)}}n.push(o)}})})},500)}async function ae(e,{debug:a=!1,callbacks:n,auth:t,baseURL:r=R}){F=a;const{startConnection:i,sendStreamRequest:d,close:m,createStream:o,addIceCandidate:h}=e.videoType===E.Clip?ee(t,r):te(t,r),{id:l,offer:f,ice_servers:S,session_id:w}=await o(e),u=new re({iceServers:S}),s=u.createDataChannel("JanusDataChannel");if(!w)throw new Error("Could not create session_id");const y=ie(u,n.onVideoStateChange);u.onicecandidate=c=>{_("peerConnection.onicecandidate",c),c.candidate&&c.candidate.sdpMid&&c.candidate.sdpMLineIndex!==null&&h(l,{candidate:c.candidate.candidate,sdpMid:c.candidate.sdpMid,sdpMLineIndex:c.candidate.sdpMLineIndex},w)},u.oniceconnectionstatechange=()=>{var c;_("peerConnection.oniceconnectionstatechange => "+u.iceConnectionState),(c=n.onConnectionStateChange)==null||c.call(n,u.iceConnectionState)},u.ontrack=c=>{var p;_("peerConnection.ontrack",c),(p=n.onSrcObjectReady)==null||p.call(n,c.streams[0])},s.onmessage=c=>{var p,A;if(s.readyState==="open"){const[v,I]=c.data.split(":");v===M.StreamStarted?console.log("StreamStarted",v,I):v===M.StreamDone?console.log("StreamDone"):v===M.StreamFailed?((p=n.onVideoStateChange)==null||p.call(n,k.Stop,{event:v,data:I}),clearInterval(y),console.log("StreamFailed")):(A=n.onMessage)==null||A.call(n,v,decodeURIComponent(I))}},await u.setRemoteDescription(f),_("set remote description OK");const C=await u.createAnswer();return _("create answer OK"),await u.setLocalDescription(C),_("set local description OK"),await i(l,C,w),_("start connection OK"),{speak(c){return d(l,w,c)},async disconnect(){var c,p;l&&(u&&(u.close(),u.oniceconnectionstatechange=null,u.onnegotiationneeded=null,u.onicecandidate=null,u.ontrack=null),await m(l,w).catch(A=>{}),(c=n.onConnectionStateChange)==null||c.call(n,"closed"),(p=n.onVideoStateChange)==null||p.call(n,k.Stop),clearInterval(y))},sessionId:w,streamId:l}}function se(e,a){var n;return(n=e.knowledge)!=null&&n.id?a.getKnowledge(e.knowledge.id).then(t=>(t==null?void 0:t.starter_message)||[]):[]}function oe(e){return e.presenter.type===E.Clip?{videoType:E.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id}:{videoType:E.Talk,source_url:e.presenter.source_url}}function U(e,a,n,t){return new Promise(async(r,i)=>{const d=await ae(oe(e),{...a,callbacks:{...a.callbacks,onConnectionStateChange:async m=>{var o,h;if(m==="connected")try{t||(t=await n.newChat(e.id)),r({chat:t,streamingManager:d})}catch(l){console.error(l),i(new Error("Cannot create new chat"))}else m==="failed"&&i(new Error("Cannot create connection"));(h=(o=a.callbacks).onConnectionStateChange)==null||h.call(o,m)}}})})}function de(e,a,n){return j(a,n||R).getById(e)}async function ce(e,a){var w,u;const n=a.baseURL||R,t=a.wsURL||q,r=new AbortController,i=j(a.auth,n),d=V(a.auth,n),m=Q(a.auth,n),o=typeof e=="string"?await i.getById(e):e;(u=(w=a.callbacks)==null?void 0:w.onAgentReady)==null||u.call(w,o);const h=await G(a.auth,t,a.callbacks.onChatEvents);let{chat:l,streamingManager:f}=await U(o,a,i);const S=await se(o,m);return{agent:o,chatId:l.id,starterMessages:S,async reconnect(){const{streamingManager:s}=await U(o,a,i,l);f=s},disconnect(){return r.abort(),h.disconnect(),f.disconnect()},chat(s){if(s.length===0)throw new Error("Messages cannot be empty");return s[s.length-1].created_at=new Date().toISOString(),s[s.length-1].role||(s[s.length-1].role="user"),i.chat(o.id,l.id,{sessionId:f.sessionId,streamId:f.streamId,messages:s},{signal:r.signal})},rate(s,y,C){var p,A,v;const c=((p=y.matches)==null?void 0:p.map(I=>[I.document_id,I.id]))??[];return C?d.update(C,{agent_id:o.id,knowledge_id:((A=o.knowledge)==null?void 0:A.id)??"",chat_id:l.id,score:s,matches:c}):d.create({agent_id:o.id,knowledge_id:((v=o.knowledge)==null?void 0:v.id)??"",chat_id:l.id,score:s,matches:c})},deleteRate(s){return d.delete(s)},speak(s){function y(){if(s.type==="text"){let C=o.presenter.voice;return s.provider&&(C=s.provider),{type:"text",provider:C,input:s.input,ssml:s.ssml||!1}}else if(s.type==="audio")return{type:"audio",audio_url:s.audio_url};throw new Error("Invalid payload")}return f.speak({script:y()})}}}g.ChatMode=O,g.ChatProgress=N,g.DocumentType=W,g.KnowledgeType=D,g.PlanGroup=K,g.Providers=$,g.RateState=T,g.Subject=B,g.UserPlan=b,g.VoiceAccess=P,g.createAgentManager=ce,g.getAgent=de,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(g,$){typeof exports=="object"&&typeof module<"u"?$(exports):typeof define=="function"&&define.amd?define(["exports"],$):(g=typeof globalThis<"u"?globalThis:g||self,$(g.index={}))})(this,function(g){"use strict";var $=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))($||{}),P=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(P||{}),k=(e=>(e.Start="START",e.Stop="STOP",e))(k||{}),M=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e.StreamFailed="stream/error",e))(M||{}),b=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(b||{}),K=(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))(K||{}),T=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(T||{}),O=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))(O||{}),N=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(N||{}),B=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(B||{}),D=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(D||{}),W=(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))(W||{}),E=(e=>(e.Clip="clip",e.Talk="talk",e))(E||{});const R="https://api.d-id.com",q="wss://notifications.d-id.com",z=()=>Math.random().toString(16).slice(2);function J(){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 x=z();function H(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}.${J()}_${x}`;throw new Error(`Unknown auth type: ${e}`)}function L(e,a=R){const n=async(t,r)=>{const i=await fetch(a+(t!=null&&t.startsWith("/")?t:`/${t}`),{...r,headers:{...r==null?void 0:r.headers,Authorization:H(e),"Content-Type":"application/json"}});if(!i.ok){let d=await i.text().catch(()=>"Failed to fetch");throw new Error(d)}return i.json()};return{get(t,r){return n(t,{...r,method:"GET"})},post(t,r,i){return n(t,{...i,body:JSON.stringify(r),method:"POST"})},delete(t,r,i){return n(t,{...i,body:JSON.stringify(r),method:"DELETE"})},patch(t,r,i){return n(t,{...i,body:JSON.stringify(r),method:"PATCH"})}}}function j(e,a=R){const n=L(e,`${a}/agents`);return{create(t,r){return n.post("/",t,r)},getAgents(t,r){return n.get(`/${t?`?tag=${t}`:""}`,r).then(i=>i??[])},getById(t,r){return n.get(`/${t}`,r)},delete(t,r){return n.delete(`/${t}`,void 0,r)},update(t,r,i){return n.patch(`/${t}`,r,i)},newChat(t,r){return n.post(`/${t}/chat`,void 0,r)},chat(t,r,i,d){return n.post(`/${t}/chat/${r}`,i,d)}}}function Q(e,a=R){const n=L(e,`${a}/knowledge`);return{createKnowledge(t,r){return n.post("/",t,r)},getKnowledgeBase(t){return n.get("/",t)},getKnowledge(t,r){return n.get(`/${t}`,r)},deleteKnowledge(t,r){return n.delete(`/${t}`,void 0,r)},createDocument(t,r,i){return n.post(`/${t}/documents`,r,i)},deleteDocument(t,r,i){return n.delete(`/${t}/documents/${r}`,void 0,i)},getDocuments(t,r){return n.get(`/${t}/documents`,r)},getDocument(t,r,i){return n.get(`/${t}/documents/${r}`,i)},getRecords(t,r,i){return n.get(`/${t}/documents/${r}/records`,i)},query(t,r,i){return n.post(`/${t}/query`,{query:r},i)}}}function V(e,a=R){const n=L(e,`${a}/chats/ratings`);return{create(t,r){return n.post("/",t,r)},getByKnowledge(t,r){return n.get(`/${t}`,r).then(i=>i??[])},update(t,r,i){return n.patch(`/${t}`,r,i)},delete(t,r){return n.delete(`/${t}`,r)}}}const X=e=>new Promise(a=>setTimeout(a,e));function Y(e){return new Promise((a,n)=>{const{callbacks:t,host:r,auth:i}=e,{onMessage:d=null,onOpen:m=null,onClose:o=null,onError:h=null}=t||{},l=new WebSocket(`${r}?authorization=${H(i)}`);l.onmessage=d,l.onclose=o,l.onerror=f=>{console.error(f),h==null||h(f),n(f)},l.onopen=f=>{m==null||m(f),a(l)}})}async function Z(e){const{retries:a=1}=e;let n=null;for(let t=0;(n==null?void 0:n.readyState)!==WebSocket.OPEN;t++)try{n=await Y(e)}catch(r){if(t===a)throw r;await X(t*500)}return n}async function G(e,a,n){const t=n?[n]:[],r=await Z({auth:e,host:a,callbacks:{onMessage:i=>{const d=JSON.parse(i.data);t.forEach(m=>m(d.event,d))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:i=>t.push(i)}}function ee(e,a){const n=L(e,a);return{createStream(t){return n.post("/clips/streams",{driver_id:t.driver_id,presenter_id:t.presenter_id,compatibility_mode:t.compatibility_mode})},startConnection(t,r,i){return n.post(`/clips/streams/${t}/sdp`,{session_id:i,answer:r})},addIceCandidate(t,r,i){return n.post(`/clips/streams/${t}/ice`,{session_id:i,...r})},sendStreamRequest(t,r,i){return n.post(`/clips/streams/${t}`,{session_id:r,...i})},close(t,r){return n.delete(`/clips/streams/${t}`,{session_id:r})}}}function te(e,a){const n=L(e,a);return{createStream(t,r){return n.post("/talks/streams",{source_url:t.source_url,driver_url:t.driver_url,face:t.face,config:t.config},r)},startConnection(t,r,i,d){return n.post(`/talks/streams/${t}/sdp`,{session_id:i,answer:r},d)},addIceCandidate(t,r,i,d){return n.post(`/talks/streams/${t}/ice`,{session_id:i,...r},d)},sendStreamRequest(t,r,i,d){return n.post(`/talks/streams/${t}`,{session_id:r,...i},d)},close(t,r,i){return n.delete(`/talks/streams/${t}`,{session_id:r},i)}}}function ne(e,a){return e.map((n,t)=>t===0?a?{index:t,timestamp:n.timestamp,bytesReceived:n.bytesReceived-a.bytesReceived,packetsReceived:n.packetsReceived-a.packetsReceived,packetsLost:n.packetsLost-a.packetsLost,jitter:n.jitter,frameWidth:n.frameWidth,frameHeight:n.frameHeight,framesPerSecond:n.framesPerSecond}:{index:t,timestamp:n.timestamp,bytesReceived:n.bytesReceived,packetsReceived:n.packetsReceived,packetsLost:n.packetsLost,jitter:n.jitter,frameWidth:n.frameWidth,frameHeight:n.frameHeight,framesPerSecond:n.framesPerSecond}:{index:t,timestamp:n.timestamp,bytesReceived:n.bytesReceived-e[t-1].bytesReceived,packetsReceived:n.packetsReceived-e[t-1].packetsReceived,packetsLost:n.packetsLost-e[t-1].packetsLost,jitter:n.jitter,frameWidth:n.frameWidth,frameHeight:n.frameHeight,framesPerSecond:n.framesPerSecond})}let F=!1;const _=(e,a)=>F&&console.log(e,a),re=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ie(e,a){let n=[],t=0,r=0,i;return setInterval(()=>{e.getStats().then(m=>{m.forEach(o=>{if(o.type==="inbound-rtp"&&o.kind==="video"){if(r=n.length-1,o&&n[r]){const h=o.bytesReceived,l=n[r].bytesReceived;let f=i;i=h-l>0;let y;if(f!==i){if(i)t=n.length;else{const w=n.slice(t),u=t===0?void 0:n[t-1];y=ne(w,u),y=y.sort((s,v)=>v.packetsLost-s.packetsLost).slice(0,5)}a==null||a(i?k.Start:k.Stop,y)}}n.push(o)}})})},500)}async function ae(e,{debug:a=!1,callbacks:n,auth:t,baseURL:r=R}){F=a;const{startConnection:i,sendStreamRequest:d,close:m,createStream:o,addIceCandidate:h}=e.videoType===E.Clip?ee(t,r):te(t,r),{id:l,offer:f,ice_servers:y,session_id:w}=await o(e),u=new re({iceServers:y}),s=u.createDataChannel("JanusDataChannel");if(!w)throw new Error("Could not create session_id");const v=ie(u,n.onVideoStateChange);u.onicecandidate=c=>{_("peerConnection.onicecandidate",c),c.candidate&&c.candidate.sdpMid&&c.candidate.sdpMLineIndex!==null&&h(l,{candidate:c.candidate.candidate,sdpMid:c.candidate.sdpMid,sdpMLineIndex:c.candidate.sdpMLineIndex},w)},u.oniceconnectionstatechange=()=>{var c;_("peerConnection.oniceconnectionstatechange => "+u.iceConnectionState),(c=n.onConnectionStateChange)==null||c.call(n,u.iceConnectionState)},u.ontrack=c=>{var p;_("peerConnection.ontrack",c),(p=n.onSrcObjectReady)==null||p.call(n,c.streams[0])},s.onmessage=c=>{var p,A;if(s.readyState==="open"){const[S,I]=c.data.split(":");S===M.StreamStarted?console.log("StreamStarted",S,I):S===M.StreamDone?console.log("StreamDone"):S===M.StreamFailed?((p=n.onVideoStateChange)==null||p.call(n,k.Stop,{event:S,data:I}),clearInterval(v),console.log("StreamFailed")):(A=n.onMessage)==null||A.call(n,S,decodeURIComponent(I))}},await u.setRemoteDescription(f),_("set remote description OK");const C=await u.createAnswer();return _("create answer OK"),await u.setLocalDescription(C),_("set local description OK"),await i(l,C,w),_("start connection OK"),{speak(c){return d(l,w,c)},async disconnect(){var c,p;l&&(u&&(u.close(),u.oniceconnectionstatechange=null,u.onnegotiationneeded=null,u.onicecandidate=null,u.ontrack=null),await m(l,w).catch(A=>{}),(c=n.onConnectionStateChange)==null||c.call(n,"closed"),(p=n.onVideoStateChange)==null||p.call(n,k.Stop),clearInterval(v))},sessionId:w,streamId:l}}function se(e,a){var n;return(n=e.knowledge)!=null&&n.id?a.getKnowledge(e.knowledge.id).then(t=>(t==null?void 0:t.starter_message)||[]):[]}function oe(e){return e.presenter.type===E.Clip?{videoType:E.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id}:{videoType:E.Talk,source_url:e.presenter.source_url}}function U(e,a,n,t){return new Promise(async(r,i)=>{const d=await ae(oe(e),{...a,callbacks:{...a.callbacks,onConnectionStateChange:async m=>{var o,h;if(m==="connected")try{t||(t=await n.newChat(e.id)),r({chat:t,streamingManager:d})}catch(l){console.error(l),i(new Error("Cannot create new chat"))}else m==="failed"&&i(new Error("Cannot create connection"));(h=(o=a.callbacks).onConnectionStateChange)==null||h.call(o,m)}}})})}function de(e,a,n){return j(a,n||R).getById(e)}async function ce(e,a){var w,u;const n=a.baseURL||R,t=a.wsURL||q,r=new AbortController,i=j(a.auth,n),d=V(a.auth,n),m=Q(a.auth,n),o=typeof e=="string"?await i.getById(e):e;(u=(w=a.callbacks)==null?void 0:w.onAgentReady)==null||u.call(w,o);const h=await G(a.auth,t,a.callbacks.onChatEvents);let{chat:l,streamingManager:f}=await U(o,a,i);const y=await se(o,m);return{agent:o,chatId:l.id,starterMessages:y,async reconnect(){const{streamingManager:s}=await U(o,a,i,l);f=s},disconnect(){return r.abort(),h.disconnect(),f.disconnect()},chat(s,v=!1){if(s.length===0)throw new Error("Messages cannot be empty");return s[s.length-1].created_at=new Date().toISOString(),s[s.length-1].role||(s[s.length-1].role="user"),i.chat(o.id,l.id,{sessionId:f.sessionId,streamId:f.streamId,messages:s,append_chat:v},{signal:r.signal})},rate(s,v,C){var p,A,S;const c=((p=v.matches)==null?void 0:p.map(I=>[I.document_id,I.id]))??[];return C?d.update(C,{agent_id:o.id,knowledge_id:((A=o.knowledge)==null?void 0:A.id)??"",chat_id:l.id,score:s,matches:c}):d.create({agent_id:o.id,knowledge_id:((S=o.knowledge)==null?void 0:S.id)??"",chat_id:l.id,score:s,matches:c})},deleteRate(s){return d.delete(s)},speak(s){function v(){if(s.type==="text"){let C=o.presenter.voice;return s.provider&&(C=s.provider),{type:"text",provider:C,input:s.input,ssml:s.ssml||!1}}else if(s.type==="audio")return{type:"audio",audio_url:s.audio_url};throw new Error("Invalid payload")}return f.speak({script:v()})}}}g.ChatMode=O,g.ChatProgress=N,g.DocumentType=W,g.KnowledgeType=D,g.PlanGroup=K,g.Providers=$,g.RateState=T,g.Subject=B,g.UserPlan=b,g.VoiceAccess=P,g.createAgentManager=ce,g.getAgent=de,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})});
|
|
@@ -95,8 +95,9 @@ export interface AgentManager {
|
|
|
95
95
|
/**
|
|
96
96
|
* Method to send a chat message to existing chat with the agent
|
|
97
97
|
* @param messages
|
|
98
|
+
* @param append_chat: when true, append to existing agent chat, rather than creating a new one.
|
|
98
99
|
*/
|
|
99
|
-
chat: (messages: Message[]) => Promise<ChatResponse>;
|
|
100
|
+
chat: (messages: Message[], append_chat?: boolean) => Promise<ChatResponse>;
|
|
100
101
|
/**
|
|
101
102
|
* Method to rate the answer in chat
|
|
102
103
|
* @param score: 1 | -1 - score of the answer. 1 for positive, -1 for negative
|