@d-id/client-sdk 1.0.19-beta.9 → 1.0.19-beta.91

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.
Files changed (37) hide show
  1. package/README.md +4 -0
  2. package/dist/index.js +647 -401
  3. package/dist/index.umd.cjs +1 -1
  4. package/dist/src/{lib/api → api}/agents.d.ts +5 -2
  5. package/dist/src/api/clipStream.d.ts +2 -0
  6. package/dist/src/{lib/api → api}/getClient.d.ts +2 -2
  7. package/dist/src/{lib/api → api}/knowledge.d.ts +3 -2
  8. package/dist/src/api/talkStream.d.ts +2 -0
  9. package/dist/src/auth/getAuthHeader.d.ts +4 -0
  10. package/dist/src/connectToSocket.d.ts +11 -0
  11. package/dist/src/{lib/createAgentManager.d.ts → createAgentManager.d.ts} +4 -5
  12. package/dist/src/createStreamingManager.d.ts +21 -0
  13. package/dist/src/{lib/environment.d.ts → environment.d.ts} +0 -1
  14. package/dist/src/index.d.ts +2 -8
  15. package/dist/src/services/mixpanel.d.ts +18 -0
  16. package/dist/src/types/StreamScript.d.ts +1 -1
  17. package/dist/src/types/auth.d.ts +0 -2
  18. package/dist/src/types/entities/agents/agent.d.ts +24 -1
  19. package/dist/src/types/entities/agents/chat.d.ts +13 -6
  20. package/dist/src/types/entities/agents/knowledge.d.ts +1 -0
  21. package/dist/src/types/entities/agents/manager.d.ts +56 -24
  22. package/dist/src/types/entities/agents/presenter.d.ts +3 -0
  23. package/dist/src/types/face-rect.d.ts +6 -0
  24. package/dist/src/types/index.d.ts +2 -3
  25. package/dist/src/types/stream/api/clip.d.ts +6 -0
  26. package/dist/src/types/stream/api/talk.d.ts +4 -0
  27. package/dist/src/types/stream/rtc.d.ts +3 -3
  28. package/dist/src/types/stream/stream.d.ts +21 -4
  29. package/dist/src/utils/analytics.d.ts +12 -0
  30. package/dist/src/{lib/utils → utils}/webrtc.d.ts +1 -1
  31. package/package.json +10 -11
  32. package/dist/src/lib/api/clipStream.d.ts +0 -2
  33. package/dist/src/lib/api/ratings.d.ts +0 -7
  34. package/dist/src/lib/api/talkStream.d.ts +0 -2
  35. package/dist/src/lib/auth/getAuthHeader.d.ts +0 -2
  36. package/dist/src/lib/connectToSocket.d.ts +0 -9
  37. package/dist/src/lib/createStreamingManager.d.ts +0 -27
