@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.
- package/README.md +4 -0
- package/dist/index.js +647 -401
- package/dist/index.umd.cjs +1 -1
- package/dist/src/{lib/api → api}/agents.d.ts +5 -2
- package/dist/src/api/clipStream.d.ts +2 -0
- package/dist/src/{lib/api → api}/getClient.d.ts +2 -2
- package/dist/src/{lib/api → api}/knowledge.d.ts +3 -2
- package/dist/src/api/talkStream.d.ts +2 -0
- package/dist/src/auth/getAuthHeader.d.ts +4 -0
- package/dist/src/connectToSocket.d.ts +11 -0
- package/dist/src/{lib/createAgentManager.d.ts → createAgentManager.d.ts} +4 -5
- package/dist/src/createStreamingManager.d.ts +21 -0
- package/dist/src/{lib/environment.d.ts → environment.d.ts} +0 -1
- package/dist/src/index.d.ts +2 -8
- package/dist/src/services/mixpanel.d.ts +18 -0
- package/dist/src/types/StreamScript.d.ts +1 -1
- package/dist/src/types/auth.d.ts +0 -2
- package/dist/src/types/entities/agents/agent.d.ts +24 -1
- package/dist/src/types/entities/agents/chat.d.ts +13 -6
- package/dist/src/types/entities/agents/knowledge.d.ts +1 -0
- package/dist/src/types/entities/agents/manager.d.ts +56 -24
- package/dist/src/types/entities/agents/presenter.d.ts +3 -0
- package/dist/src/types/face-rect.d.ts +6 -0
- package/dist/src/types/index.d.ts +2 -3
- package/dist/src/types/stream/api/clip.d.ts +6 -0
- package/dist/src/types/stream/api/talk.d.ts +4 -0
- package/dist/src/types/stream/rtc.d.ts +3 -3
- package/dist/src/types/stream/stream.d.ts +21 -4
- package/dist/src/utils/analytics.d.ts +12 -0
- package/dist/src/{lib/utils → utils}/webrtc.d.ts +1 -1
- package/package.json +10 -11
- package/dist/src/lib/api/clipStream.d.ts +0 -2
- package/dist/src/lib/api/ratings.d.ts +0 -7
- package/dist/src/lib/api/talkStream.d.ts +0 -2
- package/dist/src/lib/auth/getAuthHeader.d.ts +0 -2
- package/dist/src/lib/connectToSocket.d.ts +0 -9
- package/dist/src/lib/createStreamingManager.d.ts +0 -27
package/dist/index.umd.cjs
CHANGED
|
@@ -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 '
|
|
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
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Auth } from '
|
|
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 '
|
|
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,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
|
|
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}
|
|
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(
|
|
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>>>;
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
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
|
|
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.
|
package/dist/src/types/auth.d.ts
CHANGED
|
@@ -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
|
-
|
|
22
|
+
id: string;
|
|
23
|
+
role?: 'system' | 'assistant' | 'user' | 'function' | 'tool';
|
|
22
24
|
content: string;
|
|
23
|
-
created_at
|
|
25
|
+
created_at?: string;
|
|
24
26
|
matches?: ChatResponse['matches'];
|
|
27
|
+
context?: string;
|
|
25
28
|
}
|
|
26
29
|
export interface ChatPayload {
|
|
27
30
|
messages: Message[];
|
|
28
|
-
|
|
29
|
-
|
|
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;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { SupportedStreamScipt } from '
|
|
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
|
|
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:
|
|
32
|
-
export type ConnectionStateChangeCallback = (state:
|
|
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:
|
|
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
|
|
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
|
|
56
|
-
* @param
|
|
55
|
+
* Optional callback function that will be triggered each time new message is received
|
|
56
|
+
* @param messages - array of messages
|
|
57
57
|
*/
|
|
58
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
103
|
+
starterMessages: string[];
|
|
78
104
|
/**
|
|
79
|
-
* Method to
|
|
105
|
+
* Method to connect to stream and chat
|
|
80
106
|
*/
|
|
81
|
-
|
|
107
|
+
connect: () => Promise<void>;
|
|
82
108
|
/**
|
|
83
|
-
*
|
|
109
|
+
* Method to reconnect to stream and continue chat
|
|
84
110
|
*/
|
|
85
|
-
|
|
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: (
|
|
121
|
+
chat: (userMessage: string, append_chat?: boolean) => Promise<ChatResponse>;
|
|
91
122
|
/**
|
|
92
123
|
* Method to rate the answer in chat
|
|
93
|
-
* @param
|
|
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: (
|
|
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
|
-
*
|
|
109
|
-
* @param
|
|
140
|
+
* Method to change the mode of the chat
|
|
141
|
+
* @param mode - ChatMode
|
|
110
142
|
*/
|
|
111
|
-
|
|
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';
|
|
@@ -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
|
|
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
|
|
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:
|
|
19
|
-
onVideoStateChange?: (state: StreamingState
|
|
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
|
-
|
|
70
|
+
framesPerSecond: any;
|
|
54
71
|
}
|