@@ -1 +1 @@
1
- (function(s,w){typeof exports=="object"&&typeof module<"u"?w(exports):typeof define=="function"&&define.amd?define(["exports"],w):(s=typeof globalThis<"u"?globalThis:s||self,w(s.index={}))})(this,function(s){"use strict";const w="https://api.d-id.com",ee="wss://notifications.d-id.com";function b(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}.${e.externalId}`;throw new Error(`Unknown auth type: ${e}`)}function $(e,i=w){const a=async(t,n)=>{const r=await fetch(i+(t!=null&&t.startsWith("/")?t:`/${t}`),{...n,headers:{...n==null?void 0:n.headers,Authorization:b(e),"Content-Type":"application/json"}});if(!r.ok){let o=await r.text().catch(()=>"Failed to fetch");throw new Error(o)}return r.json()};return{get(t,n){return a(t,{...n,method:"GET"})},post(t,n,r){return a(t,{...r,body:JSON.stringify(n),method:"POST"})},delete(t,n,r){return a(t,{...r,body:JSON.stringify(n),method:"DELETE"})},patch(t,n,r){return a(t,{...r,body:JSON.stringify(n),method:"PATCH"})}}}function K(e,i=w){const a=$(e,`${i}/agents`);return{create(t,n){return a.post("/",t,n)},getAgents(t,n){return a.get(`/${t?`?tag=${t}`:""}`,n).then(r=>r??[])},getById(t,n){return a.get(`/${t}`,n)},delete(t,n){return a.delete(`/${t}`,void 0,n)},update(t,n,r){return a.patch(`/${t}`,n,r)},newChat(t,n){return a.post(`/${t}/chat`,void 0,n)},chat(t,n,r,o){return a.post(`/${t}/chat/${n}`,r,o)}}}function H(e,i=w){const a=$(e,`${i}/knowledge`);return{createKnowledge(t,n){return a.post("/",t,n)},getKnowledgeBase(t){return a.get("/",t)},getKnowledge(t,n){return a.get(`/${t}`,n)},deleteKnowledge(t,n){return a.delete(`/${t}`,void 0,n)},createDocument(t,n,r){return a.post(`/${t}/documents`,n,r)},deleteDocument(t,n,r){return a.delete(`/${t}/documents/${n}`,void 0,r)},getDocuments(t,n){return a.get(`/${t}/documents`,n)},getDocument(t,n,r){return a.get(`/${t}/documents/${n}`,r)},getRecords(t,n,r){return a.get(`/${t}/documents/${n}/records`,r)},query(t,n,r){return a.post(`/${t}/query`,{query:n},r)}}}function U(e,i=w){const a=$(e,`${i}/chats/ratings`);return{create(t,n){return a.post("/",t,n)},getByKnowledge(t,n){return a.get(`/${t}`,n).then(r=>r??[])},update(t,n,r){return a.patch(`/${t}`,n,r)},delete(t,n){return a.delete(`/${t}`,n)}}}const te=e=>new Promise(i=>setTimeout(i,e));function ne(e){return new Promise((i,a)=>{const{callbacks:t,host:n,auth:r}=e,{onMessage:o=null,onOpen:u=null,onClose:m=null,onError:h=null}=t||{},f=new WebSocket(`${n}?authorization=${b(r)}`);console.log(`AUTH: ${n}?authorization=${b(r)}`),f.onmessage=o,f.onclose=m,f.onerror=l=>{console.log(l),console.log(`onerror: ${l}`),h==null||h(l),a(l)},f.onopen=l=>{u==null||u(l),console.log(`oneronopenror: ${f}`),i(f)}})}async function ae(e){const{retries:i=1}=e;let a=null;for(let t=0;(a==null?void 0:a.readyState)!==WebSocket.OPEN;t++)try{a=await ne(e)}catch(n){if(t===i)throw n;await te(t*500)}return a}async function q(e,i,a){const t=a?[a]:[],n=await ae({auth:e,host:i,callbacks:{onMessage:r=>{const o=JSON.parse(r.data);console.log("WS/",r.data),t.forEach(u=>u(o.event,o))}}});return{socket:n,terminate:()=>n.close(),subscribeToEvents:r=>t.push(r)}}var z=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(z||{}),B=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(B||{}),M=(e=>(e.Start="START",e.Stop="STOP",e))(M||{}),k=(e=>(e.ChatAnswer="chat/answer",e.ChatPartial="chat/partial",e.StreamDone="stream/done",e.StreamStarted="stream/started",e))(k||{}),N=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(N||{}),J=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e))(J||{}),P=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(P||{}),D=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(D||{}),F=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(F||{}),V=(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))(V||{}),A=(e=>(e.Clip="clip",e.Talk="talk",e))(A||{});function G(e){return e.presenter.type===A.Clip?{videoType:A.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id}:{videoType:A.Talk,source_url:e.presenter.source_url}}function Q(e,i,a,t){return new Promise(async(n,r)=>{const o=await Y(G(e),{...i,callbacks:{...i.callbacks,onConnectionStateChange:async u=>{var m,h;u==="connected"?(t||(t=await a.newChat(e.id)),n({chat:t,streamingManager:o})):u==="failed"&&r(new Error("Cannot create connection")),(h=(m=i.callbacks).onConnectionStateChange)==null||h.call(m,u)},onMessage:(u,m)=>{var h,f;u===k.ChatAnswer&&(console.log("ChatAnswer",u,m),(f=(h=i.callbacks).onChatEvents)==null||f.call(h,P.Answer,{content:m,event:P.Answer}))}}})})}function re(e,i,a){return K(i,a||w).getById(e)}async function ie(e,i){const a=i.baseURL||w,t=i.wsURL||ee,n=new AbortController,r=K(i.auth,a),o=U(i.auth,a),u=H(i.auth,a);console.log(`AUTH: ${i.auth.clientKey},${i.auth.externalId}, ${t}`);const m=await r.getById(e),h=await q(i.auth,t,i.callbacks.onChatEvents);let{chat:f,streamingManager:l}=await Q(m,i,r);return{agent:m,async reconnectToChat(){const{streamingManager:d}=await Q(m,i,r,f);l=d},terminate(){return n.abort(),h.terminate(),l.terminate()},chatId:f.id,chat(d){return r.chat(e,f.id,{sessionId:l.sessionId,streamId:l.streamId,messages:d},{signal:n.signal})},rate(d,p){return p?o.update(p,d):o.create(d)},deleteRate(d){return o.delete(d)},speak(d){let p;return d.type==="text"?p={script:{type:"text",provider:d.provider,input:d.input,ssml:d.ssml||!1}}:d.type==="audio"&&(p={script:{type:"audio",audio_url:d.audio_url}}),l.speak(p)},getStarterMessages(){var d,p;return(d=m.knowledge)!=null&&d.id?u.getKnowledge((p=m.knowledge)==null?void 0:p.id).then(v=>(v==null?void 0:v.starter_message)||[]):Promise.resolve([])}}}function se(e,i){const a=$(e,i);return{createStream(t){return a.post("/clips/streams",{driver_id:t.driver_id,presenter_id:t.presenter_id,compatibility_mode:t.compatibility_mode})},startConnection(t,n,r){return a.post(`/clips/streams/${t}/sdp`,{session_id:r,answer:n})},addIceCandidate(t,n,r){return a.post(`/clips/streams/${t}/ice`,{session_id:r,...n})},sendStreamRequest(t,n,r){return a.post(`/clips/streams/${t}`,{session_id:n,...r})},close(t,n){return a.delete(`/clips/streams/${t}`,{session_id:n})}}}function oe(e,i){const a=$(e,i);return{createStream(t,n){return a.post("/talks/streams",{source_url:t.source_url,driver_url:t.driver_url,face:t.face,config:t.config},n)},startConnection(t,n,r,o){return a.post(`/talks/streams/${t}/sdp`,{session_id:r,answer:n},o)},addIceCandidate(t,n,r,o){return a.post(`/talks/streams/${t}/ice`,{session_id:r,...n},o)},sendStreamRequest(t,n,r,o){return a.post(`/talks/streams/${t}`,{session_id:n,...r},o)},close(t,n,r){return a.delete(`/talks/streams/${t}`,{session_id:n},r)}}}function ce(e,i){return e.map((a,t)=>t===0?i?{index:t,timestamp:a.timestamp,bytesReceived:a.bytesReceived-i.bytesReceived,packetsReceived:a.packetsReceived-i.packetsReceived,packetsLost:a.packetsLost-i.packetsLost,jitter:a.jitter,frameWidth:a.frameWidth,frameHeight:a.frameHeight,frameRate:a.frameRate}:{index:t,timestamp:a.timestamp,bytesReceived:a.bytesReceived,packetsReceived:a.packetsReceived,packetsLost:a.packetsLost,jitter:a.jitter,frameWidth:a.frameWidth,frameHeight:a.frameHeight,frameRate:a.frameRate}:{index:t,timestamp:a.timestamp,bytesReceived:a.bytesReceived-e[t-1].bytesReceived,packetsReceived:a.packetsReceived-e[t-1].packetsReceived,packetsLost:a.packetsLost-e[t-1].packetsLost,jitter:a.jitter,frameWidth:a.frameWidth,frameHeight:a.frameHeight,frameRate:a.frameRate})}let X=!1;const S=(e,i)=>X&&console.log(e,i),de=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);async function Y(e,{debug:i=!1,callbacks:a,auth:t,baseURL:n=w}){X=i;const r={...a},{startConnection:o,sendStreamRequest:u,close:m,createStream:h,addIceCandidate:f}=e.videoType===A.Clip?se(t,n):oe(t,n),{id:l,offer:d,ice_servers:p,session_id:v}=await h(e),g=new de({iceServers:p}),Z=g.createDataChannel("JanusDataChannel"),y=[];let R=0,O;if(!v)throw new Error("Could not create session_id");g.onicecandidate=c=>{S("peerConnection.onicecandidate",c),c.candidate&&c.candidate.sdpMid&&c.candidate.sdpMLineIndex!==null&&f(l,{candidate:c.candidate.candidate,sdpMid:c.candidate.sdpMid,sdpMLineIndex:c.candidate.sdpMLineIndex},v)},g.oniceconnectionstatechange=()=>{var c;S("peerConnection.oniceconnectionstatechange => "+g.iceConnectionState),(c=r.onConnectionStateChange)==null||c.call(r,g.iceConnectionState)},g.ontrack=c=>{var C;S("peerConnection.ontrack",c),(C=r.onSrcObjectReady)==null||C.call(r,c.streams[0])},Z.onmessage=c=>{var C,L,x;if(Z.readyState==="open"){const[_,T]=c.data.split(":");if(_===k.StreamStarted)console.log("StreamStarted",_,T),R=y.length,O=setInterval(()=>{g.getStats().then(W=>{W.forEach(I=>{I.type==="inbound-rtp"&&I.kind==="video"&&y.push(I)})})},1e3),(C=r.onVideoStateChange)==null||C.call(r,M.Start);else if(_===k.StreamDone){console.log("StreamDone",_,T),clearInterval(O);const E=y.slice(R);if(E){const W=R===0?void 0:y[R-1],I=ce(E,W);R=y.length,(L=r.onVideoStateChange)==null||L.call(r,M.Stop,I.sort((le,ue)=>ue.packetsLost-le.packetsLost).slice(0,5))}}else(x=r.onMessage)==null||x.call(r,_,decodeURIComponent(T))}},await g.setRemoteDescription(d),S("set remote description OK");const j=await g.createAnswer();return S("create answer OK"),await g.setLocalDescription(j),S("set local description OK"),await o(l,j,v),S("start connection OK"),{speak(c){return u(l,v,c)},async terminate(){var c,C;l&&(g&&(g.close(),g.oniceconnectionstatechange=null,g.onnegotiationneeded=null,g.onicecandidate=null,g.ontrack=null),await m(l,v).catch(L=>{}),(c=r.onConnectionStateChange)==null||c.call(r,"closed"),(C=r.onVideoStateChange)==null||C.call(r,M.Stop))},sessionId:v,streamId:l,onCallback(c,C){r[c]=C}}}s.ChatMode=J,s.ChatProgress=P,s.DocumentType=V,s.KnowledgeType=F,s.Providers=z,s.RateState=N,s.SocketManager=q,s.StreamEvents=k,s.Subject=D,s.VoiceAccess=B,s.createAgentManager=ie,s.createAgentsApi=K,s.createClient=$,s.createKnowledgeApi=H,s.createRatingsApi=U,s.createStreamingManager=Y,s.getAgent=re,s.getAgentStreamArgs=G,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
1
+ (function(h,P){typeof exports=="object"&&typeof module<"u"?P(exports):typeof define=="function"&&define.amd?define(["exports"],P):(h=typeof globalThis<"u"?globalThis:h||self,P(h.index={}))})(this,function(h){"use strict";var P=(e=>(e.TRIAL="trial",e.BASIC="basic",e.ENTERPRISE="enterprise",e.LITE="lite",e.ADVANCED="advanced",e))(P||{}),H=(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))(H||{}),J=(e=>(e.Unrated="Unrated",e.Positive="Positive",e.Negative="Negative",e))(J||{}),k=(e=>(e.Functional="Functional",e.TextOnly="TextOnly",e.Maintenance="Maintenance",e.Playground="Playground",e))(k||{}),x=(e=>(e.Embed="embed",e.Query="query",e.Partial="partial",e.Answer="answer",e.Complete="done",e))(x||{}),q=(e=>(e.KnowledgeProcessing="knowledge/processing",e.KnowledgeIndexing="knowledge/indexing",e.KnowledgeFailed="knowledge/error",e.KnowledgeDone="knowledge/done",e))(q||{}),Q=(e=>(e.Knowledge="knowledge",e.Document="document",e.Record="record",e))(Q||{}),X=(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))(X||{}),M=(e=>(e.Clip="clip",e.Talk="talk",e))(M||{}),b=(e=>(e.Start="START",e.Stop="STOP",e))(b||{}),A=(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))(A||{}),_=(e=>(e[e.New=0]="New",e[e.Fail=1]="Fail",e[e.Connected=2]="Connected",e[e.Connecting=3]="Connecting",e[e.Terminating=4]="Terminating",e))(_||{}),Y=(e=>(e.Amazon="amazon",e.Microsoft="microsoft",e.Afflorithmics="afflorithmics",e.Elevenlabs="elevenlabs",e))(Y||{}),Z=(e=>(e.Public="public",e.Premium="premium",e.Private="private",e))(Z||{});const L="https://api.d-id.com",ce="wss://notifications.d-id.com",de="79f81a83a67430be2bc0fd61042b8faa",F=()=>Math.random().toString(16).slice(2);function G(){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 ge=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}.${G()}_${ge}`;throw new Error(`Unknown auth type: ${e}`)}function V(e,a=L,t){const i=async(r,n)=>{const s=await fetch(a+(r!=null&&r.startsWith("/")?r:`/${r}`),{...n,headers:{...n==null?void 0:n.headers,Authorization:ee(e),"Content-Type":"application/json"}});if(!s.ok){let o=await s.text().catch(()=>"Failed to fetch");throw t&&t(new Error(o),{url:r,options:n,headers:s.headers}),new Error(o)}return s.json()};return{get(r,n){return i(r,{...n,method:"GET"})},post(r,n,s){return i(r,{...s,body:JSON.stringify(n),method:"POST"})},delete(r,n,s){return i(r,{...s,body:JSON.stringify(n),method:"DELETE"})},patch(r,n,s){return i(r,{...s,body:JSON.stringify(n),method:"PATCH"})}}}function te(e,a=L,t){const i=V(e,`${a}/agents`,t);return{create(r,n){return i.post("/",r,n)},getAgents(r,n){return i.get(`/${r?`?tag=${r}`:""}`,n).then(s=>s??[])},getById(r,n){return i.get(`/${r}`,n)},delete(r,n){return i.delete(`/${r}`,void 0,n)},update(r,n,s){return i.patch(`/${r}`,n,s)},newChat(r,n){return i.post(`/${r}/chat`,void 0,n)},chat(r,n,s,o){return i.post(`/${r}/chat/${n}`,s,o)},createRating(r,n,s,o){return i.post(`/${r}/chat/${n}/ratings`,s,o)},updateRating(r,n,s,o,c){return i.patch(`/${r}/chat/${n}/ratings/${s}`,o,c)},deleteRating(r,n,s,o){return i.delete(`/${r}/chat/${n}/ratings/${s}`,o)}}}const le=e=>new Promise(a=>setTimeout(a,e));function ue(e){return new Promise((a,t)=>{const{callbacks:i,host:r,auth:n}=e,{onMessage:s=null,onOpen:o=null,onClose:c=null,onError:m=null}=i||{},C=new WebSocket(`${r}?authorization=${ee(n)}`);C.onmessage=s,C.onclose=c,C.onerror=v=>{console.error(v),m==null||m("Websocket failed to connect",v),t(v)},C.onopen=v=>{o==null||o(v),a(C)}})}async function me(e){const{retries:a=1}=e;let t=null;for(let i=0;(t==null?void 0:t.readyState)!==WebSocket.OPEN;i++)try{t=await ue(e)}catch(r){if(i===a)throw r;await le(i*500)}return t}async function ne(e,a,t){const i=t!=null&&t.onMessage?[t.onMessage]:[],r=await me({auth:e,host:a,callbacks:{onError:t==null?void 0:t.onError,onMessage:n=>{const s=JSON.parse(n.data);i.forEach(o=>o(s.event,s))}}});return{socket:r,disconnect:()=>r.close(),subscribeToEvents:n=>i.push(n)}}function we(e,a,t,i){const r=V(e,`${a}/agents/${t}`,i);return{createStream(n){return r.post("/streams",{driver_id:n.driver_id,presenter_id:n.presenter_id,compatibility_mode:n.compatibility_mode,stream_warmup:n.stream_warmup,type:M.Clip})},startConnection(n,s,o){return r.post(`/streams/${n}/sdp`,{session_id:o,answer:s,type:M.Clip})},addIceCandidate(n,s,o){return r.post(`/streams/${n}/ice`,{session_id:o,...s,type:M.Clip})},sendStreamRequest(n,s,o){return r.post(`/streams/${n}`,{session_id:s,...o,type:M.Clip})},close(n,s){return r.delete(`/streams/${n}`,{session_id:s,type:M.Clip})}}}function he(e,a,t,i){const r=V(e,`${a}/agents/${t}`,i);return{createStream(n,s){return r.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,type:M.Talk},s)},startConnection(n,s,o,c){return r.post(`/streams/${n}/sdp`,{session_id:o,answer:s,type:M.Talk},c)},addIceCandidate(n,s,o,c){return r.post(`/streams/${n}/ice`,{session_id:o,...s,type:M.Talk},c)},sendStreamRequest(n,s,o,c){return r.post(`/streams/${n}`,{session_id:s,...o,type:M.Talk},c)},close(n,s,o){return r.delete(`/streams/${n}`,{session_id:s,type:M.Talk},o)}}}let re=!1;const $=(e,a)=>re&&console.log(e,a),fe=(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection).bind(window);function ae(e){switch(e){case"connected":return _.Connected;case"checking":return _.Connecting;case"failed":return _.Fail;case"new":case"closed":case"disconnected":default:return _.New}}function pe(){let e=0;return a=>{for(const t of a.values())if(t&&t.type==="inbound-rtp"&&t.kind==="video"){const i=t.bytesReceived,r=i-e>0;return e=i,r}return!1}}function ye(e,a,t){const r=Math.max(Math.ceil(10),1);let n=0,s=!1;const o=pe();return setInterval(async()=>{const c=await e.getStats();o(c)?(n=0,s||(a==null||a(b.Start),s=!0)):s&&(n++,n>=r&&(a==null||a(b.Stop),s=!1))},100)}async function ve(e,a,{debug:t=!1,callbacks:i,auth:r,analytics:n,baseURL:s=L}){re=t;let o;const{startConnection:c,sendStreamRequest:m,close:C,createStream:v,addIceCandidate:E}=a.videoType===M.Clip?we(r,s,e,i.onError):he(r,s,e,i.onError),{id:I,offer:W,ice_servers:z,session_id:R}=await v(a),f=new fe({iceServers:z}),d=f.createDataChannel("JanusDataChannel");if(!R)throw new Error("Could not create session_id");const u=ye(f,i.onVideoStateChange);f.onicecandidate=g=>{$("peerConnection.onicecandidate",g),g.candidate&&g.candidate.sdpMid&&g.candidate.sdpMLineIndex!==null?E(I,{candidate:g.candidate.candidate,sdpMid:g.candidate.sdpMid,sdpMLineIndex:g.candidate.sdpMLineIndex},R):E(I,{candidate:null},R)},f.oniceconnectionstatechange=()=>{var w;$("peerConnection.oniceconnectionstatechange => "+f.iceConnectionState);const g=ae(f.iceConnectionState);g===_.Connected?o=setTimeout(()=>{var p;(p=i.onConnectionStateChange)==null||p.call(i,_.Connected)},5e3):(clearTimeout(o),(w=i.onConnectionStateChange)==null||w.call(i,g))},f.ontrack=g=>{var w;$("peerConnection.ontrack",g),(w=i.onSrcObjectReady)==null||w.call(i,g.streams[0])},d.onmessage=g=>{var w;if(d.readyState==="open"){const[p,y]=g.data.split(":");p===A.StreamReady&&(clearTimeout(o),(w=i.onConnectionStateChange)==null||w.call(i,_.Connected))}},await f.setRemoteDescription(W),$("set remote description OK");const l=await f.createAnswer();return $("create answer OK"),await f.setLocalDescription(l),$("set local description OK"),await c(I,l,R),$("start connection OK"),{speak(g){return m(I,R,g)},async disconnect(){var g,w,p;if(I){if(f){if(ae(f.iceConnectionState)===_.New){(g=i.onVideoStateChange)==null||g.call(i,b.Stop),clearInterval(u);return}f.close(),f.oniceconnectionstatechange=null,f.onnegotiationneeded=null,f.onicecandidate=null,f.ontrack=null}try{await C(I,R).catch(y=>{})}catch(y){$("Error on close stream connection",y)}(w=i.onConnectionStateChange)==null||w.call(i,_.New),(p=i.onVideoStateChange)==null||p.call(i,b.Stop),clearInterval(u)}},sessionId:R,streamId:I}}function Me(e){const a={token:e.token||"testKey",distinct_id:e.distinctId||G(),isEnabled:e.isEnabled??!0,agentId:e.agent.id,owner_id:e.agent.owner_id??""};return{...a,getRandom:()=>Math.random().toString(16).slice(2),track(t,i){if(!this.isEnabled)return Promise.reject("MixPanel analytics is disabled on creation");const r={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({data:JSON.stringify([{event:t,properties:{...i,...a,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",r).then(n=>n.json()).catch(n=>console.error(n))}}}function Ce(e){var i,r,n,s,o;const a=()=>/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop";return{$os:`${(()=>{const c=navigator.platform;return c.toLowerCase().includes("win")?"Windows":c.toLowerCase().includes("mac")?"Mac OS X":c.toLowerCase().includes("linux")?"Linux":"Unknown"})()}`,isMobile:`${a()=="Mobile"}`,browser:navigator.userAgent,origin:window.location.origin,agentType:(i=e.presenter)==null?void 0:i.type,agentVoice:{voiceId:(n=(r=e.presenter)==null?void 0:r.voice)==null?void 0:n.voice_id,provider:(o=(s=e.presenter)==null?void 0:s.voice)==null?void 0:o.type}}}const Se=1080;function _e(e,a){if(e.presenter){if(e.presenter.type===M.Clip)return{videoType:M.Clip,driver_id:e.presenter.driver_id,presenter_id:e.presenter.presenter_id,stream_warmup:!0}}else throw new Error("Presenter is not initialized");const t=a||(e.presenter.stitch?Se:void 0);return{videoType:M.Talk,source_url:e.presenter.source_url,stream_warmup:!0,...t&&{output_resolution:t}}}function B(e,a,t,i,r){return new Promise(async(n,s)=>{let o=r;const c=await ve(e.id,_e(e,a.outputResolution),{...a,analytics:i,callbacks:{...a.callbacks,onConnectionStateChange:async m=>{var C,v;if(m===_.Connected)try{o||(o=await t.newChat(e.id),i.track("agent-chat",{event:"created",chat_id:o.id,agent_id:e.id})),c&&n({chat:o,streamingManager:c})}catch(E){console.error(E),s("Cannot create new chat")}else m===_.Fail&&s(new Error("Cannot create connection"));(v=(C=a.callbacks).onConnectionStateChange)==null||v.call(C,m)},onVideoStateChange(m){var C,v;(v=(C=a.callbacks).onVideoStateChange)==null||v.call(C,m)}}}).catch(s)})}function Ie(e,a,t){return te(a,t||L).getById(e)}function j(e){let a="";if(e.greetings&&e.greetings.length>0){const t=Math.floor(Math.random()*e.greetings.length);a=e.greetings[t]}else a=`Hi! I'm ${e.preview_name}, welcome to agents. How can I help you?`;return[{content:a,id:F(),role:"assistant",created_at:new Date().toISOString()}]}async function ke(e,a){var z,R,f;const t={messages:[],chatMode:a.mode||k.Functional};let i=-1;const r=a.wsURL||ce,n=a.baseURL||L,s=a.mixpanelKey||de,o=te(a.auth,n,a.callbacks.onError),c=await o.getById(e);t.messages=j(c),(R=(z=a.callbacks).onNewMessage)==null||R.call(z,t.messages);const m=Me({token:s,agent:c,...a});m.track("agent-sdk",{event:"loaded",...Ce(c)});const C={onMessage:(d,u)=>{var l,g,w,p;if("content"in u){const{content:y}=u,S=t.messages[t.messages.length-1];(S==null?void 0:S.role)==="assistant"&&(i<t.messages.length&&(S.content=d===x.Partial?S.content+y:y),d===x.Answer&&(i=t.messages.length)),d===x.Answer&&m.track("agent-message-received",{messages:t.messages.length}),(g=(l=a.callbacks).onNewMessage)==null||g.call(l,t.messages)}else{if([A.StreamVideoCreated,A.StreamVideoDone,A.StreamVideoError,A.StreamVideoRejected].includes(d)){const y=d.split("/")[1];m.track("agent-video",{...u,event:y})}[A.StreamFailed,A.StreamVideoError,A.StreamVideoRejected].includes(d)&&((p=(w=a.callbacks).onError)==null||p.call(w,new Error(`Stream failed with event ${d}`),{data:u}))}}};async function v(){var g,w,p,y,S;const d=await ne(a.auth,r,C),{streamingManager:u,chat:l}=await B(c,a,o,m,t.chat);i=-1,t.messages.length===0&&(t.messages=j(c),(w=(g=a.callbacks).onNewMessage)==null||w.call(g,t.messages)),l!=null&&l.id&&l.id!==((p=t.chat)==null?void 0:p.id)&&((S=(y=a.callbacks).onNewChat)==null||S.call(y,l==null?void 0:l.id)),t.streamingManager=u,t.socketManager=d,t.chat=l,I(k.Functional),m.track("agent-chat",{event:"connect",chatId:l.id,agentId:c.id})}async function E(){var d,u,l,g,w;(d=t.socketManager)==null||d.disconnect(),await((u=t.streamingManager)==null?void 0:u.disconnect()),delete t.streamingManager,delete t.socketManager,t.messages=j(c),(g=(l=a.callbacks).onNewMessage)==null||g.call(l,t.messages),m.track("agent-chat",{event:"disconnect",chatId:(w=t.chat)==null?void 0:w.id,agentId:c.id})}async function I(d){var u,l;d!==t.chatMode&&(m.track("agent-mode-change",{mode:d}),t.chatMode=d,t.chatMode!==k.Functional&&await E(),(l=(u=a.callbacks).onModeChange)==null||l.call(u,d))}async function W(){if(!t.chat)return v();const{streamingManager:d,chat:u}=await B(c,a,o,m,t.chat);t.streamingManager=d,I(k.Functional),m.track("agent-chat",{event:"reconnect",chatId:u.id,agentId:c.id})}return{agent:c,starterMessages:((f=c.knowledge)==null?void 0:f.starter_message)||[],connect:v,disconnect:E,changeMode:I,async reconnect(){var g,w;if(!t.chat)return v();(g=t.socketManager)==null||g.disconnect(),await((w=t.streamingManager)==null?void 0:w.disconnect());const d=await ne(a.auth,r,C),{streamingManager:u,chat:l}=await B(c,a,o,m,t.chat);t.streamingManager=u,t.socketManager=d,I(k.Functional),m.track("agent-chat",{event:"reconnect",chatId:l.id,agentId:c.id})},async chat(d,u=!1){var g,w,p,y,S,O,T,ie,se;const l=F();try{const D=Date.now();if(d.length>=800)throw new Error("Message cannot be more than 800 characters");if(d.length===0)throw new Error("Message cannot be empty");if(t.chatMode===k.Maintenance)throw new Error("Chat is in maintenance mode");if(![k.TextOnly,k.Playground].includes(t.chatMode)){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");if(!t.chat)throw new Error("Chat is not initialized")}t.messages.push({id:F(),role:"user",content:d,created_at:new Date(D).toISOString()}),(w=(g=a.callbacks).onNewMessage)==null||w.call(g,t.messages),t.chat||(t.chat=await o.newChat(c.id));const K={id:l,role:"assistant",content:"",created_at:new Date().toISOString(),matches:[]};t.messages.push(K);const oe=t.messages.slice(0,-1);let N;try{N=await o.chat(c.id,t.chat.id,{sessionId:(p=t.streamingManager)==null?void 0:p.sessionId,streamId:(y=t.streamingManager)==null?void 0:y.streamId,messages:oe,chatMode:t.chatMode,append_chat:u})}catch(U){if((S=U==null?void 0:U.message)!=null&&S.includes("missing or invalid session_id"))console.log("Invalid stream, try reconnect with new stream id"),await W(),N=await o.chat(c.id,t.chat.id,{sessionId:(O=t.streamingManager)==null?void 0:O.sessionId,streamId:(T=t.streamingManager)==null?void 0:T.streamId,messages:oe,chatMode:t.chatMode,append_chat:u});else throw U}return m.track("agent-message-send",{event:"success",messages:t.messages.length+1}),K.context=N.context,N.result&&(K.content=N.result,K.matches=N.matches,m.track("agent-message-received",{latency:Date.now()-D,messages:t.messages.length}),(se=(ie=a.callbacks).onNewMessage)==null||se.call(ie,t.messages)),N}catch(D){throw t.messages[t.messages.length-1].id===l&&t.messages.pop(),m.track("agent-message-send",{event:"error",messages:t.messages.length}),D}},rate(d,u,l){var p,y,S,O;const g=t.messages.find(T=>T.id===d);if(t.chat){if(!g)throw new Error("Message not found")}else throw new Error("Chat is not initialized");const w=((p=g.matches)==null?void 0:p.map(T=>[T.document_id,T.id]))??[];return m.track("agent-rate",{event:l?"update":"create",thumb:u===1?"up":"down",knowledge_id:((y=c.knowledge)==null?void 0:y.id)??"",matches:w,score:u}),l?o.updateRating(c.id,t.chat.id,l,{knowledge_id:((S=c.knowledge)==null?void 0:S.id)??"",message_id:d,matches:w,score:u}):o.createRating(c.id,t.chat.id,{knowledge_id:((O=c.knowledge)==null?void 0:O.id)??"",message_id:d,matches:w,score:u})},deleteRate(d){var u;if(!t.chat)throw new Error("Chat is not initialized");return m.track("agent-rate-delete",{type:"text",chat_id:(u=t.chat)==null?void 0:u.id,id:d}),o.deleteRating(c.id,t.chat.id,d)},speak(d){if(!t.streamingManager)throw new Error("Streaming manager is not initialized");function u(){if(c.presenter){if(d.type==="text")return{type:"text",provider:d.provider?d.provider:c.presenter.voice,input:d.input,ssml:d.ssml||!1};if(d.type==="audio")return{type:"audio",audio_url:d.audio_url}}else throw new Error("Presenter is not initialized");throw new Error("Invalid payload")}const l=u();return m.track("agent-speak",l),t.streamingManager.speak({script:l})}}}h.ChatMode=k,h.ChatProgress=x,h.ConnectionState=_,h.DocumentType=X,h.KnowledgeType=Q,h.PlanGroup=H,h.Providers=Y,h.RateState=J,h.StreamEvents=A,h.StreamingState=b,h.Subject=q,h.UserPlan=P,h.VideoType=M,h.VoiceAccess=Z,h.createAgentManager=ke,h.getAgent=Ie,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
@@ -1,5 +1,5 @@
1
- import { Agent, AgentPayload, Auth, Chat, ChatPayload, ChatResponse } from '../../types/index';
2
- export declare function createAgentsApi(auth: Auth, host?: string): {
1
+ import { Agent, AgentPayload, Auth, Chat, ChatPayload, ChatResponse, RatingEntity, RatingPayload } from '../types/index';
2
+ export declare function createAgentsApi(auth: Auth, host?: string, onError?: (error: Error, errorData: object) => void): {
3
3
  create(payload: AgentPayload, options?: RequestInit): Promise<Agent>;
4
4
  getAgents(tag?: string, options?: RequestInit): Promise<Agent[]>;
5
5
  getById(id: string, options?: RequestInit): Promise<Agent>;
@@ -7,4 +7,7 @@ export declare function createAgentsApi(auth: Auth, host?: string): {
7
7
  update(id: string, payload: AgentPayload, options?: RequestInit): Promise<Agent>;
8
8
  newChat(agentId: string, options?: RequestInit): Promise<Chat>;
9
9
  chat(agentId: string, chatId: string, payload: ChatPayload, options?: RequestInit): Promise<ChatResponse>;
10
+ createRating(agentId: string, chatId: string, payload: RatingPayload, options?: RequestInit): Promise<RatingEntity>;
11
+ updateRating(agentId: string, chatId: string, ratingId: string, payload: Partial<RatingPayload>, options?: RequestInit): Promise<RatingEntity>;
12
+ deleteRating(agentId: string, chatId: string, ratingId: string, options?: RequestInit): Promise<RatingEntity>;
10
13
  };
@@ -0,0 +1,2 @@
1
+ import { Auth, RtcApi } from '../types/index';
2
+ export declare function createApi(auth: Auth, host: string, agentId: string, onError?: (error: Error, errorData: object) => void): RtcApi;
@@ -1,5 +1,5 @@
1
- import { Auth } from '../../types/auth';
2
- export declare function createClient(auth: Auth, host?: string): {
1
+ import { Auth } from '../types/auth';
2
+ export declare function createClient(auth: Auth, host?: string, onError?: (error: Error, errorData: object) => void): {
3
3
  get<T = any>(url: string, options?: RequestInit): Promise<T>;
4
4
  post<T_1 = any>(url: string, body?: any, options?: RequestInit): Promise<T_1>;
5
5
  delete<T_2 = any>(url: string, body?: any, options?: RequestInit): Promise<T_2>;
@@ -1,5 +1,5 @@
1
- import { Auth, CreateDocumentPayload, DocumentData, KnowledgeData, KnowledgePayload, QueryResult, RecordData } from '../../types/index';
2
- export declare function createKnowledgeApi(auth: Auth, host?: string): {
1
+ import { Auth, CreateDocumentPayload, DocumentData, KnowledgeData, KnowledgePayload, QueryResult, RecordData } from '../types/index';
2
+ export declare function createKnowledgeApi(auth: Auth, host?: string, onError?: (error: Error, errorData: object) => void): {
3
3
  createKnowledge(payload: KnowledgePayload, options?: RequestInit): Promise<KnowledgeData>;
4
4
  getKnowledgeBase(options?: RequestInit): Promise<KnowledgeData[]>;
5
5
  getKnowledge(knowledgeId: string, options?: RequestInit): Promise<KnowledgeData>;
@@ -11,3 +11,4 @@ export declare function createKnowledgeApi(auth: Auth, host?: string): {
11
11
  getRecords(knowledgeId: string, documentId: string, options?: RequestInit): Promise<RecordData[]>;
12
12
  query(knowledgeId: string, query: string, options?: RequestInit): Promise<QueryResult>;
13
13
  };
14
+ export type KnowledegeApi = ReturnType<typeof createKnowledgeApi>;
@@ -0,0 +1,2 @@
1
+ import { Auth, RtcApi } from '../types/index';
2
+ export declare function createApi(auth: Auth, host: string, agentId: string, onError?: (error: Error, errorData: object) => void): RtcApi;
@@ -0,0 +1,4 @@
1
+ import { Auth } from '../types/auth';
2
+ export declare const getRandom: () => string;
3
+ export declare function getExternalId(): string;
4
+ export declare function getAuthHeader(auth: Auth): string;
@@ -0,0 +1,11 @@
1
+ import { Auth } from './types/auth';
2
+ import { ChatProgressCallback } from '.';
3
+ export interface SocketManager {
4
+ socket?: WebSocket;
5
+ disconnect: () => void;
6
+ subscribeToEvents: (data: any) => void;
7
+ }
8
+ export declare function createSocketManager(auth: Auth, host: string, callback?: {
9
+ onMessage?: ChatProgressCallback;
10
+ onError?: (error: string, event: Event) => void;
11
+ }): Promise<SocketManager>;
@@ -1,11 +1,10 @@
1
- import { Agent, AgentManager, AgentManagerOptions, CreateStreamOptions } from '../types/index';
2
- import { Auth } from '..';
3
- export declare function getAgentStreamArgs(agent: Agent): CreateStreamOptions;
1
+ import { Agent, AgentManager, AgentManagerOptions } from './types/index';
2
+ import { Auth } from '.';
4
3
  export declare function getAgent(agentId: string, auth: Auth, baseURL?: string): Promise<Agent>;
5
4
  /**
6
5
  * Creates a new Agent Manager instance for interacting with an agent, chat, and related connections.
7
6
  *
8
- * @param {string} agentId - The ID of the agent to chat with.
7
+ * @param {string} agent - The ID or instance of the agent to chat with.
9
8
  * @param {AgentManagerOptions} options - Configurations for the Agent Manager API.
10
9
  * * @returns {Promise<AgentManager>} - A promise that resolves to an instance of the AgentsAPI interface.
11
10
  *
@@ -14,4 +13,4 @@ export declare function getAgent(agentId: string, auth: Auth, baseURL?: string):
14
13
  * @example
15
14
  * const agentManager = await createAgentManager('id-agent123', { auth: { type: 'key', clientKey: '123', externalId: '123' } });
16
15
  */
17
- export declare function createAgentManager(agentId: string, options: AgentManagerOptions): Promise<AgentManager>;
16
+ export declare function createAgentManager(agent: string, options: AgentManagerOptions): Promise<AgentManager>;
@@ -0,0 +1,21 @@
1
+ import { CreateStreamOptions, PayloadType, StreamingManagerOptions } from './types/index';
2
+ export declare function createStreamingManager<T extends CreateStreamOptions>(agentId: string, agent: T, { debug, callbacks, auth, analytics, baseURL }: StreamingManagerOptions): Promise<{
3
+ /**
4
+ * Method to send request to server to get clip or talk depend on you payload
5
+ * @param payload
6
+ */
7
+ speak(payload: PayloadType<T>): Promise<import('./types/index').SendStreamPayloadResponse>;
8
+ /**
9
+ * Method to close RTC connection
10
+ */
11
+ disconnect(): Promise<void>;
12
+ /**
13
+ * Session identifier information, should be returned in the body of all streaming requests
14
+ */
15
+ sessionId: string;
16
+ /**
17
+ * Id of current RTC stream
18
+ */
19
+ streamId: string;
20
+ }>;
21
+ export type StreamingManager<T extends CreateStreamOptions> = Awaited<ReturnType<typeof createStreamingManager<T>>>;
@@ -4,4 +4,3 @@ export declare const didSocketApiUrl: string;
4
4
  export declare const mixpanelKey: string;
5
5
  export declare const clientKey: string;
6
6
  export declare const agentId: string;
7
- export declare const externalId = "temp";
@@ -1,8 +1,2 @@
1
- export * from './lib/api/agents';
2
- export * from './lib/api/getClient';
3
- export * from './lib/api/knowledge';
4
- export * from './lib/api/ratings';
5
- export * from './lib/connectToSocket';
6
- export * from './lib/createAgentManager';
7
- export * from './lib/createStreamingManager';
8
- export * from './types/index';
1
+ export * from './createAgentManager';
2
+ export * from './types';
@@ -0,0 +1,18 @@
1
+ import { Agent } from '..';
2
+ export interface AnalyticsOptions {
3
+ token: string;
4
+ agent: Agent;
5
+ isEnabled?: boolean;
6
+ distinctId?: string;
7
+ }
8
+ export interface Analytics {
9
+ token: string;
10
+ distinct_id?: string;
11
+ isEnabled: boolean;
12
+ chatId?: string;
13
+ agentId: string;
14
+ owner_id: string;
15
+ getRandom(): string;
16
+ track(event: string, props?: Record<string, any>): Promise<any>;
17
+ }
18
+ export declare function initializeAnalytics(config: AnalyticsOptions): Analytics;
@@ -12,7 +12,7 @@ export interface Stream_Text_Script extends BaseStreamScript {
12
12
  /**
13
13
  * text-to-speech provider from list of supported providers. default is microsoft tts
14
14
  */
15
- provider: StreamTextToSpeechProviders;
15
+ provider?: StreamTextToSpeechProviders;
16
16
  /**
17
17
  * The input text that will be synthesized to an audio file.
18
18
  * Note that each provider has its own limitations on the text length.
@@ -10,7 +10,6 @@ export interface BasicAuth {
10
10
  export interface ClientKeyAuth {
11
11
  type: 'key';
12
12
  clientKey: string;
13
- externalId: string;
14
13
  }
15
14
  export type Auth = BearerToken | BasicAuth | ClientKeyAuth;
16
15
  export interface GetAuthParams {
@@ -18,5 +17,4 @@ export interface GetAuthParams {
18
17
  username?: string | null;
19
18
  password?: string | null;
20
19
  clientKey?: string | null;
21
- externalId?: string | null;
22
20
  }
@@ -2,6 +2,23 @@ import { Chat, ChatPayload, ChatResponse } from './chat';
2
2
  import { Knowledge } from './knowledge';
3
3
  import { LLM } from './llm';
4
4
  import { Presenter } from './presenter';
5
+ export declare enum UserPlan {
6
+ TRIAL = "trial",
7
+ BASIC = "basic",
8
+ ENTERPRISE = "enterprise",
9
+ LITE = "lite",
10
+ ADVANCED = "advanced"
11
+ }
12
+ export declare enum PlanGroup {
13
+ TRIAL = "deid-trial",
14
+ PRO = "deid-pro",
15
+ ENTERPRISE = "deid-enterprise",
16
+ LITE = "deid-lite",
17
+ ADVANCED = "deid-advanced",
18
+ BUILD = "deid-api-build",
19
+ LAUNCH = "deid-api-launch",
20
+ SCALE = "deid-api-scale"
21
+ }
5
22
  export interface Agent {
6
23
  id: string;
7
24
  username?: string;
@@ -11,12 +28,18 @@ export interface Agent {
11
28
  use_case?: string;
12
29
  tags?: string[];
13
30
  chats?: number;
31
+ greetings?: string[];
14
32
  access?: 'private' | 'pending-public' | 'unlisted' | 'rejected' | 'public';
33
+ metadata?: {
34
+ plan: PlanGroup | UserPlan;
35
+ };
15
36
  preview_name?: string;
16
37
  preview_description?: string;
17
38
  preview_thumbnail?: string;
39
+ preview_url?: string;
40
+ owner_id?: string;
18
41
  }
19
- export type AgentPayload = Omit<Agent, 'type' | 'created_at' | 'modified_at' | 'id' | 'owner_id' | 'idle_video_url'>;
42
+ export type AgentPayload = Omit<Agent, 'type' | 'created_at' | 'modified_at' | 'id' | 'owner_id' | 'metadata' | 'idle_video_url'>;
20
43
  export interface AgentsAPI {
21
44
  create(payload: AgentPayload, options?: RequestInit): Promise<Agent>;
22
45
  getAgents(tag?: string, options?: RequestInit): Promise<Agent[]>;
@@ -15,18 +15,23 @@ export interface RatingEntity {
15
15
  score: 1 | -1;
16
16
  created_at: string;
17
17
  modified_at: string;
18
+ message_id: string;
18
19
  }
19
- export type RatingPayload = Omit<RatingEntity, 'owner_id' | 'id' | 'created_at' | 'modified_at' | 'created_by' | 'external_id'>;
20
+ export type RatingPayload = Omit<RatingEntity, 'owner_id' | 'id' | 'created_at' | 'modified_at' | 'created_by' | 'external_id' | 'agent_id' | 'chat_id'>;
20
21
  export interface Message {
21
- role: 'system' | 'assistant' | 'user' | 'function' | 'tool';
22
+ id: string;
23
+ role?: 'system' | 'assistant' | 'user' | 'function' | 'tool';
22
24
  content: string;
23
- created_at: string;
25
+ created_at?: string;
24
26
  matches?: ChatResponse['matches'];
27
+ context?: string;
25
28
  }
26
29
  export interface ChatPayload {
27
30
  messages: Message[];
28
- streamId: string;
29
- sessionId: string;
31
+ append_chat?: boolean;
32
+ streamId?: string;
33
+ sessionId?: string;
34
+ chatMode?: ChatMode;
30
35
  }
31
36
  export interface IRetrivalMetadata {
32
37
  id: string;
@@ -39,13 +44,15 @@ export interface IRetrivalMetadata {
39
44
  export declare enum ChatMode {
40
45
  Functional = "Functional",
41
46
  TextOnly = "TextOnly",
42
- Maintenance = "Maintenance"
47
+ Maintenance = "Maintenance",
48
+ Playground = "Playground"
43
49
  }
44
50
  export interface ChatResponse {
45
51
  result?: string;
46
52
  documentIds?: string[];
47
53
  matches?: IRetrivalMetadata[];
48
54
  chatMode?: ChatMode;
55
+ context?: string;
49
56
  }
50
57
  export interface Chat {
51
58
  id: string;
@@ -6,5 +6,6 @@ export interface KnowledgeEmbedder {
6
6
  export interface Knowledge {
7
7
  id: string;
8
8
  provider: KnowledgeProvider;
9
+ starter_message?: string[];
9
10
  embedder?: KnowledgeEmbedder;
10
11
  }
@@ -1,8 +1,8 @@
1
- import { SupportedStreamScipt } from '../../../types/StreamScript';
1
+ import { SupportedStreamScipt } from '../../StreamScript';
2
2
  import { Auth } from '../../auth';
3
- import { SendStreamPayloadResponse, StreamingState } from '../../stream';
3
+ import { ConnectionState, SendStreamPayloadResponse, StreamEvents, StreamingState } from '../../stream';
4
4
  import { Agent } from './agent';
5
- import { ChatResponse, Message, RatingEntity, RatingPayload } from './chat';
5
+ import { ChatMode, ChatResponse, Message, RatingEntity } from './chat';
6
6
  /**
7
7
  * Types of events provided in Chat Progress Callback
8
8
  */
@@ -28,20 +28,20 @@ export declare enum ChatProgress {
28
28
  */
29
29
  Complete = "done"
30
30
  }
31
- export type ChatProgressCallback = (progress: ChatProgress, data: string) => void;
32
- export type ConnectionStateChangeCallback = (state: RTCIceConnectionState) => void;
31
+ export type ChatProgressCallback = (progress: ChatProgress | StreamEvents, data: any) => void;
32
+ export type ConnectionStateChangeCallback = (state: ConnectionState) => void;
33
33
  export type VideoStateChangeCallback = (state: StreamingState, data: any) => void;
34
34
  interface ManagerCallbacks {
35
35
  /**
36
36
  * Optional callback will be triggered each time the RTC connection changes state
37
37
  * @param state
38
38
  */
39
- onConnectionStateChange?(state: RTCIceConnectionState): void;
39
+ onConnectionStateChange?(state: ConnectionState): void;
40
40
  /**
41
41
  * Optional callback function that will be triggered each time video events happen
42
42
  * @param state
43
43
  */
44
- onVideoStateChange?(state: StreamingState, data?: any): void;
44
+ onVideoStateChange?(state: StreamingState): void;
45
45
  /**
46
46
  * Callback function that will be triggered each time the video stream starts or stops to update html element on webpage
47
47
  * Required callback for SDK
@@ -52,17 +52,44 @@ interface ManagerCallbacks {
52
52
  */
53
53
  onSrcObjectReady(srcObject: MediaStream): void;
54
54
  /**
55
- * Optional callback function that will be triggered each time any changes happen in the chat
56
- * @param progress
55
+ * Optional callback function that will be triggered each time new message is received
56
+ * @param messages - array of messages
57
57
  */
58
- onChatEvents?(progress: ChatProgress, data: any): void;
58
+ onNewMessage?(messages: Message[]): void;
59
+ /**
60
+ * Optional callback function that will be triggered each time new chat is created
61
+ * @param chatId - id of the new chat
62
+ */
63
+ onNewChat?(chatId: string): void;
64
+ /**
65
+ * Optional callback function that will be triggered each time the chat mode changes
66
+ * @param mode - ChatMode
67
+ */
68
+ onModeChange?(mode: ChatMode): void;
69
+ /**
70
+ * Optional callback function that will be triggered on fetch request errors
71
+ */
72
+ onError?: (error: Error, errorData: object) => void;
59
73
  }
60
74
  export interface AgentManagerOptions {
75
+ auth: Auth;
61
76
  callbacks: ManagerCallbacks;
62
77
  baseURL?: string;
63
78
  wsURL?: string;
64
79
  debug?: boolean;
65
- auth: Auth;
80
+ enableAnalitics?: boolean;
81
+ mixpanelKey?: string;
82
+ /**
83
+ * Unique ID of agent user used in analytics. Pass it to override the default way to get distinctId
84
+ */
85
+ distinctId?: string;
86
+ mode?: ChatMode;
87
+ /**
88
+ * Desired stream resolution for the session
89
+ * @minimum 0
90
+ * @maximum 1080
91
+ */
92
+ outputResolution?: number;
66
93
  }
67
94
  export interface AgentManager {
68
95
  /**
@@ -71,29 +98,34 @@ export interface AgentManager {
71
98
  */
72
99
  agent: Agent;
73
100
  /**
74
- * Method to be reconnected to chat
75
- * Since chat uses an RTC connection to communicate with the agent, it could be dropped and to continue to chat you need to reconnect
101
+ * Array of starter messages that will be sent to the agent when the chat starts
76
102
  */
77
- reconnectToChat: () => Promise<void>;
103
+ starterMessages: string[];
78
104
  /**
79
- * Method to close all connections with agent, stream and web socket
105
+ * Method to connect to stream and chat
80
106
  */
81
- terminate: () => Promise<void>;
107
+ connect: () => Promise<void>;
82
108
  /**
83
- * ID of chat you are working on now
109
+ * Method to reconnect to stream and continue chat
84
110
  */
85
- chatId: string;
111
+ reconnect: () => Promise<void>;
112
+ /**
113
+ * Method to close all connections with agent, stream and web socket
114
+ */
115
+ disconnect: () => Promise<void>;
86
116
  /**
87
117
  * Method to send a chat message to existing chat with the agent
88
118
  * @param messages
119
+ * @param append_chat: when true, append to existing agent chat, rather than creating a new one.
89
120
  */
90
- chat: (messages: Message[]) => Promise<ChatResponse>;
121
+ chat: (userMessage: string, append_chat?: boolean) => Promise<ChatResponse>;
91
122
  /**
92
123
  * Method to rate the answer in chat
93
- * @param payload
124
+ * @param score: 1 | -1 - score of the answer. 1 for positive, -1 for negative
125
+ * @param matches - array of matches that were used to find the answer
94
126
  * @param id - id of Rating entity. Leave it empty to create a new, one or pass it to work with the existing one
95
127
  */
96
- rate: (payload: RatingPayload, id?: string) => Promise<RatingEntity>;
128
+ rate: (messageId: string, score: 1 | -1, rateId?: string) => Promise<RatingEntity>;
97
129
  /**
98
130
  * Method to delete rating from answer in chat
99
131
  * @param id - id of Rating entity.
@@ -105,9 +137,9 @@ export interface AgentManager {
105
137
  */
106
138
  speak: (payload: SupportedStreamScipt) => Promise<SendStreamPayloadResponse>;
107
139
  /**
108
- * Optional callback function that will be triggered each time any changes happen in the chat
109
- * @param callback
140
+ * Method to change the mode of the chat
141
+ * @param mode - ChatMode
110
142
  */
111
- getStarterMessages: () => Promise<string[]>;
143
+ changeMode(mode: ChatMode): void;
112
144
  }
113
145
  export {};
@@ -1,3 +1,4 @@
1
+ import { Rect } from '../../face-rect';
1
2
  import { ExtendedTextToSpeechProviders } from '../../tts';
2
3
  export type videoType = 'talk' | 'clip';
3
4
  export type Presenter = TalkPresenter | ClipPresenter;
@@ -11,6 +12,8 @@ export interface TalkPresenter extends BasePresenter {
11
12
  type: 'talk';
12
13
  source_url: string;
13
14
  driver_url?: string;
15
+ stitch?: boolean;
16
+ face?: Rect;
14
17
  }
15
18
  export interface ClipPresenter extends BasePresenter {
16
19
  type: 'clip';
@@ -0,0 +1,6 @@
1
+ export interface Rect {
2
+ top: number;
3
+ left: number;
4
+ bottom: number;
5
+ right: number;
6
+ }
@@ -1,6 +1,5 @@
1
1
  export * from './StreamScript';
2
- export * from './tts';
3
- export * from './stream';
4
2
  export * from './auth';
5
3
  export * from './entities';
6
- export * from '..';
4
+ export * from './stream';
5
+ export * from './tts';
@@ -43,6 +43,12 @@ export interface CreateClipStreamRequest {
43
43
  * @default auto
44
44
  */
45
45
  compatibility_mode?: CompatibilityMode;
46
+ /**
47
+ * Whether to stream wamrup video on the connection.
48
+ * If set to true, will stream a warmup video when connection is established.
49
+ * At the end of the warmup video, a message containing "stream/ready" will be sent on the data channel.
50
+ */
51
+ stream_warmup?: boolean;
46
52
  }
47
53
  export interface SendClipStreamPayload extends StickyRequest {
48
54
  script: StreamScript;
@@ -1,4 +1,5 @@
1
1
  import { StreamScript } from '../..';
2
+ import { CompatibilityMode } from '../stream';
2
3
  export interface CreateTalkStreamRequest {
3
4
  source_url: string;
4
5
  driver_url?: string;
@@ -20,6 +21,9 @@ export interface CreateTalkStreamRequest {
20
21
  align_expand_factor?: number;
21
22
  stitch?: boolean;
22
23
  };
24
+ compatibility_mode?: CompatibilityMode;
25
+ stream_warmup?: boolean;
26
+ output_resolution?: number;
23
27
  }
24
28
  export interface SendTalkStreamPayload {
25
29
  script: StreamScript;
@@ -40,17 +40,17 @@ export interface IceCandidate {
40
40
  * The format of this address is a candidate-attribute as defined in RFC 5245. This string is empty ("") if the
41
41
  * RTCIceCandidate is an "end of candidates" indicator.
42
42
  */
43
- candidate: string;
43
+ candidate: string | null;
44
44
  /**
45
45
  * A string specifying the candidate's media stream identification tag which uniquely identifies the media stream
46
46
  * within the component with which the candidate is associated, or null if no such association exists.
47
47
  */
48
- sdpMid: string;
48
+ sdpMid?: string;
49
49
  /**
50
50
  * If not null, sdpMLineIndex indicates the zero-based index number of the media description (as defined in RFC
51
51
  * 4566) in the SDP with which the candidate is associated.
52
52
  */
53
- sdpMLineIndex: number;
53
+ sdpMLineIndex?: number;
54
54
  }
55
55
  export interface Status {
56
56
  status: string;
@@ -1,3 +1,4 @@
1
+ import { Analytics } from '../../services/mixpanel';
1
2
  import { Auth } from '../auth';
2
3
  import { VideoType } from '../entities';
3
4
  import { CreateClipStreamRequest, CreateTalkStreamRequest, SendClipStreamPayload, SendTalkStreamPayload } from './api';
@@ -11,13 +12,28 @@ export declare enum StreamEvents {
11
12
  ChatAnswer = "chat/answer",
12
13
  ChatPartial = "chat/partial",
13
14
  StreamDone = "stream/done",
14
- StreamStarted = "stream/started"
15
+ StreamStarted = "stream/started",
16
+ StreamFailed = "stream/error",
17
+ StreamReady = "stream/ready",
18
+ StreamCreated = "stream/created",
19
+ StreamVideoCreated = "stream-video/started",
20
+ StreamVideoDone = "stream-video/done",
21
+ StreamVideoError = "stream-video/error",
22
+ StreamVideoRejected = "stream-video/rejected"
23
+ }
24
+ export declare enum ConnectionState {
25
+ New = 0,
26
+ Fail = 1,
27
+ Connected = 2,
28
+ Connecting = 3,
29
+ Terminating = 4
15
30
  }
16
31
  export interface ManagerCallbacks {
17
32
  onMessage?: (event: string, data: string) => void;
18
- onConnectionStateChange?: (state: RTCIceConnectionState) => void;
19
- onVideoStateChange?: (state: StreamingState, data?: any) => void;
33
+ onConnectionStateChange?: (state: ConnectionState) => void;
34
+ onVideoStateChange?: (state: StreamingState) => void;
20
35
  onSrcObjectReady?: (value: MediaStream) => void;
36
+ onError?: (error: Error, errorData: object) => void;
21
37
  }
22
38
  export type ManagerCallbackKeys = keyof ManagerCallbacks;
23
39
  export interface TalkStreamOptions extends CreateTalkStreamRequest {
@@ -40,6 +56,7 @@ export interface StreamingManagerOptions {
40
56
  baseURL?: string;
41
57
  debug?: boolean;
42
58
  auth: Auth;
59
+ analytics: Analytics;
43
60
  }
44
61
  export interface SlimRTCStatsReport {
45
62
  index: number;
@@ -50,5 +67,5 @@ export interface SlimRTCStatsReport {
50
67
  jitter: any;
51
68
  frameWidth: any;
52
69
  frameHeight: any;
53
- frameRate: any;
70
+ framesPerSecond: any;
54
71
  }